问题描述
||
我正在尝试找出设置表/模型关联的最佳方法。
我有一张桌子
movies
。每部电影可以有零个或多个演员,导演,发行人,作家等。
如果我为每种类型的人使用不同的表/模型,我可以将其设置得很好……但这似乎很不干净。
我的想法是使用People
模型/表,将HABTM转换为PeopleType
,将HABTM转换为Movie
。
将特定的人与电影联系起来就可以了,但是……像克林特·伊斯特伍德这样的人呢?他将是一部电影的导演,另一部电影的演员,甚至两部电影都可以。电影如何知道它指的是哪种类型?
只是无法将最好的方法缠住我的头。
解决方法
您可以执行的另一种方法:
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,...)
, 由于一个人可以在一部电影中担任导演,而在另一部电影中担任演员,因此您使用“人物类型”的方法似乎并不好,因为您的“ 5”表格会包含每个属于多种类型的人的重复信息。我将创建表people_details
并为每种类型directors
,actors
,publishers
等创建特定表,并带有指向people_details
表的外键。 “ 7”,“ 8”,“ 9”表还将包含仅特定于相应类型的人员的任何列。
综上所述,Actor
属于To15ѭ,Director
属于To15ѭ,Actor
HABTMMovie
,Director
HABTMMovie
。
, 在您的联接表中:
电影人
您可以为\“ role \”之类的内容添加一个额外的字段。您要在那部电影中指定人物功能的位置。然后,您可以将Client Eastwood两次添加到联接表中,一次是针对他在该电影制作中扮演的每个角色。