gpt4 book ai didi

database-design - 如何表示对称的多对多关系

转载 作者:行者123 更新时间:2023-12-04 06:11:48 24 4
gpt4 key购买 nike

假设我有一个名为USER的实体,并且两个USER之间存在一个友谊FRIENDSHIP
因此,我有一个表“USER”和一个关系表“FRIENDSHIP”



用户
id firstName姓氏
1 taher chhabrawala
2约翰·杜萨(John Dsouza)
3拉胡尔·辛格
迪帕克4号公寓式酒店

友谊
编号编号
1 2
1 3
1 4
4 1
4 3

在上表中,我两次存储相同的信息,即“taher是Deepak的 friend ,而Deepak是Taher的 friend ”

有什么办法可以减少这种冗余?

最佳答案

好吧,您当然可以假设所有友谊都是对称的,并且只存储一次该友谊,但这意味着当您要查询Taher的所有 friend 时,必须在任一列中查找其ID。

或者,您可以有一个单独的关系ID表,然后有一个与用户的一对多关系表。这样做的好处是,如果有一天愿意的话,它将允许多人关系,并允许您添加有关该关系的元数据(关系开始时,谁提出的时候等等)。

   User                
Id Name
1 Taher
2 Deepak

Relationship
Id StartDate
1 2010-08-23

UserRelationship
RelationshipId UserId
1 1
1 2

另一方面,例如,在Facebook上,我可以与某人“成为 friend ”,而他们可以决定不与我成为 friend 。如果您没有现在使用的“冗余”方法,那么您将如何表示这种尚未互惠的友谊?

关于database-design - 如何表示对称的多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3550093/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com