exemen 2008-2009.pdf
TRANSCRIPT
-
Conservatoire National des Arts et Mtiers292 Rue St Martin 75141 Paris Cedex 03
Informatique - CNAM, Paris
Bases de donnes relationnellesNFP 107 et NFP 107J
Exercices dirigsC. Crochepeyre, M. Ferecatu, P. Rigaux, V. Thion et N. Travers
Solutions
2 mai 2011
-
Chapitre 1
Conception
1.1 Interprtation de schmas entit/association
1.1.1 Centre mdical
On vous donne un schmas E/A (figure 1.1) reprsentant des visites dans un centre mdical. Rpondez auxquestions suivantes en fonction des caractristiques de ce schma (i.e. : indiquez si la situation dcrite estreprsentable, indpendamment de sa vraissemblance).
MedecinMatriculeNom
PrescritNb prises
CodeLibelle
Medicament
NoDate
Consultation
Assiste
0,n
Donne
1,1
1,n
1,1
No SSNom
Patient
0,n
0,n
FIGURE 1.1 Centre mdical
Exercice A : Un patient peut-il effectuer plusieurs visites ?Exercice B : Un mdecin peut-il recevoir plusieurs patients dans la mme consultation ?Exercice C : Peut-on prescrire plusieurs mdicaments dans une mme consultation ?Exercice D : Deux mdecins diffrents peuvent-ils prescrire le mme mdicament ?
Solution :
NFP 107 et 107J - Exercices dirigs
-
1.1. INTERPRTATION DE SCHMAS ENTIT/ASSOCIATION CHAPITRE 1. CONCEPTION
1. Bien sr.2. Non (un patient par consultation).3. Oui.4. Oui (pas de rapport entre un mdecin et une consultation).
1.1.2 Tournoi de tennis
Le second schma (figure 1.2) reprsente des rencontres dans un tournoi de tennis.
Joueur
Match
TerrainNoSurface
Se joue surParticipe
No carteNom
2,2
0,n
0,n
No
0,n
1,1
ScoreGagne
Horaire
1,1
FIGURE 1.2 Tournoi de tennis
Exercice A : Peut-on jouer des matchs de double ?Exercice B : Un joueur peut-il gagner un match sans y avoir particip ?Exercice C : Peut-il y avoir deux matchs sur le mme terrain la mme heure ?
Solution :
1. Non (cardinalit 2,2)2. Oui (pas de lien participe / Gagne)3. Oui (pas de contrainte sur lhoraire entre 2 matchs)
1.1.3 Un journal
Pour vous entraner : voici le schma E/A (figure 1.3 du systme dinformation (trs simplifi) dun quotidien.
Exercice A : Un article peut-il tre rdig par plusieurs journalistes ?Exercice B : Un article peut-il tre publi plusieurs fois dans le mme numro ?
NFP 107 et 107J - Exercices dirigs
-
1.1. INTERPRTATION DE SCHMAS ENTIT/ASSOCIATION CHAPITRE 1. CONCEPTION
Redige
SUJETIDLibelle
IDNomPrenomNation.
PERSONNALITE
Relatif a
Parait dans
IDTitreAdresse
JOURNAL
IDDate
NUMERO
A travaille pour
Interview
IDARTICLE
IDJOURNALISTE
Nom
Contenu
Date naiss.
1,n1,n
1,n
1,n
1,n
0,n
1,n1,1
0,n
1,1
FIGURE 1.3 Journal
NFP 107 et 107J - Exercices dirigs
-
1.2. MODLE RELATIONNEL (RAPPEL CYCLE A) CHAPITRE 1. CONCEPTION
Exercice C : Peut-il y avoir plusieurs articles sur le mme sujet dans le mme numro ?
Solution :
1. Non (1,1)2. Non (lien unique)3. Oui (pas de lien dunicit numro / sujet)
1.2 Modle relationnel (rappel cycle A)Exercice A : Pour chacun des schmas E/A donns prcdemment, construire le schma relationnel cor-
respondant. Indiquez prcisment : La cl primaire. Les cls trangres. Les contraintes ventuelles.
Solution :Exemple pour le centre mdical : Mdicament (Code, Libell) Consultation (ID-consultation, Matricule, No-SS, Date). Matricule et No-SS sont les cls tran-
gres Prescription (Code-mdicament, ID-consultation, Nb-prises) Mdecin (Matricule, Nom) Patient (No-SS, Nom)Exemple pour le tournoi de tennis : Joueur(No-carte, Nom) Terrain(No-terrain, Surface) Match(No-match, Horaire, No-participant1, No-participant2, No-gagnant, Score, No-terrain).
No-participant1, No-participant2, No-gagnant et No-terrain sont cls trangres.Exemple pour le journal : Journal(IDJournal, titre, adresse) Journaliste (IDJournaliste, Nom , DateNaissance) Personnalite (IDPersonnalite, Nom, Prnom, Nationalite) Interview (IDJournaliste, IDPersonnalite) Article (IDArticle, IDJournaliste, IDSujet, Contenu) Sujet (IDSujet, Libelle) Numro (IDNumero, Date) ParaitDans (IDArticle, IDNumro) Travail (IDJournaliste, IDJournal)
Exercice B : Donnez la commande Create Table pour les tables Consultation etMatch.
Solution :Exemple pour la table Consultation :Create Table Consultation
(Id-consultation NUMBER(10),Matricule NUMBER(10),NO-SS NUMBER(10),Date-consultation DATE,PRIMARY KEY (Id-consultation),FOREIGN KEY Matricule REFERENCESMdecin,FOREIGN KEY NO-SS REFERENCES Patient)
NFP 107 et 107J - Exercices dirigs
-
1.3. RTRO-CONCEPTION CHAPITRE 1. CONCEPTION
1.3 Rtro-conception
On trouve dans un SGBD relationnel les relations ci-dessous. Les cls primaires sont soulignes, mais pasles cls trangres.
IMMEUBLE (Adresse, Nb-tages, Date-construction, Nom-Grant)APPART (Adresse, Numro, Type, Superficie, Etage)PERSONNE (Nom, Age, Code-Profession)OCCUPANT (Adresse, Numro-Appart, Nom-Occupant, Date-arrive, Date-dpart)PROPRIT (Adresse, Nom-Propritaire, Quote-part)TYPE-APPART (Code, Libell)PROFESSION (Code, Libell)
Exercice A : Identifier les cls trangres dans chaque relation.Exercice B : Reconstruire le schma E/A.Exercice C : Existe-t-il des contraintes dintgrit ? Lesquelles ?Exercice D : Certaines donnes du schma relationnel rsultent-elles doptimisation ?
NFP 107 et 107J - Exercices dirigs
-
Chapitre 2
Algbre Relationelle
2.1 Slection et Projection
Soit la relation
PERSONNENom Age VilleMarc 29 Paris
Catherine 32 LyonSophie 54 ParisClaude 13 MontpellierSerge 40 Lyon
Exercice A : Donnez les rsultats des requtes suivantes :Requte 1 : Age=30(PERSONNE) (slection)Requte 2 : Age(PERSONNE) (projection)Requte 3 : Age(Nom=Serge(PERSONNE)) (projection, slection)
Exercice B : Exprimez les requtes suivantes en algbre relationnelle :Requte 1 : les personnes (nom, ge, ville) qui habitent Paris.
Solution :V ille=Paris(PERSONNE)
Requte 2 : les personnes (nom, ge, ville) qui ont moins de 30 ans.
Solution :Age
-
2.2. JOINTURE RELATIONNELLE CHAPITRE 2. ALGBRE RELATIONELLE
2.2 Jointure relationnelleExercice A : Soient R et S les relations
RA Ba ba fc bd e
SB Cb ce ab dg b
o les attributs A, B, C sont dfinis sur les domaines des lettres de lalphabet.Donnez le rsultat des requtes suivantes :Requte 1 : R S (jointure naturelle).Requte 2 : A=C(B/B(R) S) (qui-jointure).Requte 3 : R< S = R(R S) (semijoin).
Solution :
R S
A B Ca b ca b dc b cc b dd e a
A=C(B/B(R) S)A B B Ca b e aa f e ac b b cd e b d
R< S
A Ba bc bd e
Exercice B : Est-ce que les quations suivantes sont vraies ?
A,B(R S) = R (2.1)B,C(R S) = S (2.2)
Solution :NON :
A,B(R S)A Ba bc bd e
B,C(R S)B Cb cb de a
2.3 Auto-Jointure et Renommage
Soit T(A,B) une relation o A et B prennent leurs valeurs dans le mme domaine. Supposons quon veuilleconstruire une relation TS contenant les seuls n-uplets < a, b > tels que < b, a > est galement un n-uplet de T.Par exemple :
NFP 107 et 107J - Exercices dirigs
-
2.3. AUTO-JOINTURE ET RENOMMAGE CHAPITRE 2. ALGBRE RELATIONELLE
TA Ba ba cc ac db ae f
TSA Ba ba cc ab a
Exprimez cette opration par une expression de lalgbre relationnelle.
Solution :
Solution 1 :1. On fait une copie de T dans S(A,B) S := T2. On renomme lattribut A en A1 et B en B1 S := A/A1,B/B1(S)3. S a maintenant pour schma S(A1, B1)4. Le rsultat est TS = T
-
Chapitre 3
Algbre - SQL : Employs - Dpartements
3.1 Schma
Les exemples suivants sont tirs des sources de la socit Oracle.
3.1.1 Relation des Employs (EMP)
EMP(ENO, ENOM, PROF, DATEEMB, SAL, COMM, DNO)
ENO : numro demploy, clENOM : nom de lemployPROF : profession (directeur nest pas une profession)DATEEMB : date dembaucheSAL : salaireCOMM : commission (un employ peut ne pas avoir de commission)DNO : numro de dpartement auquel appartient lemploy
3.1.2 Relation des Dpartements (DEPT)
DEPT(DNO, DNOM, DIR, VILLE)
DNO : numro de dpartement, clDNOM : nom du dpartementDIR : directeur du dpartementVILLE : lieu du dpartement (ville)
3.2 Oprations Algbriques
Soit lexemple suivant :
NFP 107 et 107J - Exercices dirigs
-
3.2. OPRATIONS ALGBRIQUES CHAPITRE 3. ALGBRE - SQL : EMPLOYS - DPARTEMENTS
EMP
ENO ENOM PROF DATEEMB SAL COMM DNO10 Joe Ingnieur 1.10.93 4000 3000 320 Jack Technicien 1.5.88 3000 2000 230 Jim Vendeur 1.3.80 5000 5000 140 Lucy Ingnieur 1.3.80 5000 5000 3
DEPT
DNO DNOM DIR VILLE1 Commercial 30 New York2 Production 20 Houston3 Dveloppement 40 Boston
Exercice A : Calculer sal
-
3.3. REQUTES CHAPITRE 3. ALGBRE - SQL : EMPLOYS - DPARTEMENTS
Exercice F : Idem pour la liste des noms des employs qui travaillent New York.
Solution :
ENOM (EMP (V ILLE=NewY ork(DEPT )))
Exercice G : Idem pour avoir le nom du directeur du dpartement Commercial.
Solution :
ENOM (EMP ENO=DIR DIR(DNOM=Commercial(DEPT )))
3.3 Requtes Exprimer les requtes Q1 Q18 laide de lalgbre relationnelle. Exprimer en SQL les requtes Q1 Q24.
3.3.1 Interrogation dune seule Relation
Requte 1 : Donner tous les n-uplets de DEPT.
Solution :Algbre : DEPTSQL :
SELECT * FROM DEPT;Requte 2 : Donner tous les n-uplets de EMP.
Solution :Algbre : EMPSQL :
SELECT * FROM EMP;Requte 3 : Donner les noms et les salaires des employs.
Solution :Algbre : ENOM,SAL(EMP )SQL :
SELECT ENOM, SALFROM EMP;
Requte 4 : Donner les professions des employs (aprs limination des duplicats).
Solution :Algbre : PROF (EMP )SQL :
SELECT DISTINCT PROFFROM EMP;
Requte 5 : Donner les dates dembauche des techniciens.
Solution :Algbre : DATEEMB(PROF=TECHNICIEN (EMP ))SQL :
SELECT DATEEMBFROM EMPWHERE PROF=TECHNICIEN;
NFP 107 et 107J - Exercices dirigs
-
3.3. REQUTES CHAPITRE 3. ALGBRE - SQL : EMPLOYS - DPARTEMENTS
3.3.2 Jointures
Requte 6 : Faire le produit cartsien entre EMP et DEPT.
Solution :Algbre : EMP DEPTSQL :
SELECT *FROM EMP, DEPT;
Requte 7 : Donner les noms des employs et les noms de leur dpartement.
Solution :Algbre : ENOM,DNOM (EMP DEPT )SQL :
SELECT ENOM, DNOMFROM EMP, DEPTWHERE EMP.DNO=DEPT.DNO;
Requte 8 : Donner les numros des employs travaillant BOSTON.
Solution :Algbre : ENO(EMP V ILLE=BOSTON (DEPT ))SQL :
SELECT ENOFROM EMP, DEPTWHERE EMP.DNO=DEPT.DNO AND VILLE=BOSTON;
Requte 9 : Donner les noms des directeurs des dpartements 1 et 3. Attention : directeur nest pas uneprofession !
Solution :Algbre : ENOM (DNO=1DNO=3(DEPT ) DIR=ENO EMP )SQL :
SELECT ENOMFROM EMP, DEPTWHERE (DEPT.DNO=1 OR DEPT.DNO=3) AND DIR = ENO;
ouSELECT ENOMFROM EMP, DEPTWHERE DEPT.DNO IN (1,3) AND DIR = ENO;
Requte 10 : Donner les noms des employs travaillant dans un dpartement avec au moins un ingnieur.
Solution :Algbre :
R1 := DNO(PROF=INGENIEUR(EMP ))R2 := ENOM (EMP R1)
SQL :SELECT E2.ENOMFROM EMP E1, EMP E2
WHERE E1.DNO = E2.DNOAND E1.PROF = INGNIEUR;
NFP 107 et 107J - Exercices dirigs
-
3.3. REQUTES CHAPITRE 3. ALGBRE - SQL : EMPLOYS - DPARTEMENTS
Requte 11 : Donner le salaire et le nom des employs gagnant plus quun (au moins un) ingnieur.
Solution :Algbre :
R1 := SAL/SAL1(SAL(PROF=INGENIEUR(EMP )))R2 := ENOM,SAL(EMP SAL>SAL1 R1)
SQL :SELECT E1.ENOM, E1.SALFROM EMP E1, EMP E2
WHERE E2.PROF=INGENIEURAND E1.SAL > E2.SAL;
ou
SELECT ENOM, SAL FROM EMPWHERE SAL > ANY (SELECT SAL
FROM EMPWHERE PROF=INGENIEUR);
Requte 12 : Donner le salaire et le nom des employs gagnant plus que tous les ingnieurs.
Solution :SQL :SELECT ENOM, SAL FROM EMP
WHERE SAL > ALL (SELECT SALFROM EMPWHERE PROF=INGENIEUR);
Requte 13 : Donner les noms des employs et les noms de leurs directeurs.
Solution :Algbre :
R1 := ENOM/DIRNOM (ENOM,DNO(EMP ENO=DIR DEPT ))R2 := ENOM,DNOEMPR3 := ENOM,DIRNOM (R1 R2)
R1(DIRNOM,DNO) : les dpartements avec les noms de leur directeur R2(ENOM,DNO) : les employs avec les numros de leur dpartement R3(ENOM,DIRNOM) : les employs (ENOM) avec les noms de leur directeurSQL :
SELECT E1.ENOM, E2.ENOMFROM EMP E1, EMP E2, DEPT D
WHERE E1.DNO=D.DNO AND E2.ENO = D.DIR;
Requte 14 : Trouver les noms des employs ayant le mme directeur que JIM. Attention : un employpeut tre directeur de plusieurs dpartements.
Solution :Algbre :
R1 := DIR(ENOM=JIM (EMP ) DEPT )R2 := DEPT R1R3 := ENOM (ENOMJIM (EMP ) R2)
R1(DIR) : le numro du directeur de JIM
NFP 107 et 107J - Exercices dirigs
-
3.3. REQUTES CHAPITRE 3. ALGBRE - SQL : EMPLOYS - DPARTEMENTS
R2(...) : les dpartements avec le mme directeur R3(ENOM) : les noms des employs ayant le mme directeur que JIM.SQL :
SELECT ENOMFROM EMP
WHERE ENOM JIMAND DNO IN (SELECT D2.DNO
FROM EMP,DEPT D1, DEPT D2
WHERE ENOM=JIMAND D1.DNO = EMP.DNOAND D1.DIR = D2.DIR);
Requte 15 : Donner le nom et la date dembauche des employs embauchs avant leur directeur ; donnergalement le nom et la date dembauche de leur directeur.
Solution :Algbre :
R1 := DNO,ENOM,DATEEMB(EMP DIR=ENO DEPT )R2 := ENOM/DIRNOM,DATEEMB/DIRDATE(R1)R3 := ENOM,DATEEMB,DIRNOM,DIRDATE(DIRDATE
-
3.3. REQUTES CHAPITRE 3. ALGBRE - SQL : EMPLOYS - DPARTEMENTS
AND D2.DNOM=PRODUCTIONAND E1.DATEEMB=E2.DATEEMB
ou
SELECT ENOMFROM EMP, DEPT
WHERE EMP.DNO=DEPT.DNOAND DNOM=COMMERCIALAND DATEEMB IN (SELECT DATEEMB
FROM EMP, DEPTWHERE EMP.DNO=DEPT.DNO
AND DNOM=PRODUCTION);Requte 18 : Donner les noms des employs embauchs avant tous les employs du dpartement 1.
Solution :Algbre :
R1 := DATEEMB/DATE1(DATEEMB(DNO=1(EMP )))R2 := ENOM (EMP (EMP =DATE1 R1))
SQL :SELECT ENOMFROM EMP
WHERE DATEEMB < ALL (SELECT DATEEMBFROM EMP
WHERE DNO=1);Requte 19 : Donner les noms des employs ayant le mme emploi et le mme directeur que JOE.
Solution :Algbre :
R1 := DIR,PROF (ENOM=JOE(EMP ) DEPT )R2 := ENOM ((EMP DEPT ) R1)
R1(DIR,PROF) : le directeur de Joe et sa profession R2(ENOM) : rsultatSQL :
SELECT ENOMFROM EMP, DEPT
WHERE ENOM JOEAND EMP.DNO = DEPT.DNOAND (PROF, DIR) = (SELECT PROF, DIR
FROM EMP, DEPTWHERE ENOM=JOE
AND EMP.DNO = DEPT.DNO);
3.3.3 Valeurs Nulles, Tris, Groupes, Agrgats et Expressions
Requte 20 : Donner la liste des employs ayant une commission.
Solution :
SELECT *FROM EMP
WHERE COMM IS NOT NULL;
NFP 107 et 107J - Exercices dirigs
-
3.3. REQUTES CHAPITRE 3. ALGBRE - SQL : EMPLOYS - DPARTEMENTS
Requte 21 : Donner les noms, emplois et salaires des employs par emploi croissant et, pour chaqueemploi, par salaire dcroissant.
Solution :
SELECT ENOM, PROF, SALFROM EMP
ORDER BY PROF ASC, SAL DESC;
Requte 22 : Donner le salaire moyen des employs.
Solution :
SELECT AVG(SAL) AS SALAIRE MOYENFROM EMP;
Requte 23 : Donner le nombre demploys du dpartement PRODUCTION.
Solution :
SELECT COUNT(EMP.*)FROM EMP, DEPT
WHERE EMP.DNO = DEPT.DNOAND DEPT.DNOM = PRODUCTION;
Requte 24 : Les numros de dpartement et leur salaire maximum ?
Solution :
SELECT DNO, MAX(SAL)FROM EMP
GROUP BY DNO;
Requte 25 : Donner les noms des employs ayant le salaire maximum de chaque dpartement.
Solution :
SELECT ENOMFROM EMP
WHERE (DNO, SAL) IN (SELECT DNO, MAX(SAL)FROM EMPGROUP BY DNO);
ou
SELECT ENOMFROM EMP E
WHERE SAL = (SELECT MAX(SAL)FROM EMP F
WHERE F.DNO = E.DNO);
Requte 26 : Les professions et leur salaire moyen ?
Solution :
SELECT PROF, AVG(SAL)FROM EMP
GROUP BY PROF;
NFP 107 et 107J - Exercices dirigs
-
3.3. REQUTES CHAPITRE 3. ALGBRE - SQL : EMPLOYS - DPARTEMENTS
Requte 27 : Le salaire moyen le plus bas (par profession) ?
Solution :
SELECT MIN(AVG(SAL))FROM EMP
GROUP BY PROF;
Requte 28 : Donner les emplois ayant le salaire moyen le plus bas ; donnez aussi leur salaire moyen.
Solution :
SELECT PROF, AVG(SAL)FROM EMP
GROUP BY PROFHAVING AVG(SAL) = (SELECT MIN(AVG(SAL))
FROM EMPGROUP BY PROF);
NFP 107 et 107J - Exercices dirigs
-
Chapitre 4
Algbre - SQL : Appartements - coles
4.1 Schma
IMMEUBLE (ADI, NBETAGES, DATEC, PROP)APPIM (ADI, NAPR, OCCUP, TYPE, SUPER, ETAGE)PERSONNE (NOM, AGE, PROF, ADR, NAPR)COLE (NOMEC, ADEC, NBCLASSES, DIR)CLASSE (NOMEC, NCL, MAITRE, NBEL)ENFANT (NOMP, PRENOM, AN, NOMEC, NCL)
avec la signification suivante :
1. Relation IMMEUBLEADI : adresse dimmeuble, cl ; on fait lhypothse pour simplifier, que ladresse identifie de manire unique un
immeubleNBETAGES : nombre dtages dun immeubleDATEC : date de constructionPROP : nom du propritaire de limmeuble qui est une personne
2. Relation APPIM (Appartement)ADI : adresse dimmeubleNAPR : numro dappartementOCCUP : occupant de lappartement (nom de la personne)TYPE : type de lappartement (Studio, F2, . . .)SUPER : superficie de lappartementETAGE : tage o se situe lappartement
3. Relation PERSONNE
NOM : nom de personne, cl ; on fait lhypothse pour simplifier, que ce nom est unique sur lensemble despersonnes que lon considre dans la base
AGE : ge de la personnePROF : profession de la personne (directeur dcole nest pas une profession)ADR : adresse de la rsidence dune personne, il sagit dun immeuble
NFP 107 et 107J - Exercices dirigs
-
4.2. REQUTES CHAPITRE 4. ALGBRE - SQL : APPARTEMENTS - COLES
NAPR : numro dappartement
4. Relation COLE
NOMEC : nom dune cole, clADEC : adresse dune coleNBCLASSES : nombre de classesDIR : nom du directeur
5. Relation CLASSE
NOMEC : nom dune coleNCL : nom de la classe, e.g., CP1, CE2, CE3, etc...MAITRE : nom de linstituteurNBEL : nombre dlves dans la classe
6. Relation ENFANT
NOMP : nom de la personne responsable de lenfant, cl e.g., pre, mre etc...PRENOM : prnom de lenfantAN : anne de naissanceNOMEC : nom dune coleNCL : nom de la classe
La relation IMMEUBLE dcrit un ensemble dimmeubles. Chaque immeuble a un propritaire. La relationAPPIM dcrit pour chaque immeuble lensemble des appartements qui le compose. Chaque appartement peuthberger plusieurs personnes mais il y en a une qui est responsable (par exemple le locataire) et qui est dsignepar le constituant OCCUP. Si lappartement est inoccup, ce constituant prend la valeur NULL. La relationPERSONNE dcrit un ensemble de personnes. ADR et NAPR reprsentent ladresse o rside une personne.Une personne peut avoir plusieurs enfants dcrits par la relation ENFANT. Pour simplifier, on ne considre queles enfants allant lcole primaire. Les coles et les classes sont dcrites dans les relations COLE etCLASSE.On suppose ici que toutes ces relations vrifient les contraintes dintgrit de base. Par exemple,une personnerpertorie dans la relation CLASSE en tant que matre exerce bien la profession dinstituteur dans la relationPERSONNE. De mme, un directeur dcole est un instituteur.
4.2 Requtes
Exprimer les requtes suivantes laide de lalgbre relationnelle, puis les traduire en SQL.
Requte 1 : Donner ladresse des immeubles ayant plus de 10 tages et construits avant 1970.
Solution :
ADI(NBETAGES>10DATEC 10 AND DATEC < 1970
NFP 107 et 107J - Exercices dirigs
-
4.2. REQUTES CHAPITRE 4. ALGBRE - SQL : APPARTEMENTS - COLES
Requte 2 : Donner les noms des personnes qui habitent dans un immeuble dont ils sont propritaires(occupants et habitants).
Solution :
NOM (PERSONNE NOM=PROPADR=ADI IMMEUBLE)
SELECT NOMFROM PERSONNE, IMMEUBLEWHERE NOM = PROP AND ADR = ADI
Requte 3 : Donner les noms des personnes qui ne sont pas propritaires.
Solution :
NOM (PERSONNE) PROP/NOM (PROP (IMMEUBLE))SELECT NOMFROM PERSONNE
MINUSSELECT PROPFROM IMMEUBLE
ouSELECT NOMFROM PERSONNEWHERE NOM NOT IN (SELECT PROP
FROM IMMEUBLE)
Requte 4 : Donner les adresses des immeubles possds par des informaticiens dont lge est infrieur 40 ans.
Solution :
R1 := AGE
-
4.2. REQUTES CHAPITRE 4. ALGBRE - SQL : APPARTEMENTS - COLES
Requte 6 : Donner le nom et la profession des propritaires dimmeubles o il y a des appartementsvides.
Solution :
R1 := ADI,NAPR(APPIM OCCUP=NOM PERSONNE)R2 := ADI,NAPR APPIM R1R3 := NOM,PROF (PERSONNE NOM=PROP (IMMEUBLE R2))
R1(ADI,NAPR) : adresses et numros dappartement occups R2(ADI,NAPR) : adresses et numros dappartement vides R3(NOM,PROF) : nom et profession des propritaires dimmeubles avec des appartements videsAvec valeur nulle :
SELECT DISTINCT P.NOM, P.PROFFROM APPIM A, IMMEUBLE I, PERSONNE P
WHERE P.NOM = I.PROP AND I.ADI = A.ADIAND A.OCCUP IS NULL
Sans valeurs nulles :SELECT DISTINCT P.NOM, P.PROF
FROM APPIM A, IMMEUBLE I, PERSONNE PWHERE P.NOM = I.PROP
AND I.ADI = A.ADIAND NOT EXISTS (SELECT *
FROM PERSONNE OWHERE O.ADR = I.ADI
AND O.NAPR = A.NAPR)
Requte 7 : Donner les noms des matres qui habitent dans le mme immeuble ( la mme adresse) quaumoins un de leurs lves (on suppose que les enfants vivent sous le mme toit que leur responsable).
Solution :
R1 := ADR,NOMEC,NCL,MAITRE(PERSONNE MAITRE=NOM CLASSE)R2 := ADR,NOMEC,NCL(PERSONNE NOMP=NOM ENFANT )R3 := MAITRE(R1 R2)
R1(. . .) : adresses des matres, coles, classes et matres R2(. . .) : adresses des lves, coles, classes R3(MAITRE) : rsultatou :
R1 := ADR,MAITRE(PERSONNE NOMP=NOM (ENFANT CLASSE))R2 := MAITRE(NOM=MAITRE(R1 PERSONNE))
R1(ADR,MAITRE) : adresses des enfants et leurs matres R2(MAITRE) : rsultat
SELECT DISTINCT M.NOMFROM CLASSE C, PERSONNE M,
ENFANT E, PERSONNE RWHERE C.MAITRE = M.NOM
NFP 107 et 107J - Exercices dirigs
-
4.2. REQUTES CHAPITRE 4. ALGBRE - SQL : APPARTEMENTS - COLES
AND E.NOMEC = C.NOMECAND E.NCL = C.NCLAND E.NOMP = R.NOMAND M.ADR = R.ADR
ou (imbriqu) :SELECT C.MAITREFROM CLASSE C, PERSONNE PWHERE C.MAITRE = P.NOM AND P.ADR IN (SELECT P.ADR
FROM PERSONNE P, ENFANT EWHERE P.NOM = E.NOMP AND
E.NOMEC = C.NOMEC ANDE.NCL = C.NCL)
Requte 8 : Donner ladresse de limmeuble, la date de construction, le type dappartement et ltage ohabitent chacun des matres des enfants de DUPONT.
Solution :
R1 := MAITRE(NOMP=DUPONT ENFANT CLASSE)R2 := R1 MAITRE=NOM PERSONNER3 := ADI,DATEC,TY PE,ETAGE(R2 IMMEUBLE)
R1(MAITRE) : les matres des enfants de DUPONT R2(. . .) : les noms, adresses, . . . des matres R3(ADI,DATEC,TYPE,ETAGE) : rsultat
SELECT A.ADI, I.DATEC, A.TYPE, A.ETAGEFROM CLASSE C, ENFANT E, PERSONNE P, IMMEUBLE I, APPIM AWHERE I.ADI = P.ADR
AND A.NAPR = P.NAPRAND A.ADI = I.ADIAND P.NOM = C.MAITREAND C.NOMEC = E.NOMECAND C.NCL = E.NCLAND E.NOMP = DUPONT
Requte 9 : Donner le nom et lge des matres qui habitent dans un immeuble dont le propritaire estresponsable dun de leurs lves.
Solution :
R1 := MAITRE,AGE,ADR,NOMP (ENFANT (CLASSE MAITRE=NOM PERSONNE))R2 := MAITRE,AGE(R1 NOMP=PROPADR=ADI IMMEUBLE)
R1(MAITRE,AGE,ADR,NOMP) : pour chaque enfant : le nom, lge et ladresse des matres et lenom du responsable
R2(MAITRE,AGE) : rsultat
SELECT M.NOM, M.AGEFROM IMMEUBLE I, ENFANT E, CLASSE C, PERSONNE MWHERE I.ADI = M.ADR
AND I.PROP = E.NOMPAND C.NCL = E.NCLAND C.NOMEC = E.NOMECAND M.NOM = C.MAITRE
NFP 107 et 107J - Exercices dirigs
-
4.3. MISE JOUR CHAPITRE 4. ALGBRE - SQL : APPARTEMENTS - COLES
Requte 10 : Donner le nom et lge des personnes qui sont propritaires mais qui ne sont ni matre nidirecteur dcole (des classes et coles rpertories dans ECOLE et CLASSE).
Solution :
R1 := MAITRE/PROP (MAITRE CLASSE)R2 := DIR/PROP (DIR ECOLES)R3 := PROP IMMEUBLE (R1 R2)R4 := AGE,NOM (PERSONNE PROP=NOM R3)
SELECT NOM, AGEFROM PERSONNEWHERE NOM IN (SELECT PROP
FROM IMMEUBLEMINUS(SELECT DIR
FROM ECOLEUNIONSELECT MAITRE
FROM CLASSE))
4.3 Mise jourRequte 11 : Ajouter un enfant de nom np, de prnom e, n en a et linscrire la classe c de lcole ec.
Solution :
INSERT INTO ENFANT VALUE (np,e,a,ec,c);UPDATE CLASSESET NBEL = NBEL + 1WHERE NOMEC = ec AND NCL = c;
4.4 Contraintes
Indiquer de la faon la plus formelle possible certaines contraintes que les donnes de la base doivent respec-ter pour tre conformes la ralit modlise ici.
Solution :
Inclusions des ensembles, par exemple : IMMEUBLE[PROP ] PERSONNE[NOM ] ECLOLE[DIR] PERSONNE[NOM ] CLASSE[MAITRE] PERSONNE[NOM ] ENFANT [NOMP ] PERSONNE[NOM ]Ltage dun appartement dans un immeuble est infrieur ou gal au nombre dtages de cet immeuble :
(IMMEUBLE(a, n, d, p, ) APPIM(a, ap, o, t, s, e)) e n
NFP 107 et 107J - Exercices dirigs
-
4.4. CONTRAINTES CHAPITRE 4. ALGBRE - SQL : APPARTEMENTS - COLES
Le nombre dlves dans une classe correspond lensemble des n-uplets dans la relation ENFANT :
CLASSE(e, c,m, n) card({ENFANT : NOMEC = e NCL = c}) = n
Pour les professions
d {ECOLE[DIR]} a, ad, apPERSONNE(d, a, INSTITUTEUR, ad, ap)m {CLASSE[MAITRE]} a, ad, apPERSONNE(m, a, INSTITUTEUR, ad, ap)
etc...
NFP 107 et 107J - Exercices dirigs
-
Chapitre 5
SQL - Algbre : Cinmas - Films
5.1 Schma
Les exemples suivants sont tirs du livre Foundations of Databases de S. Abiteboul, R. Hull et V. Vianu.
SALLE (Nom,Horaire,Titre)FILM (Titre, Realisateur, Acteur)PRODUIT (Producteur,Titre)VU (Spectateur,Titre)AIME (Spectateur,Titre)
Un film est ralis par un metteur en scne mais peut tre financ par plusieurs Producteurs. Un Spectateurpeut aimer un film sans lavoir vu.
5.2 Requtes
crire les requtes suivantes en algbre relationnelle .
5.2.1 Interrogation dune seule relation
Requte 1 : Dans quelle salle et quelle heure peut on voir le film Mad Max ?
Solution :Algbre :
Nom,Horaire(Titre=Mad Max(SALLE))
SQL :SELECT Nom, HoraireFROM SALLEWHERE Titre = Mad Max
Requte 2 : Quels sont les films raliss par Orson Welles ?
Solution :
NFP 107 et 107J - Exercices dirigs
-
5.2. REQUTES CHAPITRE 5. SQL - ALGBRE : CINMAS - FILMS
Algbre :Titre(Realisateur=Welles(FILM))
SQL :SELECT TitreFROM FILMWHERE Realisateur = Welles
Requte 3 : Quels sont les Acteurs du film Ran ?
Solution :Algbre :
Acteur(Titre=Ran(FILM))
SQL :SELECT ActeurFROM FILMWHERE Titre = Ran
5.2.2 Jointures
Requte 4 : Dans quelles salles peut-on voir un film avec Simone Signoret ?
Solution :Algbre :
Nom(SALLE (Acteur=Signoret(FILM)))
SQL :SELECT NomFROM SALLE, FILMWHERE SALLE.Titre = FILM.Titre
AND FILM.Acteur = Signoret
Requte 5 : Dans quelles salles peut on voir Marlon Brando aprs 16h ?
Solution :Algbre :
Nom(Horaire>16(SALLE) (Acteur=Brando(FILM)))
SQL :SELECT NomFROM SALLE, FILMWHERE SALLE.Titre = FILM.Titre
AND FILM.Acteur = BrandoAND SALLE.Horaire > 16
Requte 6 : Quels sont les Acteurs qui ont produit un film ?
Solution :Algbre :
Acteur(FILM Acteur=Producteur PRODUIT )
SQL :
NFP 107 et 107J - Exercices dirigs
-
5.2. REQUTES CHAPITRE 5. SQL - ALGBRE : CINMAS - FILMS
SELECT ActeurFROM PRODUIT, FILMWHERE Acteur = Producteur
Requte 7 : Quels sont les Acteurs qui ont produit un film dans lequel ils jouent ?
Solution :Algbre :
Acteur(Acteur=Producteur(FILM PRODUIT ))
SQL :SELECT ActeurFROM FILM, PRODUITWHERE FILM.Titre = PRODUIT.Titre
AND Acteur = Producteur
Requte 8 : Quels sont les Acteurs qui ont produit et ralis un mme film ?
Solution :Algbre :
R1 := Realisateur(Producteur=Realisateur(PRODUIT FILM))R2 := Acteur(FILM Acteur=Realisateur R1)
SQL :SELECT A.ActeurFROM FILM A, FILM B, PRODUIT CWHERE A.Acteur = B.Realisateur
AND B.Realisateur = C.ProducteurAND B.Titre = C.Titre
Requte 9 : Quels sont les Producteurs qui regardent les films quils ont produits ?
Solution :Algbre :
Producteur(Spectateur=Producteur(PRODUIT V U))
5.2.3 Difference
Requte 10 : Quels films ne passent en ce moment dans aucune salle ?
Solution :Algbre :
Titre(FILM) Titre(SALLE)
Requte 11 : Quels Spectateurs aiment un film quils nont pas vu ?
Solution :Algbre :
Spectateur(AIME V U)
NFP 107 et 107J - Exercices dirigs
-
5.2. REQUTES CHAPITRE 5. SQL - ALGBRE : CINMAS - FILMS
Requte 12 : Qui naime aucun film quil a vu ?
Solution :Algbre :
Spectateur(V U) Spectateur(AIME V U)
Requte 13 : Qui na produit aucun film de Doillon ?
Solution :Algbre :
Producteur(PRODUIT ) Producteur(PRODUIT (Realisateur=Doillon FILM))
Requte 14 : Qui a produit un film qui ne passe dans aucune salle ?
Solution :Algbre :
Producteur(PRODUIT (Titre FILM Titre SALLE))
5.2.4 Division
Requte 15 : Quels Spectateurs ont vu tous les films ? (ou Spectateurs pour lesquels il nexiste pas un filmquils nont pas vu)
Solution :Algbre :
V U Titre(FILM)SQL :SELECT SpectateurFROM Vu v1WHERE NOT EXISTS ( SELECT *
FROM FILM fWHERE NOT EXISTS ( SELECT *
FROM Vu v2WHERE v2.Titre = f.Titre
AND v2.Spectateur = v1.Spectateur) )
Requte 16 : Quels Acteurs jouent dans tous les films de Welles ? (ou Acteurs pour lesquels il nexistepas un film de Welles quils nont pas jou)
Solution :Algbre :
(Acteur,T itre(FILM)) (Titre(Realisateur=Welles(FILM)))SQL :SELECT fx.ActeurFROM FILM fxWHERE NOT EXISTS ( SELECT fy
FROM FILM fyWHERE fy.Realisateur = WellesAND NOT EXISTS ( SELECT fz
FROM FILM fzWHERE fz.Titre = fy.Titre
AND fz.Acteur = fx.Acteur) )
NFP 107 et 107J - Exercices dirigs
-
5.2. REQUTES CHAPITRE 5. SQL - ALGBRE : CINMAS - FILMS
Requte 17 : Quels sont les Spectateurs qui aiment tous les films quils ont vu ? (ou Spectateurs pourlesquels il nexiste pas un film quils ont vu et quils nont pas aim)
Solution :Algbre :
(AIME Spectateur/Spectateur(V U)) V U
Requte 18 : Quels sont les Producteurs qui voient tous les films quils ont produit ? (ou Producteurs pourlesquels il nexiste pas un film quils ont produit et quils nont pas vu)
Solution :Algbre :
(Producteur PRODUIT Producteur=Spectateur V U) PRODUIT
Requte 19 : Quels Producteurs voient tous les films de Kurosawa ? (ou Producteurs pour lesquels ilnexiste pas un film de Kurosawa quils nont pas vu)
Solution :Algbre :
R1 := Titre(Realisateur=KurosawaFILM)R2 := V U