Vous êtes sur la page 1sur 4

Bases de Données 1 2021-2022

2022-2023
TD Modèle relationnel
Exercice 1 Quelques requêtes simples.
Soient les relations CHIEN S , HOM M ES et DRESSE
CHIENS Prenom HOMMES Prenom DRESSE Homme Chien Annee
Arthur Arthur Arthur Corso 2010
Billy Bernard Bernard Billy 2012
Corso Charles Charles Corso 2008
Damien

1. Donner la valeur (i.e. écrire la relation calculée par) des expressions suivantes, et indiquer en
français ce qu'elles calculent :
σAnnee>2009 (DRESSE) , HOM M ES ∩ CHIEN S , Card(HOM M ES ∪ CHIEN S),
Π(homme,chien) (DRESSE), (Charles) ∈ HOM M ES ,

2. Dire en français ce que font les aectations suivantes :


HOM M ES ← HOM M ES ∪ {(Etienne)},
DRESSE ← DRESSE − σAnnee<2011 (DRESSE) ,

3. Donner en algèbre relationnelle les termes calculant :


a - tous les couples (chien, humain) possibles, b - prénoms de tous les animaux (chienouhumain),
c - les chiens qui sont dressés, d - les chiens dressés par Billy après 2010,
e - le nombre de chiens dressés, f - les humains qui ont dressé tous les chiens.
On supposera pour la question f que l'attribut de la table CHIENS s'appelle chien au lieu de
Prenom

4. Dans la relation DRESSE, nous souhaitons :


a) faire en sorte qu'un humain ne puisse dresser qu'un seul chien (mais un chien peut avoir
plusieurs dresseurs dans sa vie). Dans ce cas, que doit on choisir comme clé de la relation ?
b) interdire le fait qu'un même couple (homme, chien) puisse apparaître plusieurs fois dans cette
relation, par exemple on veut interdire la possiblité d'avoir simultanément (Bernard, Billy, 2012)
et (Bernard, Billy, 2008), ce qui indiquerait que Bernard a dressé Billy, une fois en 2012, et une
fois en en 2008. Que choisir comme clé maintenant ?

5. Pour gérer les liens entre chiens, nous avons la relation AV U (P renom_1, P renom_2). Si le
couple (p1 , p2 ) appartient à AV U , alors cela veut dire que le chien p1 a déjà vu le chien p2 . Bien
sûr cela n'est pas forcément réciproque, le chien p1 a pu avoir vu p2 sans que p2 ait vu p1 ; mais
il peut y avoir 2 exemplaires de la même paire {p1 , p2 } si les prénoms ne sont pas dans le même
ordre (ex: si AV U contient (Billy, Corso) et (Corso, Billy) indique que Billy a vu, et a été vu,
par Corso).
• Donner une expression calculant la liste de tous les couples de chiens (A, B) tels que A a vu B
et que B a vu A (chacun a vu l'autre).
• Comme précédemment, donner une expression calculant la liste de toutes les paires {A, B}
telles que A a vu B et B a vu A. Mais attention, cette fois, on veut que chaque paire apparaisse
une seule fois. Par exemple, si AV U contient les deux couples (Billy, Corso) et (Corso, Billy),
on achera un seul de ces deux couples. Si AV U contient un seul des deux couples (Billy, Corso)
ou (Corso, Billy), on n'achera aucun de ces deux couples.
Remarque : nous avons la possibilité de comparer les chaines de caractères avec l'opérateur <.

1
6. Lorsqu'on fait des manipulations sur les relations, il faut pouvoir dénir précisement, sans aucune
ambiguité les attributs que l'on souhaite manipuler. Cela pose parfois certains problèmes : par

exemple si on veut utiliser dans une même expression plusieurs relations dont certains attributs
portent le même nom, ou bien lorsqu'on veut faire l'union de relations dont les attributs portent
des noms diérents.
La fonction rename(table, {oldN ame_1→newN ame_1, ...oldN ame_i→newN ame_i, ...}) per-
met de renommer les attributs d'une relation.
Ainsi rename(DRESSE, {homme→prenom_1, chien→prenom_2}) retourne comme résultat
la relation :
prenom_1 prenom_2 Annee
Arthur Corso 2010
Billy Belphegor 2012
Catherine Corso 2002

• Écrire l'aectation (ou les suites d'aectations) permettant de remplir la table AV U avec
l'ensemble de tous les liens de connaissances possibles entre animaux, que ce soit entre chien et
humain, entre chien et chien, entre humain et humain, ou entre humain et chien.
Dans l'absolu, il faudrait faire ce renommage à chaque fois que nécessaire ; mais en pratique c'est
très lourd de l'écrire, et on s'abstiendra en TD si le contexte ou les noms sont clairs et lèvent
toute ambiguité.

Exercice 2 Les clés de l'hôpital.


Nous avons le schéma relationnel (clés primaires soulignées comme d'habitude).
• Patient = (NSS, NomP, DdN).
Un patient, caractérisé par son numéro de sécu, a un nom et une date de naissance.
• Medecin = (NMedecin, NomM, Specialite, NService).
Un médecin, caractérisé par son numéro, a un Nom, une spécialité et appartient a un service.
NService est une clé étrangère qui référence Service(NService).
• Service = (NService, NomS, Chef).
Un service, repéré par son numéro, a un nom, et un chef de service (un des médecins de l'hôpital).
Chef est une clé étrangère qui référence Medecin(NMedecin).
• Sejour = (NMalade, NService, NMedecin, date_debut, date_n).
Un patient séjourne dans un service sous la responsabilité d'un médecin entre deux dates.
NMalade est une clé étrangère qui référence Patient(NSS).
NMedecin est une clé étrangère qui référence Medecin(NMedecin).
NService est une clé étrangère qui référence Service(NService).
• Acte = (NMalade, NMedecin, date, NomSoin, Cout).
Un médecin eectue des actes sur un patient a une date pour un certain coût.
NMalade est une clé étrangère qui référence Patient(NSS)
NMedecin est une clé étrangère qui référence Medecin(NMedecin)
1. (a) À quelle condition un même médecin peut-il eectuer plusieurs actes sur un même patient ?
Que proposez vous pour qu'il n'y ait plus aucune restriction à ce qu'un même médecin puisse
eectuer plusieurs actes sur un même patient ?
(b) Certains actes compliqués nécessitent la participation de plusieurs médecins. Ce shéma
relationnel le permet-il ? Pourquoi ? Si non, proposez une modication (tout est autorisé)
du schéma relationnel pour prendre en compte cette possibilité.

2. La clé de la relation Séjour n'est pas précisée. Pour chacun des cas suivant, donner la bonne
clé de cette relation (on suppose évidemment que l'hôpital peut accueillir autant de malades que
nécessaire chaque jour) :

2
a) Un malade séjourne au plus une fois dans l'hôpital.
b) Un malade séjourne autant de fois qu'il est nécessaire (bien sûr à des dates d'entrées dif-
férentes).
c) Si un malade eectue plusieurs séjours, alors, alors ce doit être à chaque fois sous la respons-
abilité de médecins diérents.

3. Pour quels attributs de ce schéma autoriseriez-vous (et pourquoi) la valeur Null.

4. En algèbre relationnelle, donner les termes calculant (à partir du schéma originel) :


a) les numéros de sécu des patients nés en 1965.
b) les noms des patients dont un séjour est sous la responsabilité du docteur Mabuse.
c) les noms des patients qui n'ont jamais été sous la responsabilité du docteur Mabuse.
xs d) les noms des patients qui ne sont jamais soignés par le docteur Mabuse, que ce soit pour
des actes, ou comme responsable.
e) les numéros de sécu des patients qui ont pour responsable le médecin responsable du patient
de nom Magoo.
f) les numéros des patients sur lesquels d'autres médecins que leur médecin responsable (de leur
séjour) font des actes.
g) donner un terme calculant les numéros des médecins qui sont les seuls à eectuer des actes
sur les patients dont ils sont responsables. Autrement dit, donner la liste de tous les médecins
X tels que pour tout patient P eectuant un séjour sous la responsabilité de X , alors seul X
eectue des actes sur P .

Exercice 3 Refonte d'un schéma relationnel.


Soit la relation contenant les informations sur des factures :
numFact totalFact payee numCli nomClient telClient villeCli popVille numVendeur nomVendeur posteVendeur
110 123,30 OUI 1 ARNAGE 0723626555 Le Mans 143000 10 AMICAL 122
111 2450,00 NON 1 ARNAGE 0723626555 Le Mans 143000 2 BEREAU 561
112 119,97 OUI 2 BITONIO 021111777 Bordeaux 246580 10 AMICAL 122
113 9678,10 NON 3 CARMIN 010687322 Le Mans 4300 2 BEREAU 561
114 8711,32 NON 3 CARMIN 0106873225 Le Mans 4300 7 CLUZET 455
115 33122,80 OUI 1 ARNAGE 0723626555 Le Mans 143000 7 CLUZET 455
NULL NULL NULL NULL NULL NULL NULL NULL 8 DENIS 333
NULL NULL NULL NULL NULL NULL Poitiers 87000 NULL NULL NULL

1. Tout système de gestion de base de données doit respecter certaintes propriétés, lesquelles ne
sont pas respectées ici ?

2. Décomposer cette relation pour construire un bon schéma relationnel.

3
Exercice 4
Soit le schéma relationnel :
Fleuve = (NumFleu, Nom, Longueur)
Traverse = (NumFleu, NumPays)
NumFleu est une clé étrangère qui référence Fleuve(NumFleu),
NumPays est une clé étrangère qui référence Pays(NumPays).
Pays = (NumPays, Nom, Supercie, Population)
Appartient = (NumPays, NomCont, Pourcentage)
NumPays est une clé étrangère qui référence Pays(NumPays),
NomCont est une clé étrangère qui référence Continent(Nom).
Continent = (Nom, Supercie)
Appartient
La relation Pourcentage % surface du pays NumPays appartenant au
indique le de la
continentNomCont NumPays, nous avons dans Appartient
. Exemple : si la Turquie a 12 comme
les deux enregistrements (12, Europe, 10%) (12, Asie, 90%)
et

1. Validité du schéma relationnel.


a) La clé de la relation Appartient n'est pas précisée. Que devrait-on choisir, en sachant qu'un
pays ne peut appartenir qu'une seule fois à un même continent ?
b) Dans cette base de données, combien de fois (de manière directe ou indirecte) est stockée la
surface d'un continent ? Quelle incohérence peut-il se produire donc ?
Donner donc, au sujet de la surface, une contrainte d'intégrité que devrait respecter la base.
c) Pourquoi n'est-il pas possible de connaître la population d'un continent ?
d) Pourquoi n'est-il pas possible d'être certain du continent dans lequel est un euve ?

2. Calculer en algèbre relationnelle :


a) les noms des euves de plus de 1000 km,
b) les euves traversant un pays de plus de 100000 km2
c) les noms des pays pays appartenant à plus d'un continent,
d) les numéros de euves traversant un pays d'Asie,
e) le nombre de euves dont la longueur dépasse 1000 km,
f) la(les) supercie(s) du (des) continent(s) traversés par l'Amou-Daria,
g) la(les) longueur(s) du(des) Fleuve(s) ne traversant pas un pays traversé par l'Amou-Daria.
h) les euves traversant l'Espagne OU le Portugal,
les euves traversant l'Espagne ET le Portugal,
les euves traversant l'Espagne, mais pas le Portugal.
i) les pays qui ne sont traversés par aucun euve,
les pays traversés par au moins 2 euves,
les pays traversés par exactement 2 euves,
les pays traversés par au moins 50 euves,
j) le euve le plus long.

Vous aimerez peut-être aussi