MsSQL   发布时间:2022-05-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了sql-server-2008 – 如何在现有数据库中实现多态关联大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
多态协商(PA)对于相对简单的数据库要求是相当满意的:让各个表在一个共享表中具有子记录.典型的例子是一个单独的表,其中包含注释记录,适用于不同的不同的实体.

在this question马克做了一个很好的工作,显示了实施PA的三种常见方法.我想使用基表方法,这在更加详细的描述在一个同样出色的answer by Bill Karwin.

一个具体的例子如下所示:

实体的主键指基基表中相同的键值,注释表指向基表,因此遵守参照完整性.这里的关键部分是实体表的主键具有不同的域.它们通过在基表中创建新记录并将其生成的密钥复制到实体的主键来生成.

现在我的问题是:如果我想在现有数据库中引用具有引用完整性的PA,如果实体生成自己的相互重叠的主键,该怎么办

到目前为止,我看到两个选择:

选项1:

每个实体保留自己的主键,但也会获得一个备用键.

喜欢:

>接近推荐的方法.
>基表稳定.

不喜欢:

>现有实体必须修改.
很难找到一个评论的拥有实体.

选项二:

每个实体在基表中都有自己的外键列.这看起来像马克的多列方法.

喜欢:

>现有实体不受影响.
>很容易找到拥有实体的评论.

不喜欢:

>稀疏列
>基表不稳定:引入具有PA的新实体时需要修改

我倾向于选项1,可能在基表中有一个字段“EntityName”用于双向查找.哪个选项会更好.还是另一个更好的方法?

解决方法

您可以使用选项1,但没有额外的代理替代键.

相反,使用EntityType列(如CHAR(1))扩展现有主键(对于事件为E,对于人员为D,对于产品为D).

化合物(EntityId,EntityTypE)将成为表实体的主键和其他3个子类型表中的相应化合物.

(EntityType只是一个辅助,参表,有3行):

大佬总结

以上是大佬教程为你收集整理的sql-server-2008 – 如何在现有数据库中实现多态关联全部内容,希望文章能够帮你解决sql-server-2008 – 如何在现有数据库中实现多态关联所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:注释