Esercitazione
Transcript
Esercitazione
'8,QJHJQHULD,QIRUPDWLFD %DVLGL'DWL, (VHUFLWD]LRQL Sonia Bergamaschi ([email protected]) Maurizio Vincini ([email protected]) Esercizio: spettacoli estivi Si vogliono rappresentare informazioni relative alla gestione di manifestazioni artistiche durante l’estate. Una manifestazione, descritta da un codice e da un nome, consiste di due o più spettacoli; ogni spettacolo è descritto da un numero univoco all’interno della manifestazione nella quale è inserito e dall’ora di inizio. Durante uno spettacolo si esibiscono uno o più artisti (un’artista si può esibire al massimo una volta durante lo stesso spettacolo) ricevendo un certo compenso. Un’artista è descritto dal codice SIAE e dal nome d’arte. Per ogni artista si deve indicare necessariamente un altro artista che lo sostituisca in caso di indisponibilità; un’artista può essere indicato come sostituto di più artisti. Per ospitare gli spettacoli vengono adibiti opportuni luoghi; inoltre, in una certa data, un luogo può ospitare al massimo tre spettacoli, sia della stessa manifestazione che di manifestazioni differenti. Si disegni il modello concettuale del dominio descritto utilizzando il formalismo E/R. Basi di Dati 2 Determinazione concetti fondamentali Entità MANIFESTAZIONE: SPETTACOLO ARTISTA LUOGO Associazioni CONSISTE OSPITA ESIBIZIONE Associazione binaria MANIFESTAZIONE- SPETTACOLO Associazione binaria SPETTACOLO-LUOGO Associazione binaria ARTISTA-SPETTACOLO Basi di Dati 3 Schema Scheletro MANIFEST. SPETTACOLO CONSISTE ESIBIZIONE OSPITA ARTISTA LUOGO Basi di Dati 4 SVILUPPO ASSOCIAZIONE MANIFESTAZIONE-SPETTACOLO Numero Codice Ora-inizio Nome CONSISTE MANIFEST. (2,N) (1,1) SPETTACOLO • Una manifestazione consiste di 2 o più spettacoli; card(MANIFEST.,CONSISTE) = (2,N) • ogni spettacolo è descritto da un numero univoco all’interno della manifestazione nella quale è inserito. card(SPETTACOLO,CONSISTE) = (1,1) Basi di Dati 5 SVILUPPO ASSOCIAZIONE SPETTACOLO-LUOGO (NON CORRETTA) Numero Nome Ora-inizio Indirizzo OSPITA SPETTACOLO (0,3) (1,1) LUOGO • Per ospitare gli spettacoli vengono adibiti opportuni luoghi; inoltre, in una certa data, un luogo può ospitare al massimo 3 spettacoli, sia della stessa manifestazione che di manifestazioni differenti. • In questo modo si vincola un luogo ad ospitare in tutto tre spettacoli, mentre questo è valido solo per una certa data Basi di Dati 6 SVILUPPO ASSOCIAZIONE SPETTACOLO-LUOGO (CORRETTA) Si introduce una nuova entità DISPONIBILITA’ che indica la disponibilita in un certo luogo di ospitare in una certa data uno spettacolo. Numero Ora-inizio SPETTACOLO (1,1) Nome Indirizzo OSPITA (0,3) LUOGO (0,N) HA (1,1) Basi di Dati DISPONIBILITA’ Data 7 SVILUPPO ASSOCIAZIONE SPETTACOLO-ARTISTA Codice-SIAE Nome-arte Numero Ora-inizio SPETTACOLO Compenso (1,N) (0,N) ARTISTA ESIBIZIONE Durante uno spettacolo si esibiscono uno o più artisti (un’artista si può esibire al massimo una volta durante lo stesso spettacolo) ricevendo un certo compenso. card(SPETTACOLO,ESIBIZIONE) = (1,N) card(ARTISTA,ESIBIZIONE) = (0,N) Basi di Dati 8 SVILUPPO ASSOCIAZIONE UNARIA ARTISTA-ARTISTA Codice-SIAE Sostituito Nome-arte (1,1) SOSTITUISCE ARTISTA Sostituto (0,N) Per ogni artista si deve indicare necessariamente un altro artista che lo sostituisca in caso di indisponibilità; un’artista può essere indicato come sostituto di più artisti. card(ARTISTA,SOSTITUITO) = (1,1) card(ARTISTA,SOSTITUTO) = (0,N) Basi di Dati 9 SCHEMA E/R Codice Numero Nome Compenso CONSISTE Ora-inizio MANIFEST. (2,N) (1,1) SPETTACOLO (1,N) ESIBIZIONE (1,1) codice-SIAE nome-arte Nome (0,N) OSPITA Indirizzo (0,3) LUOGO (0,N) HA (1,1) DISPONIBILITA’ (1,1) (1,1) ARTISTA Sostituito Sostituto (0,N) SOSTIT. Data Basi di Dati 10 MANIFESTAZIONE(Codice, Nome) LUOGO(Nome, Indirizzo) SPETTACOLO(codManif, Numero, OraInizio, NomeLuogo, DataDisp) FK: codManif REFERENCES MANIFESTAZIONE FK: NomeLuogo, DataDisp REFERENCES DISPONIBILITA’ ESIBIZIONE(codManif, NumSpettacolo, CodiceSIAE, Compenso) FK: codManif, NumSpettacolo REFERENCES SPETTACOLO FK: CodiceSIAE REFERENCES ARTISTA DISPONIBILITA’(NomeLuogo, Data) FK: NomeLuogo REFERENCES LUOGO ARTISTA(CodiceSIAE, NomeArte, CodiceSIAESostituto) FK: CodiceSIAESostituto REFERENCES ARTISTA Basi di Dati 11 Esercizio: il giardino zoologico Si vuole automatizzare il sistema di gestione degli animali in uno zoo. Ogni esemplare di animale ospitato è identificato dal suo genere e da un codice unico all’interno del genere di appartenenza. Per ogni esemplare si memorizzano la data di arrivo allo zoo, il nome proprio, il sesso, il paese di provenienza e la data di nascita. Lo zoo è diviso in aree; in ogni area c’è un insieme di case, ognuna destinata ad un diverso genere di animali. Ogni casa contiene un insieme di gabbie, ognuna contenente un solo esemplare. Ogni casa ha un solo addetto che pulisce ciascuna gabbia in un determinato giorno della settimana. Gli animali sono sottoposti periodicamente a controllo veterinario; in un controllo, un veterinario rileva il peso di un esemplare, diagnostica un’eventuale malattia e prescrive il tipo di dieta da seguire. Si disegni il modello concettuale del dominio descritto utilizzando il formalismo E/R. Basi di Dati 12 PAESE (1,1) peso dieta malattia (0,1) CONTROLLO (1,N) (0,N) di sottoposto a (1,1) nome appartiene ESEMPL. sesso veterinario data (1,1) (0,N) nome GENERE codArea (1,N) dataArrivo (1,1) ospitato in codEsempl. dataNascita in AREA (1,1) (1,1) (1,N) (1,1) in CASA (1,1) (1,1) GABBIA (1,N) afferisce pulita da (1,N) giornoPulizia posizione ADDETTO Basi di Dati codAddetto 13 GENERE(nome) AREA(CodArea) CONTROLLO(data, CodEsemplare, NomeGenere, peso, dieta, malattia,veterinario) FK: CodEsemplare, NomeGenere REFERENCES ESEMPLARE ADDETTO(codAddetto) CASA(CodArea, NomeGenere, codAddetto) FK: CodArea REFERENCES AREA FK: NomeGenere REFERENCES GENERE FK: codAddetto REFERENCES ADDETTO PAESE(Paese) ESEMPLARE(CodEsemplare, NomeGenere, Nome, Sesso, DataArrivo, DataNascita, PosizGabbia,Paese) AK: PosizGabbia FK: PosizGabbia REFERENCES GABBIA FK: NomeGenere REFERENCES GENERE FK: Paese REFERENCES PAESE GABBIA(Posizione,GiornoPulizia, NomeGenere, CodArea) FK: NomeGenere, CodArea REFERENCES CASA Basi di Dati 14 Esercizio: i progetti di ricerca Il Consiglio Nazionale delle Ricerche vuole memorizzare dati sui progetti di ricerca secondo le seguenti specifiche. Ogni progetto ha un codice, un nome, l’anno al quale è relativo, una durata. Ogni progetto di ricerca fa riferimento ad una o più discipline: per ognuno di questi riferimenti occorre riportare da due a quattro parole chiave. Le discipline sono raggruppate in settori: ogni disciplina è identificata da un codice univoco all’interno del settore di appartenenza ed ha una descrizione; un settore ha un nome (univoco) ed un comitato. Ogni progetto di ricerca ha un coordinatore scientifico che è un ricercatore; d’altra parte un ricercatore può essere coordinato in uno ed un solo progetto. Ad ogni progetto di ricerca partecipano da 1 a 8 ricercatori e per ciascuno di essi viene specificato il numero di mesi uomo e il costo orario; in un certo anno un ricercatore può partecipare al massimo a 2 progetti di ricerca. Basi di Dati 15 SCHEMA E/R Basi di Dati 16 RICERCATORE(CF,Nome) PROGETTO(Codice, anno, durata, nome, CFCoord) AK: cfcoord FK: CFCoord REFERENCES RICERCATORE DISPONIILITA’-ANNUA(Anno, CFRic) FK: CFRic REFERENCES RICERCATORE PARTECIPA(Anno, CFRic, CodicePrg, mesi, Costo-Orario) FK: CFRic, Anno REFERENCES DISPONIILITA’-ANNUA FK: CodicePrg REFERENCES PROGETTO SETTORE(Nome, Comitato) DISCIPLINA(Codice, NomeSettore, Descrizione) FK: NomeSettore REFERENCES SETTORE PAROLECHIAVE(CodicePrg, NomeSettore, CodiceDisc, ParoleChiave) FK: CodicePrg REFERENCES PROGETTO FK: NomeSettore, CodiceDisc REFERENCES DISCIPLINA Basi di Dati 17 Esercizio: il supermercato Si vogliono rappresentare informazioni relative alle offerte ed agli sconti praticati da una cooperativa di vendita ai propri soci. La cooperativa è costituita da un certo numero di centri di vendita, descritti da un codice e dal rispettivo indirizzo; i centri di vendita sono suddivisi in ipermarket , caratterizzati dal numero delle casse, e minimarket, caratterizzati dal numero dei reparti.In una certa data, un socio (descritto dal codice fiscale, dal nome e dal telefono) sottoscrive l'iscrizione alla cooperativa, in un preciso centro di vendita. I prodotti venduti nei centri di vendita sono caratterizzati da un codice, dal prezzo e da un descrizione. I minimarket offrono alcuni prodotti scontati di una certa percentuale; per un dato prodotto, la percentuale di sconto varia da minimarket a minimarket e da mese a mese. La cooperativa effettua delle offerte che possono essere ritirate dai soci nei vari supermarket; un’offerta è descritta da un codice, dal prezzo e dal periodo di validità ed è costituita da uno o più prodotti, in una determinata quantità. Occorre memorizzare l’ipermarket in cui un socio ritira eventualmente una certa offerta (tale supermarket non è necessariamente il punto vendita in cui il socio ha sottoscritto l'iscrizione); un socio non può usufruire due volte della stessa offerta. Infine, occorre memorizzare, per ogni ipermarket , le dieci offerte più vendute con il relativo numero di vendite. Basi di Dati 18 CF NOME TELEF SOCIO COD-NEG NEGOZIO ISCRITTO (1,N) (1,1) INDIRIZZO (0,N) (t,e) DATA USA DATA (1,1) IPER IN USO-OFFER (1,1) MINI (0,N) (1,1) (0,N) (0,10) N-CASSE N-REPARTI USATA TOTALE (0,N) COD-OFF VALIDITÀ PREZZO TOPTEN OFFERTA MESE (0,N) (1,N) CONTIENE QUANTITÀ COD-PROD (0,N) PRODOTTO DESCRIZIONE %SCONTO SCONTO (0,N) MESE (0,N) PREZZO Basi di Dati 19 negozio(cod-neg,indirizzo) iper(cod-neg,num-casse) FK: cod-neg REFERENCES negozio mini(cod-neg, num-reparti) FK: cod-neg REFERENCES negozio socio(CF,nome,telefono,cod-neg,data-iscr) FK: cod-neg REFERENCES negozio offerta(cod-off,validità,prezzo) contiene(cod-off,cod-prod,quantità) FK: cod-off REFERENCES offerta FK: cod-prod REFERENCES prodotto uso-offerta(cf-socio,cod-off, cod-neg,data) FK: cf-socio REFERENCES socio FK: cod-off REFERENCES offerta FK: cod-neg REFERENCES iper prodotto(cod-prod,descrizione,prezzo) sconto(mese,cod-prod,cod-neg, %sconto) FK: cod-prod REFERENCES prodotto FK: cod-neg REFERENCES mini topten(cod-neg,cod-off,totale) FK: cod-off REFERENCES offerta FK: cod-neg REFERENCES iper Basi di Dati 20 Esercizio Dato il seguente schema E/R si individuino le dipendenze funzionali e si disegni uno schema E/R alternativo che non utilizzi associazioni ternarie codCliente numero Prenotazione CLIENTE (0,N) (0,N) POSTO pagato (0,N) RAPPRESENT. Basi di Dati titolo 21 Uno stesso posto non può essere prenotato due volte per la stessa rappresentazione RAPPRESENTAZIONE, POSTO CLENTE titolo RAPPRESENT. (0,N) PER codCliente (1,1) posto CLIENTE PRENOTAZION. FA (0,N) (1,1) Basi di Dati pagato 22 Dato il seguente schema E/R si individui le dipendenze funzionali e si disegni uno schema E/R alternativo che non utilizzi associazioni ternarie codMedico codPaziente Appuntamento MEDICO (0,N) (0,N) PAZIENTE ambulatorio (0,N) ORARIO Basi datadi Dati ora 23 Né un medico né un paziente possono avere due appuntamenti contemporaneamente MEDICO, ORARIO PAZIENTE PAZIENTE, ORARIO MEDICO codPaziente PAZIENTE (0,N) CON codMedico (1,1) ora MEDICO APPUNTAMENTO HA (0,N) (1,1) Basi di Dati data 24 ambulatorio Esercizio: noleggio CD Si vuole automatizzare la gestione di un noleggio di compact disk e videocassette. Per ogni compact disk si vuole memorizzare, oltre al titolo, all’autore e al genere musicale, anche il titolo e la durata di ogni canzone; esistono dischi doppi che possono essere noleggiati solo insieme. Non interessa memorizzare informazioni su autori di cui non sono presenti opere. Per ogni videocassetta si memorizzano il titolo, il regista, il genere, la durata e i due attori principali (se si tratta di un film). Si tenga presente che, sia per i compact disk sia per le videocassette, possono essere disponibili più copie dello stesso titolo. Per ogni copia interessa memorizzare la posizione nel magazzino (la codifica è unica per compact disk e videocassette) e, in caso di noleggio, il numero di tessera del cliente (la tessera ha durata annuale) e la data di effettuazione del prestito. La durata di un prestito è di 3 giorni. Non interessa mantenere un archivio storico dei prestiti. Ad un cliente possono essere dati in prestito più titoli; un nuovo prestito viene rifiutato se risulta che il cliente non ha ancora restituito un prestito scaduto. Per ogni cliente si memorizzano nome, cognome, indirizzo e numero di documento. Ogni noleggio effettuato dà diritto ad un ‘punto’; al raggiungimento di 20 punti, il cliente viene omaggiato di un noleggio. Basi di Dati 25 Presente In codOpera titolo genere (1,N) OPERA autore (1,1) COPIA posizione (0,1) (t,e) Prestata a CD VHS (1,N) doppio regista Interpretato da (1,1) (0,N) durata (0,2) contiene data CLIENTE (1,1) nome cognome indirizzo n. documento Possiede (1,N) (1,1) CANZONE ATTORE TESSERA titolo durata nome cognome Basi di Dati scadenza punti numero 26 TESSERE(numTessera, scadenzaTess, puntiTess) CLIENTI(numTessera, nome, cognome, indirizzo, numDoc) FK: numTessera REFERENCES TESSERE OPERE(codOpera, titolo, genere) CD(codOpera, doppio, autore) FK: codOpera REFERENCES OPERE VHS(codOpera, regista, durata, primoAttore, secondoAttore) FK: codOpera REFERENCES OPERE CANZONI(titoloCanz, codOpera, durata) FK: codOpera REFERENCES CD COPIE(posizione, codOpera) FK: codOpera REFERENCES OPERE PRESTITI(posizioneCopia, numTessera, data) FK: posizioneCopia REFERENCES COPIE FK: numTessera REFERENCES CLIENTI Basi di Dati 27 TESSERE(numTessera, scadenzaTess, puntiTess) CLIENTI(numTessera, nome, cognome, indirizzo, numDoc) FK: numTessera REFERENCES TESSERE CD(codOpera, titolo, genere ,doppio, autore) VHS(codOpera, titolo, genere, regista, durata, primoAttore, secondoAttore) CANZONI(titoloCanz, codOpera, durata) FK: codOpera REFERENCES CD COPIE(posizione, codOpera, tipoOpera) codOpera = PRESTITI(posizioneCopia, numTessera, data) FK: posizioneCopia REFERENCES COPIE FK: numTessera REFERENCES CLIENTI Basi di Dati 28 Esercizio: Allevamento di lepri Si vogliono rappresentare informazioni relative ad un allevamento di lepri. Di una lepre, identificata da un codice, occorre rappresentare il peso e l’età. Le lepri vengono mensilmente sottoposte a visite veterinarie: per ciascuna visita occorre riportare la lepre, il medico veterinario (rappresentato dagli usuali dati anagrafici) che l’ha sostenuta ed il risultato della visita. Per la riproduzione delle lepri vengono formate delle coppie costituite da una femmina e da un maschio: tali coppie non vengono mai cambiate, cioè una femmina resta accoppiata sempre allo stesso maschio e viceversa. Dalle varie coppie occorre tenere traccia di eventuali parti, memorizzandone la data, il veterinario che ha assistito il parto e la lepri nate da tale parto con il rispettivo peso al momento della nascita. Basi di Dati 29 Cod. Età Peso LEPRE (t,e) FEMMINA (0,N) MASCHIO (0,1) (0,1) F (1,1) COPPIA (1,1) M Risultato (0,N) VISITA (0,N) Mese (0,N) (1,1) DI MESE Peso (1,1) data VETRINARIO (0,N) PARTO ASSISTE CF (1,1) (0,N) NASCITA dati Basi di Dati 30 Esercizio Dato il seguente schema E/R si individui le dipendenze funzionali e si disegni uno schema E/R alternativo che non utilizzi associazioni ternarie codListino codProdotto quota LISTINO (1,N) (1,N) PRODOTTO prezzo (0,N) VALUTA Basi di Dati tipo 31 Non esistono dipendenze funzionali oltre a quella, banale, LISINO, PRODOTTO, VALUTA prezzo codProdotto PRODOTTO (1,N) DI codListino (1,1) tipoValuta LISTINO QUOTAZIONE (1,N) (1,1) CONTIENE Basi di Dati 32 prezzo Esercizio di progettazione relazionale Discutere il progetto logico relazionale dello schema E/R codPj titolo anno (1,1) coordinato (o,n) da Progetto codPr nome professore (t,e) (1,1) strategico (o,n) area di sviluppo finalizzato riguarda fondi codA Basi di Dati 33 1° soluzione: collasso sulla superentità PROG(CodProg, titolo, anno, sel, fondi, codProf, codArea) FK: codProf REFERENCES PROFESSORE FK: codArea REFERENCES AREA PROFESSORE(codProf,nome) AREA(codArea) Basi di Dati 34 2° soluzione: collasso verso il basso PROG_STRAT(CodProg, titolo, anno, codProf, fondi) FK: codProf REFERENCES PROFESSORE PROG_FIN(CodProg, titolo, anno, codProf, codArea) FK: codArea REFERENCES AREA PROFESSORE(codProf,nome) AREA(codArea) Basi di Dati 35 3° soluzione: trasformazione tramite associazioni PROG (CodProg, titolo, anno, codProf) FK: codProf REFERENCES PROFESSORE PROG_STRAT(CodProg, fondi) FK: CodProg REFERENCES PROG PROG_FIN(CodProg, codArea) FK: CodProg REFERENCES PROG FK: codArea REFERENCES AREA PROFESSORE(codProf,nome) AREA(codArea) Basi di Dati 36 DOCENTE(CFDOC, NOME COGNOME) STUDENTE(CFSTUD,NOME,COGNOME) ARGOMENTO(CODARG, DESCRIZIONE) LEZIONE(CODARG, DATA, CFDOC, NUMSTUDENTI) AK: DATA, CFDOC FK: CODARG REFERENCES ARGOMENTO FK: CFDOC REFERENCES DOCENTE INTERROGAZIONE(CODARG, DATA, CFSTUD, VOTO) FK: CODARG,DATA REFERENCES LEZIONE FK: CFSTUD REFERENCES STUDENTE Selezionare il codice fiscale, il nome e il cognome degli studenti che non sono mai stati interrogati su un argomento con descrizione ‘Fisica’; Selezionare il codice fiscale del docente che ha svolto lezioni su tutti gli argomenti con descrizione ‘Fisica’; Selezionare il codice fiscale del docente che ha sempre interrogato, cioè che durante ogni sua lezione ha fatto almeno una interrogazione. Basi di Dati 37 CICLISTA (NOMECICLISTA, NAZIONALITA’, ETA’) GARA(NOMECORSA, ANNO, PARTENZA, ARRIVO) Edizione di un certo anno della corsa NOMECORSA; PARTENZA ARRIVO Sono le città di partenza e di arrivo. PARTECIPA(NOMECORSA, ANNO, NOMECICLISTA, POSIZIONE) FK: NOMECORSA,ANNO REFERENCES GARA FK: NOMECICLISTA REFERENCES CICLISTA NOMECICLISTA ha partecipato alla gara (NOMECORSA,ANNO) classificandosi in una certa POSIZIONE o ritirandosi (POSIZIONE=‘R’) selezionare i ciclisti che si sono classificati in prima posizione in una gara ciclistica partita da Milano; selezionare il nome dei ciclisti che non si sono mai ritirati al Giro (corsa con nome Giro); selezionare le corse per le quali in ogni edizione c’è stato almeno un ritirato; Basi di Dati 38 Nome Cognome Studente Matricola Codice Indirizzo Nome Corso (0,N) (0,N) Sostiene Del Esame (1,1) (1,1) Codice Voto Esito Studente (Matricola,Nome,Cognome,Indirizzo) Corso (Codice,Nome) Esame (Codice,Voto,Esito,MatrStud,IDCorso) FK: MatrStud REFERENCES Studente FK: IDCorso REFERENCES Corso Basi di Dati 39 CREATE TABLE STUDENTE (Matricola INT CONSTRAINT Chiave PRIMARY KEY, Nome Char (20) NOT NULL, Cognome Char (30) NOT NULL, Indirizzo Char (50) NOT NULL); CREATE TABLE CORSO (Codice SMALLINT, Nome Char(30) Not Null, CONSTRAINT Chiave PRIMARY KEY (Codice)); CREATE TABLE ESAME (Codice INT, Voto SMALLINT NOT NULL, Esito LOGICAL NOT NULL, MatrStud INT, IDCorso SMALLINT, CONSTRAINT Chiave PRIMARY KEY (Codice) CONSTRAINT FK1 FOREIGN KEY (MatrStud) REFERENCES Studente (Matricola), CONSTRAINT FK2 FOREIGN KEY (IDCorso) REFERENCES Corso (Codice)); ALTER TABLE CORSO ADD Docente CHAR(25) Basi di Dati 40 Esercizio: Azienda Informatica Il sistema informativo di una impresa che opera nel settore dell'informatica memorizza dati sui dipendenti e i loro curriculum nell'impresa, secondo le seguenti specifiche. I dipendenti hanno un nome, un cognome, una età e un codice fiscale. Sono divisi in programmatori, analisti e manager. Per i programmatori, occorre memorizzare il linguaggio di programmazione conosciuto; per gli analisti, il linguaggio concettuale conosciuto; per i manager, il nome del referente esterno per la programmazione. Programmatori e analisti seguono corsi, gli analisti almeno uno e i programmatori uno solo. I corsi hanno un titolo (univoco), una durata, e una data d'inizio. Un corso può essere propedeutico a più corsi, ma può avere solo un corso propedeutico a esso. I dipendenti lavorano a progetti (almeno uno e più di uno in generale), che sono identificati da un obiettivo e hanno uno stanziamento. Si chiede di realizzare il progetto concettuale del database secondo il modello ER, la traduzione in schema relazionale, la creazione del database con istruzioni SQL. Basi di Dati 41 Progetto Concettuale Basi di Dati 42 Progetto Concettuale semplificato Basi di Dati 43 Progetto logico: generazione dello schema relazionale DIP(CF,Nome,Cognome,Eta,Sel,Ling,Ling-conc,Ref) PROG(Obiettivo,Stanz) CORSO(Tit,Dur,D-inizio,Prop) FK: Prop REFERENCES CORSO(Tit) P-SEGUE(Dip,Corso) FK: Dip REFERENCES DIP(CF) FK: Corso REFERENCES CORSO(Tit) A-SEGUE(Dip, Corso) FK: Dip REFERENCES DIP(CF) FK: Corso REFERENCES CORSO(Tit) LAV(Dip, Prog) FK: Dip REFERENCES DIP(CF) FK: Prog REFERENCES PROG(Obiettivo) Basi di Dati 44 Scrivere le seguenti Query in SQL : 1) I corsi seguiti dai programmatori. 2) I dipendenti che hanno partecipato a un progetto con stanziamento > 1000. 3) I corsi propedeutici ai corsi seguiti da un analista dato. 1) SELECT DISTINCT Tit, Dur, [D-inizio], Prop FROM CORSO, [P-SEGUE] WHERE CORSO.Tit = [P-SEGUE].Corso; 2) SELECT DISTINCT D.CF, D.Nome, D.Cognome FROM PROG P, DIP D, LAV L WHERE D.CF = L.Dip AND P.Obiettivo = L.Prog AND P.Stanz >1000; Basi di Dati 45 3) SELECT DISTINCT C.Prop FROM CORSO C WHERE C.Tit IN (SELECT A.Corso FROM [A-SEGUE] A WHERE A.Dip = [valore] ) AND C.Prop IS NOT NULL ; Basi di Dati 46