exemen 2008-2009.pdf

31
Conservatoire National des Arts et Métiers 292 Rue St Martin 75141 Paris Cedex 03 Informatique - CNAM, Paris Bases de données relationnelles NFP 107 et NFP 107J Exercices dirigés C. Crochepeyre, M. Ferecatu, P. Rigaux, V. Thion et N. Travers Solutions 2 mai 2011

Upload: wail-re

Post on 01-Oct-2015

29 views

Category:

Documents


4 download

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