看了一些教程后,我觉得我仍然对基数one to many
和many to many
关系感到困惑。我想在这里练习一个小例子,我知道我的设计在基数方面是错误的,这些实体之间的正确关系是什么?当我有 3 个表关系时,我会感到FilmPeople
困惑FilmGenre
问问题
366 次
1 回答
2
关系看起来不错。不过也有一些问题。
- 命名约定:您应该将
People
table 命名为,Person
因为您在其他任何地方都没有复数命名。 - 将表命名
FilmDirector
为Director
。请参阅下一点了解原因。一旦你这样做,该Director
表不应该有film_ID
列。 - 您的模型混合了逻辑模型和物理模型。让我解释。
FilmDirector
和之间的关系Film
是逻辑上的多对多关系。当该关系在数据库中物理创建时,它会通过Film
->FilmDirector
和Director
->FilmDirector
具有Film
一对多FilmDirector
和Director
一对多FilmDirector
关系的表。FilmDirector
表连接Film
和Director
表建立多对多关系。因此,我建议将您的FilmDirector
表命名为,Director
以便连接表可以正确命名为FilmDirector
. 在多对多关系中需要这样的连接表,因为不可能将多个外键引用值放在一个表行中。一个表中的每一行都与另一个表中的多行相关联的条目进入连接表。在这个将一个Film
与多个Director
s 相关联的示例中,我们在表中创建了多个条目FilmDirector
。类似地,为了将一个Director
与多个Film
s 关联起来,我们在表中进行条目FilmDirector
。 - 您在 和 之间显示的关系
Film
是FilmGenre
和之间的Genre
物理多对多。如果您的模型是逻辑模型,则不应将其显示为 3 表关系。如果模型是物理模型,则应将多对多显示为 3 表关系。因此,决定是要显示物理模型还是逻辑模型,并相应地更改模型。Film
Genre
Film
Director
希望我的解释足够清楚!
于 2014-01-22T03:27:52.693 回答