【问题标题】:Best way to add a list of items to a user in SQL在 SQL 中向用户添加项目列表的最佳方法
【发布时间】:2019-03-26 21:20:28
【问题描述】:

我想在 SQL 中为我的用户分配一个课程列表。用户可能有不同数量的课程。我环顾四周,并没有真正找到一个好的方法来做到这一点。我在设计数据库方面没有很多经验。 每个用户只是具有唯一用户标识的表上的一行信息。 列表中的每门课程都需要包含当前成绩、讲师 ID 和所属用户 ID 的字段。也许更多。 我试图避免将其全部放在带有一堆插槽甚至是空字段的一行中。有没有办法将整个表分配给用户?这样每一行都可以是一门课程?

【问题讨论】:

  • 你能展示一下你目前的结构吗?
  • 我认为您只需要几个表格:用户、课程、讲师、成绩和订阅(当用户订阅课程时)等。只要有指向您添加的另一个表格的链接一个外键。因此,如果用户获得成绩,则成绩表中的外键将是“userId”和“courseId”。
  • 这对于 SO 来说实在是太宽泛和离题了,在 dba.stackexchange.com 上可能会更好。但您可能需要一个用户表、一个课程表和一个数据透视表,它们将在两者之间创建多对多关系。
  • 无论你做什么,不要在你的用户表中创建一个课程列并用逗号分隔值填充它。

标签: php mysql sql database web-development-server


【解决方案1】:

我建议使用关联表,这意味着使用多对多关系。例如这样的结构:

学生(学生ID、姓名、姓氏)

课程(课程 ID、姓名、..)

StudentCourse(student_id、course_id、teacher_id、date_enrolled、date_passed、grade ...)

StudentCourse 是 Student 和 Course 表之间的连接,因为一个学生可以有很多课程,并且一个课程中可以注册很多学生。

我还建议进一步阅读有关数据库规范化、关联表以及关于多对多关系的 this 文章。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    • 2021-05-09
    • 2012-03-21
    • 2011-01-21
    • 2010-10-01
    相关资源
    最近更新 更多