在CakePHP中模拟电影,演员,导演等之间的关联

时间:2011-06-13 19:12:30

标签: database-design cakephp associations cakephp-1.3

我正在试图找出设置表格/模型关联的最佳方法。

我有一张movies的表格。每部电影可以有零个或多个演员,导演,出版商,作家......等等。

如果我为每种类型的人使用不同的表/模型,我可以设置得很好......但这似乎是不洁净的。

我的想法是使用People模型/表格,其中HABTM为PeopleType,HABTM为Movie

这可以很好地将特定人物与电影联系起来,但是......像克林特·伊斯特伍德这样的人呢 - 他将成为一部电影的导演,另一部电影的导演,甚至两者兼而有之。电影怎么知道它指的是哪种类型?

无法绕过最好的方法来解决这个问题。

3 个答案:

答案 0 :(得分:1)

由于一个人可以成为一部电影中的导演,另一部电影中的演员,你使用“人物类型”的方法看起来不太好,因为你的people表格会包含每个人的重复信息多种类型。我会为每个类型people_detailsdirectorsactors等创建一个表publishers和特定表,并使用外键{{1表。 people_detailsdirectorsactors表格还会包含仅针对相应人群类型的任何列。

总结一下,publishers属于ActorPersonDetails属于DirectorPersonDetails HABTM ActorMovie HABTM {{ 1}}。

答案 1 :(得分:1)

您可以采取的另一种方式:

people_types (id, name)
people_details (id, first_name, last_name, ....)
people (id, person_details_id, person_type_id)
movies_people(id, person_id, movie_id) 
movies (id, title, ...)

答案 2 :(得分:0)

在您的联接表中: movies_people

您可以为“角色”添加额外的字段。在那里你将特定人物在该电影中的功能。然后,您可以将Client Eastwood添加到连接表中两次,每次为该电影制作中的每个角色添加一次。