仍然对基数感到困惑

时间:2014-01-22 03:09:02

标签: database database-design cardinality

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

等3个表格关系时,我会感到困惑

enter image description here

1 个答案:

答案 0 :(得分:2)

关系看起来正确。但是有一些问题。

  1. 命名约定:您应将People表命名为Person,因为您在其他地方没有复数命名。
  2. FilmDirector表名称为Director。请参阅下一点了解原因。完成后,Director表格不应包含film_ID列。
  3. 您的模型混合了逻辑和物理模型。让我解释。 FilmDirectorFilm之间的关系是逻辑上的多对多关系。当在数据库中物理创建该关系时,它会通过Film - > FilmDirectorDirector - > FilmDirector表格Film到{{1一对多和FilmDirectorDirector一对多关系。 FilmDirector表连接FilmDirectorFilm表以建立多对多关系。因此,我建议将Director表命名为FilmDirector,以便可以将连接表正确命名为Director。在多对多关系中需要这样的连接表,因为不可能将多个外键引用值放在一个表行中。对于一个表中与每个表中的多个行相关的每一行,条目都在连接表中。在此示例中,为了将一个FilmDirector与多个Film相关联,我们在Director表中创建了多个条目。类似地,为了将一个FilmDirector与多个Director相关联,我们在Film表中进行了输入。
  4. 您在FilmDirectorFilmFilmGenre之间展示的关系是GenreFilm之间的实际多对多关系。如果您的模型是逻辑模型,则不应将其显示为3表关系。如果模型是物理模型,则应将GenreFilm多对多显示为3表关系。因此,决定是否要显示物理模型或逻辑模型并相应地更改模型。
  5. 希望我的解释足够清楚!