Comment créez-vous vos clefs primaires ? La question peut paraitre idiote,
je sais, mais j'hésite entre deux options. J'aimerais savoir celle qui
aurait votre préférence, et pourquoi ! Il se peut aussi que vous procédiez
différement de ce que je vais vous proposer... Bref, vos avis motivés
m'interessent !
Soit une table avec 7 colonnes (A,B,C,D,E,F,G)
Supposons maintenant que A, B et C permettent d'identifier un unique
enregistrement de la table et soient donc "candidates naturelles" pour
constituer la clef primaire
Pour fixer les idées, A, B et C pourraient être un code société, un code
client, et un code représentant, et il s'agirait alors donc de stocker des
informations pour un (code société, code client) et un code représentant.
C'est juste pour fixer les idées. Ce peut être n'importe quoi d'autre...
A partir de là, comment procédez-vous ?
A) Vous créez la table avec ses 7 colonnes, et A,B,C comme clef primaire
B) Vous créez une table comportant 8 colonnes ( ID, A, B, C, D, E, F, G )
avec un index unique sur (A, B, C) et ID comme clef primaire où ID est un
"numéro d'enregistrement" attribué par vos soins ou par le SGBD (par
exemple une colonne IDENTITY sous SqlServer)
Jadis, j'aurais opté pour la réponse A) tout simplement parce que je
ne songeais pas à la B) ! Maintenant, j'ai un assez fort penchant pour la
réponse B) et ce pour une question de clarté et pour ne pas trainer une
"grande" clef primaire (qui peut être reprise dans d'autres tables : clef
étrangères par exemple)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Ambassadeur Kosh
B) Vous créez une table comportant 8 colonnes ( ID, A, B, C, D, E, F, G ) avec un index unique sur (A, B, C) et ID comme clef primaire où ID est un "numéro d'enregistrement" attribué par vos soins ou par le SGBD (par exemple une colonne IDENTITY sous SqlServer)
tout pile. je prend B, je jette A. ça s'appelle découle d'un truc qui s'appelle "la forme normale de Boyce and Cot" (cot codec ?) c'est une forme qui a certaines vertus !
et puis c'est pratique pour les combos. il y'a la valeur affichée, et la valeur qui sert de clef. et en général, cette valeur clef, c'est un Guid, un int, voire un object. mais pas une collection de couples champs valeurs.
Et pourquoi ?
ben demande à ton sgbd combien ça lui pompe en perfs. et puis d'un point de vue sémmantique, c tout de suite plus clair. en definitive, un sgbd c'est l'implantation, mais autant rester le plus descriptif possible pour éviter la noyade. et ça, ben c'est une bonne bouée.
B) Vous créez une table comportant 8 colonnes ( ID, A, B, C, D, E, F, G )
avec un index unique sur (A, B, C) et ID comme clef primaire où ID est un
"numéro d'enregistrement" attribué par vos soins ou par le SGBD (par
exemple une colonne IDENTITY sous SqlServer)
tout pile.
je prend B, je jette A.
ça s'appelle découle d'un truc qui s'appelle "la forme normale de Boyce and
Cot" (cot codec ?)
c'est une forme qui a certaines vertus !
et puis c'est pratique pour les combos. il y'a la valeur affichée, et la
valeur qui sert de clef. et en général, cette valeur clef, c'est un Guid, un
int, voire un object. mais pas une collection de couples champs valeurs.
Et pourquoi ?
ben demande à ton sgbd combien ça lui pompe en perfs. et puis d'un point de
vue sémmantique, c tout de suite plus clair.
en definitive, un sgbd c'est l'implantation, mais autant rester le plus
descriptif possible pour éviter la noyade. et ça, ben c'est une bonne bouée.
B) Vous créez une table comportant 8 colonnes ( ID, A, B, C, D, E, F, G ) avec un index unique sur (A, B, C) et ID comme clef primaire où ID est un "numéro d'enregistrement" attribué par vos soins ou par le SGBD (par exemple une colonne IDENTITY sous SqlServer)
tout pile. je prend B, je jette A. ça s'appelle découle d'un truc qui s'appelle "la forme normale de Boyce and Cot" (cot codec ?) c'est une forme qui a certaines vertus !
et puis c'est pratique pour les combos. il y'a la valeur affichée, et la valeur qui sert de clef. et en général, cette valeur clef, c'est un Guid, un int, voire un object. mais pas une collection de couples champs valeurs.
Et pourquoi ?
ben demande à ton sgbd combien ça lui pompe en perfs. et puis d'un point de vue sémmantique, c tout de suite plus clair. en definitive, un sgbd c'est l'implantation, mais autant rester le plus descriptif possible pour éviter la noyade. et ça, ben c'est une bonne bouée.