191 votes

Schéma de nommage de clé étrangère

Je suis juste de commencer en collaboration avec les clés étrangères pour la première fois et je me demande si il y a un schéma de nommage standard à utiliser pour eux ?

Compte tenu de ces tables :

Où les tâches ont Notes, tâches sont détenues par les utilisateurs et utilisateurs auteur Notes.

Comment les trois clés étrangères seraient nommés dans cette situation ? Ou sinon, est-il encore important du tout?

Mise à jour: cette question porte sur les noms de clé étrangères, pas les noms de champ !

218voto

Greg Beech Points 55270

La convention standard de SQL Server:

FK_ForeignKeyTable_PrimaryKeyTable

Ainsi, par exemple, la clé entre les notes et les tâches seraient:

FK_note_task

Et la clé entre les tâches et les utilisateurs seraient:

FK_task_user

Cela vous donne un coup d'œil " vue de tables qui sont impliqués dans la clé, de sorte qu'il est facile de voir les tables particulier (le premier nommé) dépend (le deuxième nom). Dans ce scénario, le jeu complet de clés seraient:

FK_task_user
FK_note_task
FK_note_user

Donc vous pouvez voir que les tâches dépendent des utilisateurs, et les notes dépendent à la fois des tâches et des utilisateurs.

54voto

onedaywhen Points 24594

J’ai utiliser deux caractères de soulignement comme délimiteur c'est-à-dire

C’est parce que les noms de table contiendra parfois eux-mêmes des caractères de soulignement. Ceci fait suite à la convention de nommage pour les contraintes généralement parce que les noms des éléments de données contiendra souvent des caractères de soulignement par exemple

21voto

EvilTeach Points 12235
<blockquote>qu’en est-il FK_TABLENAME_COLUMNNAME ?</blockquote> <p><strong>K</strong>eep <strong>je</strong>t <strong>S</strong>imple <strong>S</strong>tupid si jamais possible</p>

17voto

bvj Points 620

Une note de Microsoft concernant SQL Server:

Une contrainte de CLÉ ÉTRANGÈRE ne doit pas être uniquement liée à une PRIMAIRE Contrainte de CLÉ dans une autre table; elle peut également être définie de référence les colonnes d'une contrainte UNIQUE dans une autre table.

donc, je vais utiliser des termes décrivant la dépendance à la place du classique primaires, étrangères, les conditions des relations.

Lors de la référence à la CLÉ PRIMAIRE de l' indépendant (parent) table par le même nom que la colonne(s) à charge (enfant) de la table, je omettre le nom de la colonne(s):

FK_ChildTable_ParentTable

Lors de la référence à d'autres colonnes, ou les noms de colonne de varier entre les deux tables, ou tout simplement pour être explicite:

FK_ChildTable_childColumn_ParentTable_parentColumn

10voto

Steve Moyer Points 4312

J'ai l'habitude de laisser mon PK nommée id, et puis concaténer mon nom de la table et de la colonne de clé nom pour nommer les FKs dans les autres tables. Je n'ai jamais embêter avec des chameaux boîtier, parce que certaines bases de données jeter de la casse et il suffit de retourner tous les cas supérieure ou inférieure noms de toute façon. En tout cas, voici ce que ma version de vos tables ressemblerait à:

task (id, userid, title);
note (id, taskid, userid, note);
user (id, name);

Notez que j'ai aussi le nom de mes tables au singulier, car une ligne représente l'un des objets je suis de la persistance. La plupart de ces conventions sont de préférence personnelle. Je suggère qu'il est plus important de choisir une convention et utilisez-le toujours, que c'est l'adopter quelqu'un d'autre convention.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X