我对数据库还很陌生,因此我非常感谢任何有关这方面的帮助。
所以我在这里想做的是,我想创建一个数据库方案来帮助学生组织学习小组。
学生应该能够检查小组是否已存在,如果没有则创建它,并给出有关主题、位置、时间的一般描述,也许可以添加书籍资源等。
想要加入小组的学生应该能够搜索主题领域和特定主题,查看小组中已有多少人,如果适合就加入。
这些表格足以满足我想要实现的目标吗:
用户 = UID(主要和唯一)、姓名、学期、主题、主题领域
groups = GID(主要)、名称、主题、主题区域、描述、资源、 用户数量
成员资格 = UID(fk to users.UID), GID(fk to groups.GID)
另外,我如何保持 groups.NumberOfUsers 动态变化,具体取决于有多少用户拥有该特定组的成员资格?
有没有办法限制一个组可以拥有的用户数量?
干杯
最佳答案
是的,你基本上是对的,我已经编译了一些可以帮助你的数据库模式。
表:组
- ID(PK| AI)
- 名称(Varchar)
- 说明(文本)
- 创建者(INT | FK)
- 其他信息...
对于特定组中的用户应该有一个数据透视表,让我们命名它, 表:user_groups
- ID(PK| AI)
- group_id(外籍)
- user_id (FK)
对于群组资源(如书籍资源、视频等),您可以创建另一个数据透视表,如下所示: 表:groups_resources
- ID(PK|AI)
- group_id(外籍)
- type (INT)//(可选,如果您想对上传的文件类型进行排序)状态:1 - 书籍,2 - 视频等
- 路径(本地或外部)
对于您的 NumberOfUsers 问题,我建议不要保存,因为您可以通过简单的查询获取该信息,而不会因为该信息而“厌倦”您的数据库。 然而,如果你仍然想保存它,你可以简单地更新你的表,foreach插入到user_groups中..你的sql查询将是:
Update groups SET numberofusers = numberofuser + 1 WHERE id = ?;
附注- 在组中,您可以使用created_by,甚至声明一个新列(administrator_id)并分配该组的管理员,该管理员将具有编辑权限(正如您在脚本中计划的那样)。
关于mysql - 实现大学小组学习的数据库方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44282544/