docs: Update data dictionary with new requirements
This commit is contained in:
parent
780b002de0
commit
659bcf94d9
@ -14,13 +14,18 @@ Pour cet article et les suivants, on va se reposer sur une mise en situation fic
|
|||||||
|
|
||||||
## Brief avec le client
|
## Brief avec le client
|
||||||
|
|
||||||
Le client est un petit groupe local qui doit faciliter l'organisation interne pour la gestion de ses différentes activités (répétitions, concerts, etc.).
|
Le client est un groupe qui doit faciliter l'organisation interne pour la gestion de ses différentes activités (répétitions, concerts, etc.).
|
||||||
Il souhaite donc créer une application pour gérer les informations suivantes :
|
Il souhaite donc créer une application pour gérer les informations suivantes :
|
||||||
|
|
||||||
- **Membre** : Nom, prénom, instruments, adresse e-mail, mot de passe
|
- **Musicien** : Nom, prénom, instruments, adresse e-mail, mot de passe
|
||||||
- **Concert** : Date et heure, lieu, tarif
|
- **Concert** : Date et heure, lieu, tarif
|
||||||
- **Répétition** : Date et heure, lieu
|
- **Répétition** : Date et heure, lieu
|
||||||
|
|
||||||
|
Le client a aussi précisé que le mot de passe doit faire plus de 12 caractères, et que l'adresse e-mail doit être unique.
|
||||||
|
|
||||||
|
En ce qui concerne les répétitions et les concerts, il nous a indiqué que tous les musiciens ne sont pas forcément présents à chaque répétition ou concert.
|
||||||
|
Il faut donc prévoir un moyen pour savoir qui est présent à chaque répétition et concert.
|
||||||
|
|
||||||
Pour le moment, on ne va pas se soucier de la technique, mais juste de lister les données que l'on doit stocker dans la base de données.
|
Pour le moment, on ne va pas se soucier de la technique, mais juste de lister les données que l'on doit stocker dans la base de données.
|
||||||
On va donc créer un tableau qui va nous permettre de lister toutes les données que l'on doit stocker dans notre base de données.
|
On va donc créer un tableau qui va nous permettre de lister toutes les données que l'on doit stocker dans notre base de données.
|
||||||
|
|
||||||
@ -67,11 +72,11 @@ Voici donc le dictionnaire de données que l'on va créer pour notre application
|
|||||||
|
|
||||||
| Nom de la donnée | Format | Longueur | Contraintes | Document |
|
| Nom de la donnée | Format | Longueur | Contraintes | Document |
|
||||||
| --------------------------- | -------------- | -------- | ------------------- | ---------- |
|
| --------------------------- | -------------- | -------- | ------------------- | ---------- |
|
||||||
| Nom | Alphabétique | 30 | Obligatoire | Membre |
|
| Nom | Alphabétique | 30 | Obligatoire | Musicien |
|
||||||
| Prénom | Alphabétique | 30 | Obligatoire | Membre |
|
| Prénom | Alphabétique | 30 | Obligatoire | Musicien |
|
||||||
| Instruments | Alphabétique | 30 | Obligatoire | Membre |
|
| Instruments | Alphabétique | 30 | Obligatoire | Musicien |
|
||||||
| Adresse e-mail | Alphanumérique | 50 | Obligatoire, unique | Membre |
|
| Adresse e-mail | Alphanumérique | 50 | Obligatoire, unique | Musicien |
|
||||||
| Mot de passe | Alphanumérique | > 12 | Obligatoire | Membre |
|
| Mot de passe | Alphanumérique | > 12 | Obligatoire | Musicien |
|
||||||
| Date et heure de concert | Date | - | Obligatoire | Concert |
|
| Date et heure de concert | Date | - | Obligatoire | Concert |
|
||||||
| Lieu de concert | Alphabétique | 50 | Obligatoire | Concert |
|
| Lieu de concert | Alphabétique | 50 | Obligatoire | Concert |
|
||||||
| Tarif | Numérique | - | - | Concert |
|
| Tarif | Numérique | - | - | Concert |
|
||||||
|
|||||||
@ -119,13 +119,89 @@ Pour rappel, voici notre dictionnaire de données :
|
|||||||
|
|
||||||
| Nom de la donnée | Format | Longueur | Contraintes | Document |
|
| Nom de la donnée | Format | Longueur | Contraintes | Document |
|
||||||
| --------------------------- | -------------- | -------- | ------------------- | ---------- |
|
| --------------------------- | -------------- | -------- | ------------------- | ---------- |
|
||||||
| Nom | Alphabétique | 30 | Obligatoire | Membre |
|
| Nom | Alphabétique | 30 | Obligatoire | Musicien |
|
||||||
| Prénom | Alphabétique | 30 | Obligatoire | Membre |
|
| Prénom | Alphabétique | 30 | Obligatoire | Musicien |
|
||||||
| Instruments | Alphabétique | 30 | Obligatoire | Membre |
|
| Instruments | Alphabétique | 30 | Obligatoire | Musicien |
|
||||||
| Adresse e-mail | Alphanumérique | 50 | Obligatoire, unique | Membre |
|
| Adresse e-mail | Alphanumérique | 50 | Obligatoire, unique | Musicien |
|
||||||
| Mot de passe | Alphanumérique | > 12 | Obligatoire | Membre |
|
| Mot de passe | Alphanumérique | > 12 | Obligatoire | Musicien |
|
||||||
| Date et heure de concert | Date | - | Obligatoire | Concert |
|
| Date et heure de concert | Date | - | Obligatoire | Concert |
|
||||||
| Lieu de concert | Alphabétique | 50 | Obligatoire | Concert |
|
| Lieu de concert | Alphabétique | 50 | Obligatoire | Concert |
|
||||||
| Tarif | Numérique | - | - | Concert |
|
| Tarif | Numérique | - | - | Concert |
|
||||||
| Date et heure de répétition | Date | - | Obligatoire | Répétition |
|
| Date et heure de répétition | Date | - | Obligatoire | Répétition |
|
||||||
| Lieu de répétition | Alphabétique | 50 | Obligatoire | Répétition |
|
| Lieu de répétition | Alphabétique | 50 | Obligatoire | Répétition |
|
||||||
|
|
||||||
|
### Les entités
|
||||||
|
|
||||||
|
On va donc créer trois entités :
|
||||||
|
|
||||||
|
- **Musicien**
|
||||||
|
- **Concert**
|
||||||
|
- **Répétition**
|
||||||
|
|
||||||
|
Ces entités vont contenir les attributs que l'on a récupérés dans le dictionnaire de données.
|
||||||
|
|
||||||
|
On se retrouve pour le moment avec un MCD qui ressemble à ça :
|
||||||
|

|
||||||
|
|
||||||
|
On est déjà pas trop mal, il nous reste plus qu'à ajouter les relations entre les entités et les cardinalités !
|
||||||
|
|
||||||
|
### Les relations
|
||||||
|
|
||||||
|
On va donc ajouter les relations entre les entités.
|
||||||
|
|
||||||
|
Sachant qu'un musicien peut participer à plusieurs concerts, et qu'un concert peut avoir plusieurs musiciens, on va créer une relation entre les deux entités.
|
||||||
|
On va donc créer une relation **"Participer"** entre les entités **Musicien** et **Concert**.
|
||||||
|
|
||||||
|
On en fera une relation **0,N** - **1,N**.
|
||||||
|
|
||||||
|
Pour la répétition, on va faire la même chose !
|
||||||
|
On va créer une relation **"Répéter"** entre les entités **Musicien** et **Répétition**.
|
||||||
|
|
||||||
|
À la fin, on se retrouve avec un MCD qui ressemble à ça :
|
||||||
|

|
||||||
|
|
||||||
|
Et c'est tout ! Notre MCD est terminé... enfin presque !
|
||||||
|
|
||||||
|
### Aller plus loin
|
||||||
|
|
||||||
|
Si on souhaite aller plus loin, on peut ajouter de l'héritage.
|
||||||
|
|
||||||
|
{% callout type="note" title="Rapide point sur l'héritage" %}
|
||||||
|
L'héritage _(ou aussi appelé **spécialisation** ou **généralisation**)_ est un concept qui va nous permettre de factoriser les propriétés identiques dans une entité commune. Cette entitée est appelée **entité générique** _(ou **sur-type**)_.
|
||||||
|
|
||||||
|
Les entités qui héritent de l'entité générique sont appelées **entités spécialisées** _(ou **sous-types**)_.
|
||||||
|
{% /callout %}
|
||||||
|
|
||||||
|
En regardant bien notre MCD, on se rend compte que les entités **Concert** et **Répétition** ont des attributs communs :
|
||||||
|
|
||||||
|
- Date et heure
|
||||||
|
- Lieu
|
||||||
|
|
||||||
|
La seule différence est que le concert a un tarif, contrairement à la répétition.
|
||||||
|
On va donc pouvoir créer une entité **générique** que l'on appelera **Événement**.
|
||||||
|
|
||||||
|
Cette entité générique va contenir les attributs communs aux deux entités, et on va faire hériter les entités **Concert** et **Répétition** de cette entité.
|
||||||
|
On se retrouve donc avec ces trois entités _(**Événement**, **Concert** et **Répétition**)_ :
|
||||||
|

|
||||||
|
|
||||||
|
{% callout type="question" title="Pourquoi ne pas stocker le type d'événement ?" %}
|
||||||
|
Effectivement, on aurait pu stocker le type d'événement dans l'entité **Événement** !
|
||||||
|
Il s'agit d'une autre approche qui est tout à fait valable.
|
||||||
|
|
||||||
|
Cependant, il est plus simple de créer une entité générique qui va nous permettre de factoriser les attributs communs et éviter de devoir rendre plusieurs attributs nullables en fonction du type d'événement.
|
||||||
|
|
||||||
|
On renforce ainsi l'intégrité de la base de données.
|
||||||
|
{% /callout %}
|
||||||
|
|
||||||
|
Le MCD final ressemble donc à ça :
|
||||||
|

|
||||||
|
|
||||||
|
Si tu souhaites télécharger le MCD que l'on vient de créer, tu peux le faire ici : [MCD Merise pour Looping](/downloads/merise/band-manager.loo).
|
||||||
|
|
||||||
|
## Conclusion
|
||||||
|
|
||||||
|
En conclusion, le MCD dans Merise est un outil indispensable pour structurer et visualiser les données de manière claire et cohérente.
|
||||||
|
|
||||||
|
Grâce à des entités, des attributs, des relations et des cardinalités, le MCD permet de représenter les informations de façon abstraite, tout en restant compréhensible pour le client.
|
||||||
|
|
||||||
|
Prochaine étape : le **MLD** _(Modèle Logique de Données)_ et le **MRD** _(Modèle Relationnel de Données)_ !
|
||||||
|
|||||||
BIN
app/public/downloads/merise/band-manager.lo1
Normal file
BIN
app/public/downloads/merise/band-manager.lo1
Normal file
Binary file not shown.
BIN
app/public/downloads/merise/band-manager.loo
Normal file
BIN
app/public/downloads/merise/band-manager.loo
Normal file
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 20 KiB |
BIN
app/public/merise/mcd-2.webp
Normal file
BIN
app/public/merise/mcd-2.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
BIN
app/public/merise/mcd-3.webp
Normal file
BIN
app/public/merise/mcd-3.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
BIN
app/public/merise/mcd-4.webp
Normal file
BIN
app/public/merise/mcd-4.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
Loading…
Reference in New Issue
Block a user