我正在为电视剧和电影的应用程序设计数据库。 在研究必须保存的数据时,我注意到电影,电视连续剧,电视连续剧的季节和电视连续剧的情节非常相似。
所有这些都有标题,播出日期,演员表,工作人员列表,作曲家,导演列表,描述,音轨,费率,等级,图标(或图像),视图,预告片,流派等。它们全都有一个类型(一些变量决定是季节,电影,电视连续剧还是剧集)。
有一些差异(例如,电影和剧集都有播客,而电视剧和电视剧则没有)。将来可能会有更多差异,但尤其是电影和剧集似乎非常相似。
我当时正在考虑将所有这些信息存储在同一张表中也许是有意义的。类型会告诉我这是哪种物品。剧集将具有季节标识符和电视连续剧标识符。各个季节都有一个电视连续剧标识符,可以在电视系列-季节-剧集之间来回移动。季节和剧集也需要一个数字(季节编号,剧集编号)。
显然还有其他表,例如流派表,流表等。
另一方面,使用这种设计查询某些信息会变得很复杂。例如,如果我要列出所有具有一定数量剧集的电视连续剧,或者列出其剧集流存储在特定CDN上的电视剧集(在此应用程序中将是必要的),那么我要么必须进行单独的查询,要么使用子查询。在许多其他情况下,保留所有4种项目类型似乎会使事情变得复杂。由于我必须使用sequelize(节点js ORM)而不是原始查询,因此我从以前的经验中知道,这将导致代码混乱和性能下降。
如果我将项目分开放在不同的表中,这将是不好的设计或破坏实体的完整性吗?
答案 0 :(得分:0)
对我来说,在同一张表中列出公共列也是一种好习惯。假设将来有一个新列,就像production_house等一样常见,那么您无需在所有表中添加新列。
希望我能正确理解您的问题。