Beruflich Dokumente
Kultur Dokumente
Ce cours est conu pour ceux qui souhaitent s'initier rapidement la conception d'une base de donnes relationnelle l'aide de la mthode d'analyse MERISE. Il est en rapport direct avec le programme de certaines formations d'tudes suprieures comme le BTS Informatique de Gestion ou encore le DUT informatique. Vous pouvez commenter l'article en suivant ce lien :
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
I - MERISE au service des systmes d'information....................................................................................................3 I-A - Le systme d'information............................................................................................................................... 3 I-B - MERISE..........................................................................................................................................................3 II - Modlisation d'une base de donnes au niveau conceptuel.................................................................................3 II-A - Les rgles de gestion mtiers...................................................................................................................... 4 II-B - Le dictionnaire des donnes.........................................................................................................................4 II-C - Les dpendances fonctionnelles.................................................................................................................. 7 II-D - Le Modle Conceptuel de Donnes (MCD)................................................................................................. 8 II-D-1 - Les entits............................................................................................................................................ 8 II-D-2 - Les associations...................................................................................................................................9 II-D-3 - laboration du MCD...........................................................................................................................10 III - Modlisation d'une base de donnes au niveau logique et passage au SQL.................................................... 12 III-A - Le passage du MCD au MLD et SQL....................................................................................................... 12 III-A-1 - Les relations...................................................................................................................................... 12 III-A-2 - Rgles de conversion........................................................................................................................13 III-A-2-a - Rgle 1 - conversion d'une entit.............................................................................................13 III-A-2-b - Rgle 2 - conversion d'associations n'ayant que des cardinalits de type 0/1,N......................13 III-A-2-c - Rgle 3 - conversion des associations ayant au moins une cardinalit de type 1,1................. 14 III-A-2-d - Rgle 4 - conversion des associations ayant au moins une cardinalit de type 0,1 (et dont les autres cardinalits sont de type 0,1/N)..................................................................................................... 15 III-A-3 - laboration du MLD et passage au SQL.......................................................................................... 16 III-B - Rgles de vrification des niveaux de normalisation................................................................................ 18 III-C - Cas particuliers.......................................................................................................................................... 18 III-C-1 - Les associations rflexives............................................................................................................... 18 III-C-2 - Rgle de conversion exceptionnelle pour certaines entits simples.................................................20 IV - Les extensions apportes par MERISE II.......................................................................................................... 20 IV-A - L'identification relative................................................................................................................................20 IV-B - L'hritage et ses limites.............................................................................................................................21 IV-B-1 - L'hritage par disjonction (ou exclusion).......................................................................................... 23 IV-B-2 - L'hritage par couverture (ou totalit)...............................................................................................24 IV-B-3 - L'hritage par partition (totalit et exclusion).................................................................................... 25 IV-B-4 - Passage au niveau relationnel et limites.......................................................................................... 25 IV-C - Les contraintes entre associations............................................................................................................26 IV-C-1 - La contrainte d'inclusion................................................................................................................... 26 IV-C-2 - La contrainte d'exclusion.................................................................................................................. 27 IV-C-3 - La contrainte de totalit.................................................................................................................... 27 IV-C-4 - La contrainte d'galit.......................................................................................................................27 IV-C-5 - Combinaison entre contraintes......................................................................................................... 28 IV-D - Les CIF (contraintes d'intgrits fonctionnelles) et agrgations................................................................28 V - Conclusion........................................................................................................................................................... 30 VI - Remerciements................................................................................................................................................... 30
-2Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
Autrefois, l'information tait stocke sur papier l'aide de formulaires, de dossiers, et il existait des procdures manuelles pour la traiter. Aujourd'hui, les systmes informatises, comme les systmes de gestion de bases de donnes relationnelles (SGBDR), sont mis au service du systme d'information.
I-B - MERISE
MERISE est une mthode franaise ne dans les annes 70, dveloppe initialement par Hubert Tardieu. Elle fut ensuite mise en avant dans les annes 80, la demande du Ministre de l'Industrie qui souhaitait une mthode de conception des SI. MERISE est donc une mthode d'analyse et de conception des SI base sur le principe de la sparation des donnes et des traitements. Elle possde un certain nombre de modles (ou schmas) qui sont rpartis sur 3 niveaux : Le niveau conceptuel, Le niveau logique ou organisationnel, Le niveau physique.
Dans ce cours, nous ne nous intresserons qu' certains schmas permettant la conception d'une base de donnes relationnelle puis sa ralisation sur un SGBDR.
-3Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
Ces rgles vous sont parfois donnes mais vous pouvez tre amen les tablir vous-mme dans deux cas : Vous tes la fois matrise d'uvre (MOE) et matrise d'ouvrage (MOA), et vous dveloppez une application pour votre compte et/ou selon vos propres directives. Ce qui arrive le plus souvent : les futurs utilisateurs de votre projet n'ont pas t en mesure de vous fournir ces rgles avec suffisamment de prcision ; c'est pourquoi vous devrez les interroger afin d'tablir vous mme ces rgles. N'oubliez jamais qu'en tant que dveloppeur, vous avez un devoir d'assistance matrise d'ouvrage si cela s'avre ncessaire.
-4Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
Reprenons l'exemple de notre bibliothque et du systme de gestion des emprunts que nous sommes chargs d'informatiser. Aprs l'tude des rgles de gestion, nous pouvons tablir le dictionnaire des donnes suivant : Code mnmonique id_i Dsignation Type N A A AN A AN AN AN 30 30 50 50 5 15 15 Taille Remarque
Identifiant numrique d'un inscrit nom_i Nom d'un inscrit prenom_i Prnom d'un inscrit rue_i Rue o habite un inscrit ville_i Ville o habite un inscrit cp_i Code postal d'un inscrit tel_i Numro de tlphone fixe d'un inscrit tel_port_i Numro de tlphone portable d'un inscrit email_i Adresse e-mail d'un inscrit date_naissance_i Date de naissance d'un inscrit id_l Identifiant numrique d'un livre titre_l Titre d'un livre annee_l Anne de parution d'un livre resume_l Rsum d'un livre ref_e Code de rfrence d'un exemplaire d'un livre
AN Date N AN N AN AN
-5Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
id_t
Identifiant numrique d'un type de livre libelle_t Libell d'un type de livre id_ed Identifiant numrique d'une dition de livre nom_ed Nom d'une dition de livre id_a Identifiant numrique d'un auteur nom_a Nom d'un auteur prenom_a Prnom d'un auteur date_naissance_aDate de naissance d'un auteur id_p Identifiant numrique d'un pays nom_p Nom d'un pays id_em Identifiant numrique d'un emprunt date_em Date de l'emprunt delais_em Dlai autoris lors de l'emprunt du livre . Remarques :
N AN N AN N A A Date N A N Date N 3 50 30 30 30 6 30
Au format AAAAJJ-MM
Les donnes qui figurent dans le MCD (et donc dans le dictionnaire des donnes) doivent tre, dans la plupart des cas, lmentaires : Elles ne doivent pas tre calcules : les donnes calcules doivent tre obtenues, par le calcul, partir de donnes lmentaires qui, elles, sont conserves en base. Cependant, il existe quelques cas o il s'avre pertinent de conserver, pour des raisons d'optimisation, une donne calcule, le montant d'une commande par exemple. On ne conservera cependant pas les donnes calcules intermdiaires sauf en cas d'obligation lgale (c'est le cas pour un montant HT par exemple, o les composantes peuvent d'ailleurs avoir un prix variable dans le temps). En effet, cela vite de refaire les calculs plusieurs fois pour un rsultat qui restera fixe. Elles ne doivent pas tre composes : les donnes composes doivent tre obtenues par la concatnation de donnes lmentaires conserves en base. Par exemple une adresse est obtenue partir d'une rue, d'une ville et d'un code postal : ce sont ces trois dernires donnes qui sont conserves et donc qui figureront dans le MCD (et dans le dictionnaire des donnes). Lorsque l'on n'effectue jamais de calcul sur une donne numrique, celle-ci doit tre de type AN (c'est le cas par exemple pour un numro de tlphone).
-6Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
Remarque : Une DF doit tre : lmentaire : C'est l'intgralit de la source qui doit dterminer le but d'une DF. Par exemple si P1 P3 alors P1,P2 P3 n'est pas lmentaire. directe : La DF ne doit pas tre obtenue par transitivit. Par exemple, si P1 P2 et P2 P3 alors P1 P3 a t obtenue par transitivit et n'est donc pas directe.
Conclusion : Les DF qui existent entre les donnes sont parfois videntes et ne ncessitent pas toujours une modlisation mais celle-ci peut s'avrer utile car elle permet, entre autres, de distinguer les futures entits du MCD et leur identifiants.
-7Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
Ainsi, si on reprend notre dictionnaire de donnes prcdent, on schmatise par exemple une entit Auteur comme ceci :
partir de cette entit, on peut retrouver la rgle de gestion suivante : un auteur est identifi par un numro unique (id_a) et est caractris par un nom, un prnom et une date de naissance. Une entit peut n'avoir aucune, une ou plusieurs occurrences. Pour illustrer ce terme d'occurrence qui a dj t utilis plusieurs fois, voici un exemple de table d'occurrences de l'entit Auteur : id_a nom_a Hugo Rimbaud de Maupassant prenom_a Victor Arthur Guy date_naissance_a 1802-02-26 1854-10-20 1850-08-05
1 2 3
Cette table est compose de trois occurrences de l'entit Auteur . Remarques : Les occurrences sont parfois appels tuples . Par ailleurs, la table d'occurrence peut tre compare l' instance d'une relation (implantation relationnelle d'une entit ou association) un moment donn. Nous reviendrons sur cette notion de relation dans la partie III. Au niveau conceptuel, on devrait plutt parler d' entits-types , les entits tant en fait des instances d'entits-types. Par soucis de simplicit, on gardera les termes d'entits et associations tout au long du cours.
-8Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
Gnralement le nom de l'association est un verbe dfinissant le lien entre les entits qui sont relies par cette dernire. Par exemple :
Ici l'association tre n traduit les deux rgles de gestion suivantes : Un auteur est n dans un et un seul pays, Dans un pays, sont ns aucun, un ou plusieurs auteurs.
Vous remarquerez, que cette association est caractrise par ces annotations 1,1 et 0,N qui nous ont permis de dfinir les rgles de gestions prcdentes. Ces annotations sont appeles les cardinalits . Une cardinalit est dfinie comme ceci : minimum, maximum Les cardinalits les plus rpandues sont les suivantes : 0,N ; 1,N ; 0,1 ; 1,1 . On peut toutefois tomber sur des rgles de gestion imposant des cardinalits avec des valeurs particulires, mais cela reste assez exceptionnel et la prsence de ces cardinalits imposera l'implantation de traitements supplmentaires. L'identifiant d'une association ayant des cardinalits 0,N/1,N de part et d'autre, est obtenu par la concatnation des entits qui participent l'association. Imaginons l'association suivante :
-9Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
Ici un auteur rdige au moins un ou plusieurs livres et pour chaque livre, on connat le nombre de chapitres rdigs par l'auteur (on connat aussi le nombre total de chapitres pour chaque livre). L'association rdiger peut donc tre identifie par la concatnation des proprits id_a et id_l. Ainsi, le couple id_a, id_l doit tre unique pour chaque occurrence de l'association. On peut galement dfinir la dpendance fonctionnelle suivante : id_a, id_l nb_chapitres On dit que nb_chapitres (nombre de chapitres rdigs par un auteur, pour un livre) est une donne porte par l'association rdiger. Cette association est donc une association porteuse de donnes. Pour une association ayant au moins une cardinalit de type 0,1 ou 1,1 considrons dans un premier temps que cette dernire ne peut tre porteuse de donnes et qu'elle est identifie par l'identifiant de l'entit porteuse de la cardinalit 0,1 ou 1,1. Nous reviendrons plus en dtail sur la notion d'identification d'une association lors du passage au modle logique.
- 10 Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
Remarques : Souvent, pour un mme ensemble de rgles de gestion, plusieurs solutions sont possibles au niveau conceptuel. Par exemple, rien ne nous obligeait ici crer une entit Type . Une simple donne porte par l'entit Livre aurait pu convenir galement. Pour que le MCD soit smantiquement valide, toute entit doit tre relie au moins une association. Les entits et les proprits peuvent tre historises. Dans ce cas on met un (H) la fin du nom de l'entit ou de la proprit que l'on souhaite historiser (cela permet de prciser que l'on archivera toutes les modifications sur une entit ou une proprit donne). Cela doit galement rpondre une rgle de gestion. Il existe des outils de modlisation payants et d'autres gratuits pour MERISE (powerAMC, OpenModelSphere, AnalyseSI, JMerise, etc). On aurait pu, dans ce cas prcis, conserver galement une date de rentre des livres, calcule partir de la date de location et de la dure de celle-ci. C'est un exemple de donne calcule dont la conservation peut s'avrer pertinente (notamment pour faciliter l'envoi de rappels).
- 11 Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
Il existe un autre type de clef appel clef trangre . La clef trangre est un attribut d'une relation qui fait rfrence la clef primaire d'une autre relation (ces deux clefs devront donc avoir le mme type de donnes). Compltons notre premier exemple avec une autre relation o apparat une clef trangre : Edition ( id_ed , nom_ed) Exemplaire ( ref_e , id_ed #) Lgende : x : relation x : clef primaire x # : clef trangre Remarques : Au niveau relationnel, on devrait plutt parler de clef candidate qui permet d'identifier sans ambigut une occurrence de la relation pour les clefs primaires. De mme, on devrait dsigner une clef trangre par
- 12 Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
une contrainte d'inclusion vers une clef candidate. Par souci de simplicit, on gardera les termes de clefs primaires et trangres. Par convention, on fait prcder ou suivre la clef trangre du symbole #. Ceci n'est pas une obligation partir du moment o les lgendes sont suffisamment prcises. Ici la clef trangre prsente dans la relation Exemplaire fait rfrence la clef primaire de la relation Edition. Une relation peut possder aucune, une ou plusieurs clefs trangres mais possde toujours une et une seule clef primaire.
Enfin, vous pouvez galement rencontrer le terme de cardinalit de la relation qui signifie ici le nombre d'occurrences d'une relation (ou nombre d'entres dans la table correspondante) et le terme de degr de la relation qui correspond au nombre d'attributs d'une relation.
III-A-2-b - Rgle 2 - conversion d'associations n'ayant que des cardinalits de type 0/1,N
Une association ayant des cardinalits 0,N ou 1,N de part et d'autre devient une relation dont la clef est constitue des identifiants des entits relies par cette association. Ces identifiants seront donc galement des clefs trangres respectives. On parle de relations associatives . Les cardinalits plus restrictives (comme 2,3 ; 1,7 ; ...) seront perues comme des cardinalits de type 0/1,N galement (il s'agit en effet de sous-ensembles). Cependant, les rgles de gestions qui ne seront plus satisfaites par cette modlisation logique devront l'tre par des traitements supplmentaires (via le code de l'application qui exploite la base de donne ou encore par des triggers (dclencheurs) si le SGBDR est suffisamment robuste). Voici un exemple de relation associative issu de l'association rdiger de notre MCD : Rediger ( id_a Lgende : x : relation x : clef primaire x # : clef trangre Dans le cas d'associations porteuses de donnes, les donnes portes deviennent des attributs de la relation correspondante. Si l'on reprend cet exemple : #, id_l # )
- 13 Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
L'association rdiger devrait maintenant tre traduite comme ceci : Rediger ( id_a #, Lgende : x : relation x : clef primaire x # : clef trangre id_l # , nb_chapitres)
III-A-2-c - Rgle 3 - conversion des associations ayant au moins une cardinalit de type 1,1
Plusieurs possibilits s'offrent nous pour ce cas de figure. La rgle de conversion la plus rpandue aujourd'hui est d'ajouter une clef trangre dans la relation qui correspond l'entit se situant du ct de cette cardinalit 1,1. Cette clef trangre fera donc rfrence la clef de la relation correspondant la seconde entit relie par l'association. Prenons un exemple issu de l'association tre originaire de et des entits Auteur et Pays : Pays ( nom_p ) Auteur ( id_a , nom_a, prenom_a, date_naissance_a, nom_p #) Lgende : x : relation x : clef primaire x # : clef trangre Lorsque l'on applique cette rgle de conversion, deux restrictions s'imposent : L'association ne peut tre porteuse de donnes. Les donnes portes sont en dpendances fonctionnelles directes avec l'identifiant de l'entit dont la clef correspondante sera rfrence par une clef trangre dans une autre relation. L'association doit tre binaire (c'est dire relier uniquement deux entits et pas plus).
Lorsque deux entits sont toutes deux relies avec une cardinalit 1,1 par une mme association, on peut placer la clef trangre de n'importe quel ct. Par convention, on choisit de la placer du ct de la relation correspondant l'entit ayant le plus de liaisons avec les autres. Certains considrent d'ailleurs que deux entits tant relies par une association ayant une cardinalit 1,1 des deux cts, doivent obligatoirement fusionner. Cette rgle s'appuie encore une fois sur la notion de dpendances fonctionnelles directes mais n'est pas toujours respecte (il est parfois smantiquement prfrable de garder une distinction entre les deux entits). Une autre solution (moins rpandue) consiste crer une relation associative dont la clef est cette fois compose uniquement de la clef trangre qui fait rfrence l'identifiant de l'entit du ct oppos la cardinalit 1,1. Si on reprend le mme exemple, voici ce que l'on devrait obtenir : Pays ( nom_p ) Auteur ( id_a , nom_a, prenom_a, date_naissance_a) EtreOriginaireDe ( id_a # , nom_p #)
- 14 Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
Lgende : x : relation x : clef primaire x # : clef trangre Dans ce cas, l'association peut tre porteuse de donnes. Ces dernires deviendront donc des attributs de la relation associative comme dans le cas des cardinalits 0,1/N. Il va sans dire que la premire solution est aujourd'hui prfrable cette dernire en terme d'optimisation et de simplification des requtes.
III-A-2-d - Rgle 4 - conversion des associations ayant au moins une cardinalit de type 0,1 (et dont les autres cardinalits sont de type 0,1/N)
De mme que pour les cardinalits 1,1, une association ayant une cardinalit 0,1 doit tre binaire, et les deux mmes possibilits s'offrent nous : Crer la clef trangre dans la relation correspondant l'entit du ct de la cardinalit 0,1. Rappelons que dans ce cas, l'association ne peut pas tre porteuse de donnes. Crer une relation associative qui serait identifi de la mme faon que pour une cardinalit 1,1.
Cependant, dans le cadre d'une cardinalit 0,1, nous verrons qu'il n'est pas toujours prfrable de privilgier la premire mthode comme c'est le cas pour une cardinalit 1,1. Imaginons par exemple qu'un livre puisse appartenir 0 ou 1 catgories, on obtient le MCD suivant :
Certains diront que toutes les associations binaires de type pre-fils ayant des cardinalits 1,N/0,N - 1,1/0,1 sont caractrises par l'existence d'une dpendance fonctionnelle entre l'identifiant de l'entit pre (ici id_cat) et de l'entit fils (ici id_l). Cette dpendance fonctionnelle se schmatiserait ainsi : id_l id_cat Dans ce cas, il apparat logique de traduire le MCD de cette faon (premire mthode) : Categorie ( id_cat , libelle_cat) Livre (id _l , titre_l, annee_l, resume_l, id_cat #) Lgende : x : relation x : clef primaire x # : clef trangre Cependant mme si les SGBD le permettent (avec la valeur NULL par dfaut), il n'est normalement pas permis d'avoir une clef trangre sans valeur pour laquelle on retrouverait l'occurrence dans la relation sur laquelle on fait rfrence. C'est pourquoi d'autres pensent (avec raison) qu'il vaut mieux crer une relation associative de cette manire (seconde mthode) :
- 15 Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
Categorie ( id_cat , libelle_cat) Livre ( id_l , titre_l, annee_l, resume_l) Appartenir ( id_l #, id_cat #) Lgende : x : relation x : clef primaire x # : clef trangre La pertinence de l'une ou l'autre mthode varie en fonction du nombre d'occurrences caractrises par la cardinalit 0 ou la cardinalit 1. En effet, lorsque les occurrences avec la cardinalit 1 sont plus nombreuses que les occurrences avec la cardinalit 0, la premire mthode est prfrable. Dans le cas contraire, c'est la seconde mthode qui est la plus adapte. Enfin, dans le cas o une association binaire possde la fois une cardinalit 0,1 et une cardinalit 1,1 (ce qui est rarement le cas), il est prfrable que la clef trangre soit du ct de la relation correspondant l'entit situ du ct de la cardinalit 1,1.
- 16 Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN PRIMARY KEY (id_a)
Erielle
);
CREATE TABLE TypeLivre ( id_t INT NOT NULL, libelle_t VARCHAR (30), PRIMARY KEY (id_t) ); CREATE TABLE Livre ( id_l INT NOT NULL, titre_l VARCHAR (254), annee_l VARCHAR (4), resume_l TEXT, id_t INT NOT NULL, FOREIGN KEY (id_t) REFERENCES TypeLivre(id_t), PRIMARY KEY (id_l) ); CREATE TABLE Rediger ( id_a INT NOT NULL, id_l INT NOT NULL, FOREIGN KEY (id_a) REFERENCES Auteur(id_a), FOREIGN KEY (id_l) REFERENCES Livre (id_l), PRIMARY KEY (id_a, id_l) ); CREATE TABLE Edition ( id_ed INT NOT NULL, nom_ed VARCHAR (254), PRIMARY KEY (id_ed) ); CREATE TABLE Exemplaire ( ref_e VARCHAR(254) NOT NULL, id_ed INT NOT NULL, id_l INT NOT NULL, FOREIGN KEY (id_ed) REFERENCES Edition (id_ed), FOREIGN KEY (id_l) REFERENCES Livre(id_l), PRIMARY KEY (ref_e) ); CREATE TABLE Inscrit ( id_i INT NOT NULL, nom_i VARCHAR (30), prenom_i VARCHAR (30), date_naissance_i DATE, rue_i VARCHAR(50), ville_i VARCHAR(50), cp_i VARCHAR (5), tel_i VARCHAR(15), tel_portable_i VARCHAR(15) , email_i VARCHAR(100), PRIMARY KEY (id_i) ); CREATE TABLE Emprunt ( id_em INT NOT NULL, date_em DATE, delais_em INT DEFAULT 0, id_i INT NOT NULL, ref_e VARCHAR (254) NOT NULL, FOREIGN KEY (id_i) REFERENCES Inscrit(id_i), FOREIGN KEY (ref_e) REFERENCES Exemplaire(ref_e), PRIMARY KEY (id_em) );
Remarque : Il est possible de ne pas avoir grer l'incrmentation des identifiants par soi-mme lors des INSERT avec la plupart des SGBD. Exemple d'auto-incrmentation sous MySQL :
- 17 Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN CREATE TABLE TypeLivre ( id_t INT AUTO_INCREMENT, libelle_t VARCHAR (30), PRIMARY KEY (id_t) );
Erielle
Sous PostgreSQL :
CREATE TABLE TypeLivre ( id_t SERIAL, libelle_t VARCHAR (30), PRIMARY KEY (id_t) );
SERIAL crera implicitement une squence qui s'incrmente avec un pas de 1. Sous Oracle, il faudrait crer soimme cette squence.
- 18 Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
Dans ce cas, c'est la mme rgle qui s'applique pour la conversion d'une association ayant des cardinalits de type 0/1,N de part et d'autres. Il faudra cependant diffrencier les noms des clefs trangres de la table associative correspondantes tout en rfrenant la mme clef primaire : Inscrit ( id_i , nom_i, prenom_i, date_naissance_i, rue_i, ville_i, cp_i, email_i, tel_i, tel_portable_i) EtreMarie ( id_epoux #, id_epouse # , date_mariage_i) Lgende : x : relation x : clef primaire x # : clef trangre On aurait pu choisir des cardinalits 1,1 et mettre la date de mariage comme donne de l'entit Inscrit. Ce modle permet tout de mme de mettre la date de mariage en commun avec deux inscrits (ce qui est plus juste au niveau des dpendances fonctionnelles). Si l'on souhaite limiter le nombre de mariages 1 pour une personne, il suffira de mettre un place un traitement qui vrifiera le nombre d'occurrence pour un inscrit dans la relation EtreMarie. Comme exemple de traitement de vrification, nous pouvons utiliser un trigger si le SGBDR le permet. Voici un exemple de trigger avec une procdure stocke vrifiant la prsence d'une occurrence pour un identifiant donne dans la table EtreMarie :
/* Procdure stocke se chargeant de la vrification */ CREATE OR REPLACE FUNCTION verif_mariage () RETURNS TRIGGER AS $$ DECLARE nb INT; BEGIN SELECT INTO nb COUNT(*) FROM EtreMarie WHERE id_epoux = NEW.epoux OR id_epouse = NEW.id_epouse; IF (nb >= 1) THEN /* Le RAISE EXCEPTION bloquera la suite des traitements dont L'INSERT */ RAISE EXCEPTION 'Mariage impossible !'; END IF; RETURN NEW; END; $$ LANGUAGE plpgsql; /* Trigger qui se dclenchera avant chaque INSERT dans la table EtreMarie */ CREATE TRIGGER t_verif_mariage BEFORE INSERT ON auteur FOR EACH ROW EXECUTE PROCEDURE verif_mariage();
Pour cet exemple, nous avons choisi le langage PL/PgSQL qui est propre au SGBDR PostgreSQL. Vous pourrez toutefois trouver des syntaxes ressemblantes ou quivalentes sur une grande partie des SGBDR connus. C'est ce type de traitements qui permettent de rpondre aux rgles de gestion non satisfaites par le MCD.
- 19 Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
Ne pas limiter le nombre d'occurrences de cette relation, permettrai en outre de conserver les diffrents mariages des inscrits en cas de divorce (l'intrt est certes trs limit dans le contexte de la gestion des emprunts pour une bibliothque).
La date de rencontre ne doit pas tre une simple donne porte par l'association car cela limiterait le nombre de rencontre d'un inscrit avec un auteur 1 (la relation correspondant l'association aurait dans ce cas un couple identifiant unique qui imposerait cette restriction). Le fait de crer une relation Date aurait pour incidence de crer de la redondance inutile, c'est pourquoi, il est recommand dans ce cas de figure, de passer au niveau logique de cette faon : Inscrit ( id_i , nom_i, prenom_i, date_naissance_i, rue_i, ville_i, cp_i, email_i, tel_i, tel_portable_i) Auteur ( id_a , nom_a, prenom_a, date_naissance_a, nom_p #) Rencontrer ( id_a #, id_i #, date_rencontre ) Lgende : x : relation x : clef primaire x # : clef trangre
- 20 Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
On identifie un immeuble par son numro de rue, or il faut connatre le nom ou l'identifiant de la rue pour trouver l'immeuble (14 rue du gnral Leclerc, ...). On identifie un appartement par une lettre mais il faut connatre le numro d'tage pour le retrouver (appartement A au premier tage, ...). Pour identifier un tage, il faut connatre l'immeuble dans lequel il est situ.
Les parenthses autour des cardinalits signifient que les entits du ct de ces cardinalits seront identifies par la concatnation de leurs identifiants (qui ne suffisent pas les identifier de manire unique) avec l'identifiant de l'entit oppose. Ainsi on obtient au niveau relationnel : Rue (code_rue, nom_rue) Immeuble (num_immeuble, code_rue#, nb_etages_total) Etage (num_etage, num_immeuble#, code_rue#, nb_appartements_tot) Appartement (lettre_appartement, num_etage#, num_immeuble#, code_rue#, nb_pieces_total) Lgende : x : relation x : clef primaire x # : clef trangre
- 21 Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
Dans cette partie, les types des proprits apparaissent (ceci est d au logiciel utilis qui est plus adapt pour reprsenter l'hritage). Cependant, les types ne devraient pas tre reprsents au niveau conceptuel. Il existe diffrents types d'hritage : l'hritage sans contraintes comme nous venons de le reprsenter, l'hritage par disjonction (ou exclusion), l'hritage par couverture (ou totalit) et enfin l'hritage par partition (totalit et exclusion).
- 22 Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
Toutes les occurrences du sur-type ne peuvent se trouver que dans aucun ou un seul sous-type. Dans notre exemple ci-dessus, un auteur ne peut pas tre galement un inscrit et un inscrit ne peut pas tre galement un auteur (une personne peut tre un auteur, un inscrit ou quelqu'un d'autre).
- 23 Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
Toutes les occurrences du sur-type se trouvent dans au moins un des sous-type existants. Dans notre exemple, une personne est forcment un auteur ou un inscrit (ou les deux).
- 24 Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
Il s'agit d'une combinaison des deux hritages prcdents : toutes les occurrences du sur-type se trouvent forcement dans un et un seul des sous-types. Une personne est soit un auteur, soit un inscrit. Cette contrainte est parfois note +.
- 25 Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
dans l'entit mre. Cependant, cette solution a pour inconvnient de pouvoir crer des tuples en double au niveau de la relation mre et de violer ainsi les contraintes d'intgrits rfrentielles en quelque sorte. Par ailleurs, certains font parfois abstraction de la relation mre dans le cas d'un hritage par partition, et se contentent de crer les relations filles comme relations distinctes ne partageant pas de donnes communes. Exemple : Auteur ( id_a , nom_a, prenom_a, date_naissance_a) Inscrit ( id_i , nom_i, prenom_i, date_naissance_i, rue_i, ville_i, cp_i, email_i, tel_i, tel_portable_i) Lgende : x : relation x : clef primaire x # : clef trangre Cette solution est galement acceptable mais peut nous amener nous interroger sur la pertinence de l'hritage tant donn que ce dernier n'est pas implant au niveau relationnel. Cependant, la contrainte de partition reste une rgle de gestion satisfaire d'o l'importance de la modlisation de celle-ci au niveau conceptuel. Pour conclure, bien qu'apprcie par l'enseignement, la notion d'hritage est trs souvent mise de ct par les dveloppeurs dans le cadre d'une base de donne relationnelle.
Cela signifie que si un couple livre-auteur est prsent dans l'association presenter, alors il doit obligatoirement tre prsent dans l'association rediger. Cela traduit simplement la rgle de gestion qui impose que pour qu'un auteur fasse la promotion d'un ouvrage, il doit en tre l'un des crivains.
- 26 Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
Dans cet exemple, un livre ne peut pas la fois tre achet chez un fournisseur et tre imprim par un service d'impression interne.
Dans cet exemple, un livre est toujours imprim dans un service interne ou achet par un fournisseur.
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
Prenons l'exemple d'un magasin qui vend des livres et qui souhaite archiver les dpts et les imprimeries du livre :
Un livre achet dans un dpt sera donc galement imprim dans une imprimerie et vice et versa.
Pour cet exemple, le livre sera soit imprim dans un service interne, soit achet.
- 28 Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
Cela se traduit par la dpendance fonctionnelle suivante : id_a, vdate id_l Ainsi, l'association presenter serait implante comme ceci au niveau relationnel : Presenter ( id_a Lgende : x : relation x : clef primaire x # : clef trangre #, vdate , id_l #)
L'identifiant du livre ne fait donc plus partie de la clef primaire afin de garder une dpendance fonctionnelle directe et lmentaire. Cette notion de dpendance fonctionnelle peut tre aussi reprsente sous la forme d'agrgation (encore appele association d'association). Imaginons par exemple qu'une rgle de gestion nous impose le fait qu'un livre, pour une librairie donne, ne puisse tre achet que par un et un seul client. La rgle de gestion serait ici implante par la dpendance fonctionnelle suivante : id_lib, ref_l id_c Cette DF pourrait trs bien faire l'objet d'une CIF au niveau conceptuel, o bien tre reprsente sous cette forme :
- 29 Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/
Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN
Erielle
Voici comment cela se traduirait au niveau relationnel : Librairie ( id_lib , rue_lib, ville_l, cp_l) Livre ( ref_l , titre_l, resume_l) Client ( id_c , nom_c, prenom_c) ProposerEnVente ( id_lib #, ref_l Lgende : x : relation x : clef primaire x # : clef trangre
# , id_c #)
On retrouve bien la mme implantation au niveau relationnel que l'on aurait eu pour une CIF.
V - Conclusion
Avec les diffrentes notions abordes dans ce cours et quelques connaissance en SQL, il vous est maintenant possible de concevoir et raliser des bases de donnes relationnelles. Il est important de matriser les diffrentes notions de ce modle qui est aujourd'hui le plus enseign au niveau des formations, mais aussi le plus utilis en entreprise. Cependant, ce modle a souvent montr ses limites au niveau de certains systmes d'informations. Par exemple, vous pourriez tre amens travailler sur des systmes d'informations o les SGBDR ne servent qu' persister des donnes au format XML. Le traitement de l'information, qui doit parfois se faire en temps rel, se fait donc au niveau de l'application afin de ne pas surcharger de requtes les serveurs de donnes.
VI - Remerciements
Je souhaite remercier alassanediakite, CinePhil, fsmrel, LittleWhite, et MacFly58 pour leur relecture technique et leurs conseils. Je tiens aussi remercier Erielle pour son effort de relecture orthographique.
- 30 Copyright 2012 Idriss NEUMANN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://ineumann.developpez.com/tutoriels/merise/initiation-merise/