La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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.

Présentations similaires


Présentation au sujet: "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."— Transcription de la présentation:

1 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

2 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 …

3 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,... Outils Exhaustive non redondante structurée persistante BD SGBD décrire modifier interroger

4 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

5 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

6 •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é : exprime qu‘une protéine peut être partenaire dans aucune (0) ou plusieurs complexes BD sur les Interactions protéiques

7 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.

8 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

9 • 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

10 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

11 questions réponses Transparence Système de Gestion de Bases de Données Objectifs Résistance aux pannes. SGBD applications besoins 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é.

12 Comment assurer ces objectifs ? Les trois niveaux de descriptions définies par la norme ANSI/ SPARC BD Niveau interne Stockage Niveau conceptuel ou logique Vues

13

14 Vues d’une base de données : • 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.

15 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

16 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 être classiques 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

17 Retour sur l’histoire … Début des systèmes de gestion de bases de données orienté-objets. 1960Uniquement des systèmes de gestion de fichiers très sophistiqués 1970Dé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), , 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 1990Les systèmes de gestion de bases de données relationnelles dominent le marché (Mais aussi compliqués ! et non adpatés )

18 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

19 Base de données hiérarchique Patron Sous-chef Chef Sous-chef Cellule Chromosome Gène

20 Base de données réseau Patron Sous-chef Chef Sous-chef Patron

21 Chromosome CodeChromosome NumChromosome …. Genome CodeGenome NomGénome …. Gene CodeGene NomGene …. CodeGénome CodeChromosome Select Cekejeuveu From LaTableKeJeudi Where LaConditionKimeuplé Select NomGene From TableGene Where CodeChromosome = HUM-10 Base de données relationnelle Une table ?Plusieurs tables ?

22

23 Personne Adresse Salaire Lieu de travail Chef Scooter de fonction Ref patron Patron Primes de responsabilité Voiture de fonction Sous-chef Vélo de fonction Ref chef Base de données objet Transcris épissé Taille Séquence ARNt Nom : Fonction : ARNm Niveau d’expression condition SnARN Localisation Moléculaire

24 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 aussi facile à 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és aux suites bureautiques les plus connues. Ex: ACCESS du pack Office. Preuve… Cependant …

25 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?) 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.

26 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èce Code Genome Nb_chromosomes Chromosomes Code chromosome N°Chrom Taille Code Genome AutresFragments Code chromosome fin Début type Code Fragment

27 Connaissance / Expertise Analyse Traitement Les besoins Requêtes Applications Modèle conceptuel de traitement Traitement des besoins (enfin! ) LES ETAPES

28 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 :

29 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 NIPNOMFonction … ………. ……….. = 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

30 Gestion simplifiée d’un génome n-uplets génome chromosome 1 n Génome Espèce Code Genome Nb_chromosomes Arabidopsis _thaliana Yeast Drosophile Mouse Human ZebraFish ARB YST DRL MOU HUM ZBF Clé primaire Chromosomes Code chromosome N°ChromTaille I II III IV IVIV code genome ARB HUM DRL MOU Clé étrangère attributs

31 Gènes Code chromosome IREG1 TRFr DMT1 TNFa Nom Code Génome Source Séquence ADN HUM MOU DROZ MOU_KO Code Gene Clé étrangère Clé primaire

32 Il existe deux grands types de liens Un - plusieurs Plusieurs - Plusieurs Génomes CodeGenome Nom Espèce nbChromosomes Chromosomes CodeChromosome Numéro Taille CodeGénome 1 * Identification des objets de gestion : Génomes, Gènes,... et les règles de gestion du domaine modélisé : interviews, étude des documents manipulés, des fichiers,... Présence de redondance !? CodeFragment Type séquence début fin CodeChromosome CodeGenome Autres Fragments 1 * Gènes CodeGene Nom-locus Source Sequence Codechromosome CodeGenome * Voilà le modèle !

33 Opérations propres à l ’algèbre relationnelle Une seule relation. Pas de doublons. Espèce NB chromosomes Homo sapiens25 Mus musculus22 S.Cerevisiae17 DROSOPHILE.M8 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 sapiens25 1 Mus musculus22 2 S.Cerevisiae17 3 DROSOPHILE.M8 4 CodeGenome Espèce Homo sapiens Mus musculus S.Cerevisiae DROSOPHILE.M Espèce NB chromosomes Homo sapiens25 Mus musculus22 S.Cerevisiae17 DROSOPHILE.M8

34 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 tableliste d'attributs FROM DISTINCT

35 R3 = SELECTION(Génome, Nb chromosomes pair) Espèce NB chromosomes Homo sapiens25 1 Mus musculus22 2 S.Cerevisiae17 3 DROSOPHILE.M8 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 musculus22 2 DROSOPHILE.M8 4 CodeGenome

36 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 Nom Source Séquence ADN Code Gene Produit gène ? Prod taille

37 Opération SELECTION en SQL WHERE condition ; SELECT * FROM table 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 : 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*"

38 R = JOINTURE (Genome,Chromosome, Genome.CodeGenome=Chromosome.CodeGenome) Opération JOINTURE Formalisme : R = JOINTURE (R1, R2, condition d'égalité entre attributs) Espèce NB chromosomes Homo sapiens25 Mus musculus22 S.Cerevisiae17 DROSOPHILE.M 8 CodeGenome Chromosomes Quels sont les espèces pour lesquels il existe des chromosomes à plus de bases Code chromosome N°Chrom Taille > II III IV IVIV CodeGenome Code chromosome N°ChromTaille II III IV IVIV CodeGenome Espèce NB chromosomes Homo sapiens25 DROSOPHILE.M8 Mus Musculus22 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

39 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 >= ; 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,... WHEREtable1.attribut1=table2.attribut1 AND Exemple : table2.attribut2=table3.attribut2 AND...;

40 Jointure Sélection ‘ Drosophile.M ’ Quels sont les chromosomes : (numéro, taille, …) du génome de la Drosophile ? Génomes Code Génome 3535 Souris Fluo! Drosophile.M Nom génome... Code Genome Code Chromosome N° Chromosome II V VI... Chromosomes Génomes Code Génome 5Drosophile.M Nom génome... Code Genome Code Chromosome N° Chromosome V VI... Nom génome Drosophile.M Question 2 Select * from Genome,Chromosome where Genome.nom like ‘ Drosophile.M’ and Chromosomes.CodeGenome = Genomes.CodeGenome Requête SQL

41 Quels sont les génomes pour lesquels le gène X1 est présent ? Gènes Code Chromosome X 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 jointureDeuxième jointure Génomes Code Génome 3535 Souris Fluo! Drosophile.M Nom génome... jointure1 Code Genome Code Chromosome N° Chromosome II V... Chromosomes jointure2 Question 3

42 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.

43 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)

44 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' ; Correction de l'exercice d'application n°1 En SQL

45 PARTICIPER EPREUVE DIVISION (PARTICIPER, EPREUVE) AthlèteEpreuve EpreuveAthlète Dupont200 m 200 mDupont Durand400 m 400 m Dupont400 m 110 m H Martin110 m H Dupont110 m H Martin200 m Le dividende doit avoir au moins une colonne de plus que le diviseur "L'athlète Dupont participe à toutes les épreuves" Opération DIVISION Formalisme : R = DIVISION (R1, R2) 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 génome Y qui sont présents dans tous les chromosomes ? … à vos idées!... Un Exemple hors Bio Qui a participe à toutes les épreuves ?

46 diviseur 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 La concaténation donnant 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 x Nom du gène Code Chromosome Tous_les_Gènes_de_5 Code Genome Code Chromosome N° Chromosome II V VI... Tous les Chromosomes du génome Y Tous_les_Chromosomes_de_5

47 et en SQL : SELECT Athlète, Count(*) FROM PARTICIPER GROUP BY Athlète HAVING COUNT(*) = N ; et en SQL : SELECT NomDuGène,Count(*) FROM Tous_les_gènes_de_y GROUP BY NomDuGène HAVING 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)

48 En SQL SELECT fonction1(attribut1), fonction2(attribut2),... FROM table; SELECT SUM(taille) FROM Gènes; Somme(taille) Opération CALCULER R = CALCULER (R0, fonction1, fonction2,...) ou N = CALCULER (R0, fonction) R1=CALCULER(Gènes, Somme(taille)) Gènes Code chromosome IREG1 TRFr DMT1 TNFa Nom Source Séquence ADN Code Gene Produit gène ? Prod1 Prod2 taille On désire obtenir la taille totale des zones codantes

49 Opération REGROUPER_ET_CALCULER R=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 chromosomecodante R2=REGROUPER_ET_CALCULER (Gènes,CodeChromosome, codante : Somme(taille)) Sum (taille) On désire obtenir le total de la zone codante par chromosome Gènes Code chromosome IREG1 TRFr DMT1 TNFa Nom Source Séquence ADN Code Gene Produit gène ? Prod1 Prod2 taille Le regroupement s'effectue sur un sous ensemble des attributs de la relation R0.

50 EN SQL Select codeChromosome, SUM(taille) as codante from Genes Group by CodeChromosome

51

52 Les opérations ensemblistes Produit Différence Union Intersection A n B A U B A - B !! A x B !!!

53 E1 : Enseignants élus au CA E2 : Enseignants représentants syndicaux n° enseignant nom_enseignant n°enseignant nom_enseignant 1DUPONT 1 DUPONT 3DURAND 4 MARTIN 4MARTIN 6 MICHEL 5BERTRAND 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 UNION On désire obtenir l'ensemble des enseignants élus au CA ou représentants syndicaux. Formalisme : R = UNION (R1, R2) n°enseignant nom_enseignant 1DUPONT 3DURAND 4MARTIN 5BERTRAND 6MICHEL R1=UNION (E1, E2)

54 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 X Nom du gène Métabolisme Description Fonctionnelle.blablabla Iron blabla.blabla cell cycle blabla.

55 Exemple : SELECT n°enseignant, NomEnseignant FROM E1 UNION SELECT n°enseignant, NomEnseignant FROM E2 Opération UNION en langage SQL SELECT liste d'attributs FROM table1 UNION SELECT liste d'attributs FROM table 2 ; Exemple : SELECT NomGène FROM Gènes Where Description_Fonctionnelle like «%iron homéostasie%» UNION SELECT NomGène FROM Gènes Where Description_Fonctionnelle like «%cell cycle%»

56 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 1DUPONT 4MARTIN 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°enseignantnom_enseignant 1DUPONT 1 DUPONT 3DURAND 4 MARTIN 4MARTIN 6 MICHEL 5BERTRAND

57 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 FER!Cycle cellulaire! CodeGène Produit/rôle

58 Exemple : SELECT n°enseignant, NomEnseignant FROM E1 INTERSECT SELECT n°enseignant, NomEnseignant FROM E2 ; Opération INTERSECTION SELECT attribut1, attribut2,... FROM table1 INTERSECT SELECT attribut1, attribut2,... FROM table2 ; attribut1 IN (SELECT attribut1 FROM table2) ; SELECT attribut1, attribut2,... FROM table1 WHERE OU ou SELECT n°enseignant, NomEnseignant FROM E1 WHERE n°enseignant IN (SELECT n°enseignant FROM E2) ; Exemple : SELECT CodeGène, Produit FROM FER INTERSECT SELECT CodeGène, Produit FROM Cycle ; ou SELECT CodeGène, Produit FROM FER WHERE CodeGène IN (SELECT CodeGène FROM Cycle) ;

59 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 3DURAND 5BERTRAND 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 1DUPONT 1 DUPONT 3DURAND 4 MARTIN 4MARTIN 6 MICHEL 5BERTRAND

60 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 FER!Cycle cellulaire! CodeGène Produit/rôle

61 Exemple : SELECT n°enseignant, NomEnseignant FROM E1 EXCEPT SELECT n°enseignant, NomEnseignant FROM E2 ; ou SELECT n°enseignant, NomEnseignant FROM E1 WHERE n°enseignant NOT IN (SELECT n°enseignant FROM E2) ; 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 : SELECT CodeGène, Produit FROM FER EXCEPT SELECT CodeGène, Produit FROM Cycle ; ou SELECT CodeGène, Produit FROM FER WHERE CodeGène NOT IN (SELECT CodeGène FROM Cycle) ;

62 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. 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 !) ?

63 Etudiants Epreuves n°étudiant nomlibellé épreuve coefficient 101DUPONT Informatique2 102MARTIN Mathématiques3 Gestion financière5 Opération PRODUIT CARTESIEN Examen = PRODUIT (Etudiants, Epreuves) n°étudiant nomlibellé épreuve coefficient 101DUPONTInformatique 2 101DUPONTMathématiques 3 101DUPONTGestion financière 5 102MARTINInformatique2 102MARTINMathématiques3 102MARTINGestion financière 5 Formalisme : R = PRODUIT (R1, R2)

64 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)

65 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élection critère 1 sélection Critère 2 projection {atti} projection {attj} jointure au moins un attribut commun

66 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 : CLIENTCOMMANDE CodeClientN°Commande NomClient, Date AdrClient, CodeClient* TélClient

67 On désire obtenir le code et le nom des clients ayant commandé le 10/06/97 ??? CLIENT CodeClient NomClient, adrClient, TélClient jointure CodeClient = CodeClient R2 N°Commande Date CodeClient NomClient adrClient TélClient R1 N°Commande Date CodeClient* sélection Date = 10/06/97 CodeClient NomClient projection COMMANDE N°Commande Date CodeClient* INPUT R3 CodeClient NomClient OUTPUT

68 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ènes CodeChromosome, CodeChromosome Taille, Nom_Numéro... Position... Métabolisme...

69 CodeGénome = CodeGénome et Nom_Numéro = « II » Chromosome CodeGenome CodeChromosome Taille, Nom_Numéro,... jointure R1 CodeGénome Espèce Espèce = « E » sélection INPUT CodeGé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

70 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, NomClient FROM CLIENT, COMMANDE WHERE CLIENT.CodeClient=COMMANDE.CodeClient AND Date='10/06/97';

71 Foprmalisme : R = TRI(R0, att1À, att2Å,...) Espèce CatégorieConditionnement Rosé des présConserveBocal Rosé des présSecVerrine CoulemelleFraisBoîte Rosé des présSecSachet plastique Champignons R1 = TRI (CHAMPIGNONS, EspèceÅ, CatégorieÀ, ConditionnementÀ) Espèce CatégorieConditionnement Rosé des présConserveBocal Rosé des présSecSacher plastique Rosé des présSecVerrine CoulemelleFraisBoî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

72 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. 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)

73 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)

74 Exemple R N°BonCommandeCodeProduitMontant 96008A B A A B LIGNE_COMMANDE N°BonCommandeCodeProduitQuantitéPuHt 96008A B A A B R=PROJECTION(LIGNE_CO MMANDE,N°BonCommande, CodeProduit,Montant:Quanti té*PuHt)

75 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.

76 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

77 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 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

78 [ ] : 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],...] ;

79 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

80 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.

81 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 ?

82 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)

83 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)

84 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 AS SELECT 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.CodeMat AND EVALUER.N°Etudiant = ETUDIANT.N°Etudiant GROUP BY ETUDIANT.N°Etudiant, Nom, Prénom, LibelléMat, CoeffMat; En SQL

85 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 MgEtu FROM MOYETUMAT GROUP BY N°Etudiant, Nom, Prénom ; SELECT LibelléMat, AVG(MoyEtuMat) FROM MOYETUMAT GROUP BY LibelléMat ;

86 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) ;

87 Du monde Réel au SGBD SYSTEMES D’INFORMATIONS Monde Réel Modèle Conceptuel Modèle Logique Modèle Physique SGBD

88 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.

89 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?)

90 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,...

91 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).

92 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.

93 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

94 Professeur # nom prenom adresse grade Cours # id nom vol hor filière donne 1.n0.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.

95 Le modèle Entité association

96 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.

97 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énome Espèce Code Genome Nb_chromosomes Arabidopsis _thaliana Yeast Drosophile Mouse Human ZebraFish ARB YST DRL MOU HUM ZBF tuple n-uplet Nom de la relation Attribut

98 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).

99 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.

100 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.

101 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.

102 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, …)

103 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)

104 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 R A et R B. Puis, si... Association x.1/x.n : • L'identifiant de B devient attribut supplémentaire de R A. Ce sera une clé étrangère. Association x.n/y.n : • On crée une relation R AB pour l'association. • La clé de R AB est la concaténation des clés des relations R A et R B. • Les attributs de l'association deviennent des attributs de R AB. RARA RBRB asso 1.11.n Entries Espèce Clé espèce RARA RBRB asso 1.n ac Entries Références coderef ref_num

105 Règles de passage du modèle Entité-Association au modèle Relationnel Seance (Id,Id,Id,tarif)

106 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.

107 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.

108 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

109 Sur le contrôle de la cohérence lors d’une interrogation ou d’un accès concurrent t0t0 X = a Instant t 0 : Select attribut X FROM TABLE WHERE condition User 1 Instant t 1 : Update attribut X FROM TABLE User 2 t1t1 X := b commit X = a commit X = b

110 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.

111 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 : tempsTransaction ATransaction B t1XFIND E1 t2XFIND E2 t3XFIND E2 t4XFIND E1 La transaction A est mise en attente au temps t3 et B au temps t4. Les deux transactions s'attendent mutuellement.

112 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 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 ‡ B Une 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

113 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.

114 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

115 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

116 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 …

117 FRAGMENT GENE PROMOTOR TERMINATOR TRANSCRIBED FRAGMENT NON TRANSCRIBED/ REGULATOR is a PROTEIN 1 * est composé compose Modèle orienté objet pour un gène mRNA SPLICED TRANSCRIPT ** ORF * INTRON SPLICED TRANSCRIPT COMPONENT (EXON) is a PRIMARY POLYPEPTIDE 11 compose est composé snRNA tRNA rRNA

118 Classes et sous-classes 3 classes Protein-gene RNA-gene Gene 3 descriptions

119 Modèle de données : échantillons de cellules d ’une expérience transcriptome : MGED 1999 (hedeilberg)

120 Diverses technologies pour la conception de bases de données DBMS Orienté-objet DBMS relationnel DBMS hybride ASN.1,XML... Essais de standardisation

121 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 ?

122 • 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

123 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!).

124 INTERFACE CHARGEUR / SOURCES • Navigation entre objets • requêtes déclaratives ou complexes • analyses pointues de données accès à la base de données Entrepôt Biologique

125 Un cas de figure … Sources génomique Entrepôt biologique Intégration Micro Array Macro ArraySAGE... Données expérimentales Données cliniques Analyse Outils Possible ? Hypothèses ? D’autres investigations ? Expériences ?

126 Source : Jef Wijsen

127

128

129

130

131 NON ! en M2 ! avec le Web Sémantique et les ontologies de domaine.


Télécharger ppt "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."

Présentations similaires


Annonces Google