La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Vincoli interrelazionali Vincoli di integrità referenziale In SQL si usa il vincolo di foreign key (chiave esterna) per creare un legame fra i valori di.

Presentazioni simili


Presentazione sul tema: "Vincoli interrelazionali Vincoli di integrità referenziale In SQL si usa il vincolo di foreign key (chiave esterna) per creare un legame fra i valori di."— Transcript della presentazione:

1 Vincoli interrelazionali Vincoli di integrità referenziale In SQL si usa il vincolo di foreign key (chiave esterna) per creare un legame fra i valori di un attributo della tabella corrente (interna) e un attributo di un’altra tabella (esterna). Si impone che per ogni riga della tabella interna il valore dell’attributo sia presente nel corrispondente attributo della tabella esterna. L’attributo della tabella esterna deve essere unique. Se l’attributo è unico allora si usa references. Altrimenti si usa foreign key.

2 Vincoli interrelazionali Es. create table Impiegato ( Matricolacharacter(6) primary key, Nomecharacter(20) not null, Cognome character(20) not null, Dipartcharacter(15) references Dipartimento(NomeDip), Stipendionumeric(9) default 0, unique (Cognome, Nome), foreign key(Nome, Cognome) references Anagrafica(Nome,Cognome) )

3 Vincoli Interrelazionali Per i vincoli visti l’inserimento di un valore che li viola viene semplicemente impedito. In caso di vincoli di integrità referenziale, quando la violazione avviene per un cambiamento apportato alla tabella esterna, si hanno diverse possibili reazioni associabili al comando di aggiornamento che causa l’inconsistenza. Modifica (comando update ): cascade il nuovo valore dell’attributo della tabella esterna viene riportato su tutte le corrispondenti righe della tabella interna. set null all’attributo referente viene assegnato il valore nullo. set default all’attributo referente viene assegnato il valore di default. no action la modifica non viene consentita.

4 Vincoli Interrelazionali Cancellazione (comando delete ): cascade tutte le corrispondenti righe della tabella interna vengono cancellate. set null all’attributo referente viene assegnato il valore nullo. set default all’attributo referente viene assegnato il valore di default. no action la cancellazione non viene consentita. Per applicare una delle politiche: on subito dopo la specifica del riferimento

5 Modifica degli schemi E’ possibile modificare gli schemi con i comandi alter e drop. alter consente di modificare domini e schemi di tabelle. alter domain NomeDominio < set default ValDefault | drop default | add constraint DefVincolo | drop constraint NomeVincolo >

6 Modifica degli Schemi alter table NomeTabella < alter column NomeAttributo < set default NuovoDefault | drop default >| add constraint DefVincolo | drop constraint NomeVincolo | add column NomeAttributo | drop column NomeAttributo > NB Quando si inserisce un nuovo vincolo, questo deve essere soddisfatto dai dati già presenti

7 Modifica degli Schemi Il comando drop permette di rimuovere dei componenti drop NomeElemento [ restrict | cascade ] restrict specifica di non eseguire il comando in presenza di oggetti non vuoti. cascade implica che gli oggetti specificati vengano rimossi. Inoltre vengono rimossi tutti gli oggetti da essi dipendenti. Quindi, ATTENZIONE!!!!

8 Interrogazioni Le interrogazioni in SQL sono formulate in modo dichiarativo specificando cioè cosa si vuole ottenere e non come lo si vuole ottenere. L’interrogazione viene passata all’ottimizzatore di interrogazioni (query optimizer) che fa parte del DBMS. Questo la analizza e la traduce nel linguaggio di interrogazione interno al DBMS. Per questo chi programma in SQL deve cercare di scrivere codice leggibile e facilmente modificabile, piuttosto che efficiente.

9 Interrogazioni L’istruzione base per le interrogazioni è select select ListaAttributi (target list) from ListaTabelle (clausola from ) [ where Condizione ] (clausola where ) Più in dettaglio: select AttrEspr [[as] Alias ]{, AttrEspr [[as] Alias ]} from Tabella [[as] Alias ]{, Tabella [[as] Alias ]} [ where Condizione ] Seleziona le righe che soddisfano la condizione where fra quelle appartenenti al prodotto cartesiano delle tabelle in ListaTabelle. Ogni colonna (tabella) può essere ridenominata con un alias.

10 Interrogazioni Es. Data una base di dati che contiene le tabelle: IMPIEGATO(Nome, Cognome, Dipart, Ufficio, Stipendio, Città) DIPARTIMENTO(Nome, Indirizzo,Città) select Stipendio/12 as SalarioMensile from Impiegato where Cognome = `Rossi` Il risultato è una tabella con una colonna rinominata SalarioMensile e tante righe quanti sono gli impiegati che si chiamano Rossi. Se si usa * dopo select si selezionano tutti gli attributi

11 NomeEtà Persone Reddito Andrea27 Maria55 Anna50 Filippo26 Luigi50 Franco60 Olga30 Sergio85 Luisa75 Aldo Madre Maternità Figlio Luisa Anna Maria Luisa Maria Olga Filippo Andrea Aldo Luigi Padre Paternità Figlio Luigi Franco Sergio Olga Filippo Andrea Aldo Franco

12 Selezione e proiezione Nome e reddito delle persone con meno di trenta anni PROJ Nome, Reddito ( SEL Eta<30 (Persone)) select nome, reddito from persone where eta < 30 select p.nome as nome, p.reddito as reddito from persone p where p.eta < 30

13 Interrogazioni su più tabelle Se si vogliono estrarre informazioni da più tabelle, si pone come argomento della clausola from una lista delle tabelle. Se si deve formulare un join, è possibile farlo esplicitando il collegamento fra le due tabelle nella clausola where. Es. Estrarre i nomi degli impiegati e le città dove lavorano. select Impiegato.Nome, Impiegato.Cognome, Dipartimento.Città from Impiegato, Dipartimento where Impiegato.Dipart = Dipartimento.Nome Attenzione: specificare una lista di tabelle nella clausola from senza specificare anche una condizione di join nella clausola where equivale ad eseguire la query sul prodotto cartesiano delle tabelle riportate nella lista!


Scaricare ppt "Vincoli interrelazionali Vincoli di integrità referenziale In SQL si usa il vincolo di foreign key (chiave esterna) per creare un legame fra i valori di."

Presentazioni simili


Annunci Google