Lors de la conception des tables, j'ai développé une habitude d'avoir une colonne qui est unique et que je fais de la clé primaire. Ceci est réalisé de trois façons selon les besoins:
- L'identité colonne de type integer qui auto-incréments.
- Identifiant Unique (GUID)
- Un court de caractère(x) ou entier (ou autres relativement faible de type numérique) de la colonne qui peut servir comme un identificateur de ligne de colonne
Numéro 3 serait utilisé pour assez petite recherche, principalement en lecture des tableaux qui pourraient avoir une statique unique chaîne de longueur de code, ou une valeur numérique, par exemple un an ou un autre numéro.
Pour la plupart, toutes les autres tables, à une auto-incrémentation entier ou l'identifiant unique de la clé primaire.
La Question :-)
J'ai récemment commencé à travailler avec des bases de données qui ne sont pas cohérents identificateur de ligne et les clés primaires sont actuellement en cluster à travers les différentes colonnes. Quelques exemples:
- datetime/caractère
- datetime/entier
- datetime/varchar
- char/nvarchar/nvarchar
Est-il valide? J'aurais toujours défini une identité ou l'identifiant unique de la colonne pour ces cas.
En outre, il existe de nombreuses tables sans les clés primaires. Quelles sont les raisons valables, le cas échéant, pour cela?
J'essaie de comprendre pourquoi les tableaux ont été conçus comme ils étaient, et il semble être un gros gâchis pour moi, mais peut-être y avait de bonnes raisons pour cela.
MODIFIER
OK... Wow! Beaucoup de réponses et la discussion. Je suppose que j'ai frappé sur un sujet qui est un peu religieux sans s'en rendre compte. :-)
Une troisième question de faire en sorte de m'aider à déchiffrer les réponses: Dans le cas où plusieurs colonnes sont utilisés pour contenir le composé de la clé primaire, est-il un avantage spécifique à cette méthode par rapport à un substitut/artificiel clé? Je pense surtout en ce qui concerne la performance, la maintenance, l'administration, etc.?
EDIT 2
Il y a beaucoup de bonnes réponses ici, et il a été difficile de choisir le "meilleur", donc j'ai choisi celui que je pensais être utile, mais n'a pas reçu autant de voix, et voté les autres qui l'ont aidé à répondre à ma question.