我想创建一个学校数据库,我被困在中间。我有以下表格
现在我希望将主题与老师和学生联系起来。这里的问题是
我希望将学生与他的科目联系起来。
对于第8节A& B( std + section = class )英语是8c的第3个主题,它是固定的德语,但8D可以同时拥有。如果这些数据也可能以某种方式与相同的表格无关,那将是很好的。这有点像课堂上允许的科目。
我还想将老师与学科和班级联系起来(老师X学习英语为8c)
答案 0 :(得分:4)
使用下表可以轻松解决您的问题:
<强>学生强>
<强>教师强>
<强>类强>
<强>受试者强>
<强>当然强>
<强> course_attendants 强>
如您所见,主题是可选的或强制的约束在表主题中定义。学科可以在课程和学年中举办。最后,课程可以由学者参加,如课程课程中所述。要检查学生过去是否参加过课程,您只能查看课程课程和课程。设计一个课程只有在已经访问过另一门课程时才能参加课程,将所需的课程编号放在表格科目字段requires_subject_id中。
答案 1 :(得分:1)
学生与学科或教师与学科之间的关系应存储在不同的“course_relationships”表中。对于按类别划分的必修科目,请将SQL添加到您用于创建学生的函数中,以便随后为每个必修科目创建关系。类似的东西:
// after whatever function you're using to create users
$compulsory_classes=array();
// for sixth grade
$compulsory_classes['6'] = array();
// for sake of example, say English course ID is 1
$compulsory_classes['6'][] = 1;
$user_class = $user->class;
foreach($compulsory_classes[$user_class] as $current_class) {
mysql_query("INSERT INTO relationships (user_id, course_id)
VALUES (" . $user_class . ", " . $current_class . ")");
}
然后使用单独的表单或函数添加非强制类。
答案 2 :(得分:0)
让你的表格正确的关键是要认识到学生与受试者是多对多的关系。所以你需要一个中间表来建立关系。
所以你有一个学生表:比如说Student_ID,FirstName,LastName作为字段等
主题的第二个表:具有Class_ID,SubjectName,Grade,Optional等
然后一个中间表称为StudentSubjectLinks,其中只有三个字段如下;
LinkID:中间表的ID。
Student_ID:设置为链接到学生表中Student_ID的外键。
Class_ID:设置为链接到Subjects表中Class_ID的外键。