实施报告卡生成系统

时间:2016-03-15 14:16:03

标签: php mysql database-design

我想在phpmysql中创建一个系统,用于计算学生成绩并显示结果,以便学校可以打印出成绩单。

当教师登录系统时,他/她只会看到他/她教的学生

我已经在数据库中有三个表(teachers表,students表,subjects表。)

老师教授多个科目,老师教授不止一门课程。

我如何在数据库中实现它?

1 个答案:

答案 0 :(得分:1)

这个问题并不适合StackOverflow,但我会尝试为您的表提供初稿:

教师

TeacherId INT NOT NULL Primary key Autogenerated
FirstName VARCHAR(100)
LastName VARCHAR(100)

学生

StudentId INT NOT NULL Primary key Autogenerated
FirstName VARCHAR(100)
LastName VARCHAR(100)

主题

SubjectId INT NOT NULL Primary key Autogenerated
SubjectName VARCHAR(100)

TeacherXSubject(教师与科目之间的关联)

TeacherXSubjectId INT NOT NULL Primary key Autogenerated
TeacherId INT NOT NULL FK -> Teacher
SubjectId INT NOT NULL FK -> Subject

应在(TeacherIdSubjectId

上放置一个唯一键

ClassId INT NOT NULL Primary key Autogenerated
ClassName VARCHAR(100)

TeacherXClass(一个老师可以教授的课程)

TeacherXClassId INT NOT NULL Primary key Autogenerated
TeacherId INT NOT NULL FK -> Teacher
ClassId INT NOT NULL FK -> Class

应在(TeacherIdClassId

上放置一个唯一键

ClassXStudent(学生可以参加的课程)

ClassXStudentId INT NOT NULL Primary key Autogenerated
ClassId INT NOT NULL FK -> Class
StudentId INT NOT NULL FK -> Student
Grade INT    -- type may depend on how the grade looks (numeric vs. A, B, ...)

第一个要求:看他/她教的学生

SELECT S.*
FROM Student S
   INNER JOIN ClassXStudent CxS ON CxS.StudentId = S.StudentId
   INNER JOIN TeacherXClass TxS ON TxS.ClassId = CxS.ClassId
WHERE T.TeacherId = <current teacher id>

尝试一下,然后回答更有针对性的问题:)。