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 Un peu d’histoire … Limites de l’utilisation des fichiers L’utilisateur doit écrire un programme souvent complexe !!! Application : rigide, longue, coûteuse Données : redondantes, peu fiables, ponctuelles Quelles sont mes données ? Comment les structurer? Comment y accéder ? Comment créer un index ? Comment les manipuler ? #% »*’àç @é()$£ »&@!!!! ? ? 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, ... décrire modifier BD Exhaustive non redondante structurée persistante interroger Outils SGBD 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 • Données (ou objets) : protéines, interactions, complexes • Associations entre objets : • 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 BD sur les Interactions protéiques • Des Modèles pour représenter ces objets Objet ou Entité ainsi que leurs associations Données (entités) Protéines N° Acc Descrip 0:n Interagit Sequence 2:n Complexe Protéique Fonction Conformation Associations Cardinalité 0:n pour l´entité <Protéines> : exprime qu‘une protéine peut être partenaire dans aucune (0) ou plusieurs complexes Architecture d'un SGBD On 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. Architecture d'un SGBD 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 Fonctionnalités du Niveau Logique • • 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 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, ...). Système de Gestion de Bases de Données Objectifs Transparence besoins questions SGBD applications réponses 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é. Résistance aux pannes. Comment assurer ces objectifs ? Les trois niveaux de descriptions définies par la norme ANSI/ SPARC Niveau interne Stockage BD Niveau conceptuel ou logique Vues . . . Exemple de 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). 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 Choix d’un modèle de données (relationnel, objet, etc.) Un modèle de données est un : • outil intellectuel pour comprendre des données ou de la connaissance. l’organisation logique • ensemble de concepts et de règles pour construire la réalité avec des types de données Description des données : Schéma 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. Manipulation des données Une fois les données décrites structurellement, on peut : • les insérer • les lire, afficher • les modifier • les détruire Les composants d ’un SGBD « quelque soit le modèle de données qu’il supporte » 1 Outils de description des données 2 (en gros des langages) : - décrire la vision qu’a l ’utilisateur des données - décrire le stockage physique des données. 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, - des extensions de langages classiques. pouvant être classiques aussi SQL, OQL JAVA, C++, Python ... 3 Outils de sauvegarde et récupération après panne 4 Outils pour permettre un accès concurrent aux données de façon cohérente. «Chacun de ces composants sera étudié ». Retour sur l’histoire … 1960 Uniquement des systèmes de gestion de fichiers très sophistiqués (Mais aussi compliqués ! et non adpatés ) 1970 Début des systèmes de gestion de bases de données réseaux et hié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ées relationnelles (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é Début des systèmes de gestion de bases de données orienté-objets. A parte Base de données Base de données : données organisées, stockées dans des fichiers liés entre eux grâce à un SGBD Il existe plusieurs « styles » de BDD : – Hiérarchique – Réseau – Relationnelle – Objet – multi dimensionnelle… Base de données hiérarchique Patron Cellule Chef Chromosome Sous-chef Sous-chef Gène Sous-chef Chef Sous-chef Sous-chef Base de données réseau Patron Chef Sous-chef Sous-chef Patron Chef Sous-chef Sous-chef Sous-chef Base de données relationnelle Une table ? Plusieurs tables ? Genome Chromosome Gene CodeGenome NomGénome …. CodeChromosome NumChromosome …. CodeGénome CodeGene NomGene …. CodeChromosome Select Select NomGene Cekejeuveu From From TableGene LaTableKeJeudi Where Where CodeChromosome LaConditionKimeuplé = HUM-10 Base de données objet Personne Transcris épissé Adresse Taille Salaire Séquence Lieu de travail Patron ARNm Primes de responsabilité Niveau d’expression Voiture de fonction condition Chef ARNt Sous-chef SnARN Nom : de fonction Vélo de fonction Scooter Fonction : Localisation Ref chef Moléculaire Ref patron Conception de Base de données relationnelles, Algèbre relationnelle et langage SQL Bon nombre de logiciels apparaissent tous les mois, mais l ’algèbre relationnelle a été inventée par E.F. CODD en 1970 La conception d’une base de données n’est pas un domaine réservé aux informaticiens ! Preuve… Les logiciels de type SGBDR sont intégrés aux suites bureautiques les plus connues. Ex: ACCESS du pack Office. Cependant … La maîtrise d’un SGBDR est loin d ’être aussi facile à acquérir que celle d ’un logiciel de traitement de texte par ex. LES ETAPES DE CONSTRUCTION Structurer 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?) Communication intensive entre les experts du domaine d ’application et le concepteur de la 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. 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. Ex: Génomes (CodeGenome,Espèce,Nb_chromosome) • Tables Génomes Code Genome Espèce Chromosomes Nb_chromosomes Code chromosome N°Chrom Code Genome Taille Relation AutresFragments Gènes Code Code gene chromosome Séquence ... Code Fragment type Début fin Code chromosome LES ETAPES Modèle conceptuel de traitement Traitement des besoins (enfin! ) Les besoins Connaissance / Expertise Analyse Traitement Requêtes Applications LES ETAPES Les interfaces utilisateurs ou L ’APPLICATION Il s’agit de réaliser une application de consultation et de mise à jour de la base de données. A savoir : 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. « Il ne faut pas présenter des données, il faut présenter des informations » Algèbre Relationnelle et langage SQL Illustration avec des études de cas Conception facile de n’importe quelle requête aussi complexe soit-elle Maîtrise de l’algèbre relationnelle Protéines Une relation est représentée par une table = ensemble de tuples NIP … … … … … … … NOM Fonction ………. ………. ………. ………. ………. ………. ………. ……….. ……….. ……….. ……….. ……….. ……….. ……….. Mise en œuvre à l ’aide de SQL Opérations classiques sur les ensembles : Opérations propres projection, sélection, jointure, division Gestion simplifiée d’un génome génome 1 n chromosome Génome Code Genome Clé primaire Clé étrangère Chromosomes Code chromosome N°Chrom Taille code genome 1 I 29.6 ARB 2 II 19.6 HUM 3 III 23.3 4 IV 17.5 DRL DRL 5 I 230.2 DRL 6 V 576.8 MOU ... Espèce Nb_chromosomes ARB Arabidopsis _thaliana 5 YST Yeast 16 DRL Drosophile 5 MOU Mouse 44 HUM Human 46 ZBF ZebraFish 25 n-uplets attributs Gènes Code Génome Code chromosome Nom Source Séquence ADN Code Gene HUM 1 IREG1 1 MOU 1 TRFr 2 DROZ 1 DMT1 3 8 TNFa 4 MOU_KO Clé primaire Clé étrangère Il existe deux grands types de liens Identification des objets de gestion : Génomes, Gènes,... Un - plusieurs Plusieurs - Plusieurs Chromosomes Génomes 1 CodeGenome Nom Espèce nbChromosomes * CodeChromosome Numéro Taille CodeGénome Autres Fragments CodeFragment Type séquence début fin CodeChromosome CodeGenome 1 Gènes * Voilà le modèle ! et les règles de gestion du domaine modélisé : interviews, étude des documents manipulés, des fichiers, ... Présence de redondance !? CodeGene Nom-locus Source Sequence Codechromosome CodeGenome * Opérations propres à l ’algèbre relationnelle Opération PROJECTION / Exemples Génomes Formalisme : R = PROJECTION (R1, liste des attributs) Espèce NB chromosomes CodeGenome Homo sapiens 25 1 Mus musculus 22 2 S.Cerevisiae 17 3 DROSOPHILE.M 8 4 Une seule relation. Pas de doublons. Espèce Homo sapiens Mus musculus S. Cerevisiae Drosophile.M R1 = PROJECTION (Génomes, Espèce) Espèce NB chromosomes R2 = PROJECTION (Génomes, Espèce, NB chromosomes) Homo sapiens 25 Mus musculus 22 S.Cerevisiae 17 DROSOPHILE.M 8 Cet opérateur ne porte que sur 1 relation. Il permet de ne retenir que certains attributs spécifiés d'une relation. On obtient tous les n-uplets de la relation à l'exception des doublons. Opération PROJECTION SELECT liste d'attributs FROM table ; SELECT DISTINCT liste d'attributs FROM table 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. Opération SELECTION / Exemple : Génome Formalisme : R = SELECTION (R1, condition) Espèce Cet opérateur ne porte que sur 1 relation. NB chromosomes CodeGenome Homo sapiens 25 1 Mus musculus 22 2 S.Cerevisiae 17 3 DROSOPHILE.M 8 4 Il permet de ne retenir que les nuplets répondant à une condition. R3 = SELECTION(Génome, Nb chromosomes pair) Espèce NB chromosomes CodeGenome Mus musculus 22 2 DROSOPHILE.M 8 4 Quels sont les gènes qui participent au codage de la même protéine PROD (albumine par exemple) ? Gènes Code Gene Nom Source Séquence ADN Code chromosome 1 IREG1 1 2 TRFr 1 3 DMT1 1 4 TNFa 8 taille Produit gène ? Prod Prod Opération SELECTION en SQL SELECT * FROM table WHERE condition ; Exemple : SELECT * FROM Génome WHERE NBChromosomes % 2 = 0 La condition de sélection exprimée derrière la clause WHERE peut être spécifiée à l'aide : des opérateurs de comparaison : =, >, <, <=, >=, <> des opérateurs logiques : AND, OR, NOT des opérateurs : IN, BETWEEN, LIKE Autres exemples : Soit la table Gène ( CodeGene, nom, source, sequence, taille, CodeChromosome, produit) SELECT * FROM FROMGène GèneWHERE WHEREtaille tailleINBETWEEN (2000, 2500, 2000 2575, AND 2600, 30003000) SELECT * FROM Gène WHERE produit LIKE '%albumine%' sous Access : LIKE "*albumine*" Quels sont les espèces pour lesquels il existe des chromosomes à plus de 300000 bases Opération JOINTURE Formalisme : R = JOINTURE (R1, R2, condition d'égalité entre attributs) Chromosomes Génomes CodeGenome Espèce NB chromosomes 1 Homo sapiens 25 2 Mus musculus 22 3 S.Cerevisiae 17 4 DROSOPHILE.M 8 CodeGenome N°Chrom Code Taille > chromosome 300000 Cet opérateur porte sur 2 310000 II 1 relations ayant au moins un attribut défini dans leIII même 350000 4 domaine 400000 1 2 3 4 IV 4 2 I 350405 4 V 5768001 5 R = JOINTURE (Genome,Chromosome, Les n-uplets sont formés Genome.CodeGenome=Chromosome.CodeGenome) CodeGenome N°Chrom Code Taille chromosome Espèce par la concaténation des n-uplets des relations NB chromosomes d'origine qui vérifient la condition de jointure. 25 Espèce 1 II 310000 1 Homo sapiens 350000 2 DROSOPHILE.M 8 4 III 400000 3 8 4 IV DROSOPHILE.M 4 2 350405 4 DROSOPHILE.M 8 I V 576800 5 Mus Musculus 22 Homo sapiens ProjectionDROSOPHILE.M sur Espèce sans Mus Musculus doublons 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 table2.attribut2=table3.attribut2 AND ...; Exemple : Ou en utilisant des alias pour les noms des tables : SELECT Espece FROM Genome A, Chromosome B WHERE A.CodeGenome =B.CodeGenome and B.taille >= 300000; Question 2 Quels sont les chromosomes : (numéro, taille, …) du génome de la Drosophile ? Chromosomes Génomes Code Genome Code Nom génome . . . Génome Souris Fluo! N° Code . . . Chromosome Chromosome 3 Drosophile.M 5 Sélection ‘ Drosophile.M ’ 3 II 5 V 5 VI ... 1 ... 2 ... 3 Génomes Code Nom génome . . . Génome Drosophile.M Jointure 5 Nom génome Drosophile.M Drosophile.M Code N° Code . . . Genome Chromosome Chromosome 5 V 5 VI Requête SQL Select * from Genome,Chromosome where Genome.nom like ‘ Drosophile.M’ and Chromosomes.CodeGenome = Genomes.CodeGenome ... ... 2 3 Question 3 Quels sont les génomes pour lesquels le gène X1 est présent ? jointure1 jointure2 Gènes Génomes Chromosomes Code Nom génome . . . Génome Code Code N° Chromosome Chromosome . . . Genome Souris Fluo! Drosophile.M Code Nom du gène Chromosome 3 5 10 II 5 18 V 3 Select genome.nom from Genome, Chromosome, Gene where Gene.nom like ‘ X1 ’ 10 X1 18 X1 . . Première jointure Deuxième jointure and Genes.CodeChromosome = Chromosomes.CodeChromosome and Chromosomes.CodeGenome = Genomes.CodeGenome 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. Donner la liste des noms des musiciens et des titres des représentations auxquelles ils participent. Donner la liste des titres des représentations, les lieux et les tarifs pour la journée du 14/09/96. 34- Correction de l'exercice d'application n°1 (faire un graphique) 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) Correction de l'exercice d'application n°1 En SQL 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 REPRESENTATION WHERE 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ésentation FROM MUSICIEN, REPRESENTATION WHERE 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, tarif FROM REPRESENTATION, PROGRAMMER WHERE PROGRAMMER.n°représentation=REPRESENTATION.n°représentation AND date='14/06/96' ; Opération DIVISION Formalisme : R = DIVISION (R1, R2) Un Exemple hors Bio PARTICIPER EPREUVE Qui a participe à toutes les épreuves 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 Tous les attributs du diviseur doivent être des attributs du dividende. La concaténation donnant un n-uplet du dividende Quels sont les gènes du à "L'athlète Dupont participe génome quiépreuves" sont présents toutesY les dans tous les chromosomes ? … à vos idées! ... Le dividende doit avoir au moins une colonne de plus que le diviseur dividende Opération DIVISION Formalisme : R = DIVISION (R1, R2) Quels sont les gènes qui sont présents dans tous les chromosomes du génome de la Drosophile.M Tous les gènes du génome y diviseur Code Chromosome Nom du gène Tous les Chromosomes du génome Y 1 X1 10 X1 18 X1 1 II 5 10 x2 10 V 5 18 x2 18 VI 5 Tous_les_Gènes_de_5 Code N° Code Chromosome Chromosome . . . Genome Nom du gène X1 Tous_les_Chromosomes_de_5 La division La concaténation donnant un n-uplet du dividende Opération DIVISION Attention ! Il n'existe pas en SQL d'équivalent direct à la 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()) N=CALCULER(Tous_les_chromosomes_de_y, Comptage()) R1=REGROUPER_ET_CALCULER(PARTICIPER, Athlète, Nb:Comptage()) R1=REGROUPER_ET_CALCULER(Tous_les_gènes_de_y, NomDuGène, R2=SELECTION(R1, Nb=N) Nb:Comptage()) R3=PROJECTION(R2, Athlète) R2=SELECTION(R1, Nb=N) R3=PROJECTION(R2, NomDuGène) et et en en SQL SQL :: SELECT NomDuGène,Count(*) FROM Tous_les_gènes_de_y SELECT Athlète, Count(*) FROM PARTICIPER GROUP NomDuGène GROUP BY BY Athlète HAVING HAVING COUNT(*) COUNT(*) = =N N; Opération CALCULER R = CALCULER (R0, fonction1, fonction2, ...) ou N = CALCULER (R0, fonction) Gènes Code Gene Nom Source Séquence ADN Code chromosome taille 1 IREG1 1 20000 2 TRFr 1 30000 3 DMT1 8 45000 4 TNFa 8 3000 R1=CALCULER(Gènes, Somme(taille)) Somme(taille) 98000 SELECT SUM(taille) FROM Gènes; On désire obtenir la taille totale des Produit zones codantes gène ? Prod1 Prod2 En SQL SELECT fonction1(attribut1), fonction2(attribut2), ... FROM table; Opération REGROUPER_ET_CALCULER R=REGROUPER_ET_CALCULER(R0, att1, att2, ..., fonction1, fonction2, ...) On désire obtenir le total de la zone codante par chromosome Gènes Code Gene Nom Source Séquence ADN Le regroupement s'effectue sur un sous ensemble des attributs de la relation R0. Code chromosome taille 1 IREG1 1 20000 2 TRFr 1 30000 Produit gène ? Prod1 Sum (taille) 3 DMT1 8 45000 4 TNFa 8 3000 Prod2 R2=REGROUPER_ET_CALCULER (Gènes,CodeChromosome, Code chromosome codante 1 50000 8 48000 codante : Somme(taille)) La relation résultat comportera autant de lignes que de groupes de n-uplets, les fonctions s'appliquant à chacun des groupes séparément. EN SQL Select codeChromosome, SUM(taille) as codante from Genes Group by CodeChromosome Les opérations ensemblistes Union AUB Intersection Différence Produit AnB A-B AxB !! !!! Opération UNION Formalisme : R = UNION (R1, R2) E1 : Enseignants élus au CA n° enseignant nom_enseignant On désire obtenir l'ensemble des enseignants élus au CA ou représentants syndicaux. E2 : Enseignants représentants syndicaux n°enseignant nom_enseignant 1 DUPONT 1 DUPONT 3 DURAND 4 MARTIN 4 MARTIN 6 MICHEL 5 BERTRAND R1=UNION (E1, E2) n°enseignant 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. nom_enseignant 1 DUPONT 3 DURAND 4 MARTIN 5 BERTRAND 6 MICHEL 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 ? Gènes Clé chromosome Métabolisme Nom du gène Sélection Fer Description Fonctionnelle 1 X1 .blablabla Iron blabla 8 X1 .blabla cell cycle blabla . . . Sélection Cycle ou lipide Opération UNION en langage SQL SELECT liste d'attributs FROM table1 UNION SELECT liste d'attributs FROM table 2 ; ExempleExemple : : SELECT NomGène FROM Gènes Where Description_Fonctionnelle like «%iron SELECT n°enseignant, NomEnseignant FROM E1 homéostasie%» UNION UNION SELECT SELECT NomGène FROM Gènes Where Description_Fonctionnelle n°enseignant, NomEnseignant FROMlike E2«%cell cycle%» Opération Intersection Formalisme : R=INTERSECT (R1, R2) E1 : Enseignants élus au CA n° enseignant nom_enseignant On désire obtenir l'ensemble des enseignants du CA qui sont représentants syndicaux. E2 : Enseignants représentants syndicaux n°enseignant nom_enseignant 1 DUPONT 1 DUPONT 3 DURAND 4 MARTIN 4 MARTIN 6 MICHEL 5 BERTRAND R1=INTERSECT (E1, E2) 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. n°enseignant nom_enseignant 1 DUPONT 4 MARTIN 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 ? 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 ? FER! CodeGène 1 3 4 5 Cycle cellulaire! Produit/rôle ... . . . . CodeGène Produit/rôle ... . . . 1 4 6 CodeGène 1 4 Produit/rôle . . Opération INTERSECTION SELECT attribut1, attribut2, ... FROM table1 INTERSECT SELECT attribut1, attribut2, ... FROM table2 ; OU SELECT attribut1, attribut2, ... FROM table1 WHERE attribut1 IN (SELECT attribut1 FROM table2) ; Exemple Exemple: : SELECT SELECTCodeGène, n°enseignant, Produit NomEnseignant FROM FER FROM E1 INTERSECT INTERSECT SELECT SELECTCodeGène, n°enseignant, Produit NomEnseignant FROM CycleFROM ; E2 ; ou SELECT CodeGène, n°enseignant, Produit NomEnseignant FROM FERFROM E1 WHERE CodeGène n°enseignant ININ (SELECT (SELECT CodeGène n°enseignant FROM FROM Cycle) E2); ; Opération Différence On désire obtenir l'ensemble des enseignants du CA qui ne sont pas représentants syndicaux. Formalisme : R=DIFFERENCE (R1, R2) E1 : Enseignants élus au CA n° enseignant E2 : Enseignants représentants syndicaux nom_enseignant n°enseignant nom_enseignant 1 DUPONT 1 DUPONT 3 DURAND 4 MARTIN 4 MARTIN 6 MICHEL 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) R1=DIFFERENCE (E1, E2) n°enseignant nom_enseignant 3 DURAND 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 ? FER! CodeGène 1 3 4 5 Cycle cellulaire! Produit/rôle ... . . . . CodeGène Produit/rôle ... . . . 1 4 6 CodeGène 3 5 Produit/rôle . . Opération DIFFERENCE SELECT attribut1, attribut2, ... FROM table1 EXCEPT SELECT attribut1, attribut2, ... FROM table2 ; ou SELECT attribut1, attribut2, ... FROM table1 WHERE attribut1 NOT IN (SELECT attribut1 FROM table2) ; Exemple Exemple :: SELECT CodeGène,NomEnseignant Produit FROM FERE1 SELECT n°enseignant, FROM EXCEPT EXCEPT SELECT n°enseignant, FROM E2 ;; SELECT CodeGène,NomEnseignant Produit FROM Cycle ou ou SELECT n°enseignant, FROM SELECT CodeGène,NomEnseignant Produit FROM FERE1 WHERE n°enseignant NOT IN (SELECT n°enseignant FROM E2) ; WHERE 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 ? • 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 !) ? Gènes Clé chromosome Sélection Fer Métabolisme_ Nom du gène familleFonctionnelle_... 5-II X1 .blablabla Iron blabla . X1 .blabla cell cycle blabla . . . Sélection Cycle ou lipide Opération PRODUIT CARTESIEN Formalisme : R = PRODUIT (R1, R2) Etudiants Epreuves n°étudiant nom libellé épreuve 101 DUPONT Informatique 2 102 MARTIN Mathématiques 3 Gestion financière 5 coefficient 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 Opération PRODUIT CARTESIEN SELECT * FROM table1, table2 ; Exemple : SELECT * FROM Etudiants, Epreuves ; 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 critère 1 {atti} au moins un attribut commun Critère 2 {attj} Exemple1 Soient les deux tables (ou relations) suivantes : CLIENT COMMANDE CodeClient N°Commande NomClient, AdrClient, TélClient Date 1 * On désire obtenir le code et le nom des clients ayant commandé le 10/06/97 ??? CodeClient* Remarque : les clés primaires sont soulignées et les clés étrangères sont marquées par * On désire obtenir le code et le nom des clients ayant commandé le 10/06/97 ??? COMMANDE N°Commande INPUT Date CodeClient* R2 Date = 10/06/97 R1 N°Commande N°Commande Date Date CodeClient CodeClient* NomClient CLIENT adrClient CodeClient = CodeClient TélClient CodeClient CodeClient NomClient NomClient, adrClient, TélClient OUTPUT R3 CodeClient NomClient Exemple Soient les deux tables (ou relations) suivantes : Chromosomes CodeGenome Gènes CodeChromosome, CodeChromosome Taille, 1 * Nom_Numéro ... Position ... Métabolisme ... 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 Remarque : les clés primaires sont soulignées et les clés étrangères sont marquées par * Génome CodeGénome R1 INPUT CodeGénome Nb_chromosome Espèce Taille Espèce = « E » Espèce Le chromosome II du génome de l ’espèce E R2 CodeGenome CodeChromosome CodeGénome = CodeGénome et Nom_Numéro = « II » Espèce Taille, etc Chromosome CodeGenome CodeChromosome Les gènes du Taille, chromosome II du Nom_Numéro, ... génome de l ’espèce E R3 Gènes CodeChromosome CodeGene CodeChromosome Etc etc Espèce, taille, Nom, métabolisme etc... Selection (lipides) puis projection jointure Nom Métabolisme CodeChromosome = CodeChromosome Position Taille 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, NomClient FROM CLIENT, COMMANDE WHERE CLIENT.CodeClient=COMMANDE.CodeClient AND Date='10/06/97'; 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 ? Compléments : Opération TRI Foprmalisme : R = TRI(R0, att1À, att2Å, ...) Champignons 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 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. En langage SQL SELECT attribut1, attribut2, attribut3, ... FROM table ORDER BY attribut1 ASC, attribut2 DESC, ... ; ASC : par ordre croissant (Ascending) DESC : par ordre décroissant (Descending) Exemple : SELECT Espèce, Catégorie, Conditionnement FROM Champignons ORDER 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. Attributs calculés et renommés Atributs calculés R=PROJECTION(R0, att1, att2, att3, att4, att1*att2, att3/att2) 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. Attributs renommés R=PROJECTION(R0, att1, att2, att3, att4, newatt1:att1*att2, newatt2:att3/att2) Il est possible de renommer n'importe quel attribut en le faisant précéder de son nouveau nom suivi de ":". Exemple LIGNE_COMMANDE N°BonCommande CodeProduit Quantité PuHt 96008 A10 10 83 96008 B20 35 32 96009 A10 20 83 96010 A15 4 96010 B20 R 110 55 R=PROJECTION(LIGNE_CO 32 MMANDE,N°BonCommande, CodeProduit,Montant:Quanti té*PuHt) N°BonCommande CodeProduit Montant 96008 A10 830 96008 B20 1120 96009 A10 1660 96010 A15 440 96010 B20 1760 Les Fonctions ensemblistes Ces fonctions sont utilisées dans les opérateurs : • calculer • regrouper-et-calculer. Les fonctions de calcul portent sur un ou plusieurs groupes de n-uplets et évidemment sur un attribut de type numérique. 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 Les Fonctions ensemblistes 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 : en SQL Les fonctions de calcul SUM (attribut) : total des valeurs d'un attribut AVG (attribut) : moyenne des valeurs d'un attribut MIN (attribut) : plus petite valeur d'un attribut MAX (attribut) : plus grande valeur d'un attribut La fonction de comptage COUNT(*) : nombre de n-uplets COUNT(DISTINCT attribut) : nombre de valeurs différentes de l'attribut 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], ...] ; [ ] : optionnel | : ou SQL est un langage de Manipulation de données relationnelles LMD-R Assertionnel - complet Logique des prédicats d ’ordre 1 Spécifier sans dire comment y accéder Opérations : • 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 Ce langage n’est pas utilisable à lui seul, il doit aussi pouvoir être incorporable dans un langage de programmation classique. 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. Exercice d'application n°2 Soit le modèle relationnel suivant relatif à la gestion des notes annuelles d'une promotion d'étudiants : 1 ETUDIANT(N°Etudiant, Nom, Prénom) MATIERE(CodeMat, LibelléMat, CoeffMat) EVALUER(N°Etudiant*, CodeMat*, Date, Note) Etudiant * Evaluer Matière 1 * Remarque : les clés primaires sont soulignées et les clés étrangères sont marquées par * 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 ? 7 - Quels sont les étudiants qui ont une moyenne générale supérieure ou égale à la moyenne générale de la promotion ? Correction de l'exercice d'application n°2 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 (faire un graphique) 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) 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) Correction de l'exercice d'application n°2 1 - Quel est le nombre total d'étudiants ? En SQL 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 AS SELECT ETUDIANT.N°Etudiant, Nom, Prénom, LibelléMat, CoeffMat, AVG(Note) AS MoyEtuMat FROM EVALUER, MATIERE, ETUDIANT WHERE EVALUER.CodeMat = MATIERE.CodeMat AND EVALUER.N°Etudiant = ETUDIANT.N°Etudiant GROUP BY ETUDIANT.N°Etudiant, Nom, Prénom, LibelléMat, CoeffMat; 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 : SELECT LibelléMat, AVG(MoyEtuMat) FROM MOYETUMAT GROUP BY LibelléMat ; 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 MgEtu FROM MOYETUMAT GROUP BY N°Etudiant, Nom, Prénom ; 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, MgEtu FROM 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 Entités Protéines N° Acc Descrip 0.n est-partenaire Sequence 2.n Complexe Protéique Fonction Conformation Associations Cardinalité 0.n pour l´entité Protéines exprime qu‘une protéine peut être partenaire dans 0 ou plusieurs complexes protéiques Entités Cardinalités Cours Professeur # nom prenom adresse grade Identifiant 1.n donne 0.n # id nom vol hor filière Association Attributs 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). Nom de la relation Attribut Génome Code Genome Espèce Nb_chromosomes ARB Arabidopsis _thaliana 5 YST Yeast 16 DRL Drosophile 5 MOU Mouse 44 HUM Human 46 ZBF ZebraFish 25 tuple n-uplet 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 nuplet). • 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. 1.1 1.n asso RA Espèce Entries Association x.n/y.n : Clé espèce • 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 1.n asso RB 1.n RB Références Entries ac 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 Interrogations Rq : 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 relationnel l 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 Instant t0 : Select attribut X FROM TABLE WHERE condition X=a User 1 Instant t1 : Update attribut X FROM TABLE t0 t1 X := b X=b X=a commit commit User 2 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. Pour s ’assurer l ’accès exclusif en modification à une table, on peut verrouiller cette table en mode EXCLUSIF : LOCK TABLE nom_table IN EXCLUSIVE MODE NOWAIT 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 t1 t2 t3 t4 XFIND E1 Transaction B XFIND E2 XFIND E2 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ée A est un objet de la base de données contrainte d’intégrité : A = B A et B sont les objets de la base de données A=3;B=3; T1 T2 1 : a : = A; A=6 2: b := A; 1 : A := A*2; 3: b := b+1; B=8 4: A := b; 5: a := 2*a; 6: A := a; T2 T1 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 2: A := A+1; A=7 3: B := B+1; B=4 4: B := B*2; A=7 ; B=8 Avec une telle exécution, les données ne sont pas mises à jour correctement, Ce qui rend A ‡ B Une exécution séquentielle de T1 puis T2, sauvegarde la cohérence 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 : SELECT INSERT UPDATE(col,…) DELETE ALTER ALL Un utilisateur ayant reçu un privilège avec GRANT peut le transmettre à son tour. Exemple : GRANT SELECT ON emp TO douglas GRANT 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 Illustration sur quelques modèles objet … 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 Modèle orienté objet pour un gène GENE 1 compose * est composé FRAGMENT is a TRANSCRIBED FRAGMENT NON TRANSCRIBED/ REGULATOR is a compose SPLICED * TRANSCRIPT * est composé is a mRNA snRNA SPLICED TRANSCRIPT COMPONENT (EXON) tRNA INTRON PROMOTOR rRNA 1 1 ORF 1 1 PRIMARY POLYPEPTIDE 1 * PROTEIN TERMINATOR Classes et sous-classes 3 classes Gene Protein-gene RNA-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 Essais de standardisation ASN.1,XML ... Pourquoi utiliser la technologie ORIENTE-OBJET (OO) ? Puissance d ’expression de données complexes 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 (nos données bio en question!) Pourquoi ne pas utiliser la technologie OO ? Relationnel DBMS simple, Relationnel DBMS mature, Tout le monde a un Relationnel DBMS ! Standardisation SQL3 Autres bases de données avancées • Prendre en compte des données peu structurées : sons, texte, images, vidéo (BD multi-média) • 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!). • Navigation entre objets INTERFACE accès à la base de données • requêtes déclaratives ou complexes • analyses pointues de données Entrepôt Biologique CHARGEUR / SOURCES Un cas de figure … Sources génomique Outils Possible ? Données cliniques Intégration Données expérimentales Micro Array Macro Array SAGE ... Entrepôt biologique Analyse Hypothèses ? D’autres investigations ? Expériences ? Source : Jef Wijsen NON ! en M2 ! avec le Web Sémantique et les ontologies de domaine.