Examen d’informatique (base de donn´ees) – L3 SV
Jean-Baptiste Lamy 17 Mai 2013 - 14h00 - 16h00
Rappel : les documents (cours, TP, notes personnelles) sont autoris´es lors de l’examen. Les t´el´ephones portables sont interdits !
Exercice 1 :
Nous souhaitons cr´eer une base de donn´ees sur les dinosaures afin d’alimenter un CD-ROM ludique et ´educatif.
La base de donn´ees devra contenir des informations sur les esp`eces de dinosaures (ex : Brontosaure, Diplodocus,...), sur les familles taxonomiques (ex : Diplodocidae, Tyrannosauridae) et sur diff´erentes ´epoques (ex : Jurassique inf´erieur, Jurassique moyen, Cr´etac´e,...). On souhaite aussi pouvoir renseigner pour chaque esp`ece de dinosaure son nom, sa taille (en m`etre), la famille correspondante et la ou les ´epoques `a laquelle cette esp`ece a v´ecu. Pour chaque ´epoque, on renseignera la date de d´ebut et la date de fin (en millions d’ann´ees par rapport `a aujourd’hui).
1. Quelles sont les tables n´ecessaires dans cette base de donn´ees ? (1 point) R´eponse :
Table dinosaure, famille, ´epoque, a vecu a lepoque
2. Quelles sont les relations entre ces tables ? De quels types sont-elles ? (1 point) R´eponse :
dinosaure - famille : a pour famille : * - 1 dinosaure - ´epoque : a vecu a lepoque : * - *
3. Quelles sont les attributs de chaque table ? De quels types sont ces attributs ? (1 point) R´eponse :
dinosaure : id (integer), nom (text), taille (float), id famille (integer) famille : id (integer), nom (text)
epoque : id (integer), nom (text), d´ebut (integer), fin (integer) a vecu a lepoque : id dinosaure (integer), id epoque (integer)
4. Donner le code SQL permettant la cr´eation des tables (y compris les tables de liaisons si n´ecessaire). (3 points)
R´eponse :
CREATE TABLE dinosaure (
id INTEGER NOT NULL AUTO INCREMENT PRIMARY KEY, nom TEXT,
-taille FLOAT, id famille INTEGER, ) ;
CREATE TABLE famille (
id INTEGER NOT NULL AUTO INCREMENT PRIMARY KEY, nom TEXT,
) ;
CREATE TABLE epoque (
1
id INTEGER NOT NULL AUTO INCREMENT PRIMARY KEY, nom TEXT,
debut INTEGER, fin INTEGER, ) ;
CREATE TABLE a vecu a lepoque ( id dinosaure INTEGER,
id epoque INTEGER, ) ;
5. Donner le code SQL permettant d’entrer dans la base de donn´ees : (2 points)
(a) la famille des Pterodactylidae (NB on consid`erera que cette famille re¸coit l’ID n° 32),
(b) l’´epoque du Jurassique sup´erieur, qui a d´ebut´e il y a 161 millions d’ann´ees et s’est achev´ee il y a 145 millions d’ann´ees (NB on consid`erera que cette ´epoque re¸coit l’ID n° 12),
(c) l’esp`ece Pt´eranodon, de la famille Pterodactylidae et mesurant 7,5 m`etres, qui a v´ecu au Jurassique sup´erieur (NB on consid`erera que cette famille re¸coit l’ID n° 124).
R´eponse :
INSERT INTO famille VALUES (32, ”Pterodactylidae”) ;
INSERT INTO epoque VALUES (12, ”Jurassique sup´erieur”, 161, 145) ; INSERT INTO dinosaure VALUES (124, ”Pt´eranodon”, 7.5, 32) ; INSERT INTO a vecu a lepoque VALUES (124, 12) ;
(Tournez la page SVP)
2
Exercice 2 :
Nous avons r´ealis´e une base de donn´ees sur les maladies g´en´etiques caus´ees par des mutations ponctuelles (substitution d’une base par une autre, aussi appel´ee SNP pour Single Nucleotide Pattern). La base de donn´ees comprend quatre tables : Maladie, Gene, SNP et A pour SNP.
La table maladie contient les attributs nom (le nom de la maladie), description (description textuelle de la maladie), et dominante (0 si la maladie est r´ecessive, 1 si la maladie est dominante).
La table Gene comprend les attributs nom (le nom du g`ene) et sequence (la s´equence du g`ene).
La table SNP comprend les attributs id gene (identifiant du g`ene sur lequel porte le SNP), position (la position o`u a lieu la substitution, en paire de base) et nouvelle base (la nouvelle base qui remplace la base normale dans ce SNP).
La table A pour SNP est une table de liaison qui relie les maladies aux SNP associ´ees.
Table Maladie :
id nom description dominante
(integer) (text) (text) (integer)
1 Acidurie m´evalonique D´eficit complet en m´evalonate kinase 0 2 Galactos´emie de type 1 Maladie du m´etabolisme du galactose 0 ... (18 723 lignes en tout)
Table Gene :
id nom sequence
(integer) (text) (text)
1 M´evalonate kinase AUGGCTT...
2 Galactose-1-phosphate uridylyltransferase AUGTTCA...
... (15 865 lignes en tout) Table SNP :
id position nouvelle base id gene (integer) (integer) (text) (integer)
1 157 A 1
2 85 A 1
3 333 T 2
... (25 853 lignes en tout)
Table A pour SNP : id maladie id SNP (integer) (integer)
1 1
1 2
2 3
... (25 987 lignes en tout) NB : les diff´erentes questions sont ind´ependantes.
1. Quelles sont les relations entre les tables Maladie, Gene et SNP ? De quels types sont ces relations ? (1 point) R´eponse :
Maladie - SNP : * - * SNP - Gene : * - 1
2. Afin de remplir cette base de donn´ees, dans quelle base existante peut-on trouver les informations suivantes : (1 point)
(a) les s´equences des g`enes ?
(b) les maladies caus´ees par les diff´erentes anomalies g´en´etiques ? (c) la description de la maladie (en fran¸cais) ?
R´eponse :
EMBL, OMIM, Orphanet.
3. Quelle est la description de la maladie “Acidurie m´evalonique”? (NB pour cette question et les suivantes, on donnera la requˆete SQL permettant d’obtenir la r´eponse `a la question ; 1 point)
R´eponse :
SELECT description FROM Maladie WHERE nom = ”Acidurie m´evalonique”;
3
4. Combien y a-t-il de maladie g´en´etique dominante dans la base ? (1 point) R´eponse :
SELECT COUNT(id) FROM Maladie WHERE dominante = 1 ;
5. Par quelle(s) base(s) peut ˆetre substitu´ee la base en position 90 du g`ene de la “Lactalbumine”? (2 points) R´eponse :
SELECT SNP.nouvelle base FROM Gene, SNP WHERE Gene.nom = ”Lactalbumine” AND SNP.position
= 90 AND SNP.id gene = Gene.id ;
6. Quelle est la base d’origine en position 90 sur le g`ene de la “Lactalbumine”, avant substitution ? (astuce : on utilisera la fonction SUBSTR ; 1 point)
R´eponse :
SELECT SUBSTR(sequence, 90, 1) FROM Gene WHERE nom = ”Lactalbumine”;
7. Combien de SNP diff´erents peuvent causer la maladie “D´eficience en lactase”? (2 points) R´eponse :
SELECT COUNT(SNP.id) FROM Maladie, SNP, a pour SNP WHERE Maladie.nom = ”D´eficience en lac- tase” AND A pour SNP.id maladie = Maladie.id AND A pour SNP.id SNP = SNP.id ;
8. Quelles sont les noms des g`enes sur lesquels des mutations peuvent provoquer la maladie “Citrullin´emie”?
Attention, on ´evitera de lister plusieurs fois le mˆeme g`ene (dans le cas o`u plusieurs SNP sur des positions diff´erents mais sur un mˆeme g`ene provoqueraient cette maladie). (3 points)
R´eponse :
SELECT DISTINCT Gene.nom FROM Gene, SNP, Maladie, A pour SNP WHERE Maladie.nom = ”Ci- trullin´emie” AND A pour SNP.id maladie = Maladie.id AND A pour SNP.id SNP = SNP.id AND Gene.id
= SNP.id gene ;
4