我应该如何使关系在此数据库模型中工作

时间:2016-01-14 16:43:47

标签: database model relational-database visio

(我提前为我的英语道歉) 我需要建立一个关系模型。

通常这是我们应该在团队中做的事情,但是我被困在一个人身上,所以我有点不知所措

关于学校及其想要注册的学生,家长和班级的信息。他们也保持学业成绩。

我无法理解如何将它们联系起来并避免关系问题

http://i.imgur.com/fdwxH8g.jpg

1 个答案:

答案 0 :(得分:0)

首先,我建议您添加一个Person表到父类和学生的超类型,并将所有个人和联系信息属性移动到Person。您肯定希望以后添加更多信息,并且不得不为父母,学生(以及后来的老师和其他学校员工)复制所有内容,这会让您感到非常麻烦。

person (person_id PK, last_name, first_name, sex, birthday, email, address, city, phone_number, cellphone_number)

接下来,您想记录亲生父母或看护人吗?在学校,我们通常关心照顾者及其与学生的关系。要记录它,您可以创建一个关系类型表:

relationship (relationship_id PK, description)

有父亲,母亲,阿姨,祖父,fostermother等条目。然后您可以记录2人之间的关系,如下:

parent (parent_id PK/FK, child_id PK/FK, relationship FK)

如果你想记录亲生父母,你可以使用:

bioparents (child_id PK/FK, father_id FK, mother_id FK)
由于我们不太可能为所有学生都认识父母,所以父亲和母亲的儿童可以自由(或分解为父亲和母亲的单独表格)。

最后,我们接触到了手头的学生,学生们。历史信息和校友在学校中很重要,因此要注意随着时间的推移对学生进行建模,而不仅仅是当前的学生。您需要考虑学生注册的时间分辨率 - 是年度,季度还是其他注册?对于年度注册,您可以从:

开始
student (person_id PK/FK, year)

现在,什么是课程?它是随着时间的推移而重现的,还是在不同年份/季度中具有相同名称的类别分开的东西?课程可以包含不同形式/成绩/水平的学习者,还是那些分类?课程是一组学生参加多个科目,还是特定科目分组?我熟悉两种类型的课程,可以称为表格课程和学术课程,但在您所在的地区可能会有所不同。

使用您的班级表:

class (class_number PK, name, prerequisite, formation_time)

我们需要将学生与之联系起来。如果班级成员资格是年度成员,我们可以添加上述学生关系,例如

student (person_id PK/FK, year, class_number FK)

现在,我只是编写了表格,但是如果你想正确地做这个,你真的应该在开始编写表格之前列出/建模你的功能依赖。您可以查看像对象角色建模这样的正式建模学科,或者至少在两个方向上写出简单的逻辑关系:

a Student has one or more Parents
a Parent has one or more Students

a Class has a Year
a Year has zero or more Classes

a Student has a Class per Year

对于非二元关系,您不需要在每个方向上将其写出来,但您需要确定哪些属性组合唯一地确定其他方式。例如,学生和年份的组合唯一地确定了班级。

无论如何,这应该给你一个开始。