首页 > 解决方案 > 将相似的数据拆分为两个表?

问题描述

我有两组几乎相同的数据,一组用于书籍,另一组用于电影。

所以我们有这样的东西:

等等

两组数据之间的唯一区别是 Books 有一个 ISBN 字段,而 Movies 有一个 Budget 字段。

我的问题是,即使数据相似,也应该将它们合并到一个表中还是应该是两个单独的表?

我已经看过类似的问题,但我之所以问是因为大多数时候我的应用程序需要获取书籍和电影的单一列表。很难买到书或电影。因此,如果数据被分成两个表,我需要为大多数查询查找两个表。

标签: mysqldatabase-design

解决方案


您必须非常确定您的应用程序的未来请求/功能。

我无法想象与您存储的电影相关的书籍类型,因此很多电影的标题与所基于的书籍不同。示例:25 部电影更名

如果您确定您的数据将是持久的并且对于书籍和电影始终相同,那么您可以创建新表,例如Productions并存储属性 Title、Price、Image、Release Date、Published。然后您可以将Production实体的外键存储在您的表BooksMovies.

但是,如果将来发生任何意外,您将需要重建结构或改变您的假设。但无论如何,使用 entity 会更容易Production。然后,您只需使用修改后的值创建新行并分配给 selected Bookor Movie

书籍和电影都使用一张表的解决方案是最糟糕的,因为如果其中一个参数消失,您将添加新行,并且您将拥有第一组(真实书籍和不存在的电影)和第二组(不存在)的数据书和真实电影)。

当然,一切都在条件下,它们将来可能会发生变化。如果您 100% 确定,那么 1 个表就足够了,但从数据库规范化的角度来看是不正确的。

我会亲自为书籍和电影创建单独的表格。


推荐阅读