2011-08-11 109 views
1

我想在MySQL中为DB设计提出建议。MySQL数据库设计建议

我有一张表Movie_Celebrity_Role其中包含电影ID,名人id,角色ID。 此表格是电影,名人(CelebName & CelebID)和角色(例如:制作人,导演等等)表格之间的链接。

我有另一个表Movie_Company_Role这是上述类似,但在这里,而不是明星,公司ID存储链接到公司表和角色是不同的,如制作公司等

我的问题是,有一些领域,如媒体关系,可能有公司和明星。

因此,如果我创建另一个表为MoviedID_CelebID_CompID_RoleID当连接表时,我将得到重复错误,因为celebs表和Companies表必须在匹配此表以及Movie_celeb_role和Movie_comp_role时连接。

请建议如何去做这件事。

我想我的网站上得到的结果是这样的:

生产者 Celeb1 Celeb2

主任 Celeb1 Celeb3

... ... ...

媒体关系 Celeb2 C ompany1 Company12

PS:另外当我点击这个页面上的名人或公司链接时,它必须去庆祝页面或公司页面,其中名人或公司相关联的电影必须与角色一起列出。

+0

因此,你保存在语义上不同的东西(公司角色和“名人”角色)在同一个表?如果公司角色需要额外的列,会发生什么? – Jacob

+0

你在哪个表格中有“媒体关系”字段(列)?它是否存储CelebId或CompanyID? – RKh

+0

@RPK媒体关系再次扮演角色,可以由公司或个人(名人)执行。媒体关系将存储在角色表中的角色名称中。 – Kenh

回答

0

很混乱...

你会得到什么'重复错误'?只要role_id从角色表中正确地赋值,你应该没问题。

你不好的地方在于你对角色定义有歧义。在你的例子中,你希望在你的表中有2个role_id值,一个给公司,另一个给这个人。

我不知道你会事件想要这样做......无论如何,我会期望一家公司可能会在电影中扮演多个角色,而一个人也可能会这样做。 (例如某人可能是导演,同时也是演员)

在这里,您希望这是一张单独的表格,并非全部卡入其中。

+0

请参考上述问题的编辑版本。 – Kenh