2014-01-22 46 views
1

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

enter image description here

回答

1

关系看的权利。虽然有一些问题。

  1. 命名约定:您应该为People表作为Person,因为你没有复数命名其他地方。
  2. 名称FilmDirector表格为Director。见下一点为什么。一旦你这样做Director表不应该有film_ID列。
  3. 您的模型有逻辑和物理模型的混合。让我解释。 FilmDirectorFilm之间的关系是逻辑多对多关系。如果在数据库物理创建关系,它通过Film - >FilmDirectorDirector - >FilmDirector表与FilmFilmDirector一个一对多和DirectorFilmDirector一个一对多的关系。 FilmDirector表连接FilmDirector表建立多对多的关系。因此,我建议将您的FilmDirector表命名为Director,以便连接表可以正确命名为FilmDirector。在多对多关系中需要这样的连接表,因为不可能在一个表行中放置多个外键引用值。条目进入连接表中的一个表中的每一行与其他表中的多个行相关。在本示例中,将Film与多个Director相关联,我们在FilmDirector表中创建多个条目。类似地,将一个Director与多个Film相关联,我们在FilmDirector表中进行输入。
  4. 您在FilmFilmGenreGenre之间显示的关系是FilmGenre之间的物理多对多关系。如果你的模型是一个逻辑模型,你不应该显示这是一个3表关系。如果模型是物理模型,您应该将多对多显示为FilmDirector作为3表关系。因此,决定是否要显示物理模型或逻辑模型并相应地更改模型。

希望我的解释足够清楚!

+0

你说filmDirector表格是导演,那么如果Film(意思是电影本身)必须由一个或多个导演导演?我还是没有FilmDirector和Film ......那就是为什么我把它放在那里 – Ris

+0

编辑:是的,我在想影片有多个导演或者只有一个 – Ris

+0

非常感谢你!...我继续了这一个,很高兴你告诉我逻辑和身体之间的许多关系的差异..希望我能给你10个喜欢 – Ris