作为MySQL数据库的多级互联学校时间表

时间:2011-04-23 08:40:10

标签: php mysql data-structures timetable

我现在已经看了一下其他与此有关的建议,但我见过的任何东西都不适合我的需求,所以这里有!

我所拥有的是多班(澳大利亚中学; 7 - 12年级),多日(周一至周五)学校时间表。我现在想要构建的是一个MySQL数据库,其中包含要在帐户驱动的网站上部署的以下信息。

  • 主题:
    • 运行时间(如“星期三的第1期”,“星期五的第2期”等 - 此列中的多个值)
    • 教师(链接到所有教师的单独数据库) ) - 如果教师生病和更换,这还需要(暂时)改变;也许是一个在“NULL”时被忽略的“replacementinstructor”列。
    • 位置(不同,但具体分配,不同日期的房间) - 如上所述,在房间改变时暂时更改。
    • 其他显而易见性:课程名称(“7年级健康”),唯一ID(类似“7.HEALTH”,而不仅仅是自动递增INT。)等。
  • 教师:
    • 名字,姓氏
    • 课程
    • 联系信息
    • 其他显而易见性:唯一ID(自动递增INT),用户名(fname.lname),其帐户的密码等。
  • 学生:
    • 名字,姓氏
    • 他们参加的课程(存储为每个学生的个人名单)
    • 年级/表格(7年级,11年级等) 。)
    • 基本个人信息(家庭郊区,电子邮件等)
    • 更明显:唯一ID(与教师设置相同),用户名(与教师相同),密码等

对于我如何设计这样一个数据结构的任何见解都将非常感激,我更像是一个UI狂热者而不是MySQL思想家;-D

提前致谢。

2 个答案:

答案 0 :(得分:6)

我可以想到在MySQL中使用以下表格:

<强>生
学生信息

  • id(auto_increment)
  • 姓名
  • 名字
  • 用户名
  • 密码
  • student_id(我有一个学生证,但我不记得我是否在7岁或10岁时获得了这个)
  • 电子邮件
  • CONTACT_PHONE
  • 郊区
  • 州(ENUM - ACT,NSW,WA,SA,TAS,VIC,NT,QLD)

<强>教师
教师信息

  • id(auto_increment)
  • 姓名
  • 名字
  • 标题(博士,夫人等)
  • 用户名
  • 密码
  • 电子邮件
  • CONTACT_PHONE
  • 郊区
  • 州(ENUM - ACT,NSW,WA,SA,TAS,VIC,NT,QLD)

<强>受试者
所有不同的科目

  • id(auto_increment)
  • 受试者
  • subject_code(例如7.HEALTH)

<强>地点
学校周围的各个地方

  • id(auto_increment)
  • 位置(例如街区A,房间2,音乐室)

<强> subject_teachers
每位老师教授哪些科目

  • id(auto_increment)
  • subject_id
  • teacher_id

<强> subject_students
每个学生参加哪些科目

  • id(auto_increment)
  • subject_id
  • student_id数据

<强> subject_timetable
主要时间表

  • id(auto_increment)
  • subject_id
  • LOCATION_ID
  • teacher_id
  • alt_teacher_id(例如代课老师)
  • 持续时间
  • 期间(数字1 - 一天中有多少个时段。如果我没记错的话,则为6个)
  • 周(1-2号,甚至可能是1-52)
  • 平日(1-5号)
  • 备注(正如@Oswald建议您可以在事情发生变化时添加其他备注)

可以整理笔记,然后在时间表上显示为脚注。

答案 1 :(得分:3)

您显然需要一个主题表,一个学生表和一个教师表。

阅读database normalization。这将告诉你(除其他事项外):

  • 不要将运行时间作为逗号分隔列表放入Subject表中。而是使用表来表示运行时间,并使用外键将该表中的条目映射到Subjects表。
  • 将老师映射到课程也是如此。
  • 同样适用于将学生映射到课程。
  • 该运行时间表也适合在特定的运行时间内保留课程的位置。

此外,如果您在数据库中记录临时更改,则您依赖于在特定时间更改相关信息的人员。要解决这个问题,您可能需要考虑一个表格课程,在那里录制

  • 运行时间
  • 周数
  • 讲师
  • 位置
  • 可能特定于该特定课程的其他字段。

这将允许您提前安排更改(McCachney先生在接下来的两周内生病,101室因重新装修一个月而关闭等)。