使用DB关系避免冗余

时间:2017-11-25 16:20:35

标签: sql database relational-database

我设计了一部保密的电影和电视连续剧。我可以给你一个数据库的概述。

它有超过20个表(稍后将添加更多表)并且它被标准化。我有像电影,演员,电视系列,导演,监制等的表格。所以这些表格将包含最重要的信息,并且这些表格也是连接的(通过外键和中间表,如MovieActor,MovieDirector等)。

所以场景就像

1)标准的“起始”数据库应该有演员,演员,制片人,音乐作曲家,流派,分辨率类型......由管理员预先填充和预先定义。

2)对于创建个人电影收藏的每个用户,他将使用所有预定义数据开始他的数据库,但如果他愿意,他可以将更多数据添加到他的个人数据库中。这些变化只会影响他的数据库而不是标准的#34;起始"数据库(由管理员定义)。

3)管理员应该有一个单独的视图来添加演员,导演,制作人......这将成为标准的一部分"开始"数据库。对此用户所做的任何进一步更改都将作为更新提供给用户。

建议的解决方案

Suggestion

问题

建议的解决方案似乎是我必须始终为每个用户创建新的数据库,这似乎是不可能的。我的问题是如何操纵建议的解决方案,以便我的解决方案有效和可行。我更愿意通过使用数据库关系来处理这种情况,而不是单独存储。

1 个答案:

答案 0 :(得分:0)

您不会创建多个数据库,只需将ownerId字段添加到所有相关表中 - admin将拥有ownerId = 0,表示该行是“起始数据库”的一部分,并且新的管理员条目可立即供用户使用

在要显示起始数据及其自己的用户的任何输出中,您可以将WHERE(ownerId = 0或ownerId = userId)添加到相应的查询中,或者如果他们只需要查看他们自己的,只需ownerId = userId。

据推测,他们可以在自己的数据或“开始”数据之间建立关系,这种方法仍然有效。

外键仍然有效,但删除会删除用户数据 - 基本上你应该只添加到起始数据,不要带走,否则你会遇到问题。