web-dev-qa-db-fra.com

Existe-t-il une convention de nommage pour MySQL?

Voici comment je le fais:

  1. Les noms de table sont en minuscule, utilisent des tirets bas pour séparer les mots et sont singuliers (par exemple, "foo", "foo_bar", etc.).
  2. J'ai généralement (pas toujours) une PK à incrémentation automatique. J'utilise la convention suivante: tablename_id (par exemple, 'foo_id', 'foo_bar_id', etc.).
  3. Lorsqu'une table contient une colonne qui est une clé étrangère, je copie simplement le nom de la colonne de cette clé à partir de la table d'où elle provient. Par exemple, disons que la table 'foo_bar' a le FK 'foo_id' (où 'foo_id' est la PK de 'foo').
  4. Lors de la définition des FK pour appliquer l’intégrité référentielle, j’utilise les éléments suivants: nom_table_fk_nom_colonne (par exemple, pour l’exemple 3, il s’agirait de 'foo_bar_foo_id'). S'agissant d'une combinaison nom de table/nom de colonne, il est garanti qu'elle est unique dans la base de données.
  5. J'ordonne les colonnes comme ceci: PK, FK, puis le reste des colonnes par ordre alphabétique

Existe-t-il un moyen plus simple et plus standard de procéder?

138

Je dirais d’abord et avant tout: soyez cohérent.

Je pense que vous y êtes presque avec les conventions que vous avez décrites dans votre question. Quelques commentaires cependant:

Les points 1 et 2 sont bons, je pense.

Point 3 - malheureusement, ce n'est pas toujours possible. Pensez à la façon dont vous feriez face à une seule table foo_bar qui a des colonnes foo_id et another_foo_id qui font tous deux référence à la foo table foo_id colonne. Vous voudrez peut-être réfléchir à la façon de gérer cela. C'est un peu un cas de coin cependant!

Point 4 - Similaire au point 3. Vous pouvez éventuellement introduire un nombre à la fin du nom de la clé étrangère pour prendre en charge plusieurs colonnes de référence.

Point 5 - Je voudrais éviter cela. Il vous fournit peu et deviendra un casse-tête lorsque vous souhaitez ajouter ou supprimer des colonnes d'une table à une date ultérieure.

Quelques autres points sont:

Conventions de dénomination des index

Vous voudrez peut-être introduire une convention de nommage pour les index - ce sera une aide précieuse pour tout travail sur les métadonnées de base de données que vous voudrez peut-être effectuer. Par exemple, vous voudrez peut-être simplement appeler un index foo_bar_idx1 ou foo_idx1 _ totalement à vous mais mérite d'être considéré.

Noms de colonne singulier ou pluriel

Il serait peut-être judicieux d’aborder la question épineuse du pluriel contre célibataire dans vos noms de colonne, ainsi que le nom de votre table. Ce sujet provoque souvent grands débats dans la communauté DB. Je voudrais coller avec des formes singulières pour les noms de table et les colonnes. Là. Je l'ai dit.

La chose principale ici est bien sûr la cohérence!

93
Tom Mac

La cohérence est la clé de toute norme de nommage. Tant que c'est logique et cohérent, vous y êtes à 99%.

La norme elle-même est une préférence très personnelle. Si vous aimez votre norme, utilisez-la.

Pour répondre directement à votre question - non, MySQL n’a pas de convention/nom de nommage préféré, alors rouler vous-même est acceptable (et le vôtre semble logique).

19
mal-wan

MySQL a une courte description de leurs règles plus ou moins strictes:

https://dev.mysql.com/doc/internals/en/coding-style.html

Le style de code le plus courant pour MySQL par Simon Holywell:

http://www.sqlstyle.guide/

Voir aussi cette question: Existe-t-il des directives concernant le style de codage publiées pour SQL?

7
Daniel W.

Heureusement, PHP), les développeurs ne sont pas des "camel cas bigots" comme certaines communautés de développement que je connais.

Vos conventions sonnent bien.

Tant qu'ils sont a) simples et b) cohérents - je ne vois aucun problème :)

PS: Personnellement, je pense que 5) est exagéré ...

4
paulsm4