Lors de la conception des tables, j'ai pris l'habitude d'avoir une colonne unique et que je crée la clé primaire. Ceci est réalisé de trois manières en fonction des besoins:
- Colonne entière d'identité qui s'incrémente automatiquement.
- Identifiant unique (GUID)
- Une colonne de caractère court (x) ou d'entier (ou tout autre type numérique relativement petit) qui peut servir de colonne d'identifiant de ligne
Le numéro 3 serait utilisé pour une recherche assez petite, principalement des tables de lecture qui pourraient avoir un code de chaîne de longueur statique unique ou une valeur numérique telle qu'une année ou un autre nombre.
Pour la plupart, toutes les autres tables auront soit un entier à incrémentation automatique, soit une clé primaire à identifiant unique.
La question :-)
J'ai récemment commencé à travailler avec des bases de données qui n'ont pas d'identifiant de ligne cohérent et les clés primaires sont actuellement regroupées sur différentes colonnes. Quelques exemples:
- date / caractère
- date / entier
- datetime / varchar
- char / nvarchar / nvarchar
Y a-t-il un cas valable pour cela? J'aurais toujours défini une colonne d'identité ou d'identifiant unique pour ces cas.
De plus, il existe de nombreuses tables sans clé primaire. Quelles sont les raisons valables, le cas échéant, à cela?
J'essaie de comprendre pourquoi les tables ont été conçues telles qu'elles étaient, et cela semble être un gros gâchis pour moi, mais il y avait peut-être de bonnes raisons à cela.
Une troisième question pour m'aider à déchiffrer les réponses: dans les cas où plusieurs colonnes sont utilisées pour comprendre la clé primaire composée, y a-t-il un avantage spécifique à cette méthode par rapport à une clé de substitution / artificielle? Je pense principalement à la performance, à la maintenance, à l'administration, etc.?