Rac*_*hel 0 database database-design entity-relationship multiple-tables unique-key
跨多个数据库表维护唯一ID字段的最佳方法是什么?
我的数据库包含企业和人员,并且两个实体都需要具有与之关联的唯一ID字段.此外,还有其他表(例如地址)可以使用其ID作为外键来引用业务或个人.
我想到的一些想法是:
使用插入行时计算的非自动编号ID字段.这将解决我的独特问题,但随后我想通过相关属性(例如通过地址)查找内容时,我必须检查两个表中哪一个包含我正在寻找的记录.
在AutoNumber ID中添加一个Prefix,以确定要查找ID的表,但是,关联表中的ID字段可能要么成为字符串,要么包含与它们关联的表的标志,我不知道如何影响表现.
将人员和企业合并到一个表中.我的问题是人和企业有不同的属性,需要单独的字段,这种情况违背了我的本性,因为我更喜欢为单独的实体分别使用表.
创建一个包含唯一ID字段的主表,Person或Business的ID字段,以及一个标记,说明它是哪一个.然后使用该ID作为我的外部引用#和所有关联表.
一些更好的处理方式,我不知道,因为我不是一个dba
无论我采用什么解决方案都需要能够轻松处理大量记录(这将取代的数据库有几百万条记录)并且在MS Sql Server上
那么你不能用该设置设置外键.单个外键不能引用两个可能的不同表.
我会做以下其中一项:
当然,您可以在地址表中使用两个单独的列,每个列都包含两个实体.BusinessId和peopleid.FK可以有空值,所以这没关系.然后,您可以强制执行FK关系,这将使您免于数据完整性问题.
或者设置包含业务和人员的父表,但只有很少的字段(只有他们真正有共同点 - 甚至可能只有uniqueid和记录类型),那么你可以拥有业务,人员,地址等的子表.
或者设置单独的子表 - 业务和业务地址,人员和人员地址等.然后,您不需要在两个逻辑实体之间保持唯一ID.
我忘记了一种可能性,如果你有很多关系,你可以拥有地址,业务,人员,然后是一些链接表,BusinessAddress,PeopleAddress.如果我有另一个选择,我个人不会使用GUID,因为它们可能会损害性能.
| 归档时间: |
|
| 查看次数: |
198 次 |
| 最近记录: |