2

看了一些教程后,我觉得我仍然对基数one to manymany to many关系感到困惑。我想在这里练习一个小例子,我知道我的设计在基数方面是错误的,这些实体之间的正确关系是什么?当我有 3 个表关系时,我会感到FilmPeople困惑FilmGenre

在此处输入图像描述

4

1 回答 1

2

关系看起来不错。不过也有一些问题。

  1. 命名约定:您应该将Peopletable 命名为,Person因为您在其他任何地方都没有复数命名。
  2. 将表命名FilmDirectorDirector。请参阅下一点了解原因。一旦你这样做,该Director表不应该有film_ID列。
  3. 您的模型混合了逻辑模型和物理模型。让我解释。FilmDirector和之间的关系Film是逻辑上的多对多关系。当该关系在数据库中物理创建时,它会通过Film->FilmDirectorDirector->FilmDirector具有Film一对多FilmDirectorDirector一对多FilmDirector关系的表。FilmDirector表连接FilmDirector 表建立多对多关系。因此,我建议将您的FilmDirector表命名为,Director以便连接表可以正确命名为FilmDirector. 在多对多关系中需要这样的连接表,因为不可能将多个外键引用值放在一个表行中。一个表中的每一行都与另一个表中的多行相关联的条目进入连接表。在这个将一个Film与多个Directors 相关联的示例中,我们在表中创建了多个条目FilmDirector。类似地,为了将一个Director与多个Films 关联起来,我们在表中进行条目FilmDirector
  4. 您在 和 之间显示的关系FilmFilmGenre和之间的Genre物理多对多。如果您的模型是逻辑模型,则不应将其显示为 3 表关系。如果模型是物理模型,则应将多对多显示为 3 表关系。因此,决定是要显示物理模型还是逻辑模型,并相应地更改模型。FilmGenreFilmDirector

希望我的解释足够清楚!

于 2014-01-22T03:27:52.693 回答