mysql - index - sql conventions naming
¿Existe una convención de nombres para MySQL? (4)
Afortunadamente, los desarrolladores de PHP no son "fanáticos del caso Camel" como algunas comunidades de desarrollo que conozco.
Tus convenciones suenan bien.
Siempre y cuando sean a) simples, yb) coherentes, no veo ningún problema :)
PD: Personalmente, creo que 5) es excesivo ...
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. Ej., ''Foo'', ''foo_bar'', etc.
- En general (no siempre) tengo un PK de incremento automático. Utilizo la siguiente convención: tablename_id (por ejemplo, ''foo_id'', ''foo_bar_id'', etc.).
- Cuando una tabla contiene una columna que es una clave externa, solo copio el nombre de columna de esa clave de cualquier tabla de la que proviene. Por ejemplo, digamos que la tabla ''foo_bar'' tiene el FK ''foo_id'' (donde ''foo_id'' es el PK de ''foo'').
- Cuando defino los FK para imponer la integridad de referencia, uso lo siguiente: tablename_fk_columnname (por ej., Avanzando el ejemplo 3, sería ''foo_bar_foo_id''). Como se trata de una combinación de nombre de tabla / nombre de columna, se garantiza que será único dentro de la base de datos.
- Ordeno las columnas de esta manera: PK, FK, luego el resto de las columnas alfabéticamente
¿Hay una forma mejor y más estándar para hacer esto?
La consistencia es la clave de cualquier estándar de nombres. Mientras sea lógico y consistente, estás 99% allí.
El estándar en sí es una preferencia personal, así que si te gusta tu estándar, entonces corre con él.
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).
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 codificación más común para MySQL por Simon Holywell:
Ver también esta pregunta: ¿Hay alguna guía de estilo de codificación publicada para SQL?
Yo diría que ante todo: sé consistente.
Creo que ya casi estás allí con las convenciones que has delineado en tu pregunta. Un par de comentarios sin embargo:
Los puntos 1 y 2 son buenos, reconozco.
Punto 3: lamentablemente esto no siempre es posible. Piensa en cómo foo_bar
con una sola tabla foo_bar
que tenga las columnas foo_id
y another_foo_id
las cuales hacen referencia a la columna foo
table foo_id
. Es posible que desee considerar cómo lidiar con esto. Sin embargo, este es un poco 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 - 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 de índices
Es posible que desee introducir una convención de nomenclatura para los índices; esto será de gran ayuda para cualquier trabajo de metadatos de base de datos que desee llevar a cabo. Por ejemplo, es posible que desee llamar a un índice foo_bar_idx1
o foo_idx1
, que foo_idx1
totalmente de usted pero que vale la pena considerar.
Nombres de columnas singulares vs plurales
Podría ser una buena idea abordar el espinoso problema del plural versus el único en los nombres de sus columnas, así como también los nombres de su tabla. Este tema a menudo causa grandes debates en la comunidad DB. Me quedaría con formas singulares para los nombres y las columnas de la tabla. Ahí. Lo he dicho
¡Lo principal aquí es por supuesto la consistencia!