Design conceptuel
Le design conceptuel commence par une analyse du domaine du client ou du problĂšme.
Le design conceptuel commence sur le terrain ! Il faut aller parler aux clients, aux utilisateurs potentiels, ou aux managers qui veulent extraire des synthĂšses.
Dans les grandes entreprises, il y aura des analystes qui vont créer de questionnaires, d'ateliers, ou des études, et synthétiser des informations pour vous.
Dans les petites entreprises, c'est votre commercial, ou peut-ĂȘtre vous-mĂȘme, qui va aller chercher des informations.
Les livrables de la phase d'analyse peuvent se trouver en plusieurs formes :
des *use-cases (cas d'utilisation) : souvent, exprimé en format storytelling qui raconte les procédures de quelqu'un dans l'entreprise, d'un client ou autre partie prenant
des comptes-rendus des interviews avec des personnes de votre audience cible
des cahiers des charges
des notes en bullet prises des rendez-vous ou discussions
...
C'est Ă nous de maintenant prendre toutes ces informations et extraire une logique, et notamment un modĂšle de donnĂ©es qui reprĂ©sente la rĂ©alitĂ© â surtout avec l'objectif de rĂ©soudre un problĂšme exprimĂ© (n'oubliez jamais ce dernier pointâŻ!).
Entités
En lisant toutes les analyses, la premiĂšre activitĂ© est d'extraire la liste d'acteurs, la liste d'objetsâŠ, en bref, la liste de trucs qui sont manipulĂ©s dans le domaine.
Nous utilisons le mot entité.
En gĂ©nĂ©ral, tout ce qui a un nom dans votre entreprise est une entitĂ©. Cela peut ĂȘtre des interlocuteurs, des produits, des services, etc.
Une entitĂ© peut ĂȘtre concrĂšte (un livre) ou abstraite (un cours).
Chaque entitĂ© est reprĂ©sentĂ©e par un set dâattributs.
Exercice
Je suis votre client. Je vous envoie un email vous demandant de me créer un systÚme d'information pour mon magasin de location de films. Quelles seront les entités et les attributs ?
Sur un papier brouillon (et sans regarder le schĂ©ma se SAKILA), essayez dâidentifier les entitĂ©s.
E-R diagram
Il y a plusieurs façons de représenter nos entités.
D'abord, on peut lister simplement en texte nos entités et leurs attributs :
Ceci est bien pour une premiÚre passe, mais ce n'est pas trÚs parlant quand la liste devient longue. Il y a donc des représentations graphiques qui ont été développés :
En plus, on aimerait aussi modéliser les liens entre les entités !
Par exemple, un acteur joue dans un film. D'abord, si on ne comprend pas trop la nature de la relation, mais on sait qu'il y en a une, on tire juste un trait entre les deux :
Ensuite, on creuse plus le domaine, afin de savoir plus de cette relation. On découvre, qu'en effet, plusieurs acteurs jouent dans un film. On exprime ce lien, souvent via un verbe en forme losange sur le trait :
Cardinalité
Vous avez peut-ĂȘtre remarquĂ© qu'en analysant le domaine des films, notamment, le lien entre des acteurs et des films, nous avons dĂ©couvert que plusieurs acteurs peuvent jouer dans un film. Mais, vous vous ĂȘtes rendu compte qu'en plus, un acteur peut jouer dans plusieurs films.
Le lien entre les deux entités n'est donc pas si simple !
Cette notion du nombre maxi de liens potentiels entre deux entités s'appelle la cardinalité.
One-to-one
Seulement, et au maximum, une entité de chaque cÎté du lien.
Ce cas est assez rare. Quelle est la différence entre 2 entités avec un lien one-to-one et une entité avec tous les attributs ?
La rĂ©ponse est peut ĂȘtre dans le niveau dâaccĂšs aux certains attributs, ou peut ĂȘtre le lien entre en sous-set des attributs avec d'autres entitĂ©s dans le domaine.
Dans l'image, on sépare le RIB des détails d'un acteur, parce qu'on aura des niveaux d'accÚs différent. Seulement les chargées de la paye auront accÚs aux RIBs des acteurs.
Parfois, ce n'est pas si simple de décider :
Dans notre domaine, un acteur a une adresse principal. On a le choix de dire, d'accord, on stocke toutes les informations de l'adresse avec l'entité actor.
En revanche, on dĂ©couvre qu'en fait la mĂȘme adresse peut-ĂȘtre utilisĂ© comme lieu d'un tournage. On peut aussi stocker l'adresse avec l'entitĂ© shoot, sauf que maintenant on a de la redondance dans notre base (la mĂȘme adresse est stockĂ© plusieurs fois dans la base).
A ce moment lĂ , il serait prudent d'extraire l'adresse et le stocker en entitĂ© Ă part, mĂȘme s'il y a des liens type one-to-one.
Noter que le processus de normalisation va nous aider à identifier les cas comme décrit dessus.
One-to-many
Une entitĂ© de lâun cĂŽtĂ© peut ĂȘtre liĂ©e Ă plusieurs entitĂ©s de lâautre cĂŽtĂ© du lien. En revanche, lâinverse nâest pas vrai. Exemple : une ville se trouve dans le maximum un pays, mais un pays a plusieurs villes
Notez qu'avec cette notation, la flĂšche est cotĂ©e one. Il y a d'autres types de notation qui seront peut-ĂȘtre plus intuitives.
Many-to-many
Plusieurs entitĂ©s sont liĂ©es Ă plusieurs entitĂ©s Ă lâautre cĂŽtĂ© du lien. Exemple : un film a plusieurs acteurs, et un acteur peut jouer dans plusieurs films.
Entités faibles
Parfois, il y a des entités qui existent uniquement parce qu'une autre entité existe. Prenons l'exemple d'une fiche de paye. Une fiche de paye ne peut pas exister sans un salarié. Dans cet exemple :
L'entité
salarié
est une entité forte, parce qu'elle peut exister sans l'existence d'autres entitésL'entité
fiche_de_paie
est une entité faible, parce que son existence dépend de l'existence d'un salarié.
Dans un schéma E-R, on utilise des doubles traits pour représenter des entités et liens faibles :
Notez bien que la notion d'entité faible joue en parallÚle de la notion de cardinalité. Dans l'exemple, la cardinalité du lien est one-to-many : une fiche de paye doit avoir maximum 1 salarié. En revanche, un salarié peut avoir plusieurs fiches de paye.
Modalité
A l'opposé de cardinalité (le nombre maximum de liens) est la modalité : le nombre minimum de liens.
Un film peut exister sans forcément d'acteur (par exemple un documentaire sur la nature). Un acteur peut exister sans avoir joué dans un film. On dit donc que la modalité du lien entre l'entité film et l'entité actor est 0.
En revanche, une ville doit obligatoirement avoir un pays. Une ville ne peut pas exister sans son pays. La modalité est donc 1.
Dans l'exemple de salarié / fiche de paye, la modalité dépend du sens de la relation :
salarié vers fiche-de-paye : modalité est 0, car un salarié peut avoir 0 fiches de paie (pendant son premier mois d'emploi par exemple)
fiche-de-paye ver salarié : modalité est 1 comme une fiche de paye doit avoir minimum 1 salariés
Différentes notations
On essaye de créer des schémas qui expriment l'ensemble des informations de nos entités et leurs liens. Cela représente beaucoup d'information à communiquer, et donc ce n'est pas si simple !
L'image dessous indique trois sortes de notation : chen, crow's foot et UML
Nous n'allons pas plonger dans les détails de chaque notation pendant ce cours. Selon l'outil que vous utilisez, ou bien l'équipe dans laquelle vous travaillez, vous allez devoir chercher et apprendre la forme de notation utilisée. L'importance est de comprendre les notions exprimées (cardinalité, modalité, entités faibles, etc.), et le reste est juste syntaxe !
On peut passer beaucoup de temps à créer le schéma parfaitement détaillé en suivant toutes les rÚgles possibles. Cela peut avoir des avantages et désavantages.
Avantages :
Un schĂ©ma parfait et bien dĂ©taillĂ© peut souvent ĂȘtre lu et transformĂ© en DDL par un client SGBDR
Plus résistant aux failles dans le long terme
DĂ©savantages :
Si notre équipe ne sait pas lire le schéma, c'est une perte de temps !
Si on ne maßtrise pas le domaine, un schéma trÚs détaillé ne sert à rien. Autant avoir un schéma moins détaillé, mais qui permette d'évoluer ou itérer plus facilement !
DerniĂšre mise Ă jour