SGBD
SGBD
SGBD
5
6
Qu'est-ce qu'une Base de Données Relationnelle ?
Une Base de Données Relationnelle est un système de gestion de base de données
(SGBD) qui repose sur le modèle relationnel, introduit par Edgar F. Codd dans les
années 1970.
Le modèle relationnel définit les données sous forme de tables avec des lignes et
des colonnes. Chaque table représente une relation, où les données sont
organisées de manière logique et structurée.
Exemple Attribut (Colone)
Table (relation)
8
Dictionnaire des données DD
C'est une étape intermédiaire qui peut avoir son importance, surtout si vous êtes
plusieurs à travailler sur une même base de données, d'un volume important .C’est
un document qui regroupe toutes les données que vous aurez à conserver dans votre
base (et qui figureront donc dans le MCD).Pour chaque donnée, il indique :
Code mnémonique : il s'agit d'un libellé désignant une donnée (par exemple
«titre_l» pour le titre d'un livre) ;
Désignation : il s'agit d'une mention décrivant ce à quoi la donnée correspond (par
exemple «titre du livre») ;
Type de donnée :
Entier: lorsque la donnée est uniquement composée de caractères numérique sans
virgule,
Décimal: lorsque la donnée est composée des caractère numérique avec virgule
(réel),
Chaine de caractère : lorsque la donnée peut être composée à la fois de
caractères alphabétiques et numériques,
Date : lorsque la donnée est une date (au format AAAA-MM-JJ),
B dépend fonctionnellement de A
A Num_commande
C quantite_commandée
B Code_article
A B
A C
B C
Num_commande Num_client
Num_commande adresse_client
Num_client Adresse_client
2 DF direct DF transitive
Propriété des DF: L’union
A B
A B,C
A C
Code_article Nom_article
Code_article Nom_article, Prix_unitaire
Code_article Prix_unitaire
num_commande
1,n code_article
1,1 0,n
0,n
Clients Articles
(0,n) (1,1) Commandes (1,n) (0,n)
num_client Contenir
Passer code_article
nom_client num_commande qte_commandee nom_article
email_client date_commande
prix_unitaire
adresse_client
14
MCD – Modèle Conceptuel de Données
Définition
• Modèle Entité-Association
• Ensemble de concepts pour modéliser les données d'un Système d’information
• Ensemble de symboles graphiques
Entité
• Permet de modéliser un ensemble d'objets de même nature
• Un élément appartenant à cette entité est appelé occurrence
Attribut ou Propriété
• Donnée élémentaire d'une entité.
• Dans une occurrence la propriété accepte une seule valeur
Identifiant ou clé
• Attribut de l'entité qui permet de trouver une occurrence d'entité unique
• Identifiant peut être un entier auto-incrémenté, composé de plusieurs attributs
(clef composée), code avec une partie s’incrémente.
Occurrence
Entité
Identifiant Etudiants Etudiant_1
Etudiant_2
ou clé 1910001 Etudiant_3
CNE 1910002
JAO 1910003
Nom DUPON
Attribut Jean JAO
Prénom Jean
02/04/2002 Felix
Date_naissance 10/01/2001 15
10/01/2001
MCD – Modèle Conceptuel de Données
Les cardinalité
• Les cardinalités précisent la participation d'une entité à une relation.
Cardinalité Notation
Zéro ou Un (0,1)
Un et Un seul (1,1)
Zéro ou Plusieurs (0,n)
Un ou plusieurs (1,n)
Exemple de question
Clients
(0,n) (1,1) Commandes
num_client Passer
nom_client num_commande
email_client date_commande
edresse_client
16
MCD – Modèle Conceptuel de Données
Relation binaire
• C’est la relation qui lie deux entité.
Clients Articles
(0,n) (1,1) Commandes (1,n) (0,n)
num_client Contenir
Passer code_article
nom_client num_commande qte_commandee nom_article
email_client date_commande
prix_unitaire
adresse_client
Relation ternaire
• C’est la relation qui lie trois entité.
dépôts Un livre écrit par 1 ou plusieurs éditeur peut
num_dep être stocké dans 1 ou plusieurs dépôts
adresse_dep
(0,n) Un éditeur peut éditer un ou plusieurs livres
qui peuvent êtres stockés dans un ou plusieurs
dépôts
livres (1,n) (1,n) éditeurs
stocker Un dépôt peut contenir zéro ou plusieurs
isbn num_edit livres édités par un ou plusieurs éditeurs
qte
titre nom_edit
17
MCD – Modèle Conceptuel de Données
Association réflexive
• Une relation réflexive = les deux liaisons sont liées à une même entité.
• Chaque liaison devrait avoir un rôle.
Salariés Salariés
(0,1) (0,n)
matricule matricule
nom encadrer nom
prenom prenom
date_naissance date_naissance
adresse adresse
Salariés (0,n)
matricule
nom encadrer
prenom
date_naissance
adresse
(0,1) 18
Normalisation d’un MCD
1- Normalisation des entités
• Les entités remplaçable par une association doivent être remplacées
Enseignants
cin Enseignants
nom_ens
prenom_ens cin
nom_ens
0,n prenom_ens
enseigner 0,n
1,1
seances matieres 0,n
matieres
1,1 concerner 0,n enseigner
Num_seance Code_mat Code_mat
tarif Nom_mat tarif Nom_mat
1,1
Avoir lieu 0,n
etablissements
Unicité de la séance pour un
0,n Code_etab
enseignant dans un établissement
etablissements Nom_etab
pour un matière
Code_etab
Nom_etab
19
Normalisation d’un MCD
Les noms des entités, des association et d'attributs Enseignants
doivent être uniques, et voici quelques conventions cin
de nommage: nom_ens
prenom_ens
• Pour les entités: nom commun pluriel;
0,n
• Pour les association: verbe a l'infinitif (ou à la
forme passive accompagné d'un adverbe : être 0,n
matieres
enseigner
enseigné par); Code_mat
tarif Nom_mat
• Pour les attributs: nom commun singulier (si
besoin, accompagné du nom de l'entité ou 0,n
Enseignants
Enseignants
cin
nom Nom
prenom prenom
date_naissance date_naissance
adresse adresse
21
Normalisation d’un MCD
3- Normalisation des attributs
Les attributs en plusieurs catégories doivent être remplacés par une association
supplémentaire. Enseignants
adresses
cin (1,n) occuper (1,n)
Enseignants
nom num_adresse
type_adresse
cin prenom adresse
nom date_naissance
prenom
date_naissance
adresse_principale
adresse_secondaire Enseignants
(1,n) (1,1) adresses (1,1) (1,n) types
cin occuper concerner
nom num_adresse num_type
prenom adresse type
date_naissance
L'entité avec une cardinalité maximale à 1 ( 1.1 ou 0.1) aspire toujours les attributs
de l'association. restaurants livraisons
(1,n) (1,1)
num_restaurant livrer num_livraison
nom nom_livreur Date_livraison
tel
adresse
restaurants
livraisons
(1,n) (1,1)
num_restaurant livrer
num_livraison
nom
date_livraison 23
tel
nom_livreur
adresse
Normalisation d’un MCD
5- Normalisation des associations
Éliminer les associations fantômes : association dans laquelle toutes les entités
appartenant à sa collection sont impliquées une et une seule fois (toutes les
cardinalités sont 1,1). (1,1) (1,1) Cartes
Clients
appartenir
num_client num_carte
nom date_creation
prenom date_validation
Fusion
Clients
num_client
nom
prenom
Éliminer les associations redondantes num_carte
date_creation
6- Normalisation des cardinalités date_validation
diplomes enfants
cin_empl nom_emp prenom_empl date_embauche
type annee sexe prénom date_naiss
employes
(1,1) (0,n) (0,n) (1,1) enfants
diplomes cin_empl
posséder nom_empl avoir num_enfant
num_diplome
prenom_empl sexe
type
date_embauche prenom_enfant
annee_obtention
diplomes date_naissance
enfants
25
Normalisation d’un MCD
7- Les 3 formes normales
2ème forme normale
Elle est en 1FN
2FN Tout attribut non clé doit dépendre fonctionnellement de la totalité de la
clé
Lignes de commande
num_commande
code article
quantitee
prixUHT
26
Normalisation d’un MCD
7- Les 3 formes normales
3ème forme normale
Elle est en 2FN
3FN Tout attribut doit dépendre directement de la clé (sans transitivité)
càd: aucun attribut ne doit dépendre d'un autre attribut non clé.
voitures
num_voiture
matricule
modele
couleur voitures(num voiture, matricule, modèle, couleur, puissance,
puissance carburant, constructeur, cin_propriétaire, nom_propriétaire)
carburant
constructeur
cin_proprietaire
nom_proprietaire
voitures
(1,n) (1,1) (1,1) (1,n)
proprietaires num_voiture modéles
posséder matricule être
cin_proprietaire modele
modele
nom_proprietaire puissance
couleur
constructeur
carburant
cin_proprietaire 27
MLD – Modelé logique de donnée
1- Définition
Le modèle logique des données est une transformation du modèle conceptuel des
données . C'est une présentation de la structure des données dans le niveau
logique.
La transformation s'applique en respectant un ensemble de règles de passage entre
un MCD vers un MLD.
On peut représenter le MLD sous forme graphique ou textuelle
2- Les trois règles principales
28
Les règles de passage MCD à MLD
Un schéma relationnel = tables appelés aussi des relations liées par des
connecteurs entre les clés primaires et les clés étrangères correspondantes
Pour repérer les clés primaires et clés étrangères dans un schéma relationnel, on
utilise la notation suivante:
On souligne les clés primaires;
On fait précéder les clés étrangères du symbole #.
Clients
(0,n) (1,1) Commandes
num_client passer
nom_client num_commande
MCD email_client date_commande
adresse_client
Clients
Commandes
MLD num_client
num_commande
nom_client
date_commande
email_client
#num_client
adresse_client
Toute entité devient une table (relation) (les attributs deviennent des
colonnes ou champs, et l'identifiant devient clé primaire)
MLD Clients
Commandes
Articles
num_client code_article
nom_client num_commande
nom_article
email_client date_commande
prix_unitaire
adresse_client
30
Les règles de passage MCD à MLD
Règle 2 ; Transformation des associations (x,1)-(x,n)
Une association binaire ayant des cardinalités (1,1) -(1.n) ou (1,1) - (0,n)
se traduit par l'immigration de l'identifiant de l'entité forte (ayant
cardinalité (1,n) ou (0,n)) vers l'entité faible (cardinalité (1,1)).
MLD Clients
Commandes
Articles
num_client code_article
nom_client num_commande
nom_article
email_client date_commande
prix_unitaire
adresse_client #num_client
MLD Clients
Commandes LignesCommandes Articles
num_client
num_commande #num_commande code_article
nom_client
date_commande #code_article nom_article
email_client
#num_client qte_commandee prix_unitaire
adresse_client
32
Les règles de passage MCD à MLD
Règle 3 valable pour les associations ternaires (et quaternaires) de type
OBLIGATOIREMENT plusieurs à plusieurs
dépôts
num_dep
adresse_dep
(0,n)
dépôts
MLD num_dep
adresse_dep Stock éditeurs
#num_dep num_edit
#isbn nom_edit
#num_edit
livres qte
isbn
titre
33
Les règles de passage MCD à MLD
Cas d’un association réflexive
Pièces (0,n)
num_piece Composer
nom
nbr
couleur
poids
MCD (0,n)
34
Modèle Physique de Données (MPD)
1- Définition
Modèle Physique de Données, représente la manière dont les données sont stockées
réellement dans un système de gestion de base de données (SGBD).
Contrairement au MCD (Modèle Conceptuel de Données) qui est une représentation
abstraite des données et de leurs relations, le MPD se concentre sur les détails de
mise en œuvre au niveau des structures de stockage, des types de données, des
index, des clés primaires et étrangères, ainsi que d'autres aspects spécifiques au
SGBD utilisé.
Le langage utilisé pour ce type d'opération est le SQL.
On peut également utiliser un outil qui permet de générer automatiquement la
base de données .
SQL (Structured Query Language) est un langage de requête standard utilisé pour
gérer et manipuler des bases de données relationnelles. Il permet d'effectuer
diverses opérations telles que la récupération, l'insertion, la mise à jour et la
suppression de données dans une base de données.
36
Langage de Définition de Données (LDD)
Le Langage de Définition de Données (LDD), également connu sous le nom de Data
Definition Language (DDL) en anglais, est une catégorie de langage de requête
utilisée pour définir et gérer la structure et la disposition des données dans une
base de données. Les commandes DDL permettent de créer, modifier et supprimer
des objets de base de données tels que des tables, des vues, des index, etc. Voici
quelques-unes des principales commandes DDL :
CREATE TABLE : Utilisée pour créer une nouvelle table dans la base de
données avec une structure spécifiée.
CREATE TABLE nom_table (
colonne1 datatype [contrainte], - - Ceci un commentaire
colonne2 datatype [contrainte],
...
);
Exemple
CREATE TABLE Clients (
Clients num_client INT PRIMARY KEY,
num_client nom_client VARCHAR(100),
nom_client email_client VARCHAR(100),
email_client
adresse_client VARCHAR(255)
adresse_client
); 37
Langage de Définition de Données (LDD)
ALTER TABLE : Cette commande permet d'ajouter, de modifier ou de supprimer des
colonnes dans une table existante, ainsi que d'appliquer des contraintes ou des
index.
ALTER TABLE nom_table
ADD colonne datatype [contrainte], - - Ceci pour ajouter une colonne
DROP COLUMN nom_colonne, - - Ceci pour supprimer un colonne
MODIFY COLUMN nom_colonne new_datatype; - - Ceci pour modifier le type
Exemple
Clients ALTER TABLE Clients
num_client ADD tel_client VARCHAR(20),
nom_client DROP COLUMN email_client,
tel_client
adresse_client MODIFY COLUMN adresse_client VARCHAR(500);
DROP TABLE : Utilisée pour supprimer une table existante de la base de données.
Exemple
Exemple
DROP VIEW : Utilisée pour supprimer une vue existante de la base de données.
DROP VIEW nom_vue;
40
DROP VIEW Vue_Details_Commandes; - - Ceci pour supprimer le vue
Langage d'interrogation de données(LID)
LID, également connu sous le nom de Data Query Language (DQL) en anglais, est une
catégorie de langage utilisée pour interroger et récupérer des données à partir d'une
base de données.
SELECT : Elle est utilisée pour sélectionner des données spécifiques à partir d'une
ou plusieurs tables dans une base de données.
SELECT colonne1, colonne2
FROM nom_table
WHERE condition;
Exemples
SELECT * FROM Clients;- - Sélectionner toutes les colonnes de la table Clients
ORDER BY : Utilisée pour trier les résultats selon une ou plusieurs colonnes, soit par
ordre croissant (ASC) soit par ordre décroissant (DESC).
SELECT * FROM nom_table ORDER BY colonne ASC;
Exemples
SELECT * FROM Articles ORDER BY prixUHT ASC;/* Cela renverra une liste
de tous les articles, triés par ordre croissant de prix.*/
42
Langage d'interrogation de données(LID)
GROUP BY : Utilisée pour regrouper les résultats en fonction des valeurs d'une ou
plusieurs colonnes, généralement suivie de fonctions d'agrégation:
COUNT() : compter le nombre de lignes dans un groupe
SUM() : calculer la somme des valeurs dans un groupe.
AVG() : calculer la moyenne des valeurs dans un groupe.
MAX() ou MIN() : trouver la valeur maximale ou minimale dans un groupe. etc
SELECT colonne, COUNT(*) FROM nom_table
GROUP BY colonne;
SELECT num_commande, SUM(qte_commandee) AS quantite_totale
FROM LignesCommandes GROUP BY num_commande; /* retournera le numéro
de chaque commande avec le total des quantités commandées pour cette commande
spécifique..*/
HAVING: Utilisée pour filtrer les résultats des requêtes GROUP BY basées sur des
conditions spécifiques.
SELECT colonne, COUNT(*) FROM nom_table GROUP BY colonne
HAVING COUNT(*) > 1;
SELECT num_client, COUNT(*) AS nombre_commandes FROM Commandes
GROUP BY num_client HAVING COUNT(*) > 3; /* Cette requête renverra
les numéros de client et le nombre total de commandes pour chaque client qui a
passé plus de 3 commandes..*/ 43
Langage de Manipulation de Données (LMD)
LMD également connu sous le nom de Data Manipulation Language (DML) en anglais,
est une catégorie de langage SQL utilisée pour manipuler les données stockées dans
une base de données relationnelle.
INSERT INTO : Utilisée pour insérer de nouvelles lignes de données dans une table.
INSERT INTO nom_table (colonne1, colonne2, ...)
VALUES (valeur1, valeur2, ...);
Exemples
Si la colonne « num_client" est une clé primaire auto-incrémentée et qu’ on n’a pas
besoin de spécifier sa valeur, SGBD attribuera automatiquement une nouvelle valeur
à la colonne « num_client" lors de l'insertion.
INSERT INTO Clients (nom_client, email_client)
VALUES ('John Doe', '[email protected]’);
44
Langage de manipulation de données (LMD)
UPDATE : Utilisée pour mettre à jour des données existantes dans une table.
UPDATE nom_table
SET colonne1 = valeur1, colonne2 = valeur2, ...
WHERE condition;
Exemple
UPDATE Clients
SET email_client = '[email protected]'
WHERE num_client = 1;/* Mise à jour l'e-mail du client ayant numéro = 1 avec
la nouvelle valeur '[email protected]'.*/
DELETE FROM : Utilisée pour supprimer des lignes de données d'une table.
DELETE FROM nom_table
WHERE condition;
Exemple
DELETE FROM Clients
WHERE num_client = 1;/* Supprimer toutes les lignes de la table "Clients" où la
valeur de la colonne « num_client" est égale à 1.*/
SELECT *
INTO ClientsVIP
FROM Clients
WHERE num_client IN (SELECT num_client FROM Commandes GROUP BY
num_client HAVING SUM(montant_commande) > 1000);
Cette commande sélectionne tous les clients de la table "Clients" dont le numéro
correspond à ceux ayant dépensé plus de 1000 euros en commandes (selon la sous-
requête), puis crée une nouvelle table "ClientsVIP" contenant ces clients ainsi que
toutes leurs colonnes.
46
Langage de Contrôle de Données (LCD)
LCD ou Data Control Language (DCL) en anglais , permet de gérer les autorisations et
les privilèges des utilisateurs, y compris la création, la modification et la suppression
des utilisateurs et des rôles, ainsi que l'octroi et la révocation des droits d'accès aux
tables et aux autres objets de la base de données.
CREATE USER : Utilisée pour créer un nouvel utilisateur dans la base de données.
CREATE ROLE: Utilisée pour créer un nouveau rôle dans la base de données.
47
Langage de Contrôle de Données (LCD)
GRANT : Utilisée pour accorder des privilèges d'accès sur des objets de la base de
données à un utilisateur ou à un rôle spécifique.
GRANT liste_permission
ON liste_objet
TO liste_utilisateurs_ou_roles
[WITH GRANT OPTION]; -- droit d’assigner les permissions
Exemples
GRANT SELECT, INSERT, UPDATE
ON Clients
TO jaomamy;/* Accorder les privilèges SELECT, INSERT et UPDATE sur une
table Clients à l’utilisateur jaomamy.*/
48
Langage de Contrôle de Données (LCD)
REVOKE : Utilisée pour révoquer des privilèges d'accès sur des objets de la base
de données à un utilisateur ou à un rôle spécifique.
REVOKE liste_permission
ON liste_objet
TO liste_utilisateurs_ou_roles;
Exemples
49