introduction aux bases de données en sciences de la vie et en santé
DESCRIPTION
Introduction aux Bases de données en Sciences de la Vie et en Santé. UE : Conception de bases de données Master1 - BIG Master1 - MTIBH Fouzia Moussouni-Marzolf. L’utilisateur doit écrire un programme souvent complexe !!!. ?. ?. Un peu d’histoire …. Limites de l’utilisation des fichiers. - PowerPoint PPT PresentationTRANSCRIPT
Introduction aux Bases de données
en Sciences de la Vie et en Santé.
UE : Conception de bases de données
Master1 - BIG
Master1 - MTIBH
Fouzia Moussouni-Marzolf
Limites de l’utilisation des fichiers
Comment créer un index ?
Quelles sont mes données ?
?Comment les manipuler ?
Données : redondantes, peu fiables, ponctuelles
L’utilisateur doit écrire un programme souvent
complexe !!! #% »*’àç @é()$£ »&@!!!!
?
Application : rigide, longue, coûteuse
Comment les structurer?Comment y accéder ?
Un peu d’histoire …
Les utilisateurs exigent de plus en plus :
• des systèmes globaux• des systèmes cohérents• de ne pas écrire des programmes complexes (ou plutôt compliqués!)• d’avoir des réponses rapides aux questions qu’ils posent• avoir des données à jour, ...
OutilsExhaustive
non redondantestructuréepersistante
BD SGBD
décriremodifier interroger
Exemple de base de données PPI : interactions protéines protéines
• expériences , complexes, protéines, interactions, familles fonctionnelles.
• Données :– Les expériences, liste des interactions révélées, liste des
protéines impliquées, les complexes protéiques auxquels elles participent, leurs familles fonctionnelles, … etc.
• Applications– analyse des interactions, annotations fonctionnelles, – aide à la compréhension de phénomènes biologiques
BD sur les Interactions protéiques
• Associations entre objets :
• Données (ou objets) : protéines, interactions, complexes
• binaires : une interaction fait intervenir 2 protéines.• n-aires : une protéine peut apparaître dans plusieurs interactions. • diverses relations pour un même objet
La protéine X (SNF1) intervient dans l’interaction Y (avec SNF4)
La protéine X participe au complexe Z
L ’interaction Y est détectée dans l ’expérience E
• Des Modèles pour représenter ces objets Objet ou Entité ainsi que leurs associations
Protéines
N° Acc Descrip
Sequence
Interagit Complexe Protéique
Fonction Conformation
Données (entités)
Associations
0:n 2:n
Cardinalité 0:n pour l´entité <Protéines> : exprime qu‘une protéine peut être partenaire dans aucune (0) ou plusieurs complexes
BD sur les Interactions protéiques
Architecture d'un SGBDOn distingue 3 niveaux dans une BD (norme ANSI/SPARC):
Niveau interne ou physique.
Le niveau interne permet de décrire les données telles qu'elles sont
stockées dans la machine, en particulier dans les fichiers qui les
contiennent (nom, localisation, taille,…).
Niveau logique.
Le niveau logique permet de décrire, de manière "abstraite" et
structurée, la réalité du monde ou de l'application.
Niveau externe
Au niveau externe, les schémas ou vues décrivent la partie des données
présentant un intérêt pour un utilisateur ou un groupe d'utilisateurs.
Fonctionnalités du Niveau Physique
• Gestion des données sur mémoire secondaire (fichiers).
• Partage des données et gestion de la concurrence d'accès.
• Reprise sur pannes (fiabilité).
• Distribution des données et interopérabilité.
Architecture d'un SGBD
• Définition de la structure de données : Langage de Description de Données (LDD).
• Consultation et mise à jour des données : Langages de Requêtes (LR) et langage de manipulation de Données (LMD).
• Gestion de la confidentialité (sécurité).
• Maintien de l'intégrité.
Architecture d'un SGBD
Fonctionnalités du Niveau Logique
Fonctionnalités du Niveau Externe
• Vues ou schémas externes décrivant la partie des données qui présentent un intérêt pour un utilisateur ou un groupe d'utilisateurs.
• Environnement de programmation (intégration d’un langage de programmation).
• Interfaces conviviales.
• Outils d'aides pour la conception de schémas.
• Outils de saisie, d'impression.
• Passerelles (réseaux, autres SGBD, ...).
Architecture d'un SGBD
questions réponses
Transparence
Système de Gestion de Bases de DonnéesObjectifs
Résistance aux pannes.
SGBDapplicationsbesoins
des fonctions intégrées
Indépendance physique et logique.Manipulation des données sans savoir programmer
(langages « quasi naturels »).
Efficacité des accès aux données.Administration centralisée.
Non redondance.Cohérence.
Partageabilité.
Sécurité.
Comment assurer ces objectifs ?
Les trois niveaux de descriptions définies par la norme ANSI/ SPARC
BD ...
Niveau interneStockage
Niveau conceptuel ou logique Vues
Vues d’une base de données <université> :
• Vue1 : Planification des cours (nom du cours, nom du professeur, horaires et salles, liste des étudiants).
Exemple de vues
• Vue2 : Paye des professeurs (nom, prénom, age, adresse, grade, nombre d'heures, …).
• Vue3 : Résultats scolaires des étudiants .
Remarque : Les données utilisées par une vue peuvent être « dérivées » de la base de données et ne pas être présentes physiquement dans la base.
Exemple : l´age est calculé à partir de la date de naissance.
La description des données est le résultat de la conception d’une base de données
• ensemble de concepts et de règles pour construire la réalité avec des types de données
Un SGBD est caractérisé par le modèle de description des données qu’il supporte.
Les données sont décrites selon ce modèle grâce à un langage de description des données.
Une fois les données décrites structurellement, on peut :• les insérer• les lire, afficher• les modifier• les détruire
Choix d’un modèle de données (relationnel, objet, etc.)
Un modèle de données est un :• outil intellectuel pour comprendre l’organisation logique des données ou de la connaissance.
Description des données : Schéma
Manipulation des données
Les composants d ’un SGBD
« quelque soit le modèle de données qu’il supporte »
4 Outils pour permettre un accès concurrent aux données de façon cohérente.
pouvant êtreclassiques aussi
«Chacun de ces composants sera étudié ».
1 Outils de description des données (en gros des langages) :- décrire la vision qu’a l ’utilisateur des données- décrire le stockage physique des données.
2 Outils de manipulation des données :- interroger,- modifier,- détruire,- croiser
les données, de façon optimisée via :
- des langages de manipulation des données, SQL, OQL
- des extensions de langages classiques. JAVA, C++, Python ...
3 Outils de sauvegarde et récupération après panne
Retour sur l’histoire …
Début des systèmes de gestion de bases de données orienté-objets.
1960 Uniquement des systèmes de gestion de fichiers très sophistiqués
1970 Début des systèmes de gestion de bases de données réseaux ethiérarchiques, très proches des systèmes de gestions de fichiers.Inconvénient : on doit savoir la localité (chemin) de l ’information recherchée.
Sortie de la théorie des relations et fondements des bases de donnéesrelationnelles (Papier de E.F. CODD)A relational model of data for large shared data banks, Communications of the ACM 13(6), 377-387, 1970
1980 Apparition sur le marché des systèmes de gestion de bases de données relationnelles -Capacités plus grandes d'adaptation aux évolutions de la gestion
1990 Les systèmes de gestion de bases de données relationnelles dominent le marché
(Mais aussi compliqués ! et non adpatés )
A parte Base de données
Il existe plusieurs « styles » de BDD :– Hiérarchique– Réseau– Relationnelle– Objet– multi dimensionnelle…
Base de données : données organisées, stockées dans des fichiers liés entre eux grâce à un SGBD
Base de données hiérarchique
Patron
Sous-chef
ChefChef
Sous-chef Sous-chef Sous-chef Sous-chef
Cellule
Chromosome
Gène
Base de données réseau
Patron
Sous-chef
ChefChef
Sous-chef Sous-chef Sous-chef Sous-chef
Patron
Chromosome
CodeChromosomeNumChromosome….
Genome
CodeGenomeNomGénome….
Gene
CodeGeneNomGene….
CodeGénome CodeChromosome
Select Cekejeuveu From LaTableKeJeudi Where LaConditionKimeuplé
Select NomGene From TableGene Where CodeChromosome = HUM-10
Base de données relationnelleUne table ? Plusieurs tables ?
PersonneAdresseSalaireLieu de travail
Chef
Scooter de fonctionRef patron
Patron
Primes de responsabilitéVoiture de fonction
Sous-chef
Vélo de fonctionRef chef
Base de données objet
Transcris épissé
TailleSéquence
ARNt
Nom :Fonction :
ARNm
Niveau d’expressioncondition
SnARN
Localisation Moléculaire
La conception d’une base de données n’est pas un domaine
réservé aux informaticiens !
Conception de Base de données relationnelles,Algèbre relationnelle et langage SQL
La maîtrise d’un SGBDR est loin d ’être aussifacile à acquérir que celle d ’un logiciel de traitement de texte par ex.
Bon nombre de logiciels apparaissent tous les mois,
mais l ’algèbre relationnelle a été inventée par E.F.
CODD en 1970
Les logiciels de type SGBDR sont intégrésaux suites bureautiques les plus connues.Ex: ACCESS du pack Office.
Preuve…
Cependant …
LES ETAPES DE CONSTRUCTIONStructurer les données de la base
Modèle conceptuel des données VS. tableaux de données
Définir précisément les besoins (i.e. pourquoi créer une base de données?)
Description de la Structure de la base de données sous formes de tableaux de données reliées par des données clés.
Communication intensive entre les experts du domaine d ’application et le concepteur de la base de données.
Ex: Génomes (CodeGenome,Espèce,Nb_chromosome)
• Tables
Visualiser la réalité sous forme de tables de données reliées entre elles.
A une table est associée ce qu’on appelle une relation.
Gènes
Code gene
Code chromosome
Séquence ...
Relation
Génomes
EspèceCode
Genome Nb_chromosomes
Chromosomes
Code chromosome N°Chrom Taille
Code Genome
AutresFragments
Codechromosome fin Débuttype
Code Fragment
Connaissance/ Expertise
AnalyseTraitement
Les besoins
RequêtesApplications
Modèle conceptuel de traitementTraitement des besoins (enfin! )
LES ETAPES
Les interfaces utilisateurs ou L ’APPLICATION
LES ETAPES
« Il ne faut pas présenter des données, il faut présenter des informations »
Il s’agit de réaliser une application de consultation et de mise à jour de la base de données.
Un premier principe d’ergonomie à connaître est qu’une application a pour but d’être utilisée par des gens qui ont une certaine connaissance de son contexte. Vous devez donc réaliser votre logiciel en fonction de ces utilisateurs.
Les utilisateurs sont supposés avoir une idée du flot de données qui rend votre base cohérente. Ils connaissent les actions à réaliser pour commencer telle ou telle tâche.
Un bouton, quelles que soient les aides que vous pourrez y associer, restera un bouton. Ce n’est pas parce que l’interface est graphique que les utilisateurs sauront ce qu’ils ignorent.
A savoir :
Algèbre Relationnelle et langage SQL
Maîtrise de l’algèbre
relationnelle
Conception facile de n’importe quelle
requête aussi complexe soit-elle
Mise en œuvre à l ’aide de
SQL
Protéines
NIP NOM Fonction
… ………. ………..… ………. ………..
… ………. ………..… ………. ………..
… ………. ………..… ………. ………..… ………. ………..=
ensemble de tuples
Opérations classiques sur les ensembles :
Opérations propres
projection, sélection,jointure, division
Illustration avec des études de cas
Une relation est représentée
par une table
Gestion simplifiée d’un génome
n-uplets
génome chromosome1 n
Génome
EspèceCode
Genome Nb_chromosomes
Arabidopsis_thaliana
Yeast
Drosophile
Mouse
Human
ZebraFish
ARB
YST
DRL
MOU
HUM
ZBF
5
16
5
44
46
25
Clé primaire
ChromosomesCode
chromosome N°Chrom Taille
1
2
3
4
5
6
...
I
II
III
IV
I
V
29.6
19.6
23.3
17.5
230.2
576.8
code genome
ARB
HUM
DRL
DRL
DRL
MOU
Cléétrangère
attributs
GènesCode
chromosome
IREG1
TRFr
DMT1
TNFa
1
1
1
8
NomCode Génome
Source SéquenceADN
HUM
MOU
DROZ
MOU_KO
Code Gene
Cléétrangère
Clé primaire
1
2
3
4
Il existe deux grands types de liens
Un - plusieursPlusieurs - Plusieurs
Génomes
CodeGenomeNomEspècenbChromosomes
Chromosomes
CodeChromosomeNuméroTailleCodeGénome
1
*
Identification des objets de gestion :Génomes, Gènes,...
et les règles de gestion du domaine modélisé :interviews, étude des documentsmanipulés, des fichiers, ...
Présence de redondance !?
CodeFragmentTypeséquencedébutfinCodeChromosomeCodeGenome
Autres Fragments
1
* Gènes
CodeGeneNom-locus SourceSequenceCodechromosomeCodeGenome
*
Voilà le modèle !
Opérations propres à l ’algèbre relationnelle
Une seule relation.Pas de doublons.
Espèce NB chromosomes
Homo sapiens 25
Mus musculus 22
S.Cerevisiae 17
DROSOPHILE.M 8
R2 = PROJECTION (Génomes, Espèce, NB chromosomes)
Opération PROJECTION / Exemples Génomes
Formalisme : R = PROJECTION (R1, liste des attributs)
On obtient tous les n-uplets de la relation à l'exception des doublons.
R1 = PROJECTION (Génomes, Espèce)
Espèce
Homo sapiens
Mus musculus
S. Cerevisiae
Drosophile.M
Cet opérateur ne porte que sur 1 relation.
Il permet de ne retenir que certains attributs spécifiés d'une relation.
Espèce NB chromosomes
Homo sapiens 25 1
Mus musculus 22 2
S.Cerevisiae 17 3
DROSOPHILE.M 8 4
CodeGenomeEspèce
Homo sapiens
Mus musculus
S.Cerevisiae
DROSOPHILE.M
Espèce NB chromosomes
Homo sapiens 25
Mus musculus 22
S.Cerevisiae 17
DROSOPHILE.M 8
Opération PROJECTION
Exemples :
SELECT DISTINCT Espèce FROM Génome
SELECT DISTINCT Espèce, NB chromosomes FROM Génome
La clause DISTINCT permet d'éliminer les doublons.
table ;SELECT liste d'attributs FROM
SELECT table liste d'attributs FROMDISTINCT
R3 = SELECTION(Génome, Nb chromosomes pair)
Espèce NB chromosomes
Homo sapiens 25 1
Mus musculus 22 2
S.Cerevisiae 17 3
DROSOPHILE.M 8 4
CodeGenome
Opération SELECTION / Exemple : Génome
Formalisme : R = SELECTION (R1, condition) Cet opérateur ne porte que sur 1
relation.
Il permet de ne retenir que les n-uplets répondant à une condition.
Espèce NB chromosomes
Mus musculus 22 2
DROSOPHILE.M 8 4
CodeGenome
Quels sont les gènes qui participent au codage de la même protéine PROD (albumine par exemple) ?
Gènes
Code chromosome
IREG1
TRFr
DMT1
TNFa
1
1
1
8
Nom Source SéquenceADN
Code Gene
1
2
3
4
Produit gène ?
Prod
Prod
taille
Opération SELECTION en SQL
WHERE condition ;SELECT * FROM table Exemple :
SELECT * FROM Génome WHERE NBChromosomes % 2 = 0La condition de sélection exprimée derrière la clause WHERE peut être spécifiée à l'aide :
des opérateurs : IN, BETWEEN, LIKE
des opérateurs de comparaison : =, >, <, <=, >=, <>
des opérateurs logiques : AND, OR, NOT
Autres exemples :
Soit la table Gène ( CodeGene, nom, source, sequence, taille, CodeChromosome, produit)
SELECT * FROM Gène WHERE taille IN (2000, 2500, 2575, 2600, 3000)SELECT * FROM Gène WHERE taille BETWEEN 2000 AND 3000
SELECT * FROM Gène WHERE produit LIKE '%albumine%'
sous Access : LIKE "*albumine*"
R = JOINTURE (Genome,Chromosome, Genome.CodeGenome=Chromosome.CodeGenome)
Opération JOINTUREFormalisme : R = JOINTURE (R1, R2, condition d'égalité entre attributs)
Espèce NB chromosomes
Homo sapiens 25
Mus musculus 22
S.Cerevisiae 17
DROSOPHILE.M 8
CodeGenome
1
2
3
4
Chromosomes
Quels sont les espèces pour lesquels il existe des chromosomes à plus de 300000 bases
1
4
4
4
2
Code chromosomeN°Chrom
Taille > 300000
1
2
3
4
5
II
III
IV
I
V
310000
350000
400000
350405
5768001
CodeGenome
1
4
4
4
2
Code chromosomeN°Chrom Taille
1
2
3
4
5
II
III
IV
I
V
310000
350000
400000
350405
576800
CodeGenome Espèce NB chromosomes
Homo sapiens 25
DROSOPHILE.M 8
DROSOPHILE.M 8
DROSOPHILE.M 8
Mus Musculus 22
Projection sur Espèce sans
doublons
Cet opérateur porte sur 2 relations ayant au moins un attribut défini dans le même domaine
Les n-uplets sont formés par la concaténation des n-uplets des relations d'origine qui vérifient la condition de jointure.
Génomes
Homo sapiens
DROSOPHILE.M
Mus Musculus
Espèce
Ou en utilisant des alias pour les noms des tables :
SELECT Espece FROM Genome A, Chromosome BWHERE A.CodeGenome =B.CodeGenome and B.taille >= 300000;
Opération JOINTURE en SQL
En SQL, il est possible d'enchaîner plusieurs jointures dans la même instruction SELECT :
SELECT * FROM table1, table2, table3, ...
WHERE table1.attribut1=table2.attribut1 AND
Exemple :
table2.attribut2=table3.attribut2 AND ...;
Jointure
Sélection ‘ Drosophile.M ’
Quels sont les chromosomes : (numéro, taille, …) du génome de la Drosophile ?
Génomes
Code Génome
3
5
Souris Fluo!
Drosophile.M
Nom génome . . .Code
GenomeCode
Chromosome
3
5
5
1
2
3
N° Chromosome
II
V
VI
. . .
. . .
. . .
. . .
Chromosomes
Génomes
Code Génome
5Drosophile.M
Nom génome . . .Code
GenomeCode
Chromosome
5
5
2
3
N° Chromosome
V
VI
. . .
. . .
. . .
Nom génome
Drosophile.M
Drosophile.M
Question 2
Select * from Genome,Chromosome
where Genome.nom like ‘ Drosophile.M’
and Chromosomes.CodeGenome = Genomes.CodeGenome
Requête SQL
Quels sont les génomes pour lesquels le gène X1 est présent ?
Gènes
Code Chromosome
X1
X1
.
10
18
.
Nom du gène
Select genome.nom from Genome, Chromosome, Gene
where Gene.nom like ‘ X1 ’
and Genes.CodeChromosome = Chromosomes.CodeChromosome
and Chromosomes.CodeGenome = Genomes.CodeGenome
Première jointure
Deuxième jointure
Génomes
Code Génome
3
5
Souris Fluo!
Drosophile.M
Nom génome . . .
jointure1
Code Genome
Code Chromosome
5
3
10
18
N° Chromosome
II
V
. . .
Chromosomes
jointure2
Question 3
4 - Donner la liste des titres des représentations, les lieux et les tarifs pour la journée du 14/09/96.
Exercice d'application n°1
Soit le modèle relationnel suivant relatif à une base de données sur des représentations musicales :
REPRESENTATION (n°représentation, titre_représentation, lieu)MUSICIEN (nom, n°représentation*)PROGRAMMER (date, n°représentation*, tarif)
Remarque : les clés primaires sont soulignées et les clés étrangères sont marquées par *
Questions :
1 - Donner la liste des titres des représentations.
2 - Donner la liste des titres des représentations ayant lieu à l'opéra Bastille.
3 - Donner la liste des noms des musiciens et des titres des représentations auxquelles ils participent.
Correction de l'exercice d'application n°1
1 - Donner la liste des titres des représentations.R = PROJECTION(REPRESENTATION, titre_représentation)
2 - Donner la liste des titres des représentations ayant lieu à l'opéra Bastille.R1 = SELECTION(REPRESENTATION, lieu="Opéra Bastille")R2 = PROJECTION(R1, titre_représentation)
3 - Donner la liste des noms des musiciens et des titres des représentations auxquelles ils participent.R1 = JOINTURE(MUSICIEN, REPRESENTATION, Musicien.n°représentation=Représentation.n°représentation)R2 = PROJECTION(R1, nom, titre_représentation)
4 - Donner la liste des titres des représentations, les lieux et les tarifs pour la journée du 14/09/96.R1 = SELECTION(PROGRAMMER, date=14/09/96)R2 = JOINTURE(R1, REPRESENTATION, R1.n°représentation=Représentation.n°représentation)R3 = PROJECTION(R2, titre_représentation, lieu, tarif)
(faire un graphique)
1 - Donner la liste des titres des représentations.SELECT titre_représentation FROM REPRESENTATION;
2 - Donner la liste des titres des représentations ayant lieu à l'opéra Bastille.SELECT titre_représentation FROM REPRESENTATIONWHERE lieu="Opéra Bastille" ;
3 - Donner la liste des noms des musiciens et des titres des représentations auxquelles ils participent.SELECT nom, titre_représentationFROM MUSICIEN, REPRESENTATIONWHERE MUSICIEN.n°représentation = REPRESENTATION.n°représentation ;
4 - Donner la liste des titres des représentations, les lieux et les tarifs pour la journée du 14/09/96. SELECT titre_représentation, lieu, tarifFROM REPRESENTATION, PROGRAMMERWHERE PROGRAMMER.n°représentation=REPRESENTATION.n°représentationAND date='14/06/96' ;
Correction de l'exercice d'application n°1En SQL
PARTICIPER EPREUVE DIVISION (PARTICIPER, EPREUVE)
Athlète Epreuve Epreuve Athlète
Dupont 200 m 200 m Dupont
Durand 400 m 400 m
Dupont 400 m 110 m H
Martin 110 m H
Dupont 110 m H
Martin 200 m
Le dividende doit avoir au moins une colonne de plus que le diviseur
"L'athlète Dupont participe à toutes les épreuves"
Opération DIVISIONFormalisme : R = DIVISION (R1, R2)
Tous les attributs du diviseurdoivent être des attributs du
dividende.La concaténationdonnant un n-uplet du dividende
Quels sont les gènes du génome Y qui sont présents
dans tous les chromosomes ? … à vos idées! ...
Un Exemple hors Bio Qui a participe à toutes les épreuves ?
diviseur
Opération DIVISIONFormalisme : R = DIVISION (R1, R2)Quels sont les gènes qui sont présents dans
tous les chromosomes du génome de la Drosophile.M
La concaténationdonnant un n-uplet du dividende
Le dividende doit avoir au moins une colonne de plus que le diviseur
dividende
X1
Nom du gène
La division
Tous les gènes du génome y
X1
X1
X1
x2
x2
1
10
18
10
18
Nom du gène
Code Chromosome
Tous_les_Gènes_de_5
Code Genome
Code Chromosome
5
5
5
1
10
18
N° Chromosome
II
V
VI
. . .
Tous les Chromosomes du génome Y
Tous_les_Chromosomes_de_5
et en SQL :
SELECT Athlète, Count(*) FROM PARTICIPERGROUP BY AthlèteHAVING COUNT(*) = N ;
et en SQL :
SELECT NomDuGène,Count(*) FROM Tous_les_gènes_de_yGROUP BY NomDuGèneHAVING COUNT(*) = N
Attention ! Il n'existe pas en SQL d'équivalent direct à la division.
Opération DIVISION
Cependant il est toujours possible de trouver une autre solution, notamment par l'intermédiaire des opérations de calcul et de regroupement.
Dans l'exemple présenté, on souhaite trouver les athlètes qui participent à toutes les épreuves. En algèbre relationnelle une autre solution que la division pourrait être :
N=CALCULER(EPREUVE, Comptage())R1=REGROUPER_ET_CALCULER(PARTICIPER, Athlète, Nb:Comptage())R2=SELECTION(R1, Nb=N)R3=PROJECTION(R2, Athlète)
N=CALCULER(Tous_les_chromosomes_de_y, Comptage())R1=REGROUPER_ET_CALCULER(Tous_les_gènes_de_y, NomDuGène, Nb:Comptage())R2=SELECTION(R1, Nb=N)R3=PROJECTION(R2, NomDuGène)
En SQL
SELECT fonction1(attribut1), fonction2(attribut2), ...FROM table;
SELECT SUM(taille) FROM Gènes;
Somme(taille)
98000
Opération CALCULERR = CALCULER (R0, fonction1, fonction2, ...) ou N = CALCULER (R0, fonction)
R1=CALCULER(Gènes, Somme(taille))
Gènes
Code chromosome
IREG1
TRFr
DMT1
TNFa
1
1
8
8
Nom Source SéquenceADN
Code Gene
1
2
3
4
Produit gène ?
Prod1
Prod2
taille
20000
30000
45000
3000
On désire obtenir la taille totale des zones codantes
Opération REGROUPER_ET_CALCULERR=REGROUPER_ET_CALCULER(R0, att1, att2, ..., fonction1, fonction2, ...)
La relation résultat comportera autant de lignes que de groupes de n-uplets, les fonctions s'appliquant à chacun des groupes séparément.
Code chromosome codante
1 50000
8 48000
R2=REGROUPER_ET_CALCULER
(Gènes,CodeChromosome,
codante : Somme(taille))
Sum (taille)
On désire obtenir le total de la zone codante par
chromosomeGènes
Code chromosome
IREG1
TRFr
DMT1
TNFa
1
1
8
8
Nom Source SéquenceADN
Code Gene
1
2
3
4
Produit gène ?
Prod1
Prod2
taille
20000
30000
45000
3000
Le regroupement s'effectue sur un sous ensemble des attributs de la
relation R0.
EN SQL
Select codeChromosome, SUM(taille) as codante from Genes Group by CodeChromosome
Les opérations ensemblistes
Produit
Différence
Union
Intersection A n B
A U B
A - B
!!A x B
!!!
E1 : Enseignants élus au CA E2 : Enseignants représentants syndicaux
n° enseignant nom_enseignant n°enseignant nom_enseignant
1 DUPONT 1 DUPONT
3 DURAND 4 MARTIN
4 MARTIN 6 MICHEL
5 BERTRAND
Les deux relations doivent avoir le même nombre d'attributs définis dans le même domaine. On parle de relations ayant le même schéma. La relation résultat possède les attributs des relations d'origine et les n-uplets de chacune, avec élimination des doublons éventuels.
Opération UNIONOn désire obtenir
l'ensemble des enseignants élus au CA ou
représentants syndicaux.Formalisme : R = UNION (R1, R2)
n°enseignant nom_enseignant
1 DUPONT
3 DURAND
4 MARTIN
5 BERTRAND
6 MICHEL
R1=UNION (E1, E2)
Sélection
Cycle ou lipide
Revenons à la génomique :
Exemple 1
Quels sont les gènes qui sont connus d’être impliqués dans le métabolisme du fer OU dans le cycle cellulaire ?
Sélection
Fer
Gènes
Clé chromosome
X1
X1
.
1
8
.
Nom du gène
Métabolisme
Description Fonctionnelle
.blablabla Iron blabla
.blabla cell cycle blabla
.
Exemple :
SELECT n°enseignant, NomEnseignant FROM E1UNIONSELECT n°enseignant, NomEnseignant FROM E2
Opération UNIONen langage SQL
SELECT liste d'attributs FROM table1UNIONSELECT liste d'attributs FROM table 2 ;
Exemple :
SELECT NomGène FROM Gènes Where Description_Fonctionnelle like «%iron homéostasie%» UNIONSELECT NomGène FROM Gènes Where Description_Fonctionnelle like «%cell cycle%»
Opération Intersection On désire obtenir l'ensemble des enseignants
du CA qui sont représentants syndicaux.
R1=INTERSECT (E1, E2)
n°enseignant nom_enseignant
1 DUPONT
4 MARTIN
Cet opérateur porte sur deux relations de même schéma. La relation résultat possède les attributs des relations d'origine et les n-uplets communs à chacune.
Formalisme : R=INTERSECT (R1, R2)
E1 : Enseignants élus au CA E2 : Enseignants représentants syndicaux
n° enseignant nom_enseignant n°enseignant nom_enseignant
1 DUPONT 1 DUPONT
3 DURAND 4 MARTIN
4 MARTIN 6 MICHEL
5 BERTRAND
Autres façons d’organiser les gènes : catégoriser les gènes par métabolisme et créer une table pour chaque métabolisme ?
Exemple Génomique
Quels sont les gènes qui sont connus d ’être impliqués dans le métabolisme du fer ET dans le cycle cellulaire ?
CodeGène Produit/rôle
1 .4 .
FER! Cycle cellulaire!CodeGène Produit/rôle ... CodeGène Produit/rôle ...
1 . 1 . 3 . 4 . 4 . 6 . 5 .
Exemple :
SELECT n°enseignant, NomEnseignant FROM E1INTERSECTSELECT n°enseignant, NomEnseignant FROM E2 ;
Opération INTERSECTIONSELECT attribut1, attribut2, ... FROM table1INTERSECTSELECT attribut1, attribut2, ... FROM table2 ;
attribut1 IN (SELECT attribut1 FROM table2) ;SELECT attribut1, attribut2, ... FROM table1WHERE
OU
ou
SELECT n°enseignant, NomEnseignant FROM E1WHERE n°enseignant IN (SELECT n°enseignant FROM E2) ;
Exemple :
SELECT CodeGène, Produit FROM FERINTERSECTSELECT CodeGène, Produit FROM Cycle ;
ou
SELECT CodeGène, Produit FROM FERWHERE CodeGène IN (SELECT CodeGène FROM Cycle) ;
Opération Différence On désire obtenir l'ensemble des enseignants
du CA qui ne sont pas représentants syndicaux.
R1=DIFFERENCE (E1, E2) n°enseignant nom_enseignant
3 DURAND
5 BERTRAND
Cet opérateur porte sur deux relations de même schéma. La relation résultat possède les attributs des relations d'origine et les n-uplets de la première relation qui n'appartiennent pas à la deuxième. Attention ! DIFFERENCE (R1, R2) ne donne pas le même résultat que DIFFERENCE (R2, R1)
Formalisme : R=DIFFERENCE (R1, R2)
E1 : Enseignants élus au CA E2 : Enseignants représentants syndicaux
n° enseignant nom_enseignant n°enseignant nom_enseignant
1 DUPONT 1 DUPONT
3 DURAND 4 MARTIN
4 MARTIN 6 MICHEL
5 BERTRAND
Revenons aux bases de données génomiques :
Exemple 1
Quels sont les gènes qui sont connus d ’être impliqués dans le métabolisme du fer mais pas dans le cycle cellulaire ?
CodeGène Produit/rôle
3 .5 .
FER! Cycle cellulaire!CodeGène Produit/rôle ... CodeGène Produit/rôle ...
1 . 1 . 3 . 4 . 4 . 6 . 5 .
Exemple :
SELECT n°enseignant, NomEnseignant FROM E1EXCEPTSELECT n°enseignant, NomEnseignant FROM E2 ;
ou
SELECT n°enseignant, NomEnseignant FROM E1WHERE n°enseignant NOT IN (SELECT n°enseignant FROM E2) ;
Opération DIFFERENCE
SELECT attribut1, attribut2, ... FROM table1EXCEPT
SELECT attribut1, attribut2, ... FROM table2 ;
ou
SELECT attribut1, attribut2, ... FROM table1WHERE attribut1 NOT IN (SELECT attribut1 FROM table2) ;
Exemple :
SELECT CodeGène, Produit FROM FEREXCEPTSELECT CodeGène, Produit FROM Cycle ;ou
SELECT CodeGène, Produit FROM FERWHERE CodeGène NOT IN (SELECT CodeGène FROM Cycle) ;
Base de données génomique :
• Quels sont les gènes impliqués dans le métabolisme du fer ou dans le cycle cellulaire ?
Gènes
Clé chromosome
X1
X1
.
5-II
.
.
Nom du gène
Métabolisme_
familleFonctionnelle_...
.blablabla Iron blabla
.blabla cell cycle blabla
.
Sélection
Cycle ou lipide
Sélection
Fer
• Quels sont les gènes impliqués à la fois dans le métabolisme du fer, et dans le cycle cellulaire (ou des lipides) ?
• Quels sont ceux qui sont cycle cellulaire mais pas fer (pour l’instant !) ?
Etudiants Epreuves
n°étudiant nom libellé épreuve coefficient
101 DUPONT Informatique 2
102 MARTIN Mathématiques 3
Gestion financière 5
Opération PRODUIT CARTESIEN
Examen = PRODUIT (Etudiants, Epreuves)
n°étudiant nom libellé épreuve coefficient
101 DUPONT Informatique 2
101 DUPONT Mathématiques 3
101 DUPONT Gestion financière 5
102 MARTIN Informatique 2
102 MARTIN Mathématiques 3
102 MARTIN Gestion financière 5
Formalisme : R = PRODUIT (R1, R2)
SELECT * FROM table1, table2 ;
Exemple :
SELECT * FROM Etudiants, Epreuves ;
Opération PRODUIT CARTESIEN
Facile ! Mais attention à son utilisation.
Ce n ’est pas une JOINTURE, ni une UNION !
Exemple d’utilisation - sémantiquement :
• Expression de chaque gène dans tous les organes
• Expression = Gene X Organe
(+ colonne de mesure d ’expression)
Principe d'écriture d'une requête
Les interrogations portant sur une base sont réalisées en enchaînant plusieurs requêtes successives
sélectioncritère 1
sélection
Critère 2p
rojectio
n
{atti}
pro
jection
{attj}
join
ture
au moins un attribut
commun
Remarque : les clés primaires sont soulignées et les clés étrangères sont marquées par *
Exemple1
On désire obtenir le code et le nom des clients ayant commandé le 10/06/97 ???1
*
Soient les deux tables (ou relations) suivantes :
CLIENT COMMANDECodeClient N°Commande
NomClient, Date
AdrClient, CodeClient*
TélClient
On désire obtenir le code et le nom des clients ayant commandé le 10/06/97 ???
CLIENT
CodeClient
NomClient,
adrClient,
TélClient
join
ture
CodeClient =
CodeClient
R2
N°Commande
Date
CodeClient
NomClient
adrClient
TélClient
R1
N°Commande
Date
CodeClient*
sélection
Date = 10/06/97
CodeClientNomClient
projection
COMMANDE
N°Commande
Date
CodeClient*
INPUT
R3
CodeClient
NomClient
OUTPUT
Remarque : les clés primaires sont soulignées et les clés étrangères sont marquées par *
Exemple
On désire obtenir tous les gènes impliqués dans le métabolisme des lipides de l ’espèce E, et qui sont compris entre la position n1 et n2 du chromosome II 1 *
Soient les deux tables (ou relations) suivantes :
Chromosomes
CodeGenome GènesCodeChromosome, CodeChromosome
Taille, Nom_Numéro
... Position
... Métabolisme ...
CodeGénome = CodeGénomeet Nom_Numéro = « II »
Chromosome
CodeGenome
CodeChromosome
Taille,
Nom_Numéro, ...
join
ture
R1
CodeGénome
Espèce
Espèce = « E »
sélection
INPUTCodeGénome
Nb_chromosome
Taille
Espèce
Génome
jointure
CodeChromosome = CodeChromosome
R3
CodeChromosome
Espèce, taille, Nom, métabolisme
etc...
R2
CodeGenome
CodeChromosome
Espèce
Taille, etc
Gènes
CodeChromosome
CodeGene
Nom
Métabolisme
Position
Taille
Etc etc
Selection (lipides)
puis projection
Le chromosome II du génome de l ’espèce E
Les gènes du chromosome II du
génome de l ’espèce E
Remarque importante
Si l'on ne précisait pas CLIENT.CodeClient au niveau du SELECT, la commande SQL ne pourrait pas s'exécuter. En effet il y aurait ambiguïté sur le CodeClient à projeter : celui de la table CLIENT ou celui de la table COMMANDE ?
Principe d'écriture d'une requête
Une même instruction SELECT (SQL) permet de combiner Sélections, Projections, Jointures.
Exemple :
SELECT DISTINCT CLIENT.CodeClient, NomClientFROM CLIENT, COMMANDEWHERE CLIENT.CodeClient=COMMANDE.CodeClient AND Date='10/06/97';
Foprmalisme : R = TRI(R0, att1À, att2Å, ...)
Espèce Catégorie Conditionnement
Rosé des prés Conserve Bocal
Rosé des prés Sec Verrine
Coulemelle Frais Boîte
Rosé des prés Sec Sachet plastique
Champignons
R1 = TRI (CHAMPIGNONS, EspèceÅ, CatégorieÀ, ConditionnementÀ)
Espèce Catégorie Conditionnement
Rosé des prés Conserve Bocal
Rosé des prés Sec Sacher plastique
Rosé des prés Sec Verrine
Coulemelle Frais Boîte
Le tri s'effectue sur un ou plusieurs attributs, dans l'ordre croissant ou décroissant.
La relation résultat a la même structure et le même contenu que la relation de départ.
Compléments : Opération TRI
Exemple :
SELECT Espèce, Catégorie, ConditionnementFROM ChampignonsORDER BY Espèce DESC, Catégorie ASC, Conditionnement ASC ;
Remarque : par défaut le tri se fait par ordre croissant si l'on ne précise pas ASC ou DESC.
En langage SQL
SELECT attribut1, attribut2, attribut3, ...FROM tableORDER BY attribut1 ASC, attribut2 DESC, ... ;
ASC : par ordre croissant (Ascending)
DESC : par ordre décroissant (Descending)
Attributs renommés
R=PROJECTION(R0, att1, att2, att3, att4, newatt1:att1*att2, newatt2:att3/att2)
Attributs calculés et renommés
Le calcul est spécifié lors d'une projection ou lors de l'utilisation d'une fonction.
Un attribut calculé est un attribut dont les valeurs sont obtenues par des opérations
arithmétiques portant sur des attributs de la même
relation.
Il est possible de renommer n'importe quel
attribut en le faisant précéder de son nouveau
nom suivi de ":".
Atributs calculés
R=PROJECTION(R0, att1, att2, att3, att4, att1*att2, att3/att2)
Exemple
R
N°BonCommande CodeProduit Montant
96008 A10 830
96008 B20 1120
96009 A10 1660
96010 A15 440
96010 B20 1760
LIGNE_COMMANDE
N°BonCommande CodeProduit Quantité PuHt
96008 A10 10 83
96008 B20 35 32
96009 A10 20 83
96010 A15 4 110
96010 B20 55 32R=PROJECTION(LIGNE_COMMANDE,N°BonCommande, CodeProduit,Montant:Quantité*PuHt)
Les fonctions de calcul portent sur un ou plusieurs groupes de n-uplets et évidemment sur un attribut de type numérique.
Les Fonctions ensemblistes
Somme(attribut) : total des valeurs d'un attribut
Moyenne(attribut) : moyenne des valeurs d'un attribut
Minimum(attribut) : plus petite valeur d'un attribut
Maximum(attribut) : plus grande valeur d'un attribut
Ces fonctions sont utilisées dans les opérateurs :
• calculer
• regrouper-et-calculer.
La fonction de comptage : Comptage()
La fonction de comptage donne le nombre de n-uplets d'un ou de plusieurs groupes de n-uplets. Il n'est donc pas nécessaire de préciser d'attribut.
Les Fonctions ensemblistes
La fonction de comptage
COUNT(*) : nombre de n-uplets
COUNT(DISTINCT attribut) : nombre de valeurs
différentes de l'attribut
Les Fonctions ensemblistes : en SQL
Les fonctions de calcul
SUM (attribut) : total des valeurs d'un attributAVG (attribut) : moyenne des valeurs d'un attributMIN (attribut) : plus petite valeur d'un attributMAX (attribut) : plus grande valeur d'un attribut
[ ] : optionnel| : ou
SQL : Syntaxe simplifiée de l'instruction SELECT
SELECT [ * | DISTINCT] att1 [, att2, att3, ...]
FROM Table1 [, Table2, Table3, ...]
[WHERE conditions de sélection [et/ou de jointure]]
[GROUP BY att1 [, att2, ...]
[HAVING conditions de sélection sur les groupes de GROUP BY]]
[ORDER BY att1 [ASC | DESC] [, att2 [ASC | DESC], ...] ;
SQL est un langage de Manipulation de données relationnelles
LMD-R
• Recherche de tuples vérifiant certains critères• Insertion de tuples • Suppression de tuples vérifiant certains critères• Modification de tuples vérifiant certains critères
Opérations :
Ce langage n’est pas utilisable à lui seul, il doit aussi pouvoir être incorporable dans un langage de
programmation classique.
Assertionnel - complet
Logique des prédicats d ’ordre 1
Spécifier sans dire comment y accéder
Le langage SQL est un langage normalisé.
C’est à la fois :
un langage d'interrogation de données (LID) : SELECT;
un langage de manipulation de données (LMD) : UPDATE, INSERT, DELETE;
un langage de définition des données (LDD) : ALTER, CREATE, DROP;
un langage de contrôle des données et des utilisateurs (LCD) : GRANT, REVOKE.
Soit le modèle relationnel suivant relatif à la gestion des notes annuelles d'une promotion d'étudiants :
Exercice d'application n°2
7 - Quels sont les étudiants qui ont une moyenne générale supérieure ou égale à la moyenne générale de la promotion ?
Remarque : les clés primaires sont soulignées et les clés étrangères sont marquées par *
Etudiant
Matière
1
*
1 *
Evaluer
ETUDIANT(N°Etudiant, Nom, Prénom)MATIERE(CodeMat, LibelléMat, CoeffMat)EVALUER(N°Etudiant*, CodeMat*, Date, Note)
Questions :
1 - Quel est le nombre total d'étudiants ?
2 - Quelles sont, parmi l'ensemble des notes, la note la plus haute et la note la plus
basse ?
3 - Quelles sont les moyennes de chaque étudiant dans chacune des matières ?4 - Quelles sont les moyennes par matière ?5 - Quelle est la moyenne générale de chaque étudiant ?
6 - Quelle est la moyenne générale de la promotion ?
1 - Quel est le nombre total d'étudiants ?N=CALCULER(ETUDIANT, Comptage())
2 - Quelles sont, parmi l'ensemble des notes, la note la plus haute et la note la plus basse ?R=CALCULER(EVALUER, Minimum(Note), Maximum(Note))
3 - Quelles sont les moyennes de chaque étudiant dans chacune des matières ?R1=REGROUPER_ET_CALCULER(EVALUER, N°Etudiant, CodeMat, MoyEtuMat : Moyenne(Note))
R2=JOINTURE(R1, MATIERE, MATIERE.CodeMat=R1.CodeMat)
R3=JOINTURE(R2, ETUDIANT, ETUDIANT.N°Etudiant=R2.N°Etudiant)MOYETUMAT=PROJECTION(R3, N°Etudiant, Nom, Prénom, LibelléMat, CoeffMat, MoyEtuMat)
Correction de l'exercice d'application n°2
(faire un graphique)
4 - Quelles sont les moyennes par matière ?Idem question 3 puis :R4=REGROUPER_ET_CALCULER(MOYETUMAT, LibelléMat, Moyenne(MoyEtuMat))
5 - Quelle est la moyenne générale de chaque étudiant ?Idem question 3 puis :MGETU=REGROUPER_ET_CALCULER(MOYETUMAT, N°Etudiant, Nom, Prénom, MgEtu : Somme(MoyEtuMat*CoeffMat)/Somme(CoeffMat))
6 - Quelle est la moyenne générale de la promotion ?Idem question 5 puis :MG=CALCULER(MGETU, Moyenne(MgEtu))
7 - Quels sont les étudiants qui ont une moyenne générale supérieure ou égale à la moyenne générale de la promotion ?idem question 5 et 6 puis :R=SELECTION(MGETU, MgEtu>=MG)
1 - Quel est le nombre total d'étudiants ?
SELECT COUNT(*) FROM ETUDIANT ;
2 - Quelles sont, parmi l'ensemble des notes, la note la plus haute et la note la plus basse ?
SELECT MIN(Note), MAX(Note) FROM EVALUER ;
3 - Quelles sont les moyennes de chaque étudiant dans chacune des matières ?
CREATE VIEW MOYETUMAT ASSELECT ETUDIANT.N°Etudiant, Nom, Prénom, LibelléMat, CoeffMat, AVG(Note) AS MoyEtuMat
Correction de l'exercice d'application n°2
FROM EVALUER, MATIERE, ETUDIANT
WHERE EVALUER.CodeMat = MATIERE.CodeMatAND EVALUER.N°Etudiant = ETUDIANT.N°EtudiantGROUP BY ETUDIANT.N°Etudiant, Nom, Prénom, LibelléMat, CoeffMat;
En SQL
Remarque : la commande CREATE VIEW va permettre de réutiliser le résultat de la requête (notamment aux deux questions suivantes) comme s'il s'agissait d'une nouvelle table (bien qu'elle soit régénérée dynamiquement lors de son utilisation).Sous Access, il ne faut pas utiliser la commande CREATE VIEW mais seulement enregistrer la requête. Il est alors possible de s'en resservir comme une table.
4 - Quelles sont les moyennes par matière ?Avec la vue MOYETUMAT de la question 3 :
5 - Quelle est la moyenne générale de chaque étudiant ?Avec la vue MOYETUMAT de la question 3 :CREATE VIEW MGETU AS SELECT N°Etudiant, Nom, Prénom, SUM(MoyEtuMat*CoeffMat)/SUM(CoeffMat) AS MgEtuFROM MOYETUMAT GROUP BY N°Etudiant, Nom, Prénom ;
SELECT LibelléMat, AVG(MoyEtuMat) FROM MOYETUMAT GROUP BY LibelléMat ;
6 - Quelle est la moyenne générale de la promotion ?Avec la vue MGETU de la question 5 :SELECT AVG(MgEtu) FROM MGETU ;
7 - Quels sont les étudiants qui ont une moyenne générale supérieure ou égale à la moyenne générale de la promotion ?Avec la vue MGETU de la question 5 :SELECT N°Etudiant, Nom, Prénom, MgEtuFROM MGETU WHERE MgEtu >= (SELECT AVG(MgEtu) FROM MGETU) ;
Du monde Réel au SGBD
SYSTEMES D’INFORMATIONS
Monde Réel
Modèle Conceptuel
Modèle Logique
Modèle Physique
SGBD
Modélisation Conceptuelle
Objectif essentiel de la modélisation Conceptuelle
Définir les informations pertinentes pour les applications envisagées en mettant l'accent sur :
1. La structure (l'organisation) de ces informations.
2. Le haut niveau d'abstraction : un schéma conceptuel doit être indépendant de tout choix d'implémentation.
En pratique, le modèle conceptuel le plus utilisé est le modèle Entité-Association, initialement proposé en 1976.
Le modèle Entité-Association
Il se construit par :
- Perception (entités? Associations?)
- Classification (mêmes entités? Mêmes associations?)
- Description (quelles caractéristiques? quels attributs?)
- Abstraction (quels types? quelles classes?)
Le modèle Entité-Association
Entité : Représentation d'un objet concret présent dans la réalité du monde et présentant un intérêt pour la compréhension de cette réalité (phase d’abstraction).
Une entité existe en tant que telle, a une identité propre, c'est-à-dire qu'elle peut être décrite et manipulée sans qu'il soit nécessaire de connaître les autres entités de ce réel.
Exemple : une personne, une voiture, une salle, ...
Le modèle Entité-Association
Attribut : Propriété ou caractéristique d'une entité.C'est une information élémentaire dont la décomposition ne présente aucun intérêt pour l'application. Exemple : nom, prénom, date de naissance, ...
Identifiant ou Clé : Attribut (ou ensemble d'attributs) permettant d'identifier de manière unique les occurrences de l'entité. Exemple : (nom, prénom).
Souvent, on crée un identifiant abstrait (un numéro par exemple).
Le modèle Entité-Association
Association :Lien sémantique entre deux (ou plusieurs) entités.Une association n'existe que par rapport aux entités qu'elles relient. Une association n'est pas autonome, contrairement à une entité.
Cardinalité d'une association :Couple de valeurs [m,n] (avec m < n), traduisant les nombres minimum et maximum d'occurrences d'associations auxquelles peut participer une occurrence d'entité.
Une occurrence d'association est définie par une occurrence de chacune des entités participantes.
Modèle Entité-Association
Protéines
N° Acc Descrip
Sequence
est-partenaire Complexe Protéique
Fonction Conformation
Entités
Associations
0.n 2.n
Cardinalité 0.n pour l´entité Protéines exprime qu‘une protéine peut être partenaire dans 0 ou plusieurs complexes protéiques
Professeur
# nomprenomadressegrade
Cours
# idnomvol horfilière
donne1.n 0.n
Entités
Attributs
Identifiant
Association
Cardinalités
Cardinalité 1.n pour l´entité Professeur exprime qu‘un professeur donne (1) cours ou plusieurs (n) cours.
Cardinalité 0.n pour l ’entité Cours exprime : un cours est donné par aucun (0) ou plusieurs professeurs.
Le modèle Entité association
Modèle de Données
Définition : Un modèle de données est un ensemble de concepts et de règles de composition de ces concepts permettant de décrire les données.
Modèle Relationnel
Le modèle de données proposé dans le modèle relationnel consiste à percevoir l'ensemble des données comme des tables (Relations).
GénomeEspèce
CodeGenome Nb_chromosomes
Arabidopsis_thaliana
Yeast
Drosophile
Mouse
Human
ZebraFish
ARB
YST
DRL
MOU
HUM
ZBF
5
16
5
44
46
25tuple
n-uplet
Nom de la relationAttribut
Modèle Relationnel : Définitions
• Un domaine est un ensemble de valeurs.Exemple :L'ensemble des entiers N. L'ensemble des booléens {0,1}.L'ensemble des couleurs {jaune, vert, gris, ...}.
• Un attribut prend ses valeurs dans un domaine. Plusieurs attributs peuvent appartenir à un même domaine.
• Un n-uplet (ou tuple) est une liste de n valeurs (v1, …,vn) où chaque valeur vi est la valeur d'un attribut Ai de domaine Di (vi Di).
Modèle Relationnel : Définitions
• Le Produit cartésien D1 ... Dn entre des domaines D1, … , Dn est l'ensemble de tous les n-uplets possibles
(v1, ... vn) où vi Di
• Une Relation définie sur les attributs A1, ..., An est un sous-ensemble du produit cartésien D1 ... Dn où
D1,..., Dn sont les domaines respectifs de A1, ..., An.
R est un ensemble de n-uplets.• Une relation R est représentée sous forme d'une table.• L'ordre des colonnes ou des lignes n'a pas d'importance.• Les colonnes sont distinguées par les noms d'attributs et chaque ligne représente un élément de l'ensemble R (un n-uplet).• Un attribut peut apparaître dans plusieurs relations.
Modèle Relationnel : Définitions
Le schéma d'une relation R est défini par le nom de la relation et la liste des attributs, avec pour chaque attribut son domaine.
Notation : R(A1:D1, … , An:Dn) ou plus simplement :
R(A1, … , An)
Exemple :COURS(Id: char(10), Nom:char(20), VolHor:num, Filiere:char(30))ou COURS(Id, Nom, VolHor, Filiere)
L'arité d'une relation R est le nombre de ses attributs (nombre de colonnes).Par exemple, la relation COURS est d'arité 4.
Modèle Relationnel : Définitions
• Une Base de Données Relationnelle est un ensemble de relations.
• Le schéma logique d'une Base de Données Relationnelle est l'ensemble des schémas de ses relations.
Conception et Définition d'un Schéma Relationnel
La première étape de la construction d'une base de données est la définition du schéma logique de la base.
Pour une « bonne » définition du schéma logique, il est nécessaire de concevoir au préalable un schéma conceptuel décrivant de manière structurée et formalisée les informations de l'application pour laquelle on veut construire la base de données.
Des règles sont définies pour le passage d'un schéma conceptuel (conçu selon un modèle conceptuel choisi : Entité-Association, Merise, OMT, UML²...) vers un schéma logique (dans le modèle de données choisi : relationnel, objets, …)
Règles de passage du modèle Entité-Association au modèle Relationnel
Entité :• Chaque entité devient une relation (ou table).
• Chaque attribut de l'entité devient un attribut de la relation, y compris l'identifiant.
• Les attributs issus de l'identifiant constituent la clé de la relation.
Remarque : Pour les distinguer des autres attributs, on les souligne dans le schéma de la relation.
Exemple :PROFESSEUR(nom, Prenom, Adresse, Grade)COURS(Id, Nom, VolHor, Filiere)
Règles de passage du modèle Entité-Association au modèle Relationnel
Soit une association entre deux entités A et B.
Chacune des entités A et B devient une relation, respectivement RA et RB. Puis, si ...
Association x.1/x.n :• L'identifiant de B devient attribut supplémentaire de RA. Ce sera une
clé étrangère.
Association x.n/y.n :• On crée une relation RAB pour l'association.• La clé de RAB est la concaténation des clés des relations RA et RB.• Les attributs de l'association deviennent des attributs de RAB.
RA RBasso1.1 1.n
Entries EspèceClé espèce
RA RBasso1.n 1.n
ac
Entries Références
coderef ref_num
Règles de passage du modèle Entité-Association au modèle Relationnel
Seance (Id,Id,Id,tarif)
Modèle Relationnel : Opérations
Modifications
• Insertion : Insérer un n-uplet dans une relation.• Destruction : Détruire un n-uplet dans une relation.• Modification : Modifier une ou plusieurs valeurs
d'un attribut dans une relation.
Modèle Relationnel : Opérations
InterrogationsRq : Le résultat de l'interrogation d'une ou de plusieurs relations est une nouvelle relation.
Cinq opérations de base pour exprimer toutes les requêtes :
• Opérations unaires : sélection, projection.• Opérations binaires : union, différence, produit cartésien.• Autres opérations qui s'expriment en fonction des 5
autres fonctions de base : jointure, intersection, division.
Petit exercice - modèle relationnell
On souhaite créer une base de données concernant une entreprise. Une première étude a mis en évidence trois relations. Pour chacune des relations, la clé est soulignée.
EMPLOYE (NumEmp, Nom, Prénom, Adresse, Téléphone, Qualification) SERVICE (NomService, Responsable, Téléphone) PROJET (NomProjet, DateDeb, DateFin, NumEmp)
En considérant les possibilités offertes par ce schéma, répondre aux questions suivantes en justifiant vos réponses par rapport au modèle relationnel et par rapport à la sémantique intuitive des relations :
Question 1 : Un employé peut il avoir plusieurs qualifications ?
Question 2 : Un employé peut il faire plusieurs projets en même temps ?
Question 3 : Une personne peut elle être responsable de plusieurs services ?
Question 4 : Un service peut il avoir plusieurs responsables ? TD de modélisation
Sur le contrôle de la cohérence lors d’une interrogation ou d’un accès concurrent
t0X = a
Instant t0 : Select attribut XFROM TABLE
WHERE condition
User 1
Instant t1 : Update attribut X
FROM TABLE
User 2
t1 X := b
commitX = a
commitX = b
Cohérence lors de plusieurs interrogations ou MAJ
Si l ’utilisateur ne veut pas que l’on modifie la table pendant une session de travail il peut la verrouiller en mode partagé :
LOCK TABLE nom_table IN SHARE MODE NOWAIT
NOWAIT spécifie que le process qui demande le verrou n ’est pas mis en attente si celui-ci n ’est pas disponible.
LOCK TABLE nom_table IN EXCLUSIVE MODE NOWAIT
Pour s ’assurer l ’accès exclusif en modification à une table, on peut verrouiller cette table en mode EXCLUSIF :
La table n ’est accessible aux autres utilisateurs qu’en lecture et ne peuvent plus la verrouiller
ni en mode exclusif, ni en mode mise à jour partagéni en mode partagé
jusqu ’à la fin de la transaction.
L'emploi de verrous implique que certaines transactions soient mises en attente quand elles ne peuvent pas obtenir un verrou.
Pour que cette attente ne soit pas infinie, on utilise souvent une file d'attente FIFO, ce qui assure que toute transaction passera à son tour, sauf s'il y a un interblocage (ou DEADLOCK) des transactions qui s'attendent mutuellement.
Exemple d'interblocage :
temps Transaction A Transaction B
t1 XFIND E1t2 XFIND E2t3 XFIND E2t4 XFIND E1
La transaction A est mise en attente au temps t3 et B au temps t4. Les deux transactions s'attendent mutuellement.
Deux cas de figures de rupture de cohérence
M.A.J à partir d’une valeur périméeA est un objet de la base de données
contrainte d’intégrité : A = BA et B sont les objets de la base de
données
T1
1 : A := A*2;2: A := A+1;
3: B := B+1;4: B := B*2;
T2
A=6
A=7
B=4
B=8
A = 3 ; B = 3 ;
Avec une telle exécution, les données ne sont pas mises à jour correctement,
Ce qui rend A ‡ BUne exécution séquentielle de T1 puis T2,
sauvegarde la cohérence
T1
1 : a : = A;2: b := A;
3: b := b+1;
4: A := b;
5: a := 2*a; 6: A := a;
T2
valeur de A déjàpérimée
Incohérence survenue lorsqu’une transaction T1 exécute un calcul ou une
MAJ à partir d’une valeur périmée de données, modifiée par une autre
transaction
A=7 ; B=8
Dans tout SGBD on trouve un composant chargé du contrôle de l ’accès concurrent aux données.
Il doit être tel que chaque utilisateur obtienne des données cohérentes en cas de mises à jour simultanées de la base.
Droits d’accès aux tables
La protection des objets d’une BD est décentralisée : c’est le créateur d’un objet qui possède tous les droits de lecture, de modif, de suppression, …
Les autres utilisateurs n ’ont aucun droit d ’accès à cet objet à moins que le créateur ne les leur accorde explicitement par une commande GRANT
GRANT privilège ON (nom_table/nom_vue) to nom_utilisateur
Les privilèges pouvant être accordés :SELECTINSERTUPDATE(col,…)DELETEALTERALL
Un utilisateur ayant reçu un privilège avec GRANT peut le transmettre à son tour.
Exemple :GRANT SELECT ON emp TO douglasGRANT SELECT,UPDATE ON emp TO PUBLIC
Bases de données avancées
En dépit de sa simplicité et de son élégance, le modèle relationnel n’apporte pas une réponse satisfaisante à tous les problèmes des applications, tel que :
Prendre en compte les objets de structure complexe ainsi que les opérations qui leurs sont associées (BD Orienté Objet)
Les Objets (dans les SGBDO) ont :
une identité propre : une adresse en mémoire de la machine
des attributs : comme couleur ou taille
un état : comme vert ou 50
un comportement : comme dessiner ou changer-couleur
Notion d’héritage
Une classe est une représentation de Type Abstrait de Données, une description générique d’objets de même type.
Un objet est une instance d’une classe.
Les variables peuvent être à leur tour des classes ou variables statiques, ou instance de variables
Illustration sur quelques modèles objet …
FRAGMENT
GENE
PROMOTOR TERMINATOR
TRANSCRIBEDFRAGMENT NON TRANSCRIBED/
REGULATOR
is a
PROTEIN
1
* est composé
compose
Modèle orienté objet pour un gène
mRNA
SPLICEDTRANSCRIPT * *
ORF
1
11 *
INTRONSPLICEDTRANSCRIPTCOMPONENT
(EXON)
is a
is a
PRIMARY POLYPEPTIDE
1 1
compose
est composé
snRNA tRNA rRNA
Classes et sous-classes
3 classes
Protein-gene
RNA-gene
Gene
3 descriptions
Modèle de données : échantillons de cellules d ’une expérience transcriptome : MGED 1999 (hedeilberg)
Diverses technologies pour la conception de bases de données
DBMS Orienté-objet
DBMS relationnel
DBMS hybride
ASN.1,XML ...
Essais de standardisation
Pourquoi utiliser la technologie ORIENTE-OBJET (OO) ?
Puissance d ’expression de données complexes (nos données bio en question!)
Réutilisation : données et codes - modularité
Requête concise et intuitive sur les objets
Une navigation facile de données complexes
Identifiant unique d’un objet
Relationnel DBMS simple,
Relationnel DBMS mature,
Tout le monde a un Relationnel DBMS !
Standardisation
SQL3
Pourquoi ne pas utiliser la technologie OO ?
• Prendre en compte des données peu structurées : sons, texte, images, vidéo (BD multi-média)
Autres bases de données avancées
• Faire le pont avec l ’intelligence artificielle : permettre l’inférence de faits (nouvelles données) à partir des données de la base (BD déductives) – comme DATALOG
Entrepôt de BDs, insertion et réutilisation flexible
Propriétés pertinentes
• Une exigence de haute performance• données énormes, données complexes ...• analyse complexe : la réalisation d’une seule tâche
nécessite une intégration d’une large gamme d ’objets complexes et hétérogènes …
• intégration des données d’intérêt à partir de sources externes en vue de construire un environnement intégré pour réaliser des analyses plus pointues (localement!).
INTERFACE
CHARGEUR / SOURCES
• Navigation entre objets
• requêtes déclaratives ou complexes
• analyses pointues de donnéesaccès à la base de données
Entrepôt Biologique
Un cas de figure …
Sources génomique
Entrepôtbiologique
Intégration
Micro Array Macro Array SAGE...
Données expérimentales
Données cliniques
Analyse
OutilsPossible ?
Hypothèses ?D’autres investigations ?
Expériences ?
Source : Jef Wijsen
NON !
en M2 ! avec le Web Sémantique et les ontologies de domaine.