64 votes

Quelle est la meilleure pratique pour nommer votre table "utilisateur" ?

Voici trois bonnes pratiques que j'essaie de suivre lorsque je nomme des tableaux :

  • Ne jamais nommer une table au pluriel (comme "users")
  • Ne jamais nommer une table en utilisant un mot clé réservé (tel que "user")
  • Ne préfixez jamais le nom de votre table par "tbl" ou un autre préfixe de type d'objet.

En gardant tout cela à l'esprit, comment recommandez-vous de nommer la table qui contiendra les identités des utilisateurs ?

0 votes

La cohérence peut être tout aussi importante que la politique elle-même.

1 votes

J'utilise une table nommée USER dans mysql avec ORM. Pourquoi dites-vous que c'est un mot-clé réservé ?

7 votes

Adil Mehmood, "user" n'est pas un mot réservé dans MySQL mais il l'est dans d'autres RDMS tels que MS SQL Server.

40voto

PerformanceDBA Points 9613

Je suis d'accord, n'utilisez pas de mots réservés, ni de formes citées, entre crochets ou échappées de mots réservés.

Nommez la table Utilisateur Personne .

Vous pourriez être intéressé par cette réponse et google pour le Norme ISO 11179 pour la dénomination Directives

9voto

Alex Howansky Points 16820

J'utilise généralement quelque chose comme membre ou compte, selon l'application. Cela dit, si vous utilisez des outils et des principes de conception modernes (par exemple, une couche d'abstraction de base de données ou un ORM avec une base de code orientée objet qui sépare la logique commerciale de l'accès aux données), la dénomination des tables n'est pas très pertinente. Vos développeurs ne devraient jamais accéder à la base de données qu'au moyen d'une interface bien définie et non en écrivant à la main du SQL qui les oblige à connaître le nom de la table. Par exemple, vous pouvez nommer la table account mais y accéder via un objet nommé User. Vos développeurs ne doivent pas penser en termes de tables, mais en termes d'objets d'accès, qui ne seront pas soumis aux mêmes restrictions de dénomination :

$user = new User($username);
$user->authenticate($password);

3voto

SirPavlova Points 133

Utilisez un synonyme. Le mot à utiliser dépend de ce que vous stockez exactement dans le tableau, mais account me semble être une bonne alternative. Si vous souhaitez utiliser une variation user j'enfreindrais la première directive que vous mentionnez, pas la deuxième ou la troisième : users est suffisamment courante pour que l'incohérence soit essentiellement mnémotechnique.

0 votes

Est déjà une table dans HSQL, donc si vous utilisez HSQL intégré pour les tests unitaires, vous vous retrouverez avec un conflit.

0 votes

Que diriez-vous de Membre ?

2voto

zappee Points 2362

N'utilisez pas de mots réservés ou de mots entre guillemets ou échappés pour les noms des tables de la base de données.

Si vous voulez vraiment faire cela, vous devez échapper les noms :

  • guillemets : " user"
  • Échappement Java + JPA : @Table(name = "\"user\"")

Je ne recommande pas du tout l'utilisation de mondes pluriels pour les noms de tables de base de données comme USERS . Il s'agit d'une MAUVAISE PRATIQUE, contraire à la convention de dénomination SQL. Les noms des tables de la base de données doivent être des noms singuliers.

Je recommande d'utiliser ACTOR pour un nom de table de base de données pour stocker les détails des utilisateurs. Ce nom est clair, compréhensible et suffisamment général. Il peut être utilisé aussi bien pour les entreprises que pour les particuliers (pas comme ex. PERSON qui ne convient qu'aux personnes, mais pas aux entreprises).

1voto

GG. Points 3063

J'utilise les règles de CakePHP même lorsque je n'utilise pas le framework :

Les noms des tables sont par convention en minuscules et au pluriel, les noms de tables à plusieurs mots étant séparés par des traits de soulignement. Par exemple, un nom de modèle de Ingredient attend le nom de la table ingredients . Nom du modèle de EventRegistration s'attendrait à un nom de table de event_registrations .

4 votes

C'est une approche intéressante, même si j'ai compris que les experts de l'OS ne seraient probablement pas d'accord avec le pluriel.

1 votes

@HK1 - l'ORM de Django fait la même chose, utilise des pluriels pour les noms de tables, ce que je n'aime pas. J'ai donc tendance à remplacer le nom de la table dans le fichier Meta informations pour la classe.

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