Dato Table Data Base Application Code 1° Controllo Procedure Client Side 3° Controllo Integrity Constraint Trigger Code 2° Controllo Event Driven BUSINESS.

Slides:



Advertisements
Presentazioni simili
Teoria e Tecniche del Riconoscimento
Advertisements

Microsoft SQL Server 2008 Utilizzo. Creazione DataBase CREATE DATABASE CREATE DATABASE Cinema.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
EBRCN General Meeting, Paris, 28-29/11/20021 WP4 Analysis of non-EBRCN databases and network services of interest to BRCs Current status Paolo Romano Questa.
SQL (Standard query language) Istruzioni per la creazione di una tabella: Create table ( tipo, (, [vincoli]) Primary key ( ) CHIVE PRIMARIA Foreign key(
JPA Overview della tecnologia. Java Persistence Architecture Definita nella JSR-220 EJB 3.0 ( Tentativo di unificare EJB2.1 con.
1 SQL come linguaggio di definizione di dati Eugenio Di Sciascio.
G. Mecca – – Università della Basilicata Basi di Dati SQL-92 Dettagli e Approfondimenti versione 2.0 Questo lavoro è concesso in uso secondo.
Udine 1 Udine – Richieste Attivamente coinvolti totali 3FTE M.P.Giordani, P.Palestri, L.Selmi A.Micelli (dottorando) A.Cristofoli (laureando.
1.E un algoritmo ricorsivo: Tutti le istanze di oggetti raggiungibili da un oggetto persistente diventano anchessi persistenti.
Progettazione ER Un database universitario contiene informazioni riguardanti i professori (identificati dal codice fiscale) e informazioni relative ai.
SQL Structured Query Language
Un DataBase Management System (DBMS) relazionale client/server.
Directory services Directory offline –Elenchi telefonici –Guide TV –Cataloghi acquisti Directory online –Application specific (lotus notes, MS Exchange.
Biometry to enhance smart card security (MOC using TOC protocol)
1. Conoscere luso delle collezioni in Java Comprendere le principali caratteristiche nelle varie classi di Collection disponibili Saper individuare quali.
Basi di dati attive Paolo Atzeni.
Application Code Dato Table Data Base Trigger Code 1° Controllo Procedure Client Side 3° Controllo Integrity Constraint 2° Controllo Event Driven BUSINESS.
2000 Prentice Hall, Inc. All rights reserved. 1 Capitolo 3 - Functions Outline 3.1Introduction 3.2Program Components in C++ 3.3Math Library Functions 3.4Functions.
SQL Esercitazione per il corso “Basi di Dati” Gabriel Kuper
SQL1 Structured Query Language Data Definition Language Data Manipulation Language Evoluzione Sequel IBM (1974) Standardizzazione ANSI/ISO: SQL-89, SQL-
2000 Prentice Hall, Inc. All rights reserved. 1 Capitolo 6: Classi e astrazione dati 1.Introduzione 2.Definizione delle strutture 3.Accedere ai membri.
Introduzione Grid1 Introduzione ai Sistemi Grid. Introduzione Grid2 Generalità Un sistema Grid permette allutente di richiedere lesecuzione di un servizio.
Sequence. CREARE UNA SEQUENCE CREATE SEQUENCE nome [INCREMENT BY n] [START WITH n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE]
Gestione dati DML Statement. DML – Data Manipultion Language Unoperazione DML viene eseguita quando: aggiungendo nuove righe ad una tabella modificando.
Viste. Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su.
PRODOTTO CARTESIANO Otteniamo un prodotto cartesiano quando: viene omessa la condizione di join una condizione di join non è valida tutte le righe della.
FUNZIONI DI GRUPPO Le funzioni di gruppo operano su un set di record restituendo un risultato per il gruppo. AVG ([DISTINCT|ALL] n) media, ignora i valori.
Creazione e manipolazione tabelle. TABELLE una tabella può essere creata in qualsiasi momento,anche quando gli utenti stanno usando il database la struttura.
Constraints.
Componenti dell’architettura Oracle
SQL basato su ANSI (American National Standards Institute) – standard SQL SQL – Structured Query Language è un linguaggio dichiarativo e permette di comunicare.
SQL per la definizione di basi di dati SQL non è solo un linguaggio di interrogazione (Query Language), ma Un linguaggio per la definizione di basi di.
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
Palermo, may 2010 F.Doumaz, S.Vinci (INGV-CNT- Gruppo di telerilevamento)
Filtered Index and Statistics Filtered Indexes Sergio Govoni
NetApp: NON solo storage Metro Cluster e Cluster Mode
Project Review byNight byNight December 6th, 2011.
Personalizzazione e porting delle procedure esterne connesse ad Aleph Il caricamento degli utenti della circolazione da files esterni Modifiche introdotte.
sql: esempi di linguaggio sql nell'implementazione mysql
Visual Studio Tools for Office: Developer Solutions Platform Fulvio Giaccari MCSD.NET / MCT Responsabile Usergroup ShareOffice Blog:
Basi di Dati e Sistemi Informativi
Basi di Dati e Sistemi Informativi Il Linguaggio SQL Home page del corso:
Project Review Novembrer 17th, Project Review Agenda: Project goals User stories – use cases – scenarios Project plan summary Status as of November.
Project Review Novembrer 17th, Project Review Agenda: Project goals User stories – use cases – scenarios Project plan summary Status as of November.
Architettura software La scelta architetturale: MVA (Model – View – Adapter/Control) The view is completely decoupled from the model such that view and.
Realizzato da Roberto Savino
SUBQUERY Chi ha un salario maggiore di quello di Abel? Occorre scomporre la query in due sotto problemi: MAIN : quali impiegati hanno un salario maggiore.
Scrivere un algoritmo non deterministico di complessita` polinomiale che risolva il problema del commesso viaggiatore. Vengono proposte due soluzioni,
1 Basi di dati (Sistemi Informativi) Scuola di Dottorato in Scienze Veterinarie per la Salute Animale e la Sicurezza Alimentare a.a Ing. Mauro.
Oracle Utility: SQL*Loader
Data Warehousing con ORACLE
Collection & Generics in Java
Sistemi di elaborazione dell’informazione Modulo 3 -Protocolli applicativi Unità didattica 4 - Protocolli del Web Ernesto Damiani Lezione 3 – Esempi HTTP.
SQL Developer Lanciare sqldeveloper (alias sul desktop) / c:\Oracle\sqldeveloper Associare tutti i tipi di file, se volete Tasto destro sulla spina “connection”
Prof. G.PassianteCorso di Economia dell’innovazione - A.A. 2012/13 The Process Handbook: A Tool for Business Process Redesign.
Dynamic SQL.
SQL (III) Data Definition Language/ Data Manipulation Language.
Database Elaborato da: Claudio Ciavarella & Marco Salvati.
Nozione ed uso Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso: –Gestione di vincoli di integrità: Per fallimento Per modifica.
Vincoli interrelazionali
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
Basi di Dati attive. Sistemi Informativi DEE - Politecnico di Bari E. TinelliBasi di dati attive2 Definizione Una base di dati si dice attiva quando dispone.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
Creare tabelle in sql Ripasso!.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Corso di Basi di Dati Il Linguaggio SQL
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Studente : Andrea Cassarà Classe: 5AII A.S. 2014/2015 Link Sito
Transcript della presentazione:

Dato Table Data Base Application Code 1° Controllo Procedure Client Side 3° Controllo Integrity Constraint Trigger Code 2° Controllo Event Driven BUSINESS RULES CONTROL

Pericolo sui Dati Un R.D.B.M.S. deve proteggere i dati da una svariata serie di insidie. Errori Accidentali (programming errors): Integrity issues. Utilizzo Illecito: Security issue. Hardware e Software Failures: Restart issues. Types SQL constraints -) NOT NULL -) UNIQUE -) PRIMARY KEY -) Referential integrity (FOREIGN KEY) -) General assertion (CHECK’s) Status SQL constraints -) Enabled -) Disabled Using Index – Storage Option

Qualche Caratteristica SQL Constraints Migliorano le Performances Facili da dichiarare / modificare Centralizzano i controlli Immediatamente producono un feed back utente Flessibili (enabled / disabled) Pienamente documentati nel dizionario dati Definibili daI SQL Statement CREATE TABLE / ALTER TABLE Definibili a livello di Tabella o di Colonna XXX_CONSTRAINTS XXX_CONS_COLUMNS USER – Relativi alle tabelle poste nello schema dello user con il quale siamo connessi ALL – Relativi alle tabelle accessibili dall’utente con il quale siamo connessi DBA – Relativi a tutte le tabelle

Status SQL Constraints DISABLED ENABLED Sospesi i controlli Gli indici associati sono rimossi Stato giustificato da: --- grosse operazioni batch --- loader massivi --- import di oggetti tabellari separate Con la tabella in “Lock” vengono effettuati i controlli sui record esistenti Gli indici associati sono ricreati Riprendono i controlli sulle nuove DML

Un TABLE CONSTRAINT è identico, sintatticamente alla stesura che vedremo per l’azione su colonna con l’unica differenza che può gestire più campi della stessa tabella. [CONSTRAINT constraint] {[NOT] NULL | [ {UNIQUE | PRIMARY KEY} (column[, column]) [FOREIGN KEY (column[, column]) [REFERENCES [user.] table[ (column[, column]) ] [ON DELETE CASCADE] [CHECK (condition) ] Oracle Integrity Constraints: Table

Un integrity constraint applica una politica restrittiva sui valori relativi ad una o più colonne in una tavola. Column CONSTRAINT clauses può apparire in CREATE TABLE ALTER TABLE SQL statement. [CONSTRAINT constraint] [[NOT] NULL | UNIQUE | PRIMARY KEY ] [REFERENCES [user.] table[ (column) ] [ON DELETE CASCADE] [CHECK (condition) ] Oracle Integrity Constraints: Column

Il constraint di UNIQUE designa una colonna, o una combinazione di esse, ad assumere, nel caso risultassero valorizzate, valori univoci. Una “unique key column” non può essere di tipologia LONG o LONG RAW. Non è tecnicamente fattibile designare lo stesso insieme di colonne sia per una unique key che per una primary key o una cluster key. E’ possibile designare lo stesso insieme di colonne sia per una “unique key” che per una “foreign key”. UNIQUE Constraints in Oracle

CREATE TABLE dept (deptno NUMBER(2), dname VARCHAR2(9) CONSTRAINT unq_dname UNIQUE, loc VARCHAR2(10) ) ; In alternativa, è possibile utilizzare la seguente constraint syntax: CREATE TABLE dept (deptno NUMBER(2), dname VARCHAR2(9), loc VARCHAR2(10), CONSTRAINT unq_dname UNIQUE (dname) USING INDEX TABLESPACE ……. STORAGE (…..) PCTFREE … ) ; Examples of Unique in Oracle

Una PRIMARY KEY caratterizza una colonna, o un insieme di esse, in grado di individuare il RECORD per tutta la permanenza nella Base Dati. In sintesi si tratta di un set di colonne i cui valori devono risultare:  Univoci  Totali  Immutabili. Una table può avere una ed esclusivamente una chiave primaria. Una “primary key column” non può essere di tipologia: LONG o LONG RAW. PRIMARY KEY Constraints in Oracle

CREATE TABLE dept (deptno NUMBER(2) CONSTRAINT pk_dept PRIMARY KEY, dname VARCHAR2(9), loc VARCHAR2(10) ) Defining Primary Keys in Oracle CREATE TABLE dept (deptno NUMBER(2), dname VARCHAR2(9), loc VARCHAR2(10), CONSTRAINT pk_dept PRIMARY KEY (deptno) USING INDEX TABLESPACE ……. STORAGE (…..) PCTFREE … )

DEPT Dno Dname D5Research D6Advertising D7Newprojects EMP Eno Ename Dno E1 Smith D5 E2 Black D6 E3 Jones D6 E4 Brown deve essere inserito. Quali check devo considerare al fine di mantenere l’integrità della base dati? Un tentativo di “delete” D5 Research occorre. Quali possibili azioni devo considerare al fine di mantenere l’integrità della base dati? DEPT EMP FOREIGN KEY Constraints in Oracle

Maintain Referential Integrity Event Delete corresponding Child records (Cascading Delete) Delete of Parent Action Parent Child Set the Foreign Key to null in the corresponding Child records (Delete Nullifies) Do not allow the delete of the Parent record if any corresponding Child records exist (Restricted Delete)

Maintain Referential Integrity Event Update Foreign Key of corresponding Child records (Cascading Update) Delete of Parent Update of Primary Key of Parent Action Parent Child Set the Foreign Key to null in the corresponding Child records (Update Nullifies) Do not allow the update of the Parent record if any corresponding Child records exist (Restricted Update)

Maintain Referential Integrity Event Delete of Parent Update of Primary Key of Parent Insert of Child Action Parent Child Check that null or a valid Primary Key from the Parent has been specified for the Foreign Key

CREATE TABLE emp (empno NUMBER(4), ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(2) CONSTRAINT fk_deptno REFERENCES dept(deptno) ) La FOREIGN KEY deve referenziare un insieme di colonne sulle quali agisce Una PRIMARY KEY oppure un UNIQUE CONSTRAINT Oracle Referential Integrity Constraints

CREATE TABLE emp (empno NUMBER(4), ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(2) CONSTRAINT fk_deptno REFERENCES dept(deptno) ON DELETE CASCADE ) ON DELETE CASCADE Option

CREATE TABLE dept (deptno NUMBER CONSTRAINT check_deptno CHECK (deptno BETWEEN 10 AND 99) DISABLE, dname VARCHAR2(9) CONSTRAINT check_dname CHECK (dname = UPPER(dname)) DISABLE, loc VARCHAR2(10) CONSTRAINT check_loc CHECK (loc IN ('DALLAS','BOSTON', 'NEW YORK','CHICAGO')) DISABLE) CHECK Constraint on a Column

CREATE TABLE emp (empno NUMBER(4), ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(2), CHECK (sal + comm <= 5000) ) Example of a CHECK Constraint on a Table

Triggers contrasted with routines Procedures are called explicitly Triggers are event-driven

Database Triggers Centralized actions can be defined using a non declarative approach (writing PL/SQL code) with database triggers. A database trigger is a stored procedure that is fired (implicitly executed) when an INSERT, UPDATE, or DELETE statement is issued against the associated table. Database triggers can be used to customize a database management system: –value-based auditing –automated data generation –the enforcement of complex security checks –enforce integrity rules –enforce complex business rules

TRIGGER STRUCTURE Regola di Scatto Effetto triggering event PL/SQL Code trigger action Insert Update of Delete After Before trigger restriction the SQL statement that causes a trigger to be fired specifies a Boolean expression that must be TRUE for the trigger to fire. The trigger action is not executed if the trigger restriction evaluates to FALSE or UNKNOWN the procedure (PL/SQL block) that contains the SQL statements and PL/SQL code to be executed when a triggering statement is issued and the trigger restriction evaluates to TRUE.

Example : maintaining derived values CREATE OR REPLACE TRIGGER increment_courses AFTER INSERT ON enrol FOR EACH ROW BEGIN update students set numofcourses = numofcourses + 1 where students.studno = :new.studno END; Event Condition Action row trigger column values for current row and new/old correlation names

Example Integrity Trigger in Oracle CREATE TRIGGER labmark_check BEFORE INSERT OR UPDATE OF labmark ON enrol DECLARE bad_value exception; WHEN (old.labmark IS NOT NULL OR new.labmark IS NOT NULL) FOR EACH ROW BEGIN IF :new.labmark < :old.labmark THEN raise bad_value ; END IF; EXCEPTION WHEN bad_value THEN raise_application_error(-20221,‘New labmark lower than old labmark’ ); END; Event Condition Action row trigger

Some Cautionary Notes about Triggers Triggers are useful for customizing a database. But the excessive use of triggers can result in complex interdependencies, which may be difficult to maintain in a large application. E.g., when a trigger is fired, a SQL statement within its trigger action potentially can fire other triggers. When a statement in a trigger body causes another trigger to be fired, the triggers are said to be cascading. SQL statement UPDATE T1 SET …; UPDATE_T1 Trigger BEFORE UPDATE ON T1 FOR EACH ROW BEGIN... INSERT INTO t2 VALUES (...);... END; INSERT_T2 Trigger BEFORE UPDATE ON T2 FOR EACH ROW BEGIN... INSERT INTO... VALUES (...);... END; Fires the UPDATE-T1 Trigger Fires the INSERT-T2 Trigger

Checklist for Creating Users 1.Choose a username and authentication mechanism. 2.Identify tablespaces in which the user needs to store objects. 3.Decide on quotas for each tablespace. 4.Assign a default tablespace and temporary tablespace. 5.Create a user. 6.Grant privileges and roles to the user. 1.Choose a username and authentication mechanism. 2.Identify tablespaces in which the user needs to store objects. 3.Decide on quotas for each tablespace. 4.Assign a default tablespace and temporary tablespace. 5.Create a user. 6.Grant privileges and roles to the user.

Set the initial password: CREATE USER scott IDENTIFIED BY tiger DEFAULT TABLESPACE user_data TEMPORARY TABLESPACE temp QUOTA 15m ON user_data; CREATE USER scott IDENTIFIED BY tiger DEFAULT TABLESPACE user_data TEMPORARY TABLESPACE temp QUOTA 15m ON user_data; DROP USER peter CASCADE; Creating Users

Monitoring Users DBA_USERS USERNAME USER_ID CREATED ACCOUNT_STATUS LOCK_DATE EXPIRY_DATE DEFAULT_TABLESPACE TEMPORARY_TABLESPACE DBA_USERS USERNAME USER_ID CREATED ACCOUNT_STATUS LOCK_DATE EXPIRY_DATE DEFAULT_TABLESPACE TEMPORARY_TABLESPACE DBA_TS_QUOTAS USERNAME TABLESPACE_NAME BYTES MAX_BYTES BLOCKS MAX_BLOCKS DBA_TS_QUOTAS USERNAME TABLESPACE_NAME BYTES MAX_BYTES BLOCKS MAX_BLOCKS

System Privileges: Examples CategoryExamples INDEXCREATE ANY INDEX ALTER ANY INDEX DROP ANY INDEX TABLE CREATE TABLE CREATE ANY TABLE ALTER ANY TABLE DROP ANY TABLE SELECT ANY TABLE UPDATE ANY TABLE DELETE ANY TABLE SESSIONCREATE SESSION ALTER SESSION RESTRICTED SESSION TABLESPACECREATE TABLESPACE ALTER TABLESPACE DROP TABLESPACE UNLIMITED TABLESPACE

Displaying System Privileges DBA_SYS_PRIVS GRANTEE PRIVILEGE ADMIN OPTION SESSION_PRIVS PRIVILEGE Database Level Session Level

Object Privileges Object priv. TableSequenceProcedure ALTER  DELETE  EXECUTE  INSERT  SELECT  UPDATE 

DBA_TAB_PRIVS Displaying Object Privileges DBA_COL_PRIVS GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRANTABLE GRANTEE OWNER TABLE_NAME COLUMN_NAME GRANTOR PRIVILEGE GRANTABLE

GRANT create session TO scott; REVOKE create session FROM scott;

Roles Users Privileges Roles UPDATE ON EMP INSERT ON EMP SELECT ON EMP CREATE TABLE CREATE SESSION HR_CLERKHR_MGR King Scott Roger

Triggers and Views Triggers can be defined only on tables, not on views but triggers on the base table(s) of a view are fired if an INSERT, UPDATE, or DELETE statement is issued against a view. INSTEAD OF triggers provide a transparent way of modifying views that cannot be modified directly through SQL DML statements (INSERT, UPDATE, and DELETE). Oracle fires the INSTEAD OF trigger instead of executing the triggering statement. The trigger performs update, insert, or delete operations directly on the underlying tables. Users write normal INSERT, DELETE, and UPDATE statements against the view and the INSTEAD OF trigger works invisibly in the background to make the right actions take place. By default, INSTEAD OF triggers are activated for each row. CREATE VIEW tutor_info AS SELECT s.name,s.studno,s.tutor,t.roomno FROM student s, staff t WHERE s.tutor = t.lecturer;

Example of an INSTEAD OF Trigger CREATE TRIGGER tutor_info_insert INSTEAD OF INSERT ON tutor_info REFERENCING NEW AS n -- new tutor FOR EACH ROW BEGIN IF NOT EXISTS SELECT * FROM student WHERE student.studno = :n.studno THEN INSERT INTO student(studentno,name,tutor) VALUES(:n.studno, :n.name, :n.tutor); ELSE UPDATE student SET student.tutor = :n.tutor WHERE student.studno = :n.studno; END IF; IF NOT EXISTS SELECT * FROM staff WHERE staff.lecturer = :n.tutor THEN INSERT INTO staff VALUES(:n. staff.tutor, :n.roomno); ELSE UPDATE staff SET staff.roomno = :n.roomno WHERE staff.lecturer = :n.tutor; END IF; END; The actions shown for rows being inserted into the TUTOR_INFO view first test to see if appropriate rows already exist in the base tables from which TUTOR_INFO is derived. The actions then insert new rows or update existing rows, as appropriate. Similar triggers can specify appropriate actions for UPDATE and DELETE.