在数据库表中排序列

前端之家收集整理的这篇文章主要介绍了在数据库表中排序列前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当涉及DB表中的列顺序时,是否有任何标准或至少最佳做法?

这是一个手工制作的惯例,我遵循:

>主键(即id);
>唯一列(即电子邮件,ssn);
>外键(即物品);
>列保存用户生成的数据(即first_name,last_name);
>列保存系统生成的数据;

>非布尔值(即password_hash);
>布尔值(即删除,验证)

> timestamp列(即created_at);

这些留下许多问题没有答案,所以我想听听你的想法.

解决方法

简而言之,您已经很好地说出了标准约定,并没有错过很多.海事组织,唯一可能会让某人看起来不专业的举动将不是首要的主键.在这之后,外键正好是一个很好的惯例,但不是很大的事情. (包括外键的多字段主键当然应该是在刚开始的时候,或有人应该被殴打.)我还会再增加两个想法:

>有相似主题的领域彼此靠近.例如,将City / State / Zip字段广泛分开是无益的.我觉得user_role或user_ip是否先到了,但是他们听起来应该是彼此相邻的,这并不重要.
>继续使用其他这样的惯例,它不会伤害字母字母的东西.

数据库中附加的约定是一个很好的主意(就像你所提到的那样,始终在最后有时间戳).如果您在许多表格中有ChangeDate和ChangeBy字段,让它们(彼此相邻,并且一致)位置很好.

另外,ErikE提到,在表的最后,可能会有一些效率,它们可能包含空值的变量长度字段(varchar,nvarchar).除此之外,我不认为在现代关系数据库中以某种方式安排事情有任何性能优势.

命名

通常,当您决定列顺序时,您决定列名称的同时,所以我想解决一点.你当然可以用命名你的领域做出可怕的代价高昂的错误;这比您的列排序要重要得多.订单可以轻松更改,但名称不佳将永远导致您的问题.一年后改变表/列名称是一个巨大的痛苦,当时有十几个参考.我刚刚添加了一个答案here解决这个非常重要的话题.

猜你在找的MsSQL相关文章