【问题标题】:Each user can create a group with curtain functionalities and others users can join ? Database Design每个用户都可以创建一个具有窗帘功能的组,其他用户可以加入吗?数据库设计
【发布时间】:2017-05-14 02:47:40
【问题描述】:

我要设计的应用如下:

  • 一个组有几个功能,每个用户都可以访问和 一起工作。这不是一个聊天组。就像拥有数据一样 每个用户都可以根据自己的权限添加/编辑。

  • 每个用户都可以创建或加入任意数量的群组。

我的问题是为此类任务设计数据库的最佳方法是什么。 与我想要实现的目标类似的示例存在于实时网站上,例如: Deviantart 的群组、Trello、Facebook 的群组、LinkedIn 公司页面等

我有两种方法听起来不错,但我可能会错过一些重要的东西:

  1. 我认为一个数据库是最好的方法,然后创建 与组和用户的关联。这种方式虽然让我 考虑性能。如果/何时会发生什么 数以千计甚至数百万的用户,也许还有更多可用的群组。 mysql 数据库会处理所有请求并快速响应吗?

  2. 另一个建议是我可以拆分每个组 到不同的表中。因此,当用户连接请求时 将仅基于他/她加入的组。只为 那些桌子。通过这种方法,我看到一个充满表格的数据库 随着越来越多的团体获得,以后将无法管理 已创建。

我是否过度思考我会遇到性能问题? 是否有我缺少的技术可以帮助解决我的情况?

此应用程序将在 laravel 5 中使用 mysql 数据库和 angular 2 开发。

提前感谢您!
约翰,
祝您度过愉快而富有创意的一天!

【问题讨论】:

    标签: php mysql database laravel database-design


    【解决方案1】:

    用户注册后,他们可以创建一个群组并关注其他群组以及向群组添加项目。

    用户表设计示例:

    id|email|username|password
    

    组表设计示例:

    id|user_id|title|description
    

    user_id = 创建群组的人。

    物品表设计示例:

    id|user_id|title|content
    

    user_id = 添加项目的人。

    GroupUsers 表设计示例:

    id|group_id|user_id|role
    

    role = 管理员或版主或关注者或您希望该用户能够为该组执行的任何操作。您可以将相同的 user_id 分配给多个 group_id。

    GroupItems 表格设计示例:

    id|group_id|item_id
    

    我写得很快,可能无论如何都不完美,这应该让您对一种技术有所了解。如果你不了解关系数据库。请去学习。

    【讨论】:

    • 嘿克里斯,如果我错了,请纠正我。这种方式会导致性能问题的唯一原因是服务器质量低,对吧?
    • @JohnBoulmetis 是的,您可以使用专用的数据库服务器对其进行扩展,并随着您的增长在其上添加集群。与您的托管技术人员联系以获取更多详细信息或建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 2021-01-25
    • 1970-01-01
    • 2014-07-09
    • 1970-01-01
    相关资源
    最近更新 更多