Introduction aux bases de données relationnelles

publicité
Formation
« Gestion des données scientifiques : stockage et consultation en
utilisant des bases de données »
24 au 27 /06/08
Introduction aux
bases de données relationnelles
Christine Tranchant-Dubreuil – UMR DIA-PC
[email protected]
Introduction
Base de données : ensemble structuré et organisé permettant le stockage de
grandes quantités d’informations afin d'en faciliter l'exploitation (ajout, mise à jour,
recherche de données).
Système de Gestion de Base de Données (SGBD) : ensemble de logiciels
systèmes permettant aux utilisateurs d'insérer, de modifier, et de rechercher
efficacement des données spécifiques dans une grande masse d'informations
(pouvant atteindre plusieurs milliards d'octets) partagée par de multiples
utilisateurs. Un SGBD est caractérise par un modèle de description des données.
Utilisateurs
- Mises à jour de la BD
- Interrogations
- Administration
- Gestion des fichiers
- Gestion de bases de données
SGBD
BD
SGBD : principaux objectifs
Indépendance physique : la façon dont les données sont définies doit être
indépendante des structures de stockage utilisées
Indépendance logique : un même ensemble de données peut être vu
différemment par des utilisateurs différents. Toutes ces visions personnelles des
données doivent être intégrées dans une vision globale.
Non redondance d’information : afin d’éviter les problèmes lors des mises à
jour, chaque donnée ne doit être présente qu’une seule fois dans la base
Partage des données : interrogations et modifications « en même temps »
dans un contexte multi-utilisateurs
Sécurité et reprise sur panne
SGBD : niveau de description des données
Niveau interne ou physique (le plus bas) : définit comment sont stockées
physiquement les données
Niveau logique ou conceptuel :
– décrit par un schéma conceptuel
– indique quelles sont les données stockées et quelles sont leurs relations
indépendamment de l’implantation physique
Niveau externe ou vue :
– propre à chaque utilisateur
– décrit par un ou plusieurs schémas externes
- permet une perception de tout ou partie de la base par un groupe donné
d’utilisateurs, indépendamment des autres
Quelques SGBD connus et utilisés
ACCESS : plate-forme Windows, mono-poste, licence commerciale
SQL SERVER : plate-forme Windows, mode client/serveur, licence commerciale
ORACLE : plate-formes
Windows et
Linux, mode client/serveur, licence
Windows
Linux,
commerciale
SYBASE
:
plate-formes
et
mode
client/serveur,
licence
commerciale
POSTGRESQL : plate-formes Windows et Linux, mode client/serveur, licence libre
MYSQL : plate-formes Windows et Linux, mode client/serveur, licence libre
Comparatif de SGBD :
http://fadace.developpez.com/sgbdcmp/
Architecture client/serveur
Client
réponse
requête
Serveur
Client
Le client émet une requête vers le serveur grâce à son adresse IP et le port,
qui désigne un service particulier du serveur
Le serveur reçoit la demande et répond à l'aide de l'adresse de la machine
cliente et son port
Modèle relationnel : quelques dates
1970
Papier fondateur de CODD sur la théorie des relations, fondement de la
théorie des bases de données relationnelles
1980 Apparition des SGBDr sur le marché (Oracle, Ingres,Informix, Sybase…)
1987 Standardisation du langage SQL (Structured Query Langage), qui étend
l’algèbre relationnelle
Objectifs du modèle relationnel
• proposer des schémas de données faciles à utiliser ;
• améliorer l’indépendance logique et physique;
• mettre à la disposition des utilisateurs des langages de haut niveau ;
• optimiser les accès à la base de données ;
• améliorer l’intégrité et la confidentialité ;
• fournir une approche méthodologique dans la construction des schémas.
• Données organisées sous forme de tables à deux dimensions et
manipulées par des opérateurs de l’algèbre relationnelle ;
• Etat cohérent de la base défini par un ensemble de contraintes
d’intégrité.
Schema relationnel
Relation Equipe(Code, Nom)
Code
Nom
DIV
DIVA
DYN
DYNADIV
GEN
GENOCA
Propriété (attribut, colonne,
champ) et type
- Indivisibilité : les données ne sont pas décomposables
- Domaine unique : les attributs ne peuvent prendre n’importe
quelle valeur (intervalle, type de données)
- Ordre : l’ordre des attributs n’a pas d’importance
3 propriétés
Schema relationnel
Relation Equipe(Code, Nom)
Code
Nom
DIV
DIVA
DYN
DYNADIV
GEN
GENOCA
Propriété (attribut, colonne, champ)
et type
Tuple (n-uplet, ligne,
enregistrement, record)
- Ordre des tuples sans d’importance
- Unicité des tuples : il ne peut y avoir de tuples identiques
=> identifiant (ou clé) : un ou plusieurs attributs permettent
d’identifier un enregistrement de la table
--
2 propriétés
Schema relationnel
Equipe (Code, Nom)
Clé primaire
Propriété Code
Code
Nom
DIV
DIVA
DYN
DYNADIV
GEN
GENOCA
Clé étrangère (clé primaire provenant d’une autre table)
Nom
Prénom
DateNaissa
nce
Code
Tremblay
Joseph
1950-03-12
DIV
Bouchard
Marie
1966-08-23
DYN
Girard
Johanne
1943-06-30
GEN
PERSONNE(Nom, Prenom, DateNaissance, #Code)
Avec Personne (Code) Equipe (Code)
Schema relationnel : contrainte de référence
Contrainte d’intégrité référentielle : toute valeur d’une clé étrangère est égale à
la valeur nulle ou à la valeur de la clé primaire à laquelle la clé étrangère se
réfère
Valeur nulle
– valeur conventionnelle introduite dans une relation pour représenter une
information inconnue ou inapplicable
– tout attribut peut prendre une valeur nulle excepté les attributs de la clé
primaire (contrainte d’entité)
Contraintes de domaine : contrainte d'intégrité qui impose qu'une colonne
d'une relation doit comporter des valeurs vérifiant une assertion logique
Algèbre relationnelle : définitions
Ensemble d’opérateurs qui s’appliquent aux relations
L’algèbre relationnelle permet de faire des recherches dans les relations
Résultat : nouvelle relation qui peut à son tour être manipulée
Opérations de base: sélection (noté σ), projection (π)
Opérations ensemblistes: produit cartésien (x), jointures (|X|), union (∪),
∪
intersection (∩),
différence (−), division (/)
Algèbre relationnelle : opérateur de base
SELECTION
sélection des nuplets satisfaisant un certain prédicat
σ(Numéro≥5)Personne
Numéro
Nom
Prénom
5
Durand
Caroline
1
Germain
Stan
12
Dupont
Lisa
3
Germain
Rose-Marie
Numéro
Nom
Prénom
5
Durand
Caroline
12
Dupont
Lisa
Algèbre relationnelle : opérateur de base
PROJECTION
Elimination de certains attributs d’une relation
Π(Nom)Personne
Numéro
Nom
Prénom
5
Durand
Caroline
1
Germain
Stan
12
Dupont
Lisa
3
Germain
Rose-Marie
Nom
Durand
Germain
Dupont
Germain
Algèbre relationnelle : opérateurs ensemblistes
Soient R et S deux relations de même schéma :
Union: T = R ∪ S
Intersection: T = R∩S
Différence: T=R-S
Produit cartésien T=RxS
différence (−), division (/)
Algèbre relationnelle : opérateurs ensemblistes
Union ∪
• syntaxe : R ∪ S
• sémantique : réunit dans une même relation les tuples de R et de S
R1 (A,B)
A
B
a
b
b
b
y
z
R2 (A,B)
A
B
u
v
y
z
R1 ∪ R2 A B
A
B
a
b
b
b
y
z
u
v
Algèbre relationnelle : opérateurs ensemblistes
Intersection ∩
• syntaxe : R ∩ S
• sémantique : sélectionne les tuples qui sont à la fois dans R et S
R1 (A,B)
A
B
a
b
b
b
y
z
R2 (A,B)
A
B
u
v
y
z
R1 ∩ R2 A B
A
B
y
z
Algèbre relationnelle : opérateurs ensemblistes
Difference • syntaxe : R - S
• sémantique : sélectionne les tuples de R qui ne sont pas dans S
R1 (A,B)
A
B
a
b
b
b
y
z
R2 (A,B)
A
B
u
v
y
z
R1 ∩ R2 A B
A
B
a
b
b
b
Algèbre relationnelle : opérateurs ensemblistes
Produit cartésien x
• but: construire toutes les combinaisons de tuples de deux relations
• syntaxe : R × S
• Sémantique : tuple de R est combiné avec chaque tuple de S
RxS
R (A,B)
S (C,D,E)
A
B
C
D
E
a
b
c
d
e
a
b
c
d
e
A
B
C
D
E
a
b
c
d
e
a
b
c
d
e
b
c
b
a
b
b
C
b
a
b
b
c
b
a
b
c
b
a
a
c
b
c
b
a
b
c
b
a
a
c
c
b
a
a
c
c
b a a c
n x m tuples
n tuples
m tuples
Algèbre relationnelle : opérateurs ensemblistes
Division
• relation composée des n-uplets tels que le produit cartésien avec le
diviseur soit un sous-ensemble de la relation dividende
Participer
Epreuve
Participer % Epreuve
Athlete
Nom
Nom
Athlete
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
Algèbre relationnelle
Jointure naturelle
• but: créer toutes les combinaisons significatives entre tuples de deux
relations
significatives = portent la même valeur pour les attributs de même domaine !
• précondition: les deux relations ont au moins un attribut de même domaine
• Produit cartésien suivi d’une sélection
R (A,B)
S (B,C,D)
A
B
B
C
D
A
B
C
D
a
b
b
c
D
a
B
c
D
b
C
a
a
b
c
B
c
d
c
b
d
a
c
Langage SQL
langage normalisé de requête non procédural
• DDL : DATA DEFINITION LANGAGE
•CREATE
• DROP
• ALTER
• DML : DATA MANIPULATION LANGAGE
• INSERT
• DELETE
• UPDATE
• SELECT
• DCL : DATA CONTROL LANGAGE
• GRANT
• REVOKE
Langage SQL : DDL
CREATE TABLE
CREATE TABLE table (
col1 type 1 [NOT NULL] ,
col2 type2 [NOT NULL] …
)
Contraintes :
CONSTRAINT nom_contrainte
PRIMARY KEY (liste attributs clé primaire)
| NOT NULL immédiatement après la déclaration de
l’attribut
| CHECK (condition) après la déclaration de l’attribut
| UNIQUE après la déclaration de l’attribut
| FOREIGN KEY (clé étrangère)
REFERENCES nom_table (liste-colonne)
Langage SQL : DDL
CREATE TABLE Enseignant
(
Enseignant_ID integer,
Departement_ID integer NOT NULL,
Nom varchar(25) NOT NULL,
Prenom varchar(25) NOT NULL,
Grade varchar(25)
CONSTRAINT CK_Enseignant_Grade
CHECK (Grade IN ('Vacataire', 'Moniteur','ATER', 'MCF’),
CONSTRAINT PK_Enseignant PRIMARY KEY (Enseignant_ID),
CONSTRAINT "FK_Enseignant_Departement_ID"
FOREIGN KEY (Departement_ID)
REFERENCES Departement (Departement_ID)
ON UPDATE CASCADE ON DELETE CASCADE
);
Contrainte de domaine
Définition de la clé primaire
Définition de la clé étrangère
Langage SQL : DDL
ALTER TABLE
ALTER TABLE table
ADD (col1 type1, col2 type2 …)
| MODIFY (col1 type1, col2 type2 …)
| DROP PRIMARY KEY
| DROP CONSTRAINT nom_contrainte
DROP TABLE table
CREATE [UNIQUE] INDEX nom_index ON table (col1,col …)
Langage SQL : DML
SELECT
SELECT [DISTINCT] *
FROM table_1 [synonyme_1], table_2 [synonyme_1], …
[WHERE prédicat_1
AND [ou OR] prédicat_2 …]
SELECT [DISTINCT] exp_1 [AS nom_1], exp_2 ...
FROM table_1 [synonyme_1], table_2 [synonyme_1], …
[WHERE prédicat_1
AND [ou OR] prédicat_2 …]
Langage SQL : DML
SELECT
SELECT Nom, Prénom
FROM Etudiant
WHERE Ville = ‘Paris’ ;
SELECT Nom, Prénom
FROM Etudiant
WHERE Ville = ‘Paris’
AND Nom LIKE ‘Du%’;
SELECT Nom, Prénom
FROM Etudiant
WHERE Fax IS NULL;
SELECT Intitulé,
(NbSeances*3) AS NbHeures
FROM Cours
WHERE (NbSeances*3)
BETWEEN 24 AND 27 ;
SELECT Nom, Prénom
FROM Enseignant
WHERE Département_ID IN
(‘INFO’, ‘MATH’ , ‘ECO’)
Langage SQL : DML
PREDICAT DU WHERE
exp1
exp1
exp1
exp1
exp1
exp1
exp1
exp1
exp1
exp1
exp1
exp1
= exp2
!= exp2
> exp2
< exp2
<= exp2
>= exp2
BETWEEN exp2 AND exp3
LIKE exp2
IN (exp2, exp3, …)
NOT IN (exp2, exp3, …)
IS NULL
IS NOT NULL
SELECT Intitulé,
FROM Cours
WHERE NbSeances <=
( SELECT AVG(NbSeances)
FROM Cours);
Langage SQL : DML
Fonctions d’agrégation
• Un groupe est un sous-ensemble de lignes d’une table ayant la même valeur
pour un attribut.
• On peut effectuer des calculs statistiques
• COUNT, MIN, MAX, AVG, SUM, ORDER BY, GROUP BY
SELECT COUNT(nom)
FROM Etudiant ;
SELECT AVG(Capacité),
SUM(Capacité)
FROM Salle ;
SELECT Département_ID,
Nom, Prénom
FROM Enseignant
ORDER BY Département_ID
DESC, Nom, Prénom ;
SELECT Département_ID,
COUNT(Nom)
FROM Enseignant
GROUP BY Département_ID;
Langage SQL : DDL
Jointure
SELECT Nom, Prénom, Nom_Département
FROM Enseignant E, Département D
WHERE E.Département_ID = D.Département_ID ;
Jointure externe : sous Oracle
SELECT Nom, Prénom, Nom_Département
FROM Enseignant E, Département D
WHERE E.Département_ID = D.Département_ID (+);
S’il existe des enseignants attaché à aucun département, la valeur de
Département_ID sera NULL.
En SQL2 : [RIGHT | LEFT | FULL] OUTER JOIN
Langage SQL : DML
Insertion
INSERT INTO table(col1, col2, … coln)
VALUES (val1, val2, … valn)
Suppression
DELETE FROM table
WHERE prédicat
Mise à jour
UPDATE table
SET col1 = exp1, col2 = exp2
WHERE prédicat
Téléchargement