首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >sql中的一对多标识关系

sql中的一对多标识关系
EN

Stack Overflow用户
提问于 2013-12-06 01:23:16
回答 3查看 354关注 0票数 0

我现在面临着一个很大的挑战。当我有一个强实体"CLIENT“和一个弱实体"AFFILIATE”时,我正在设计一个数据库,该实体本身的主键与父实体的主key.The相结合,确定两者之间的关系必须是“一对多”关系,并具有完全的参与性。但我的问题是,在SQL中,因为分支的主键必须由它的鉴别器和父级的主键来定义,所以一对多的关系将是低效的,例如,在分支中可能有一个id_affiliate与多个id_client相关。请帮帮我。

EN

回答 3

Stack Overflow用户

发布于 2013-12-06 01:27:01

这并不是一个不寻常的设置,你有什么特别的理由相信它的效率会很低吗?

客户端应该有一个集群主键id_client Affiliate应该有一个集群主键id_client + id_affiliate

两者之间的连接是一个简单的b-tree查找,没有用于页面查找的额外跳跃(因为聚集键),并且给定客户端的所有分支机构可能都在同一数据页面上,因此查找将非常快。

票数 1
EN

Stack Overflow用户

发布于 2013-12-06 01:32:31

我相信你误解了弱实体关系和强实体关系的复杂性。实际上,在设计表格时,这个概念几乎没有相关性。作为规范化过程的一部分,您需要关注的是两个表之间的基石关系。

你的细节有点粗略,但如果你认为这将是低效的,因为你会有多个记录返回当你查询联属寻找客户id的时候,我不会这么认为。

如果这个关系是强制的,你将不会遭受任何低效,如果这是一个可选的关系,那么在关系数据库模型的上下文中,你的强实体关系和弱实体关系没有显著的区别。

事实上,在你的问题中,你回答了自己的问题,声明:

但我的问题是,在SQL中,因为分支的主键必须由它的鉴别器和父级的主键定义,所以一对多的关系将是低效的,例如,在分支中可能有一个id_affiliate与多个id_client相关。

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

票数 0
EN

Stack Overflow用户

发布于 2013-12-08 03:09:39

@John Wu和@Hituptony,非常感谢你们的帮助,我的问题现在已经解决了。事实上,我不太理解“弱实体集”的概念,即我们可以有具有相同判别器的弱实体,但表示不同的对象,因为它们与不同的强实体相关。例如,我们可以有相同的affiliate_id,但代表不同客户的不同分支。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20406577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档