数据库设计时采用自动编号 ID 加业务名称字段联合主键,一般是出于什么考虑?

时间:2021-09-13 15:36:21
数据库设计时采用自动编号 ID 加业务名称字段联合主键,一般是出于什么考虑?

6 个解决方案

#1


一般一个表是要一个主键的,这样可以在处理重复记录时,方便记录定位,分页时也容易定位 
如果你的表中本来有可以做主键的字段,比如员工编号,则这个id一般没有必要加.业务名称字段联合主键为索引

#2


由于自动编号字段总是唯一的,这样,如果业务名称字段不具有唯一性的话,创建联合主键可以保证唯一性,且能对不同业务设置索引.

#3


联合主键,通常出现在单个键值不具备唯一性的前提下,也就是说如果只是使用其中一个键值的话,不能保证唯一性。楼主这种情况id已经自动编号了,其实没必要再使用业务名称作为联合主键了。

至于索引的问题,其实索引是可以被删除,也是可以被创建的,即使不使用联合主键,也是可以为 该字段 创建索引的。

至于为什么采用这种联合主键方式,老实说,其实并没有必要,可能是为了数据之间联系的清晰吧,把ID只是作为名义上的主键,而业务名称才是真正出现在别的表里的字段,这样该表和其它表之间的联系将更清晰。如果在其它表中使用ID来和该表建立联系的话,可能看起来不太清晰,不直观。

#4


引用楼主 r_zhanche 的回复:
数据库设计时采用自动编号 ID 加业务名称字段联合主键,一般是出于什么考虑?

主要是怕业务名称重复,所以使用一个自动编号,这样就不会出现重复.

#5


设置主键的目的就是保持唯一性

而很多时候用自增列是为了在程序中方便使用 select @@identity 来捕捉行号 

这样在分页或者其他一些需要使用的地方比较方便

#6


引用 5 楼 fredrickhu 的回复:
设置主键的目的就是保持唯一性

而很多时候用自增列是为了在程序中方便使用 select @@identity 来捕捉行号 

这样在分页或者其他一些需要使用的地方比较方便


联合主键一般怎么能最大限度的发挥主键的作用?

#1


一般一个表是要一个主键的,这样可以在处理重复记录时,方便记录定位,分页时也容易定位 
如果你的表中本来有可以做主键的字段,比如员工编号,则这个id一般没有必要加.业务名称字段联合主键为索引

#2


由于自动编号字段总是唯一的,这样,如果业务名称字段不具有唯一性的话,创建联合主键可以保证唯一性,且能对不同业务设置索引.

#3


联合主键,通常出现在单个键值不具备唯一性的前提下,也就是说如果只是使用其中一个键值的话,不能保证唯一性。楼主这种情况id已经自动编号了,其实没必要再使用业务名称作为联合主键了。

至于索引的问题,其实索引是可以被删除,也是可以被创建的,即使不使用联合主键,也是可以为 该字段 创建索引的。

至于为什么采用这种联合主键方式,老实说,其实并没有必要,可能是为了数据之间联系的清晰吧,把ID只是作为名义上的主键,而业务名称才是真正出现在别的表里的字段,这样该表和其它表之间的联系将更清晰。如果在其它表中使用ID来和该表建立联系的话,可能看起来不太清晰,不直观。

#4


引用楼主 r_zhanche 的回复:
数据库设计时采用自动编号 ID 加业务名称字段联合主键,一般是出于什么考虑?

主要是怕业务名称重复,所以使用一个自动编号,这样就不会出现重复.

#5


设置主键的目的就是保持唯一性

而很多时候用自增列是为了在程序中方便使用 select @@identity 来捕捉行号 

这样在分页或者其他一些需要使用的地方比较方便

#6


引用 5 楼 fredrickhu 的回复:
设置主键的目的就是保持唯一性

而很多时候用自增列是为了在程序中方便使用 select @@identity 来捕捉行号 

这样在分页或者其他一些需要使用的地方比较方便


联合主键一般怎么能最大限度的发挥主键的作用?