Class
Lecture
属于一个单个Class
。
Student
参加了许多人,每个人都参加了许多人参加。
Lectures
要在学生和演讲之间建立
Lecture
关系,请创建一个名为Students
的
CREATE TABLE class (
class_id INT,
class_name VARCHAR(100),
CONSTRAINT class_id_pk PRIMARY KEY (class_id)
);
CREATE TABLE lecture (
lecture_id INT,
class_id INT,
lecture_dt DATE,
CONSTRAINT lecture_id_pk PRIMARY KEY (lecture_id),
CONSTRAINT lecture_class_id_fk FOREIGN KEY (class_id) REFERENCES class (class_id)
);
CREATE TABLE student (
student_id INT,
student_first_name VARCHAR(20),
student_last_name VARCHAR(20),
CONSTRAINT student_id_pk PRIMARY KEY (student_id)
);
CREATE TABLE attendance (
lecture_id INT,
student_id INT,
attendance_present INT CHECK (attendance_present in (0,1)),
CONSTRAINT attendance_pk PRIMARY KEY (lecture_id, student_id),
CONSTRAINT att_lecture_id_fk FOREIGN KEY (lecture_id) REFERENCES lecture (lecture_id),
CONSTRAINT att_student_id_fk FOREIGN KEY (student_id) REFERENCES student (student_id)
);
。请注意,
M:N
的主要键是
association table
和
attendance
,这两个字段都将外键返回到各自的桌子上。
如果您的数据库具有布尔数据类型,则可以将其用于
attendance
。 false/0的值表示学生错过了讲座。 true/1的值表示学生参加。如果您想存储它,也可以包括一个
lecture_id
。
在现实中,这也需要一个
student_id
桌子,其中有很多与许多桌子的桌子。可能还需要有一个带有
attendance_present
的一对一对一对
on_time
(或主题)表。也可能有一个
Teacher
桌子,上面有一对一对
Class
的桌子。班级也可能有学生列表,因此Course
协会表会很好。
Class
创建表班( class_id int, class_name varchar(100), Class class_id_pk主键(class_id) ); 创建桌子讲座( 讲座_id int, class_id int, 讲座_dt日期, 约束讲座_id_pk主键(讲座_id), 约束讲座_CLASS_ID_FK外键(class_id)参考class(class_id) ); 创建餐桌学生( Student_id int, student_first_name varchar(20), Student_last_name varchar(20), 约束Student_id_pk主键(Student_id) ); 创建餐桌出勤( 讲座_id int, Student_id int, atcthance_present int check(atcthance_present in(0,1)), Constraint Actinance_pk主键(lutecon_id,student_id), 约束att_lecture_id_fk外键(lutecter_id)参考讲座(讲座_id), 约束att_student_id_fk外键(student_id)参考学生(student_id) );