Database design 用户和好友列表关系的数据库设计

Database design 用户和好友列表关系的数据库设计,database-design,uml,datatables,modeling,Database Design,Uml,Datatables,Modeling,我创建了一个数据库设计 描述 一个用户可以向另一个用户发送一个朋友请求,所以这里:我们有一个包含发送者和接收者id的表友谊 每个友谊都可以是一个或多个友谊列表的一部分(就像Google+一样)…一个用户可以将另一个用户添加到一个或多个列表(多对多关系),这就是为什么我添加了表FRIENDLIST\u FRIENDLIST 但是,另一方面,如果发件人将收件人添加到标记为“家庭”的“朋友列表”中,并不意味着“发件人”也将添加到标记为“家庭”的收件人的“朋友列表”中 这是因为每个用户都有自己独立的朋

我创建了一个数据库设计

描述 一个用户可以向另一个用户发送一个朋友请求,所以这里:我们有一个包含发送者和接收者id的表友谊

每个友谊都可以是一个或多个友谊列表的一部分(就像Google+一样)…一个用户可以将另一个用户添加到一个或多个列表(多对多关系),这就是为什么我添加了表FRIENDLIST\u FRIENDLIST

但是,另一方面,如果发件人将收件人添加到标记为“家庭”的“朋友列表”中,并不意味着“发件人”也将添加到标记为“家庭”的收件人的“朋友列表”中

这是因为每个用户都有自己独立的朋友列表,所以要了解朋友列表,我们必须先了解用户

但是这个设计导致了一个封闭的和不方便的关系,正如你所看到的,我想我在这里有一些设计问题


你认为这里出了什么问题?

好的,我找到了一个解决方案……不再有问题了

因为桌上的友谊会为每一种友谊关系保留两个记录(两个罗数)

例如:

餐桌友谊

friendship_id  |   user_id    |   other_user

1                     1              2
2                     2              1
表格好友列表

friendlist_id         |     label
1                            friends
2                            family
3                            work
friendship_id   |   friendlist_id
1                   2
1                   3
2                   1
表友谊\u友谊列表

friendlist_id         |     label
1                            friends
2                            family
3                            work
friendship_id   |   friendlist_id
1                   2
1                   3
2                   1
这样,我不需要表用户和表friendlist之间的关系,因为我将在表friendlist中使用
user\u id
,以了解当前friendlist所属的用户

新设计将是:


谢谢你

好的,我找到了一个解决方案……没有问题了

因为桌上的友谊会为每一种友谊关系保留两个记录(两个罗数)

例如:

餐桌友谊

friendship_id  |   user_id    |   other_user

1                     1              2
2                     2              1
表格好友列表

friendlist_id         |     label
1                            friends
2                            family
3                            work
friendship_id   |   friendlist_id
1                   2
1                   3
2                   1
表友谊\u友谊列表

friendlist_id         |     label
1                            friends
2                            family
3                            work
friendship_id   |   friendlist_id
1                   2
1                   3
2                   1
这样,我不需要表用户和表friendlist之间的关系,因为我将在表friendlist中使用
user\u id
,以了解当前friendlist所属的用户

新设计将是:


谢谢你

好的,我找到了一个解决方案……没有问题了

因为桌上的友谊会为每一种友谊关系保留两个记录(两个罗数)

例如:

餐桌友谊

friendship_id  |   user_id    |   other_user

1                     1              2
2                     2              1
表格好友列表

friendlist_id         |     label
1                            friends
2                            family
3                            work
friendship_id   |   friendlist_id
1                   2
1                   3
2                   1
表友谊\u友谊列表

friendlist_id         |     label
1                            friends
2                            family
3                            work
friendship_id   |   friendlist_id
1                   2
1                   3
2                   1
这样,我不需要表用户和表friendlist之间的关系,因为我将在表friendlist中使用
user\u id
,以了解当前friendlist所属的用户

新设计将是:


谢谢你

好的,我找到了一个解决方案……没有问题了

因为桌上的友谊会为每一种友谊关系保留两个记录(两个罗数)

例如:

餐桌友谊

friendship_id  |   user_id    |   other_user

1                     1              2
2                     2              1
表格好友列表

friendlist_id         |     label
1                            friends
2                            family
3                            work
friendship_id   |   friendlist_id
1                   2
1                   3
2                   1
表友谊\u友谊列表

friendlist_id         |     label
1                            friends
2                            family
3                            work
friendship_id   |   friendlist_id
1                   2
1                   3
2                   1
这样,我不需要表用户和表friendlist之间的关系,因为我将在表friendlist中使用
user\u id
,以了解当前friendlist所属的用户

新设计将是:

谢谢

正确

  • 您不需要限定/确定任何组(friendlist)的所有权或直接参与,因为每个(和每个)用户都有完全相同的列表(或组),并且他/她仅通过友谊关系参与(关联)一个或多个友谊组(列表)(较低的关联实体)(实现自我关系的实体) 因此,正如您正确地重新思考的那样,用户和友谊列表之间不需要关系! 这将是多余的,甚至会带来诸如这种“过度关系”建模之类的问题,因为知道哪些组是某个用户的问题更像是处理数据(查询)的问题。 注:我唯一的建模注意点是,用户和友谊之间的简单0..N关系可以通过两个简单的用户关系更好地表示(作为替代建模),以显示作为另一个用户的用户来自同一实体(表)
    • 正确

      • 您不需要限定/确定任何组(friendlist)的所有权或直接参与,因为每个(和每个)用户都有完全相同的列表(或组),并且他/她仅通过友谊关系参与(关联)一个或多个友谊组(列表)(较低的关联实体)(实现自我关系的实体) 因此,正如您正确地重新思考的那样,用户和友谊列表之间不需要关系! 这将是多余的,甚至会带来诸如这种“过度关系”建模之类的问题,因为知道哪些组是某个用户的问题更像是处理数据(查询)的问题。 注:我唯一的建模注意点是,用户和友谊之间的简单0..N关系可以通过两个简单的用户关系更好地表示(作为替代建模),以显示作为另一个用户的用户来自同一实体(表)
        • 正确

          • 您不需要限定/确定任何组(friendlist)的所有权或直接参与,因为每个(和每个)用户都有完全相同的列表(或组),并且他/她仅通过友谊关系参与(关联)一个或多个友谊组(列表)(较低的关联实体)(实现自我关系的实体) 因此,正如您正确地重新思考的那样,用户和友谊列表之间不需要关系! 这将是多余的,甚至会带来诸如这种“过度关系”建模之类的问题,因为知道哪些组是某个用户的问题更像是一个过程问题