• Aucun résultat trouvé

Bae de Dée : exe i e igé a de a vie a ed i de e d e a   ye  e e i e iedie fée a x ai

N/A
N/A
Protected

Academic year: 2022

Partager "Bae de Dée : exe i e igé a de a vie a ed i de e d e a   ye  e e i e iedie fée a x ai "

Copied!
21
0
0

Texte intégral

(1)

Maude Manouvrier

La reprodution de e doumentpar tout moyen quee soitest interdite

onformémentaux artilesL111-1 et L122-4 du ode de lapropriété intelletuelle

Attention, e doument peut omporter des erreurs, à utiliser don en

onnaissane de ause!!

1

(2)

Exerie 1

Enoné de l'exerie

QuestionID Intitulé Réponse NiveauDifficulté Thème

QUESTION ClientID Nom Prénom Adresse DateNaissance

CLIENT

PassageCodeID Date Heure LieuExamen EXAMEN_CODE

NombreFautes RESULTAT_SEANCE

NombreFautes RESULTAT_EXAM

SEANCEID DATE HEURE SEANCE−CODE

Numéro POSITION_QUESTION

CD−ROM CdRomID Editeur NombreFautes

EST_AUTORISE A PASSER

ASSISTE_A NombreFautes

EST_COMPOSE_DE CD−ROM CdRomID Editeur

QuestionID Intitulé Réponse NiveauDifficulté Thème

QUESTION

CONTIENT Numéro

SERIE SérieID ClientID

Nom Prénom Adresse DateNaissance

CLIENT

PassageCodeID Date Heure LieuExamen EXAMEN_CODE

PENDANT EST_DIFFUSE

SEANCEID DATE HEURE SEANCE−CODE

MODELISATION UML MODELISATION ENTITE − ASSOCIATION

ASSISTE_A

EST_AUTORISE_A_PASSER

*

CONTIENT

0:N 1:M

1:N 0:N

6:6

6 40

40:40 1:1

SERIE SérieID SérieID

DE

COMPOSE EST

1:1

0:N

EST_DIFFUSE_PENDANT

1

* 0..8

0:8

* 1..*

1

1..*

Figure1: ModélisationE/Aet UMLdelabasededonnéesd'unel'auto-éole.

Uneauto-éole souhaiteonstruire une base dedonnées pour gérerlesexamens théoriques du

odedelaroutedesesélèves. Chaqueélèveestidentiéparunnumérouniqueetestaratérisépar

unnom, unprénom,uneadresseetunedatedenaissane. Chaqueélèveassisteàplusieursséanes

de ode (autant qu'ille souhaite). Chaqueséaneest aratériséepar une date et une heure. A

haqueséanedeode, ledireteurdel'auto-éolehoisitunesérie dequestionssurunCD-ROM.

Chaque CD-ROM est identié par un numéro et est aratérisé par un nom d'éditeur. Chaque

CD-ROMestomposéde6séries,numérotéesde1à6. Chaquesérieestomposéede40questions.

Chaque question est identiée par un intitulé et est aratérisée par une réponse, un niveau de

diulté et un thème. Unemême questionpeutapparaîtredans plusieursséries aveun numéro

d'ordrepourhaquesérie ;parexempleune mêmequestionpeutapparaîtreommequestionN

2

danslasérie5duCD-ROM15etommequestionN

12danslasérie3duCD-ROM4. Unemême

sériepeutêtreprojetéeplusieursfoisàdesséanesdiérentes. Lorsqu'unélèveassisteàuneséane,

il obtientlenombredefautes(unenote sur40)qu'ilafaitpourlasérie passéependantlaséane.

(3)

defautesinférieurouégalà5,ledireteurdel'auto-éolel'autoriseàpasserl'examenthéoriquedu

odedelarouteàunedate donnée(unseul examenpourunedatedonnée). L'auto-éole nepeut

présenterque8élèvesmaximumàhaquedated'examen. Lesélèvesayantobtenuplusde5fautes

à l'examensont realéset doivent assisterde nouveau àdesséanes deode avant depouvoirse

représenteràl'examen.

Labasededonnéesdoitpermettrederépondreàdesrequêtestellesque"Quelestlenombremoyen

defautespourlasérie

5

duCD-ROM

14

?","Quelsélèvespeuventseprésenterauprohainexamen

duodedelaroute?","Quelsélèvesontéhouéaumoins unefoisàl'examen?"et.

La gure 1présente lamodélisation Entité/Assoiation (format Merise)et lamodélisation UML

del'énoné. LesexpliationsnesontdonnéesquepourleshémaE/A maispeuventêtreadaptées

aushémaUML.Pouruneompréhensiondeladiéreneentreunemodélisation E/AouUMLet

lepassageaurelationnel, vouspouvez vousreporteràl'ouvrage[4℄. Lesshémasde modélisation

i-avantsontsémantiquementlairs. Néanmoins,quelspointsnéessitentd'êtrepréisés.

L'ensemble d'entités Serie est un ensemble d'entités faibles de CD-ROM, au format Merise

(ou une assoiation qualiée en UML). En eet, e hoix de modélisation a été fait pour

représenterlefaitquelenumérod'unesérieestrelatifauCD-ROMauquellasérieappartient.

Lesardinalités del'assoiationentrelesensemblesd'entités SerieetCD-ROMsont1:1-6:6, arunesérie appartientàununiqueCD-ROM et unCR-ROM ontientexatement6séries

de questions. Le prinipe est le même pour les ardinalités de l'assoiation entre Serie et

Question : une série ontient exatement 40 questions (ardinalité

40 : 40

). En revanhe,

unemême questionpeutapparaîtredansplusieurssériesave unnumérod'ordrediérentà

haquefois,d'oùlaardinalité

1 : N

etl'attributNuméroquiaratérisel'assoationontient.

L'attributNombreFautesestunattribut de l'assoiationentreles ensemblesd'entités Client etExamen_Codeet del'assoiationentrelesensemblesd'entités ClientetSeane_Code. En

eet,etattribut aratérisel'assoiationet nonpasunlient,uneséanedeodeouenore

unexamendeode. Ilaratériselelienentredeuxentitésdeesensembles.

Déduisezleshémarelationneldelabase dedonnéesorrespondante.

Vous préiserez les lés primaires des relations en les soulignant ainsi que les lés étrangères en

lessignalantparun#etenpréisantàquoiellesfontréférene.

Dansvotreshémarelationnel,haquerelationdoitêtrespéiéedelamanièresuivante :

N om

(

att 1

,...,

att n

)

N om

estlenomdelarelationet

att 1

, ...,

att n

sontdesnomsd'attributs.

Le nom de la relation doit obligatoirement avoir un lien ave les noms des ensembles d'entités

(lasses)oudesassoiationsdushémademodélisationdelaquestion1.

Vous donnerez des expliations laires et onises du passage au relationnel. Vous préiserez no-

tamment pourquoi et omment vous réez ou modiez ertaines relations (1 ligne maximum par

relation).

Corretion de l'exerie 1

Le modèle relationnel déduit de la modélisation i-dessus est le suivant. Les lés primaires sont

soulignées. Les lés étrangères sont préédées d'un '#'. Pour un rappel de es notions, vous

pouvezvousréférerauxpages56à60de[2℄. Lepassaged'unshémademodélisationàunmodèle

relationnelestrappeléauxpages120à143de[4℄.

Client(ClientID,Nom, Prénom,Adresse,DateNaissane)

Cetterelationestdéduitedupassageaurelationneldel'ensembled'entités(oulasse)Client.

CD-ROM(CdRomID,Editeur)

Cetterelation est déduite dupassageaurelationnel de l'ensembled'entités (ou lasse)CD-

ROM.

(4)

Cetterelationestdéduitedupassageaurelationneldel'ensembled'entités (oulasse)Ques-

tion.

Serie(SerieID,#CdRomID)

Cette relation est issue du passage au relationnel de l'ensemble d'entités (lasses) Serie.

En modélisation E/A, l'ensemble d'entités Serieétant unensemble d'entités faibles deCR-

ROM, la lé primaire de la relation Serie est omposéede l'identiateur de la série et de

l'identiateurduCD-ROMauquellasérieappartient.

ContenuSerie(#QuestionID,SerieID,#CdRomID,Numéro)

Cette relation est déduite du passage au relationnel de l'assoiation Contient. Le ou-

ple d'attributs #CdRomID,#SerieID fait référene à la lé primaire de la relation Serie.

L'attribut #QuestionID fait référene à la lé primaire de la relation Question. Il ne faut

pasoublier l'attributNuméroquiaratérise l'assoiationontient. Seane_Code(SeaneID,

Date,Heure, #CdRomID,#SerieID)

Cetterelationestissuedupassageaurelationneldel'ensembled'entités(lasses)Seane_Code.

Le ouple d'attributs #CdRomID est une lé étrangère qui fait référene à la lé primaire

de la relation Serie. Ce ouple d'attributs a été ajouté lors du passage au relationel de

l'assoiationest_diusée_pendant,uneseulesérie(d'unCR-ROMdonné)étantdiuséepen-

dantuneséanedeode(ardinalité1:1).

Partiipation(#ClientID, #SeaneID,NombreFautes)

Cette relation est issue du passage au relationnel de l'assoiation assiste_à. Les attributs

#ClientIDet #SeaneIDsontdeslés étrangèresqui fontrespetivementréférenesauxlés

primairesdesrelationsClient etSeane. Eneet, unlient peutassisteràplusieursséanes

et,lorsd'uneséane, il y aplusieurslients. Ilne faut pasoublierl'attribut NombreFautes

quiaratérisel'assoiationassiste_à.

Examen_Code(PassageCodeID,Date, Heure, LieuExamen)

Cetterelationest déduite dupassageaurelationnelde l'ensembled'entités (oulasse)Exa-

men_Code.

PassageCode(#PassageCodeID, #ClientID,NombreFautes)

Cetterelation estdéduite dupassageaurelationneldel'assoiationest_autorisé_à_passer.

Lesattributs #PassageCodeIDet #ClientIDfont référeneaux lés primaires des relations

Examen-Codeet Client.

Exerie 2

Enoné de l'exerie

On souhaite onstruire une base de données gérantdes revues et les artilesde es revues. Une

revueestaratériséeparunnometunepériodiité. Chaquerevueparaitsouslaformedenuméros,

haquenuméroétantidentiéparunnombrerelatifàlarevueetàl'annéeenours(ex. lenuméro

N

12 deLinux Magazine en2003 est diérentdunuméro N

12de Linux Magazine en2004). Un

numéro est également aratérisé parun nombre de pages. Chaque numéroontient des artiles

érits parunou plusieursauteurs. Un auteur est aratériséparunnom, unprénom, ainsiqu'un

email. Chaque artile possède un titre et un ontenu. Un même artile peut apparaître dans

plusieursplusieursnumérosd'unemêmerevueoudediérentes revues. Lorsqu'unartileapparaît

dans un numéro d'une revue, il a une page de début et une page de n. Un artile peut faire

référene àd'autres artiles,en préisant le numéro et la revue dans lesquelsl'artile référené a

étépublié.

(5)

Nom Revue

ID

NbPages Année

Numéro comporte

Titre Contenu

Article

fait référence à écrit

Nom Revue

Titre Contenu

Article Email Prénom Nom ID

Auteur

ID

NbPages Année

Numéro

Publication PageDébut PageFin Modélisation Entité / Association

Périodicité

1:N 1:M

1:M 1:1

0:N 0:M Auteur

Email Prénom

ID Nom

PageDébut PageFin 1:N

1:N

Modélisation UML Périodicité

1

écrit

1..*

1..* 1..*

1..* est publié dans 1..*

*

* NuméroID

référence à

fait

comporte

est publié dans

Figure2: Modélisation E/AetUMLd'unebasededonnéesgérantdesrevues.

La base de données doit permettre de répondre à des requêtes telles que "Combien de numéros

de Linux Magazine sontparus en2004?", "Quelssontlestitres desartilesparusdans aumoins

deux revues diérentes ?", "Quels sont les auteurs ayant publiés dans le numéro 3 de la revue

L'Histoireen2004?"et.

La gure 2présente lamodélisation Entité/Assoiation (format Merise)et lamodélisation UML

del'énoné. LesexpliationsnesontdonnéesquepourleshémaE/A maispeuventêtreadaptées

aushémaUML.Pouruneompréhensiondeladiéreneentreunemodélisation E/AouUMLet

lepassageaurelationnel, vouspouvez vousreporteràl'ouvrage[4℄. Lesshémasde modélisation

i-avantsontsémantiquementlairs. Néanmoins,quelspointsnéessitentd'êtrepréisés.

L'ensemble d'entités Numéro est un ensemble d'entités faibles de Revue au format Merise

(ou une assoiation qualiée en UML). En eet, e hoix de modélisation a été fait pour

représenterlefaitquel'identiateur d'unnuméroestrelatifàlarevueàlaquelle lenuméro

appartient. Un numérod'unerevue donnéeétantidentié parunnombreet une année,es

deuxattributs(IDetAnnée)sontsoulignés.

Lesardinalitésdel'assoiationentrelesensemblesd'entitésNuméroetArtilesont1:N-1:M, arunartilepeutapparaîtredansplusieursnumérosetunnuméroontientplusieursartiles.

Leprinipeest lemême pourlesardinalitésdel'assoiationentreAuteuret Artile.

Lesattributs PageDébut et PageFin aratérisentl'assoiation entre Artile et Numéro(un numéroétantrelatifàunerevue,ilestinutiledefaireuneassoiationaveRevue). Eneet,

lapagededébutetlapagedenpeuventvarier,pourunmêmeartile,lorsqu'ilparaîtdans

plusieursnumérosdiérents.

Unartilepeutfaireréféreneàunautreartile. Lenuméroetlarevuedanslesquelsl'artile

référenéapparaît doivent êtrepréisés dans l'artile référençant. Parexemple, l'artile in-

titulé"Corretiond'exeriesenbasesdedonnées" peutfaireréféreneàl'artile"Conepts

générauxenBDrelationnelle"dunuméro12del'année2004delarevue"Informatiquemag-

azine". Aet eet,lesensemblesd'entitésNuméroet Artileontétéregroupésauseind'un

agrégatauformatMerise(oud'unelasse-assoiationenUML).Cetagrégat(ouettelasse-

assoiation)représente l'artile référené,'est-à-dire l'artileet le numérodela revue oùil

a été publié (il est inutile d'ajouter la revue à l'agrégat puisque Numéro est un ensemble

d'entitésfaibles de Revue). Cetagrégrat(ouette lasse-assoiation)est assoiée àArtile,

(6)

nalitésontpourborneinférieure0arunartilepeutneréférenerauunautreartileet un

artilepeutnejamaisêtreréférené. Pourplusdedétailssurl'agrégation,vouspouvezvous

référeràlapage37del'ouvrage[2℄ouauxpages55-56de[3℄.

Déduisezleshémarelationneldelabase dedonnéesorrespondante.

Vouspréiserezleslésprimairesdesrelationsenlessoulignantainsiqueleslésétrangèresenles

signalantparun#et enpréisantàquoiellesfontréférene.

Dansvotreshémarelationnel,haquerelationdoitêtrespéiéedelamanièresuivante :

R N om

(

att 1

,...,

att n

)

R N om

estlenomdelarelationet

att 1

, ...,

att n

sontdesnomsd'attributs.

Le nom de la relation doit obligatoirement avoir un lien ave les noms des ensembles d'entités

(lasses)oudesassoiationsdushémademodélisationdelaquestion1.

Vous donnerez des expliations laires et onises du passage au relationnel. Vous préiserez no-

tamment pourquoi et omment vous réez ou modiez ertaines relations (1 ligne maximum par

relation).

Corretion de l'exerie 2

Le modèle relationnel déduit de la modélisation i-dessus est le suivant. Les lés primaires sont

soulignées. Les lés étrangères sont préédées d'un '#'. Pour un rappel de es notions, vous

pouvezvousréférerauxpages56à60de[2℄. Lepassaged'unshémademodélisationàunmodèle

relationnelestrappeléauxpages120à143de[4℄.

Revue(Nom,Périodiité)

Cetterelationestdéduitedupassageaurelationneldel'ensembled'entités(oulasse)Revue.

Numéro(ID,Année,#NomRevue,NbPages)

Cetterelationestissuedupassageaurelationneldel'ensembled'entités(lasses)Numéro,qui

estunensembled'entitésfaibles(ouuneassoiationqualiée)deRevue. Laléprimairedela

relationNuméroestdonomposéeduouple(ID, Année)qui identieunnuméropourune

revuedonnéeetdel'attribut#NomRevue,léétrangèrefaisantréféreneàlaléprimairede

larelationRevue('est-à-direfaisantréféreneàlarevueàlaquellelenuméroestrelatif).

Auteur(ID,Nom,Prénom,Email)

Cetterelationestdéduitedupassageaurelationneldel'ensembled'entités(oulasse)Auteur.

Artile(Titre,Contenu)

Cetterelationestdéduitedupassageaurelationneldel'ensembled'entités(oulasse)Artile.

Eriture(#Titre, #IDAuteur)

Cetterelationest déduitedupassageaurelationnelde l'assoiation entre Artileet Auteur.

En eet, un artilepeut être érit par plusieurs auteurs et un auteur peut érire plusieurs

artiles. L'attribut #Titre est une lé étrangère qui fait référene à la lé primaire de la

relationTitre. L'attribut#IDAuteurestunelé étrangèrequifaitréféreneàlaléprimaire

delarelationAuteur.

Publiation(#Titre, #NomRevue,#IDNuméro, #AnnéeNuméro,PageDébut,PageFin)

Cetterelationestdéduitedupassageaurelationneldel'assoiationentreArtileetNuméros.

Lalé primairedelarelation estomposéedutitre del'artilepublié (identié par#Titre)

etdunumérodanslequell'artileapparaît(identiéparletriplet#NomRevue,#IDNuméro,

#AnnéeNuméro). L'attribut#Titre estune léétrangèrequi faitréféreneàlaléprimaire

delarelationTitre. Lesattributs(#NomRevue,#IDNuméro, #AnnéeNuméro)formentune

lé étrangère qui fait référene àla lé primaire de la relation Numéro. Il faut bien noter,

ii, qu'une lé étrangère fait toujours référene à la lé primaire d'une autre relation. Or,

danset exemple, lalé primaire de larelation Numéro est omposéede trois attributs qui

doiventégalementapparaîtredans toutes lés étrangèresy faisant référene. Il ne faut pas

(7)

aratérisel'assoiationest_publié_dans.

Référene(#TitreArtileRéférençant,#TitreArtileRéférené, #NomRevueArtileRéférené,

#IDNuméroArtileRéférené, #AnnéeNuméroArtileRéférené)

Cetterelationestdéduitedupassageaurelationneldel'assoiationentrel'ensembled'entités

(oulalasse)Artileetl'agrégat(oulalasse-assoiation)regroupantNuméroetArtile. Les

nomsdesattributs sontpartiulièrementlongs pourquelasémantiquesoit laire. L'attribut

#TitreArtileRéférençantestune lé étrangèrequi faitréféreneàlaléprimairedelarela-

tionArtile. Cet attributreprésente letitredel'artile référençant(ontenantune référene

àunartilepubliédansunnuméro). L'attribut#TitreArtileRéférenéestunelé étrangère

qui faitréférene àlalé primaire de larelation Artile. Cet attribut représente letitre de

l'artileréférençé. Lesattributs(#NomRevueArtileRéférené, #IDNuméroArtileRéférené,

#AnnéeNuméroArtileRéférené)formentuneléétrangèrequifaitréféreneàlaléprimaire

delarelationNuméro. Ilsreprésententlenumérodelarevuedanslequelaétépubliél'artile

référené.

(8)

Exerie 3

Enoné de l'exerie

On suppose qu'une bibliothèque gèreune base de donnéesdontle shéma est le suivant (leslés

primairesdesrelationssontsoulignées):

Emprunt(Personne,Livre, DateEmprunt,DateRetourPrevue, DateRetourEetive)

Retard(Personne,Livre,DateEmprunt, PenalitéRetard)

Exprimer,lorsqueelaestpossible,lesrequêtessuivantesenalgèbrerelationnelle,enalulàvariablenuplet

et enSQL.

1. Quellessontlespersonnesayantemprunté lelivre"ReueilExamensBD"?

2. Quellessontlespersonnesn'ayantjamaisrendu delivreenretard?

3. Quellessontlespersonnesayantemprunté tousleslivres(empruntésaumoinsunefois)?

4. Quelssontleslivresayantétéempruntéspartout lemonde(i.e. touslesemprunteurs)?

5. Quellessontlespersonnesayanttoujoursrenduenretardleslivresqu'ellesontempruntés ?

Corretion de l'exerie 3

Dans et exerie, leshémarelationnel est partiulièrementsimple, an que l'expressiondes re-

quêtessoitfaileàexprimer. Ils'agitnéanmoinsderequêtesomplexes. Vouspouvezvousentraîner

àexprimeres requêtesen améliorantleshéma,'est-à-direenajoutantdeuxrelations Personne

etLivreetpréisantleslésétrangèresdanslesrelationsEmpruntetRetardfaisantréféreneàune

personneetàunlivre.

1. Quellessont lespersonnes ayant emprunté lelivre"Reueil ExamensBD" ?

Enalgèbrerelationnelle:

Π P ersonne (σ Livre= Recueil... (Emprunt))

L'algèbrerelationnelleestunlangageomposéd'opérationsensemblistes. Ilpermetd'indiquer

ommentlerésultatdelarequêteestaluléentermesd'opérationsensemblistessurdesen-

sembles de nuplets (les relations). Dans ette requête par exemple, le résultat est alulé

en parouranttous les nuplets de la relation Emprunt, en y séletionnant les nuplets dont

l'attributLivre apour valeur'Reueil...' et enprenantuniquement lesvaleursde l'attribut

Personne(i.e. enprojetantsurl'attributPersonne).

Enalulrelationnel:

{t.P ersonne | Emprunt(t) ∧ (u.Livre = Recueil... ) }

Lealul relationneldérit, sousformelogique, lerésultat delarequête (sanspréiser om-

mentonlealule). Lerésultatdelarequêteontientlesvaleursdel'attribut

P ersonne

des

nuplets

t

dela relation

Emprunt

tels quel'attribut

Livre

orresponde à'ReueilExamens

(9)

EnSQL:

SELECT Personne

FROM Emprunt WHERE Livre = 'Reueil...'

IlauraitégalementétépossiblederemplaerlalauseWHEREparWHERE Livre LIKE 'Reueil%'

indiquant quel'on reherhe lesemprunteursdesouvrages dont letitre ommene par 'Re-

ueil'.

2. Quellessont lespersonnes n'ayant jamais rendude livre en retard ?

Enalgèbrerelationnelle:

Π P ersonne (Emprunt) − Π P ersonne (Retard)

La résultat de la requête est alulé en prenant toutes les valeurs de l'attribut Personne

danslarelationEmpruntet enéliminantlesvaleursdee mêmeattributapparaissantégale-

mentdanslarelationRetard. Ils'agitd'unediéreneentredeuxensembles.

Enalulrelationnel:

{t.P ersonne | Emprunt(t) ∧ ¬[∃ u Retard(u) ∧ (u.P ersonne = t.P ersonne) )]}

Le résultat de la requête ontient les valeurs de l'attribut

P ersonne

des nuplets

t

de la

relation

Emprunt

(dondespersonnesempruntant)tels qu'iln'existepasdenuplets

u

dans

larelation

Retard

ave la même valeur pour l'attribut

P ersonne

(dontelles qu'il n'existe

pasderetardsassoiésàespersonnes).

EnSQL, deux manières possibles, par simple tradution en SQL de la requête en alul

relationnel(lealulrelationnelétantàl'originedelasyntaxedeSQL):

SELECT t.Personne FROM Emprunt t SELECT Personne FROM Emprunt

WHERE NOT EXISTS (SELECT * FROM Retard u WHERE Personne NOT IN

WHERE u.Personne=t.Personne (SELECT Personne FROM Retard)

)

Lesvariables nuplet (ex.

t

et

u

)nesontnéessairequelorsqu'ilyaambiguïtéauniveaudes

nomsd'attributs(f. requêtedegauhe).

3. Quelles sont les personnes ayant emprunté tous les livres (empruntés au moins

unefois) ?

Enalgèbrerelationnelle:

Π P ersonne,Livre (Emprunt) ÷ Π Livre (Emprunt)

Lerésultat deetterequêteest alulé enutilisantl'opérateurdedivision. Pourune bonne

ompréhensiondeladivision,vouspouvezvousreporteràlapage99de[2℄.

Lasous-requête

Π Livre (Emprunt)

orrespondàlalistedeslivresempruntés. Lerésultatdela

sous-requête

Π P ersonne,Livre (Emprunt)

ontienttouslesouples(Personne, Livreemprunté

aumoinsunefoisparettepersonne). Lerésultatdeladivisionseradonlalistedesperson-

nesassoiées,danslerésultatde

Π P ersonne,Livre (Emprunt)

,àhaundeslivresapparaissant danslerésultatdelarequête

Π Livre (Emprunt)

.

(10)

{t.P ersonne | Emprunt(t) ∧ [∀ u (Emprunt(u)) = ⇒ (∃ v Emprunt(v) ∧ (v.P ersonne = t.P ersonne) ∧ (u.Livre = v.Livre) )]}

Lerésultatdelarequêteontientlesvaleursdel'attribut

P ersonne

desnuplets

t

delarelation

Emprunt

telsque quel quesoit unnuplet s'il s'agit d'un livreemprunté (dond'un nuplet

u

dans

Emprunt

)alors ontrouveunnuplet

v

dans

Emprunt

assoiant ette personne àe

livre('est-à-dire

v.P ersonne = t.P ersonne

et

u.Livre = v.Livre

).

Onpeutégalementl'ériredelamanièresuivante:

{t.P ersonne | Emprunt(t) ∧ [∀ u ¬(Emprunt(u)) ∨ (∃ v Emprunt(v) ∧ (v.P ersonne = t.P ersonne) ∧ (u.Livre = v.Livre) )]}

Ce qui signie que le résultat de larequête ontient lesvaleurs de l'attribut

P ersonne

des

nuplets

t

de la relation

Emprunt

tels quequel que soit un nuplet

u

soit 'est n'est pas un

nupletde

Emprunt

soit (impliitement'estunnupletde

Emprunt

et)ontrouveunnuplet

v

dans

Emprunt

assoiantettepersonneà elivre ('est-à-dire

v.P ersonne = t.P ersonne

et

u.Livre = v.Livre

).

D'oùditdemanièrenégative:

{t.P ersonne | Emprunt(t)∧ ¬[∃ u Emprunt(u) ¬(∃ v Emprunt(v)∧(v.P ersonne = t.P ersonne)∧

(u.Livre = v.Livre) )]}

EnSQL,simpletradutiondelarequêteenalul relationnel:

SELECT t.Personne

FROM Emprunt t

WHERE NOT EXISTS ( SELECT *

FROM Emprunt u WHERE NOT EXISTS ( SELECT *

FROM Emprunt v

WHERE v.Personne=t.Personne

AND v.Livre=u.Livre

)

)

4. Quels sont les livres ayant été empruntés par tout le monde (i.e. tous les em-

prunteurs)?

Enalgèbrerelationnelle:

Π P ersonne,Livre (Emprunt) ÷ Π P ersonne (Emprunt)

Lerésultatdeetterequêteestaluléenutilisantégalementl'opérateurdedivision.

Lasous-requête

Π P ersonne (Emprunt)

orrespondàlalistedesemprunteurs. Lerésultatdela sous-requête

Π P ersonne,Livre (Emprunt)

ontienttous lesouples(Personneayant emprunté

aumoins une fois, Livreemprunté aumoins une fois par ette personne). Le résultatde la

divisionseradonlalistedeslivresassoiés,danslerésultatde

Π P ersonne,Livre (Emprunt)

,à

haundesemprunteursapparaissantdanslerésultatdelarequête

Π P ersonne (Emprunt)

.

Enalulrelationnel:

{t.Livre | Emprunt(t) ∧ [∀ u (Emprunt(u)) = ⇒ (∃ v Emprunt(v) ∧ (v.Livre = t.Livre) ∧ (v.P ersonne = u.P ersonne) )]}

Le résultat de la requête ontient les valeurs de l'attribut

Livre

des nuplets

t

de la rela-

tion

Emprunt

tels que quel que soit un nuplet

u

, s'il s'agit d'un emprunteur (don d'un

nuplet

u

dans

Emprunt

)alors ontrouveunnuplet

v

dans

Emprunt

assoiante livreàet

(11)

emprunteur('est-à-dire

v.Livre = t.Livre

et

v.P ersonne = u.P ersonne

).

Onpeutégalementl'ériredelamanièresuivante:

{t.Livre | Emprunt(t) ∧ [∀ u ¬(Emprunt(u)) ∨ (∃ v Emprunt(v) ∧ (v.Livre = t.Livre) ∧ (v.P ersonne = u.P ersonne) )]}

Ce qui signieque le résultat de la requête ontient les valeursde l'attribut

Livre

des nu-

plets

t

de larelation

Emprunt

tels quequel quesoit unnuplet

u

, soit il ne s'agit pasd'un

nuplet

u

dans

Emprunt

, soit (il s'agit d'un d'un nuplet

u

dans

Emprunt

et) il existe un

nuplet

v

dans

Emprunt

assoiantelivreàetemprunteur('est-à-dire

v.Livre = t.Livre

et

t.P ersonne = u.P ersonne

). D'où ditdemanièrenégative:

{t.Livre | Emprunt(t)∧ ¬[∃ u Emprunt(u) ¬(∃ v Emprunt(v) ∧ (v.Livre = t.Livre) ∧ (v.P ersonne = u.P ersonne) )]}

EnSQL,simpletradutiondelarequêteenalul relationnel:

SELECT t.Livre FROM Emprunt t

WHERE NOT EXISTS ( SELECT * FROM Emprunt u

WHERE NOT EXISTS ( SELECT * FROM Emprunt v

WHERE v.Livre=t.Livre AND v.Personne=u.Personne

)

)

5. Quellessont les personnes ayant toujours rendu en retard leslivres qu'elles ont

empruntés ?

Enalgèbrerelationnelle : Il n'est pas possible d'exprimer ette requête par une division.

Larequêteestdondéomposéeendeux sous-requêtes. Larequête,

R 1

, i-dessous,retourne

lalistedespersonnesayantemprunté aumoinsunlivresanslerendreenretard.

R 1 = Π P ersonne [Π P ersonne,Livre,DateEmprunt (Emprunt) − Π P ersonne,Livre,DateEmprunt (Retard)]

Larequêtei-dessousenlèvedelalistedespersonnesquiempruntentdeslivres(sous-requête

degauhe)lalistedespersonnesayantrenduaumoinsunlivresansretard(requête

R 1

). Cela

orrespondàommentalulerlerésultatdelarequêtequel'onreherhe.

Π P ersonne (Emprunt) − R 1

Enalulrelationnel:

{t.P ersonne | Emprunt(t) ∧ [∀ u [Emprunt(u) ∧ (u.P ersonne = t.P ersonne)] = ⇒ (∃ v Retard(v) ∧ (v.P ersonne = u.P ersonne) ∧ (u.Livre = v.Livre) )]}

Lerésultatdelarequêteontientlesvaleursdel'attribut

P ersonne

desnuplets

t

delarelation

Emprunt

telsquequel quesoit unnuplet s'il s'agitd'un livreemprunté parette personne

(dond'unnuplet

u

dans

Emprunt

telque

u.P ersonne = t.P ersonne

)alorsontrouveunnu-

plet

v

dans

Retard

assoiantettepersonneàelivre('est-à-dire

v.P ersonne = u.P ersonne

et

u.Livre = v.Livre

).

Onpeutégalementéire:

{t.P ersonne | Emprunt(t) ∧ [∀ u ¬[Emprunt(u) ∧ (u.P ersonne = t.P ersonne)] ∨ (∃ v Retard(v) ∧ (v.P ersonne = u.P ersonne) ∧ (u.Livre = v.Livre) )]}

Le résultat de la requête ontient les valeurs de l'attribut

P ersonne

des nuplets

t

de la

relation

Emprunt

telsque quel quesoit unnuplet soit il ne s'agitpas d'un livreemprunté

parette personne (dond'un nuplet

u

dans

Emprunt

telque

u.P ersonne = t.P ersonne

)

(12)

soit on trouve un nuplet

v

dans

Retard

assoiant ette personne à e livre ('est-à-dire

v.P ersonne = u.P ersonne

et

u.Livre = v.Livre

).

D'oùditdemanièrenégative:

{t.P ersonne | Emprunt(t)∧ ¬[∃ u Emprunt(u)∧(u.P ersonne = t.personne) ¬(∃ v Retard(v)∧

(v.P ersonne = u.P ersonne) ∧ (u.Livre = v.Livre) )]}

EnSQL,làenore,simpletradutiondelarequêteenalulrelationnel:

SELECT t.Personne

FROM Emprunt t

WHERE NOT EXISTS (SELECT * FROM Emprunt u WHERE u.Personne=t.Personne

AND NOT EXISTS (SELECT * FROM Retard v WHERE v.Personne=u.Personne

AND v.Livre=u.Livre )

)

Exerie 4

Enoné de l'exerie

Unorganismedegestiondespetales,desallesdeonertet deventedebilletsdespetalesgère

unebase dedonnéesdontleshémarelationnelest lesuivant:

Spetale(Spetale_ID,Titre, DateDéb, Durée, Salle_ID,Chanteur)

Conert (Conert_ID,Date, Heure, Spetale_ID)

Salle(Salle_ID,Nom, Adresse, Capaité)

Billet(Billet_ID , Conert_ID,Num_Plae,Catégorie,Prix)

Vente (Vente_ID,Date_Vente,Billet_ID,MoyenPaiement)

Les attributs soulignéssont les attributs appartenant à la lé primaire. Ils sont de type entier.

L'attribut Salle_ID delarelation Spetaleest une lé étrangèrequi faitréféreneàl'attributde

mêmenomdelarelationSalle. L'attributSpetale_IDdelarelationConertestuneléétrangère

qui faitréférene àl'attributdemême nom delarelationSpetale. L'attributConert_IDde la

relationBilletestuneléétrangèrequifaitréféreneàl'attributdemêmenomdelarelationCon-

ert. L'attributBillet_ID delarelation Venteest une lé étrangèrequi faitréférene àl'attribut

demêmenom delarelationBillet.

Exprimez, lorsque ela est possible, les requêtes suivantes en algèbre relationnelle,

en alul relationnelà variable nupletet en SQL.

1. QuellessontlesdatesduonertdeCorneille auZenith ?

2. Quelssontlesnomsdessallesayantlaplusgrandeapaité?

3. Quelssontleshanteursn'ayantjamaisréalisédeonertàlaCygale?

4. Quelssontleshanteursayantréaliséaumoins unonertdanstouteslessalles?

5. Quelssontles dates et les identiateurs des onerts pourlesquels il ne reste auun billet

invendu ?

Corretion de l'exerie 4

1. Quellessont lesdates du onertde Corneilleau Zenith?

Enalgèbrerelationnelle:

Π Date [Concert ⋊ ⋉ σ Chanteur= Corneille (Spectacle) ⋊ ⋉ σ N om= Zenith (Salle)]

(13)

ConertetSpetale,assoielesnupletsdeSpetale,orrespondantauxspetalesduhanteur

`Corneille'(puisqu'ilyauneséletionavant),avelesnupletsdelarelationConertayantla

mêmevaleurpourl'attributSpetale_ID.Lajointuresefaitnaturellementsurl'attributde

mêmenom, Spetale_ID.La deuxième jointureassoie les nupletsrésultats de lapremière

jointure(don les onerts des spetales de 'Corneille') ave le nuplets orrespondantà la

salledu'Zenith'(résultatdelarequêtedeséletion

σ N om= Zenith (Salle)

). Lajointuresefait

naturellementsurl'attributommunSalle_ID.Laprojetionnalesefaitsurl'attributDate.

Enalulrelationnel:

{t.Date | Concert(t) ∧ [∃ u, v Spectacle(u) ∧ Salle(v) ∧ (u.Spectacle

_

ID = t.Spectacle

_

ID)

∧ (u.Chanteur = Corneille ) ∧ (v.N om = Zenith ) ∧ (u.Salle

_

ID = v.Salle

_

ID) ] }

Larequête retournelesdates des onerts pour lesquelsil existe unspetalede 'Corneille'

assoiéàlasalle du'Zenith'. Lerésultatdelarequêteontientdonlesvaleursdel'attribut

Date

des nuplets

t

de la relation

Concert

tels qu'il existe un nuplet

u

dans Spetale, or-

respondantàunspetalede 'Corneille'('est-à-diredontl'attributChanteur apourvaleur

'Corneille'), ave la même valeur pour l'attribut Spetale_ID que le nuplet

t

et tels qu'il

existe aussi un nuplet

v

dans la relation Salle, orrespondant à la salle du 'Zenith' (dont l'attributNomapourvaleur'Zenith'),avelamêmevaleurpourl'attributSalle_IDqueelle

del'attributSalle_IDdunuplet

u

.

EnSQL,partradutionimmédiatedelarequêteenalul àvariablenuplet:

SELECT Date

FROM Conert t, Spetale u, Salle v

WHERE t.Spetale_ID = u.Spetale_ID

AND u.Chanteur = 'Corneille'

AND u.Salle_ID = v.Salle_ID

AND v.Nom = 'Zenith'

2. Quelssontlesnomsdes sallesayantla plus grandeapaité ?

Enalgèbrerelationnelle: Cetterequêtenepeutpass'érireenalgèbrerelationnellenonéten-

due. Ilfaut unopérateurmaximum. Pourplusdedétails surl'algèbrerelationnelleétendue,

vouspouvezvousreporterauxpages103à111de[3℄ouauxpages221à230de[1℄.

Enalgèbrerelationnelleétendue 1

,larequêtes'exprimepar:

Π N om (σ (Capacite>=CapaciteM ax) Π Salle

_

ID,CapacitM ax [Salle×(Π M AX(Capacite) −→ CapaciteM ax) (Salle))])

Larequête

Π Salle

_

ID,CapacitM ax [Salle×(Π M AX(Capacite) −→ CapaciteM ax) (Salle))]

retourneune

relationtemporairededeuxolonnes,lapemièreontenantlesvaleursdel'attributSalle_ID

dela relation Salle et la deuxième olonne ontenantune seulevaleur (repétéepourtoutes

lesvaleursdeSalle_ID)orrespondantàlavaleurmaximalede l'attributCapaité(alulée

parlafontiond'agrégationMAXet renomméeenCapaiteMAX). L'opérateurutilisé est le

produit artésien(

×

). Pour obtenirle nom dessalles ave la plusgrande apaité, il sut

donde joindre àette relationtemporaireàla relationSalle et de séletionnerlesnuplets

ayantunevaleurdeCapaitésuperieureouégaleàelle del'attributCapaiteMax.

Enalulrelationnel:

{t.N om | Salle(t) ∧ ¬[∃ u Salle(u) (u.Capacite >= t.Capacite) ] }

Cetterequête retourne lesvaleursde l'attribut Nom desnuplets

t

de larelation Salle pour

1

L'algèbrerelationnelleétenduen'estpasauprogrammedel'examen.

(14)

lesquelsiln'existepasdenuplets

u

dansSalleaveunevaleurdel'attributCapaitésupérieure

ouégale.

EnSQL:

Ilest possiblede traduirediretement larequête expriméeen alul relationnel, ommei-

dessous.

SELECT Nom

FROM Salle t

WHERE NOT EXISTS (SELECT *

FROM Salle u

WHERE u.Capaité >= t. Capaité)

Il est également possible d'utiliser l'opérateur d'agrégation

M AX

, omme pour la requête

suivante.

SELECT Nom

FROM Salle

WHERE Capaité >= ( SELECT (MAX(Capaité)

FROM Salle

)

Ilestégalementpossibled'utiliserlemot-léALL:

SELECT Nom

FROM Salle

WHERE Capaité >= ALL ( SELECT Capaité

FROM Salle

)

3. Quelssontleshanteurs n'ayant jamaisréaliséde onert à la Cygale ?

Enalgèbrerelationnelle:

Π Chanteur (Spectacle)−Π Chanteur [Spectacle ⋊ ⋉ σ (N om= Cygale ) (Salle)]

Larequête

Π Chanteur [Spectacle ⋊ ⋉ σ (N om= ′ Cygale ) (Salle)]

retourneleshanteursayanthanté

aumoins une foisdans lasalle de la'Cygale'. Le résultatde larequête fnaleest obtenuen

supprimanteshanteursdelalistedetousleshanteurs.

Enalulrelationnel:

{t.Chanteur | Spectacle(t) ∧ ¬[∃ u, v Spectacle(u) ∧ Salle(v) ∧ (v.N om = Cygale ) ∧ (u.Chanteur = t.Chanteur) ∧ (u.Salle

_

ID = v.Salle

_

ID) ] }

La requête retourne les valeurs de l'attribut Chanteur des nuplets

t

de la relation Speta-

le telsqu'ilnesoit paspossiblede trouverunspetale dee mêmehanteur àla 'Cygale'

(i.e. de trouverun nuplet

u

dansSpetaleavela mêmevaleurpourl'attributChanteur et

unnuplet

v

dansSalleave'Cygale'ommevaleurdel'attributNomet avelamêmevaleur

que

u.Salle

_

ID

pourl'attributSalle_ID).

EnSQL:

SELECT Chanteur

FROM Spetale

WHERE Chanteur NOT IN (SELECT Chanteur

(15)

WHERE u.Salle_ID=v.Salle_ID

AND v.Nom='Cygale'

)

Cetterequête peut aussi s'exprimer ave un NOT EXISTS en utilisant une variable nuplet

t

danslepremier

F ROM

,parunesimpletradutiondualul relationnel: SELECT Chanteur

FROM Spetale t

WHERE Chanteur NOT EXISTS ( SELECT *

FROM Spetale u, Salle v

WHERE u.Salle_ID=v.Salle_ID

AND v.Nom='Cygale'

AND t.CHanteur=u.Chanteur

)

4. Quels sont leshanteurs ayant réaliséau moins un onert dans toutes lessalles

?

Enalgèbrerelationnelle:

Π Chanteur,Salle

_

ID (Spectacle ⋊ ⋉ Salle) ÷ Π Salle

_

ID (Salle)

Larequête

Π Salle

_

ID (Salle)

retournetouslesidentiateursdesalle.

Larequête

Π Chanteur,Salle

_

ID (Spectacle ⋊ ⋉ Salle)

retourne une relation assoiant à haque

hanteurl'identiateurdelasalledanslaquelleil aréaliséaumoinsunspetale.

Ladivisionvadonretournerleshanteursassoiésaumoinsunefoisàtouteslessallesdela

base.

Enalulrelationnel:

{t.Chanteur | Spectacle(t) ∧ [∀ u (Salle(u)) = ⇒ (∃ v Spectacle(v) ∧ (v.Chanteur = t.Chanteur)

∧ (u.Salle

_

ID = v.Salle

_

ID) ) ] }

La requête retourne les valeurs de l'attribut Chanteur des nuplets

t

de la relation Speta-

le telsque pour quel quesoit unnuplet, s'il s'agitd'une salle (donunnuplet

u

pris dans

Salle),alorsil existe unspetalede e hanteurdans ettesalle (donil existeunnuplet

v

dansSpetaleorrespondantàehanteur,ave

v.Chanteur = t.Chanteur

,et àette salle,

ave

u.Salle

_

ID = v.Salle

_

ID

).

Onpeutégalementérire:

{t.Chanteur | Spectacle(t) ∧ [∀ u ¬(Salle(u)) ∨ (∃ v Spectacle(v) ∧ (v.Chanteur = t.Chanteur)

∧ (u.Salle

_

ID = v.Salle

_

ID) ) ] }

Larequête retourneles valeursde l'attributChanteur desnuplets

t

de larelation Spetale

telsquepourquelquesoitunnuplet,soitilnes'agitpasd'unesalle(donilnes'agitpasd'un

nuplet

u

deSalle),soit(impliitementils'agitd'unnuplet

u

deSalleet)ilexisteunspetale

deehanteurdansettesalle(donilexisteunnuplet

v

dansSpetaleorrespondantàe hanteur,ave

v.Chanteur = t.Chanteur

,etàettesalle,ave

u.Salle

_

ID = v.Salle

_

ID

).

D'oùditdemanièrenégative:

{t.Chanteur | Spectacle(t) ∧ ¬[∃ u Salle(u) ¬(∃ v Spectacle(v) ∧ (v.Chanteur = t.Chanteur)

∧ (u.Salle

_

ID = v.Salle

_

ID) ) ] }

EnSQL:

SELECT Chanteur FROM Spetale t WHERE NOT EXISTS

(16)

( SELECT * FROM Spetale v

WHERE v.Chanteur = t. Chanteur AND u.Salle_ID = v.Salle_ID

)

)

5. Quels sont les dates et les identiateurs des onerts pour lesquels il ne reste

auun billetinvendu ?

Enalgèbrerelationnelle : Cette requête étant omplexe et ne peut pas s'exprimer àl'aide

d'unedivision. Ilest plus simplede l'érireen la déomposant. Une premièresous-requête

R 1

vapermettrededéterminerlesbilletsinvendus :

R 1 = Π Billet

_

ID (Billet) − Π Billet

_

ID (V ente)

Larequête

R 1

supprime dela listedes billets(

Π Billet

_

ID (Billet)

), euxqui ont étévendus

(

Π Billet

_

ID (V ente)

). Pourobtenirlesonertsauxquelsappartiennentesbilletsinvendus,il fautfaireunejointureavelarelationBillet(pourobtenirlavaleurdel'attributConert_ID

assoiéaubillet)puisaveConert(pourobtenirladate duonertassoié),soit:

R 2 = Π Date,Concert

_

ID (Concert ⋊ ⋉ Billet ⋊ ⋉ [Π Billet

_

ID (Billet) − Π Billet

_

ID (V ente)]

| {z }

R 1

)

Aunal,onsupprimelalistedesidentiateursdeonertsetdeleurdateassoiéeaurésultat

delarequête

R 2

,soit:

Π Date,Concert

_

ID (Concert)−

R 2

z }| {

Π Date,Concert

_

ID (Concert ⋊ ⋉ Billet ⋊ ⋉ [Π Billet

_

ID (Billet) − Π Billet

_

ID (V ente)]

| {z }

R 1

)

Enalulrelationnel:

{t.Concert

_

ID, t.Date | Concert(t) ∧ [∀ u Billet(u) (u.Concert

_

ID = t.Concert

_

ID) (∃

v V ente(v) ∧ (v.Billet

_

ID = u.Billet

_

ID) ) ] }

La requête retourne les valeurs des attributs Conert_ID et Date des nuplets

t

de la rela-

tionConert telsque pour tousles billetsde e onert(don pour touslesnuplets

u

dans

Billettelsque

u.Concert

_

ID = t.Concert

_

ID

),ilexisteuneventedeebillet(donilexiste

unnuplet

v

dansVenteorrespondantàebillet,i.e. telque

v.Billet

_

ID = u.Billet

_

ID

).

D'oùditdemanièrenégative:

{t.Concert

_

ID, t.Date | Concert(t) ∧ ¬[∃ u Billet(u) (u.Concert

_

ID = t.Concert

_

ID)

¬(∃ v V ente(v) ∧ (v.Billet

_

ID = u.Billet

_

ID) ) ] }

EnSQL:

SELECT Conert_ID, Date

FROM Conert t

WHERE NOT EXISTS (SELECT * FROM Billet u

WHERE u.Conert_ID=t.Conert_ID

AND NOT EXISTS (SELECT * FROM Vente v

WHERE u.Billet_ID = v.Billet_ID

)

)

(17)

normalisation

Exerie 5

Enoné de l'exerie

Soitunshémadebasesdedonnéesontenantlesrelationsuivantes:

Bureau(NumBureau,NumTelephone, Taille)ave

F Bureau = { N umBureau → N umT elephone, T aille; N umT elephone → N umBureau; }

Oupant(NumBureau,PersonneID)ave

F Occupant = { N umBureau → P ersonneID }

Materiel(NumBureau, NumPC)ave

F M ateriel = { N umP C → N umBureau }

1. Lesontraintesi-dessoussont-ellesvériéespareshémadebasesdedonnées? Silaréponse

estpositive,expliquezpourquoi. Si laréponse estnégative,indiquez quelle(s)dépendane(s)

fontionnelle(s)ilfautajouter/supprimeroumodier pourquelaontraintesoitvériée.

(a) "Unbureaupeutontenirplusieurspostestéléphoniques."

(b) "Ilyauneetune seulepersonneparbureau."

() "Unbureauontientunseulordinateur."

2. Apartirdesfamilles dedépendanesfontionnellesinitialesdonnéesdansl'énoné,indiquez

quellessontleslésminimalespossiblesdehaquerelation.

Corretion de l'exerie 5

1. Vériationdes ontraintes expriméespar des dépendanes fontionnelles:

(a) "Un bureaupeut ontenirplusieurs postestéléphoniques"

Cette ontrainte n'est pas vériée ar

F Bureau

ontient la dépendane fontionnelle

N umBureau → N umT elephone

donàunbureauest assoié unet unseulnumérode

téléphone. Pourquelaontrainte soit vériée, il faudraitsupprimer ettedépendanes

fontionnelle.

(b) "Il y auneetune seulepersonneparBureau."

Cetteontrainteestvériéear

F Occupant

ontientladépendanefontionnelle

N umBureau → P ersonneID

,donàunnumérodebureauestassoiéeuneetuneseulepersonne.

() "Un bureauontientunseulordinateur."

Cetteontrainten'estpasvériéearilyajustel'informationqu'unordinateurestdans

un seul bureau (

N umP C → N umBureau

) mais pas l'inverse. Pourque la ontrainte

soit vériée, ilfaudraitajouterladépendanefontionnelle

N umBureau → N umP C

.

(18)

F Bureau = { N umBureau → N umT elephone, T aille; N umT elephone → N umBureau; }

Larelation

Bureau

adondeux lésminimalespossibles:

N umBureau

et

N umT elephone

.

Eneet,àpartirdel'attribut

N umBureau

ilestpossiblededéduirelesdeuxautresattributs

delarelation(parlapremièredépendanefontionnelle).Parl'attribut

N umT elephone

,ilest

possible dedéduire

N umBureau

(2ème dépendane fontionnelle) et donl'attribut

T aille

(parlapremièredépendanefontionnelle). Onadon:

[N umBureau] + = {N umBureau, N umT elephone, T aille}

ar

N umBureau → N umT elephone, T aille

.

et

[N umT elephone] + = {N umT elephone, N umBureau, T aille}

,ar

N umT elephone → N umBureau

etdonpartransitivitéave

N umBureau → T aille

,onobtient

N umT elephone → T aille

.

F Occupant = { N umBureau → P ersonneID }

Larelation

Occupant

adonune seule minimalepossible:

N umBureau

.

F M ateriel = { N umP C → N umBureau }

Larelation

M ateriel

adonuneseuleminimalepossible:

N umP C

.

Pourplusdedétailssurlesdépendanes fontionnelles,vouspouvezvousreporterauxpages

422à430de[2℄.

Exerie 6

Enoné de l'exerie

Soit

R

une relationdontleshémaestlesuivant:

R(UtilisateurID,Nom,Prénom,AdresseEmail,Login, Passwd, ServeurMail).

1. Exprimer,àl'aidededépendanesfontionnelles,lesontraintessuivantesquedoiventvérier

lesinstanesdelarelation

R

:

(a) "Onpeutdéduirelenomet leprénomd'unutilisateuràpartirdesonidentiateur."

(b) "Unutilisateur(identiéparsonidentiateur)possèdeunseulloginetunseulpassword

parserveurdemails."

() "Uneadresseemailestassoiéeàunet unseulidentiateurd'utilisateur."

Attention: unutilisateurpeutavoirplusieursadressesdemails.

(d) "Uneadresseemailestassoiéeàunet unseulserveurdemails."

2. Indiquer,àpartirdelafamillededépendanesfontionnelles,issuede laquestion1,quelles

sontleslés mimimalesde

R

.

3. Indiquer,àpartirdelafamillededépendanesfontionnelles,issuedelaquestion1,enquelle

formenormaleestlarelation

R

.

(19)

1. Expressionde ontraintes par des dépendanes fontionnelles:

(a) "Onpeutdéduirelenom etleprénom d'unutilisateuràpartirde sonidentiateur."

Cetteontraintes'exprimeparladépendane fontionnelle:

UtilisateurID

−→

Nom, Prénom

En eet,àunidentiateurd'utilisateurest assoié unet unseulnomet unet unseul

prénom.

(b) "Unutilisateur(identiéparsonidentiateur)possède unseulloginetunseulpassword

par serveurde mails."

Cetteontraintes'exprimeparladépendane fontionnelle:

UtilisateurID,ServeurMail

−→

Login,Passwd

En eetpourun ouple(identiateur d'utilisateur, serveur de mail) est assoiéun et

unseulloginet unet unseulmotdepasse.

() "Une adresseemailest assoiéeàunetunseulidentiateurd'utilisateur."

Attention: unutilisateur peutavoirplusieurs adressesde mails.

Cetteontraintes'exprimeparladépendane fontionnelle:

AdresseEmail

−→

UtilisateurID

En eet,àune adressemailest assoiéeunet unseulidentiateurd'utilisateur.

(d) "Une adresseemailest assoiéeàunetunseulserveur de mails."

Cetteontraintes'exprimeparladépendane fontionnelle:

AdresseEmail

−→

ServeurMail

En eet,àune adressemailest assoiéeunet unseulserveurdemails.

2. Identiationdes lés minimalesde la relation

R

Lafamillededépendanes fontionnellesassoiéesà

R

est:

F = {

UtilisateurID

−→

Nom, Prénom; UtilisateurID,ServeurMail

−→

Login, Passwd;

AdresseEmail

−→

UtilisateurID; AdresseEmail

−→

ServeurMail

}

L'attributAdresseEmail nepeutêtre déduit d'auun autre attribut,il doit donappartenir

à tous les lés minimales possibles de la relation. A partir de l'attribut AdresseEmail on

peut déduire l'identiateur de l'Utilisateurest don, par transitivité, le nom et le prénom

del'utilisateur : AdresseEmail

−→

UtilisateurID

−→

Nom, Prénom. A partirde e même

attribut, on peut en déduire aussi le nom du serveur de mail et don ave l'identiateur

d'utilisateur,leloginetlemotdepassedel'utilisateur:

AdresseEmail

−→

UtilisateurID,ServeurMail

−→

Login, Passwd

D'où:

[AdresseEmail] + = {

AdresseEmail,UtilisateurID, Nom, Prénom,ServeurMail, Lo- gin,Passwd

} = R

Larelation

R

adonuneseuleminimalepossible:

AdresseEmail

.

3. Dédution de la forme normaledu shéma de la relation

R

Lesdeuxdernièresdépendanesfontionnellessontdelaformeléprimaire

−→

autreattribut,

etvérientdonlespropriétésde laformenormaleBCNF. En revanhe,lesdeux premières

dépendanes fontionnelles sont transitives puisqu'elles ne sont omposées que d'attributs

n'appartenant pas à une lé. Par onséquent, le shéma de la relation

R

est en deuxième

formenormale.

(20)

del'ouvrage[1℄, auhapitre15del'ouvrage[2℄ouauhapitre7del'ouvrage[3℄.

(21)

[1℄ H. Garia-Molina, J.D. Ulmann et J. Widow, Database Systems - The Complete Book,

PrentieHall, 2002

[2℄ R.Ramakrishnanet J.Gehrke,DatabaseManagementSystems, SeondEdition; MGraw-

Hill,2000,ISBN:0-07-232206-3

[3℄ A. Silbershatz, H.F. Korth et S. Sudarshan, Database System Conepts, 4th Edition,

MGraw-Hill,2002,ISBN:0-07-228363-7

[4℄ C.Soutou,DeUMLàSQL -Coneptiondebasesde données,Eyrolles,2002,ISBN:2-212-

11098-7

Références

Documents relatifs

 Titres de participation : Les titres représentant des parts de capital dans les entreprises dont la possession durable est estimée utile à l’activité de

Présentation d'IBM Global Business

le nez offre des arômes de petits fruits rouges avec des

Déterminé à poursuivre l’action sur ce dossier crucial pour l’ensemble de la profession comme pour les élèves, le SNES entend faire toucher du doigt à Luc Chatel

Langage mahine.- L'éhange peut avoir lieu entre registres ou registre et ase mémoire :.

Cei doit être eetué à partir d'une page pour laquelle les adresses virtuelles sont. égales aux adresses physiques ( hh identity mapped ii

Lorsque deux droites sont perpendiculaires à une même troisième alors elles sont parallèles donc (AB) et (FE) sont parallèles... 2) Dans le triangle OFE, (AB) et (FE) sont parallèles

moins chaque année, du plan des réseaux pour les extensions, réhabilitations et renouvellements de réseaux (en l'absence de travaux, la mise à jour est considérée comme