Bases de Données

publicité
L3 Module Libre
Année universitaire 2005-2006
Initiation à la Bioinformatique
Jean-Michel RICHER
Deuxième Cours
Les Bases de Données
Relationnelles
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 base
40,604,319 séquences
2005
100 milliards de paires de
bases
165.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
TITLE
TITLE
TITLE
COMPND
COMPND
COMPND
COMPND
COMPND
COMPND
…
OXIDOREDUCTASE 27-OCT-03 1UR5
STABILIZATION OF A TETRAMERIC MALATE DEHYDROGENASE BY
2 INTRODUCTION OF A DISULFIDE BRIDGE AT THE DIMER/DIMER
3 INTERFACE
MOL_ID: 1;
2 MOLECULE: MALATE DEHYDROGENASE;
3 CHAIN: A, C;
4 EC: 1.1.1.37;
5 ENGINEERED: YES;
6 MUTATION:
Structuration
Une BDD = ensemble structuré de données enregistrées
avec le minimum de redondance
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)
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 60
Systè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
 ORACLE
gros systèmes (entreprises, administrations)
 ACCESS
PC sous Windows (MS Office)
 MySQL
PC 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
Table, tuple, attribut
Champs
(attributs ou colonnes)
fabricant
modèle
fréquence
Intel
Pentium 4
3000
Intel
Pentium M
2000
Intel
Pentium D
3000
AMD
Athlon XP
2800
AMD
Athlon 64 X2
3800
table
LE MODELE RELATIONNEL
Tuples
(enregistrements
Ou lignes)
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’étudiant
nom + 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
Nom
Prénom
N°Etud
…
Cours
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)
Un étudiant suit 1 ou plusieurs cours
Etudiant
Cours
suit
0..n
1..n
Un cours est suivi par aucun ou plusieurs étudiants
La Cardinalité d’un couple entité – association permet de préciser
les nombres minimum et maximum de fois pour lesquelles une entité
est concernée par l’association
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
1..1
1..n
N°client
Nom
Prénom
Adresse
passe
1..n
qté
Commande
Date
Prix total
contient
1..n
Produit
N°produit
Libellé
Descriptif
Prix unitaire
Qté en stock
Modèle Logique des Données
Comment passer du MCD au MLD ?
1) Les entités sont traduites en tables
Client
Commande
Produit
cl_id
co_id
pr_id
cl_nom
co_date
pr_libelle
cl_prenom
co_prix
pr_qte_stock
cl_adresse
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
Identifiant de commande
id_prod
Identifiant de produit
qte
Quantité commandée
Modèle Logique des Données
Client
Commande
cl_id
co_id
cl_nom
co_date
cl_prenom
co_prix
cl_adresse
co_id_client
Comprod
Au final
on obtient
4 tables
Produit
id_cmd
pr_id
id_prod
pr_libelle
qte
pr_qte_stock
pr_prix_unit
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 phpmyadmin
qui 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
Exemple : création de la table produits
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’)
);
Manipuler des enregistrements
Insérer un enregistrement
INSERT INTO produits
VALUES ( 1, ‘Carte mère MSI Neo2’, 5, 70 );
Modifier un enregistrement
UPDATE produits SET pr_prix_unit = 75
WHERE pr_id = 1;
Supprimer un enregistrement
DELETE FROM produits
WHERE pr_id = 1;
Rechercher des enregistrements
Pour rechercher des informations on utilise la commande
SELECT qui possède le format suivant :
SELECT attribut1, attribu2, …
FROM table1, table2, …
WHERE conditions
ORDER BY attribut
GROUP BY attribut
Rechercher des enregistrements
Afficher tous les noms des clients
SELECT cl_nom
FROM clients;
Afficher tous les noms des clients par ordre alphabétique
SELECT cl_nom
FROM clients
ORDER BY cl_nom;
Afficher tous les noms des clients par ordre inverse
SELECT cl_nom
FROM clients
ORDER BY cl_nom DESC;
Rechercher des enregistrements
Afficher les commandes du client N° 2
SELECT *
FROM commandes
WHERE co_id_client=2;
Afficher le montant total des commandes du client N° 2
SELECT SUM(co_prix_total)
FROM commandes
WHERE co_id_client=2;
Rechercher des enregistrements
Afficher le libellé de tous les produits de la commande N° 1
SELECT pr_libelle
FROM
comprod, produits
WHERE id_cmd=1 and id_prod=pr_id;
Téléchargement