Vincoli di Integrità
|
|
|
- Emilio Maggio
- 10 anni fa
- Visualizzazioni
Transcript
1 Vincoli di Integrità Approccio procedurale Antonella Poggi Dipartimento di informatica e Sistemistica Università di Roma La Sapienza Progetto di Applicazioni Software Anno accademico Questi lucidi sono stati prodotti sulla base del materiale preparato per il corso di Progetto di Applicazioni Software da A. Calì e da D. Lembo.
2 Transazioni e vincoli Uno stato di un database si dice consistente se esso soddisfa tutti i vincoli di integrità Esistono due nozioni di consistenza: 1. consistenza a livello di transazione: richiede che i dati siano consistenti alla fine di ciascuna transazione, ma è possibile che all interno della transazione i dati attraversino stati inconsistenti 2. consistenza a livello di statement: richiede che dopo ogni statement i dati siano in uno stato consistente. Questa nozione implica la precedente (è più restrittiva) Antonella Poggi 1
3 Transazioni e vincoli in MySQL Il fatto che in MySQL non sia possibile differire il controllo dei vincoli (ed anche dei trigger) implica che la consistenza sia sempre verificata a livello di statement. Questo può creare problemi, visto che noi saremmo invece interessati ad una consistenza a livello di transazione. In particolare, in presenza di cicli di integrità referenziale (inclusioni o foreign key), ci troviamo nella situazione di non riuscire a popolare lo schema. Antonella Poggi 2
4 Transazioni e vincoli in MySQL (Esempio) CREATE TABLE persona ( cod_fis VARCHAR(20) PRIMARY KEY, nome VARCHAR(20), cognome VARCHAR(20) ); CREATE TABLE residenza ( persona VARCHAR(20) PRIMARY KEY, citta VARCHAR(20) ); Per semplicità omettiamo la definizione della tabella citta Antonella Poggi 3
5 ALTER TABLE persona ADD CONSTRAINT fk_persona_residenza FOREIGN KEY(cod_fis) REFERENCES residenza(persona); ALTER TABLE residenza ADD CONSTRAINT fk_residenza_persona FOREIGN KEY(persona) REFERENCES persona(cod_fis); Avendo definito i vincoli dopo la creazione delle tabelle abbiamo risolto un primo problema relativo al ciclo di foreign key che si verifica in fase di definizione dello schema: la definizione di ciascun vincolo richiede che sia già stata creata la tabella a cui si fa riferimento. Antonella Poggi 4
6 Non riusciamo però a popolare lo schema. Infatti eseguendo il comando INSERT INTO persona VALUES ( MRORSS72M21M, Mario, Rossi ); otteniamo ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails ( mydb/persona, CONSTRAINT fk_persona_residenza FOREIGN KEY ( cod_fis ) REFERENCES residenza ( persona )) Analogamente se facciamo eseguiamo prima il comando INSERT INTO residenza VALUES ( MRORSS72M21M, Roma ); Antonella Poggi 5
7 Transazioni e vincoli in MySQL (Esempio) Non possiamo risolvere il problema mantenendo il ciclo, ma siamo costretti a spezzare il ciclo e gestire gli inserimenti in maniera transazionale in modo che non violino il vincolo. Assumiamo di aver cancellato il FK da Persona verso residenza. Una soluzione possibile prevede l uso di una stored procedure (e quindi non potrà essere una soluzione esclusivamente dichiarativa). Antonella Poggi 6
8 Transazioni e vincoli in MySQL (Esempio) DELIMITER CREATE PROCEDURE trans_insert(cf VARCHAR(20), p VARCHAR(20), n VARCHAR(20), c VARCHAR(20)) BEGIN INSERT INTO residenza VALUES (cf,c); INSERT INTO persona VALUES (cf,p,n); END DELIMITER ; CALL trans_insert ( MRORSS72M21B9M, mario, rossi, roma ); Non tutti i nostri problemi sono però risolti. Antonella Poggi 7
9 Transazioni e vincoli in MySQL (Esempio) Abbiamo un comportamento transazionale? Cosa succede se ci sono degli errori negli inserimenti (ad esempio dovuti a duplicati di chiave)? Per risolvere questi problemi modifichiamo il codice come segue: Antonella Poggi 8
10 CREATE PROCEDURE trans_insert(cf VARCHAR(20), p VARCHAR(20), n VARCHAR(20), c VARCHAR(20)) BEGIN DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN ROLLBACK; SET AUTOCOMMIT = 1; SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; END; SET AUTOCOMMIT = 0; SET TRANSACTION ISOLATION LEVEL READ COMMITTED; INSERT INTO residenza VALUES (cf,c); INSERT INTO persona VALUES (cf,p,n); COMMIT; SET AUTOCOMMIT = 1; SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; END Antonella Poggi 9
11 Transazioni e vincoli in MySQL (Esempio) Abbiamo assunto che lo stato di default per l autocommit sia 1, e per il livello di isolamento sia REPEATABLE READ (alla fine, autocommit e isolamento sono impostati nuovamente a tali valori) Abbiamo inoltre assunto che la procedura non sia invocata all interno di una transazione più complessa: infatti l esecuzione del commit o del rollback causerebbe anche il commit o il rollback di altri statement precedentemente eseguiti Si noti infine che la procedura non segnala il suo esito a chi la ha invocata. Per risolvere questo problema, bisogna fare uso di opportuni parametri di output per notificare all utente se l inserimento ha avuto successo o meno (lasciato come esercizio) Antonella Poggi 10
12 Transazioni e vincoli in MySQL (Esempio) Resta però il problema di garantire che non si eseguano inserimenti direttamente sulla tabella persona! Questo problema è difficilmente risolvibile se per qualsiasi utente è possibile interagire con il database attraverso un interprete di comandi SQL Ci sono casi particolari in cui il problema è risolvibile con l uso di trigger (cf. esercitazione) Se l accesso avviene solo attraverso client che offrono esclusivamente funzionalità cablate nel codice, l integrità è garantita (assunzione semplificatrice) Antonella Poggi 11
13 Approccio procedurale alla implementazione dei vincoli Come già detto, i vincoli implementati tramite gli strumenti del DBMS possono essere implementati in maniera procedurale attraverso l uso di User Defined Function (UDF), Stored Procedure o Trigger Trigger, Stored Procedure e UDF vengono specificati in modo procedurale, dato che con essi definiamo delle operazioni da eseguire perchè il vincolo sia rispettato. È bene comunque che l analisi dei vincoli produca una specifica dichiarativa, in generale più chiara e rigorosa, e più vicina all SQL, che è il nostro più diretto strumento per l implementazione dei vincoli. Antonella Poggi 12
14 User Defined Function (esempio) Sia data la seguente relazione UTENTE (ID_UTENTE, NOMINATIVO, DATA_NASCITA, RECAPITO_TEL, INDIRIZZO_ ) Sia dato il seguente vincolo: l indirizzo di di un utente è una stringa formata da simboli alfanumerici e dai e. Si assuma di aver realizzato la seguente stored function (di cui omettiamo il corpo). create function verifica ( varchar(30)) returns int che restituisce 1 se la stringa passata come argomento verifica il vincolo, 0 altrimenti. Antonella Poggi 13
15 User Defined Function (esempio) Utilizziamo la precedente funzione per imporre il vincolo ALTER TABLE UTENTE ADD CONSTRAINT verifica_mail CHECK(verifica (INDIRIZZO_ )=1); Antonella Poggi 14
16 User Defined Function Le UDF sono un potente strumento per estendere proceduralmente SQL tramite il meccanismo appena visto, possiamo implementare facilmente qualsiasi vincolo di stato il vincolo precedente sarebbe piuttosto complicato da implementare solo tramite l uso di SQL In generale, le UDF possono aiutarci nei casi in cui sia particolarmente complicato implementare un vincolo esclusivamente utilizzando SQL, oppure se il DBMS usato non consente di utilizzare i costrutti di SQL necessari all implementazione del vincolo Antonella Poggi 15
17 User Defined Function in MySQL Questo però non è il caso di MySQL, per il quale non è ammesso l uso di UDF all interno di una condizione di una clausola CHECK (sappiamo in verità che l uso della clausola CHECK non è affatto supportato) Nei casi in cui avremmo usato una UDF, MySQL ci forza ad usare un Trigger Si noti però che il trigger non è uno strumento che nasce per la gestione di vincoli di stato, in quanto ha sempre bisogno di un evento innescante, e quindi, implicitamente, di una transizione da uno stato ad un altro!! Antonella Poggi 16
18 Trigger in MySQL(esempio) Per l esempio visto prima, abbiamo bisogno di realizzare un (row-level) trigger, il quale nei casi di inserimento e di aggiornamento dell indirizzo innesca una stored procedure che effettua il controllo dell . Creiamo il trigger per il caso di inserimento dei dati CREATE TRIGGER tgr_ BEFORE INSERT ON UTENTE FOR EACH ROW CALL Proc_Verifica (NEW.indirizzo_ ); Analogamente per il caso di aggiornamento (UPDATE) Antonella Poggi 17
19 Nota Da un trigger non è possibile restituire un risultato. Nell esempio appena visto, abbiamo perciò usato una procedura (Proc Verifica ) invece della funzione menzionata in precedenza (Verifica ). Il comportamento del trigger sarà quello di consentire l inserimento se il controllo sul formato dell ha successo, bloccarlo in caso contrario. Le slide che seguono spiegano come è possibile, in generale, ottenere questo comportamento in MySQL. Antonella Poggi 18
20 Operazioni critiche Per implementare un vincolo per mezzo di un trigger, la prima cosa da fare è identificare le operazioni critiche che possono portare alla sua violazione Tipicamente operazioni di inserimento/aggiornamento/cancellazione Se una operazione non può violare in alcun modo il vincolo (per esempio, la cancellazione nel caso del vincolo sull delle slide precedenti), è inopportuno identificare tale operazione come critica, giacché si farebbero controlli inutili che porterebbero ad un peggioramento delle prestazioni. Antonella Poggi 19
21 Trigger e vincoli I trigger sono basati sul modello evento-condizione-azione, e possono essere usati per implementare vincoli come segue: L evento è l operazione critica che lancia l esecuzione del trigger quando viene catturato all interno di una transazione, l esecuzione è differita al termine della transazione, usando la modalità apposita prevista nello standard altrimenti, conviene definire il trigger in maniera tale che la condizione sia verificata prima (opzione BEFORE) che sia eseguita l operazione critica che l ha innescato (l uso dell opzione AFTER richiederebbe si disfare l esito dell operazione in caso di violazione) Antonella Poggi 20
22 La condizione è la negazione del vincolo di integrità L azione dipende dalla politica di reazione alla violazione del vincolo; può essere: una notifica di errore e il lancio di una eccezione, se la politica scelta è quella di impedire l esecuzione dell operazione l esecuzione di una transazione costituita da più operazioni che insieme portano al soddisfacimento del vincolo (per es. una cancellazione in cascata in caso di violazione di un vincolo di inclusione a seguito di una delete). Antonella Poggi 21
23 Trigger e vincoli (in Mysql) In MySQL non è possibile usare la modalità DEFERRED per richiedere che il trigger sia eseguito al termine della transazione vedremo più avanti come fare quando si deve passare da stati inconsistenti all interno di una stessa transazione In MySQL non è possibile definire più trigger innescati dallo stesso evento è necessario implementare tutti i controlli di integrità da farsi prima dell inserimento con un trigger unico (nell ordine in cui si vuole siano eseguiti) Antonella Poggi 22
24 Confronto con i vincoli di foreign key La gestione dei vincoli di foreign key da parte del DBMS può essere simulata con un trigger così caratterizzato: Evento: inserimento/cancellazione/aggiornamento Condizione: valore da inserire non presente nella tabella referenziata/ valore da cancellare presente nella tabella che referenzia/ valore da modificare presente nella tabella che referenzia Antonella Poggi 23
25 azione: notifica di errore e il lancio di una eccezione, se l opzione scelta è RESTRICT cancellazione/aggiornamento in cascata, se l opzione scelta è ON DELETE/UPDATE CASCADE assegnazione a NULL o a DEFAULT, se l opzione scelta è ON DELETE/UPDATE SET NULL/DEFAULT Antonella Poggi 24
26 Uso delle eccezioni per impedire l esecuzione di un operazione critica Per impedire l esecuzione di un operazione, è prassi comune fare uso di eccezioni Per gestire le eccezioni, lo standard prevede solamente delle non-core features che ancora non sono di fatto implementate interamente da nessun DBMS Per lanciare un eccezione, si ricorre pertanto all esecuzione di un operazione che genera sempre un eccezione, in modo tale da bloccare l esecuzione dell operazione critica e di conseguenza la violazione del vincolo Antonella Poggi 25
27 Esempi di procedure che generano sempre un eccezione (in Mysql) FETCH su un cursore vuoto: CREATE PROCEDURE eccezione () BEGIN DECLARE c1 VARCHAR(14); DECLARE crs CURSOR FOR (SELECT * FROM mysql.user WHERE 0=1); OPEN crs; FETCH crs INTO c1; END Antonella Poggi 26
28 SELECT su una colonna che non esiste; astuzia: si nomina la colonna con la stringa di errore che vogliamo sia generata: CREATE PROCEDURE eccezione () UPDATE Vincolo violato SET X=1; Antonella Poggi 27
29 Esempio CREATE TABLE padre ( cod_fis VARCHAR(14) PRIMARY KEY, nome VARCHAR(20), cognome VARCHAR(20) ); CREATE TABLE paternita ( padre VARCHAR(20), figlio VARCHAR(14), PRIMARY KEY(padre,figlio) ); Vogliamo implementare il vincolo padre[nome] paternita[padre] che impone ad ogni padre di avere almeno un figlio (per semplicità omettiamo altri vincoli sullo schema). Antonella Poggi 28
30 Esempio DELIMITER CREATE FUNCTION inclusione1 (nome VARCHAR(20)) RETURNS bool BEGIN DECLARE soddisfatto bool; SELECT count(*) INTO soddisfatto FROM paternita WHERE padre=nome; RETURN soddisfatto; END CREATE TRIGGER tgr_incl BEFORE INSERT ON padre FOR EACH ROW IF inclusione1(new.nome)=false THEN CALL eccezione(); END IF DELIMITER ; Antonella Poggi 29
31 Esempio (Cont.) Se ora proviamo ad inserire una tupla dentro a padre il cui attributo nome è un valore che non compare dentro alla tabella paternità otteniamo: INSERT INTO padre VALUES ( XX4, Mario, Rossi ); ERROR 1146 (42S02): Table lezione_vincoli.vincolo violato doesn t exist Antonella Poggi 30
32 Inserimento in caso di vincoli di foreign key ciclici in Mysql Abbiamo già visto che in caso di vincoli ciclici, una possibilità è quella di spezzare i ciclo, ovvero rinunciare ad implementare un vincolo di integrità a livello di DBMS e rimandarne la gestione alle applicazioni che accedono alla base di dati soluzione concettualmente sbagliata accettabile quando la base di dati è acceduta solamente da applicazione non accettabile quando la base di dati puó essere acceduta dalla linea di comando (caso dei progetti svolti per questo corso) Antonella Poggi 31
33 Se non si spezza il ciclo, allora il popolamento delle tabelle coinvolte da vincoli ciclici viene impedito per fare in modo che il vincolo sia soddisfatto Problema: non si riesce a popolare le tabelle neanche attraverso l uso di una procedura transazionale scritta appositamente per garantire la consistenza della base di dati (cf. slide precedenti) Soluzione: modificare la procedura transazionale in maniera tale che al suo interno: (i) disabiliti i vincoli (triggers e/o FOREIGN KEY), (ii) effettui l inserimento, (iii) riabiliti i vincoli Antonella Poggi 32
34 Inserimento in caso di vincoli di foreign key ciclici in Mysql (Esempio) Si mantengono i due vincoli di foreign key e si modifica la procedura transazionale vista in precedenza, per un inserimento consistente: CREATE PROCEDURE trans_insert(cf VARCHAR(20), p VARCHAR(20), n VARCHAR(20), c VARCHAR(20)) BEGIN DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN ROLLBACK; SET AUTOCOMMIT = 1; SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; END; Antonella Poggi 33
35 SET AUTOCOMMIT = 0; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; SET foreign_key_checks=0; INSERT INTO residenza VALUES (cf,c); INSERT INTO persona VALUES (cf,p,n); SET foreign_key_checks=1; COMMIT; SET AUTOCOMMIT = 1; SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; END Antonella Poggi 34
36 Trigger e transazioni Quando i trigger sono innescati all interno di transazioni, lo standard SQL prevede la possibilità di eseguirli in modalità immediata o differita Quando i trigger sono usati per implementare vincoli di integrità ed è necessario avere dati inconsistenti durante la transazione (che però al termine riporta il database in uno stato di consistenza), allora la modalità dovrebbe essere differita e.g. caso di inserimenti in tabelle coinvolte in cicli di vincoli di inclusione, o cicli di foreign key ed inclusioni Antonella Poggi 35
37 Trigger e transazioni (in MySQL) Poiché in MySQL non esiste la modalità differita, per implementare alcuni vincoli che richiedono l impostazione di tarnsazione, può essere necessario disabilitare e poi riabilitare i trigger per esempio per gestire operazioni critiche su tabelle su cui vertono cicli di vincoli di inclusione Antonella Poggi 36
38 Inserimenti in presenza di cicli di vincoli di inclusione (in Mysql) Si definiscono dei trigger che impediscono inserimenti nelle tabelle che violino i vincoli di inclusione In maniera analoga a quanto fatto per i vincoli di foreign key, si definisce una procedura transazionale per permettere inserimenti consistenti, e una variabile ad-hoc per controllare l esecuzione del trigger all interno della a procedura transazionale per l inserimento si usa una variabile locale che viene settata ad un valore diverso da NULL prima di eseguire l inserimento e poi nuovamente a NULL si definisce un trigger che a fronte di un Antonella Poggi 37
39 inserimento, controlla il valore di tale variabile, e se è pari a NULL (una variabile che non è mai stata inizializzata, di default, è pari a NULL), allora verifica se il vincolo è violato e, se lo è, lancia un eccezione, altrimenti non fa nulla. Antonella Poggi 38
40 Esempio: inserimenti in presenza di vincoli di inclusione Si consideri la base di dati precedentemente definita, costituita dalle tabelle padre e paternità e dal vincolo di inclusione padre[nome] paternita[padre] Si supponga ora di avere anche il vincolo: paternit\ a[padre] padre[nome] Antonella Poggi 39
41 1. Definiamo due trigger per impedire inserimenti in padre e paternità che violino entrambi questi vincoli CREATE TRIGGER tgr_incl1 BEFORE INSERT ON padre FOR EACH ROW IS NULL AND inclusione1(new.nome)=false THEN CALL eccezione(); END IF; Antonella Poggi 40
42 CREATE TRIGGER tgr_incl2 BEFORE INSERT ON paternita FOR EACH ROW IS NULL AND inclusione2(new.padre)=false THEN CALL eccezione(); END IF; dove inclusione1 e eccezione sono definite come visto (inclusione2 è analoga a inclusione1) Antonella Poggi 41
43 2. Definiamo una procedura insert inclusione che permette degli inserimenti consistenti in padre e paternità CREATE PROCEDURE insert_inclusione(cf VARCHAR(14), n VARCHAR(20), c VARCHAR(20)) BEGIN DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN ROLLBACK; SET AUTOCOMMIT = 1; SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; END; Antonella Poggi 42
44 SET AUTOCOMMIT = 0; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; INSERT INTO padre VALUES (cf,n,c); INSERT INTO paternita(padre) VALUES (n); COMMIT; SET AUTOCOMMIT = 1; SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; END Antonella Poggi 43
45 Criterî generali per l implementazione dei vincoli Usare SQL quando possibile, i trigger altrimenti La ciclicità di vincoli può porre problemi nella definizione dichiarativa di vincoli ciclici di tipo FOREIGN KEY si usa il comando ALTER CONSTRAINT nell esecuzione di operazioni critiche in tabelle cu cui vertono vincoli ciclici si può spezzare il ciclo rinunciando a rappresentare un vincolo e si rimanda la sua gestione alle applicazioni che accedono alla base di dati soluzione concettualmente sbagliata Antonella Poggi 44
46 accettabile quando la base di dati è acceduta solamente da applicazione non accettabile quando la base di dati puó essere acceduta dalla linea di comando (caso dei progetti svolti per questo corso) soluzione da preferire: permettere l inserimento attraverso una transazione che usa il livello massimo di isolamento quando possibile: usare l opzione DEFERRED altrimenti: disabilitare temporaneamente i vincoli/trigger Antonella Poggi 45
47 Vincoli in MySQL Utilizzare SQL quando possibile costrutti NOT NULL, DEFAULT, ENUM per vincoli di stato costrutti UNIQUE, PRIMARY KEY per vincoli di tabella costrutto FOREIGN KEY per vincoli inter-tabella (integrit referenziale) Ricorrere a trigger negli altri casi Se il vincolo di tupla e di stato, allora si può sempre fare Se più trigger devono essere associati allo stesso evento, raggruppare tutti i trigger in un unico trigger (si ricordi che MySQL non è in grado di Antonella Poggi 46
48 gestire più trigger associati ad un evento) Il fatto che in MySQL possono essere definiti solo trigger la cui azione: deve essere eseguita per ogni tupla coinvolta dall evento non modifica la tabella che li ha innescati condiziona l implementazione dei vincoli e.g. è possibile che l unico modo di implementare alcuni vincoli sia attraverso l uso di apposite procedure transazionali per eseguire operazioni critiche, all interno delle quali sia necessario disabilitare/riabilitare i trigger Antonella Poggi 47
49 Osservazioni importanti In linea di principio, tutti i vincoli devono essere implementati a livello di DBMS Qualora, si scelga di non implementare alcuni vincoli a livello di DBMS, e si demandi il controllo di integrità alle applicazioni che interagiscono con la base di dati (client), è necessario documentare la base di dati e replicare il controllo su ogni applicazione Antonella Poggi 48
50 Nell implementazione di un vincolo è cruciale fare un attenta analisi della politica di reazione alla sua violazione (cf. Esercitazione 3) e.g. nelle slide, abbiamo sempre assunto di voler impedire un inserimento che viola un vincolo di inclusione; una politica alternativa potrebbe essere quella di inserire nella tabella a destra dell inclusione una tupla che rende il vincolo soddisfatto è sempre possibile farlo? Antonella Poggi 49
51 I vincoli di tupla (di stato o di transizione di stato), e vincoli sui singoli attributi in particolare, vanno verificati generalmente anche a livello dell applicazione siccome le transazioni su oggetti potrebbero essere lunghe e complesse, l errore potrebbe essere rilevato dal DBMS solo dopo un insieme di operazioni che avrebbero potuto essere evitate. Antonella Poggi 50
52 Esempio Riprendiamo l esempio visto al termine della lezione sull approccio procedurale all implementazione dei vincoli: Persona(cod p, nome, salario, tipo) Azienda(cod a, nome) Impiego(cod p,cod a) Vincoli sullo schema logico 1. tipo deve essere P o I (pensionato o impiegato) 2. salario <= Antonella Poggi 51
53 3. solo le righe di Persona che hanno tipo I possono avere il valore dell attributo cod p che compare in Impiego[cod p] 4. tutte le righe di Persona che hanno tipo I devono avere il valore dell attributo cod p che compare in Impiego[cod p] 5. Impiego[cod p] Persona[cod p] (foreign key) 6. Impiego[cod a] Azienda[cod a] (foreign key) Antonella Poggi 52
54 Vincoli implementabili in maniera dichiarativa 1. Persona[tipo] {P,I} Vincolo di stato tupla Implementato tramite costrutto ENUM. 5. Impiego[cod p] Persona[cod p] Vincolo di stato inter-tabella 6. Impiego[cod a] Azienda[cod a] Vincolo di stato inter-tabella implementati tramite costrutto FOREIGN KEY Antonella Poggi 53
55 Creazione tabelle codice SQL create table PERSONA( cod_p varchar(10) primary key, nome varchar(15) not null, cognome varchar(15) not null, salario int, tipo enum ( I, P ) ); create table AZIENDA( cod_a varchar(10) primary key, nome varchar(15) not null ); Antonella Poggi 54
56 Creazione tabelle codice SQL (cont.) create table IMPIEGO( cod_p varchar(10), cod_a varchar(10), primary key (cod_p, cod_a) ); alter table IMPIEGO add constraint fk_impiego_persona foreign key (cod_p) references PERSONA(cod_p) on delete cascade on update cascade; alter table IMPIEGO add constraint fk_impiego_azienda foreign key (cod_a) references AZIENDA(cod_a) on delete cascade on update cascade; Antonella Poggi 55
57 Vincoli che richiedono un approccio procedurale 2. Persona[salario] Vincolo di stato di tupla 3. cp,n,s,t,ca Persona(cp,n,s,t), Impiego(cp,ca) t= I Vincolo di stato inter-tabella 4. cp,n,s Persona(cp,n,s, I ) ca Impiego(cp,ca) Vincolo di stato inter-tabella Antonella Poggi 56
58 Implementazione (cont.) Per il vincolo 2. Persona[salario] , le operazioni critiche sono: l inserimento in PERSONA l update in PERSONA Antonella Poggi 57
59 delimiter create function check_salario(sal int) returns bool begin if sal > then call eccezione(); end if; end delimiter ; create trigger tgr_salario_ins before insert on PERSONA for each row call check_salario(new.salario); create trigger tgr_salario_up before update on PERSONA for each row call check_salario(new.salario); Antonella Poggi 58
60 Implementazione (cont.) Se provi ad eseguire i seguenti statement SQL insert into persona values( AAA, mario, rossi,160000, I ); insert into persona values( BBB, marco, verdi,200000, I ); update persona set salario=salario where cod_p= AAA ; Antonella Poggi 59
61 Implementazione (cont.) Per il vincolo 3. cp,n,s,t,ca Persona(cp,n,s,t), Impiego(cp,ca) t= I, le operazioni critiche sono: l inserimento in IMPIEGO l update del campo tipo in PERSONA (per semplicità, prevediamo solo il passaggio da I a P ) Antonella Poggi 60
62 Implementazione (cont.) Nel seguito ci occupiamo solo dell update su Persona[tipo] (passaggio da I a P ). Il resto dell implementazione è lasciata per esercizio Quando una persona passa da impiegato a pensionato, occorre cancellare la riga corrispondente in IMPIEGO. Si noti che l attributo SALARIO di PERSONA non è più significativo per la riga aggiornata (per rappresentare quest ultima proprietà si può aggiungere un vincolo di stato su PERSONA - esercizio) Antonella Poggi 61
63 Per semplicità, assumiamo che non ci siano altri trigger specificati sull update in Persona. Quindi assumiamo che non sia definito il trigger tgr salario up visto prima. Ovviamente, se tale vincolo fosse definito, si potrebbe scrivere un unico trigger per entrambi i vincoli (esercizio). Antonella Poggi 62
64 Implementazione (cont.) delimiter create procedure vaiinpensione(old_tipo char, new_tipo char, cod varchar(10)) begin if ((old_tipo= I or old_tipo= i ) and (new_tipo= P and new_tipo= p )) then delete from impiego where cod_p=cod; end if; end delimiter ; create trigger tgr_pensione after update on PERSONA for each row call vaiinpensione(old.tipo,new.tipo,new.cod_p); Antonella Poggi 63
65 Implementazione (cont.) Per il vincolo 4. cp,n,s Persona(cp,n,s, I ) ca Impiego(cp,ca), le operazioni per cui è necessario impostare una transazione sono: l inserimento in PERSONA la cancellazione da IMPIEGO (per semplicità, prevediamo che non sia possibile aggiornare l impiego) Antonella Poggi 64
66 Implementazione (cont.) Inserimento in PERSONA (vincolo 4): se il tipo è P, tutto va bene; se il tipo è I, è obbligatorio inserire una riga in IMPIEGO, specificando l azienda in cui la corrispondente persona è impiegata. Tutto ciò in modo atomico (una transazione). I dati attraverseranno uno stato non consistente, ma saranno poi consistenti alla fine della transazione (si noti che il foreign key fk_impiego_persona ed il trigger che vogliamo definire creano un ciclo di dipendenze fra vincoli che dobbiamo considerare quando impostiamo la transazione che garantisce l atomicità degli inserimenti - esercizio). Antonella Poggi 65
67 Implementazione (cont.) Cancellazione da IMPIEGO (vincolo 4) Rimangono appese le righe di PERSONA che erano impiegate nell azienda cancellata. Ci sono due approcci possibili, a seconda della politica di reazione alla violazione che si vuole seguire Antonella Poggi 66
68 Implementazione (cont.) Approcci possibili: cancellazione a cascata da Persona impedire la cancellazione di aziende che abbiano almeno un impiegato (implementato con trigger) in questo caso la clausola ON DELETE CASCADE è superflua sulla foreign key Impiego[cod a] Azienda[cod a] Antonella Poggi 67
Vincoli di Integrità Approccio dichiarativo alla loro implementazione
Vincoli di Integrità Approccio dichiarativo alla loro implementazione Antonella Poggi Dipartimento di informatica e Sistemistica SAPIENZA Università di Roma Progetto di Applicazioni Software Anno accademico
Triggers. Basi dati attive. Trigger. Indipendenza della conoscenza
Basi dati attive Triggers Antonella Poggi Domenico Lembo Dipartimento di informatica e Sistemistica SAPIENZA Università di Roma Progetto di Applicazioni Software Anno accademico 2009-2010 Una base di dati
Vincoli di Integrità
Vincoli di Integrità Antonella Poggi Dipartimento di informatica e Sistemistica Sapienza Università di Roma Progetto di Applicazioni Software Anno accademico 2010-2011 Questi lucidi sono stati prodotti
Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL
Basi di dati Il Linguaggio SQL Data Definition Language (DDL) Data Definition Language: insieme di istruzioni utilizzate per modificare la struttura della base di dati Ne fanno parte le istruzioni di inserimento,
Definizione di domini
Definizione di domini Come nei linguaggi ad alto livello (es. C) è possibile definire nuovi domini (tipi di dati) a partire da quelli predefiniti, anche se il costruttore è più limitato. create domain
Lezione 8. Metadati, Viste e Trigger
Lezione 8 Metadati, Viste e Trigger Pag.1 Metadati e catalogo di sistema I metadati sono dati a proposito dei dati (quali tabelle esistono?, quali campi contengono?, quante tuple contengono?, ci sono vincoli
Il linguaggio SQL: trigger. Versione elettronica: 04.7.SQL.trigger.pdf
Il linguaggio SQL: trigger Sistemi Informativi T Versione elettronica: 04.7.SQL.trigger.pdf DBMS attivi Un DBMS si dice attivoquando dispone di un sottosistema integrato per definire e gestire regole I
Tecnologia di un Database Server (centralizzato) Introduzione generale
Introduzione Basi di Dati / Complementi di Basi di Dati 1 Tecnologia di un Database Server (centralizzato) Introduzione generale Angelo Montanari Dipartimento di Matematica e Informatica Università di
Basi di Dati: Corso di laboratorio
Basi di Dati: Corso di laboratorio Lezione 2 Raffaella Gentilini 1 / 45 Sommario 1 Il DDL di SQL: Cancellazione ed Aggiornamento di una BD Cancellazione di Schemi, Tabelle, e Domini Aggiornamento di Tabelle
DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione
SQL DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE SQL è più di un semplice linguaggio di interrogazione! Linguaggio di definizione dati (Data-definition language, DDL):! Crea/distrugge/modifica relazioni
Giovanna Rosone 04/03/2010. 04/03/2010 SQL, Istruzioni per la modifica dello schema
Giovanna Rosone 04/03/2010 04/03/2010 SQL, Istruzioni per la modifica dello schema 1 Riepilogo Impiegato Pagamenti Nome colonna PAG_COD PAG_MATR Tipo dati CHAR(6) CHAR(6) Nome colonna Tipo dati PAG_STIPENDIO
Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati
Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7 Il trattamento dei dati database: il linguaggio SQL seconda parte Prof. Valle D.ssa Folgieri Lez9 15.11.06 Trattamento dati. Database: il
Corso sul linguaggio SQL
Corso sul linguaggio SQL Modulo L2B (SQL) 2.2 Comandi sulle tabelle 1 Prerequisiti Introduzione ai DB Tabelle, relazioni e attributi Chiave primaria Chiave esterna Vincoli di integrità 2 1 Introduzione
INDICI. Prevediamo di effettuare spesso interrogazioni simili alle seguenti:
Date le tabelle: Clienti := < id, nome, cognome, indirizzo,città > Ordini := < id, data_ora_ordine, id_prodotto, id_cliente, quantità> Prodotti := < id, nome, descrizione, costo,scorte > INDICI Prevediamo
Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:
Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R: Si consiglia di creare il data base, inserire i dati nelle tabelle, provare
Gestione delle tabelle
Linguaggio SQL: fondamenti Creazione di una tabella Modifica della struttura di una tabella Cancellazione di una tabella Dizionario dei dati Integrità dei dati 2 Creazione di una tabella (1/3) Si utilizza
Linguaggio SQL: fondamenti D B M G. Gestione delle tabelle
Linguaggio SQL: fondamenti Creazione di una tabella Modifica della struttura di una tabella Cancellazione di una tabella Dizionario dei dati Integrità dei dati 2 2007 Politecnico di Torino 1 Creazione
I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due:
Il modello relazionale I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due: 1. forniscono sistemi semplici ed efficienti per rappresentare
Vincoli e Triggers. Vincoli. Tipo di vincoli. Chiavi esterne
Vincoli Chiavi esterne Vincoli locali e globali Triggers Leggere capitolo 7 di Garcia- Molina et al. Vincoli e Triggers Un vincolo e una relazione tra dati che il DBMS deve assicurare. Esempio: vincoli
Esecuzione concorrente di transazioni
Esecuzione concorrente di transazioni A L B E R T O B E L U S S I P A R T E I I A N N O A C C A D E M I C O 2 0 1 1-2 0 1 2 Tecniche applicate nei DBMS Le tecniche per il controllo della concorrenza che
DBMS (Data Base Management System)
Cos'è un Database I database o banche dati o base dati sono collezioni di dati, tra loro correlati, utilizzati per rappresentare una porzione del mondo reale. Sono strutturati in modo tale da consentire
SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"
SQL SQL: concetti base originariamente "Structured Query Language", ora "nome proprio" linguaggio con varie funzionalità: contiene sia il DDL sia il DML ne esistono varie versioni vediamo gli aspetti essenziali,
SISTEMI INFORMATIVI AVANZATI -2010/2011 1. Introduzione
SISTEMI INFORMATIVI AVANZATI -2010/2011 1 Introduzione In queste dispense, dopo aver riportato una sintesi del concetto di Dipendenza Funzionale e di Normalizzazione estratti dal libro Progetto di Basi
Pag. 1. Gestione delle transazioni. Linguaggio SQL: costrutti avanzati. Esempio applicativo. Gestione delle transazioni. Prelievo. Esempio applicativo
Gestione delle transazioni Introduzione Transazioni in SQL Linguaggio SQL: costrutti avanzati 2 applicativo Operazioni bancarie operazione di prelievo dal proprio conto corrente mediante bancomat Gestione
SQL non è solo un linguaggio di interrogazione (Query Language), ma. Un linguaggio per la definizione di basi di dati (Data-definition language (DDL))
SQL PER LA DEFINIZIONE DI BASI DI DATI 1 SQL non è solo un linguaggio di interrogazione (Query Language), ma Un linguaggio per la definizione di basi di dati (Data-definition language (DDL)) CREATE SCHEMA
Linguaggio SQL: costrutti avanzati
Linguaggio SQL: costrutti avanzati Gestione delle transazioni Introduzione Transazioni in SQL Proprietà delle transazioni 2 Pag. 1 1 Gestione delle transazioni Esempio applicativo Operazioni bancarie operazione
ARCHIVI E DATABASE (prof. Ivaldi Giuliano)
ARCHIVI E DATABASE (prof. Ivaldi Giuliano) Archivio: è un insieme di registrazioni (o records) ciascuna delle quali è costituita da un insieme prefissato di informazioni elementari dette attributi (o campi).
Stored Procedures. Massimo Mecella Dipartimento di Ingegneria informatica automatica e gestionale Antonio Ruberti Sapienza Università di Roma
Stored Procedures Massimo Mecella Dipartimento di Ingegneria informatica automatica e gestionale Antonio Ruberti Sapienza Università di Roma Progetto di Applicazioni Software Stored Procedure e User Defined
Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6
Data Base 1 Sommario I concetti fondamentali. Database Relazionale.. Query e SQL MySql, Creazione di un db in MySQL con PHPmyAdmin Creazione database e delle Tabelle Query Inserimento Ricerca Modifica
Il Modello Relazionale
Il Modello Relazionale Il modello relazionale 1 Il modello relazionale Proposto da E. F. Codd nel 1970 per favorire l indipendenza dei dati e reso disponibile come modello logico in DBMS reali nel 1981
Concetti fondamentali dei database database Cos'è un database Principali database
Concetti fondamentali dei database Nella vita di tutti i giorni si ha la necessità di gestire e manipolare dati. Le operazioni possono essere molteplici: ricerca, aggregazione con altri e riorganizzazione
Organizzazione degli archivi
COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i
Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino
Integration Services Project SQL Server 2005 Integration Services Permette di gestire tutti i processi di ETL Basato sui progetti di Business Intelligence di tipo Integration services Project SQL Server
Laboratorio di Basi di Dati e Web
Laboratorio di Basi di Dati e Web Docente: Alberto Belussi Lezione 1 SQL Structured Query Language SQL è stato definito nel 1973 ed è oggi il linguaggio più diffuso per i DBMS relazionali Il linguaggio
5.2.1 RELAZIONI TRA TABELLE 1. 5.2.4.1 Creare una relazione uno-a-uno, uno-a-molti tra tabelle 9
5.2.1 RELAZIONI TRA TABELLE 1 5.2.4.1 Creare una relazione uno-a-uno, uno-a-molti tra tabelle 9 Il grado di un verso di un associazione indica quanti record della tabella di partenza si associano ad un
SQL PER LA DEFINIZIONE DI BASI DI DATI
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 dati (Data-definition language (DDL)) CREATE SCHEMA
APPENDICE. Procedure in SQL (1)
APPENDICE Procedure in SQL Transazioni in SQL Embedded SQL Remote Procedure Call Appendice 1 Procedure in SQL (1) Standard SQL2 permette di definire procedure, associate a singoli comandi SQL, memorizzate
Appunti di MySql. Evoluzione di un tutorial di base di mysql, scritto da Etel Sverdlov.
Appunti di MySql Evoluzione di un tutorial di base di mysql, scritto da Etel Sverdlov. Indice generale avviare la shell mysql...2 comandi SQL per la gestione del database (DDL)...2 visualizzare l'elenco
ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7
ESEMPI DI QUERY SQL Dati di esempio... 2 Query su una sola tabella... 2 Esempio 1 (Ordinamento)... 2 Esempio 2 (Scelta di alcune colonne)... 3 Esempio 3 (Condizioni sui dati)... 3 Esempio 4 (Condizioni
Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati
Basi di dati Il Modello Relazionale dei Dati Proposto da E. Codd nel 1970 per favorire l indipendenza dei dati Disponibile come modello logico in DBMS reali nel 1981 (non è facile realizzare l indipendenza
BASI DI DATI per la gestione dell informazione. Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone
BASI DI DATI per la gestione dell informazione Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone Libro di Testo 22 Chianese, Moscato, Picariello e Sansone BASI DI DATI per la Gestione dell
Operazioni sui database
Operazioni sui database Le operazioni nel modello relazionale sono essenzialmente di due tipi: Operazioni di modifica della base di dati (update) Interrogazioni della base di dati per il recupero delle
L architettura di un DBMS
L architettura di un DBMS sources: Lucidi del corso di Lucidi del corso di Laboratorio di Basi di dati e sistemi informativi, Montesi, Magnani, Corso di laurea in Informatica per il management, Scienze
Siti web centrati sui dati Architettura MVC-2: i JavaBeans
Siti web centrati sui dati Architettura MVC-2: i JavaBeans 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con
Esercizio data base "Biblioteca"
Rocco Sergi Esercizio data base "Biblioteca" Database 2: Biblioteca Testo dell esercizio Si vuole realizzare una base dati per la gestione di una biblioteca. La base dati conterrà tutte le informazioni
IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI
IL LINGUAGGIO SQL Il linguaggio SQL ( Structured Query Languages) è un linguaggio non procedurale che è diventato uno standard tra i linguaggi per la gestione dei database relazionali. Il linguaggio procedurale
Nella relazione CINEMA, Nome è chiave secondaria. Nella relazione FILM, CodRegista, e CodProtagonista sono chiavi esterne sulla tabella PERSONE.
Si consideri il seguente schema relazionale, relaivo ad una base di dati per gestire la programmazione cinematografica giornaliera in un certo insieme di cinema: CINEMA(CodC, Nome, Indirizzo, Tel, NSale)
PL/SQL PL/SQL. Ordine degli elementi dei triggers di Oracle. Differenze nei triggers. Versione dei trigger e PSM di Oracle
Versione dei trigger e PSM di Oracle Lucidi derivati da quelli di Jeffrey D Ullman Oracle usa una variante di SQL/PSM che si chiama non consente solo di creare e memorizzare procedure e funzioni, ma puo
Informatica Generale Andrea Corradini. 19 - Sistemi di Gestione delle Basi di Dati
Informatica Generale Andrea Corradini 19 - Sistemi di Gestione delle Basi di Dati Sommario Concetti base di Basi di Dati Il modello relazionale Relazioni e operazioni su relazioni Il linguaggio SQL Integrità
CREAZIONE DI UN AZIENDA
CREAZIONE DI UN AZIENDA La creazione di un azienda in Businesspass avviene tramite la funzione Aziende Apertura azienda ; dalla medesima sarà possibile richiamare le aziende precedentemente create per
I comandi del linguaggio DDL (Data Definition Language): CREATE E ALTER
Caratteristiche generali del linguaggio SQL Il linguaggio SQL è il linguaggio usato per la gestione dei database relazionali, cioè dei database creati con un DBMS di tipo relazionale. Esso nacque nella
Il linguaggio SQL: DDL di base
Il linguaggio SQL: DDL di base Sistemi Informativi T Versione elettronica: 04.1.SQL.DDLbase.pdf SQL: caratteristiche generali SQL (Structured Query Language) èil linguaggio standard de facto per DBMS relazionali,
Architettura MVC-2: i JavaBeans
Siti web centrati sui dati Architettura MVC-2: i JavaBeans Alberto Belussi anno accademico 2008/2009 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con
Il DBMS Oracle. Express Edition. Donatella Gubiani e Angelo Montanari
Gubiani & Montanari Il DBMS Oracle 1 Il DBMS Oracle Express Edition Donatella Gubiani e Angelo Montanari Il DBMS Oracle Il DBMS Oracle Oracle 10g Express Edition Il DBMS Oracle (nelle sue versioni più
IL DAT A B A S E DI ALGE B R A N D O
IL DAT A B A S E DI ALGE B R A N D O Un progetto di: Davide Valeriani Matricola 190883 [email protected] Corso di laurea in Ingegneria Informatica Esame di Basi di Dati A Prof. Stefano
ROUTINE E PROGRAMMAZIONE
LEZIONE-TSQL-02 TRIGGER E PROCEDURE (VER03 PAG. 1 / 6 LEZIONE-TSQL-02 TRIGGER E PROCEDURE (VER03 T-SQL PROGRAMMAZIONE PARTE SECONDA ROUTINE E PROGRAMMAZIONE In TSQL è possibile definire alcune routine
Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.
(Structured Query Language) : Il linguaggio è di fatto lo standard tra i linguaggi per la gestione di data base relazionali. prima versione IBM alla fine degli anni '70 per un prototipo di ricerca (System
Database e reti. Piero Gallo Pasquale Sirsi
Database e reti Piero Gallo Pasquale Sirsi Approcci per l interfacciamento Il nostro obiettivo è, ora, quello di individuare i possibili approcci per integrare una base di dati gestita da un in un ambiente
Volumi di riferimento
Simulazione seconda prova Esame di Stato Gestione di un centro agroalimentare all ingrosso Parte prima) Un nuovo centro agroalimentare all'ingrosso intende realizzare una base di dati per l'attività di
Il linguaggio SQL: query innestate
Il linguaggio SQL: query innestate Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLc-subquery.pdf Sistemi Informativi L-A DB di riferimento
Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci
Corso di Laurea Magistrale in Ingegneria per l Ambiente e il Territorio A.A. 2014-2015 Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci Strutture di dati: DB e DBMS DATO E INFORMAZIONE Dato: insieme
Linee guida per la programmazione di transazioni in PL/SQL
Linee guida per la programmazione di transazioni in PL/SQL Giuseppe Berio Giuseppe Berio DI - Unito 1 Esempio La transazione deve registrare l evasione di un ordine, rappresentato su più tabelle specializzate
Domini elementari, 2. Basi di dati. Domini elementari, 4. Domini elementari, 3. Domini definiti dagli utenti. Domini elementari, 5
Domini elementari, Basi di dati Linguaggi di Interrogazione: SQL Prof.Angela Bonifati Bit Valori booleani (vero/falso), singoli o in sequenza (la sequenza può essere di lunghezza variabile) Sintassi: bit
SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)
1 SQL Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS) a.a. 2014/2015 http://www.di.uniba.it/~lisi/courses/basi-dati/bd2014-15.htm dott.ssa Francesca A. Lisi [email protected]
Capitolo 13. Interrogare una base di dati
Capitolo 13 Interrogare una base di dati Il database fisico La ridondanza è una cosa molto, molto, molto brutta Non si devono mai replicare informazioni scrivendole in più posti diversi nel database Per
Capitolo 7. Esercizio 7.1
Capitolo 7 Esercizio 7.1 Dato lo schema relazionale: IMPIEGATO (Nome, Salario, DipNum) DIPARTIMENTO (DipNum, NomeManager) Definire le seguenti regole attive in Oracle e DB2: 1. una regola, che quando il
Lo schema concettuale risultante dalla progettazione concettuale è l input alla fase di progettazione logica.
Progettazione logica Lo schema concettuale risultante dalla progettazione concettuale è l input alla fase di progettazione logica. La progettazione logica è basata su un particolare modello logico dei
MODELLO RELAZIONALE. cesarini-bdsi mod relazionale 1 MODELLO RELAZIONALE
MODELLO RELAZIONALE Definizione di relazione Schema e istanza Chiave Valori nulli Predicati e vincoli di integrità Vincolo di integrità referenziale cesarini-bdsi mod relazionale 1 MODELLO RELAZIONALE
Basi di dati 9 febbraio 2010 Compito A
Basi di dati 9 febbraio 2010 Compito A Domanda 0 (5%) Leggere e rispettare le seguenti regole: Scrivere nome, cognome, matricola (se nota), corso di studio e lettera del compito (ad esempio, A) sui fogli
<?php include './include/page.php';
Il modulo di inserimento Per creare il modulo di inserimento creeremo due file per semplicità: insert.php sarà il file contenente il form dove inserire i dati. Premendo infine il pulsante inserisci si
Basi di dati. Concetti introduttivi ESEMPIO. INSEGNAMENTI Fisica, Analisi, Aule. Docenti. Entità Relazioni Interrogazioni. Ultima modifica: 26/02/2007
Basi di dati Concetti introduttivi Ultima modifica: 26/02/2007 ESEMPIO INSEGNAMENTI Fisica, Analisi, Informatica Aule Docenti Entità Relazioni Interrogazioni St udent i Database 2 Tabella (I) STUDENTE
Corso di Basi di Dati A.A. 2014/2015
Corso di Laurea in Ingegneria Gestionale Sapienza - Università di Roma Corso di Basi di Dati A.A. 2014/2015 Esercitazione su Progettazione Logica Tiziana Catarci, Andrea Marrella Ultimo aggiornamento :
Raggruppamenti Conti Movimenti
ESERCITAZIONE PIANO DEI CONTI Vogliamo creare un programma che ci permetta di gestire, in un DB, il Piano dei conti di un azienda. Nel corso della gestione d esercizio, si potranno registrare gli articoli
MySQL Database Management System
MySQL Database Management System http://www.mysql.com/ DATABASE RELAZIONALI Un database è una collezione strutturata di informazioni. I database sono delle strutture nelle quali è possibile memorizzare
2.0 Gli archivi. 2.1 Inserire gli archivi. 2.2 Archivio Clienti, Fornitori, Materiali, Noleggi ed Altri Costi. Impresa Edile Guida all uso
2.0 Gli archivi All interno della sezione archivi sono inserite le anagrafiche. In pratica si stratta di tutti quei dati che ricorreranno costantemente all interno dei documenti. 2.1 Inserire gli archivi
SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:
SQL SQL (pronunciato anche come l inglese sequel: acronimo di Structured Query Language (linguaggio di interrogazione strutturato Linguaggio completo che presenta anche proprietà di: DDL (Data Definition
Introduzione alla teoria dei database relazionali. Come progettare un database
Introduzione alla teoria dei database relazionali Come progettare un database La struttura delle relazioni Dopo la prima fase di individuazione concettuale delle entità e degli attributi è necessario passare
Gestione Turni. Introduzione
Gestione Turni Introduzione La gestione dei turni di lavoro si rende necessaria quando, per garantire la continuità del servizio di una determinata struttura, è necessario che tutto il personale afferente
CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS
CONTENUTI: CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS Creazione database vuoto Creazione tabella Inserimento dati A) Creazione di un database vuoto Avviamo il programma Microsoft Access. Dal menu
E-mail: [email protected]. Gestione Filtri. InfoBusiness 2.8 Gestione Filtri Pag. 1/ 11
Gestione Filtri InfoBusiness 2.8 Gestione Filtri Pag. 1/ 11 INDICE Indice...2 1. GESTIONE DEI FILTRI...3 1.1. Filtri fissi...3 1.2. Filtro parametrico...5 1.3. Funzione di ricerca...6 2. CONTESTI IN CUI
Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26
Uso delle variabili di alias SQL slide aggiuntive Laurea magistrale in Scienze della mente Laurea magistrale in Psicologia dello sviluppo e dell'educazione educazione Non solo per disambiguare la notazione
BASE DI DATI: sicurezza. Informatica febbraio 2015 5ASA
BASE DI DATI: sicurezza Informatica febbraio 2015 5ASA Argomenti Privatezza o riservatezza Vincoli di integrità logica della base di dati intrarelazionali interrelazionali Principio generale sulla sicurezza
Corso Sistemi Informativi Avanzati. Programma 30 set 2015. Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende.
Programma 30 set 205 Installazione Macchina Virtuale Introduzione alla BI nelle Aziende Introduzione SQL Macchina Virtuale È un emulazione di un computer su un altro computer Stesso punto di partenza per
Progettazione di Basi di Dati
Progettazione di Basi di Dati Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan Entità-Relazione Progettazione Logica 2 E il modo attraverso il quale i dati sono rappresentati : fa riferimento al modello
Oracle PL/SQL. Motivazioni
Oracle PLSQL Motivazioni Supponiamo che nella gestione del database Azienda ci venga chiesto di apportare le modifiche necessarie a far sì che ad ogni impiegato possa essere assegnato, alla fine di ogni
Fasi del ciclo di vita del software (riassunto) Progetto: generalità. Progetto e realizzazione (riassunto)
Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Sede di Latina Laurea in Ingegneria dell Informazione Fasi del ciclo di vita del software (riassunto) Corso di PROGETTAZIONE DEL SOFTWARE
Database. Si ringrazia Marco Bertini per le slides
Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida
Archivi e database. Prof. Michele Batocchi A.S. 2013/2014
Archivi e database Prof. Michele Batocchi A.S. 2013/2014 Introduzione L esigenza di archiviare (conservare documenti, immagini, ricordi, ecc.) è un attività senza tempo che è insita nell animo umano Primi
Il Modello Relazionale
Il Modello Relazionale Basi di dati 1 Il Modello Relazionale Angelo Montanari Dipartimento di Matematica e Informatica Università di Udine Il Modello Relazionale Basi di dati 2 Introduzione Il modello
Informativa sulla privacy
Informativa sulla privacy Data di inizio validità: 1 Maggio 2013 La presente informativa sulla privacy descrive il trattamento dei dati personali immessi o raccolti sui siti nei quali la stessa è pubblicata.
Le query. Lezione 6 a cura di Maria Novella Mosciatti
Lezione 6 a cura di Maria Novella Mosciatti Le query Le query sono oggetti del DB che consentono di visualizzare, modificare e analizzare i dati in modi diversi. Si possono utilizzare query come origine
Dispensa di database Access
Dispensa di database Access Indice: Database come tabelle; fogli di lavoro e tabelle...2 Database con più tabelle; relazioni tra tabelle...2 Motore di database, complessità di un database; concetto di
CONCETTO DI ANNIDAMENTO
LEZIONE14 SQL ANNIDAMENTI PAG. 1 / 5 PROF. ANDREA ZOCCHEDDU LEZIONE14 SQL ANNIDAMENTI CONCETTO DI ANNIDAMENTO LINGUAGGIO SQL QUERY ANNIDATE Per annidamento si intende la possibilità che, all interno di
Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL
Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone SQL: il DDL Parti del linguaggio SQL Definizione di basi di dati (Data Definition Language DDL) Linguaggio per modificare
Progetto di Applicazioni Software
Progetto di Applicazioni Software Antonella Poggi Dipartimento di Informatica e Sistemistica Antonio Ruberti SAPIENZA Università di Roma Anno Accademico 2010/2011 I lucidi del corso sono stati prodotti
SQL Server 2005. Integration Services. SQL Server 2005: ETL - 1. Integration Services Project
atabase and ata Mi ni ng Group of P ol itecnico di Torino atabase and ata Mi ni ng Group of P ol itecnico di Torino atabase and data mining group, SQL Server 2005 Integration Services SQL Server 2005:
