2

我正在处理这种情况。我在 SQL SERVER 中有三个名为Movies,SeriesOrders.

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

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

提前致谢。

4

3 回答 3

3

在这种情况下,我认为最好将 Movies 和 Series 存储在具有公共属性的同一个表中,包括。一列指示类型(电影或系列),然后在单独的表中(如果要规范化)甚至在同一个表中(以避免连接)中具有附加属性。

于 2012-11-12T18:43:49.537 回答
0

您应该了解在 sql-server 中实现表继承。

您有产品吗?这个产品可能是电影系列

在链接样本中,一个可能是学生教师

于 2012-11-12T18:44:20.103 回答
0

最好的方法是:

  1. 为电影和连续剧创建一个通用表,其中包含两个实体应共享的字段(如 ItemId)。
  2. 为电影创建一个表,该表引用在步骤 1 中创建的表,其中包含必须仅为电影编译的字段。这个新表将与前一个表一一对应。
  3. 系列也是一样。
  4. 创建 orders 表并将 ItemId 外键设置为指向在步骤 1 中创建的表的 ItemId 主键。
于 2012-11-12T18:48:30.367 回答