La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Licence de Sciences et Techniques Unité denseignement BASES DE DONNEES Le modèle relationnel François Jacquenet Professeur d'Informatique Faculté des Sciences.

Présentations similaires


Présentation au sujet: "Licence de Sciences et Techniques Unité denseignement BASES DE DONNEES Le modèle relationnel François Jacquenet Professeur d'Informatique Faculté des Sciences."— Transcription de la présentation:

1 Licence de Sciences et Techniques Unité denseignement BASES DE DONNEES Le modèle relationnel François Jacquenet Professeur d'Informatique Faculté des Sciences Laboratoire Hubert Curien – UMR CNRS 5516 18 rue Benoit Lauras 42023 Saint-Etienne cedex 2 Tél : 04 77 91 58 07 e-mail : Francois.Jacquenet@univ-st-etienne.fr Web : http://eurise.univ-st-etienne.fr/~fj

2 Que verrons nous aujourdhui ? Le modèle relationnel Traduction EA --> Relationnel Validation et transformation de modèle EA

3 Le modèle relationnel Modèle de niveau logique, très simple Défini par Ted Codd en 1970; prix Turing en 1986. Développé au centre de recherche d'IBM (Almaden, Californie) Aujourd'hui utilisé par beaucoup de SGBD commerciaux (Oracle, Informix, DB2, Ingres, Sybase, dBase, Access …) et SIG Modèle à deux concepts: relation (table) attribut (colonne)

4 Concepts de base Etudiant (N°Etud, nom, prénom, age) nom de la relation noms des attributs N°Etud nom prénom age 136 Dupont Jean 19 253 Aubry Annie 20 101 Duval André 21 147 Dupont Marc 21 Etudiant schéma population tuple ou occurrence

5 Schéma relationnel une BD = un ensemble de relations schéma d'une BD relationnelle = un ensemble de schémas de relation: R1, R2, …, Rx schéma d'une relation = un ensemble d'attributs Ri = (A1/d1, A2/d2, …, Ay/dy) ou, plus simplement, Ri = (A1, A2, …, Ay)

6 Règles de structuration attributs: simples et monovalués (domaine de valeurs atomiques) structure plate regulière tuple x: une et une seule valeur atomique par attribut x x x x x x wwww w w INTERDIT

7 Valeurs nulles Un attribut peut ne pas être valué pour un tuple: on dit alors qu'il a une valeur nulle exemple : on ne connaît ni l'age d'Annie ni le prénom de Duval 136 Dupont Jean 19 253 Aubry Annie NULL 101 Duval NULL 21 147 Dupont Marc 21

8 Les identifiants Toute relation possède un identifiant (clé) il ne peut y avoir deux tuples identiques dans la même relation L'identifiant n'admet pas de valeurs nulles N°Etud nom prénom age 136 Dupont Jean 19 253 Aubry Annie 20 101 Duval André 21 147 Dupont Marc 21 Etudiant

9 Identifiant externe Cours(NomC,horaire,prof) Suit(N°Etud,NomC) BD Mercredi 15-17 Duval SE Mardi 16-19 Malin Suit traduit un TA entre Etudiant et Cours. Elle comporte les identifiants de Etudiant et de Cours. Suit.NomC est un identifiant externe sur Cours. 253 SE 136 BD 253 BD 101 SE

10 Domaine de valeurs Un domaine est un ensemble de valeurs atomiques que peut prendre un attribut (cf. EA) Exemples de domaines: Dnom : chaînes de caractères de longueur maximale 30 Dnum : entiers compris entre 0 et 99999 Dcouleur : {"bleu", "vert", "jaune"} Dâge : entiers compris entre 16 et 65

11 Définition d'une relation Une relation est définie par : son nom sa liste de couples son (ses) identifiant(s) la définition de sa sémantique (phrase en français) Exemple : Etudiant (N°Etud : Dnum, Nom : Dnom, Prénom : Dnom, Age : Dâge) Identifiant : N°Etud Définition : tout étudiant actuellement immatriculé à l'UJM

12 Contraintes de modélisation Les notions d'attribut multivalué ou complexe n'existent pas dans le modèle relationnel. Il faut donc les modéliser autrement. Pour un attribut complexe, il faut choisir entre le composé ou les composants Pour un attribut multivalué, il faut créer une autre relation (ceci pour chaque attribut multivalué)

13 Représentation d'attribut complexe Soit adresse : nom_rue, num, ville, code Solution 1 un attribut par composant: nom_rue, num, ville, NPA "Rue de la presse", "5", "Saint-Etienne", "42000" il est éventuellement possible de définir par ailleurs une vue restituant la notion globale d'adresse Solution 2 un attribut adresse dont le domaine est une chaine de caractères "Rue de la presse 5 Saint-Etienne 42000" adresse nom_ruenumvillecode

14 Représentation d'attribut multivalué Exemple: mémoriser les différents prénoms des étudiants Solution incorrecte Plusieurs attributs : Prénom1, Prénom2,… Solution correcte : créer une relation supplémentaire: PrénomsEtudiants( Num_Etud, Prénom ) 136 Jean 136 Marie 101 André 253 Annie 253 Claudine Ou liste ordonnée: EtudPrénoms2 (N°Etud, N°Prénom, Prénom)

15 Identifiant d'une relation Une relation peut avoir plusieurs identifiants PrénomsEtudiants2 (N°Etud, N°Prénom, Prénom) N°Etud + N°Prenom N°Etud + Prenom Définition : L'identifiant d'une relation est un ensemble minimum d'attributs de la relation, tel qu'il n'existe pas 2 tuples ayant même valeur pour cet identifiant. Règle : tous les attributs de tout identifiant doivent toujours avoir une valeur connue (non nulle).

16 Identifiants externes Décrivent des liens entre relations Suit (N°Etud : Dnum, NomC : Dnom) N°Etud référence un Etudiant NomC référence un Cours Si la relation référencée possède plusieurs identifiants, il faut préciser: N°Etud référence un Etudiant.N°Etud Vérification de lintégrité référentielle assurée par le SGBD: les identifiants externes désignent nécessairement des tuples existants.

17 Récapitulatif Un schéma relationnel se compose: pour chaque relation de: nom de la relation définition attributs + domaines identifiant(s) éventuellement identifiant(s) externe(s) contraintes d'intégrité associées et des autres contraintes d'intégrité qui portent sur plusieurs relations.

18 Exemple de schéma relationnel Domaines : Dnom : chaînes de caractères de longueur inférieure à 30 Dch100 : chaînes de caractères de longueur inférieure à 100 Dannée : [1970, 1990 ] Dnote : [0.0, 20.0 ] Ddate : [1, 31] / [1, 12] / [1920, 1990]

19 Exemple de schéma relationnel Relation : Personne Attributs : n°P : entier sans nul nom : Dnom sans nul adr : Dch100 sans nul Identifiant: : n°P Définition: tout étudiant et tout enseignant de l'école (état actuel). Relation : PersonnePrénoms (permet d'avoir une liste de prénoms pour une personne donnée) Attributs : n°P : entier sans nul prénom : Dnom sans nul Identifiant: : n°P + prénom Identifiant externe : n°P référence une Personne Définition : prénoms des personnes

20 Exemple de schéma relationnel Relation : Etudiant Attributs : n°P : entier sans nul n°E : entier sans nul dateN : Ddate sans nul Identifiants : (n°E ) (n°P ) Identifiant externe : n°P référence une Personne Définition : tout individu qui est actuellement inscrit à l'école, ou qui a déjà passé avec succès un des cours de l'école Relation : EtudiantEtudes Attributs : n°E : entier sans nul année : Dannée sans nul diplôme : Dnom sans nul Identifiant: (n°E + diplôme ) Identifiant externe : n°E référence un Etudiant.n°E Définition : études antérieures des étudiants

21 Exemple de schéma relationnel Relation : Enseignant Attributs: n°P : entier sans nul tel: : entier sans nul statut : Dnom sans nul banque : Dnom sans nul agence : Dnom sans nul compte : entier sans nul Identifiant : (n°P ) Identifiant externe : n°P référence une Personne Définition : tout individu assurant actuellement un ou plusieurs cours à l'école Relation : Cours Attributs : nomC : Dnom sans nul cycle : entier sans nul n°Ens : entier sans nul Identifiant : (nomC ) Identifiant externe : n°Ens référence un Enseignant Définition : tout cours actuellement offert par l'école

22 Exemple de schéma relationnel Relation : Obtenu Attributs: n°E : entier sans nul nomC : Dnom sans nul note : Dnote sans nul année : Dannée sans nul Identifiant : (n°E + nomC ) Identifiants externes : n°E référence un Etudiant.n°E nomC référence un Cours Définition : l'étudiant n°E a réussi le cours nomC telle année et a obtenu telle note Relation : Inscrit Attributs: n°E : entier sans nul nomC : Dnom sans nul Identifiant : (n°E + nomC ) Identifiants externes : n°E référence un Etudiant.n°E nomC référence un Cours Définition : actuellement, l'étudiant n°E est inscrit au cours nomC

23 Exemple de schéma relationnel Relation : Prérequis Attributs: nomC : Dnom sans nul nomCprérequis : Dnom sans nul Identifiant : (nomC + nomCprérequis ) Identifiants externes : nomC référence un Cours nomCprérequis référence un Cours Définition: le cours nomCprérequis est un prérequis pour le cours nomC Contrainte d'intégrité : dans tout tuple, nomCprérequis doit être différent de nomC

24 Exemple de schéma relationnel Contraintes d'intégrité : Pour tout tuple de Prérequis, le cycle de nomCprérequis dans Cours doit être inférieur ou égal à celui de nomC: in Prérequis => x.cycle > y.cycle Pour tout tuple de EtudiantEtudes, soit dateN la date de naissance des étudiants dans la relation Etudiant, alors: dateN < année: in EtudiantEtudes, in Etudiant => d < y

25 Exemple de schéma relationnel Contraintes d'intégrité (suite): Pour tout tuple de Etudiant : cette_année - dateN = 18, où cette_année est une variable du SGBD Pour tout tuple de Obtenu, soit dateN la date de naissance de l'étudiant dans la relation Etudiant, alors : dateN < année Pour tout tuple de Inscrit, le n°E doit exister dans Obtenu associé à tous les cours existant dans Prérequis associés à nomC.

26 On est expert en modélisation entité-association... comment peut-on devenir expert en modélisation relationnelle ?

27 Transformation EA -> Relationnel Nous avions vu le modèle entité-association Nous venons de voir le modèle relationnel Comment peut-on passer du modèle conceptuel au modèle logique ?

28 Transformation d'un type d'entités IdABCD Type d'Entités

29 Attributs simples Tous les attributs monovalués peuvent être regroupés dans une même relation TE1 (Id, A, B) A NOT NULL Pour chaque attribut multivalué on créé une relation supplémentaire TE2 (Id, C)C NOT NULL TE3 (Id, D) [Id] TE2 = [Id] TE1 [Id] TE3 [Id] TE1 IdABCD Type d'Entités

30 Attributs complexes 2 solutions : TE1 (Id, A1, A2) A1 NOT NULL (on perd le nom A) TE1 (Id, A)A NOT NULL avec dom (A) = dom (A1) x (dom (A2) ) IdA TE A1A1A2A2

31 Attributs complexes employé(E#, année-n, mois-n, jour-n, année-e, mois-e, jour-e) 156 1954 12 25 1985 06 10 employé'(E#, date_naissance, date_embauche) 156 19541225 19850610 employé E# date_naissance année mois jour date_embauche année mois jour

32 Attributs complexes multivalués 1) si A1 A2 : TE1 (Id, A1) & TE2 (A1, A2) TE (Id, A1, A2) E#projets Employé nomdirecteur DF Employé(E#, nomprojet) Projet(nom, directeur) IdA TE A1A1A2A2 Rappel pour les mono valués:

33 Attributs complexes multivalués 2) si (Id, A1) A2 : TE (Id, A1, A2) IdA TE A1A1A2A2 E#projets Employé nomrole DF Employé(E#, nomprojet, role) DF

34 Amas (multisets, multi-ensembles) Problème: les attributs multivalués peuvent inclure plusieurs fois la même valeur Hingis a gagné deux fois dans la même journée il faut inventer un identifiant local : n°_match Jidmatch JoueurTennis daterésultat JoueurTennis(Jid, date, resultat) ???

35 Identifiants artificiels J# match JoueurTennis n°_match date résultat DFs JoueurTennis(J#, no-match, date, résultat)

36 Associations On a les relations : X (........) Y (........) Z (........) On créé la relation : R(Id x, Id y, Id z, Ratt1,..., Rattn) et on a : [Id x ] R [Id x ] X [Id Y ] R [Id x ] Y [Id Z ] R [Id x ] Z

37 Associations (cas particuliers) au moins un role monovalué Pas besoin de relation R : X (Idx,..., Idy, Idz, Ratt1,..., Rattn) Y (........) Z (........) Ici on peut étendre X ou Z

38 Contraintes d'intégrité Contrainte : Seules les personnes de plus de 18 ans peuvent conduire des voitures x Personne AND (x, v) Conduit x.age > 18 Personne(Pid,..., age) Voiture(V#V#,...) Conduit(Pid, V#,...) PersonneVoiture Conduit On peut vérifier l'intégrité grâce à une requête SELECT * FROM Personne, Conduit WHERE Personne.Pid=Conduit.Pid AND Personne.age <18 résultat = 0 la contrainte est vérifié x Personne AND (x, v) Conduit AND x.age<18 = FALSE

39 Pour vérifier les contraintes d'intégrité Solution 1: démarrer une transaction exécuter la mise à jour exécuter la requête de validation de la C si résultat 0 abort de la transaction sinon commit

40 Pour vérifier les contraintes d'intégrité Solution 2: définir une vue qui respecte la CI valider la mise à jour par rapport à la définition de la vue sil y a incohérence abandonner la mise à jour sinon exécuter la mise à jour Solution 3: utiliser les triggers ON UPDATE DO...

41 Mais si notre modèle entité-association n'était pas correct ?

42 Validation d'un schéma conceptuel Syntaxique: respect des règles du modèle Par confrontation aux dépendances: règles de normalisation Par jeu d'essai Complétude par rapport aux traitements Par les utilisateurs Règles à connaître et à appliquer !!!

43 Concept de dépendance A B si le fait que deux occurrences aient la même valeur pour A entraîne nécessairement qu'elles aient la même valeur pour B. A B : «B dépend de A», «A détermine B » N°carte nom, prénoms, date naissance, adresses Etudiant N°_carte nom prénoms date_naissance adresses jour mois année n° rue ville code_postal liste

44 Validation d'un TE (TA) /dépendances Etudiant N°_carte nom prénoms date_naissance adresses liste jour mois année n° rue ville code_postal Règle 1: dans un TE (TA) valide, tous les attributs directs (simples et complexes) dépendent uniquement de chaque identifiant entier du TE (TA). n°carte, nom, prénoms, date naissance et adresses sont les attributs directs dEtudiant, qui a pour identifiant n°carte

45 Schéma incorrect La règle est contredite si un attribut dépend d'une partie de l'identifiant ou d'un autre attribut non identifiant. No-carte nom-section directeur_section nom_étudiant Etudiant No-carte nom_section directeur_section nom_étudiant Etudiant mauvais

46 Normalisation Processus de modification d'un schéma qui conduit à obtenir un schéma offrant les propriétés désirées. Correct ! No-carte section nom étudiant nom nom directeur Etudiant No-carte nom-section directeur section nom étudiant Mauvais

47 Dépendances et identifiant Graphe des dépendances N°_carte nom_section directeur_section nom_étudiant L'identifiant est la racine du graphe N°_carte nom_sectiondirecteur_sectionnom_étudiant

48 Validation /attributs complexes Règle 2: Un attribut du i ème niveau peut seulement dépendre d'une combinaison d'attributs du même niveau et de niveaux supérieurs contigus. nomLabdirecteurchercheurs nomCadressedateentrée%tempsprojets nomPbudgetdescription lignemontant Laboratoire

49 Dépendances entre TE Si tout projet n'est fait que par un seul labo, le schéma est incorrect LaboChercheur Emploie Projet mauvais Règle 3: un TA n-aire (n>2) avec une dépendance entre ses TE doit être decomposé

50 Normalisation incorrecte d'un TA Chercheur Emploie Projet Conduit Labo mauvais Mauvaise décomposition du TA ternaire incorrect en deux TA binaires Cette décomposition n'est pas correcte car elle induit une perte d'information – on ne sait plus sur quel projet travaille un chercheur !!

51 Normalisation correcte d'un TA Décomposition du TA ternaire incorrect en deux TA binaires sans perte d'information: un chercheur est employé par le labo qui conduit le projet sur lequel le chercheur travaille Chercheur Emploie Projet Conduit Labo

52 Validation des attributs d'un TA Règle 4: dans un TA sans dépendance entre les TEs liés, les attributs du TA dépendent de tous les TE liés par ce TA. (No-carte,No-Mat) moyenne, notes EtudiantMatière Evaluation N°_carte nom moyenne notes N°_Mat coefficient

53 Validation des attributs d'un TA Si Coef = fonction du nombre d'heures assurées par l'enseignant dans ce cours. Alors Coef ne dépend pas dEtudiant EtudiantEnseignant N°_carte notes Nom Contrôle Nom Cours Cours Assure coef correct EtudiantEnseignant Contrôle Nom Cours Cours N°_carte notes coef Nom mauvais

54 Elimination des TA redondants Si "Est élève de" = Inscrit –Cours – Assure alors il y a redondance inutile. On supprime "Est élève de". EtudiantCoursEnseignant Inscrit Assure Est élève de

55 Remplacement d'un attribut par un TA EmployéService N°_emp …. n°_service n° étage nom mauvais Règle de remplacement N°_emp …. n° étage nom EmployéService Travaille

56 Elimination des TE inutiles Un TE est inutile s'il ne présente d'intérêt pour aucun traitement de l'application Si il n'existe pas de requête portant directement sur les services, Services est transformé en attribut. EmployéService Travaille N°_emp …. service Employé n° étage nom N°_emp …. n° étage nom

57 TE répertoire ou attribut Nom Type Num A moins que l'on souhaite gérer un répertoire des salles. CoursSalle A lieu dans Cours Nom Type Num_salle

58 Transformation de schémas La même réalité peut être modélisée de plusieurs façons différentes Les choix sont dictés par les objectifs des applications Si les objectifs divergent, le choix le moins contraignant est retenu

59 Relativisme cable bleurouge cable cuivrefibre cable couleur materiau cable couleur materiau

60 Choix de modélisation TE ou attribut ? TE ou TA ? TA ou attribut ? Types génériques ou types spécialisés ? Attribut optionnel ou sous-type ?

61 TE ou attribut Employé n°-secu nom service nom étage Service nom étage Employé no-AVS nom ?

62 Transformation d'attribut en TE EmployéService n°_secu nom nom étage Travaille x:y 0:n Attribut direct Employé n°_secu nom service nom étage x:y Le lien de composition TE-attribut devient un rôle TE-TA, avec les mêmes cardinalités

63 Transformation d'attribut en TE Attribut indirect nomLabdirecteurchercheurs nomCadressedate_entrée%tempsprojets nomPbudgetdescription lignemontant Laboratoire

64 Attribut -> TE : 1ère étape nomLabdirecteurchercheurs nomCadressedate_entrée%tempsprojets Laboratoire nomPbudgetdescription lignemontant Projet ?? projets ---> TE => chercheurs ---> TE

65 Attribut -> TE : 2ème étape Placement des attributs ? nomPbudgetdescription lignemontant nomLabdirecteur nomCadressedate_entrée%temps Laboratoire Projet Chercheur Emploie Travaille ??

66 Attribut -> TE : 3ème étape nomLabdirecteur nomCadressedate_entrée%temps Laboratoire Chercheur Emploie Chercheur -> nomC, adresse => nomC et adresse sont attributs de Chercheur (Chercheur,Laboratoire) -> date_entrée,%temps => date_entrée et %temps sont attributs de Emploie ?

67 Attribut -> TE : 3ème étape nomLab directeur nomCadressedate_entrée%temps LaboratoireChercheur Emploie nomP budget lignemontant Projet nomC -> adresse : nomC identifiant de Chercheur Projet -> nomP, budget, description => attributs de Projet nomP -> budget, description description

68 Attributs -> TE : résultat nomLab directeur nomC adresse date_entrée%temps LaboratoireChercheur Emploie nomP budget lignemontant Projet description Travaille

69 TE ou TA: reification (TA->TE) nomadresseéchéanceNo-contrat PersonneContrat Souscrit Objet numérotype Voiture 1:1 nomadressenumérotypeéchéanceNo-contrat PersonneVoiture Assure

70 TA ou attribut nomadressenumérotypeéchéanceN°_contrat PersonneVoiture Assure nomadresse assure échéance N°_contrat voiture Personne numéro type Similaire TE ou attribut

71 Attribut de TA ou attribut de TE ? nomadresse numérotypeéchéanceNo-contrat PersonneVoiture Assure nomadresse assure échéance No-contrat voiture Personne numéro type assure:attribut->TA nomadressenumérotypeéchéanceNo-contrat PersonneVoiture Assure

72 TE génériques/spécifiques ou nomadresse sexe Personne nomadresse sexe Personne sexe = F Femme sexe = M Homme

73 Attributs optionnels ou sous-types ou nomadresse n°tél Personne nomadresse Personne n°tél Communiquant

74 Conclusion Les transformations de schéma à semantique équivalente (sans perte d'information) sont un outil puissant de flexibilité Elles permettent d'offrir des vues différentes (personnalisées) sur un même contenu informatif Elles permettent de passer d'une structure obéissant à certaines règles à une autre structure équivalente obéissant à d'autres règles (exemple: traduction d'un schéma EA en schéma relationnel)

75 RECAPITULONS


Télécharger ppt "Licence de Sciences et Techniques Unité denseignement BASES DE DONNEES Le modèle relationnel François Jacquenet Professeur d'Informatique Faculté des Sciences."

Présentations similaires


Annonces Google