一尘不染

对于数据库列,您是否喜欢冗长的命名?

sql

您偏爱哪一个?

假设我们有一个通用的Product表,该表具有ID,名称和对类别的外键引用。您是否希望将表命名为:

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
)

为列使用显式命名(例如, 产品 名称, 产品 ID),或类似以下内容的名称:

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
)

据我所知,.NET世界中的约定很明确-样本倾向于使用第一个示例,而开源和RoR世界则倾向于第二个示例。我个人觉得第一眼乍看之下更容易阅读和理解:
select p.ProductID, p.ProductName, c.CategoryName from Categories c inner join Products p on c.CategoryID = p.CategoryID对我来说,比起自然而然地select p.ID AS ProductID, p.Name AS ProductName, c.Name AS CategoryName from Categories c inner join Products p on c.ID = p.CategoryID

我想,鉴于我提供的基本示例并不重要,但是当您处理大量数据和表时又如何呢?我仍然会发现第一个示例要比第二个示例更好,尽管可能值得探究这两个示例的某些组合(<Table>ID用于ID,但仅Name用于名称?)。显然,在现有项目上,您应该遵循已经建立的约定,但是对于新开发该怎么办?

您的喜好是什么?


阅读 130

收藏
2021-03-10

共1个答案

一尘不染

表名已经给出了上下文。无需在列名称前添加前缀。连接表时,请使用table.column语法。

2021-03-10