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

Mad*_*Boy 3 c# sql-server winforms

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

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中使用这个数据库.

Aar*_*and 6

我不喜欢这两个例子.我会比较喜欢:

Person Table
 - PersonID     -- not ID, since this is likely to be referenced in other tables
 - FirstName    -- why is a first name just a "name"?
 - LastName     -- why not use the form more common than surname?
 - ModifiedDate -- what is a "persontimestamp"?
Run Code Online (Sandbox Code Playgroud)

我坚决反对主键,它将出现在模型中的其他表中,用"ID"之类的通用名称命名 - 我不想看到ON p.ID = SomeOtherTable.PersonID- 模型中多个表共有的实体应该在整个模型中一致地命名.其他方面FirstName只属于那个表 - 即使另一个表有一个FirstName,它也不是同一个"实体".甚至如果你有这两个表之间的连接是什么原因,你总是会在它们之间的区别Person.FirstNameCustomer.FirstName-所以添加PersonCustomer前缀就是多余的,恼人的人谁都有写这样的查询.

同样Timestamp是在SQL Server模型中的列(或列后缀)一个可怕的名字,因为TIMESTAMP是没有任何与日期或时间数据类型和名称可能意味着其他使用你的同龄人.

当然所有这些都是非常主观的.这就像问100个人你应该开什么车.你会得到一些答案,现在你需要仔细考虑废话,找出对你,你的团队和你的环境有意义的东西.:-)