Mysql 实现大学群体学习的数据库方案

Mysql 实现大学群体学习的数据库方案,mysql,sql,database,database-design,Mysql,Sql,Database,Database Design,我对数据库还很陌生,所以我非常感谢在这方面的任何帮助 所以我在这里要做的是,我想创建一个数据库方案,帮助学生组织学习小组 学生应该能够检查一个小组是否已经存在,如果没有创建它,并给出关于主题、地点、时间的一般描述,可能会添加书籍资源等 想要加入小组的学生,应该能够搜索主题领域和特定主题,查看小组中已有多少人,如果合适,可以加入小组 这些表格是否足以满足我想要实现的目标: 用户=UID(主要和唯一)、名称、学期、科目、科目范围 组=GID(主要)、名称、主题、主题区域、描述、资源、, 用户数 成员

我对数据库还很陌生,所以我非常感谢在这方面的任何帮助

所以我在这里要做的是,我想创建一个数据库方案,帮助学生组织学习小组

学生应该能够检查一个小组是否已经存在,如果没有创建它,并给出关于主题、地点、时间的一般描述,可能会添加书籍资源等

想要加入小组的学生,应该能够搜索主题领域和特定主题,查看小组中已有多少人,如果合适,可以加入小组

这些表格是否足以满足我想要实现的目标:

用户=UID(主要和唯一)、名称、学期、科目、科目范围

组=GID(主要)、名称、主题、主题区域、描述、资源、, 用户数

成员资格=UID(fk到users.UID)、GID(fk到groups.GID)

另外,我如何使groups.NumberOfUsers保持动态,以根据有多少用户具有该特定组的成员资格而进行更改

有没有办法限制一个组可以拥有的用户数量


干杯

是的,你基本上是对的,我编译了一些数据库模式,可以帮助你

表:小组

  • ID(PK | AI)
  • 名称(Varchar)
  • 说明(文本)
  • 创建人(INT | FK)
  • 其他信息
应该为特定组中的用户提供一个数据透视表, 表:用户组

  • ID(PK | AI)
  • 组id(FK)
  • 用户id(FK)
对于组资源(如书籍资源、视频等),您可以创建另一个透视表,如下所示: 表:资源组

  • ID(PK | AI)
  • 组id(FK)
  • 键入(INT)/(可选,如果您想对上传的文件类型进行排序)状态:1-书本,2-视频等
  • 路径(本地或外部)
对于NumberOfUsers的问题,我建议不要保存,因为您可以通过简单的查询获取这些信息,而不必用这些信息“累坏”数据库。 但是,如果您仍然想保存,只需更新表,将foreach insert插入用户组即可。。您的sql查询将是:

Update groups SET numberofusers = numberofuser + 1 WHERE id = ?;

注意:在组中,您可以使用created by,甚至可以声明一个新列(管理员id),并分配该组的管理员,该管理员将具有编辑权限(正如您在脚本中计划的那样)。

对于多:多映射表,如
用户组
,请删除
id
,并遵循其余建议。