Download - L3 Module Libre Année universitaire 2005-2006 Initiation à la Bioinformatique Jean-Michel RICHER
L3 Module Libre
Année universitaire 2005-2006
Initiation à la Bioinformatique
Jean-Michel RICHER
Deuxième Cours
Les Bases de DonnéesRelationnelles
Application
Plan
1. Introduction
2. Les bases de données relationnelles
3. Comment construire une base de données
4. Manipuler les données
Volume d’Information
Trop d’information tue l’information
Les volumes de données générés par la bioinformatique sont colossaux :
Comment stocker l’information de manière non redondante Comment extraire l’information utile
Exemples : GenBank, PDB
GenBank
GenBank
comprehensive public database of nucleotide sequences and supporting bibliographic and biological annotation, built and distributed by the National Center for Biotechnology Information (NCBI), a division of the National Library of Medicine (NLM), located on the campus of the US National Institutes of Health (NIH) in Bethesda, Maryland.
http://www.ncbi.nlm.nih.gov/Entrez/
http://www.ncbi.nlm.nih.gov/Genbank/genbankstats.html
Evolution de GenBank
2004 :
44,575,745,176 paires de base40,604,319 séquences
2005
100 milliards de paires de bases165.000 organismes
PDB
PDB (Protein DataBank)
The RCSB PDB provides a variety of tools and resources for studying the structures of biological macromolecules and their relationships to sequence, function, and disease
Attention !
Ce qu’une base de données n’est pas :
un fichier Word un fichier Excel un fichier texte
Une base de données utilise un SGBD (Système de Gestion de Base de Données) pour manipuler les données :
Oracle Access MySQL
Attention !
On peut cependant organiser l’information de manière cohérente dans un fichier texte (ex PDB) pour l’insérer dans une base de données ou la traiter ultérieurement
HEADER OXIDOREDUCTASE 27-OCT-03 1UR5 TITLE STABILIZATION OF A TETRAMERIC MALATE DEHYDROGENASE BY TITLE 2 INTRODUCTION OF A DISULFIDE BRIDGE AT THE DIMER/DIMER TITLE 3 INTERFACE COMPND MOL_ID: 1; COMPND 2 MOLECULE: MALATE DEHYDROGENASE; COMPND 3 CHAIN: A, C; COMPND 4 EC: 1.1.1.37; COMPND 5 ENGINEERED: YES; COMPND 6 MUTATION: …
Structuration
Pour pouvoir gérer des données il faut les stocker de manière structurée pour :
identifier clairement les données (champs, tables) pouvoir y accéder rapidement (index)
Une BDD = ensemble structuré de données enregistrées avec le minimum de redondance
Un SGBD = offre la possibilité de manipuler les représentations abstraites des données, indépendamment de leur organisation et de leur implantation sur des supports physiques
Historique
Naissance des SGBD dans les années 60Systèmes propriétaires (IBM)
1970 T. Codd chercheur chez IBM propose Le modèle relationnel
Tables Algèbre relationnelle
Démarche cohérente et unifiée concernant
Le LDD (Langage de Description des Données) Le LMD (Langage de Manipulation des Données)
Les Systèmes actuels
ORACLEgros systèmes (entreprises,
administrations)
ACCESSPC sous Windows (MS Office)
MySQLPC sous Windows ou Linux (gratuit)
et bien d’autres encore… SQL-Server, PostGreSQL,Interbase, sybase, DB2
Organisation
un SGDB est composé de bases de données
une base de données est composée de tables
chaque table est composée de champs
SGBD
BD
tables
BD BD
fabricant modèle fréquence
Intel
Intel
Intel
AMD
AMD
Pentium 4
Pentium M
Pentium D
Athlon XP
Athlon 64 X2
3000
2000
3000
2800
3800
Champs(attributs ou colonnes)
Tuples(enregistrementsOu lignes)
table
LE MODELE RELATIONNEL
Table, tuple, attribut
Notion de clé et d’index
Un index est un mécanisme qui permet d’accéder rapidement à l’information
Exemple : on possède un fichier de clients et on désire afficher les noms des clients qui habitent Angers
on ne possède pas d’index sur le champ ville : il faut réaliser une recherche séquentielle on possède un index sur le champ ville : il n’est nécessaire de parcourir tous les enregistrements.
Remarque : on peut créer des index sur plusieurs champs.
Notion de clé et d’index
Une clé primaire (aussi appelée identifiant) permet d’identifier de manière unique un enregistrement (tuple)
Exemples :numéro de client numéro d’étudiantnom + prénom
Elaboration d’une BD
On passe par deux phases :
1) Création du Modèle Conceptuel des Données (MCD)
2) traduction du MCD en Modèle Logique des Données (MLD)
Modèle Conceptuel de Données
Il décrit l’organisation initiale des données sous forme d’entités et de relations
Une entité est un être ou un objet (concret ou abstrait) qui peut être distingué d’un autre objet.
Une entité est composée de champs (ou attributs)
Etudiant Cours
NomPrénomN°Etud…
IntituléNbr heures…
Modèle Conceptuel de Données
Une association (ou relation) exprime une interaction entre une à plusieurs entités. (Une association peut comporter des attributs)
Etudiant Courssuit
La Cardinalité d’un couple entité – association permet de préciserles nombres minimum et maximum de fois pour lesquelles une entitéest concernée par l’association
1..n0..n
Un étudiant suit 1 ou plusieurs cours
Un cours est suivi par aucun ou plusieurs étudiants
Modèle Conceptuel de Données
Exemple
Créer un MCD pour modéliser le problème suivant :
Une société de vente par correspondance met en vente des produits.
Chaque produit est identifié par un numéro, un prix unitaire et une quantité en stock.
Un client identifié par un numéro de client, un nom, un prénom et une adresse passe commande à une date donnée d’un ensemble de produits.
Modèle Conceptuel de Données
Client
Commande
Produit
1..n
1..n
1..n
1..1
DatePrix total
qtépasse
N°clientNom
PrénomAdresse
N°produitLibellé
DescriptifPrix unitaireQté en stockcontient
Modèle Logique des Données
Comment passer du MCD au MLD ?
1) Les entités sont traduites en tables
Client
cl_id
cl_nom
cl_prenom
cl_adresse
Commande Produit
co_id
co_date
co_prix
pr_id
pr_libelle
pr_qte_stock
pr_prix_unit
Modèle Logique des Données
Traduction des relations 1..1 <-> 1..n
L’identifiant de l’entité de cardinalité 1..1 est ajouté aux attributs de l’entité de cardinalité 1..n
Commande
co_id
co_date
co_prix
co_id_client
Modèle Logique des Données
Traduction des relations 1..n <-> 1..n
Il faut créer une nouvelle table qui comprend les identifiants des deux entités
Comprod
id_cmd
id_prod
qte
Identifiant de commande
Identifiant de produit
Quantité commandée
Modèle Logique des Données
Au final on obtient 4 tables
Client
cl_id
cl_nom
cl_prenom
cl_adresse
Commande
co_id
co_date
co_prix
co_id_client
Produit
pr_id
pr_libelle
pr_qte_stock
pr_prix_unit
Comprod
id_cmd
id_prod
qte
Utilisation de MySQL
Sous Linux
installer le serveur MySQL
Sous Windows
installer EasyPHP ou LAMP (Linux Apache MySQL Php
Si on installe un serveur web on peut utiliser phpmyadminqui est une interface web pour MySQL
Utilisation de MySQL
Utilisation en ligne de commande
MySQL est un serveur qui utilise un système de connexion par login et mot de passe
mysql –h richer –u audrey –p
-h (host) spécifie le nom du serveur -u (user) nom de l’utilisateur -p (password) il faut saisir un mot de passe
Utilisation de MySQL
Utiliser la base de données appelée test
mysql> use test;
Donner la liste des table de test
mysql> show tables;…
On préférera utiliser phpmyadmin qui ne demande aucune connaissance préalable des commandes de SQL
Le Langage SQL
SQL (Structured Query Language) est un langage de manipulation et d’interrogation des bases de données.Il fait office de LDD et LMD.
Il permet notamment de :
Créer une base de données CREATE Créer une table CREATE Rechercher des enregistrements SELECT Ajouter un nouvel enregistrement INSERT Modifier des attributs d’un enregistrement UPDATE Supprimer des enregistrements DELETE
Créer une table
CREATE TABLE produits (pr_id int(11) NOT NULL auto_increment,pr_libelle varchar(50) NOT NULL default ‘’,pr_qte_stock int(11) NOT NULL default ‘0’,pr_prix_unit float NOT NULL default ‘0’,PRIMARY KEY (‘pr_id’),KEY ‘pr_libelle’ (‘pr_libelle’));
Exemple : création de la table produits
Manipuler des enregistrements
INSERT INTO produits VALUES ( 1, ‘Carte mère MSI Neo2’, 5, 70 );
UPDATE produits SET pr_prix_unit = 75WHERE pr_id = 1;
DELETE FROM produitsWHERE pr_id = 1;
Insérer un enregistrement
Modifier un enregistrement
Supprimer un enregistrement
Rechercher des enregistrements
SELECT attribut1, attribu2, … FROM table1, table2, …WHERE conditions
ORDER BY attributGROUP BY attribut
Pour rechercher des informations on utilise la commande SELECT qui possède le format suivant :
Rechercher des enregistrements
Afficher tous les noms des clients
SELECT cl_nomFROM clients;
Afficher tous les noms des clients par ordre alphabétique
SELECT cl_nomFROM clientsORDER BY cl_nom;
Afficher tous les noms des clients par ordre inverse
SELECT cl_nomFROM clientsORDER BY cl_nom DESC;
Rechercher des enregistrements
Afficher les commandes du client N° 2
SELECT * FROM commandesWHERE co_id_client=2;
Afficher le montant total des commandes du client N° 2
SELECT SUM(co_prix_total) FROM commandesWHERE co_id_client=2;
Rechercher des enregistrements
Afficher le libellé de tous les produits de la commande N° 1
SELECT pr_libelle FROM comprod, produitsWHERE id_cmd=1 and id_prod=pr_id;