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 :

film(title, duration)
actor(familyName, givenName, age)

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Ă©s

  • L'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