21
表中主键的最佳做法是什么?
在设计表时,我养成了一种习惯,即拥有一列唯一且由我作为主键的列。这可以通过三种方式来实现,具体取决于需求: 自动递增的标识整数列。 唯一标识符(GUID) 可以用作行标识符列的短字符(x)或整数(或其他相对较小的数字类型)列 数字3将用于较小的查找,大多数情况下是读取的表,这些表可能具有唯一的静态长度字符串代码或数字值,例如年份或其他数字。 在大多数情况下,所有其他表都将具有自动递增的整数或唯一标识符主键。 问题:-) 我最近开始使用没有一致行标识符的数据库,并且主键当前聚集在各个列上。一些例子: 日期时间/字符 日期时间/整数 日期时间/ varchar char / nvarchar / nvarchar 有没有有效的理由呢?对于这些情况,我将始终定义一个标识或唯一标识符列。 此外,还有许多根本没有主键的表。这样做的有效原因是什么? 我试图理解为什么表是按原样设计的,这对我来说似乎是一团糟,但也许有充分的理由。 第三个问题可以帮助我解释答案:如果使用多列组成复合主键,与代理/人工键相比,此方法是否具有特定优势?我主要是在性能,维护,管理等方面进行思考?