【问题标题】:Is there a standard/convention for the ordering of columns in a database table definition?数据库表定义中的列排序是否有标准/约定?
【发布时间】:2009-05-07 07:37:35
【问题描述】:

是否有关于如何在数据库表的定义中对列进行排序的标准/约定,如果有,该标准的动机是什么? (优点/缺点)

例如,主键应该是第一列吗?外键应该直接跟在主键之后还是应该放在表的最右边?

如果不同 DBMS 的约定之间存在差异,则本例中的 DBMS 是 Microsoft SQL Server 2005。

谢谢/埃里克

【问题讨论】:

    标签: sql-server database conventions


    【解决方案1】:

    我不知道任何标准,但我们构建列的方式是

    1. 主键
    2. 任何外键
    3. 数据

    我们的 large 数据列,如 cmets,放在最后。它可以让您更轻松地在查询分析器中查看尽可能多的数据,而无需向右滚动。

    【讨论】:

    • 我将 this..important 数据(如键)放在第二位,然后按重要性或业务逻辑顺序排列其他数据
    【解决方案2】:

    我总是这样组织我的表格:

    1. 主键
    2. “跟踪”列(DateModified、ModifiedBy 等)
    3. 任何外键
    4. 数据

    【讨论】:

      【解决方案3】:

      我不确定设置约定,但我们总是将 ID/主键列作为表中的第一列。我想这只是因为它可以更清楚地看到pk。我会说也可以使用 fk 字段,但在那之后没有真正的标准,您也许可以通过数据类型来做到这一点?

      另外,这不是一个既定的最佳实践,只是个人选择。

      【讨论】:

        【解决方案4】:

        据我所知没有。无论如何,您始终可以在选择期间对列进行重新排序,因此除非您可以通过适当地对列进行排序来对某些数据库进行一些真正模糊的优化,否则这几乎无关紧要。

        【讨论】:

          【解决方案5】:

          据我所知,没有官方标准,但通常的做法是将主键放在首位(通常是代理项),然后按功能对其他字段进行分组。因此,在“人员”表中,可以将包含人员地址数据的字段组合在一起。大多数人在适当的表定义之外添加 FK、索引和其他约束。

          【讨论】:

            【解决方案6】:

            mm.. 据我所知,没有限制。它只是一个清晰的问题。

            【讨论】:

              【解决方案7】:

              我同意上面的大多数帖子,主键优先(至少)。其余的都是个人喜好。如果您有标准,请遵守该标准。

              我更喜欢将各列合理地放在一起。有时完全规范化的数据结构是不合适的,因此您将“次要实体”存储在同一个表上(即不删除 NULL)。一个示例是地址字段,或者放在一起的不同电话、移动电话、工作电话列。

              我能举出的最引人注目的例子是如何不做。如果开发人员自动生成一个模式并且列是按字母顺序创建的(甚至 PK 都隐藏在表结构的中间),那是最烦人的。

              【讨论】:

                【解决方案8】:

                根据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 
                

                如果您将长度可能不同的列粘贴在表的底部,您将获得非常微小的性能提升。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2014-10-01
                  • 2011-08-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2012-03-14
                  • 2011-05-21
                  • 1970-01-01
                  • 2019-05-07
                  相关资源
                  最近更新 更多