Les Bases de données relationnelles
Modélisation, Implémentation et
Interrogation
M. GUEYE
De quoi va-t-on parlé ?
1. Les Bases de données
Quelques définitions et exemples
Le SGBD (Système de Gestion de Base de Données)
Petit historique des BD
2. Conception d’une base de données
La modélisation
Le modèle conceptuel de données (MCD)
─ Merise + Entité/Association
Le modèle logique de données (MLD)
─ Modèle relationnel
3. SQL (Structured Query Language)
4. Les vues et triggers
2
Les Bases de données
Quelques définitions
• Définition 1: une données contient une information
quelconque comme, par exemple: voici une personne,
elle s’appelle unTel.
C’est aussi une relation entre des informations : unTel
enseigne les bases de données.
Des relations de ce genre définissent des structures.
• Définition 2.a: une base de données est un grand
ensemble d’informations structurées mémorisées sur un
support permanent.
4
Quelques définitions
• Définition 2.b: une base de données peut aussi être vue
comme une collection d’informations modélisant une
organisation (entreprise, société …) du monde réel.
Techniquement c’est un ensemble de fichiers
─ reliés par des pointeurs multiples, aussi cohérents
entre eux que possible
─ organisés de manière à répondre efficacement à
une grande variété de questions
5
Quelques exemples
• Exemple (1) de base de données : les clients d’une banque et
leurs comptes.
COMPTE
Num_cli Nom Tel Num_Cte Solde
MF001 Moussa FALL 00221 77 485 13 29 1234 1.800.650
MF001 Moussa FALL 00221 77 485 13 29 3225 7.561.000
JD002 Jean DIATTA 00221 33 820 18 30 456 21.450.000
AG003 Astou GUEYE +221 76 545 88 75 618 12.945.500
6
Quelques exemples
• Exemple (1) de base de données : les clients d’une banque et
leurs comptes.
COMPTE
Num_cli Nom Tel Num_Cte Solde
MF001 Moussa FALL 00221 77 485 13 29 1234 1.800.650
MF001 Moussa FALL 00221 77 485 13 29 3225 7.561.000
JD002 Jean DIATTA 00221 33 820 18 30 456 21.450.000
AG003 Astou GUEYE +221 76 545 88 75 618 12.945.500
7
Quelques exemples
• Exemple (2) de base de données : les clients d’une banque et
leurs comptes.
CLIENT
Num_cli Nom Tel Num_Cte
MF001 Moussa FALL 00221 77 485 13 29 1234
JD002 Jean DIATTA 00221 33 820 18 30 456
AG003 Astou GUEYE +221 76 545 88 75 618
COMPTE
Num_Cte Solde
456 21.450.000
1234 1.800.650
8
618 12.945.500
Quelques exemples
• Exemple (3) de base de données : les clients d’une banque et
leurs comptes.
CLIENT
Num_cli Nom Tel
MF001 Moussa FALL 00221 77 485 13 29
JD002 Jean DIATTA 00221 33 820 18 30
AG003 Astou GUEYE +221 76 545 88 75
COMPTE
Num_Cte Solde Num_cli
1234 1.800.650 MF001
456 21.450.000 JD002
618 12.945.500 AG003
9
3225 7.561.000 MF001
Quelques exemples
10
Quelques exemples
11
Le SGBD
Problématique: Une base de données n’étant du moins qu’un ensemble
de fichiers. L’utilisation directe de ces fichiers soulève de très gros
problèmes :
• Lourdeur d’accès aux données. En pratique, pour chaque accès, même
le plus simples, il faudrait écrire un programme.
• Manque de sécurité. Si tout programmeur peut accéder directement aux
fichiers, il est impossible de garantir la sécurité et l’intégrité des
données.
• Pas de contrôle de concurrence. Dans un environnement où plusieurs
utilisateurs accèdent aux même fichiers, des problèmes de concurrence
d’accès se posent.
D’où le recours à un logiciel chargé de
─ gérer les fichiers constituant une base de données,
─ prendre en charge les fonctionnalités de protection et de sécurité,
─ fournir les différents types d’interface nécessaires à l’accès aux
données.
C’est le SGBD.
12
Le SGBD
Définition 3.a: Un Système de Gestion de Bases de
Données (SGBD) est un logiciel de haut niveau qui
permet de manipuler les informations stockées dans une
base de données.
Définition 3.b: On peut encore le définir comme un
ensemble de logiciels systèmes permettant de stocker et
d’interroger un ensemble de fichiers interdépendants.
Mais aussi comme un outil permettant de modéliser et
de gérer les données d’une organisation (entreprise,
société …)
13
Le SGBD
Le SGBD joue le rôle (pour l’accès aux fichiers d’une base de données)
de celui du système d’exploitation pour l’accès au matériel de
l’ordinateur !
14
Petit historique des BD
Années 1960:
• début 1960: Charles Bachmann développe le premier
SGBD, IDS, chez Honeywell
– modèle réseau: les associations entre les données
sont représentées par un graphe.
• fin1960: IBM lance le SGBD IMS
– modèle hiérarchique: les associations entre les
données sont représentées par un arbre.
• fin 1960: standardisation du modèle réseau Conference
On DAta SYstems Languages (CODASYL).
15
Petit historique des BD
Années 1970:
• 1970: Ted Codd définit le modèle relationnel au IBM San
Jose Laboratory(aujourd’hui IBM Almaden)
• 2 projets de recherche majeurs
– INGRES, University of California, Berkeley
• devint le produit INGRES, suivi par POSTGRES, logiciel libre, qui
sera le produit ILLUSTRA, racheté par INFORMIX
– System R, IBM San Jose Laboratory
• devint DB2, inspira ORACLE
• 1976: Peter Chen définit le modèle Entité-Association
(Entity-Relationship)
16
Petit historique des BD
Années 1980:
• maturation de la technologie relationnelle
• standardisation de SQL
Années 1990:
• amélioration constante de la technologie relationnelle
• support de la distribution et du parallélisme
• modèle objet, ODMG
• fin 1990 : le relationnel-objet, SQL3
• nouveaux domaines d’application: entrepôts de données
et décisionnel, Web, multimédia, mobiles, etc.
Années 2000:
• apparition de XML…
17
Conception d’une base de
données
La modélisation
• Les bases de données mémorisent les données
d’une organisation sous une forme structurée.
• La structure des données est déterminée par le
modèle de données
• Deux niveaux de modélisation
– conceptuel
– logique
19
Vue conceptuelle des données
LE MODELE ENTITE ASSOCIATION
20
Le modèle entité-association (E/A)
• E/R (entity-relationship) model en anglais
• Modèle de conception
– modélise graphiquement les entités, attributs et
associations
– facilite la détection d’erreurs de conception
– peut être traduit automatiquement dans un modèle
logique (relationnel)
• Supporté par les outils CASE pour BD
21
Les concepts
• Entité : un objet qui existe dans le monde réel, possède des
propriétés et est distinguable des autres objets.
Exemple :
─ l’employé Martin
─ le projet TERA
• Association : une relation entre deux ou plusieurs entités.
Exemple :
─ l’employé Smith dirige le projet TERA
─ l’employé Martin travaille dans le projet TERA
• Propriété / Attribut : propriété d’une entité ou d'une
association. Prend ses valeurs dans un domaine (texte, [1..10],
etc.).
Exemple :
─ le matricule de l’employé Smith est 10
─ la durée de l’affectation de Martin dans le projet TERA est 6
Classe d'entités et d'associations
• Une classe d'entités est un ensemble d'entités similaires, ayant les
mêmes attributs
• Une classe d’associations est un ensemble d’associations entres les
entités d’une ou de plusieurs classes.
Projet Employe
Nom Diriger Matricule
Durée Nom
Fonction
Salaire
Par abus de langage, on utilise souvent entité
(association) à la place de classe d’entité
(d’association).
23
Classe d'entités et d'associations
• Une classe d'entités est un ensemble d'entités similaires, ayant les
mêmes attributs
• Une classe d’associations est un ensemble d’associations entres les
entités d’une ou de plusieurs classes.
Projet Employe
Nom Diriger Matricule
Durée Nom
Fonction
Salaire
Par abus de langage, on utilise souvent entité
(association) à la place de classe d’entité
(d’association).
24
Identificateur
• Identificateur d'entité
– un ou plusieurs attributs permettant d'identifier une
entité dans une classe d'entités
– exemple : Employe
Employé N° d'employé Matricule
Projet N° de projet Nom
Fonction
Salaire
• Identificateur d'association
– un identificateur composé d’identificateurs d’entités
reliées par l'association
– exemple :
Travaille (Matricule de l'employé, Nom du projet) 25
Cardinalités d'une classe d'associations
• Une intervalle [min,max] indiquent pour une classe
d’entités C et une classe d’associations A, le nombre
d'associations de type A qu’une entité de C peut avoir
avec d’autres entités.
• min = 0 ou 1
– exemple :
• un employé doit travailler dans au moins un projet
• un projet peut avoir aucun employé
• max = 1ou N
– exemple
• un employé ne peut pas travailler dans plusieurs projets
• un projet peut avoir plusieurs employés
26
Cardinalités d'une classe d'associations
Projet Employe
Nom 1,1 Diriger 1,n Matricule
Durée Nom
Fonction
Salaire
Projet Employe
Nom 0,n Diriger 0,1 Matricule
Durée Nom
Fonction
Salaire
Projet Employe
Nom 1,1 Diriger 0,1 Matricule
Durée Nom
Fonction
Salaire
Selon les cardinalités l’interprétation du modèle change 27
Diagramme entité-association
Un projet est forcément Un employé peut être
dirigé par un et un le directeur d’un projet
seul employé. ou non.
Projet Employe
Nom 1,1 Diriger 0,1 Matricule
Durée Nom
Fonction
Salaire
Travailler
1,n date_debut 1,1 Chaque employé
travaille dans
Dans un projet, il y a exactement un
au moins un employé. projet.
28
Association réflexive
• Une entité d'une classe C est associé à une ou
plusieurs entités de la même classe C.
0,n
Employe
Matricule Diriger
Nom
Fonction
Salaire 0,1
[0,n] : un employé peut diriger plusieurs autres employés.
[0,1] : s’il est dirigé, un employé n’est dirigé que par un seul directeur.
29
Association ternaire
Professeur Etudiant
N°SS 0,n Enseigner 1,n N°Cet
Nom Nom
Prenom Prenom
1,n
Matière
N°Mat Ces deux modèles sont différents.
Nom Ils ne disent pas la même chose!
Libelle
Professeur Etudiant
N°SS 0,n Enseigner 1,n N°Cet
Nom Nom
Prenom Prenom
1,n 1,n
Matière
Dispenser 1,n N°Mat 1,n Apprendre
Nom 30
Libelle
Entités fortes et faibles
• Entité forte : entièrement identifiable par ses attributs
• Entité faible : ne peut être identifiée que par rapport à
une autre entité, dite dominante, à laquelle elle se réfère.
Son identificateur est :
identificateur partiel + identificateur de l'entité dominante
Salle Batiment
Num_salle Est_dans 1,n Nom
Nb_places Nb_etages
31
Héritage
Employe
N°SS
Nom
Spécialisation Prenom Généralisation
Adresse
Mecanicien
Electricien
Specialite
Diplome
Email
Experience
Tel
32
Le modèle relationnel d’une société multi-agences
de location de voiture
Client
Location
idCli
nom 1,n effectuer 1,1 idLoc
prenom ddebut
sexe dfin
tel montant
ville
1,1
Agence Voiture
1,n avoir 1,1 1,n concerner
idAg imm
nom Marque
ville annee
Un modèle parle …
Personne 0,1
idPers Se_Marier
nom
prenom
date_naiss
sexe 0,1
Une personne est mariée tout au plus à une seule personne
Le mariage entre des personnes de même sexe est permis
34
Un modèle parle …
Personne 0,n
idPers Se_Marier
nom
prenom
date_naiss
sexe 0,n
Une personne peut être mariée à plusieurs personnes
Le mariage entre des personnes de même sexe est permis
35
Un modèle parle …
Personne
idPers
nom
prenom
date_naiss
Homme Femme
0,1 Se_Marrier 0,1
Une personne est mariée tout au plus à une seule personne
Le mariage entre des personnes de même sexe est interdit
36
Un modèle parle …
Personne
idPers
nom
prenom
date_naiss
Homme Femme
0,n Se_Marrier 0,1
Polygamie
Le mariage entre des personnes de même sexe est interdit
37
Un modèle parle …
Personne
idPers
nom
prenom
date_naiss
Homme Femme
0,1 Se_Marrier 0,n
Polyandrie
Le mariage entre des personnes de même sexe est interdit
38
Organisation logique des données
LE MODELE RELATIONNEL
39
Le modèle relationnel
Un modèle relationnel définit un mode de représentation de
l’information selon trois composantes :
─ Des structures de données.
─ Des contraintes qui permettent de spécifier les règles que doit
respecter une base de données.
─ Des opérations pour manipuler les données, en interrogation et en
mise à jour.
Les deux premières composantes relèvent du Langage de Définition de
Données (DDL) dans un SGBD. Le DDL est utilisé pour décrire le schéma
d’une base de données.
La troisième composante (opérations) est la base du Langage de
Manipulation de Données (DML) dont le représentant le plus célèbre est
SQL.
40
Le modèle relationnel
Un modèle relationnel définit un mode de représentation de
l’information selon trois composantes :
─ Des structures de données.
Relation
représentée sous forme de table
Voiture
a un nom (Ex.: Voiture)
immatriculation carburant annee marque
compose d’un ensemble de colonnes
DK-5427-AB Essence 2012 Toyota désignées par un nom d’attribut (Ex.:
DK-6700-BB Essence 2013 Dacia imm)
DK-3089-AR Essence 2014 Toyota
chaque colonne contient des valeurs
SL-2804-C Diesel 2010 KIA d’un certain domaine (int, float, string
TH-3490-F Diesel 2009 Renault …)
DK-6612-BF Essence 2015 Peugeot
chaque ligne correspond à une entité
(ici, des voitures).
Le modèle relationnel
Un modèle relationnel définit un mode de représentation de
l’information selon trois composantes :
─ Une structure de données.
Voiture (imm:string, marque:string, annee:number, idAg:number)
Voiture (imm, marque, annee, idAg) // Format court
Voiture Schéma (description de la relation en intention)
immatriculation carburant annee marque Dégré : nombre d’attributs (de colonnes)
DK-5427-AB Essence 2012 Toyota
DK-6700-BB Essence 2013 Dacia
Instance
DK-3089-AR Essence 2014 Toyota Cardinalité: nombre de tuples
SL-2804-C Diesel 2010 KIA
TH-3490-F Diesel 2009 Renault Tuple, n-uplet, enregistrement …
DK-6612-BF Essence 2015 Peugeot
42
Le modèle relationnel
Un modèle relationnel définit un mode de représentation de
l’information selon trois composantes :
─ Une structure de données.
─ Des contraintes qui permettent de spécifier les règles de gestion des
données ⇒ contraintes d’intégrité
Voiture
immatriculation carburant annee marque
DK-5427-AB Essence 2012 Toyota
DK-6700-BB Essence 2013 Dacia
DK-3089-AR Essence 2014 Toyota CLE PRIMAIRE
Unicité et obligation de valeur dans la(es)
SL-2804-C Diesel 2010 KIA
colonne(s) constituant la clé
TH-3490-F Diesel 2009 Renault contrainte d’identification
DK-6612-BF Essence 2015 Peugeot Il ne peut y avoir 2 tuples identiques
43
Le modèle relationnel
Un modèle de données définit un mode de représentation de
l’information selon trois composantes :
─ Une structure de données.
─ Des contraintes qui permettent de spécifier les règles de gestion des
données. Constructeur
marque pays groupe
Voiture
Toyota Japon Toyota
immatriculation carburant annee marque
Dacia Roumanie Renault
DK-5427-AB Essence 2012 Toyota
KIA Corée du sud KIA Motors
DK-6700-BB Essence 2013 Dacia
Renault France Renault
DK-3089-AR Essence 2014 Toyota
Peugeot France PSA
SL-2804-C Diesel 2010 KIA
TH-3490-F Diesel 2009 Renault
CLE ETRANGERE
DK-6612-BF Essence 2015 Peugeot Présence de la clé primaire d’une relation
dans une autre.
Le modèle relationnel
Un modèle relationnel définit un mode de représentation de
l’information selon trois composantes :
─ Des structures de données.
─ Des contraintes qui permettent de spécifier les règles que doit
respecter une base de données.
Contrainte d’unicité
Unicité de la valeur dans les colonnes spécifiées
CLE PRIMAIRE
Contrainte d’existence
Obligation de valeur dans les colonnes spécifiées
Contrainte de domaine
La valeur doit être du type spécifié au niveau de l’attribut concerné
45
Le modèle relationnel
Un modèle relationnel définit un mode de représentation de
l’information selon trois composantes :
─ Des structures de données.
─ Des contraintes qui permettent de spécifier les règles que doit
respecter une base de données.
─ Des opérations pour manipuler les données, en interrogation et en
mise à jour.
• Créer, modifier et supprimer des relations
• Ajouter, modifier et supprimer des enregistrements
• Rechercher de l’information à travers des requêtes
d’interrogation
46
Une instance de base de données
Un schéma relationnel est constitué d’un ensemble de schémas de relations qui décrivent le
contenu d’une relation.
Client (idCli, nom, prenom, sexe, tel, ville)
Agence (idAg, nom, ville)
Voiture (imm, marque, annee, #idAg)
Location (idLoc, #imm, #idCli, ddebut, dfin, montant)
Règles de passage
Du modèle Entité/Association au
modèle relationnel
Passage du modèle E/A au modèle relationnel
1. Toute entité devient une relation.
Son identifiant devient sa clé primaire.
Client
idCli
nom
prenom
sexe
tel
ville
Client (idCli, nom, prenom, sexe, tel, ville)
49
Passage du modèle E/A au modèle relationnel
2. Toute association non binaire devient une relation.
Les clés primaires des entités/relations qu’elle associait migrent dans sa
relation comme des clés étrangère. Elles sont également sa clé primaire.
Matiere
numMatiere
Enseignant libelle
matricule 0,n Recommander
nom
prenom Livre
tel
ninea
titre
annee
auteur
Enseignant (matricule, nom, prenom, tel)
Matiere (numMatiere, libelle)
Livre (ninea, titre, annee, auteur)
50
Recommander (#matricule, #numMatiere, #ninea)
Passage du modèle E/A au modèle relationnel
2. Toute association non binaire devient une relation.
Les clés primaires des entités/relations qu’elle associait migrent dans sa
relation comme des clés étrangère. Elles sont également sa clé primaire.
Matiere
numMatiere
Enseignant libelle
matricule 0,n Enseigner
nom
prenom jour_semaine
Classe
tel
numCla
nom
Enseignant (matricule, nom, prenom, tel)
Matiere (numMatiere, libelle)
Classe (numCla, nom)
51
Enseigner (#matricule, #numMatiere, #numCla, jour_semaine)
Passage du modèle E/A au modèle relationnel
3. Association binaire avec des cardinalités maximales
égalent à n de par et d’autre.
Même principe qu’avec les associations non binaires.
Enseignant
Matiere
matricule 0,n Enseigner 0,n
nom numMatiere
prenom libelle
tel
Enseignant (matricule, nom, prenom, tel)
Matiere (numMatiere, libelle)
Enseigner (#matricule, #numMatiere) 52
Passage du modèle E/A au modèle relationnel
4. Association binaire avec une cardinalité maximale égale à
1.
L’association ne devient pas une relation. Elle disparaît dans le modèle relationnel.
Les relations des entités de cardinalité maximale égale à 1 reçoivent l’identifiant de
l‘autre entité sous forme de clé étrangère.
Personne Voiture
idpers 0,n Posseder 0,1 imm
nom modele
prenom marque
tel annee
Personne (idpers, nom, prenom, tel)
Voiture (imm, modele, marque, annee, #idpers)
53
Passage du modèle E/A au modèle relationnel
4. Association binaire avec une cardinalité maximale égale à
1.
Les éventuels attributs de l’association suivent aussi la migration.
Personne Voiture
idpers 0,n Acheter 0,1 imm
nom modele
prenom date_achat marque
tel annee
Personne (idpers, nom, prenom, tel)
Voiture (imm, modele, marque, annee, #idpers, date_achat)
54
Passage du modèle E/A au modèle relationnel
5. Héritage.
Employe
Implémentation en vrac. matricule
nom
Seule l’entité mère devient prenom
adresse
une relation avec tous les
attributs
Mecanicien
Electricien
specialite
diplome
email
experience
tel
Employe (matricule, nom, prenom, adresse, diplome, experience, specialite, email, tel)
55
Passage du modèle E/A au modèle relationnel
5. Héritage.
Employe
Implémentation avec matricule
Répartition horizontale nom
prenom
adresse
Seules les entités filles deviennent
des relations en héritant les
Attributs de l’entité mère
Mecanicien
Electricien
specialite
diplome
email
experience
tel
Electricien (matricule, nom, prenom, adresse, diplome, experience)
Mecanicien (matricule, nom, prenom, adresse, specialite, email, tel)
56
Passage du modèle E/A au modèle relationnel
5. Héritage.
Employe
Implémentation avec matricule
Répartition verticale nom
prenom
adresse
Toutes les entités deviennent des
Relation. Des clés étrangères les
associent
Mecanicien
Electricien
specialite
diplome
email
experience
tel
Employe (matricule, nom, prenom, adresse )
Electricien (#matricule, diplome, experience)
57
Mecanicien (#matricule, specialite, email, tel)
Passage du modèle E/A au modèle relationnel
6. Association entre une entité forte et une faible.
L’association ne devient pas une relation. Elle disparaît dans le modèle relationnel.
La relation de l’entité faible reçoit l’identifiant de l‘autre entité sous forme de clé
étrangère. Cette clé étrangère fait aussi partie de la clé primaire.
Salle Batiment
Num_salle Est_dans 1,n Nom
Nb_places Nb_etages
Batiment (Nom, Nb_etages)
Salle(Num_salle, Nb_places, #nom)
58
Le modèle relationnel d’une société multi-agences
de location de voiture
Client
Location
idCli
nom 1,n effectuer 1,1 idLoc
prenom ddebut
sexe dfin
tel montant
ville
1,1
Agence Voiture
1,n avoir 1,1 1,n concerner
idAg imm
nom Marque
ville annee
Client (idCli, nom, prenom, sexe, tel, ville)
Agence (idAg, nom, ville)
Voiture (imm, marque, annee, #idAg)
Location (idLoc, #imm, #idCli, ddebut, dfin, montant)
Une instance de la base de données de cette société
Voiture
imm marque annee idAg Agence
1 Toyota 2012 1 idAg nom ville
2 Dacia 2013 1 1 Thiès Ouest Thiès
3 Toyota 2014 1 2 Yoff Dakar
4 KIA 2010 2 3 Dakar Plateau Dakar
5 Renault 2009 2
6 Peugeot 2015 3
Location Client
idLoc imm idCli ddebut dfin montant idCli nom
1 1 1 22/11/2014 21/01/2015 1.500.000 1 Gueye
2 3 2 02/01/2015 17/01/2015 876.000 2 Dia
3 6 3 12/01/2015 18/02/2015 514.500 3 Sagna
Manipulation des données de la base de données
SQL: STRUCTURED QUERY LANGUAGE
61
62
63