最近我问了一个同事为什么在他们的数据库表名末尾都包含了“_TABLE”。他说这是在他之前工作的另一个组织中的标准。其他同事在视图名称前使用“V_”。
这样做是好的做法吗?
最近我问了一个同事为什么在他们的数据库表名末尾都包含了“_TABLE”。他说这是在他之前工作的另一个组织中的标准。其他同事在视图名称前使用“V_”。
这样做是好的做法吗?
保持一致性是最好的方法。在对象名称末尾添加_TABLE或_VIEW未必是必要的,但如果数据库是按照这种方式设计的,我不会违反惯例。
你的同事将他以前组织中的命名约定带入新组织而没有检查“当地”标准是不好的做法。
在我眼中,将 v 视为视图的标准特别糟糕,因为这会阻止你使用数据库重构的最佳方法之一,即重新命名表并创建一个模拟旧结构的视图,使得在进行更改时不会出现问题,同时你可以开始查找和修复所有旧引用,而无需在将更改发布前就必须全部修复。
我也同意 akf 的想法,真正的问题是从其他组织采用命名约定并忽略当前组织的命名约定。我会迅速采取行动,坚持要求他将所有对象和相关代码更改为符合你们的标准,否则这将继续成为一个问题。
来源于http://vyaskn.tripod.com/object_naming.htm:
针对数据库对象的命名约定有很多种,但是没有一种是错误的。这更多是由设计命名约定的人的个人偏好所决定。然而,在一个组织中,一个人(或一组人)定义了数据库命名约定,将其标准化后,其他人无论喜欢与否都会遵循它。
阅读完整文章了解如何在您的组织中实现/创建它。
我更喜欢将我的表格和字段名都命名为驼峰式大小写。例如...
CREATE TABLE [crm].[company]
(
[id] INT NOT NULL PRIMARY KEY,
[companyName] NVARCHAR(255) NOT NULL
)
对于视图,我会在它们前面加上“view”这个单词。例如...
CREATE VIEW [crm].[viewFullEmployee]
AS SELECT e.id, e.companyId, e.niceId, e.startDate, e.fullPart, p.firstName, p.middleName, p.lastName, p.active, p.birthDate, p.email, p.alternateEmail, p.phone, p.phoneExt, p.homePhone, p.mobilePhone, p.jobTitle, p.suffix, p.prefix FROM [crm].[Employee] as e FULL JOIN [crm].[person] as p on e.id = p.id
var person = uow.Db.Fetch<Models.viewFullEmployee>("SELECT * FROM [crm].[viewFullEmployee]");
vs
var person = uow.Db.Fetch<Models.fullEmployee_V>("SELECT * FROM [crm].[fullEmployee_V]");
我认为最好的资源之一始终是微软的AdventureWorks数据库。如果您查看它们的视图,它们会以小写字母“v”作为前缀。
例如,表Employee
有一个视图vEmployee
。