加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

数据库设计 – 如何表示对称的多对多关系

发布时间:2020-12-12 07:07:25 所属栏目:MsSql教程 来源:网络整理
导读:假设我有一个名为USER的实体,并且两个USER之间存在关系FRIENDSHIP 所以我有一个表’USER’和一个关系表’FRIENDSHIP’ USERid firstName LastName1 taher chhabrawala2 john Dsouza3 rahul singh4 deepak patel Friendshipid id1 21 31 44 14 3 在上表中,我存
假设我有一个名为USER的实体,并且两个USER之间存在关系FRIENDSHIP
所以我有一个表’USER’和一个关系表’FRIENDSHIP’
   

USER id firstName LastName 1 taher chhabrawala 2 john Dsouza 3 rahul singh 4 deepak patel

Friendship id id 1 2 1 3 1 4 4 1 4 3

在上表中,我存储了两次相同的信息,即“taher是deepak的朋友,而deepak是taher的朋友”

有没有办法减少这种冗余?

解决方法

好吧,你当然可以假设所有的友谊都是对称的,只存储一次友谊,但这意味着当你想要查询所有Taher的朋友时,你必须在任一列中查找他的ID.

或者,您可以拥有一个单独的关系ID表,然后是一个与用户关系的一对多表.这样做的好处是,如果有一天你想要它,它将允许多人关系,并允许你添加关于关系的元数据(当它开始时,谁建议它,无论如何).

User                
Id    Name          
1     Taher         
2     Deepak        

Relationship              
Id     StartDate           
1      2010-08-23

UserRelationship
RelationshipId UserId
1                1
1                2

另一方面,例如,在Facebook上,我可以“交朋友”,他们可以决定不与我交朋友.如果你没有现在使用的“冗余”方法,你将如何表现这种尚未互惠的友谊?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读