Conception d’une Base de Données Passage au Schéma Relationnel
Conception d’une BD : les niveaux conceptuel logique physique externe schéma conceptuel schéma logique Utilisateurs schéma physique R1 R2
Conception d’une BD : les étapes Modélisation (UML) Monde Extérieur Schéma Conceptuel : DC Règles de passage Produits (IdPro, désignation, poids) Fournir(IdPro, IdFour, PrixAchat) Fournisseurs(IdFour, RaisonSociale, adresse) Normalisation ? Schéma Logique ou Relationnel Mise en œuvre de la BD Schéma Physique
Schéma Logique : Schéma Relationnel Présentation Base théorique du langage SQL Modèle basé sur les valeurs Di = {valeurs atomiques} Attribut ai prenant sa valeur dans Di Relation R[a1,..., an] définie sur les domaines D1, ..., Dn R sous-ensemble du produit cartésien D1*D2*...*Dn ETUDIANT (INE, NOM,ADRESSE) INE = {100, 200, 300} NOM = {‘Sylvie’,’Patrick’} ADRESSE = {‘Toulouse’,’Montauban’}
Schéma relationnel Concepts et Terminologie Relation : nom de la structure tabulaire regroupant les informations de même nature Tuple ou N-Uplet : ligne d’une relation Attribut : nom du domaine Clé primaire : attribut(s) permettant d’identifier d’une manière unique une ligne Clé étrangère : attribut(s) permettant d’identifier d’une manière unique une ligne d’une autre relation (correspondant à une clé primaire) Clé candidate : attribut(s) pouvant se substituer à la clé primaire
Schéma relationnel Exemple SERVICE EMPLOYE IdSer NomSer NombreEmp IdEmp NomEmp IdSer IdEmp_Resp 10 Informatique 2 20 Achats 3 100 Michel 20 300 200 Sylvie 10 400 Bernard ------ Claude 500 Thomas Clés Primaires Clé Candidate Clés Étrangères
Schéma relationnel Quelques postulats Clé primaire Obligatoire pour toutes les relations Peut être composée de plusieurs attributs Ne peut pas avoir de valeur indéfinie (NULL) Clé étrangère Aucune ou plusieurs par relation Contrainte d’Intégrité Référentielle Clé candidate Accès rapide dans le schéma physique
Passage du S. Conceptuel au S. Relationnel Les règles de passage Règle n°1 : Classes normales Chaque classe devient une relation L’identifiant de la classe devient la clé primaire de la relation Règle n°2 : Classes d’Associations 1-N (Mère-Fille) Cette classe disparaît La clé de la relation mère glisse dans la relation fille Clé Étrangère Règle n°3 : Classes d’Associations N-M (et n-aires) Cette classe devient une relation La clé primaire est composée des clés associées (clé primaire composée) Règle n°4 : Classes d’Associations 1-1 Cas particulier : expliqué plus loin Règle n°5 : Généralisation et Spécialisation Expliqué plus loin
Association 1-N : Exemple Diplome Etudiant Inscrire IdDip NomDip RespDip IneEtudiant NomEtudiant AdrEtudiant 1 * DIPLÔME (IdDip, NomDip, RespDip) ETUDIANT (IneEtudiant, NomEtudiant, AdrEtudiant, IdDip#)
Association N-N sans attribut : Exemple Etudiant Stage Choisir IdStage ThémeStage Entreprise RespStage IneEtudiant NomEtudiant AdrEtudiant * 1..* ETUDIANT (IneEtudiant, NomEtudiant, AdrEtudiant) CHOISIR (IneEtudiant#, IdStage# ) STAGE (IdStage, Thèmestage, Entreprise, RespStage)
Clé primaire composée : postulats Autant de composants que de classes associées (N-aires) Composée entièrement de clés étrangères L’ordre des composants n’a pas d’importance (pour le schéma relationnel) ETUDIANT (IneEtudiant, NomEtudiant, AdrEtudiant) CHOISIR (IneEtudiant#, IdStage# ) STAGE (IdStage, Thèmestage, Entreprise, RespStage)
Association N-N avec attributs : Exemple Fournisseur Produit * 1..* IdProduit NomProduit QtéStock IdFour NomFour AdrFour Fournir Prix DélaiLiv QtéMin FOURNISSEUR(IdFour, NomFour, AdrFour) FOURNIR (IdFour #, IdProduit#, Prix, DélaiLiv, QtéMin ) PRODUIT (IdProduit, NomProduit, QtéStock)
Association de type N-aires : Exemple Fournisseur Produit IdFour NomFour AdrFour IdProduit NomProduit QtéStock Fournir Prix DélaiLiv QtéMin Conditionnement IdCond LibCond 1..* *
Association de type N-aires : Exemple FOURNISSEUR(IdFour, NomFour, AdrFour) PRODUIT (IdProduit, NomProduit, QtéStock) CONDITIONNEMENT (IdCond, LibCond) FOURNIR (IdFour #, IdProduit#, IdCond#, Prix, DélaiLiv, QtéMin )
Association 1-N réflexive : Exemple 0..1 Est responsable de Enseignant IdEns NomEns Fonction * A pour responsable (nul autorisé) ENSEIGNANT (IdEns, NomEns, Fonction, IdEns_Resp#)
Association N-N réflexive : Exemple * Est composé de Produit Composer IdProduit LibProduit Prix Qté Entre dans la composition de * PRODUIT (IdProduit, LibProduit, Prix) COMPOSER (IdProduitComposé#, IdProduitComposant#, Qté)
Reprise de classe d’association : Exemple Joueur Tournoi IdLicence NomJoueur Classement IdTournoi NomTournoi Ville Date * * Recevoir Obtenir Amende Participer Prix * * * 0..1 IdAmende Montant Résultat IdPrix Montant
Reprise de classe d’association : Exemple (nul autorisé) JOUEUR (IdLicence, NomJoueur, Classement) TOURNOI (IdTournoi, NomTournoi, Ville, date) PARTICIPER (IdLicence#, IdTournoi#, Résultat, IdPrix#) PRIX (IdPrix, Montant) AMENDE (IdAmende, Montant) RECEVOIR (IdAmende#,(IdLicence,IdTournoi)#) 2 clés étrangères
Associations de type symétrique (1-1) Règle N°4 : 3 cas possibles IdC1 1 1 IdC2 UNIQUE C1 (IdC1, ……., IdC2#) C2 (IdC2, ………..) Valeurs nulles autorisées ou pas selon les valeurs minimums C1 (IdC1, …….) C2 (IdC2, ……….., IdC1#) Dans le cas d’une association optionnelle C1 (IdC1, …….) C2 (IdC2, ………..) Association (IdC1#, IdC2#)
Associations de type 1-1 : Exemple Etudiant Stage Effectuer IdStage ThémeStage Entreprise IneEtudiant NomEtudiant AdrEtudiant 0..1 0..1 ETUDIANT (IneEtudiant, NomEtudiant, AdrEtudiant) STAGE (IdStage, ThèmeStage, Entreprise) EFFECTUER (IdStage#, IdEtudiant#) UNIQUE
Généralisation et Spécialisation : Règle N°5 Chaque classe devient une relation Une ‘super classe’ peut contenir un attribut de spécialisation Chaque relation de l’ensemble possède la même clé primaire La vraie spécialisation avec l’héritage correspondant sera pris en charge avec les SGBD Objet-Relationnel
Généralisation et Spécialisation : Exemple Personnel IdPers Nom Indice Ingénieur Enseignant Chercheur Grade Fonction Domaine Section Titre HeuresCours Spécialité Laboratoire
Généralisation et Spécialisation : Exemple Attribut de Spécialisation PERSONNEL (IdPers, Nom, Indice, TypePers) INGENIEUR (IdPers, Grade, Fonction, Domaine) ENSEIGNANT (IdPers, Section, Titre, HeuresCours) CHERCHEUR (IdPers, Spécialité, laboratoire)