Así es como lo hago:
- Los nombres de las tablas están en minúsculas, usan guiones bajos para separar las palabras y son singulares (p
foo
. Ej .foo_bar
, Etc. - Generalmente (no siempre) tengo un PK de incremento automático. Utilizo la siguiente convención:
tablename_id
(por ejemplofoo_id
,foo_bar_id
, etc.). - Cuando una tabla contiene una columna que es una clave externa, solo copie el nombre de la columna de esa clave de la tabla de la que provenga. Por ejemplo, digamos que la tabla
foo_bar
tiene el FKfoo_id
(dondefoo_id
es el PK defoo
). - Cuando defino FK para hacer cumplir la integridad referencial, utilizo lo siguiente:
tablename_fk_columnname
(por ejemplo, si avanza el ejemplo 3, seríafoo_bar_foo_id
). Como se trata de una combinación de nombre de tabla / nombre de columna, se garantiza que será única dentro de la base de datos. - Ordeno las columnas de esta manera: PK, FK, luego el resto de columnas alfabéticamente
¿Hay una manera mejor y más estándar de hacer esto?
mysql
naming-conventions
mysql-workbench
StackOverflowNewbie
fuente
fuente
id_tableB
=> oh no hay una columna con un nombre diferenteid
, la consistencia deid_tableB
=>id_tableB
simplemente se ve más ordenada ... o como lo hace OP:foo_id
=> enfoo_id
lugar defoo_id
=>id
Respuestas:
Yo diría que ante todo: ser coherente.
Creo que ya casi está allí con las convenciones que ha esbozado en su pregunta. Sin embargo, un par de comentarios:
Los puntos 1 y 2 son buenos, creo.
Punto 3: lamentablemente esto no siempre es posible. Piense en cómo manejaría una sola tabla
foo_bar
que tiene columnasfoo_id
yanother_foo_id
las cuales hacen referencia a lafoo
tablafoo_id
columna de . Es posible que desee considerar cómo lidiar con esto. ¡Sin embargo, este es un caso de esquina!Punto 4: similar al punto 3. Es posible que desee introducir un número al final del nombre de la clave externa para tener más de una columna de referencia.
Punto 5: 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 de índice
Es posible que desee introducir una convención de nomenclatura para índices; esta será una gran ayuda para cualquier trabajo de metadatos de base de datos que desee realizar. Por ejemplo, es posible que solo desee llamar a un índice
foo_bar_idx1
ofoo_idx1
, totalmente de usted, pero vale la pena considerar.Nombres de columnas singulares vs plurales
Puede ser una buena idea abordar el tema espinoso de plural vs simple en los nombres de las columnas, así como en los nombres de la tabla. Este tema a menudo causa grandes debates. en la comunidad DB. Me quedaría con formas singulares para los nombres de las tablas y las columnas. Ahí. Lo he dicho
¡Lo principal aquí es, por supuesto, la consistencia!
fuente
documenttype
odocument_type
. Preferiría la última, pero la mayoría de las veces tengo una relación de muchos a muchos y necesito una mesa similardocument_document_type
. ¿Alguna sugerencia sobre cómo manejar esto?La consistencia es la clave de cualquier estándar de nombres. Mientras sea lógico y consistente, estará 99% allí.
El estándar en sí es una preferencia muy personal, así que si te gusta tu estándar, entonces ejecútalo.
Para responder a su pregunta directamente, no, MySQL no tiene una convención / estándar de nomenclatura preferida, por lo que rodar la suya está bien (y la suya parece lógica).
fuente
MySQL tiene una breve descripción de sus reglas más o menos estrictas:
https://dev.mysql.com/doc/internals/en/coding-style.html
Estilo de codificación más común para MySQL por Simon Holywell:
http://www.sqlstyle.guide/
Consulte también esta pregunta: ¿Existen pautas de estilo de codificación publicadas para SQL?
fuente
Afortunadamente, los desarrolladores de PHP no son "fanáticos de los casos de camellos" como algunas comunidades de desarrollo que conozco.
Tus convenciones suenan bien.
Siempre y cuando sean a) simples yb) consistentes: no veo ningún problema :)
PD: Personalmente, creo que 5) es excesivo ...
fuente
Respuesta simple: NO
Bueno, al menos una convención de nomenclatura como tal fomentada por Oracle o la comunidad, no, sin embargo, básicamente debe ser consciente de seguir las reglas y límites para los identificadores, como se indica en la documentación de MySQL: https://dev.mysql.com /doc/refman/8.0/en/identifiers.html
Sobre la convención de nomenclatura que sigues, creo que está bien, solo el número 5 es un poco innecesario, creo que la mayoría de las herramientas visuales para administrar bases de datos ofrecen una opción para ordenar los nombres de columna (uso DBeaver, y lo tiene), así que Si el propósito es tener una buena presentación visual de su tabla, puede usar esta opción que menciono.
Por experiencia personal, recomendaría esto:
lower_case_table_names
no está configurado correctamente y su servidor comienza a arrojar errores simplemente al no reconocer su estándar camelCase o PascalCase (problema de mayúsculas y minúsculas).¿Y qué pasa con el nombre "Plural vs Singular"? Bueno, esta es una situación de preferencias personales. En mi caso, trato de usar nombres plurales para tablas porque creo que una tabla es una colección de elementos o un paquete que contiene elementos, por lo que un nombre plural tiene sentido para mí; y nombres singulares para columnas porque veo columnas como atributos que describen singularmente a esos elementos de la tabla.
fuente