formation sgbd - modèle de données relationnel
TRANSCRIPT
I.N.A.T. (Tunisie) 25 septembre – 2 octobre 2001
organisée par
l’Institut National des Sciences et Technologies de la Mer
avec la collaboration du
projet FAO COPEMED
Formateur : Alexis Bensch*
Session de FormationSystèmes de Gestion de Bases de données Relationnelles
Utilisation de MS ACCESS 2000
* Expert Systèmes d’Information Projet FAO COPEMED GCP/REM/057/SPA - Alicante (Espagne)
Notions fondamentales liées aux systèmes de gestion de bases de données (SGBD) et présentation du modèle de données relationnel. Elaboration du modèle conceptuel de données. Exercices. Processus de passage du modèle conceptuel de données au modèle logique relationnel. Exercices.
COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre – 2 octobre 2001
1
Composant d’une organisation qui gère (acquiert, traite, stocke,communique) de l’information d’intérêt
- toute organisation possède un système d’information, pas toujours explicité dans sa structure- en général, le système d’information opère comme un support à d’autres composants de l’organisation
La notion première de système d’information est en partie indépendante de son informatisation; néanmoins, nous nous intéressons principalement aux systèmes d’information qui sont dans une large mesure informatisés
Système d’Information
L’information est manipulée et enregistrée selon diverses techniques :
– langage naturel (écrit ou parlé)– dessins, diagrammes,– nombres– codes– des idées informelles...
Gestion de l’Information
COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre – 2 octobre 2001
2
Lorsque les activités deviennent systématiques, des moyens appropriés d’organisation et de codification de l’information sont inventés.
Par exemple, considérons l’information sur les personnes :– dans la majorité des pays, une structure pour les noms a été mise en place– plus tard, on a réalisé qu’il pouvait être utile de garder une trace de la date et du lieu de naissance (utilisable pour distinguer des personnes ayant le même nom)– plus récemment, le numéro de sécurité sociale a été introduit afin d’obtenir un identifiant unique pour chaque personne.
Information Structurée
Information et Données
Dans les systèmes informatisés (mais aussi non-informatisés), l’information est représentée par des données brutes, qui doivent être interprétées et corrélées pour fournir de l’information.
Par exemple:– “John Smith” et 25755 sont une chaîne de caractères et un nombre : deux données– si ces données sont utilisées comme réponse à la question “Qui est le chef de département et quelle est son extension de téléphone”, alors, ces données sont utilisées pour produire de l’information
Les collections de données structurées sont relativement stables, et constitue une ressource exploitée par des procédures plus fréquemment modifiées.
COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre – 2 octobre 2001
3
Base de Données
Une base de données est une collection de données utilisée par les applications pour générer de l’information d’intérêt au sein d’un système d’information.
Fichierde données
Utilisateur 1
Utilisateur 2
Application 1
Application 2
Application 3
Application 4 Fichierde données
Gestion informatisée des données
Système de fichiers conventionnel:Les données sont stockées sous forme de fichier, incluant ou non une description de sa structuration. Chaque application de traitement de données utilise un format de fichier de données qui lui est spécifique. L
Système de Gestion de Bases de données (SGBD)
Ensemble des programmes assurant la structuration, le stockage, la mise à jour et la recherche des données d’une base, ainsi que les interfaces nécessaires aux différentes formes d’utilisation de la base. Les SGBD sont une évolution des systèmes de fichiers conventionnels, qui présentent une série d’inconvénients
COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre – 2 octobre 2001
4
SGBD versus Système de fichiers (1)
SGBD
Les SGBDs disposent d’outils qui permettent de gérer un accès simultané ou partagéaux données par plusieurs utilisateurs
�Pas de de redondance�Facilité de mise à jour
Accès aux données :
Système simple de fichiers
Accès exclusif
=> Nécessité de dupliquer les données, entraînant des problèmes de redondance et d’inconsistance
SGBD
Les SGBDs structure les données de manière à rendre les procédures de gestion plus efficaces disposent d’outils qui permettent de gérer une grande quantité de données de façon uniforme.
Gestion des données :
Système simple de fichiers
Les procédures de gestions sont assurées par chaque application=> duplication de procédures
La simplicité de la structure des données limite les fonctionnalités de gestion des données.
SGBD versus Système de fichiers (2)
COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre – 2 octobre 2001
5
Structuration des données - Modèle de représentation des données
Dans un SGBD, les données sont organisées selon un modèle appelémodèle de données.
Il existe plusieurs type de modèles. Chacun est basé sur un type de constructeur utilisé pour organiser les données. Parmi les modèles utilisés:
Modèle Structurehiérarchique arbres (années 60)réseau graphes (début des années 70)relationnel relations (début des années 80)orienté objet objets
Le modèle de données le plus répandu est le modèle de données relationnel, qui utilise un constructeur appelé “relation”, au sens mathématique d’ensemble.
Modèle de données relationnel
Une relation est représentée par une table à double entrée. Une relation est caractérisée par un nom.
Chaque colonne est un attribut, encore appelé champ. Un attribut est caractérisé par un nom.
Chaque ligne est appelée n-uplet ou enregistrement.
Une relation regroupe une collection d´éléments (lignes) définis par les mêmes attributs (colonnes).
Exemple:Coureurs Équipes
COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre – 2 octobre 2001
6
Relation - Nomenclature
Schéma : descripteur d’une relation: son nom, suivie de la liste des noms des attributs
Domaine: ensemble des valeurs que peut prendre l’attribut d’une relation
Modèles de données : niveaux d’abstraction
Schéma Externe
Schéma Externe
Schéma Physique
Schéma Externe
Schéma Logique
Schéma Conceptuel
....
�
Modèle de données du SGBD
Stockage des donnéesdans un système particulier
perception du monde réel en terme d’entités et de règles de gestion entre ces entités
comment l’utilisateurvoit les données
Description textuelle�
Modèle conceptuel de données
COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre – 2 octobre 2001
7
Modèle conceptuel de données Entité-Association
Modélisation = abstraction
Il s’agit d’une description :- statique : les entités et les associations sont décrites par leurs propriétés (attributs)- dynamique . les associations traduisent les règles de gestion entre les entités identifiés.
E1
E2
E3R2
R1
Monde réel
Il repose sur la perception du monde réel sous forme d’un ensemble d’objets “entités” associés au moyen d’un ensemble d’ “associations” entre ces objets.
Exemple :
Un Coureur fait partie d’ une ÉquipeNuméroNomNationalité
CodeNomDirecteur sportif
EntitéChaque entité est décrite par des propriétés (ou attributs). Chaque occurrence de l’entité est définie par les valeurs de ses différents attributs.
AssociationMet en relation plusieurs entités. Une association n’existe que par les entités qu’elle met en correspondance. Elle peut être caractérisée par des attributs qui dépendent des occurrences que l’association met en relation. Une association est aussi appelée relation.
Modèle entité-association – représentation graphique
Relation : faire partie deEntités liées : Coureur, ÉquipeAttribut de la relation : dates du contrat
CoureurNuméroNomPrénom entité
association
Légende
ÉquipeCodeNomDirecteur sportif
Diagramme entité-association
Fait partie de
Exemple: l’entité Coureur a 3 attributsLe coureur (Jan, ULLRICH , nº8) est une occurrence de l’entité coureur
COUREUR
COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre – 2 octobre 2001
8
Modèle entité-association – cardinalités d’une association
1
3
ProduitCommande
Concerner
2
CardinalitéPour une entité A en relation avec une entité B, il s’agit du nombre d’occurrences d’associations que possède une occurrence de l’entité A avec l’entité B
3
4
2
1
ProduitCommande
Concerner
Quand je compte le nombre de produits d’une commande, je m’intéresse aux cardinalités de « commande »
Quand je compte le nombre de commandes d’un produit, je m’intéresse aux cardinalités de “produit”
Modèle entité-association – Typologie d’association (1)Association Un – Un (1,1) entre une entité A et une entité BUne occurrence de l’entité A ne peut être liée qu’à une occurrence de l’entité B et réciproquement
Association Un – Plusieurs (1,N) entre une entité A et une entité BUne occurence de l’entité B peut être associée à plusieurs occurrences de l’entité AUne occurence de l’entité A ne peut être associée qu’à une occurrence de l’entité B
Association Plusieurs – Plusieurs (N,N) entre une entité A et une entité BUne occurence de l’entité A peut être associée à plusieurs occurrences de l’entité B et réciproquement
A B1 1
A BN 1
A BN N
COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre – 2 octobre 2001
9
Modèle entité-association – Typologie d’association (2)
Plusieurs à plusieurs Un à plusieurs Un-à-un
Modèle entité-association – Typologie d’association (3)
Un Coureur appartient à une ÉquipeUne Équipe est composée de plusieurs Coureurs
CoureurNuméroPrénomNom
ÉquipeCodeNomDirecteur sportif
Fait partie dePaysCode PaysNom Pays
est originairede
ÉtapeVille départVille ArrivéeDistance
participe
Exemple :
Diagramme entité-association
1 N 1N
N
N
Un Coureur Participe à Plusieurs ÉtapesUne Étape fait participer plusieurs Coureurs
Un Coureur est originaire d’un PaysUn Pays est représenté par plusieurs Coureurs
COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre – 2 octobre 2001
10
• Cardinalité minimale : Nombre de fois minimum qu'une occurrence d'Entité participe à une Relation.
Exemple :la commande peut-elle ne concerner aucun produit ?OUI : cardinalité minimale = 0NON : cardinalité minimale = 1
• Cardinalité maximale :Nombre de fois maximum qu'une occurrence d'Entité participe à une Relation.
Exemple :la commande concerne-t-elle un seul produit au maximum ?OUI : cardinalité maximale = 1NON : cardinalité maximale = N
Quand une cardinalité maximale pour une entité = 1, on représente une flèche partant de l’entité, et on parle d’une dépendance fonctionnelle (DF) : Commande dépend du client,Chaque commande est associée à un client. Si on supprime un client, ses commandes n’ont plus besoin d’être mémorisées, mais on peut annuler les commandes et conserver le client.
Modèle entité-association – cardinalités d’une association (1)
ProduitCommande 1, N 0, Nconcerner
Client Commande0, N 1, 1Est faite
par
CoureurNuméroPrénomNom
ÉquipeCodeNomDirecteur sportif
fait partie de
PaysCode PaysNom Pays
est originairede
ÉtapeVille départVille ArrivéeDistance
participe
0, N1, 1
0, N
1, N
1, 11, N
Modèle entité-association – cardinalités d’une association (2)
COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre – 2 octobre 2001
11
Modèle entité-association – Identifiant (clé) d’une entité
Chaque entité ou association possède une clé qui permet d’identifier de façon unique chacune de ses occurrences. L’existence de cette clé garantit l’accès à n’importe quelle occurrence de l’entité. La clé (dite primaire) est définit par un ou plusieurs attributs.
Exemple :Soit l’entité Coureur (numéro, nom, prénom)Aucun coureur n’a le même numéro. Par contre, on pourrait avoir deux coureurs ayant le même nom=> l’attribut numéro est retenu comme clé primaire de l’entité Coureur
Dans la plus part des cas, un attribut ou un groupe d’attributs de l’entité pourront être utilisés comme clé. Dans le cas contraire, il est toujours possible de créer un nouvel attribut (code séquentiel par exemple) qui sera utilisé comme clé.
Les clés primaires sont utilisées pour les associations entre des occurrences de deux entités.
Sélection de l’identifiant (clé primaire) de chaque entité
- attributs avec une valeur nulle ne peuvent être candidats
- le nombre d’attributs entrant dans la composition de la clé doit etre minimal. En effet, plus le nombre d’attributs de la clé est grand, plus les opérations de recherche d’information dans la base de données seront complexes.
- Si pas de bon candidat, on peut toujours créer un attribut code
Concevoir un bon modèle conceptuel de données (1)
COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre – 2 octobre 2001
12
Concevoir un bon modèle conceptuel de données (2)Analyse des redondances:
un attribut dont la valeur peut être déduite à partir d’autres données :
. calcul à partir d’autres attributs de la même occurrence,
exemple : LigneCommande (Nº Commande, Article, Prix Unitaire, Nombre, Prix total)Le prix total peut être facilement calculé : Prix unitaire x Nombre
. Agrégation d’un attribut d’une autre entité associée
exemple : Commande (Nº, Client, Montant, nombre d’articles)LigneCommande (Nº Commande, Article, Prix Unitaire, Nombre, Prix total)Le montant de la commande peut être calculé en additionnant les valeur de prix total des lignes de la commande
. comptage d’occurrences d’une autre entité associéeCommande (Nº, Client, Montant, nombre d’articles)LigneCommande (Nº Commande, Article, Prix Unitaire, Nombre, Prix total)Le nombre d’articles peut être calculé en comptant le nombre de lignes de la commande
. Relations pouvant être déduite d’une autre relation
Centre médicalOn vous donne un schémas E/A ci-dessous représentant des visites dans un centre médical. Répondez aux questions suivantes en fonction des caractéristiques de ce schéma (i.e.: indiquez si la situation décrite est représentable, indépendamment de sa vraisemblance).
Exercice - Interprétation de schémas entité/association
Solution:A – Oui : cardinalité maximale N de
l’association Patient-Consultation
B - Non : cardinalité maximale 1 de l’association Consultation-Patient : un patient par consultation).
C – Oui : cardinalité maximale n de l’association Consultation-Médicament
D - Oui : pas d’association entre un médecin et un médicament
Exercice A :Un patient peut-il effectuer plusieurs visites ?
Exercice B :Un médecin peut-il recevoir plusieurs patients dans la même consultation ?
Exercice C :Peut-on prescrire plusieurs médicaments dans une même consultation ?
Exercice D :Deux médecins différents peuvent-ils prescrire le même médicament ?
COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre – 2 octobre 2001
13
Tournoi de tennisLe schéma E/A ci-dessous représente des rencontres dans un tournoi de tennis. Répondez aux questions suivantes en fonction des caractéristiques de ce schéma (i.e.: indiquez si la situation décrite est représentable, indépendamment de sa vraisemblance).
Exercice - Interprétation de schémas entité/association
Exercice A :Peut-on jouer des matchs de double ?
Exercice B :Un joueur peut-il gagner un match sans y a voir participé ?
Exercice C :Peut-il y avoir deux matchs sur le même terrain à la même heure
Solution:A – Non : cardinalité maximale 2 de
l’association Match - Joueur
B - Oui : les deux associations Gagne et Participe sont distinctes
C – A priori, oui, car une occurrence de l’entité terrain peut être associée à N occurrence de l’entité Match
Un journalLe schéma E/A ci-dessous représente le système d'information (très simplifié) d'un quotidien.Répondez aux questions suivantes en fonction des caractéristiques de ce schéma (i.e.: indiquez si la situation décrite est représentable, indépendamment de sa vraisemblance).
Exercice - Interprétation de schémas entité/association
Exercice A :Un article peut-il être rédigé par plusieurs journalistes ?
Exercice B :Un article peut-il être publié plusieurs fois dans le même numéro ?
Exercice C :Peut-il y avoir plusieurs articles sur le même sujet dans le même numéro ?
Solution:A – Non : cardinalité maximale 1 de
l’association Article - JournalisteB - Non : l’association Article-Numéro
a pour clé primaire l’identifiant d’un article + identifiant numéro, qui sera unique par définition
C – Oui
COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre – 2 octobre 2001
14
Exercice de modélisation 1 - Énoncé
Exercice 1
Il s'agit d'établir le schéma conceptuel d'une base de données pour la gestion desformations d'un institut privé. Un cours est caractérisé par un numéro de cours (NO-COURS), un libellé (LIBELLE), une durée en heures (DUREE) et un type (TYPE). Un cours peut faire l'objet dans l'année de plusieurs sessions identiques. Une session est caractérisée par un numéro (NOSES), une date de début (DATE) et un prix (PRIX).
Une session est le plus souvent assurée par plusieurs animateurs et est placée sous la responsabilité d'un animateur principal. Un animateur peut intervenir dans plusieurs sessions au cours de l'année. On désire mémoriser le nombre d'heures (NBH) effectué par un animateur pour chaque session.
Un animateur est caractérisé par un numéro (NOANI), un nom (NOMA) et une adresse (ADRA). Chaque session est suivie par un certain nombre de participants. Un participant est caractérisé par un numéro (NOPAR), un nom(NOMP) et une adresse (ADRP).
Établir le modèle conceptuel de données sous format Diagramme Entité-Association. On indiquera les cardinalités minimales et maximales des couples entité-association.
SESSIONNOSESDATEPRIX
COURSNOCOURSLIBELLEDUREETYPE
PARTICIPANTNOPARNOMPADRP
ANIMATEURNOANINOMAADRA
1,1 1,1Fait l’objet de
IntervientSuit
1,N
1,N
1,N 1,N
1,N
NBHPRINCIPAL
Base de données Gestion des FormationsModèle Conceptuel de données – Diagramme Entité-Association
Exercice de modélisation 1 - Solution
COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre – 2 octobre 2001
15
Exercice de modélisation 2 - ÉnoncéExercice 2 - LES INVITATIONS
Une personne désire modéliser le système d’information correspondant aux réceptions qu’elle organise (personnes invitées, menus, ...). Ce système d’information doit lui permettre, en autre chose, de pouvoir l’aider à organiser une réception en lui offrant la possibilité de construire sa liste d’invités, ainsi que son menu et les vins associés. Une réception a lieu à une date donnée et y sont invitées des personnes dont on connaît le nom, le prénom, leur sexe, leur âge et leur profession (l’identification d’une personne se fait par son nom et son prénom). Le repas servi lors d’une réception comprend un certain nombre de plats identifiés par leur nom (" poulet à la mexicaine " par exemple) et leur nature (" entrée froide ", " dessert " par exemple). Pour pouvoir réussir un menu, il faut que les vins servis soient en accord avec les plats. On dispose donc pour chaque plat d’une liste de types de vins possibles caractérisés par leur région viticole (" bourgogne " par exemple) et un type (" rouge corsé ", " blanc sec " par exemple). Pour que la réception soit réussie, il faut éviter qu’une dispute vienne gâcher l’événement et pour se faire la connaissance des amitiés et inimitiés entre personnes est primordiale. Enfin le dernier ingrédient d’une réception réussie est d’offrir au menu des plats que les invités apprécient et surtout d’éviter de leur servir des plats qu’ils n’aiment pas.
Établir le modèle conceptuel de données sous format Diagramme Entité-Association. On indiquera les cardinalités minimales et maximales des couples entité-association.
PLATNOSESDATEPRIX
PERSONNENOCOURSLIBELLEDUREETYPE
INVITATIONNOPARNOMPADRP
TYPE DE VINNOANINOMAADRA
1,1 1,1Fait l’objet de
IntervientSuit
1,N
1,N
1,N 1,N
1,N
NBHPRINCIPAL
Base de données InvitationsModèle Conceptuel de données – Diagramme Entité-Association
Exercice de modélisation 2 - Solution
COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre – 2 octobre 2001
16
Exercice de modélisation 3 – ÉnoncéExercice 3 - LES CAMPAGNES DE CHALUTAGE EXPERIMENTAL
On se propose de concevoir une base de données pour gérer les données récoltées lors de campagnes de prospection en mer.
Chaque campagne est identifiée par un code. Elle regroupe un ensemble d'opérations de pêche appelées stations. Une campagne est réalisée avec un bateau identifié par son nom, sur une période continue limitée par la date de la première station et la date de la dernière station de cette campagne. La période de la campagne se tient dans une saison. L'information sur la saison est importante pour la préparation de la campagne et l'analyse de ses résultats.
Chaque station est réalisée dans une strate. Les strates sont issues du découpage d'une region selon un système de stratification choisi pour chaque campagne. Le système de stratification est identifié par un code, porte un nom ainsi qu'une description de la région prospectée et de son mode de découpage en strates. Au sein d'un système de stratification, toute strate est identifiée par un code, porte un nom et une description des critères qui ont servis à sa définition. On considère que les critères utilisés pour la stratification sont des secteurs géographiques croisés avec des intervalles de bathymétrie.
Chaque station est identifiée par un code interne à la campagne. La station est localisée dans le temps (date, heures de début et de fin de l'opération de pêche) et dans l'espace (position géographique en début et fin d'opération de pêche).. L'état de la mer lors de l'opération de pêche est une information importante. Un engin de pêche, connu par son nom, est utilisé pour chaque station
La capture réalisée par l'opération de pêche est quantifiée globalement par pesée. Le nombre d'espèces capturées est aussi identifié. Enfin, pour chaque espèce, identifiée par son nom, son genre et sa famille, on détermine le poids correspondant dans la capture de la station.
Établir le modèle conceptuel de données sous format Diagramme Entité-Association. On indiquera les cardinalités minimales et maximales des couples entité-association.
Base de données Campagnes de Chalutage ExpérimentalModèle Conceptuel de données – Diagramme Entité-Association
Exercice de modélisation 3 - Solution
Engin de Pêche utilise(1,1)(0,n)
BateauEst effectuée
par(1,1)(0,n)
COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre – 2 octobre 2001
17
Base de données Campagnes de Chalutage ExpérimentalModèle Conceptuel de données – Entités et Attributs
Exercice de modélisation 3 – Solution
Exercice de modélisation 4 – Énoncé
Exercice 4
On veut gérer les étudiants et les professeurs d’un ensemble de formations dispensés par une université.Un étudiant est identifié par son prénom, son mon et son age. Un étudiant suit une formation. Chaque formation a un nom et une durée (nombre d’années). Elle est assurée par un ensemble d’enseignants. Chaque enseignant est connu par son nom, son prénom et la matière qu’il enseigne. On désire savoir le nombre d’heures qu’un enseignant effectue pour chacune des formations dans lesquelles il enseigne.
1 - Identifier les entités, les attributs et les associations. On utilisera la représentation diagramme Entité-Association.
2 – indiquer les cardinalités minimales et maximales de chaque association
COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre – 2 octobre 2001
18
FORMATIONNOM_FORMATIONNOMBRE_ANNÉES
ETUDIANTPRÉNOM NOMAGE
ENSEIGNANTPRÉNOMNOMMATIÈRE
Suit
IntervientNOMBRE_HEURES
Base de données ÉtudiantsModèle Conceptuel de données – Diagramme Entité-Association
Exercice de modélisation 4 - Solution
1, 1 1, N
1, N
1, N
Relation Plusieurs- Plusieurs
�pour chaque entité, une relation (table) ayant les mêmes attributs et la même clé primaire
�pour la relation, une relation(table) ayant pour attributs les éventuels attributs de l’association ainsi que les attributs identifiant des deux entités de l’association. L’ensemble de ces attributs identifiant constituent la clé primaire de la table
Exemple :
Traduction du modèle conceptuel au Modèle Relationnel (1)
CoureurNuméro CoureurPrénomNomNationalité
ÉtapeNuméro étapeVille départVille ArrivéeDistance
participe1, N 0, N
Etape#Numéro ÉtapeVille départVille ArrivéeDistance
Participe#Numéro étape#Numéro de coureur
Temps réalisé
Coureur#Numéro Coureur
PrénomNomNationalité
Temps réalisé
Étape (NuméroEtape, Ville départ, Ville arrivée, NbKm)Coureur (NuméroCoureur, Prénom, Nom)Participe (NuméroCoureur, NuméroEtape, TempsRéalisé)
Modèle conceptuel
Modèle logique relationnel
Schémas relationnels de la base de donnés # : attribut faisant partie de la clé primaire
COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre – 2 octobre 2001
19
Relation Un – Plusieurs (dépendance fonctionnelle)
�pour chaque entité, une relation (table) ayant les mêmes attributs et la même clé primaire
�La clé primaire de l’entité dépendante est ajoutée aux attributs de l’entité dont elle dépend (clé étrangère)
� Les attributs de l’association sont aussi ajoutés comme attributs de l’entité dépendante
Exemple :
Traduction du modèle conceptuel au Modèle Relationnel (2)
CoureurNuméro CoureurPrénomNomNationalité
ÉquipeCode ÉquipeNom ÉquipeDirecteur Sportif
Fait partie de1, 1 1, N
Équipe#Code Équipe
Nom ÉquipeDirecteur sportif
Coureur#Numéro CoureurPrénomNomNationalitéCode ÉquipeDate Contrat
Coureur (NuméroCoureur, Prénom, Nom, Nationalité, Code Équipe, Date contrat)Equipe (CodeEquipe, NomEquipe, DirecteurSportif)
Modèle conceptuel
Modèle logique relationnel
Schémas relationnels de la base de données
# : attribut faisant partie de la clé primaire
Date contrat
Relation Un – Un (association binaire)
�pour chaque entité, une relation (table) ayant les mêmes attributs et la même clé primaire
�Une des deux relations doit inclure les attributs de la clé primaire de l’autre (clé étrangère)
Une alternative est de regrouper les deux entités en une seule relation, regroupant tous les attributs des deux entités, et ayant pour clé primaire la clé primaire de l’une des entités de la relation. Cette solution n’est a priori pas souhaitable dans la mesure ou elle ne reflète pas la volonté exprimée au niveau conceptuel de voir apparaître les deux entités de façon distincte.
Traduction du modèle conceptuel au Modèle Relationnel (3)
EmployéIdentifiantPrénomNomSalaire
DépartementNom du départementTéléphoneDirecteur Sportif
Dirige0, 1 1, 1
Département#Nom du département TéléphoneIdentifiant directeur
Employé#identifiant PrénomNomSalaire
Employé (Identifiant,, Prénom, Nom, Salaire)Département (Nom département, Téléphone, Identifiant directeur)
Modèle conceptuel
Modèle logique relationnel
Schémas relationnels de la base de données # : attribut faisant partie de la clé primaire
COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre – 2 octobre 2001
20
Normalisation du modèle relationnel
Une telle relation présente différent problèmes:
• Redondance: répétition d'information comme le nom du produit associé à un code produit� perte d'espace disque� difficulté de mise à jour, avec risque d’introduire des inconsistances dans la base de données
• Risques de perte d'information : si l'on supprime l'information sur le produit P2, on supprime aussi l'information sur le Dépôt 3
• Inaptitude à la gestion de l'information : il n'est pas possible d'ajouter un produit sans ajouter les informations sur un des dépôts qui le stocke
Normalisation – Dépendance fonctionnelle
• Dépendance fonctionnelle :
Soient X et Y deux attributs d’une relation RX → Y : Y dépend fonctionnellement de X
ou X détermine fonctionnellement Y
Si et seulement si pour une valeur de X, il existe une et une seulevaleur de Y.
Exemple :Soit la relation Employé (Nºidentité, Prénom, Nom, Adresse)Employé.NºIdentité → Employé.PrénomEmployé.NºIdentité → Employé.NomEmployé.NºIdentité → Employé.Adresse
maisEmployé.Adresse → Employé. NºIdentité plusieurs employés peuvent
vivre à la même adresse
COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre – 2 octobre 2001
21
Normalisation - Première forme normale
La première forme normale 1NF:Une relation est 1NF si chacun de ses attributs a un domaine atomique (1 seule valeur pour une occurrence de la relation)
Exemple:
Personne (IdPersonne, nom, les diplômes)où les diplômes sont l’ensemble des diplômes obtenus par une personne; n’est pas en 1NF
-Personne (IdPersonne, nom) est en 1NF
-Diplôme (IdPersonne, unDiplôme) est en 1NF
Normalisation - Deuxième forme normale
Exemple :
COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre – 2 octobre 2001
22
Normalisation - Troisième forme normale
Une relation est en 3NF ssi•elle est en 2NF•Tout attribut n’appartenant pas à la clé ne dépend pas d’un attribut non clé (ou tout attribut n’appartenant pas à la clé ne dépend pas transitivement de la clé).
Exemple:
R = (NuméroFacture, DateFacture, TotalFacture, NuméroClient, NomClient)
NuméroClient → NuméroFacture => pas de DFNuméroFacture → NuméroClient => DF directNuméroFacture → NomClient => DF indirect
En effet : La clé est NuméroFacture. R est en 2NF.NuméroFacture → NuméroClient → NomClient => DF par transitivité.
La solution en 3NF :R1 = (NuméroFacture, DateFacture, TotalFacture, NuméroClient)R2 = (NuméroClient, NomClient)
Exercice – Deuxième forme normaleExercice :Soit la relation COMMANDE(article,quantité,prix,fournisseur,adresse du fournisseur)1 - Définir la clé primaire de cette relation2 – Cette relation représente une entité ou une association? Préciser.3 - Cette relation est elle en 2NF ? Pourquoi ?4 – Si non, quelle modification du modèle de données faut-il envisager?
Solution :1 - La clé de la relation est composée des attributs article et fournisseur.2 - Il s’agit de la représentation logique d’une association entre deux entités Article et Fournisseur.3 - Les attributs Quantité et Prix dépendent des deux attributs de la clé (article, fournisseur)L'adresse du fournisseur ne dépend que du fournisseur. La relation n’est donc pas en 2NF4 -Il y aura forcément de la redondance. Chaque fois que l'on aura le fournisseur Truc, on aura l'adresse de Truc. (modifier l'adresse de Truc imposerait donc de modifier plusieurs cases. Il faut donc éclater la table en deux relations :
• COMMANDE(Article, Quantité, Prix, Fournisseur)Quantité et Prix sont des attributs de l’association entre une entité Article et une entité Fournisseur• FOURNISSEUR(Fournisseur, Adresse du fournisseur)
De cette manière, si l'adresse du fournisseur change, on fera la mise à jour en modifiant une case seulement !
COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre – 2 octobre 2001
23
Exercice – Troisième forme normale
Exercice :
Soit la relation FOURNISSEUR (Fournisseur, Rue, Ville, Code Postal)1 - Définir la clé primaire de cette relation2 - Cette relation est elle en 3NF ? Pourquoi ?3 – Si non, quelle modification du modèle de données faut-il envisager?
Solution :Il existe une dépendance fonctionnelle ente l’attribut ville et l’attribut code postal: On peut retrouver une ville par la connaissance du code postal
DF CodePostal-> Ville
VILLE (CodePostal, Nom)FOURNISSEUR (Fournisseur, Rue, CodePostal)L’attribut CodePostal de la relation FOURNISSEUR est un clé étrangère
Exercice :On vous donne un schémas E/A ci-dessous représentant des visites dans un centre médical. Construire le schéma relationnel correspondant. Indiquez précisément :
• La clé primaire. • Les clés étrangères. • Les contraintes éventuelles.
Exercice 1 Modèle Relationnel
Solution:• Médicament (Code, Libellé)• Consultation (ID-consultation, Matricule, NO-SS, Date).
Matricule et NO-SS sont les clés étrangères.• Prescription (Code-médicament, ID-consultation, Nb-prises) • Médecin (Matricule, Nom). • Patient (NO-SS, Nom).
Les attributs entrant dans la composition de la clé primaire sont indiqués en caractères gras et soulignés
COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre – 2 octobre 2001
24
ExerciceReprésenter le diagramme Entité-Relation ci-dessous dans le modèle relationnel.
SolutionPOLICES(#P, BENEFICIAIRE, QUANTITE, #EMP) #EMP est une clé étrangèreEMPLOYE(#EMP, NOM, SALAIRE, #EMP_D)#EMP_D est une clé étrangèreCOURTIER(#EMP, STATUT) Les attributs entrant dans la composition de la clé
primaire sont indiqués en caractères gras et soulignés
Exercice 2 Modèle Relationnel
Exemple de relation binaire
Exercice 3 Modèle Relationnel
Base de données Campagnes de Chalutage ExpérimentalSchémas des relations
ExerciceReprésenter dans le modèle relationnel le diagramme Entité-Relation “campagnes de chalutage” déjà utilisé.
•Campagne (#CodeCampagne, Date 1ère Station, Date dernière Station, Saison, #CodeBateau)
•Bateau (#CodeBateau, NomBateau) peut aussi être intégré à la table Campagne
•Système Stratification(#CodeSystèmeStratification, Nom, Description)
•Strate (#CodeSystèmeStratification, #CodeStrate, Secteur, IntervalleBathymétrie))
•Station (#Code Campagne, #CodeStation, Date, HeureDébut, HeureFin, PositionDébut, PositionFin, EtatMer, PoidCapturé, NombreEspèces, #CodeEngin)
•Engin de pêche (#CodeEngin, NomEngin) peut aussi être intégré à la table Station
•Espece (#Genre, #Espèce, Famille)
•Association CaptureEspece (#CodeCampagne, #CodeStation, #Genre, #Espèce, PoidsCapturé)
Solution