2011-09-13 3 views
1

Je sais que c'est assez élémentaire mais ici ça va.Question SQL générale sur les clés primaires

Je voudrais savoir comment vous savez quelles colonnes sont une clé primaire dans une table qui n'a pas de clé primaire? Y a-t-il une technique ou quelque chose que je devrais lire?

Nous vous remercions à l'avance

+1

Cette question revient à demander quel type de voiture je devrais acheter. Tant de variables "ça dépend", ce n'est pas drôle.Fondamentalement, vous regardez les données et vous vous demandez, comment puis-je identifier une rangée de façon unique? –

Répondre

4

Vous devez jeter un coup d'œil à vos structures de données.

Une clé primaire doit:

  • jamais être NULL (aucune exception)
  • fiable et identifie de façon unique chaque ligne unique

et aide si c'est

  • petit et facile à utiliser
  • stable (ne change pas du tout, ou du moins pas souvent)
  • une seule colonne (ou au plus deux)

Vérifiez vos données - qui colonnes ou un ensemble de colonnes peuvent remplir ces exigences ?? Une fois que vous avez ces clés primaires potentielles (les «clés candidates») - pensez à la façon dont vous allez accéder aux données, et quelles autres données pourraient avoir besoin d'être associées à cette entité en question - qu'est-ce qui aurait du sens en tant que clé étrangère? Voulez-vous faire référence à votre ministère par son nom? Probablement pas une bonne idée, puisque le nom pourrait être mal orthographié, il pourrait changer avec le temps etc. Par le bureau du département? Mauvais choix aussi. Mais quelque chose comme un "ID de département" unique pourrait être une bonne idée.

Si vous ne trouvez pas de colonne (s) appropriée (s) dans vos données réelles qui pourraient servir de clé primaire et aurait du sens, il est courant d'introduire une "clé de substitution" - une colonne supplémentaire, souvent INT (et souvent quelque chose comme un "auto-incrément" INT) qui servira d'identifiant artificiel pour chaque rangée. Si vous faites cela, une pratique d'excellence courante consiste à ne jamais montrer cette clé artificielle sur un écran de données - cela n'a aucun sens pour les utilisateurs de votre système - alors ne leur montrez même pas.

La vérification de ces exigences, et beaucoup d'expérience, vous aidera à trouver la bonne clé primaire.

+0

Merci marc_s cela résume ainsi que d'autres suggestions ici. – Maximus

+0

La minimalité est également une exigence (une clé candidate doit être * irréductiblement * unique et non seulement unique). – sqlvogel

+0

"une seule colonne (ou au plus deux)" semble être entièrement arbitraire. – onedaywhen

1

Cela dépend vraiment de données elles-mêmes. Vous devez déterminer quels champs peuvent être utilisés pour identifier l'enregistrement de façon unique.

+0

Merci bluefeet J'étais penché de cette façon mais j'étais un peu confus par les données. – Maximus

+1

@Maximus il variera absolument de table en table. Au lieu de poser une question générale, pourquoi ne pas vous exercer en vous interrogeant sur le tableau spécifique où les données vous rendent confus? –

+0

@Aaron Je voudrais faire cela mais la table est énorme et les données sont liées aux ressources humaines donc je ne pense pas que mon employeur aimerait que je l'affiche :-) – Maximus

0

Sur le serveur SQL, une clé apparaît à côté. C'est généralement ID ou quelque chose avec ID dedans. C'est aussi unique et typiquement incrémente. Quand vous le regardez en SQL. Studio de gestion de serveur sous la conception de table, vous le verrez vers le haut de la liste des colonnes avec l'icône de la clé Lil.

C'est un identifiant unique qui déchiffre chaque enregistrement les uns des autres. Un peu comme la façon dont chaque personne a un SSN.

Questions connexes