繁体   English   中英

sql中的一对多标识关系

[英]one-to-many identifying relationship in sql

我现在面临着一个巨大的挑战。 当我有一个强实体“ CLIENT”和一个弱实体“ AFFILIATE”时,我正在设计一个数据库,该实体的主键与父级的主键结合在一起。两者之间的标识关系必须是“一对多”并拥有总参与度。 但是我的问题是,在SQL中,由于必须由AFFILIATE的鉴别符和父级的主键定义AFFILIATE的主键,所以一对多关系会效率低下,例如,在AFFILIATE中可能有一个id_affiliate与许多id_client。 请帮我。

这根本不是一个不寻常的设置,您是否有任何特定原因认为它效率低下?

客户端应具有id_client的集群主键会员应具有id_client + id_affiliate的集群主键

两者之间的连接是一个简单的b树查找,而没有用于页面查找的额外跃点(由于集群键的原因),并且给定客户端的所有会员都可能在同一数据页面上,因此查找将很快

我相信您误解了实体关系薄弱和关系牢固的复杂性。 实际上,实际上,在设计表时,此概念几乎没有关联。 您需要关注的是标准化过程中两个表之间的基石关系。

您的详细信息有点粗略,但是如果您认为效率不高,因为在查询AFFILIATE来查找客户端ID时将返回多个记录,那么我想请您有所不同。

如果此关系是强制性的,那么您将不会遭受任何低效率的影响,如果这是可选关系,则在关系数据库模型的上下文中,强实体关系与弱实体关系之间没有显着差异。

实际上,在您的问题中,您回答自己的问题,指出:

但是我的问题是,在SQL中,由于必须由AFFILIATE的鉴别符和父级的主键定义AFFILIATE的主键,所以一对多关系会效率低下,例如,在AFFILIATE中可能有一个id_affiliate与许多id_client。

这不是问题,这就是它的工作方式。

@John Wu和@Hituptony,非常感谢您的帮助,我遇到的问题现在已经解决。 实际上,我对“弱实体集”的概念不是很了解,在该概念中,我们可以拥有带有相同区分符但代表不同对象的弱实体,因为它们与不同的强实体相关。 例如,我们可以有相同的affiliate_id,但代表不同客户的不同会员。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM