Bases de données : modèlisation et SGBD Séance 3
Bases de données Définitions Définitions Glossaire des SGBD relationnels Glossaire des SGBD relationnels Démarche Démarche Structures physiques Structures physiques
BDD : définitions Fichier Fichier Attribut Attribut Identifiant Identifiant Bases de données Bases de données SGBD SGBD
BDD : glossaire SGBDR Table ou relation Table ou relation Clé primaire Clé primaire Champ Champ Domaine Domaine Tuple Tuple Clé externe Clé externe
BDD : démarche Conception : modélisation, normalisation Conception : modélisation, normalisation Développement : création,optimisation Développement : création,optimisation Utilisation Utilisation Maintenance Maintenance
BDD : Conception Merise : MCD, MLD, MPD Merise : MCD, MLD, MPD Normalisation : formes normales Normalisation : formes normales
Merise données : MCD Entité Association 0-n 1-n cardinalités
ELEVE Numéro élève Nom élève Prénom élève Date de naissance MATIERE Numéro matière Libellé PROFESSEUR Numéro professeur Nom professeur Prénom professeur APPREND ENSEIGNE N 1-N 0-N
ELEVE Numéro élève Nom élève Prénom élève Date de naissance MATIERE Numéro matière Libellé PROFESSEUR Numéro professeur Nom professeur Prénom professeur APPREND ENSEIGNE N 1-N 0-N NOTE
ELEVE Numéro élève Nom élève Prénom élève Date de naissance MATIERE Numéro matière Libellé PROFESSEUR Numéro professeur Nom professeur Prénom professeur APPREND ENSEIGNE N 1-N 0-N NOTE INTERVIENT dans CLASSE Numéro classe Niveau EST AFFECTE à N 0-N
Merise : MLD relationnel Chaque entité devient une table Chaque entité devient une table Chaque association porteuse devient une table Chaque association porteuse devient une table Chaque association non porteuse devient soit une table de pointeurs, soit une clé externe dans une table Chaque association non porteuse devient soit une table de pointeurs, soit une clé externe dans une table
1.Elève (Numéro élève, Nom élève, Prénom élève, Date naissance) 2.Apprend (Numéro élève, Numéro matière, Note) 3.Matière (Numéro matière, Libellé) 4.Professeur (Numéro professeur, Nom professeur, Prénom professeur, Numéro matière) 5.Classe (Numéro classe, Niveau) 6.Intervient dans (Numéro classe, Numéro professeur) 7.Est affecté à (Numéro élève, Numéro classe)
Normalisation de Codd : point de départ Liste des attributs Dépendances fonctionnelles Dépendances multivaluées
Normalisation Normalisation : processus Normaliser c’est regrouper la liste des attributs en relations - ayant du sens - cohérentes - sans redondance
Normalisation Normalisation : Point d’arrivée On obtient une série de tables : fichiers et index
Normalisation : 1FN Tout attribut de R contient: une valeur monovaluée et non composée
Normalisation : 1FN Exemples : Exemples : Prénom 1, Prénom 2 Adresse: Numéro voie, type voie, nom voie, nom ville, code postal
Normalisation : 1FN R (Numéro élève, Prénoms, Adresse) R (Numéro élève, Prénoms, Adresse) n’est pas en 1FN n’est pas en 1FN
R normalisée en 1FN R (Numéro élève, Prénom1, Prénom2, Numéro voie, Type voie, Nom voie, Nom ville, Code postal) R (Numéro élève, Prénom1, Prénom2, Numéro voie, Type voie, Nom voie, Nom ville, Code postal)
Normalisation : 2FN 1.R est en 1FN 2.Tout attribut non clé de R dépend de la totalité de la clé
Normalisation : 2FN R (Numéro élève, Numéro matière, note, Nom élève) R (Numéro élève, Numéro matière, note, Nom élève) Le Nom ne dépend F. que du Numéro de l’élève
Dupont Dupont Dupont Dupont Martin
Normalisation : 2FN R n’est pas en 2FN R n’est pas en 2FN On normalise : On normalise : R1 (Numéro élève, Nom élève) R2 (Numéro élève,Numéro matière, Note)
Normalisation : 3FN 1.R est en 2FN 2.Tout attribut de R ne dépend pas de la clé par transitivité
Normalisation : 3FN R (Numéro professeur, Nom professeur, Numéro matière, Libellé matière) R (Numéro professeur, Nom professeur, Numéro matière, Libellé matière) Libellé matière dépend fonctionnellement de Numéro, professeur par transitivité,à travers le Numéro matière Libellé matière dépend fonctionnellement de Numéro, professeur par transitivité,à travers le Numéro matière
100Duval001Anglais 101Farenc001Anglais 102Gervais001Anglais 103Justin001Anglais 104Loliée002Espagnol
On normalise en 3 FN R1 (Numéro professeur, Nom professeur, numéro matière) R2 (Numéro matière, libellé matière)
Normalisation 4FN et 5 FN On traite les DM
4FN : la relation ne contient qu’une seule DM R (Etudiant, Cours, Sport) avec avec Etudiant DM Cours Etudiant DM Sport Etudiant DM Cours Etudiant DM Sport R n’est pas en 4FN R n’est pas en 4FN
PierreMathsKaraté PierreAnglaisKaraté PierrePhysiqueKaraté JacquesPhiloJudo JacquesPhiloNatation JacquesPhiloMarathon
Normalisation de R en 4FN R1 (Etudiant, Cours) R2 (Etudiant, Sport)
PierreMaths PierreAnglais PierrePhysique JacquesPhilo R1
PierreKaraté JacquesJudo JacquesNatation JacquesMarathon R2
5FN : DM de jointure R (Revendeur, Marque, Type de produit) avec avec Revendeur DM Marque Revendeur DM Marque Revendeur DM Type de produit Marque DM Type de produit Marque DM Type de produit
PierreRenaultVoiture PierreRenaultCamion PierreVolvoVoiture PaulRenaultCamion JacquesRenaultVoiture JacquesVolvoVoiture
Normalisation de R en 5FN R1 (Revendeur, Marque) R2 (Revendeur, Type de produit) R3 (Marque, Type de produit)
PierreRenault PierreVolvo JacquesRenault PaulRenault PaulVolvo R1
PierreVoiture PierreCamion PaulCamion JacquesVoiture R2
RenaultVoiture RenaultCamion VolvoVoiture R3
DF 3FN 4FN 5FN
NORMALISATION : préparation Num é ro é l è ve = ANum é ro é l è ve = A Nom é l è ve = BNom é l è ve = B Pr é nom é l è ve = CPr é nom é l è ve = C Date naissance = DDate naissance = D Num é ro mati è re = ENum é ro mati è re = E Libell é = FLibell é = F Note = GNote = G Num é ro professeur = HNum é ro professeur = H Nom professeur = INom professeur = I Pr é nom professeur = JPr é nom professeur = J Num é ro classe = KNum é ro classe = K Niveau = LNiveau = L A DF B, C, D, KA DF B, C, D, K E DF FE DF F AE DF GAE DF G H DF I, J, EH DF I, J, E K DF LK DF L A DM EA DM E H DM KH DM K E DM HE DM H
NORMALISATION : exécution A DF B, C, D, KA DF B, C, D, K E DF FE DF F AE DF GAE DF G H DF I, J, EH DF I, J, E K DF LK DF L A DM EA DM E H DM KH DM K E DM HE DM H 1) DF Elève (A, B, C, D, K)Elève (A, B, C, D, K) Matière (E, F)Matière (E, F) Apprend (A, E, G)Apprend (A, E, G) Professeur (H, I, J, E)Professeur (H, I, J, E) Classe (K, L)Classe (K, L) 2)DM Intervient dans (H,K)Intervient dans (H,K)
Création & manipulation des BDD : requêtes SQL « Structured Qwery Language » 1986« Structured Qwery Language » 1986 Opérateurs de l’algèbre relationnelleOpérateurs de l’algèbre relationnelle
« LDD » : langage de définition des données CREATE TABLE élève (numéroélève NUM(6) [ UNIQUE] [NOT NULL] [PRIMARY KEY], nomélève CHAR(30)[NOT NULL], prénomélève CHAR(20) [NOT NULL],annaissance NUM(4)…)
« LDD » CREATE TABLE apprend (numéroélève [ UNIQUE] [NOT NULL] [PRIMARY KEY], numéromatière [ UNIQUE] [NOT NULL] [PRIMARY KEY], note NUM(2,2) [VALEUR: 0,00 à 20,00],FOREIGN KEY)
INDEX : structures d’accès CREATE [UNIQUE] INDEX i1 ON élève (numéroéléve) CREATE INDEX i2 ON élève (annaissance)
ALTER TABLE matière ADD COLUMN coefficient NUM(1) DROP TABLE apprend RENAME apprend to notation
ELEVE Numéro élève Nom élève Prénom élève Date de naissance MATIERE Numéro matière Libellé coefficient PROFESSEUR Numéro professeur Nom professeur Prénom professeur APPREND ENSEIGNE N 1-N 0-N NOTE INTERVIENT dans CLASSE Numéro classe Niveau EST AFFECTE à N 0-N
ELEVE Numéro élève Nom élève Prénom élève Date de naissance MATIERE Numéro matière Libellé coefficient PROFESSEUR Numéro professeur Nom professeur Prénom professeur ENSEIGNE N 1-N INTERVIENT dans CLASSE Numéro classe Niveau EST AFFECTE à N 0-N
ELEVE Numéro élève Nom élève Prénom élève Date de naissance MATIERE Numéro matière Libellé coefficient PROFESSEUR Numéro professeur Nom professeur Prénom professeur NOTATION ENSEIGNE N 1-N 0-N NOTE INTERVIENT dans CLASSE Numéro classe Niveau EST AFFECTE à N 0-N
« Les autorisations d’accès» : GRANT & REVOKE GRANT privilège ON objet TO public Qui (public) a le droit de faire quoi (privilège) Qui (public) a le droit de faire quoi (privilège) à quoi (objet) à quoi (objet)
GRANT INSERT ON apprend TO professeur GRANT SELECT ON apprend TO PUBLIC REVOKE ALL ON apprend FROM PUBLIC
« LMD » : langage de manipulation des données SELECT INSERT UPDATE DELETE
SELECT SELECT nomélève, prénomélève FROM élève WHERE annaissance = 1994 ORDER BY nomélève
SELECT nomélève, prénomélève FROM élève, apprend WHERE annaissance = 1994 AND élève.numéro-élève = apprend.numéro-élève AND note NOT NULL ORDER BY nomélève ORDER BY nomélève
INSERT INSERT INTO élève (numéroélève, nomélève, prénomélève, annaissance) VALUES (105, durant, alexis, 2000)
UPDATE UPDATE apprend SET note = 14 WHERE numéroélève = 106 AND numéromatière = 5
DELETE DELETE FROM élève, apprend WHERE numéroélève = 78
Les agrégats SUM SELECT SUM (montant) FROM commande GROUP BY numéro-client
AVG SELECT nom-élève FROM élève SELECT AVG (note) FROM apprend GROUP BY numéro-élève
MIN ou MAX SELECT MAX(note) FROM apprend WHERE numéro-élève = 105
COUNT SELECT COUNT FROM apprend SELECT COUNT FROM apprend WHERE numéro-élève = 102
Opérateurs ensemblistes EXISTS UNION INTERSECT MINUS
EXISTS SELECT nom-élève FROM élève WHERE EXISTS FROM apprend note = 20 AND élève.numéro-élève = apprend.numéro-élève
NOT EXISTS SELECT nom-élève FROM élève WHERE NOT EXISTS FROM matière AND élève.numéro-élève = apprend.numéro-élève AND matière.code-matière = apprend.code-matière
UNION apprend(numéro-élève, code-matière) pratique(numéro-élève, code-sport) SELECT numéro-élève FROM apprend UNION SELECT numéro-élève FROM pratique
INTERSECT SELECT numéro-élève FROM apprend INTERSECT SELECT numéro-élève FROM pratique
MINUS SELECT numéro-élève FROM apprend MINUS SELECT numéro-élève FROM pratique
VUE : table virtuelle Non stockée (temporaire) créée par une requête sur une ou plusieurs tables (permanentes)
CREATE VIEW élèves-forts (numéroélève, nomélève, moyenne) AS SELECT *, TRUNC (note* coefficient) / SUM(coefficient) Group BY élève FROM élève, apprend, matière WHERE moyenne > 17