是否有关于如何在数据库表的定义中对列进行排序的标准/约定,如果有,该标准的动机是什么?(优点缺点)
例如,主键应该是第一列吗?外键应该直接跟在主键之后还是应该放在表的最右边?
如果不同 DBMS 的约定之间存在差异,则本例中的 DBMS 是 Microsoft SQL Server 2005。
谢谢/埃里克
是否有关于如何在数据库表的定义中对列进行排序的标准/约定,如果有,该标准的动机是什么?(优点缺点)
例如,主键应该是第一列吗?外键应该直接跟在主键之后还是应该放在表的最右边?
如果不同 DBMS 的约定之间存在差异,则本例中的 DBMS 是 Microsoft SQL Server 2005。
谢谢/埃里克
我不知道任何标准,但我们构建列的方式是
我们的大数据列,如评论,放在最后。它使在查询分析器中查看尽可能多的数据变得更加容易,而无需向右滚动。
我总是这样组织我的表格:
我不确定设置约定,但我们总是将 ID/主键列作为表中的第一列。我想这只是因为它可以更清楚地看到pk。我会说也可以使用 fk 字段,但在那之后没有真正的标准,你也许可以通过数据类型来做到这一点?
此外,这不是一个既定的最佳实践,只是个人选择。
据我所知没有。无论如何,您始终可以在选择期间重新排序列,因此除非有一些真正模糊的优化,否则您可以通过适当地对列进行排序来对某些数据库进行一些真正模糊的优化。
我知道没有官方标准,但通常的做法是将主键放在第一位(通常是代理项),然后按功能对其他字段进行分组。因此,在“人员”表中,可以将包含人员地址数据的字段组合在一起。大多数人在适当的表定义之外添加 FK、索引和其他约束。
毫米..据我所知,没有限制。它只是一个清晰的问题。
我同意上面的大多数帖子,主键优先(至少)。其余的都是个人喜好。如果你有一个标准,那就坚持那个标准。
我确实更喜欢将列相当合乎逻辑地放在一起。有时完全规范化的数据结构是不合适的,因此您将“次要实体”存储在同一个表上(即不删除 NULL)。一个示例是地址字段,或者放在一起的不同电话、移动电话、工作电话列。
我能举出的最引人注目的例子是如何不做。如果开发人员自动生成模式并按字母顺序创建列(甚至 PK 隐藏在表结构的中间),那是最烦人的。
根据edoode:-
Primary key(s)
'Tracking' columns (DateModified, ModifiedBy and such)
Any foreign keys
Data
加
Fixed width 'not null' columns
Fixed width 'nullable' columns
Variable Width columns VARCHAR NVARCHAR etc.
CLOBS
BLOBS
如果您将长度可能不同的列粘贴在表格底部,您将获得非常微小的性能提升。