2013-07-08 62 views
0

我正在研究学生,TA,老师和班级关系。 每个班级与一位教授和一位助教关联,但助教也可以是一位学生。所以,我想出了这样的想法(下图),但我不确定创建这种循环关系是正确的吗?学生管理中的循环关系

预先感谢您。

Database 1

+0

这将取决于你想如何建模。对? –

+0

但是就你的班级实体而言,在学生的上下文中,TA不是该班级的一部分,对吗?为什么不创建一个单独的TA实体?你迫使学生也是TA(IsTA)的旗帜。如果将来您需要将其他属性添加到TA(办公室电话号码,电子邮件)或其他属性,这与学生无关?这些属性去哪里?或者创建一个可由TA和教授使用的Faculty实体。只是一个想法。 – OldProgrammer

+0

您的意思是将TA与教授合并为一个Faculty实体吗?如果是的话,我们怎么知道教授是谁,谁是TA?此外,我们必须创建两条从教师到班级的线路,因为我们有一位助理教授和一位教授被分配到一个班级。 –

回答

0

当且仅当一个永远不能既是同一类学生和TA,它不应该全面构建循环关系。您可以通过在允许在数据库中设置值之前检查该情况来防止发生这种情况。

即使发生了,我也不相信会有问题。循环关系的问题是一个值永远不会被定义(也就是StudentID被引用为每个表的外键,但从未定义过)。数据库布局中不是这种情况。

+0

如果一个人既可以是同一个班级的学生,也可以是TA,这是不现实的。但是,谢谢你回答我并指出我必须阻止的其他情况。 –

0

您的布局不是循环的;您有:

Class-list -> Student

Class-list -> Class -> Student

您的布局,如果你提供Student -> Class-list

我没有看到你有问题只会变得圆。

0

它看起来对我很好,但你可能想要考虑是否所有的助教将成为学生。

表格之间的界限是关系。所以在这种情况下你并不真正创建循环引用。

在一条路径中,你是说一个class_list有一个学生,一个班有多个class_lists。在另一条路上,你说的是一个班有一个TA,他必须是学生(可能是“isTA”标志)

这里没有任何东西阻止学生参加班级和TA,但是这个也不会是世界的尽头。很可能会出现这种情况。

+0

有没有更好的方法来模拟学生,助教和老师? –

+0

问题是,你认为哪个更好?你可以创建一个“人”表而不是学生/助教/助教表,以防教员也是学生。它会更好吗?我不知道。 –