1.**Clé primaire de Sandwichs** : Utiliser `Nom_Sandwich` comme clé primaire pose problème si deux sandwichs ont le même nom ou si on renomme un sandwich. Il vaudrait mieux ajouter un `ID_Sandwich`.
2.**Redondance potentielle** : Si un client commande plusieurs fois le même sandwich, le nom du sandwich est répété.
3.**Pas de gestion des quantités multiples** : Une commande ne peut contenir qu'un seul type de sandwich. Si un client veut commander 2 Cheeseburgers ET 1 Italien, il faut 2 commandes.
### Question 4 : Gestion des modifications de pseudonymes
**Problème** : Si on utilise le pseudonyme comme référence dans d'autres tables, tout changement de pseudo nécessiterait de modifier toutes les références.
**Solution** : Utiliser `ID_User` (clé primaire numérique) comme référence dans les autres tables. Ainsi, le pseudonyme peut être modifié librement dans la table Users sans impacter les autres tables.
C'est pourquoi on préfère toujours utiliser un identifiant numérique comme clé primaire plutôt qu'un attribut "métier" comme le pseudonyme.
---
## 4. Extension : Albums sur le forum
### Question 1 : Modèle Entité-Association
```
┌─────────────────┐ ┌─────────────────┐
│ USER │ │ POST │
├─────────────────┤ ├─────────────────┤
│ #ID_User (PK) │ │ #ID_Post (PK) │
│ Pseudonyme │ 1,n │ Titre │
│ Email │◄──────────────────────────┤ Contenu │
└────────┬────────┘ écrit │ Date │
│ └────────┬────────┘
│ 1,n │ 0,n
│ │
│ ┌─────────────────┐ │
└────────►│ ALBUM │ │
├─────────────────┤ │
possède │ #ID_Album (PK) │ contient │
│ Nom_Album │◄────────────────┘
│ Date_Creation │ 0,n
└─────────────────┘
```
**Cardinalités** :
- Un utilisateur possède 0 à n albums (0,n)
- Un album appartient à 1 et 1 seul utilisateur (1,1)
**Clé primaire** : Il n'y a pas de clé primaire clairement définie. On pourrait utiliser `(Nom, Prénom, Date_Naissance)` mais ce n'est pas idéal (deux élèves peuvent avoir le même nom et être nés le même jour).
**Clés étrangères** : Aucune. La table est isolée.
### Question 3 : Défauts de conception
1.**Pas de clé primaire fiable** : Le couple (Nom, Prénom) n'est pas unique (deux "Michel" existent).
2.**Violation de 1NF** : Les colonnes Option1, Option2, Option3 représentent la même information (une option). C'est une répétition de groupe.
3.**Valeurs NULL** : Beaucoup de valeurs NULL pour les options non choisies.
4.**Pas de normalisation** : La classe est répétée pour chaque élève de la même classe.
5.**Rigidité** : Si un élève prend 4 options, il faut modifier la structure de la table.
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Licence Creative Commons" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a> <br />Ce cours est mis à disposition selon les termes de la <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Licence Creative Commons Attribution - Partage dans les Mêmes Conditions 4.0 International</a>.