调度系统的数据库表

问题描述

如果我设计错了,请纠正我。我需要设计 3 个表如下:

  1. 学生:身份证、姓名
  2. 部分:id、student_id、s_name
  3. 时间表:id、section_id、c_name

这里是要求: 有学生,每个学生都有部分,每个部分都有时间表。

  • 从学生到分区,分区到日程表的关系是一对多
  • 学生可以有很多部分
  • section 只能有 1 个学生/section 可以有很多时间表
  • schedule 只能有 1 个部分

========这里是我的表格:======

  1. 学生

    • id --> 主要和自动增量
    • 姓名
  2. 部分

    • id --> 主要和自动增量
    • student_id --> 学生表id的外键引用
    • s_name
  3. 时间表

    • id --> 主要和自动增量
    • section_id --> 对section表id的外键引用
    • c_name

我将不胜感激,非常感谢。

解决方法

是的,您的架构似乎是 BCNF 规范化的,但它不满足所有给定的要求。我会更改一些内容以使其更直观。

2. Sections Table:
section_id -> primary,auto increment
student_id -> Foreign Key to students.id

说明:Section ID与student是一对一的,而student与section是一对多的。

3. SectionNames Table:
section_id -> primary and foreign key,from section table.
section_name -> String,name of section.

说明:如果您需要存储 s_name,就像您现在正在做的那样,您可以添加它。

4. Schedule Table:
class_id -> Primary,auto increment key
section_id -> Foreign key,sections table.

说明:附表(班级)与部分的一对一关系,以及部分与班级的一对多关系。

5. ScheduleName Table:
class_id -> Primary,and foreign key to schedule table.
class_name -> String

说明:根据您的表架构存储 c_name。