Dato Table Data Base Application Code 1° Controllo Procedure Client Side 3° Controllo...

Click here to load reader

  • date post

    02-May-2015
  • Category

    Documents

  • view

    214
  • download

    0

Embed Size (px)

Transcript of Dato Table Data Base Application Code 1° Controllo Procedure Client Side 3° Controllo...

  • Slide 1
  • Dato Table Data Base Application Code 1 Controllo Procedure Client Side 3 Controllo Integrity Constraint Trigger Code 2 Controllo Event Driven BUSINESS RULES CONTROL
  • Slide 2
  • 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 (CHECKs) Status SQL constraints -) Enabled -) Disabled Using Index Storage Option
  • Slide 3
  • 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 dallutente con il quale siamo connessi DBA Relativi a tutte le tabelle
  • Slide 4
  • 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
  • Slide 5
  • Un TABLE CONSTRAINT identico, sintatticamente alla stesura che vedremo per lazione su colonna con lunica 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
  • Slide 6
  • 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
  • Slide 7
  • 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
  • Slide 8
  • 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
  • Slide 9
  • 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
  • Slide 10
  • 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 )
  • Slide 11
  • 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 lintegrit della base dati? Un tentativo di delete D5 Research occorre. Quali possibili azioni devo considerare al fine di mantenere lintegrit della base dati? DEPT EMP FOREIGN KEY Constraints in Oracle
  • Slide 12
  • 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)
  • Slide 13
  • 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)
  • Slide 14
  • 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
  • Slide 15
  • 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
  • Slide 16
  • 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
  • Slide 17
  • 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
  • Slide 18
  • 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