initiation merise

Upload: bilal-mach

Post on 30-Oct-2015

81 views

Category:

Documents


2 download

DESCRIPTION

method meris

TRANSCRIPT

  • Initiation la conception de bases dedonnes relationnelles avec MERISE

    par Idriss NEUMANN

    Date de publication : 28 fvrier 2012

    Dernire mise jour : 17 octobre 2012

    Ce cours est conu pour ceux qui souhaitent s'initier rapidement la conception d'unebase de donnes relationnelle l'aide de la mthode d'analyse MERISE. Il est en rapportdirect avec le programme de certaines formations d'tudes suprieures comme le BTSInformatique 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

    - 2 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    I - MERISE au service des systmes d'information....................................................................................................3I-A - Le systme d'information............................................................................................................................... 3I-B - MERISE..........................................................................................................................................................3

    II - Modlisation d'une base de donnes au niveau conceptuel.................................................................................3II-A - Les rgles de gestion mtiers...................................................................................................................... 4II-B - Le dictionnaire des donnes.........................................................................................................................4II-C - Les dpendances fonctionnelles.................................................................................................................. 7II-D - Le Modle Conceptuel de Donnes (MCD)................................................................................................. 8

    II-D-1 - Les entits............................................................................................................................................ 8II-D-2 - Les associations...................................................................................................................................9II-D-3 - laboration du MCD...........................................................................................................................10

    III - Modlisation d'une base de donnes au niveau logique et passage au SQL....................................................12III-A - Le passage du MCD au MLD et SQL....................................................................................................... 12

    III-A-1 - Les relations...................................................................................................................................... 12III-A-2 - Rgles de conversion........................................................................................................................13

    III-A-2-a - Rgle 1 - conversion d'une entit.............................................................................................13III-A-2-b - Rgle 2 - conversion d'associations n'ayant que des cardinalits de type 0/1,N......................13III-A-2-c - Rgle 3 - conversion des associations ayant au moins une cardinalit de type 1,1................. 14III-A-2-d - Rgle 4 - conversion des associations ayant au moins une cardinalit de type 0,1 (et dont lesautres cardinalits sont de type 0,1/N)..................................................................................................... 15

    III-A-3 - laboration du MLD et passage au SQL.......................................................................................... 16III-B - Rgles de vrification des niveaux de normalisation................................................................................ 18III-C - Cas particuliers.......................................................................................................................................... 18

    III-C-1 - Les associations rflexives............................................................................................................... 18III-C-2 - Rgle de conversion exceptionnelle pour certaines entits simples.................................................20

    IV - Les extensions apportes par MERISE II..........................................................................................................20IV-A - L'identification relative................................................................................................................................20IV-B - L'hritage et ses limites.............................................................................................................................21

    IV-B-1 - L'hritage par disjonction (ou exclusion).......................................................................................... 23IV-B-2 - L'hritage par couverture (ou totalit)...............................................................................................24IV-B-3 - L'hritage par partition (totalit et exclusion)....................................................................................25IV-B-4 - Passage au niveau relationnel et limites.......................................................................................... 25

    IV-C - Les contraintes entre associations............................................................................................................26IV-C-1 - La contrainte d'inclusion................................................................................................................... 26IV-C-2 - La contrainte d'exclusion.................................................................................................................. 27IV-C-3 - La contrainte de totalit.................................................................................................................... 28IV-C-4 - La contrainte d'galit.......................................................................................................................28IV-C-5 - Combinaison entre contraintes......................................................................................................... 29

    IV-D - Les CIF (contraintes d'intgrits fonctionnelles) et agrgations................................................................30V - Conclusion........................................................................................................................................................... 31VI - Remerciements................................................................................................................................................... 31

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 3 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    I - MERISE au service des systmes d'information

    I-A - Le systme d'information

    Le systme d'information ou SI, peut tre dfini comme tant l'ensemble des moyens humains, matriels etimmatriels mis en uvre afin de grer l'information au sein d'une unit, une entreprise par exemple.

    Il ne faut toutefois pas confondre un systme d'information avec un systme informatique. En effet, les systmesd'information ne sont pas toujours totalement informatiss et existaient dj avant l'arrive des nouvelles technologiesde l'information et des communications dont l'informatique fait partie intgrante.

    Le SI possde 4 fonctions essentielles :

    La saisie ou collecte de l'information La mmorisation de l'information l'aide de fichier ou de base de donnes Le traitement de l'information afin de mieux l'exploiter (consultation, organisation, mise jour, calculs pour

    obtenir de nouvelles donnes, ...) La diffusion de l'information

    Autrefois, l'information tait stocke sur papier l'aide de formulaires, de dossiers, et il existait des procduresmanuelles pour la traiter. Aujourd'hui, les systmes informatises, comme les systmes de gestion de bases dedonnes 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 futensuite mise en avant dans les annes 80, la demande du Ministre de l'Industrie qui souhaitait une mthode deconception des SI.

    MERISE est donc une mthode d'analyse et de conception des SI base sur le principe de la sparation des donneset 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 donnesrelationnelle puis sa ralisation sur un SGBDR.

    II - Modlisation d'une base de donnes au niveau conceptuel

    Il s'agit de l'laboration du modle conceptuel des donnes (MCD) qui est une reprsentation graphique etstructure des informations mmorises par un SI. Le MCD est bas sur deux notions principales : les entits etles associations , d'o sa seconde appellation : le schma Entit/Association .

    L'laboration du MCD passe par les tapes suivantes :

    La mise en place de rgles de gestion (si celles-ci ne vous sont pas donnes), L'laboration du dictionnaire des donnes , La recherche des dpendances fonctionnelles entre ces donnes, L'laboration du MCD (cration des entits puis des associations puis ajout des cardinalits ).

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 4 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    II-A - Les rgles de gestion mtiers

    Avant de vous lancer dans la cration de vos tables (ou mme de vos entits et associations pour rester dans unvocabulaire conceptuel), il vous faut recueillir les besoins des futurs utilisateurs de votre application. Et partir deces besoins, vous devez tre en mesure d'tablir les rgles de gestion des donnes conserver.

    Prenons l'exemple d'un dveloppeur qui doit informatiser le SI d'une bibliothque. On lui fixe les rgles de gestionsuivantes :

    Pour chaque livre, on doit connatre le titre, l'anne de parution, un rsum et le type (roman, posie, sciencefiction, ...).

    Un livre peut tre rdig par aucun (dans le cas d'une uvre anonyme), un ou plusieurs auteurs dont onconnat le nom, le prnom, la date de naissance et le pays d'origine.

    Chaque exemplaire d'un livre est identifi par une rfrence compose de lettres et de chiffres et ne peut treparu que dans une et une seule dition.

    Un inscrit est identifi par un numro et on doit mmoriser son nom, prnom, adresse, tlphone et adressee-mail.

    Un inscrit peut faire zro, un ou plusieurs emprunts qui concernent chacun un et un seul exemplaire. Pourchaque emprunt, on connat la date et le dlai accord (en nombre de jours).

    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 applicationpour 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 vousfournir ces rgles avec suffisamment de prcision ; c'est pourquoi vous devrez les interroger afin d'tablirvous 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.

    II-B - Le dictionnaire des donnes

    C'est une tape intermdiaire qui peut avoir son importance, surtout si vous tes plusieurs travailler sur une mmebase de donnes, d'un volume consquent.

    Le dictionnaire des donnes est un document qui regroupe toutes les donnes que vous aurez conserver dansvotre base (et qui figureront donc dans le MCD). Pour chaque donne, il indique :

    Le code mnmonique : il s'agit d'un libell dsignant une donne (par exemple titre_l pour le titre d'unlivre)

    La dsignation : il s'agit d'une mention dcrivant ce quoi la donne correspond (par exemple titre dulivre)

    Le type de donne : A ou Alphabtique : lorsque la donne est uniquement compose de caractres alphabtiques (de 'A'

    'Z' et de 'a' 'z') N ou Numrique : lorsque la donne est compose uniquement de nombres (entiers ou rels) AN ou Alphanumrique : lorsque la donne peut tre compose la fois de caractres alphabtiques

    et numriques Date : lorsque la donne est une date (au format AAAA-MM-JJ) Boolen : Vrai ou Faux

    La taille : elle s'exprime en nombre de caractres ou de chiffres. Dans le cas d'une date au format AAAA-JJ-MM, on compte galement le nombre de caractres, soit 10 caractres. Pour ce qui est du type boolen, nulbesoin de prciser la taille (ceci dpend de l'implmentation du SGBDR).

    Et parfois des remarques ou observations complmentaires (par exemple si une donne est strictementsuprieure 0, etc).

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 5 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    Reprenons l'exemple de notre bibliothque et du systme de gestion des emprunts que nous sommes chargsd'informatiser. Aprs l'tude des rgles de gestion, nous pouvons tablir le dictionnaire des donnes suivant :

    Codemnmonique

    Dsignation Type Taille Remarque

    id_i Identifiantnumrique d'uninscrit

    N

    nom_i Nom d'un inscrit A 30 prenom_i Prnom d'un

    inscritA 30

    rue_i Rue o habite uninscrit

    AN 50

    ville_i Ville o habite uninscrit

    A 50

    cp_i Code postal d'uninscrit

    AN 5

    tel_i Numro detlphone fixed'un inscrit

    AN 15

    tel_port_i Numro detlphoneportable d'uninscrit

    AN 15

    email_i Adresse e-maild'un inscrit

    AN 100

    date_naissance_i Date denaissance d'uninscrit

    Date 10 Au format AAAA-JJ-MM

    id_l Identifiantnumrique d'unlivre

    N

    titre_l Titre d'un livre AN 50 annee_l Anne de

    parution d'unlivre

    N 4

    resume_l Rsum d'unlivre

    AN 1000

    ref_e Code derfrence d'unexemplaire d'unlivre

    AN 15 Cette rfrenceserviragalement

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 6 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    d'identifiant dansce systme

    id_t Identifiantnumrique d'untype de livre

    N

    libelle_t Libell d'un typede livre

    AN 30

    id_ed Identifiantnumrique d'unedition de livre

    N 6

    nom_ed Nom d'unedition de livre

    AN 30

    id_a Identifiantnumrique d'unauteur

    N

    nom_a Nom d'un auteur A 30 prenom_a Prnom d'un

    auteurA 30

    date_naissance_aDate denaissance d'unauteur

    Date Au format AAAA-JJ-MM

    id_p Identifiantnumrique d'unpays

    N

    nom_p Nom d'un pays A 50 id_em Identifiant

    numrique d'unemprunt

    N

    date_em Date del'emprunt

    Date Au format AAAA-JJ-MM

    delais_em Dlai autorislors de l'empruntdu livre

    N 3 S'exprime ennombre de jours

    .

    Remarques :

    Les donnes qui figurent dans le MCD (et donc dans le dictionnaire des donnes) doivent tre, dans laplupart 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 ils'avre pertinent de conserver, pour des raisons d'optimisation, une donne calcule, le montant d'unecommande par exemple. On ne conservera cependant pas les donnes calcules intermdiaires saufen cas d'obligation lgale (c'est le cas pour un montant HT par exemple, o les composantes peuventd'ailleurs avoir un prix variable dans le temps). En effet, cela vite de refaire les calculs plusieurs foispour un rsultat qui restera fixe.

    Elles ne doivent pas tre composes : les donnes composes doivent tre obtenues par laconcatnation 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 conserveset 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 caspar exemple pour un numro de tlphone).

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 7 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    II-C - Les dpendances fonctionnelles

    Soit deux proprits (ou donnes) P1 et P2. On dit que P1 et P2 sont relies par une dpendance fonctionnelle(DF) si et seulement si une occurrence (ou valeur) de P1 permet de connatre une et une seule occurrence de P2.

    Cette dpendance est reprsente comme ceci :

    P1 P2

    On dit que P1 est la source de la DF et que P2 en est le but .

    Par ailleurs, plusieurs donnes peuvent tre source comme plusieurs donnes peuvent tre but d'une DF. Exemples :

    P1,P2 P3P1 P2,P3P1, P2 P3,P4,P5

    En reprenant les donnes du dictionnaire prcdent, on peut tablir les DF suivantes :

    id_em date_em, delais_em, id_i, ref_eid_i nom_i, prenom_i, rue_i, ville_i, cp_i, tel_i, tel_port_i, email_i, date_naissance_iref_e id_lid_l titre_l, annee_l, resume_l, id_t, id_edid_t libelle_tid_ed nom_edid_a nom_a, prenom_a, date_naissance_a, nom_p

    On peut dduire les conclusions suivantes de ces DF :

    partir d'un numro d'emprunt, on obtient une date d'emprunt, un dlai, l'identifiant de l'inscrit ayant effectul'emprunt, la rfrence de l'exemplaire emprunt.

    partir d'une rfrence d'exemplaire, on obtient l'identifiant du livre correspondant. partir d'un numro de livre, on obtient son titre, son anne de parution, un rsum, l'identifiant du type

    correspondant, son numro d'dition. ...

    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 alorsP1,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 P3a 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 maiscelle-ci peut s'avrer utile car elle permet, entre autres, de distinguer les futures entits du MCD et leur identifiants.

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 8 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    II-D - Le Modle Conceptuel de Donnes (MCD)

    II-D-1 - Les entits

    Chaque entit est unique et est dcrite par un ensemble de proprits encore appeles attributs ou caractristiques.Une des proprits de l'entit est l'identifiant. Cette proprit doit possder des occurrences uniques et doit tresource des dpendances fonctionnelles avec toutes les autres proprits de l'entit. Bien souvent, on utilise unedonne de type entier qui s'incrmente pour chaque occurrence, ou encore un code unique spcifique du contexte.

    Le formalisme d'une entit est le suivant :

    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 tutilis plusieurs fois, voici un exemple de table d'occurrences de l'entit Auteur :

    id_a nom_a prenom_a date_naissance_a1 Hugo Victor 1802-02-262 Rimbaud Arthur 1854-10-203 de Maupassant Guy 1850-08-05

    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. Nousreviendrons 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 instancesd'entits-types. Par soucis de simplicit, on gardera les termes d'entits et associations tout au long du cours.

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 9 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    II-D-2 - Les associations

    Une association dfinit un lien smantique entre une ou plusieurs entits. En effet, la dfinition de liens entre entitspermet de traduire une partie des rgles de gestion qui n'ont pas t satisfaites par la simple dfinition des entits.

    Le formalisme d'une association est le suivant :

    Gnralement le nom de l'association est un verbe dfinissant le lien entre les entits qui sont relies par cettedernire. 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 permisde 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 surdes rgles de gestion imposant des cardinalits avec des valeurs particulires, mais cela reste assez exceptionnelet 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 desentits qui participent l'association. Imaginons l'association suivante :

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 10 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    Ici un auteur rdige au moins un ou plusieurs livres et pour chaque livre, on connat le nombre de chapitres rdigspar 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 coupleid_a, id_l doit tre unique pour chaque occurrence de l'association. On peut galement dfinir la dpendancefonctionnelle 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 parl'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 quecette dernire ne peut tre porteuse de donnes et qu'elle est identifie par l'identifiant de l'entit porteuse de lacardinalit 0,1 ou 1,1.

    Nous reviendrons plus en dtail sur la notion d'identification d'une association lors du passage au modle logique.

    II-D-3 - laboration du MCD

    Avec toutes ces connaissances, il nous est donc possible d'laborer le MCD complet partir des donnes prsentesdans le dictionnaire des donnes :

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 11 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    Remarques :

    Souvent, pour un mme ensemble de rgles de gestion, plusieurs solutions sont possibles au niveauconceptuel. Par exemple, rien ne nous obligeait ici crer une entit Type . Une simple donne porte parl'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 lesmodifications 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 ladate de location et de la dure de celle-ci. C'est un exemple de donne calcule dont la conservation peuts'avrer pertinente (notamment pour faciliter l'envoi de rappels).

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 12 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    III - Modlisation d'une base de donnes au niveau logique et passage au SQL

    Dans cette partie, nous allons voir comment tablir une modlisation des donnes au niveau logique (ou relationnel) partir d'un modle conceptuel, puis comment passer l'tape de cration des tables (cela suppose d'avoir uneconnaissance pralable des requtes SQL de cration de tables).

    III-A - Le passage du MCD au MLD et SQL

    III-A-1 - Les relations

    Le modle logique de donnes (MLD) est compos uniquement de ce que l'on appelle des relations . Ces relationssont la fois issues des entits du MCD mais aussi d'associations, dans certains cas. Ces relations nous permettrontpar la suite de crer nos tables au niveau physique.

    Une relation est compose d'attributs. Ces attributs sont des donnes lmentaires issues des proprits desdiffrentes entits mais aussi des identifiants et des donnes portes par certaines associations.

    Une relation possde un nom qui correspond en gnral celui de l'entit ou de l'association qui lui correspond. Ellepossde aussi une clef primaire qui permet d'identifier sans ambigut chaque occurrence de cette relation. Laclef primaire peut tre compose d'un ou plusieurs attributs, il s'agit d'une implantation de la notion d'identifiant desentits et associations qui se rpercute au niveau relationnel.

    Voici un premier exemple de relation (issue de l'entit Edition de notre prcdant MCD) :

    Edition ( id_ed , nom_ed)Lgende :x : relationx : clef primaire

    Remarques :

    Ce premier MLD est reprsent de manire textuelle. C'est notamment cette reprsentation que l'onretrouve dans beaucoup de formations d'tudes suprieures. Il existe toutefois une reprsentation graphiquequivalente.

    Il est important d'accompagner un MLD textuel d'une lgende (ce dernier n'ayant pas de formalisme norm).Ceci est d'ailleurs exig dans certaines formations.

    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 : relationx : clef primairex # : clef trangre

    Remarques :

    Au niveau relationnel, on devrait plutt parler de clef candidate qui permet d'identifier sans ambigutune occurrence de la relation pour les clefs primaires. De mme, on devrait dsigner une clef trangre par

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 13 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    une contrainte d'inclusion vers une clef candidate. Par souci de simplicit, on gardera les termes de clefsprimaires 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 relationEdition.

    Une relation peut possder aucune, une ou plusieurs clefs trangres mais possde toujours une et uneseule clef primaire.

    Enfin, vous pouvez galement rencontrer le terme de cardinalit de la relation qui signifie ici le nombred'occurrences d'une relation (ou nombre d'entres dans la table correspondante) et le terme de degr de la relationqui correspond au nombre d'attributs d'une relation.

    III-A-2 - Rgles de conversion

    Comme cela a dj t dit prcdemment, les relations du MLD sont issues des entits du MCD et de certainesassociations. Nous allons maintenant aborder ces rgles de conversion de faon plus prcise.

    III-A-2-a - Rgle 1 - conversion d'une entit

    En rgle gnrale, toute entit du MCD devient une relation dont la clef est l'identifiant de cette entit. Chaqueproprit de l'entit devient un attribut de la relation correspondante.

    Il existe toutefois quelques cas particuliers que vous pourrez voir au paragraphe III.C.2 .

    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 constituedes identifiants des entits relies par cette association. Ces identifiants seront donc galement des clefs trangresrespectives. On parle de relations associatives .

    Les cardinalits plus restrictives (comme 2,3 ; 1,7 ; ...) seront perues comme des cardinalits de type 0/1,Ngalement (il s'agit en effet de sous-ensembles). Cependant, les rgles de gestions qui ne seront plus satisfaites parcette modlisation logique devront l'tre par des traitements supplmentaires (via le code de l'application qui exploitela 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 #, id_l # )

    Lgende :x : relationx : clef primairex # : clef trangre

    Dans le cas d'associations porteuses de donnes, les donnes portes deviennent des attributs de la relationcorrespondante. Si l'on reprend cet exemple :

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 14 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    L'association rdiger devrait maintenant tre traduite comme ceci :

    Rediger ( id_a #, id_l # , nb_chapitres)Lgende :x : relationx : clef primairex # : clef trangre

    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 estd'ajouter une clef trangre dans la relation qui correspond l'entit se situant du ct de cette cardinalit 1,1. Cetteclef 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 : relationx : clef primairex # : 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 fonctionnellesdirectes avec l'identifiant de l'entit dont la clef correspondante sera rfrence par une clef trangre dansune 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 laclef 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 parune association ayant une cardinalit 1,1 des deux cts, doivent obligatoirement fusionner. Cette rgle s'appuieencore une fois sur la notion de dpendances fonctionnelles directes mais n'est pas toujours respecte (il est parfoissmantiquement 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 composeuniquement 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 #)

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 15 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    Lgende :x : relationx : clef primairex # : clef trangre

    Dans ce cas, l'association peut tre porteuse de donnes. Ces dernires deviendront donc des attributs de la relationassociative 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 desimplification des requtes.

    III-A-2-d - Rgle 4 - conversion des associations ayant au moins une cardinalit de type 0,1 (etdont 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 mmespossibilits s'offrent nous :

    Crer la clef trangre dans la relation correspondant l'entit du ct de la cardinalit 0,1. Rappelons quedans 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 lapremire 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 sontcaractrises par l'existence d'une dpendance fonctionnelle entre l'identifiant de l'entit pre (ici id_cat) et de l'entitfils (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 : relationx : clef primairex # : clef trangreCependant mme si les SGBD le permettent (avec la valeur NULL par dfaut), il n'est normalement pas permis d'avoirune 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) :

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 16 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    Categorie ( id_cat , libelle_cat)Livre ( id_l , titre_l, annee_l, resume_l)Appartenir ( id_l #, id_cat #)Lgende :x : relationx : clef primairex # : clef trangre

    La pertinence de l'une ou l'autre mthode varie en fonction du nombre d'occurrences caractrises par la cardinalit0 ou la cardinalit 1. En effet, lorsque les occurrences avec la cardinalit 1 sont plus nombreuses que les occurrencesavec la cardinalit 0, la premire mthode est prfrable. Dans le cas contraire, c'est la seconde mthode qui estla plus adapte.

    Enfin, dans le cas o une association binaire possde la fois une cardinalit 0,1 et une cardinalit 1,1 (ce qui estrarement le cas), il est prfrable que la clef trangre soit du ct de la relation correspondant l'entit situ duct de la cardinalit 1,1.

    III-A-3 - laboration du MLD et passage au SQL

    Avec ces diffrentes rgles de conversion, il nous est dj possible de convertir notre MCD au complet :

    Pays ( id_p , nom_p)Auteur ( id_a , nom_a, prenom_a, date_naissance_a, id_p #)TypeLivre ( id_t , libelle_t)Livre ( id_l , titre_l, annee_l, resume_l, id_t #)Rediger ( id_a #, id_l # )Edition ( id_ed , nom_ed)Exemplaire ( ref_e , id_ed #, id_l #)Inscrit ( id_i , nom_i, prenom_i, date_naissance_i, rue_i, ville_i, cp_i, email_i, tel_i, tel_portable_i)Emprunt (id_em, date_em, delais_em, id_i #, ref_e #)Lgende :x : relationx : clef primairex # : clef trangre

    Comme vous pouvez le constater, le schma de la base est dj fait. Les rgles de passage au SQL sont assezsimples :

    chaque relation devient une table chaque attribut de la relation devient une colonne de la table correspondante chaque clef primaire devient une PRIMARY KEY chaque clef trangre devient une FOREIGN KEY

    Voici ce que cela donnerait :

    CREATE TABLE Pays ( id_p INT NOT NULL, nom_p VARCHAR(50), PRIMARY KEY (id_p) );

    CREATE TABLE Auteur ( id_a INT NOT NULL, nom_a VARCHAR (30), prenom_a VARCHAR (30), date_naissance_a DATE, id_p INT NOT NULL, FOREIGN KEY (id_p) REFERENCES Pays(id_p),

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 17 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    PRIMARY KEY (id_a) );

    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 INSERTavec la plupart des SGBD.

    Exemple d'auto-incrmentation sous MySQL :

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 18 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    CREATE TABLE TypeLivre ( id_t INT AUTO_INCREMENT, libelle_t VARCHAR (30), PRIMARY KEY (id_t) );

    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 soi-mme cette squence.

    III-B - Rgles de vrification des niveaux de normalisation

    Il existe diffrents niveaux de normalisation (ou formes normales). Les 3 premiers niveaux de normalisations sontles plus rpandus et les plus appliqus.

    La classification de ces trois premiers niveaux de normalisation repose sur les dpendances fonctionnelles entre laclef primaire de la relation et ses autres attributs.

    Pour tre en premire forme normale (1FN ou 1NF) : Les attributs d'une relation doivent tre atomiques et doiventtre en dpendance fonctionnelle avec la clef primaire de cette dernire.

    Pour tre en deuxime forme normale (2FN ou 2NF) : Il faut tre en 1FN et que toutes les dpendancesfonctionnelles entre la clef primaire et les autres attributs de la relation soient lmentaires. Autrement dit, les attributsdoivent dpendre de la totalit de la clef.

    Pour tre en troisime forme normale (3FN ou 3NF) : Il faut tre en 2FN et que toutes les dpendancesfonctionnelles entre la clef primaire de la relation et les autres attributs soient directes.

    Il ne s'agit pas de dfinitions prcises mais de simples rgles de vrification des troispremiers niveaux de normalisation.Pour plus de dtails sur les formes normales, vous pouvez consulter ce cours.

    Remarques :

    Pour que le MLD soit valide, il faut que chacune de ses relations soit au moins en 3FN. Si un MCD est correctement conu et que les rgles de conversion nonces plus haut ont bien t

    respectes, les relations seront donc automatiquement normalises en 3FN.

    III-C - Cas particuliers

    III-C-1 - Les associations rflexives

    Il est possible de relier une entit elle mme par une association, on parle dans ce cas l d' association rflexive.Imaginons que l'on veuille connatre les inscrits qui sont maris entre eux tout en conservant leur date de mariage,voici ce que l'on obtiendrait au niveau conceptuel :

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 19 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    Dans ce cas, c'est la mme rgle qui s'applique pour la conversion d'une association ayant des cardinalits detype 0/1,N de part et d'autres. Il faudra cependant diffrencier les noms des clefs trangres de la table associativecorrespondantes 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 : relationx : clef primairex # : clef trangre

    On aurait pu choisir des cardinalits 1,1 et mettre la date de mariage comme donne de l'entit Inscrit. Ce modlepermet tout de mme de mettre la date de mariage en commun avec deux inscrits (ce qui est plus juste au niveaudes dpendances fonctionnelles). Si l'on souhaite limiter le nombre de mariages 1 pour une personne, il suffira demettre 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 unexemple de trigger avec une procdure stocke vrifiant la prsence d'une occurrence pour un identifiant donnedans 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 pourreztoutefois trouver des syntaxes ressemblantes ou quivalentes sur une grande partie des SGBDR connus. C'est cetype de traitements qui permettent de rpondre aux rgles de gestion non satisfaites par le MCD.

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 20 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    Ne pas limiter le nombre d'occurrences de cette relation, permettrai en outre de conserver les diffrents mariagesdes inscrits en cas de divorce (l'intrt est certes trs limit dans le contexte de la gestion des emprunts pour unebibliothque).

    III-C-2 - Rgle de conversion exceptionnelle pour certaines entits simples

    Dans certains cas, il n'est pas toujours pertinent de convertir une entit au niveau conceptuel, par une relation auniveau logique. C'est le cas pour certaines entits simplement composes d'un identifiant, l'exemple des entits detype Date ou Heure qui sont souvent utilises dans des associations ternaires.

    Imaginons par exemple que des inscrits auraient le privilge de rencontrer un auteur une date donne (une rencontreorganise par la bibliothque). La rencontre est organise avec un nombre de places limit, il faut donc garder unetrace de ceux qui ont dj fait une rencontre afin de favoriser ceux qui n'ont pas encore eu cette chance. Voicicomment nous pourrions reprsenter cela au niveau conceptuel :

    La date de rencontre ne doit pas tre une simple donne porte par l'association car cela limiterait le nombre derencontre d'un inscrit avec un auteur 1 (la relation correspondant l'association aurait dans ce cas un coupleidentifiant 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 estrecommand 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 : relationx : clef primairex # : clef trangre

    IV - Les extensions apportes par MERISE II

    IV-A - L'identification relative

    Elle intervient lorsque l'identifiant d'une entit ne suffit pas l'identifier de manire unique.

    Quelques exemples de cas o cela peut arriver :

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 21 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    On identifie un immeuble par son numro de rue, or il faut connatre le nom ou l'identifiant de la rue pourtrouver 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.

    Voici comment on pourrait schmatiser ces rgles de gestions au niveau conceptuel :

    Les parenthses autour des cardinalits signifient que les entits du ct de ces cardinalits seront identifies par laconcatnation de leurs identifiants (qui ne suffisent pas les identifier de manire unique) avec l'identifiant de l'entitoppose. 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 : relationx : clef primairex # : clef trangre

    IV-B - L'hritage et ses limites

    Dsormais, MERISE II permet aussi de modliser l'hritage entre les entits. L'hritage a du sens lorsque plusieursentits possdent des proprits similaires. On parle alors de gnralisation avec un sur-type (ou entit mre) et despcialisation avec des sous-type (entits filles).

    Voici comment on pourrait reprsenter un hritage sur notre MCD :

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 22 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    Dans cette partie, les types des proprits apparaissent (ceci est d au logiciel utilis quiest plus adapt pour reprsenter l'hritage). Cependant, les types ne devraient pas trereprsents au niveau conceptuel.

    Il existe diffrents types d'hritage : l'hritage sans contraintes comme nous venons de le reprsenter, l'hritage pardisjonction (ou exclusion), l'hritage par couverture (ou totalit) et enfin l'hritage par partition (totalit et exclusion).

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 23 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    IV-B-1 - L'hritage par disjonction (ou exclusion)

    Toutes les occurrences du sur-type ne peuvent se trouver que dans aucun ou un seul sous-type. Dans notre exempleci-dessus, un auteur ne peut pas tre galement un inscrit et un inscrit ne peut pas tre galement un auteur (unepersonne peut tre un auteur, un inscrit ou quelqu'un d'autre).

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 24 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    IV-B-2 - L'hritage par couverture (ou totalit)

    Toutes les occurrences du sur-type se trouvent dans au moins un des sous-type existants. Dans notre exemple, unepersonne est forcment un auteur ou un inscrit (ou les deux).

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 25 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    IV-B-3 - L'hritage par partition (totalit et exclusion)

    Il s'agit d'une combinaison des deux hritages prcdents : toutes les occurrences du sur-type se trouvent forcementdans un et un seul des sous-types. Une personne est soit un auteur, soit un inscrit. Cette contrainte est parfois note+.

    IV-B-4 - Passage au niveau relationnel et limites

    son apparition avec Merise II, l'hritage n'tait pas encore implant sur l'ensemble des SGBDR rpandus (ce n'estd'ailleurs toujours pas le cas aujourd'hui). Il a donc fallu le simuler au point de vue relationnel.

    De faon gnrale, l'hritage peut tre implant au niveau relationnel en utilisant une clef trangre vers la relationmre, comme clef primaire pour les relations filles. Reprenons notre exemple prcdent :

    Personne ( id_p , nom_p, prenom_p, date_naissance_p)Inscrit ( id_p # , rue_i, ville_i, cp_i, email_i, tel_i, tel_portable_i)Auteur ( id_p # )Lgende :x : relationx : clef primairex # : clef trangre

    Ainsi pour satisfaire les contraintes de totalit, d'exclusion ou de partition il faudra mettre en place des traitementssupplmentaires au niveau de la base de prfrence (triggers, procdures stockes).

    Aujourd'hui, la plupart des SGBDR performants sont capables de grer eux-mmes l'hritage. C'est notamment lecas avec la clause INHERITS de PostgreSQL. Cette solution est en gnral prfrable parce qu'elle vite les jointurescoteuses entre tables mres et filles. En effet les attributs du sur-type seront automatiquement accessibles depuis lesous-type. Par consquent, une insertion, modification ou suppression dans le sous-type se rpercutera galement

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 26 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    dans l'entit mre. Cependant, cette solution a pour inconvnient de pouvoir crer des tuples en double au niveaude 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 contententde 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 : relationx : clef primairex # : clef trangreCette solution est galement acceptable mais peut nous amener nous interroger sur la pertinence de l'hritagetant donn que ce dernier n'est pas implant au niveau relationnel. Cependant, la contrainte de partition reste unergle 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 lesdveloppeurs dans le cadre d'une base de donne relationnelle.

    IV-C - Les contraintes entre associations

    De mme que pour l'hritage, il existe diffrentes contraintes qui peuvent exister entre deux ou plusieurs associations.Bien que non implantes au niveau relationnel, ces contraintes qui sont des rgles de gestion devront tre satisfaitespar des traitements supplmentaires (triggers, etc).

    IV-C-1 - La contrainte d'inclusion

    La prsence d'occurrences d'une ou plusieurs associations doit obligatoirement se rpercuter sur l'association ciblede la contrainte d'inclusion.

    Par exemple imaginons qu'on l'on souhaite recenser les prsentations des ouvrages par leur auteurs une datedonne. Voici comment cela pourrait tre reprsent (de manire simpliste) au niveau conceptuel :

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 27 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    Cela signifie que si un couple livre-auteur est prsent dans l'association presenter, alors il doit obligatoirement treprsent dans l'association rediger. Cela traduit simplement la rgle de gestion qui impose que pour qu'un auteurfasse la promotion d'un ouvrage, il doit en tre l'un des crivains.

    IV-C-2 - La contrainte d'exclusion

    Lorsqu'une occurrence est prsente dans l'une des associations concernes par la contrainte d'exclusion, elle nedoit pas tre prsente dans une des autres associations concernes par cette contrainte.

    Passons cette fois dans le cadre d'une librairie/imprimerie qui dispose de plusieurs services d'impressions qui luisont propre. On souhaite dterminer quels sont les livres imprims et les livres achets tout en gardant une tracedes fournisseurs et des services d'impressions :

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 28 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    Dans cet exemple, un livre ne peut pas la fois tre achet chez un fournisseur et tre imprim par un serviced'impression interne.

    IV-C-3 - La contrainte de totalit

    Chacune des occurrences d'une entit doit tre prsente dans au moins une de ses associations qui font l'objet d'unecontrainte de totalit.

    Reprenons notre exemple prcdent et adaptons-le la contrainte de totalit :

    Dans cet exemple, un livre est toujours imprim dans un service interne ou achet par un fournisseur.

    IV-C-4 - La contrainte d'galit

    Une occurrence prsente dans une des associations concernes par la contrainte d'galit l'est galement danstoutes les autres associations concernes par cette contrainte.

    Prenons l'exemple d'un magasin qui vend des livres et qui souhaite archiver les dpts et les imprimeries du livre :

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 29 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    Un livre achet dans un dpt sera donc galement imprim dans une imprimerie et vice et versa.

    IV-C-5 - Combinaison entre contraintes

    Comme dans le cadre d'un hritage, il est possible de combiner les contraintes (TI, T=, XT ou + pour la partition,etc). Voici un exemple de contrainte de partition :

    Pour cet exemple, le livre sera soit imprim dans un service interne, soit achet.

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 30 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    IV-D - Les CIF (contraintes d'intgrits fonctionnelles) et agrgations

    Il s'agit de dpendances fonctionnelles qui sont directement reprsentes sur le MCD afin de rduire les identifiantsd'associations jugs trop larges. Ces DF sont des rgles de gestion faire apparatre sur votre schma.

    Reprenons l'exemple de l'auteur qui fait la promotion de son ouvrage une date donne :

    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 #, vdate , id_l #)Lgende :x : relationx : clef primairex # : clef trangre

    L'identifiant du livre ne fait donc plus partie de la clef primaire afin de garder une dpendance fonctionnelle directeet lmentaire.

    Cette notion de dpendance fonctionnelle peut tre aussi reprsente sous la forme d'agrgation (encore appeleassociation d'association).

    Imaginons par exemple qu'une rgle de gestion nous impose le fait qu'un livre, pour une librairie donne, ne puissetre 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 :

  • Initiation la conception de bases de donnes relationnelles avec MERISE par Idriss NEUMANN

    - 31 -Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentationconstitue une uvre intellectuelle protge par les droits d'auteur. Copyright . Aucune reproduction, mme partielle, ne peut tre faite de cesite et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loijusqu' 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/

    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 # , id_c #)Lgende :x : relationx : clef primairex # : clef trangre

    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 maintenantpossible de concevoir et raliser des bases de donnes relationnelles. Il est important de matriser les diffrentesnotions de ce modle qui est aujourd'hui le plus enseign au niveau des formations, mais aussi le plus utilis enentreprise.

    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 desdonnes au format XML. Le traitement de l'information, qui doit parfois se faire en temps rel, se fait donc au niveaude 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 techniqueet leurs conseils.

    Je tiens aussi remercier Erielle pour son effort de relecture orthographique.

    SynopsisSommaireI - MERISE au service des systmes d'informationI-A - Le systme d'informationI-B - MERISE

    II - Modlisation d'une base de donnes au niveau conceptuelII-A - Les rgles de gestion mtiersII-B - Le dictionnaire des donnesII-C - Les dpendances fonctionnellesII-D - Le Modle Conceptuel de Donnes (MCD)II-D-1 - Les entitsII-D-2 - Les associationsII-D-3 - laboration du MCD

    III - Modlisation d'une base de donnes au niveau logique et passage au SQLIII-A - Le passage du MCD au MLD et SQLIII-A-1 - Les relationsIII-A-2 - Rgles de conversionIII-A-2-a - Rgle 1 - conversion d'une entitIII-A-2-b - Rgle 2 - conversion d'associations n'ayant que des cardinalits de type 0/1,NIII-A-2-c - Rgle 3 - conversion des associations ayant au moins une cardinalit de type 1,1III-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)

    III-A-3 - laboration du MLD et passage au SQL

    III-B - Rgles de vrification des niveaux de normalisationIII-C - Cas particuliersIII-C-1 - Les associations rflexivesIII-C-2 - Rgle de conversion exceptionnelle pour certaines entits simples

    IV - Les extensions apportes par MERISE IIIV-A - L'identification relativeIV-B - L'hritage et ses limitesIV-B-1 - L'hritage par disjonction (ou exclusion)IV-B-2 - L'hritage par couverture (ou totalit)IV-B-3 - L'hritage par partition (totalit et exclusion)IV-B-4 - Passage au niveau relationnel et limites

    IV-C - Les contraintes entre associationsIV-C-1 - La contrainte d'inclusionIV-C-2 - La contrainte d'exclusionIV-C-3 - La contrainte de totalitIV-C-4 - La contrainte d'galitIV-C-5 - Combinaison entre contraintes

    IV-D - Les CIF (contraintes d'intgrits fonctionnelles) et agrgations

    V - ConclusionVI - Remerciements