2010-05-01 8 views
4

Ma première question ici. J'aime tellement le site :)La bonne façon d'écrire "ID" dans les colonnes en SQL

J'ai une table SQL appelée Produit. Dans cette table je veux faire une colonne pour l'ID du produit, et je veux vraiment savoir la bonne manière d'écrire l'identification parce que je fais beaucoup de colonnes d'identification à la longue.

Ainsi est-ce: "ID" ou "Id"?

Et aussi une clé étrangère dans une autre table, est-ce que cela s'appelle ProductID ou ProductId?

Thx les gars.

Répondre

3

Personnellement, je ProductID, ProductName etc dans une table de produit et pour les FKs trop pour éviter d'avoir des colonnes d'identité et nom partout

Juste être cohérent

5

Il n'y a pas de « bonne » de le faire. Sois juste cohérent. Ma préférence personnelle est d'utiliser ProductId dans les deux tables. Si vous utilisez "ID" pour toutes vos tables et que vous vous connectez ensuite à une autre table, vous finirez probablement par les aliaser pour faire la distinction entre les deux champs ID.

+0

A voté pour ne pas prendre en charge l'utilisation de "id" comme nom de clé primaire. Cela m'a toujours semblé être le gaspillage d'une opportunité de rendre son code plus clair. –

+0

@Larry - dans le contexte de l'application, l'utilisation est presque toujours plus lisible si vous utilisez simplement 'id'. Comme dans, 'product.id' vs' product.product_id' (Rails-style). Je ne vois aucune valeur à répéter le produit dans le nom de l'entité et dans le nom de la propriété. – tvanfosson

+0

@tvanfosson La valeur est sûrement chaque fois que vous avez une requête qui retournera un ensemble de résultats avec plus de 1 champ ID (par exemple PostId, ThreadId, UserId) –

7

La capitalisation dans SQL est en grande partie une question de style de codage. La cohérence est l'aspect le plus important. Cela dit, "ProductId" ressemble un peu à "Productld" (c'est un minuscule L avant le "d"), donc je préfère "ProductID" (ou "productID" ou "product_id"). En ce qui concerne le préfixage des noms de colonnes avec des noms de tables, c'est trop dans mon livre. Products.id est suffisant; Products.productID est redondant.

0

Eh bien, "Id" est l'abréviation de "Identification" donc il "devrait" être "Id". D'autre part, il est prononcé "I-D" plutôt que "id", donc "ID" est également acceptable.

Je préférerais "ProductId" plutôt que simplement "Id" pour la clé primaire d'une table, de sorte que les deux côtés de la relation de clé étrangère correspondent.

+2

Le ça, avec le moi et le surmoi, est aussi l'une des trois parties de la psyché dans le modèle de Freud. – tvanfosson

2

Comme vous préférez. La plupart des frameworks (beaucoup de ceux que je connais?) Semblent avoir adopté un "id" minuscule pour la clé primaire et "primarykeytablename_id" pour la clé étrangère, au moins pour la convention de nommage par défaut. Je n'aime pas cette convention moi-même, puisque j'aime la clé pour avoir le même nom des deux côtés de la relation.

Ma préférence est EntityNameID aux deux endroits (par exemple ProductID, OrderID, OrderDtlID, etc.).

1

Je n'aurais probablement jamais dû prendre cette classe de psychologie, mais parce qu'il y a un mot "id", je mets toujours en majuscule l'abréviation de l'identifiant, donc j'utilise "ID". J'ai expérimenté à la fois juste en utilisant ID et ProductID pour le nom de clé primaire. Comme j'utilise LINQ et que je fais simplement correspondre la classe au concepteur, j'ai pris l'habitude de nommer les colonnes comme je le veux dans mon code. Parce que je préfère avoir product.ID que product.ProductID, j'utilise le nom plus court. Pour les clés étrangères, j'utilise le format table/colonne (sans séparateur), donc la clé étrangère deviendrait ProductID. Ce n'est pas un problème pour moi dans mon code, cependant, parce que j'utilise presque toujours l'entité mappée, par exemple, cart.Product plutôt que la clé elle-même, cart.ProductID.

EDIT: note Je suppose une cible du framework .NET, en utilisant (principalement) les conventions de nommage de .NET. Si je faisais du développement Rails, ceux-ci seraient probablement en minuscules et j'utiliserais des underscores comme séparateurs.

+0

Pour INNER JOINS, vous pouvez évidemment utiliser le nom le plus long de la table de référence mais probablement complique OUTER JOINS si vous avez 2 tables à la fois avec des colonnes nommées ID? Ou est-ce que cela ne vient jamais avec LINQ? –

+0

@Martin - J'admettrai pleinement que je me soucie moins du SQL et plus de la traduction en code (mes classes). YMMV. Dans LINQ, je suis généralement mappé sur une variable nommée de manière appropriée pour désambiguïser les colonnes id. Si je sélectionnais seulement les identifiants, ils iraient probablement dans un type anonyme et je créerais des "propriétés" dans ce type avec des noms non ambigus. C'est un événement relativement rare et je suis prêt à y faire face pour la simplicité dans le cas général. – tvanfosson

0

J'ai tendance à ne pas avoir 'id' ou 'ID'.

Je vais toujours pour Table - productName

pkProductName ProductName fkProductCode

et une table - ProductCode pkProductCode productCode

même lorsque vous utilisez SQL ou dans le code des relations sont explicites et significatifs.

Questions connexes