Page 1 sur 1

Champ supplémentaire ou table supplémentaire

Posté : 04 janv. 2006, 13:14
par iclo
Bonjour,

C'est un peu une question de philosophie, mais je m'interroge sur le meilleur choix.
Vaut-il mieux avoir une table unique, dont certains champs ne seront que peu utilisés (on va dire moins de 20% des fois), ou bien construire une table annexe, qui complêtera la table principale lorsque que c'est nécessaire.

ex de structure tout dans une table.:

idmembre, nom, prenom, Etudes, passion, fonction

ex de structure avec table auxilliaire:

table principale:
idmembre, nom, prenom

table supplémentaire:
idMembre, Etudes, passion, fonction

En sachant que les champs :Etudes, passion, fonction doivent pouvoir contenir des textes de 250 caractères . et qu'ils sont remplis ensemble: soit tous remplis, soit aucun.
et que ces données seront éssentiellement consultées, et rarement mise à jour.

Votre opinion m'interesse beaucoup :D
Merci

Posté : 04 janv. 2006, 13:24
par Cyrano
Pour ma part, je ferais deux tables justement pour limiter les possibilités de champs avec des valeurs NULL.

Posté : 04 janv. 2006, 13:26
par starkeus
BAh j'ai peu d'expériences professionnelles niveau BD en production mais je pense honnêtement que cela dépend du critère que tu te fixes.
Si ton objectif est la performance de la base: je dirai une table complète (mais discutable car par tu peux très bien utiliser des indexs si tu utilises la table annexe)
Si c'est l'économie d'espace disque: la table annexe...(mais là ca t'oblige à faire une jointure...)
Un peu simpliste comme réponse mais bon je ne suis pas une star non plus :wink:

Posté : 04 janv. 2006, 15:02
par Damien
Perso je fais au cas par cas. Séparer en plusieurs tables n'est pas forcément moins rapide, tout dépend du contexte d'utilisation.

Mais dans ce cas là je ne pense pas que séparer les tables soit bien utile, sauf si tu désires les séparer pour des questions de lisibilité. Trois champs varchar vides prennent 3 octets, soit la taille d'un mediumint.

Posté : 04 janv. 2006, 15:17
par zeus
Dans le cas précis que tu donnes, je pense que une seule table suffira

La cardinalité entre les tables sera de 1:1 et comme le dit Damien, la place prise par les VARCHAR vides est insignifiante.

A mon avis, tu perdras plus de temps à faire un jointure entre les tables que tu ne vas gagner de place en créant 2 tables

Posté : 04 janv. 2006, 18:10
par iclo
Merci pour vos interessants avis.
Au final, je vais tous faire dans une table. ;)

Posté : 04 janv. 2006, 18:36
par Damien
En fait selon ton nombre d'entrées 2 tables peuvent même prendre plus de place qu'une seule (la clef supplémentaire, l'index...) :wink: