公立学校系统的ER图

时间:2017-05-17 19:26:40

标签: mysql sql database relational-database entity-relationship

我有这些要求:

  1. 对于每所学校,系统需要跟踪其唯一的名称,地址,分类(价值可能是小学,中学或高中),以及在其中学习的学生人数。
  2. 对于每个学校系统员工,我们需要跟踪唯一的员工编号,全名,地址,工资以及他所在的学校。一个人只在一所学校工作。
  3. 对于每个学生,我们会跟踪学生的姓名(有时,我们需要分别参考学生的名字,中间姓名和姓氏),地址(有时,我们需要参考街道地址,城市,州和邮政编码(单独),他所在的学校以及他所在的年级。
  4. 系统经常向高中学生发送信件,因此,需要跟踪每个高中学生以及他在高中注册的年份。
  5. 保留了系统范围内提供的课程清单。有关课程的信息包括其唯一编号,唯一标题和学分数。
  6. 对于每所学校,保留有关哪些课程的教学信息。
  7. 对于每个学生,我们会保留一份成绩报告,为特定课程的学生提供成绩(价值可以是A,B,C,D或F)。
  8. 学校系统拥有由其注册号唯一识别的公交车。有些学生带他们在家和学校之间上下班,而其他学生则用自己的个人手段上下班。我们跟踪哪个学生乘坐哪辆公共汽车上下班。我们还跟踪分配给公交车的司机(司机是可以分配到多辆公交车的学校系统员工,公交车可以分配多个司机 - 考虑每周分配公交车和司机)。
  9. 以下是我对ER设计的尝试:

    这是我的第一个ER设计,我只是想知道是否符合所有要求,如果我做得正确的话?任何帮助都感激不尽!谢谢!

2 个答案:

答案 0 :(得分:2)

首先,我不希望省略外键所需的列,例如员工表中的学校ID。但我对ER图表的了解不足以说明是否允许这样做。

该图对我来说很好看。但有些观点:

  1. 学校名称可以更改。如果有一个可用的号码系统(例如美国的NCES学校ID),我将把它改为PK。
  2. 学生人数必须在学校表中没有专栏;每所学校的学生人数由与学校有关的学生隐含地提供。
  3. 我不太喜欢1:1的关系。学生< - >高中学生可以,但我宁愿在学生表中注明入学日期。
  4. 单独使用StudentID可以获得成绩表的PK。它必须是StudentID + Course#。
  5. 从学生到课程的界限是多余的,因为关系是由成绩表给出的(这是一个包含StudentID,课程编号和可选成绩的桥牌表)。
  6. 课程表的PK不能是课程#+标题,因为这意味着与不同的标题相结合可以允许相同的课程编号。 PK应该仅是课程编号。至于关系:我不知道是否可以在不同的学校教授相同的课程。如果是这样,关系是正确的。

答案 1 :(得分:1)

  1. 的Met。 (虽然我将appart地址分为#StreetAddress,PO Box,city,state zip等(假设是US)虽然如果你想要额外的功劳,你可以将地址子类型分配到他们自己的表中,只需要员工,学生和学校地址全部在一个带有外键的表中......

  2. 我打破名字,地址就像habbit总是去的那样 最低的公分母:Fname,LName等......(用于缩放 解决方案长期;合并数据很容易,以后再解决 很难)

  3. 看起来不错
  4. 不评分Highschool成绩?第9个 平地机在高中吗?那么为什么一个单独的桌子呢? 4.1)现在有一张表格,其中列出了哪些信件被发送给了学生可能有用的信息......但是他们并没有说他们需要这些信息,所以我要求澄清要求。
  5. 如果#是唯一的标题,则不需要参与 关键。
  6. 缺少(您需要一个schoolCourses表)
  7. 失踪(我想可以通过你的成绩表来处理)我会打电话给学生课程并保持成绩......然后是的。
  8. 公共汽车/学生与公共汽车/员工之间的关联/联结表 需要
  9. 总体而言,多对多需要在建模过程中得到解决。我赞同托尔斯滕,我希望看到包括FK在内的所有表格中的所有字段,并且我已经做了足够的知道CASE工具允许它。

    虽然1-1关系对于4/5普通形式看起来很好。它们通常不再实用,除非它真正代表一个单独的概念。所以我可能有一个车辆数据库的车辆表,但我可能还有一个车辆属性与摩托车属性对卡车与船等的表......但车辆是主要的在这种情况下,没有理由分开高中我只是没有看到保持对象分离的长期价值(但也许我只是缺乏远见)。

    您将了解到,在ERD中,数据之间关系的基数是最重要的(遵循数据类型/大小/比例精度)。消除M-M关系是必须的。完成后,一切都可以归结为1-M或1-1。

    不确定学校/公共汽车之间的界限是什么......公共汽车归整个系统所有......也许你需要一个“系统”表连接到学校和公共汽车到系统。这样,如果您支持多个学校系统,您就知道哪些公交车属于哪个系统,哪些学校属于哪个系统...