Champ supplémentaire ou table supplémentaire

ViPHP
ViPHP | 2144 Messages

04 janv. 2006, 13:14

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

Mammouth du PHP | 19672 Messages

04 janv. 2006, 13:24

Pour ma part, je ferais deux tables justement pour limiter les possibilités de champs avec des valeurs NULL.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 441 Messages

04 janv. 2006, 13:26

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:
Futures Stars par ici >> www.apel-doorn.com
fan d'info et du ... PSG !! :D
Apprendre, comprendre et maîtriser telle est ma devise!
Fan inconditionnel de netvibes

Administrateur PHPfrance
Administrateur PHPfrance | 1275 Messages

04 janv. 2006, 15:02

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.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

04 janv. 2006, 15:17

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 2144 Messages

04 janv. 2006, 18:10

Merci pour vos interessants avis.
Au final, je vais tous faire dans une table. ;)

Administrateur PHPfrance
Administrateur PHPfrance | 1275 Messages

04 janv. 2006, 18:36

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: