Formation SGBD - Modèle de données Relationnel

25
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 Formation Systè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.

Transcript of Formation SGBD - Modèle de données Relationnel

Page 1: Formation SGBD - Modèle de données Relationnel

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.

Page 2: Formation SGBD - Modèle de données Relationnel

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

Page 3: Formation SGBD - Modèle de données Relationnel

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.

Page 4: Formation SGBD - Modèle de données Relationnel

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

Page 5: Formation SGBD - Modèle de données Relationnel

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)

Page 6: Formation SGBD - Modèle de données Relationnel

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

Page 7: Formation SGBD - Modèle de données Relationnel

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

Page 8: Formation SGBD - Modèle de données Relationnel

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

Page 9: Formation SGBD - Modèle de données Relationnel

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

Page 10: Formation SGBD - Modèle de données Relationnel

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

Page 11: Formation SGBD - Modèle de données Relationnel

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)

Page 12: Formation SGBD - Modèle de données Relationnel

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)

Page 13: Formation SGBD - Modèle de données Relationnel

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 ?

Page 14: Formation SGBD - Modèle de données Relationnel

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

Page 15: Formation SGBD - Modèle de données Relationnel

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

Page 16: Formation SGBD - Modèle de données Relationnel

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

Page 17: Formation SGBD - Modèle de données Relationnel

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)

Page 18: Formation SGBD - Modèle de données Relationnel

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

Page 19: Formation SGBD - Modèle de données Relationnel

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

Page 20: Formation SGBD - Modèle de données Relationnel

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

Page 21: Formation SGBD - Modèle de données Relationnel

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

Page 22: Formation SGBD - Modèle de données Relationnel

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 :

Page 23: Formation SGBD - Modèle de données Relationnel

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 !

Page 24: Formation SGBD - Modèle de données Relationnel

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

Page 25: Formation SGBD - Modèle de données Relationnel

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