我需要帮助。我从未使用过复杂的数据库,也不知道如何安排表格。我需要一张带有孩子名字的表格,该表格链接到他们的父母帐户($_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
最后一个选项几乎使我们能够记录同一学生针对同一科目的多个成绩-以防学生必须多次学习一门科目。
grades
subjectID studentID grade
1 1 B,A,B
1 2 A,B,B
2 1 A,C,C
2 2 B,A,A
有了这个结构,我可以使用什么查询?
我将为您的表考虑以下结构。
首先,列出学校提供的科目。您将需要一个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
最后一个选项几乎使我们能够记录同一学生针对同一科目的多个成绩-以防学生必须多次学习一门科目。
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句