mysql - 电视剧应用程序的数据库设计

标签 mysql database-design

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

我列出了我需要的东西,但我不知道如何设计它。我有基本表。系列、剧集、季节等。我不能做的是如何将人们与剧集/系列联系起来。这是我的 list :

应该有多个people 类型。 Actor /导演/编剧/嘉宾等

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

一个人可能在一个或多个系列中。

这可以通过 people_serie 表和 peopleseries 表的外键来完成。但我也需要一种方法将一个人与 episodes 联系起来。

一个 Actor 可以扮演一个或多个角色。

这可以通过 person_role 表来完成。

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

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

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

最佳答案

好吧,不拆分People 表是正确的。

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

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

然后您添加一个PersonToSeries 表,它将保存它自己的id、人物的id 和系列的id。 这张 table 将容纳所有从事该系列工作的人,无论是正式员工还是 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 添加 2 行> 具有不同的角色 ID。 (一个用于 Actor,一个用于 Director)

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

关于mysql - 电视剧应用程序的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31781775/

相关文章:

sql - 事件源的数据库设计和 SQL 查询?

php - 收件箱/消息数据模型

mysql - JPA 从不执行任何操作的实体生成表

php - 更改输入格式和数据库问题

mysql - 无法保留左连接中第一个表的 ID

Mysql:需要一个查询

php - 如何更新基本上具有年份的表列之一,我只需要增量更新

database-design - Cassandra 适合银行应用吗?

sql - 用户事件的数据库结构是否正确?

mysql - 具有多个外键的键