我需要帮助。我从未使用复杂的数据库,我不知道如何安排表格。我需要一个带有孩子姓名的表格,这些表格与他们的父母帐户相关联(在提交注册表格时使用$_POST['children_name']
等),但现在我需要将他们的学校与他们的成绩联系起来(例如我在8一个年级,然后他们的班级与个别年级学校科目,然后链接标记(如美国的A +)和个别孩子的缺席。
我不知道如何做到这一点。我举了一个例子,如下图所示。请你帮助我好吗?
(注意那里有3个表)
稍后编辑: Fluffeh的解决方案,有点编辑! “ 我会为你的表考虑以下结构。
首先,该网站将为所有学校提供数据表。
id schoolname
1 European College#1
2 European Colelge#2
然后,列出了大学里活跃的所有课程。
id Class
1 8A
2 8B
3 8C
然后是所有学校提供的科目表。您需要一个ID,然后根据需要提供任何其他信息。
schoolSubject
id name
1 mathematics
2 geography
3 physics
4 geometry
接下来是一张包含学校,班级和学校科目之间关系的表格。
relations
SchoolID ClassID SubjectID
1 1 1
1 1 2
1 1 4
(所以,如果我的逻辑是正确的,来自“欧洲大学#1”的8A级学生将学习数学,地理和几何学)
最后,我们需要知道哪个学生来自哪里。
students
id name class_id schoolname_id
1 John Doe 1 1
2 Jane Doe 2 2
最后一个tabe几乎让我们能够为同一个科目记录同一个学生的多个成绩 - 如果学生必须参加 一个主题不止一次。
grades
subjectID studentID grade
1 1 B,A,B
1 2 A,B,B
2 1 A,C,C
2 2 B,A,A
有了这个结构,我可以使用什么查询?
答案 0 :(得分:1)
我会为你的表考虑以下结构。
首先,学校提供的科目表。您需要一个ID,然后根据需要提供任何其他信息。
schoolSubject
id name
1 mathematics
2 geography
接下来是一个包含学生信息的表格。同样,我们有一个唯一的ID,然后根据需要提供任何信息
student
id name
1 John Doe
2 Jane Doe
下一个表允许所谓的多对多关系。基本上它意味着您可以为同一主题创建多个条目(每个学生可以注册多个条目)和多个学生条目(因为学生可以注册多个科目)。
studentEnrolment
subjectID studentID
1 1
1 2
2 1
最后一个tabe几乎让我们能够为同一个科目记录同一个学生的多个成绩 - 如果学生必须参加 一个主题不止一次。
grades
subjectID studentID grade
1 1 B
1 2 A
2 1 A
2 2 B
有了这个结构,你可以进行如下查询:
select
subj.name,
stud.name,
grad.grade
from
schoolSubject subj
join studentEnrolment enr
on subj.id=enr.subjectID
join student stud
on enr.studentID=stud.studentID
join grades grad
on subj.subjectID=grad.subjectID
and stud.id=grad.studentID