ER图中的关系应该在数据库中创建为表还是外键?
例如:
导师讲课
我认为它有三种可能性:
- 有一个“lectures”表显示了这种关系,包含tutor_id和class_id,都作为外键
- 或者“tutor_id”是类表中的外键
- 或者“class_id”是导师表中的外键
我对 #3 说不,因为一个讲师可以参加多个课程,然后同一讲师的讲师表中会有多个条目(打破 3NF?)。
但我可以看到#1 和#2 的论点。我想两者都可能被允许,但是#1会被过度规范化(有这样的事情吗?),而#2是最实用的。#1 有两个连接来获取讲师的详细信息,使用可能不必要的表。
如果在创建 ER 图时放入了关系,那么您就有了用于建模该关系的表结构。
对于它的价值,我会使用方法#2,但是今天在绘制图表时想到了用#3更进一步的想法,我想知道是否值得付出额外的努力。
当一个讲座可能有多个导师或一个导师可以教授多个课程时,您的第一个选项效果最好。当您可以保证一个班级在任何时候都只有一个导师时,您的第二个选项效果最好(否则您需要在班级表中输入多个条目以容纳额外的导师)。第三种方法只有在你能保证导师只会教一门课的情况下才有效(与第二种情况相反)。
如果您想要/需要最大的灵活性,请选择选项 1。但是,您应该根据我上面给出的类型的描述选择最适合您需求的选项。
您确实可以对数据库进行过度规范化,并且在某些情况下,非规范化结构可能更适合要求 - 但我认为这不是其中之一。
我希望这可以帮助你。