我现在面临着一个很大的挑战。当我有一个强实体"CLIENT“和一个弱实体"AFFILIATE”时,我正在设计一个数据库,该实体本身的主键与父实体的主key.The相结合,确定两者之间的关系必须是“一对多”关系,并具有完全的参与性。但我的问题是,在SQL中,因为分支的主键必须由它的鉴别器和父级的主键来定义,所以一对多的关系将是低效的,例如,在分支中可能有一个id_affiliate与多个id_client相关。请帮帮我。
发布于 2013-12-06 01:27:01
这并不是一个不寻常的设置,你有什么特别的理由相信它的效率会很低吗?
客户端应该有一个集群主键id_client Affiliate应该有一个集群主键id_client + id_affiliate
两者之间的连接是一个简单的b-tree查找,没有用于页面查找的额外跳跃(因为聚集键),并且给定客户端的所有分支机构可能都在同一数据页面上,因此查找将非常快。
发布于 2013-12-06 01:32:31
我相信你误解了弱实体关系和强实体关系的复杂性。实际上,在设计表格时,这个概念几乎没有相关性。作为规范化过程的一部分,您需要关注的是两个表之间的基石关系。
你的细节有点粗略,但如果你认为这将是低效的,因为你会有多个记录返回当你查询联属寻找客户id的时候,我不会这么认为。
如果这个关系是强制的,你将不会遭受任何低效,如果这是一个可选的关系,那么在关系数据库模型的上下文中,你的强实体关系和弱实体关系没有显著的区别。
事实上,在你的问题中,你回答了自己的问题,声明:
但我的问题是,在SQL中,因为分支的主键必须由它的鉴别器和父级的主键定义,所以一对多的关系将是低效的,例如,在分支中可能有一个id_affiliate与多个id_client相关。
这不是问题,这就是它的工作方式。
发布于 2013-12-08 03:09:39
@John Wu和@Hituptony,非常感谢你们的帮助,我的问题现在已经解决了。事实上,我不太理解“弱实体集”的概念,即我们可以有具有相同判别器的弱实体,但表示不同的对象,因为它们与不同的强实体相关。例如,我们可以有相同的affiliate_id,但代表不同客户的不同分支。
https://stackoverflow.com/questions/20406577
复制相似问题