相关疑难解决方法(0)

数据库,表和列命名约定?

每当我设计一个数据库时,我总是想知道是否有一种在我的数据库中命名项目的最佳方法.我经常问自己以下问题:

  1. 表名应该是复数吗?
  2. 列名应该是单数吗?
  3. 我应该为表格或列添加前缀吗?
  4. 我应该在命名项目中使用任何案例吗?

是否有任何建议的指南用于命名数据​​库中的项目?

database language-agnostic database-design naming-conventions

765
推荐指数
18
解决办法
50万
查看次数

在数据库列中,您更喜欢详细命名吗?

你最喜欢哪个?

假设我们有一个通用的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
)
Run Code Online (Sandbox Code Playgroud)

使用列的显式命名(例如产品名称,产品 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
)
Run Code Online (Sandbox Code Playgroud)

从我所看到的,.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 …

sql database-design naming naming-conventions

6
推荐指数
2
解决办法
3212
查看次数

列名在所有表中都应该是唯一的吗?

在我创建的大多数数据库中,我总是通过预先附加表名来命名我的列名.例如:

Person Table
 - PersonID
 - PersonName
 - PersonSurName
 - PersonTimestamp

Customer Table
 - CustomerID
 - CustomerName
 - CustomerSurName
 - CustomerTimestamp
Run Code Online (Sandbox Code Playgroud)

而不是拥有

Person Table
 - ID
 - Name
 - SurName
 - Timestamp

Customer Table
 - ID
 - Name
 - SurName
 - Timestamp
Run Code Online (Sandbox Code Playgroud)

但是我想知道它是否真的是最好的,最方便的,并在后来的自我解释.也许有些列timestamp应该更好地留Timestamp在所有表中?关于它有没有一般的良好做法?我在C#/ WinForms中使用这个数据库.

c# sql-server winforms

3
推荐指数
1
解决办法
1512
查看次数