underscore snake camelcase database database-design

database - snake - Table Naming: Underscore vs Camelcase? espacios de nombres? Singular vs Plural?



camelcase vs snake case (11)

He estado leyendo un par de preguntas / respuestas en StackOverflow tratando de encontrar el "mejor", o mejor dicho, el modo aceptado, para nombrar tablas en una Base de datos.

La mayoría de los desarrolladores tienden a nombrar las tablas según el idioma que requiere la base de datos (JAVA, .NET, PHP, etc.). Sin embargo, siento que esto no está bien.

La forma en que he estado nombrando las tablas hasta ahora es hacer algo como:

doctorsMain doctorsProfiles doctorsPatients patientsMain patientsProfiles patientsAntecedents

Las cosas que me preocupan son:

  • Legibilidad
  • Identificación rápida del módulo de la tabla (médicos || pacientes)
  • Fácil de entender, para evitar confusiones.

Me gustaría leer cualquier opinión sobre las convenciones de nombres. Gracias.


Como la pregunta no es específica de una plataforma o motor de DB en particular, debo decir que para una máxima portabilidad, siempre debe usar nombres de tabla en minúscula.

/ [a-z _] [a-z0-9 _] * / es realmente el único patrón de nombres que se traduce a la perfección entre diferentes plataformas. El subrayado minúsculo alfanumérico + siempre funcionará constantemente.

Como se mencionó en otra parte, los nombres de relación (tabla) deben ser singulares: http://www.teamten.com/lawrence/programming/use-singular-nouns-for-database-table-names.html


Después de leer muchas otras opiniones, creo que es muy importante utilizar las convenciones de nomenclatura del idioma, la coherencia es más importante que nombrar las convenciones solo si usted es (y será) el único desarrollador de la aplicación. Si desea legibilidad (que es de gran importancia) es mejor utilizar las convenciones de nomenclatura para cada idioma. En MySQL, por ejemplo, no sugiero usar CamelCase ya que no todas las plataformas distinguen entre mayúsculas y minúsculas. Así que aquí el guión bajo va mejor.


Estos son mis cinco centavos. Llegué a la conclusión de que si los DB de diferentes proveedores se usan para un proyecto, existen dos mejores maneras:

  1. Use guiones bajos
  2. Usa una caja de camello con comillas.

La razón es que alguna base de datos convertirá todos los caracteres a mayúsculas y algunos a minúsculas. Entonces, si tiene myTable , se convertirá en MYTABLE o mytable cuando trabaje con DB.


La naturaleza insensible a mayúsculas y minúsculas de SQL admite Underscores_Scheme . Sin embargo, el software moderno es compatible con cualquier tipo de esquema de nombres. Sin embargo, a veces algunos errores desagradables, errores o factores humanos pueden llevar a Pascal_Case , de modo que aquellos que seleccionaron el esquema Pascal_Case y Underscore_Case vivan con todos sus nervios en buen lugar.


Lamentablemente, no hay una "mejor" respuesta para esta pregunta. Como @David declaró que la coherencia es mucho más importante que la convención de nomenclatura.


Normalmente utilizo PascalCase y las entidades son singulares:

DoctorMain DoctorProfile DoctorPatient

Imitó las convenciones de nomenclatura de las clases en mi aplicación, manteniendo todo muy ordenado, limpio, consistente y fácil de entender para todos.


Ser consecuente es mucho más importante que el esquema particular que utiliza.


Tiendo a estar de acuerdo con las personas que dicen que depende de las convenciones del lenguaje que estás usando (por ejemplo, PascalCase para C # y snake_case para Ruby).

Nunca camelCase, sin embargo.


Una agregación de la mayoría de los anteriores:

  • no confíe en el caso en la base de datos
  • no considere la parte del nombre del separador o del separador, solo las palabras
  • utilice cualquier separador o caja es el estándar para su idioma

Luego puede traducir fácilmente (incluso automáticamente) nombres entre entornos.

Pero agregaría otra consideración: puede encontrar que hay otros factores cuando pasa de una clase en su aplicación a una tabla en su base de datos: el objeto de la base de datos tiene vistas, desencadenantes, procesos almacenados, índices, restricciones, etc. también necesito nombres. Por ejemplo, puede que solo accedas a las tablas a través de vistas que normalmente son simplemente un "select * from foo". Estos pueden identificarse como el nombre de la tabla con un sufijo de ''_v'' o puede ponerlos en un esquema diferente. El objetivo de una capa de abstracción tan simple es que se puede expandir cuando sea necesario para permitir cambios en un entorno y así evitar el impacto en el otro. Esto no rompería las sugerencias de nombres anteriores, solo unas pocas cosas más para tener en cuenta.


Yo uso guiones bajos Hice un proyecto de Oracle hace algunos años, y parecía que Oracle forzó todos mis nombres de objeto a mayúsculas, lo que de alguna forma arruinó cualquier esquema de envoltura. No soy realmente un tipo Oracle, así que tal vez no había forma de evitar esto, pero me hizo usar guiones bajos y nunca he vuelto.


hay una gran variabilidad en cómo separar las palabras, por lo que tendrás que escoger lo que prefieras; pero, al mismo tiempo, parece que hay un consenso cercano de que el nombre de la tabla debe ser singular.