如何建立2个表之间的一对多关系

时间:2012-11-12 18:40:09

标签: sql sql-server database relation

我正在处理这种情况。我在SQL SERVER中有三个名为MoviesSeriesOrders的表。

Orders有一个ItemId,其中可能是MovieId(电影PK)或SerieId(系列PK)。我的意思是,在Orders表中可以有来自系列电影的记录。

我不知道如何维持这种关系,或者哪种关系可能是实现它的最佳方式。在我知道之前,我只能在2个表之间创建1对1或1对多的关系,而不是3个。

提前致谢。

3 个答案:

答案 0 :(得分:3)

在这种情况下,我认为最好将电影和系列存储在同一个表中,并使用常见属性。一个列,指示类型(电影或系列),然后在单独的表中(如果要标准化)或甚至在同一个表中(为了避免连接)具有其他属性。

答案 1 :(得分:0)

您应该在sql-server中了解实现table inheritance

您是否有产品,此产品可能是电影系列

在关联示例中,可能是学生教师

答案 2 :(得分:0)

最好的方法是:

  1. 为电影和连续剧创建一个通用表,其中包含两个实体应共享的字段(如ItemId)。
  2. 为电影创建一个表格,该表格引用在步骤1中创建的表格,其中包含必须仅为电影编辑的字段。这个新表将与前一个表一对一。
  3. 系列同样的事情。
  4. 创建订单表并设置ItemId外键以指向在步骤1中创建的表的ItemId主键。