Transcript Tel. ppt

Analyse et Conception de Systèmes Informatiques (ACSI)

 Cours 1 : Présentation L'algèbre relationnelle Le modèle entité-relation (E-A)  Cours 2 : Du modèle E-A au MPD Le langage SQL  Cours 3 : 

Cours 4 :

SQL avancé

Méthodes de modélisation

 Cours 5 : Administration et sécurité 2

Merise

Présentation de Merise La méthode Merise est une évolution ou plus précisément une standardisation du modèle entité-association.

Merise est une méthode d'analyse, de conception et de réalisation de systèmes d'informations.

Cette méthode préconise plusieurs étapes pour passer d'un système d'informations manuel à un système d'informations automatisé.

3

Merise

Les étapes d'analyse :     Exprimer le besoin Créer les modèles conceptuels Créer les modèles logiques Créer les modèles physiques 4

Merise

L'étape de recensement est essentielle car elle permet de formaliser le besoin.

Généralement, un document texte appelé cahier des charges est créé. Celui-ci détaille toutes les fonctionnalités à mettre en place.

Le modèle conceptuel correspond au modèle entité-association vu au 1er cours.

Dans la méthode Merise, celui-ci s'appelle le Modèle Conceptuel de Données : MCD.

5

Merise

Le modèle logique de données est l'adaptation du MCD aux systèmes de bases de données.

Il ne dépend pas du système de bases de données utilisé.

Le vocabulaire employé pour le modèle logique de données est table, clé primaire, clé étrangère, ...

6

Merise

Le modèle physique de données vu au 2ème cours est la représentation du système d'information en prenant en compte le système de bases de données utilisé.

De nombreux outils du marché permettent de transformer ce modèle en SQL et vice-versa de façon fiable.

7

Merise

La méthode Merise propose d'autres modèles tels que :   les Modèles de traitement (MOT, MCT) qui permettent de modéliser les événements, les opérations et les processus.

Les modèles de communication (MCC) qui permettent de modéliser les interactions.

Ces aspects de la méthode ne seront pas développés ici car ils sont plus orientés application que base de données.

8

UML

L'UML (Unified Modeling Language : langage de modélisation objet unifié) est une plus qu'une méthode de modélisation, c'est un langage à part entière dédié à l'objet.

L'approche est faites par des diagrammes destinés à modéliser plusieurs domaines :    Les diagrammes structurels Les diagrammes comportementaux Les diagrammes d'interaction 9

UML

Parmi tous les diagrammes proposés par la méthode UML, seul le diagramme de classes permet de modéliser les bases de données.

Les autres diagrammes ne seront donc pas expliqués dans ce cours.

10

Merise Entité Identifiant Attribut 2 ....

Attribut n

Entité, Classe

UML Classe Attribut 1 Attribut 2 ....

Attribut n Méthode 11

Merise

L'association

UML Entite_1 Lie Entite_2 Classe_1 Lie Classe_2 12

Merise

Cardinalités, Multiplicités

UML Cardinalités Lecture 0 , 1 1 , 1 Lien vers 0 ou 1 Lien vers 1 0 , n 1 , n Lien vers 0 ou N Lien vers 1 ou N Multiplicités Lecture 0..1

Lien vers 0 ou 1 1 * 1..* Lien vers 1 Lien vers 0 ou plusieurs Lien vers 1 ou plusieurs 13

Merise

Les associations un à un

UML Cardinalités 0 , 1 0 , 1 0 , 1 1 , 1 1 , 1 1 , 1 Multiplicités 0 .. 1 0 .. 1 0 .. 1 1 1 1 14

Les associations un à plusieurs

Merise UML Cardinalités 0 , 1 0 , N 0 , 1 1 , 1 1 , 1 1 , N 0 , N 1 , N Multiplicités 0 .. 1 * 0 .. 1 1 1 1 .. * * 1 .. * 15

Associations plusieurs à plusieurs

Merise UML Cardinalités 0 , N 0 , N 0 , N 1 , N 1 , N 1 , N 0 , N 1 , N Multiplicités * * 1 .. * 1 .. * * 1 .. * * 1 .. * 16

Exemple d'association

Merise Entite_1 1,N Lie 0,1 Entite_2 UML Classe_1 0..1

Lie 1..* Une personne peut exercer une profession Classe_2 Personne 0,1 Exerce 0,N Profession Personne * Exerce 0..1

Profession 17 Une profession peut être exercée par plusieurs personnes

Merise

Association avec attributs

UML Entite_1 Lie Attribut_1 Entite_2 Classe_1 Lie Classe_Asso Attribut_1 Classe_2

Classe-association

18

L'association ternaire

Merise UML Entite_1 Min,Max Lie Attributs Min,Max Entite_3 Min,Max Entite_2 Classe_1 Min,Max Classe_3 Min,Max Min,Max Classe_2 Cass_Asso Attributs 19

Merise

L'association réflexive

UML Entite_1 Lie Attributs Classe_1 Verbe_actif Verbe_passif 20

Les contraintes

Afin de prendre en compte plus de règles, la norme Merise 2 intègre les notions de contraintes.

Les contraintes associent des entités ou des relations afin de préciser des règles supplémentaires.

Entite_2 Assoc_1 Entite_1 Assoc_2 C Entite_3 C 21

Les contraintes

Les contraintes les plus courantes sont :    L'exclusivité : peut être l'un ou l'autre La totalité : doit être l'un, l'autre ou les deux La partition : doit être l'un ou l'autre    L'inclusion : ce qui est dans l'un est dans l'autre La simultanéité : doit être dans l'un et dans l'autre L'unicité : ce qui est dans l'un ne peut être qu'une fois dans l'autre 22

Les contraintes

Les contraintes sont modélisés par des codes :   L'exclusivité : La totalité : X T  La partition : XT (parfois P)    L'inclusion : Simultanéité : L'unicité : I S U 23

Les contraintes

Exemple de contrainte d'exclusivité : Personne Adresse Possede X Loue Ici, on modélise le fait qu'une personne ne peut pas posséder et louer une même adresse.

24

Les contraintes

Exemple de contrainte de totalité : Personne Adresse Possede T Loue Ici, on modélise le fait qu'une personne est forcément propriétaire, locataire ou les deux.

25

Les contraintes

Exemple de contrainte de partition : Personne Possede Adresse XT Loue Ici, on modélise le fait qu'une personne est forcément propriétaire ou locataire mais pas les deux.

26

Les contraintes

Exemple de contrainte d'inclusion : Etudiant Souhaite Stage I Effectue Ici, on modélise le fait que le stage qu'un étudiant effectuera est un des stage qu'il a souhaité.

27

Les contraintes

Exemple de contrainte de simultanéité : Etudiant Stage Effectue S Depend IUT Ici, on modélise le fait que le stage est obligatoire pour tous les étudiants puisque toute occurrence dans 'Depend' doit exister dans 28 'Effectue'.

Les contraintes

Exemple de contrainte d'unicité : Utilisateur 0,N 0,N Groupe Appartient U Ici, on modélise le fait qu'un utilisateur ne peut pas appartenir plusieurs fois au même groupe.

Cette contrainte n'a d'intérêt que dans une relation plusieurs à plusieurs.

29

L'agrégation

L'agrégation est une notion proposée par le langage UML.

Elle représente des associations qui ne sont pas symétriques et pour lesquelles une classe joue un rôle prépondérant par rapport à l'autre.

Il existe deux formes d'agrégation :   La composition L'agrégation partagée 30

La composition

La composition est utilisée pour préciser qu'une classe est un sous-ensemble d'une autre.

Elle se caractérise par un losange plein.

Classe_1 Agrégat Constituants Classe_3 Classe_2 31

Exemple :

La composition

Ordinateur Ecran Disque La composition implique que lors de la suppression d'un ordinateur, l'écran et les disques associés seront supprimés.

32

L'agrégation partagée

L'agrégation partagée permet de préciser qu'une classe est dépendante d'une autre.

L'agréation partagée se modélise par un losange clair.

Classe_1 Agrégat Classe_2 33

L'agrégation partagée

Exemple : Fournisseur 1 Une commande n'a de sens que si elle est liée à * Commande un fournisseur.

En cas de suppression du fournisseur, la commande n'est pas nécessairement supprimée.

34

L'héritage

L'héritage existe en Merise 2 et en UML (1 & 2).

Le concept est le même qu'en langage objet.

L'héritage permet de mutualiser des attributs tout en prenant en compte les spécificités des héritiers.

On peut définir le besoin d'héritage en se demandant si l'héritier est composé du parent.

On modélise l'héritage en Merise par un triangle contenant les contraintes, en UML par une flèche de l'héritier vers le parent.

35

Merise Sur_Entite

L'héritage

UML Sur_Classe Sous_Entite1 Sous_Entite2 Sous_Classe1 Sous_Classe2 36

L'héritage

Il existe différents cas d'héritage : A B A B A/B A B A A/B B Disjonction Cas 1 Non-disjonction Cas 4 Couverture Cas 2 Non-couverture Cas 3 Cas 1 Merise : Partition (XT) UML : {complete, disjoint} Cas 3 Merise : Totalité (T) UML : {complete, overlapping} Cas 2 Merise UML : Exclusivité (X) : {incomplete, disjoint} (par défaut) Cas 4 Merise : Pas de contrainte UML : {incomplete, overlapping} 37

L'héritage

L'absence de contraintes sur un graphe d'héritage n'a pas la même signification en Merise et UML :   Pour Merise c'est le cas 4 : non-couverture, non-disjonction Pour UML c'est le cas 2 : non-couverture, disjonction 38

Merise Regroupement Id Nom

L'héritage

UML Regroupement Id Nom XT {Complete, disjoint} Album Pochette Annee PlayList Album Pochette Annee Exemple d'héritage de partition : Regroupement est un album ou une playlist.

PlayList 39

Passage au niveau logique

Le niveau logique est la représentation des tables telles qu'elles seront dans la base de données.

Le niveau logique n'est pas impacté par le système de bases de données utilisé.

Nous présenterons les structures ainsi : Table[cle_primaire,champ_N, cle_etrangere#] 40

Passage au niveau logique

Nous savons déjà que :     Une entité ou une classe devient une table.

L'identifiant Merise devient la clé primaire, pour UML il faut la définir.

Une association 1 à 1 ou 1 à plusieurs se traduit par une clé étrangère dans la table ayant la cardinalité ou la multiplicité maximum à 1.

Une association plusieurs à plusieurs se traduit par une nouvelle table.

41

Passage au niveau logique (contraintes)

Certaines contraintes peuvent se traduire au niveau logique, d'autres au niveau physique.

Il existe plusieurs façons de prendre en comptes les contraintes, cela dépend de la contrainte et du type d'association.

Certaines contraintes nécessitent l'utilisation de triggers, nous considérerons que nous ne les prenons en compte dans ce cours.

42

Passage au niveau logique (contraintes)

Exemple de prise en compte : Contrainte Logique Physique Exclusivité (X) Totalité (T) Partition (XT) Inclusion (I) Fusion des tables avec champ indicateur Fusion des tables avec champ indicateur Fusion des tables avec champ booléen Fusion des tables avec champs NULL Simultanéité (S) Fusion des 2 tables Le champ indicateur NULL Le champ indicateur NOT NULL Le champ booléen NOT NULL Les champs inclus sont NULL Les champs sont NOT NULL Unicité (U) Indexe unique 43

Passage au niveau logique (contraintes)

Exemple avec la contrainte d'exclusivité : Personne Adresse Possede X Loue Personne [idp, nom, prenom, date_naiss] Adresse [ida, voie, cp, ville] Dispose [idp#, ida#, ind_loue] 44

Passage au niveau logique (contraintes)

Exemple avec la contrainte d'exclusivité : Personne [idp, nom, prenom, date_naiss] Adresse [ida, voie, cp, ville] Dispose [idp#, ida#, ind_loue] Personne Dispose Adresse Idp Nom Prenom date_naiss BIGINT vachar(50) vachar(50) date Idp# Ida# Ind_loue BIGINT BIGINT char(1) NULL Ida Voie CP Ville BIGINT vachar(100) char(5) varhcar(50) Le champ 'Ind_loue' pourra prendre les valeurs : 'L' : locataire, 'P' : propriétaire, NULL : pas précisé 45

Passage au niveau logique (contraintes)

Exemple avec la contrainte d'inclusion : Etudiant Stage Souhaite I Effectue Date_debut Duree Etudiant [ide, nom, prenom, date_naiss] Stage [ids, nom] Desire [ide#, ids#, effectue, date_deb, duree] 46

Passage au niveau logique (contraintes)

Exemple avec la contrainte d'inclusion : Etudiant [ide, nom, prenom, date_naiss] Stage [ids, nom] Desire [ide#, ids#, effectue, date_deb, duree] Etudiant Desire Ide Nom Prenom date_naiss BIGINT vachar(50) vachar(50) date Ide# Ids# effectue date_deb DUREE BIGINT BIGINT TINYINT NULL DATE NULL INT NULL Ids nom Stage BIGINT vachar(50) Pour prendre en compte le fait qu'on ne peut effectuer qu'un seul stage, il faudra créer un indexe unique sur les 47 champs 'ide', 'ids', 'effectue'.

Passage au niveau logique (agrégation)

L'agréation va se traduire par une contrainte d'intégrité référentielle au niveau de la base données .

La composition va utiliser 'ON DELETE CASCADE' puisque la suppression d'un agrégat entraîne la suppression des constituants.

L'agrégation partagée va s'assurer que la valeur référencée existe bien par le biais de la déclaration de la clé étrangère et d'une action de type cascade, set null ou restrict.

48

Passage au niveau logique (agrégation)

Exemple : Ordinateur Ordinateur[ido, nom] Ecran[ide, nom, type, taille] Disque[idd, nom, capacite] Ecran Disque Lors de la création des tables, on ajoutera pour 'Ecran' et 'Disque' : foreign key (ido) references ordinateur(ido) on delete cascade 49

Passage au niveau logique (héritage)

Il existe trois méthodes de décomposition pour traduire une association d'héritage :    La décomposition par distinction (une table par entité ou classe) La décomposition descendante (une table par sous entité ou sous-classe) La décomposition ascendante (une table par sur entité ou sur-classe) 50

Passage au niveau logique (héritage)

Merise Regroupement Id Nom UML Regroupement Id Nom XT Album Pochette Annee PlayList Album Pochette Annee {Complete, disjoint} PlayList Décomposition ascendante : Regroupement[id, nom, prochette, annee] 51

Passage au niveau logique (héritage)

Décomposition par distinction : Regroupement [idr, nom] Album [idr#, pochette, annee] PlayList [idr#] Décomposition descendante : Album [id, nom, pochette, annee] PlayList [id, nom] 52