gpt4 book ai didi

c# - 列名应该在所有表中是唯一的吗?

转载 作者:行者123 更新时间:2023-11-30 13:15:24 25 4
gpt4 key购买 nike

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

Person Table
- PersonID
- PersonName
- PersonSurName
- PersonTimestamp

Customer Table
- CustomerID
- CustomerName
- CustomerSurName
- CustomerTimestamp

相对于拥有

Person Table
- ID
- Name
- SurName
- Timestamp

Customer Table
- ID
- Name
- SurName
- Timestamp

但我想知道它是否真的是最好的、最方便的并且以后会 self 解释。也许像 timestamp 这样的列在所有表中都应该保留为 Timestamp 更好?有什么一般的良好做法吗?我在 C#/WinForms 中使用这个数据库。

最佳答案

我不喜欢这两个例子。我更愿意:

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"?

我坚决反对主键,它会出现在模型的其他表中,用通用的东西命名,比如“ID”——我不想看到 ON p.ID = SomeOtherTable.PersonID - 模型中多个表共有的实体应在整个模型中以一致的方式命名。 FirstName 等其他方面仅属于该表 - 即使另一个表具有 FirstName,也可以说它不是同一个“实体”。即使您出于某种原因在这两个表之间进行了连接,您也总是会将它们区分为 Person.FirstNameCustomer.FirstName - 所以添加PersonCustomer 前缀对于必须编写此类查询的任何人来说都是多余和烦人的。

此外,Timestamp 是 SQL Server 模型中列的可怕名称(或作为列后缀),因为 TIMESTAMP 是一种数据类型,与日期或时间,以及名称可能暗示您的同行有其他用途。

当然,所有这些都是相当主观的。这就像问 100 个人你应该开什么车。您将得到一些答案,现在轮到您自己解决这些问题并找出对您、您的团队和您的环境有意义的方法了。 :-)

关于c# - 列名应该在所有表中是唯一的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9345126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com