¿Existe una convención de nomenclatura para MySQL?


Así es como lo hago:

  1. Los nombres de las tablas son minúsculas, usan guiones bajos para separar palabras y son singulares (por ejemplo, 'foo', 'foo_bar', etc.
  2. Generalmente (no siempre) tengo un PK de incremento automático. Utilizo la siguiente convención: tablename_id (por ejemplo, 'foo_id', 'foo_bar_id', etc.).
  3. Cuando una tabla contiene una columna que es una clave foránea, simplemente copio el nombre de la columna de esa clave de cualquier tabla de la que proviene. Por ejemplo, decir tabla 'foo_bar' tiene el FK ' foo_id '(donde 'foo_id' es la PK de 'foo').
  4. Al definir FKs para hacer cumplir la integridad referencial, utilizo lo siguiente: tablename_fk_columnname (por ejemplo, continuando el ejemplo 3, sería 'foo_bar_foo_id'). Dado que se trata de una combinación de nombre de tabla/nombre de columna, se garantiza que será única dentro de la base de datos.
  5. Ordeno las columnas de esta manera: PKs, FKs, luego el resto de columnas alfabéticamente

¿Hay una forma mejor y más estándar de hacer esto?

Author: StackOverflowNewbie, 2011-10-26

4 answers

Yo diría que en primer lugar: ser coherente.

Creo que estás casi ahí con las convenciones que has esbozado en tu pregunta. Un par de comentarios sin embargo:

Los puntos 1 y 2 son buenos, creo.

Punto 3 - lamentablemente esto no siempre es posible. Piense en cómo haría frente a una sola tabla foo_bar que tiene columnas foo_id y another_foo_id que hacen referencia a la columna foo table foo_id. Es posible que desee considerar cómo lidiar con esto. Este es un un poco de un caso de esquina sin embargo!

Punto 4 - Similar al punto 3. Es posible que desee introducir un número al final del nombre de la clave foránea para tener más de una columna de referencia.

Punto 5 - Yo evitaría esto. Le proporciona poco y se convertirá en un dolor de cabeza cuando desee agregar o eliminar columnas de una tabla en una fecha posterior.

Algunos otros puntos son:

Convenciones de nomenclatura del índice

Es posible que desee introducir una convención de nomenclatura para índices - esto será una gran ayuda para cualquier trabajo de metadatos de base de datos que desee llevar a cabo. Por ejemplo, es posible que solo desee llamar a un índice foo_bar_idx1 o foo_idx1, totalmente a su elección, pero vale la pena considerarlo.

Nombres de Columna singular vs Plural

Podría ser una buena idea abordar el espinoso problema de plural vs single en los nombres de las columnas, así como en los nombres de las tablas. Este tema a menudo causa grandes debates en la comunidad DB. Yo me quedaría con formas singulares para nombres de tabla y columnas. Alli. Lo he dicho.

Lo principal aquí es, por supuesto, la consistencia!

 84
Author: Tom Mac,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:34:38

La consistencia es la clave de cualquier estándar de nomenclatura. Siempre y cuando sea lógico y consistente, estás 99% allí.

El estándar en sí es una preferencia muy personal, por lo que si le gusta su estándar, ejecute con él.

Para responder a su pregunta directamente - no, MySQL no tiene una convención/estándar de nomenclatura preferido, por lo que rodar el suyo está bien (y el suyo parece lógico).

 16
Author: mwan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-26 06:16:01

MySQL tiene una breve descripción de sus reglas más o menos estrictas:

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

El estilo de código más común para MySQL por Simon Holywell:

Http://www.sqlstyle.guía/

Ver también esta pregunta: ¿Hay alguna guía de estilo de codificación publicada para SQL?

 6
Author: DanFromGermany,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:34:38

Afortunadamente, los desarrolladores de PHP no son "fanáticos de Camel case" como algunas comunidades de desarrollo que conozco.

Sus convenciones suenan bien.

Siempre y cuando sean a) simples, y b) consistentes-No veo ningún problema:)

PS: Personalmente, creo que 5) es exagerado...

 4
Author: paulsm4,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-19 04:44:33