如何设计用于出勤管理系统数据库的模式/结构? 我将为我的大学开发出勤门户。我已经尝试过,但在设计有效的DB方面没有成功。它必须能够记录所有科目的出勤率

问题描述 投票:0回答:1
a

Class

有很多
database database-design
1个回答
4
投票
,每个
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) );

    

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.