2009

publicité
EPU GB 4ème année
Examen du 25 mai 2009
Bases de données relationnelles
Documents autorisés.
Exercice 1 : (SQL)
On considère une base de données dans laquelle sont stockées des séquences nucléiques codantes
et des séquences protéiques. Le schéma est composé des 4 relations suivantes :
organisme(idOrg, nomOrganisme, nbChrom)
chromosome(idChrom, idOrg, longChrom)
seqNC(idSNC, idChrom, debut, sens, longADN, seqADN)
seqProt(idProt, idSNC, longP, seqAA)
Chaque organisme (table organisme) est représenté par un identifiant, un nom et par le nombre
de chromosomes qu’il contient. Par exemple le n-uplet (123,human,46) de la relation organisme
indique que l’organisme d’identifiant 123 est celui de l’homme (human) et contient 46 chromosomes. Chacun des chromosomes (table chromosome) est identifié par un numéro (idChrom), il
fait référence à l’organisme dont il est extrait, et on lui associe sa longueur (longChrom). La table
seqNC donne la liste des séquences nucléiques codantes qui sont représentées par un identifiant
idSNC. Chaque séquence codante est localisée sur un chromosome idChrom, les champs debut,
sens, longADN et seqADN représentent respectivement la position de début de séquence sur le
chromosome, le sens de lecture, la longueur et enfin la séquence elle-même. Enfin, une protéine
(table seqProt) est identifiée par un numéro (idProt), elle fait référence à la séquence nucléique
codante associée (idSNC), et elle est représentée par sa longueur (longP), et la séquence (seqAA).
Ainsi, plusieurs protéines peuvent provenir de la même séquence codante (épissage alternatif).
1. Donnez une requête permettant de trouver la longueur moyenne des séquences nucléiques
codantes du chromosome dont l’identifiant est Human21b.
2. Donner une requête SQL permettant de trouver les séquences nucléiques codantes pour lesquelles on connaı̂t plusieurs protéines associées. Les trier par ordre décroissant de nombre
de séquences protéiques associées.
3. Donnez une requête SQL permettant de classer les identifiants des chromosomes de l’organisme Human par nombre décroissant de séquences protéiques qu’ils contiennent.
4. Donnez une requête SQL permettant de trouver les séquences nucléiques codantes pour
lesquelles on ne connaı̂t pas de protéines associées.
Exercice 2 : (Algèbre relationnelle)
A partir du schéma donné ci-dessous, exprimez en algèbre relationnelle chacune des quatre
requêtes suivantes.
Patient (numéroPatient, nom, adresse, ^
age)
Médecin (numéroPraticien, nom, adresse)
Prescription (numéroPraticien, numMed, quantité, date, numéroPatient)
Médicament (numMed, prix)
1. Quels sont les numéros des patients qui ont eu une ordonance depuis le 1er janvier 2009 ?
2. Quelles sont les adresses des médecins qui ont prescrit un médicament dont le prix dépasse
150 euros ?
3. Quels sont les numéros des patients auxquels le médicament de numéro M1 a été prescrit
en quantité supérieure à celle prescrite au patient de numéro patient1 ?
4. Donner la liste des médecins qui ont prescrit après le 15 mai 2009, l’ensemble des médicaments
qui ont été prescrit au moins une fois depuis le 15 mai 2009. On ne donnera que le numéro
du praticien.
Indication : il s’agit d’une division.
Exercice 3 : (Amélioration d’un schéma de BD)
Un informaticien débutant a créé une base de données pour l’occupation des chambres d’un hopital avec une seule table : Hopital(NumService, NomService, NumChambre, Etage, SurfaceChambre,
NbPlaces, NumPatient, NomPatient,Débuthospitalisation, FinHospitalisation). Intuitivement,
chaque n-uplet de cette table exprime le fait qu’un patient est hospitalisé à des dates bien précises dans
une chambre donnée et qu’il est rattaché à un service donné. Notons d’une part que plusieurs patients
dans la même chambre peuvent dépendre de services disctincts, et d’autre part que pendant une hospitalisation, un patient ne change pas de chambre. Ce deuxième point signifie qu’à partir du numéro de
patient et de la date de début d’hopitalisation, on est capable de déterminer sa chambre ainsi que le
service dont il dépend.
L’objectif de cet exercice est d’améliorer ce schéma.
1. Trouvez les dépendances fonctionnelles.
2. Trouvez tous les identifiants de la table Hopital. Combien y en a-t-il ?
3. Est-elle sous 2ème Forme Normale ? 3ème Forme Normale ? Justifiez vos réponses.
4. Normalisez la table pour qu’elle soit sous 3ème Forme Normale. Justifiez les différentes décompositions
que vous effectuez. Pour chacune des tables obtenues, donnez les identifiants.
5. La décomposition préserve-t-elle les dépendances fonctionnelles ? Autrement dit, est-ce que toutes
les dépendances fonctionnelles élémentaires non déduites trouvées en 1 se retrouvent dans l’une
des tables obtenues ?
Téléchargement