创建一个类主题数据库

时间:2011-11-06 17:35:08

标签: php mysql sql database

我想创建一个学校数据库,我被困在中间。我有以下表格

  1. 用户 - id,role_id,用户名,密码
  2. 角色 - ID,角色(教师/学生
  3. 教师 - id,
  4. 学生 - id,class_id,
  5. - id,standard_id,section
  6. 标准 - id,name
  7. 现在我希望将主题与老师和学生联系起来。这里的问题是

    1. 某些科目是可选的,其他科目是强制性的
    2. 5-7th标准的英语是强制性的,但是8-10
    3. 是可选的
    4. 第8 std。英语是第3科目/可选组3的一部分,9-10英语可以作为subject1,subject2或subject3,但只有一次,作为科目1的英语与作为科目2的英语不同。
    5. 我希望将学生与他的科目联系起来。

      对于第8节A& B( std + section = class )英语是8c的第3个主题,它是固定的德语,但8D可以同时拥有。如果这些数据也可能以某种方式与相同的表格无关,那将是很好的。这有点像课堂上允许的科目。

      我还想将老师与学科和班级联系起来(老师X学习英语为8c)

3 个答案:

答案 0 :(得分:4)

使用下表可以轻松解决您的问题:

<强>学生

  • ID
  • 类标识码

<强>教师

  • ID

<强>类

  • ID

<强>受试者

  • ID
  • 等级
  • 可选的
  • requires_subject_id

<强>当然

  • ID
  • teacher_id
  • subject_id
  • school_year

<强> course_attendants

  • COURSE_ID
  • student_id数据

如您所见,主题是可选的或强制的约束在表主题中定义。学科可以在课程和学年中举办。最后,课程可以由学者参加,如课程课程中所述。要检查学生过去是否参加过课程,您只能查看课程课程和课程。设计一个课程只有在已经访问过另一门课程时才能参加课程,将所需的课程编号放在表格科目字段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的外键。