2010-08-19 14 views
18

Me involucraré en un gran proyecto y me gustaría saber cuál es, en su opinión, la mejor práctica para nombrar columnas de tabla SQL.Práctica recomendada para nombrar columnas de tabla SQL

Digamos que tenemos una tabla de productos. ¿Cuál de los siguientes nombres preferirá?

  • Identificación,
  • nombre,
  • descripción,
  • foto,
  • precio

o

  • product_id,
  • product_name,
  • PRODUCT_DESCRIPTION,
  • product_photo,
  • PRODUCT_PRICE
+7

wiki de la comunidad? – RedFilter

+0

@RedFilter, no entiendo tu pregunta. – Psyche

+0

Las preguntas como esta, que son una cuestión de gusto o preferencia, no tienen una respuesta "correcta" real y, por lo tanto, deben marcarse con la bandera "Comunidad wiki". – auujay

Respuesta

11

Definitivamente el primero. La segunda es una violación del principio DRY.

+0

De acuerdo, generalmente la tabla tendrá un nombre que explique qué las entradas en él son En este caso productos. – Chris

1

Personalmente, creo que el prefijo del producto es redundante e irritante. Esto es, sin embargo, en última instancia, una cuestión de preferencia personal (o consenso del equipo).

26

La prefijación de los nombres de las columnas con el nombre de la tabla no agrega ningún beneficio y desordena el código. La primera elección es mejor. Solo la columna "ID" puede tener beneficios con el prefijo, ya que es probable que sea una clave, y es probable que haya otras tablas con esa misma columna.

+1

Digamos que tiene una tabla con dos columnas de id. ¿Cómo sabe cuál es cuál? –

+4

+1 para 'table_id': es genial, ya que no causa ningún problema con los conflictos de nombres cuando se utilizan varias tablas a la vez, pero por lo general no se usa mucho en otro lugar. –

+0

@OMG Ponies, creo que es por eso que Russ dice que está bien prefijar la columna ID con el nombre de la tabla. –

1

El primero, sin una pregunta. Nombrar la columna ID Product_id puede ser útil en algunos casos (aunque no puedo pensar en ninguno en este momento), pero de lo contrario no tiene sentido repetir el nombre de la tabla en el nombre de cada columna. Y en caso de que elijas la otra alternativa, no me gusta _ en los nombres de columna, así que usaría ProductId.

3

Iría con la primera opción, no repita el nombre de la tabla en el campo, ¿qué ocurre si la tabla cambia de nombre?

si se va a utilizar una gran cantidad de mesa con mismo nombre de campo, no importa, utilizar alias

3

Si tengo una tabla de productos y una mesa de clientes se convierte en mi identificación ProductID y CustomerID respectivamente. Lo encuentro más simple ya que ID podría significar algo, especialmente si intentas devolver ambos en una consulta. Pero todo es una cuestión de preferencia.

Pero consérvelo constante es todo lo que puedo decir.

+0

+1: Para consistencia y convenciones de nomenclatura de columnas informativas. –

+0

+1: ¡para la letra grande y negrita al final! – Perpetualcoder

6

Creo que en la mayoría de los casos estaría bien, ya que generalmente necesita especificar la tabla en sus consultas. Entonces, si el nombre de la tabla (o alias) es descriptivo, entonces cosas como product.id serían más claras que product.product_id.

0

Agregaría el nombre de la tabla solo para el ID ej. product_ID simplemente debido a las preferencias personales y deja el resto tal como están en tu primer ejemplo.

4

La primera opción es mi elección simplemente porque uno ya sabe de qué tabla son los campos. Además, utilizaré < nombre de la tabla > _ < campo de clave > en otras tablas como nombre de campo de clave externa (product_id, por ejemplo).

0

Prefijo solo la columna de ID (PK) con el nombre de la tabla, ya que puede tener nombres consistentes para las columnas cuando se usa como un FK en otra tabla. No es necesario agregar el prefijo a las otras columnas.

0

Creo que esto es muy importante.

Al definir la propia ID de tabla, debe usar solo ID, sin embargo, al definir un campo de clave externa, debe usar el nombre de la tabla.

Una tabla con un nombre de la Tabla 1 y los filds:

  • Table1Id
  • Table1Name

Esto no tiene sentido, ¿verdad?

Sin embargo, en las claves externas, el campo de la clave externa debe tener su nombre de tabla prefijado.

2

Estoy de acuerdo con aquellos que dicen que el nombre de la tabla debe omitirse de todas las columnas a excepción de la ID.

Si una columna es una clave externa, me gustaría darle el mismo nombre que la columna a la que hace referencia. Esto tiende a mantener las cosas más simples y fáciles de recordar. Hay dos excepciones a esta regla. Si más de una clave externa hace referencia a la misma columna en la misma tabla, entonces necesitarán algún tipo de prefijo en función de su uso para distinguirlas. Y si una clave externa tiene un uso especializado, puede necesitar otro nombre (ManagerPersonId en lugar de PersonId, por ejemplo).

Esta regla sobre nombres de claves foráneas alienta el prefijo de la columna ID con el nombre de la tabla.

Además, si la clave primaria de una tabla es un identificador sintético, como una columna de identidad, entonces es muy natural llamarlo TableNameId, ya que eso describe exactamente lo que es.

En todos los demás casos, el prefijo de nombres de columna con el nombre de tabla es innecesario, redundante y detallado.

4

Tablas

Product 
ProductCategory - prefix with underlying table name, could be other categegories 

Columnas

ProductID,  - prefix with a table name 
CategoryID,  - note that it's not a ProductCategoryID 
Name, 
Description, 
Photo, 
Price 

Keys

PK_Product_ProductID - primary key 
AK_Product_Name  - alternative key (unique column) 
FK_Product_CategoryID - foreign key 

índices

IX_Product_Price 
+0

Avíseme si necesita nombres para otros activos en su base de datos. Soy uno de los mejores en un campo de convención de nombres :) –

0

Somos na ming columns con la primera letra del nombre de la tabla, guión bajo y la columna misma. por ejemplo, en la tabla blog_msgs estamos utilizando m_id, m_blog, m_title, m_content y en la tabla de blogs estamos nombrando como b_id, b_title, b_author.

Esto es bueno porque este método es corto, y puede diferir entre el título del blog y el título de la publicación por la primera letra, el título del blog es b_title y el título de la publicación del blog es m_title (m para mensaje).

1

Iré con el segundo. No se trata de Do not Repeat Yourself (no es código). Los campos de producto solo son útiles con productos, y nada más.

Consulte ISO/IEC 11179 para obtener más ideas sobre por qué.

1

Nadie ha mencionado esto, así que pensé que lo haría, lucho con cosas como la columna "nombre". Me encuentro prefijando columnas genéricas como "nombre" porque es muy ambiguo. Pero lo hago por legibilidad, no como una regla de prefijación general.

Cuestiones relacionadas