我正在尝试建立一个学生可以登录并管理与学校有关的东西的系统。信息(针对我的学校项目)。这是我系统中每个角色应具备的能力。
学生:
- 查看老师自己设置的作业
- 查看他们的成绩,再次由他们的老师输入
- 查看考试时间表,该时间表将是管理员输入的pdf文件(每年一次)
- 按管理员(按年份分组)查看旅行和事件
老师:
- 添加/编辑/删除他们班级的作业
- 为每个学生添加成绩
管理员:
- 管理用户(添加/删除/编辑)和角色
- 为每个年度组添加考试时间表
- 为每个年度组添加旅行和事件
但是,我正在努力或不理解。首先,我不了解我的用户表(具有ID,用户名,密码和角色)如何链接到包含有关学生和教师信息的表。
另一件事是,我上面需要听的所有东西都需要一张桌子吗? (如时间表,行程等),以及是否需要管理表。
任何一般性建议也将不胜感激。
这是我的数据库:
-- Table mydb.users
CREATE TABLE IF NOT EXISTS mydb.users ( id INT NOT NULL AUTO_INCREMENT, username VARCHAR(45) NULL, password VARCHAR(45) NULL, roles_id INT NOT NULL, PRIMARY KEY (id), INDEX fk_users_roles_idx (roles_id ASC), UNIQUE INDEX username_UNIQUE (username ASC), CONSTRAINT fk_users_roles FOREIGN KEY (roles_id) REFERENCES mydb.roles (id)
-- Table mydb.roles
CREATE TABLE IF NOT EXISTS mydb.roles ( id INT NOT NULL AUTO_INCREMENT, role_name VARCHAR(10) NULL, `` VARCHAR(45) NULL, PRIMARY KEY (id), UNIQUE INDEX role_name_UNIQUE (role_name ASC))
-- Table mydb.student
CREATE TABLE IF NOT EXISTS mydb.student ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(45) NULL, surname VARCHAR(45) NULL, dob DATE NULL, yeargroup_id INT NOT NULL, PRIMARY KEY (id), INDEX fk_student_yeargroup1_idx (yeargroup_id ASC), CONSTRAINT fk_student_yeargroup1 FOREIGN KEY (yeargroup_id) REFERENCES mydb.yeargroup (id)
-- Table mydb.teacher
CREATE TABLE IF NOT EXISTS mydb.teacher ( id INT NOT NULL, name VARCHAR(45) NULL, surname VARCHAR(45) NULL, dob VARCHAR(45) NULL, subject_id INT NOT NULL, PRIMARY KEY (id), INDEX fk_teacher_subject1_idx (subject_id ASC), CONSTRAINT fk_teacher_subject1 FOREIGN KEY (subject_id) REFERENCES mydb.subject (id)
-- Table mydb.admin
CREATE TABLE IF NOT EXISTS mydb.admin ( id INT NOT NULL, name VARCHAR(45) NULL, surname VARCHAR(45) NULL, dob VARCHAR(45) NULL, PRIMARY KEY (id))
-- Table mydb.yeargroup
CREATE TABLE IF NOT EXISTS mydb.yeargroup ( id INT NOT NULL AUTO_INCREMENT, description VARCHAR(100) NULL, PRIMARY KEY (id))
-- Table mydb.subject
CREATE TABLE IF NOT EXISTS mydb.subject ( id INT NOT NULL, description VARCHAR(45) NULL, PRIMARY KEY (id)) ENGINE = InnoDB;
-- Table mydb.student_class
CREATE TABLE IF NOT EXISTS mydb.student_class ( student_id INT NOT NULL, class_id INT NOT NULL, PRIMARY KEY (student_id, class_id), INDEX fk_student_has_class_class1_idx (class_id ASC), INDEX fk_student_has_class_student1_idx (student_id ASC), CONSTRAINT fk_student_has_class_student1 FOREIGN KEY (student_id) REFERENCES mydb.student (id) CONSTRAINT fk_student_has_class_class1 FOREIGN KEY (class_id) REFERENCES mydb.class (id)
-- Table mydb.class
CREATE TABLE IF NOT EXISTS mydb.class ( id INT NOT NULL AUTO_INCREMENT, classtime DATETIME NULL, teacher_id INT NOT NULL, yeargroup_id INT NOT NULL, subject_id INT NOT NULL, PRIMARY KEY (id), INDEX fk_class_teacher1_idx (teacher_id ASC), INDEX fk_class_yeargroup1_idx (yeargroup_id ASC), INDEX fk_class_subject1_idx (subject_id ASC), CONSTRAINT fk_class_teacher1 FOREIGN KEY (teacher_id) REFERENCES mydb.teacher (id) CONSTRAINT fk_class_yeargroup1 FOREIGN KEY (yeargroup_id) REFERENCES mydb.yeargroup (id) CONSTRAINT fk_class_subject1 FOREIGN KEY (subject_id) REFERENCES mydb.subject (id)