Compito A Tempo a disposizione un'oa e tenta minuti. Libi chiusi. Consideae una elazione RèA; B; C; D; Eè. Indicae quali delle seguenti poiezioni hanno cetamente lo stesso numeo di ennuple di R: 1. ç ABCD èrè SçI 2. ç AC èrè NO 3. ç BC èrè SçI 4. ç C èrè NO 5. ç CD èrè NO Consideae le elazioni R1èA;B;Cè e R2èD;E;Fè aventi ispettivamente cadinalitça n1 e n2. Assumee che sia deænito un vincolo di integitça efeenziale fa l'attibuto C di R1 e la chiave D di R2. Indicae la cadinalitça di ciascuno dei seguenti join èindicando l'intevallo nel quale essa puço vaiaeè 1. R1.èA=D R 2 compesa fa 0 e il minimo fa n1 e n2 2. R1.èC=D R 2 esattamente n1 3. R1.èA=F R 2 compesa fa 0 e n2 4. R1.èB=E R 2 compesa fa 0 e n1 æ n2 EsamièStudente,Mateia,Voto,Dataè 1. Fomulae in algeba elazionale l'inteogazione che tova maticola, cognome e nome degli studenti che hanno peso almeno un 30: ç Maticola;Cognome;Nome èstudenti.èmaticola=studenteç Voto=30 èesamièè 2. Fomulae in SQL l'inteogazione che mosta, pe ogni studente, maticola, cognome e media dei voti ipotati negli esami supeati: SELECT Maticola, Cognome, AVGèVotoè AS Media FROM Studenti, Esami WERE Maticola = Studente GROUP BY Maticola, Cognome 3. Fomulae in SQL l'inteogazione che tova gli studenti èmostae il numeo di maticolaè che hanno supeato almeno due esami dopo il 1è1è2000: SELECT DISTINCT e1.studente fom Esami e1, Esami e2 whee e1. Studente = e2. Studente AND e1.data é '2000-01-01' AND e2.data é '2000-01-01' AND e1.mateia!= e2.mateia oppue SELECT Studente FROM Esami WERE Data é '2000-01-01' GROUP BY Studente AVING COUNTè*è é 1 oppue SELECT S.MATRICOLA FROM STUDENTI S WERE 1 é èselect COUNTè*è FROM ESAMI WERE MATRICOLA = STUDENTE AND Data é '2000-01-01'è 4. Scivee un fammento di pogamma in SQL immeso in un linguaggio èo pseudolinguaggioè di pogammazione che stampi un elenco degli studenti ècon maticola, cognome e nomeè con, pe ciascuno, l'elenco degli esami supeati. Gli studenti debbono essee odinati pe maticola e gli
esami pe data. Assumee che ciascuno studente abbia supeato almeno un esame, ma commentae bevemente come si potebbe tattae il caso in cui vi siano studenti che non hanno supeato esami. Indichiamo in cosivo istuzioni non speciæcate esplicitamente supponiamo deænite nel pogamma le vaiabili: vmaticolapec, vmaticola, vcognome, vnome, vmateia, vvoto, vdata EXEC SQL declae StudEs cuso fo SELECT Maticola, Cognome, Nome, Mateia, Voto, Data FROM Studenti JOIN Esami ON èmaticola = Studenteè ORDER BY Maticola, Data ; EXEC SQL open StudEs; EXEC SQL fetch StudEs into :vmaticola, :vcognome, :vnome, :vmateia, :vvoto, :vdata ; if èsqlcode == 0èí stampa di vmaticola vcognome vnome stampa di vmateia vvoto vdata vmaticolapec = vmaticola ; EXEC SQL fetch StudEs into :vmaticola, :vcognome, :vnome, :vmateia, :vvoto, :vdata ; while èsqlcode == 0è í if ívmaticola!= vmaticolapecíí stampa di vmaticola vcognome vnome vmaticolapec = vmaticola ; í ; stampa di vmateia vvoto vdata EXEC SQL fetch StudEs into :vmaticola, :vcognome, :vnome, :vmateia, :vvoto, :vdata ; í í $ close cuso StudEs; Pe includee anche gli studenti che non hanno supeato esami si puço utilizzae un oute join èsinistoè, supponendo che il linguaggio di pogammazione sia in gado di iconoscee oppotunamente il valoe nullo.
Domanda 4 è30èè Deænie uno schema Entity-Relationship che desciva i dati di una applicazione elativa all'achivio di un amministatoe di condomini, secondo le seguenti speciæche èsempliæcate ispetto a molte ealtçaè. æ Ogni condominio ha un nome èche lo identiæcaè e un indiizzo e compende un insieme di appatamenti agguppati pe ëscale". æ Ogni scala çe identiæcata da un codice e dal condominio di appatenenza. æ Ogni appatamento çe identiæcato, nel ispettivo condominio, dalla scala e da un numeo èl'ëinteno"è. Ad ogni appatamento sono associati i ëmillesimi" èche indicano la fazione di condominio che çe di popietça del popietaio dell'appatamentoè e un popietaio ed un inquilino èche possono coincideeè, ciascuno con codice æscale, cognome e nome. Indicae le cadinalitça delle elazioni e un identiæcatoe pe ciascuna entitça. b ' b ' b Nome Indiizzo Codice Inteno Condominio æ æ æ æ Scala æ ææ Appatamento bmillesimi æ æ Pop æ æ Inquil CodiceFiscale Pesona bcognome bnome
Compito B Tempo a disposizione un'oa e tenta minuti. Libi chiusi. EsamièStudente,Mateia,Voto,Dataè 1. Fomulae in SQL l'inteogazione che tova maticola, cognome e nome degli studenti che hanno peso almeno un 30: SELECT DISTINCT Maticola, Cognome, Nome FROM Studenti, Esami WERE Maticola = Studente AND Voto = 30 oppue SELECT DISTINCT Maticola, Cognome, Nome FROM Studenti JOIN Esami ON Maticola = Studente WERE Voto = 30 2. Fomulae in SQL l'inteogazione che mosta, pe ogni studente, maticola, cognome e numeo di esami supeati. SELECT Maticola, Cognome, COUNTè*è AS NumeoEsami FROM Studenti JOIN Esami ON Maticola = Studente GROUP BY Maticola, Cognome 3. Fomulae in algeba elazionale l'inteogazione che tova gli studenti èmostae il numeo di maticolaè che hanno supeato almeno due esami dopo il 1è1è2000. ç Studente èç Dataé1 =1 =2000^Data 0 é1 =1 =2000^MateiaééMateia 0 èesami.èstudente=studente 0èç Studente 0 ;Mateia 0 ;Data 0 ;Voto 0 èstudente;mateia;data;voto èesamièèèè 4. Simile a quella del compito A ècambia solo il citeio di odinamentoè.
Domanda 4 è30èè Deænie uno schema Entity-Relationship che desciva i dati di una applicazione elativa ai listini pezzi di un insieme di case automobilistiche. Sono di inteesse: æ Le case poduttici, con nome èidentiæcanteè e indiizzo. æ I modelli èad esempio la Punto o la Golfè, con nome, anno di lancio e segmento di mecato ècodiæcato con una lettea e con una beve descizione: ad esempio, al segmento ëa" coisponde la descizione ëutilitaia"è. Il nome identiæca univocamente insieme alla casa costuttice. æ Le vesioni dei modelli, identiæcate attaveso il nome della casa, quello del modello e un nome speciæco èad esempio la Fiat Punto 75Sè. Pe ogni vesione sono ilevanti il pezzo, il motoe, la cilindata, la potenza, il numeo di pote e la velocitça massima. Ogni vesione di modello ha uno ed un solo motoe. æ I motoi èad esempio il motoe Fie 1000è, identiæcati attaveso un codice e con le seguenti popietça: cilindata, numeo cilindi e potenza. Possono esistee motoi èattualmenteè non uilizzati in alcun modello. Indicae le cadinalitça delle elazioni e un identiæcatoe pe ciascuna entitça. b ' b b ' b Nome Indiizzo Nome Anno Nome Casa æ æ æ æ Modello æ ææ Vesione bpezzo bpote bvelocitça æ ææ Segmento Codice bdescizione æ ææ Motoe Codice bcilindata bcilindi bpotenza
Compito C Tempo a disposizione un'oa e tenta minuti. Libi chiusi. Vedi compito A ècambia solo l'odine delle isposteè. Vedi compito A ècambia solo l'odine delle isposteè. EsamièStudente,Mateia,Voto,Dataè 1. Fomulae in algeba elazionale l'inteogazione che tova maticola, cognome e nome degli studenti che hanno supeato almeno un esame dopo il 1è1è2000. ç Maticola;Cognome;Nome èstudenti.èmaticola=studenteç Dataé1 =1 =2000 èesamièè 2. Vedi compito A. 3. Fomulae in SQL l'inteogazione che tova gli studenti èmostae il numeo di maticolaè che hanno peso almeno due 30. SELECT DISTINCT e1.studente fom Esami e1, Esami e2 whee e1. Studente = e2. Studente AND e1.voto = 30 AND e2.voto = 30 AND e1.mateia!= e2.mateia 4. Simile a quella del compito A ècambia solo il citeio di odinamentoè. Domanda 4 è30èè Vedi compito A.
Compito D Tempo a disposizione un'oa e tenta minuti. Libi chiusi. EsamièStudente,Mateia,Voto,Dataè 1. Fomulae in SQL l'inteogazione che tova maticola, cognome e nome degli studenti che hanno supeato almeno un esame dopo il 1è1è2000: SELECT DISTINCT Maticola, Cognome, Nome FROM Studenti, Esami WERE Maticola = Studente AND Data é '2000-01-01' 2. Vedi compito B. 3. Fomulae in algeba elazionale l'inteogazione che tova gli studenti èmostae il numeo di maticolaè che hanno peso almeno due 30. ç Studente èç Voto=30^Voto 0 =30^MateiaééMateia 0 èesami.èstudente=studente 0èç Studente 0 ;Mateia 0 ;Data 0 ;Voto 0 èstudente;mateia;data;voto èesamièèèè 4. Simile a quella del compito A ècambia solo il citeio di odinamentoè. Domanda 4 è30èè Vedi compito B.