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