Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 03/06/2014 15:26:50
- zeb
- Membre
Id avec clé étrangère ou nom directement dans une seule table
Imaginons une entité voiture avec un nom et une couleur. Faut-il mieux créer une table couleur avec un id et un nom_couleur avec une clé étrangère couleur_id dans la table voiture OU n'avoir qu'une seule table voiture dans laquelle j'indique directement le nom de la couleur.
Quelles sont les avantages et inconvénients des 2 façons ?
Hors ligne
#2 03/06/2014 17:37:10
- rjuju
- Administrateur
Re : Id avec clé étrangère ou nom directement dans une seule table
Bonjour,
une clé étrangère permet de vous assurer que la couleur est bien renseignée dans votre table, il n'est donc pas possible d'utiliser une couleur qui n'existe pas. Personnellement, j'utiliserais une clé étrangère, mais sans clé technique. Le nom de la couleur est à priori une clé naturelle suffisante (sauf si vous voulez prévoir une application multilingue ou ce genre de chose).
Julien.
https://rjuju.github.io/
Hors ligne
#3 04/06/2014 10:57:33
- zeb
- Membre
Re : Id avec clé étrangère ou nom directement dans une seule table
OK ça c'est clair maintenant en ce qui concerne la jointure n'est-il pas plus rapide d'utiliser un id (clé technique) plutôt que la clé naturelle (ici la couleur). En terme de performance si j'ai de nombreuses tables complexes avec de nombreuses jointures et de nombreuses données, la clé technique n'était-elle pas préférable ?
Hors ligne
#4 04/06/2014 11:21:29
- rjuju
- Administrateur
Re : Id avec clé étrangère ou nom directement dans une seule table
Utiliser la clé naturelle (le nom de la couleur dans le cas présent) permet justement d'éviter une jointure, la validité du contenu du champ étant assurée par la clé étrangère.
Julien.
https://rjuju.github.io/
Hors ligne
#5 04/06/2014 11:49:11
- arthurr
- Membre
Re : Id avec clé étrangère ou nom directement dans une seule table
pour moi, l'avantage de la clef technique (un id de type int2 ou int4) = stockage plus petit en base qu'un champs texte
Hors ligne
#6 04/06/2014 11:58:50
- zeb
- Membre
Re : Id avec clé étrangère ou nom directement dans une seule table
OK donc pour optimiser une BDD il faut éviter les jointures sauf si nécessaire.
Hors ligne
#7 04/06/2014 13:48:41
- arthurr
- Membre
Re : Id avec clé étrangère ou nom directement dans une seule table
faire une jointure avec une table de quelques dizaines de lignes ne coûte pas grand chose.
Hors ligne