Généralités sur les bases de données
L'objectif premier est le stockage de données mais celui-ci peut facilement être réalisé par des fichiers quelconques, plus ou moins structurés.
En général, on parle de SGBD (système de gestion de bases de données) lorsque les caractéristiques suivantes sont présentes :
- langage de requêtes à disposition,
- assurance de performances (réponse rapide aux requêtes),
- disponibilité des données sans interruption,
- garantie de l'intégrité des données,
- possibilité multi-utilisateurs, gestion des accès concurrents.
Cela écarte d'emblée les entrepôts de données, les archives ou les bases documentaires.
Et cela conduit entre autre à exiger une localisation unique de chaque donnée.
Modèles physiques ou logiques :
- modèle hiérarchique,
- modèle en réseau,
- modèle relationnel.
Nous trouvons encore des traces de ces modèles (ainsi les formats XML empruntent beaucoup au modèle hiérarchique) mais le modèle relationnel est aujourd'hui le modèle le plus répandu : la majorité des systèmes de gestion de base de données existant est fondée sur ce modèle.
Généralités sur le modèle relationnel
Inventé en 1970, E.F. Codd, directeur de recherche du centre IBM de San José.
Basé sur la notion de relation pour modéliser des objets du monde réel... premier exemple :
VOITURE(NV,MARQUE,TYPE,PUISSANCE,COULEUR)
POSSEDE(NSS,NV,DATE,PRIX)
Algèbre relationnelle
Opérations principales :
- produit cartésien : R × S
- jointure sous la condition C : R ⋈ S
- projection sur les attributs A : π(R)
- sélection sous la condition C : σ(R)
Vocabulaire du modèle relationnel
- relation ou table
- attribut (ou champ) : colonne d'une relation caractérisée par un nom
- tuple = une ligne = une occurence de la relation
- colonne = attribut = nom et domaine de définition
- clé de relation : ensemble minimum d'attributs qui détermine tous les autres s'il y en a plusieurs, choix d'une clef primaire
- clé principale = qui permet d'identifier un tuple
- clé étrangère = attribut qui fait référence à la clé d'une autre relation
- formulation d'une demande = requête
- exécution de la requête = transaction
Dépendances fonctionnelles
Un attribut (ou groupe d'attributs) Y dépend fonctionnellement d'un attribut (ou groupe d'attributs) X si, étant donnée une valeur de X, il lui correspond une valeur unique de Y (et ceci quelque soit l'instant considéré). On le note X -> Y.
Exemples :
- NV -> couleur
- TYPE -> marque
- TYPE -> puissance
On note que si Y contient tous les attributs d'une table, alors X est une clef de cette table.
Définition d'une relation
- intitulé
- noms et types des attributs
- clé de la relation
- clés étrangères
- attributs pouvant ne pas être renseignés (et qui contiennent alors la valeur nulle)
Conception d'une base relationnelle
Motivations
En dehors des interrogations, les opérations courantes sur une base de données en fonctionnement sont essentiellement : l'insertion de nouvelles données, la modification de données présentes et leur suppression.
Chacun de ces traitements peut provoquer l'apparition d'incohérences dans la base (par exemple, une même personne avec deux dates de naissance différentes) ou la perte non voulue d'informations.
Ces problèmes révèlent une mauvaise organisation de la base de données et le risque doit donc être prévenu lors de la conception de cette base.
Conception de la base de données
Deux méthodologies sont courantes pour parvenir à un schéma viable de la base de données :
- concevoir un modèle entité-association des données, puis le traduire dans le modèle relationnel ;
- écrire directement le schéma de la base dans le modèle relationnel puis tester s'il est en forme normale.
Traduction d'un schéma entité-association dans le modèle relationnel
- pour chaque entité du schéma, on définit une table ;
- pour une association A -> B de type 1-n, on ajoute un attribut à la table B pour recevoir les clefs de A ;
- pour une association A -> B de type n-n, on crée une nouvelle table reprenant les clés de A et de B, plus éventuellement d'autres descripteurs de l'association (le couple constitué par les clefs de A et de B est une clef de la nouvelle table).
Formes normales
Objectif : éviter les redondances, celles-ci pouvant amener des incohérences, et qui en plus impliqueraient l'existence de valeurs nulles
Exemple : FILM(TITRE,ANNEE,NOMVEDETTE,PRENOMVEDETTE)
à décomposer en
AMI1(NOM,PRENOM1) et AMI2(NOM,PRENOM2)
ou encore mieux pour éviter les valeurs nulles et autoriser plus de deux prénoms :
AMI(NOM) et PRENOMS(NOM,PRENOM)
clé : (NOM,ARTICLE)
dépendances : (NOM,ARTICLE) -> PRIX et NOM -> ADRESSE
à décomposer en
FOURNISSEUR(NOM,ADRESSE)
PRODUIT(ARTICLE,PRIX)
clé : NV
TYPE -> MARQUE et TYPE -> PUISSANCE
à décomposer en
VOITURE(NV,TYPE,COULEUR)
MODELE(TYPE,MARQUE,PUISSANCE)
Langage SQL (et pratique de MySQL)
Généralités
Un langage de manipulation de données doit permettre la modification d'une base : insertion, mise à jour et suppression.
Le langage SEQUEL (Chamberlain, IBM, 1976) est commercialisé en 1981 sous le nom de SQL.
Création de la base : l'instruction CREATE
/* Table des quartiers */
CREATE TABLE quartiers (
id int NOT NULL auto_increment,
nom_quartier text,
PRIMARY KEY (id)
);
/* Tables des lieux */
CREATE TABLE lieux (
id int NOT NULL auto_increment,
nom text,
ref_quartier int,
description text,
PRIMARY KEY (id)
);
CREATE INDEX nomlieuidx ON lieux(nom);
Remplissage des tables : l'instruction INSERT
INSERT INTO quartiers VALUES (1,'Wazemmes');
INSERT INTO quartiers(nom_quartier) VALUES ('Vieux Lille');
INSERT INTO lieux VALUES ('Biplan',1,'Salle de spectacle');
Interrogation de la base : l'instruction SELECT
SELECT * FROM quartiers; SELECT nom FROM lieux; SELECT nom FROM lieux ORDER BY nom; SELECT nom,description FROM lieux WHERE ref_quartier=1; SELECT nom,description FROM lieux WHERE ref_quartier=1; SELECT L.nom,Q.nom_quartier FROM lieux AS L,quartiers AS Q, WHERE L.ref_quartier=Q.id; SELECT L.nom,Q.nom_quartier FROM lieux AS L,quartiers AS Q, WHERE L.ref_quartier=Q.id ORDER BY L.nom; SELECT COUNT(*) FROM lieux;
Suppressions : les instructions DROP et DELETE
DROP TABLE quartiers; DELETE FROM lieux; DELETE FROM lieux WHERE ref_quartier=1;
Mise à jour de la base : l'instruction UPDATE
UPDATE quartiers SET nom_quartier='Waazzeeeemmes !' WHERE ref_quartier=1;
Voir aussi...
- Travaux pratiques bases de données et langage SQL
Des exemples montrant la création et l'interrogation de bases de données SQL.
- Master Gestion de l'Information et de la Documentation en Entreprise (Master GIDE)
Les cours que j'assure en Master 2 GIDE : algorithmique et programmation, réalisation de sites web dynamiques avec PHP.




