电视连续剧应用程序的数据库设计

时间:2015-08-03 07:35:10

标签: mysql database-design

我正在开发一个关于电视节目的网络应用程序。我需要数据库设计方面的帮助。

我列出了我需要的东西,但我无法弄清楚如何设计它。我有基本的表格。系列,剧集,季节等。我无法做的是如何将人与剧集/系列联系起来。这是我的清单:

应该有多个people类型。演员/导演/作家/嘉宾等。

我不认为为每种类型创建单独的表是个好主意。所以应该有一个people表。我需要在某处存储类型。

一个人可能是一个或多个系列。

可以使用带有people_seriepeople表的外键的series表来完成此操作。但我需要一种方法将一个人与episodes联系起来。

演员可以扮演1个或多个角色。

可以使用person_role表格来完成。

这就是它变得复杂的地方。

  • 角色可能在一个系列中有1个或多个剧集。
  • 一个人可能属于一个系列中的多个类型。例如:演员和导演

我希望我能说清楚问题是什么。

1 个答案:

答案 0 :(得分:0)

嗯,您确定不要拆分People表。

首先要做的是添加一个Roles表,其中包含角色ID和角色标题(每列应该是唯一的 - 您不希望Actor有2个不同的ID角色...)

TblRoles
RoleId    RoleTitle
-------------------
1         Director
2         Writer
3         Actor

然后你添加一个PersonToSeries表格,它会保存它自己的ID,该人物的ID和系列的ID。 这张桌子将容纳每个人在该系列中工作,作为正式工作人员或1集客人。

TblPersonToSeries
PTSId   PersonId   SeriesId  
---------------------------
1       1          1
2       3          8
3       4          7

您需要的下一个表格是PersonToEpisode表格,其中包含PersonToSeries ID和剧集ID以及角色ID。 在此表中,您只需要保留整数ID,使其重量非常轻,并且您将为PersonToSeries中的每个记录指定与其相关的剧集。

TblPersonToEpisode
PTEPTSId     RoleId
-------------------
1            2 
2            3
3            1

当一个人通常是系列剧的导演,但在该系列的一集中出现猜测时,您只需在PersonToEpisode中为PersonToEpisode添加两行,其中包含不同的角色ID 。 (一个用于Actor,另一个用于Director

TblPersonToEpisode
PTEPTSId     RoleId
-------------------
13           1 
13           2