He estado leyendo un par de preguntas / respuestas en StackOverflow tratando de encontrar la 'mejor', o debería decir, la forma aceptada, para nombrar tablas en una base de datos.
La mayoría de los desarrolladores tienden a nombrar las tablas según el lenguaje que requiera la base de datos (JAVA, .NET, PHP, etc.). Sin embargo, siento que esto no está bien.
La forma en que he estado nombrando tablas hasta ahora es algo como:
doctorsMain
doctorsProfiles
doctorsPatients
patientsMain
patientsProfiles
patientsAntecedents
Las cosas que me preocupan son:
- Legibilidad
- Identificación rápida del módulo del que proviene la tabla (médicos || pacientes)
- Fácil de entender, para evitar confusiones.
Me gustaría leer cualquier opinión sobre las convenciones de nomenclatura. Gracias.
database
database-design
MarioRicalde
fuente
fuente
Normalmente uso PascalCase y las entidades son singulares:
Imita las convenciones de nomenclatura para las clases de mi aplicación, manteniendo todo bastante ordenado, limpio, coherente y fácil de entender para todos.
fuente
La naturaleza de los soportes SQL no distingue entre mayúsculas y minúsculas
Underscores_Scheme
. Sin embargo, el software moderno admite cualquier tipo de esquema de nombres. Sin embargo, a veces algunos errores desagradables, errores o factores humanos pueden conducir aUPPERCASINGEVERYTHING
que aquellos que seleccionaron ambosPascal_Case
y elUnderscore_Case
esquema vivan con todos sus nervios en buen lugar.fuente
Una agregación de la mayoría de los anteriores:
Luego, puede traducir fácilmente (incluso automáticamente) nombres entre entornos.
Pero agregaría otra consideración: puede encontrar que hay otros factores cuando se mueve de una clase en su aplicación a una tabla en su base de datos: el objeto de la base de datos tiene vistas, activadores, procesos almacenados, índices, restricciones, etc. también necesito nombres. Así, por ejemplo, es posible que solo acceda a tablas a través de vistas que normalmente son simplemente un simple "seleccionar * de foo". Estos pueden identificarse como el nombre de la tabla con solo un sufijo de '_v' o puede ponerlos en un esquema diferente. El propósito de una capa de abstracción tan simple es que se pueda expandir cuando sea necesario para permitir cambios en un entorno para evitar impactar en el otro. Esto no rompería las sugerencias de nomenclatura anteriores, solo algunas cosas más a tener en cuenta.
fuente
Yo uso guiones bajos. Hice un proyecto de Oracle hace algunos años, y parecía que Oracle forzó todos mis nombres de objetos a mayúsculas, lo que arruina cualquier esquema de carcasa. Realmente no soy un tipo de Oracle, así que tal vez hubo una forma de evitar esto que no conocía, pero me hizo usar guiones bajos y nunca volví.
fuente
Dado que la pregunta no es específica de una plataforma o motor de base de datos en particular, debo decir que para una máxima portabilidad, siempre debe usar nombres de tablas en minúsculas.
/ [a-z _] [a-z0-9 _] * / es realmente el único patrón de nombres que se traduce sin problemas entre diferentes plataformas. Las minúsculas alfanuméricas + el subrayado siempre funcionarán de forma coherente.
Como se mencionó en otra parte, los nombres de las relaciones (tablas) deben ser singulares: http://www.teamten.com/lawrence/programming/use-singular-nouns-for-database-table-names.html
fuente
Tiendo a estar de acuerdo con la gente que dice que depende de las convenciones del lenguaje que estás usando (por ejemplo, PascalCase para C # y snake_case para Ruby).
Sin embargo, nunca camelCase.
fuente
Después de leer muchas otras opiniones, creo que es muy importante usar las convenciones de nomenclatura del lenguaje, la consistencia es más importante que las convenciones de nomenclatura solo si eres (y serás) el único desarrollador de la aplicación. Si desea legibilidad (que es de gran importancia), es mejor que utilice 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 subrayado va mejor.
fuente
camelCase
acamelcase
. Entonces, tener un caso de serpiente es mucho mejor. Además,Modern software however supports any kind of naming scheme
no tiene ninguna garantía de que yop escriba el código para la última versión del software. Especialmente para la base de datos, la actualización de la versión no es trivial cuando se piensa en los costos de regresión.Estos son mis cinco centavos. Llegué a la conclusión de que si se utilizan bases de datos de diferentes proveedores para un proyecto, hay dos mejores formas:
La razón es que algunas bases de datos convertirán todos los caracteres a mayúsculas y algunos a minúsculas. Entonces, si lo tiene
myTable
, se convertirá enMYTABLE
omytable
cuando trabajará con DB.fuente
Desafortunadamente, no existe una "mejor" respuesta a esta pregunta. Como dijo @David, la coherencia es mucho más importante que la convención de nomenclatura.
fuente
existe una gran variabilidad sobre cómo separar las palabras, por lo que tendrá que elegir lo que más le guste; pero al mismo tiempo, parece que hay casi consenso en que el nombre de la tabla debe ser singular.
fuente
Las convenciones de nomenclatura existen dentro del alcance de un idioma y los diferentes idiomas tienen diferentes convenciones de nomenclatura.
SQL no distingue entre mayúsculas y minúsculas de forma predeterminada; entonces, snake_case es una convención ampliamente utilizada. SQL también admite identificadores delimitados; entonces, caso mixto en una opción, como camelCase (Java, donde campos == columnas) o PascalCase (C #, donde tablas == clases y columnas == campos). Si su motor de base de datos no puede soportar el estándar SQL, ese es su problema. Puede decidir vivir con eso o elegir otro motor. (Y por qué C # tenía que ser diferente es un punto de agravio para aquellos de nosotros que codificamos en ambos).
Si tiene la intención de usar un solo idioma en sus servicios y aplicaciones, use las convenciones de ese idioma en todos los niveles. De lo contrario, utilice las convenciones del idioma más utilizadas en el dominio donde se usa ese idioma.
fuente