在观看了一些教程后,我觉得在one to many
和many to many
关系方面,我仍然对基数感到困惑。我想在这里练习一个小例子,我知道我的设计在基数方面是错误的,这些实体之间的正确关系是什么?当我有FilmPeople
和FilmGenre
答案 0 :(得分:2)
关系看起来正确。但是有一些问题。
People
表命名为Person
,因为您在其他地方没有复数命名。FilmDirector
表名称为Director
。请参阅下一点了解原因。完成后,Director
表格不应包含film_ID
列。FilmDirector
和Film
之间的关系是逻辑上的多对多关系。当在数据库中物理创建该关系时,它会通过Film
- > FilmDirector
和Director
- > FilmDirector
表格Film
到{{1一对多和FilmDirector
到Director
一对多关系。 FilmDirector
表连接FilmDirector
和Film
表以建立多对多关系。因此,我建议将Director
表命名为FilmDirector
,以便可以将连接表正确命名为Director
。在多对多关系中需要这样的连接表,因为不可能将多个外键引用值放在一个表行中。对于一个表中与每个表中的多个行相关的每一行,条目都在连接表中。在此示例中,为了将一个FilmDirector
与多个Film
相关联,我们在Director
表中创建了多个条目。类似地,为了将一个FilmDirector
与多个Director
相关联,我们在Film
表中进行了输入。FilmDirector
,Film
和FilmGenre
之间展示的关系是Genre
和Film
之间的实际多对多关系。如果您的模型是逻辑模型,则不应将其显示为3表关系。如果模型是物理模型,则应将Genre
和Film
多对多显示为3表关系。因此,决定是否要显示物理模型或逻辑模型并相应地更改模型。希望我的解释足够清楚!