提问者:小点点

数据库模型需要建议[已关闭]


我有一个类似udemy的网站,我有五个主题

  • 物理
  • 化学
  • 数学
  • 英语
  • 生物学

还有五个叫类的

  • class8'
  • class9'
  • class10'
  • class11'
  • class12'

每节课都与这五门学科有关系。 在那里,教师可以根据自己的选择上传视频到这些科目中的任何一个。 例如,他想在class9'中上传physics的视频。 教师与学科,班级也有关系。 我已经为这个数据库考虑了一天多,但结果是这样的。 我为每堂课制作了五张单独的表格,所有表格包含五个科目

请建议一个好的数据库模型


共1个答案

匿名用户

为类,科目和教师创建一个表。 类似于:

CREATE TABLE class
             (id integer AUTO_INCREMENT,
              name varchar(64),
              PRIMARY KEY (id));

CREATE TABLE subject
             (id integer AUTO_INCREMENT,
              name varchar(64),
              PRIMARY KEY (id));

CREATE TABLE teacher
             (id integer AUTO_INCREMENT,
              givenname varchar(64),
              surname varchar(64),
              PRIMARY KEY (id));

还要为视频创建一个表。 包括上传了它的老师。

CREATE TABLE video
             (id integer AUTO_INCREMENT,
              title varchar(64),
              content varbinary(65535),
              uploader integer,
              PRIMARY KEY (id)
              FOREIGN KEY (uploader)
                          REFERENCES teacher
                                     (id));

然后创建一个将主题链接到类的表。 包括在课堂上讲授该科目的老师。

CREATE TABLE class_subject
             (class integer,
              subject integer,
              teacher integer,
              PRIMARY KEY (class,
                           subject),
              FOREIGN KEY (class)
                          REFERENCES class
                                     (id),
              FOREIGN KEY (subject)
                          REFERENCES subject
                                     (id),
              FOREIGN KEY (teacher)
                          REFERENCES teacher
                                     (id));

如果一个科目在一个班级中只能由一名教师讲授,请在主键中包括教师

还要创建一个表格,将视频链接到一个班级和主题。

CREATE TABLE class_subject_video
             (class integer,
              subject integer,
              video integer,
              PRIMARY KEY (class,
                           subject,
                           video),
              FOREIGN KEY (class,
                           subject)
                          REFERENCES class_subject
                                     (class,
                                      subject),
              FOREIGN KEY (video)
                          REFERENCES video
                                     (id));

如果只允许教师为班级和科目分配视频,如果教师也为该班级和科目授课,则需要对class_subject(class,subject,teacher)设置唯一约束(除非(class,subject,teacher)已经是主键,这意味着它是唯一的),在class_subject_video中添加teacher列,并将外键从(class,subject)引用class_subject(class,subject)更改为(class,subject,

如果视频不应该链接到一个课程中的某个主题,而应该只链接到一个一般的主题,那么不要创建链接视频到一个课程和主题的表,而是创建一个链接视频到一个主题的表。

CREATE TABLE subject_video
             (subject integer,
              video integer,
              PRIMARY KEY (subject,
                           video),
              FOREIGN KEY (subject)
                          REFERENCES subject
                                     (id),
              FOREIGN KEY (video)
                          REFERENCES video
                                     (id));

你应该有个主意了。 可以根据需要修改数据类型和对象名称。 如果需要,请添加其他列。 等等。