¿Prefiere nombres detallados cuando se trata de columnas de bases de datos? [cerrado
¿Cuál es tu preferencia?
Supongamos que tenemos una tabla de productos genéricos que tiene un ID, un nombre y una referencia de clave externa a una categoría. ¿Prefiere nombrar su mesa como:
CREATE TABLE Products
(
ProductID int NOT NULL IDENTITY(1,1) PRIMARY KEY,
CategoryID int NOT NULL FOREIGN KEY REFERENCES Categories(CategoryID),
ProductName varchar(200) NOT NULL
)
uso de nombres explícitos para las columnas (por ejemplo,ProductNombre,ProductID), o algo así como:
CREATE TABLE Products
(
ID int NOT NULL IDENTITY(1,1) PRIMARY KEY,
CategoryID int NOT NULL FOREIGN KEY REFERENCES Categories(ID),
Name varchar(200) NOT NULL
)
De lo que he visto, la convención en el mundo .NET debe ser explícita: las muestras tienden a usar el primer ejemplo, mientras que el mundo de código abierto y RoR favorecen el segundo. Personalmente, me parece el primero más fácil de leer y comprender a primera vista:select p.ProductID, p.ProductName, c.CategoryName from Categories c inner join Products p on c.CategoryID = p.CategoryID
me parece mucho más natural queselect p.ID AS ProductID, p.Name AS ProductName, c.Name AS CategoryName from Categories c inner join Products p on c.ID = p.CategoryID
Supongo que dado el ejemplo rudimentario que proporcioné no es un gran problema, pero ¿qué tal cuando se trata de una gran cantidad de datos y tablas? Todavía encontraría que el primer ejemplo es mejor que el segundo, aunque posiblemente valga la pena analizar alguna combinación de los dos <Table>ID
para la ID, pero soloName
para el nombre?). Obviamente, en un proyecto existente, debe seguir las convenciones ya establecidas, pero ¿qué pasa con el nuevo desarrollo?
¿Cuál es tu preferencia?