gpt4 book ai didi

mysql - 导师、学生、类(class)数据库设计

转载 作者:行者123 更新时间:2023-11-29 10:20:37 26 4
gpt4 key购买 nike

我有 3 个实体:导师、学生、类(class)

导师教授许多类(class)

学生可以被分配到由多名导师教授的许多类(class)

导师和学生需要能够登录系统

我想使用下表来表示此设计:

users
- id
- username
- password
- first_name
- last_name
- email
- password
- phone
- role_id (Student or Tutor or Admin)
- created
- modified

roles (Student, Tutor)
- id
- name
- created
- modified

courses (The courses that Tutors can teach and that Students can be assigned to)
- id
- name
- created
- modified

users_courses
- id
- user_id
- course_id
- created
- modified

我对上述设计(users_courses 表)的问题是,假设我们有导师 A 和导师 B 教数学。如果学生 X 注册了该数学类(class),我们无法知道学生 X 是由导师 A 还是导师 B 辅导。

我真的很希望能够使用单个用户表来保留所有用户,以使事情变得简单。

请问有什么建议吗?

最佳答案

问题在于您希望以不同的方式处理学生和教师(学生注册由特定教师教授的类(class)),但您对他们进行了相同的建模(他们只是用户)。

创建用户的子类型,而不是角色。为教师学生创建表 - 您可以重用用户的主键,但您将能够处理特定于子类型的属性和关系。

虽然可以只使用这些实体集,但我建议您也添加部分的概念。它在不同的系统或世界各地有不同的名称,但我见过的大多数学校系统都有类似的东西来表示类(class)学生与相关教师的划分。

users
- id PK
- username
- password
- first_name
- last_name
- email
- password
- phone
- created
- modified

students
- user_id PK FK

teachers
- user_id PK FK

courses
- id PK
- name
- created
- modified

sections
- section_id PK
- teacher_id FK
- course_id FK
- created
- modified

students_sections
- student_id PK FK
- section_id PK FK
- created
- modified

在现实世界的系统中,您还需要考虑时间 - 学生和教师通常在不同的年份或学期参加不同的类(class)。

关于mysql - 导师、学生、类(class)数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49341255/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com