2009-05-14 8 views

Répondre

10

Je suppose que ErrorNumber comme une colonne dans la table est une clé primaire? Dans ce cas, vous pouvez nommer la colonne de table ErrorNumberID. Je ne sais pas s'il s'agit d'une mauvaise pratique de codage, mais je ne peux pas imaginer qu'il fasse quoi que ce soit pour la lisibilité. L'exemple que vous avez fourni est excellent pour montrer à quel point les requêtes peuvent être confuses.

L'autre chose dont je ne suis pas sûr est si ceci (noms de colonnes étant les mêmes que les noms de table) provoquerait une erreur? Je suis sûr que cela varie d'un fournisseur à l'autre.

+0

J'ai effectivement fait exactement cela –

4

Vous pouvez rester sur la valeur par défaut et nommer votre ID de clé primaire.

0

Est-ce mauvais? Peut-être un peu mais ce n'est rien de majeur.

3

Je ne pense pas que ce soit une bonne idée d'avoir une colonne qui partage le même nom avec sa table. C'est déroutant même si ça fonctionne. Essayez de renommer votre table à Erreur ou la colonne à ErrorNum ou même juste Num

0

Je suis d'accord que ce n'est rien de majeur.

Nous avons des skads de tables dans une application qui ont seulement et id et un champ "nom". Ils sont utilisés pour les listes déroulantes.

Je les ai donc mis en place comme ceci:

Le nom de la liste est: État

Le nom de la table est: État

L'ID est: stateid

La colonne de valeur de l'état réel est: StateName

Cela fonctionne pour nous.

Dans votre cas spécifique, je ferais comme suggéré ci-dessus et nommer simplement la table Error.

2

Oui, c'est le cas. La grande majorité des tableaux simples dans des modèles de données simples devraient être des noms pluriels. Dans votre exemple, la table doit être appelée "errors", avec deux colonnes, "id" et "description".

+0

description peut être un mot réservé et j'évite de les utiliser. Je pense aussi que ID est un nom terrible pour une colonne. Il vaut mieux avoir un nom d'identification descriptif. – HLGEM

0

Si un fournisseur de base de données est dérouté par cela, utilisez un autre fournisseur de base de données. Toute base de données devrait facilement analyser cela sans problème. Je suis d'accord que ce n'est pas probablement une bonne pratique pour des raisons de lisibilité.

5
CREATE TABLE Errors (
    Number int, 
    Description varchar(255) 
) 

Je me sens ci-dessus est un meilleur schéma de nommage parce que:

  • Le nom de la table représente maintenant ce qu'il est .
  • Les colonnes ne ont pas besoin du mot « erreur » en eux à cause de la table ils sont.
+1

Il existe un point de vue selon lequel un nom de colonne devrait signifier un domaine de valeurs, auquel cas ErrorNumber serait le nom correct plutôt que Number. De même, la description d'une erreur n'est pas la même que la description d'une personne (par exemple) - elle peut avoir une longueur différente, des règles différentes, etc. De ce point de vue, vous utiliserez ErrorNumber et ErrorDescription. –

+1

Tom: Le principe plus large est clair, soyez concis. Quelles règles servent dans les circonstances sont celles à utiliser, et cela change. Donc, je vais garder ce que vous dites en tête, mais pour cela, j'aime ce que j'ai écrit ci-dessus. – dwc

+0

Le numéro peut très bien être un mot réservé et j'évite de les utiliser. Le numéro d'erreur est également beaucoup plus clair dans les requêtes complexes. – HLGEM

0

est une question de forme. Personnellement, je fais la plupart des noms de table au pluriel, alors cela n'arriverait jamais. Dans ce cas particulier, ma table serait ErrorNumbers et le champ de la table serait ErrorNumber (en fait j'utiliser ErrorNumberID)

Encore une fois cependant, c'est à vous ou à vos normes de codage des entreprises. Si c'est une mauvaise forme, c'est une violation extrêmement mineure. Si quelque chose, c'est l'ID manquant sur le nom de la variable qui est plus d'une violation.

2

Je suis d'accord avec DWC, et irais un peu plus loin en nommant la table quelque chose de plus descriptif, comme dans quel type de table d'erreur c'est. S'il est utilisé pour stocker les erreurs que vous utiliserez dans votre code est une chose, et si c'est une table qui enregistre les erreurs est une autre. Vous ne savez pas exactement à quoi vous l'utilisez, c'est donc à vous de le nommer quelque chose qui a du sens pour le contexte dans lequel il est utilisé. Quand je vois une table nommée "Erreurs" je ne suis pas sûr si c'est une table de notation, ou une table de recherche utilisée pour trouver des codes d'erreur. Si c'est le dernier que peut-être quelque chose comme ErrorCodes serait un bon nom.

CREATE TABLE ErrorCodes 
(
Id int, 
Number int, 
Description varchar(255) 
) 
0

Si une table doit comporter plus d'une ligne, il est préférable d'utiliser un terme collectif comme nom. Notez que ce n'est pas la même chose que de prendre le singulier et d'ajouter un «s» par exemple. Je préfère «Personnel» et «Paie» par «Employés» et «EmployésSalaires» respectivement. Et un nom tel que 'Entités' devrait être retiré et tourné :)

À la lumière de cela, et compte tenu des colonnes de votre conception, je nommerais la table en question 'Erreurs'. Maintenant, je sais que beaucoup de codeurs préfèrent des termes singuliers pour les noms de table, mais c'est juste un style différent plutôt qu'une «mauvaise pratique de codage».

Il existe des besoins occasionnels pour des tables à une rangée, par ex. une table 'Constantes' contenant l'approximation partagée de pi à utiliser par les applications utilisant le SGBD ... mais alors le tableau 'Constantes' que j'ai à l'esprit a plusieurs colonnes pour une constante différente donc il obtient un terme collectif comme nom . Peut-être que si vos applications utilisaient seulement une constante, peut-être que vous pourriez vous retrouver avec une table appelée «Pi»?

Eh bien, un autre choix de style que j'ai fait est d'utiliser UpperCamelCase pour les noms de tables et lower_case_separated_by_underscores pour les noms de colonnes. Par conséquent, je serai encore capable de distinguer (à peu près) la table de la colonne à savoir

SELECT pi FROM Pi; 

[Et un analyseur de code tel que celui ici rend si la tâche plus facile aussi!]

En fait, J'ai tendance à utiliser des noms de corrélation de table presque exclusivement, donc je serais plus susceptible d'écrire:

SELECT P1.pi 
    FROM Pi AS P1; 

considèrent également que certains termes collectifs sont orthographiés le même que le terme singulier par exemple «espèce», «cerf», «mouton», «poisson» et probablement beaucoup d'autres ne relevant pas du règne animal, mais je suis en train de faire un bloc mental maintenant :)

Alors que je peux envisager une table SQL qui contient une colonne avec le même nom même avec ma convention de nommage de l'élément de données préféré, ce serait une occurrence rare en effet.

0

+1 pour les noms succint de dwc.

Le problème avec "un nom de colonne devrait signifier un domaine de valeurs" est qu'il néglige le contexte. Un nom de colonne existe seulement dans le contexte d'une table. Ce n'est jamais ambigu. Son domaine est contrôlé indépendamment de son nom.

La personne qui existe ne peut pas distinguer entre Errors.Description et Parts.Description et Problems.Description, ou qui assumerait que toutes les colonnes nommées Description ou Name sont tirés du même puits sacré?

Cela dit, je ne pas utiliser des termes génériques tels que Numéro ou ID pour les colonnes de clé primaire, pour une raison très différente: la colonne a besoin d'un nouveau nom où il apparaît comme une clé étrangère. Supposons que les numéros d'erreur doivent être enregistrés, disons, dans le tableau Actions. Actions.Number ne peut pas se référer à un numéro d'erreur, nous sommes donc obligés d'inventer quelque chose comme Actions.ErrorNumber. Si ça va être ErrorNumber partout ailleurs, ça pourrait tout aussi bien avoir le même nom là où ça sert de clé!

Questions connexes