项目列表的数据库结构(非常不同)

时间:2012-01-01 09:55:28

标签: mysql database list structure normalization

我遇到了以下问题: 我有一个可以创建列表的用户列表 我有包含以下实体的表:   - 电影 - 具有不同的属性   - 图片 - 具有不同的属性   - 人物简介 - 具有不同的属性   - X类型 - 具有不同的属性(待办事项列表)。

用户可以使用以上所有类型创建列表(其他用户可以添加元素的位置)。 (例如带有电影,演员和图片库的列表)。

如何有效地存储该列表并且没有太多问题:)

提前致谢

2 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,您应该创建一个单独的表实体,它将是您所有电影,图片等的基本类型。另外一个表 ListsItems 包含以下列:(list_identity_id)和表格用户列表user_idlist_id)。

UsersLists 将包含用户列表映射(每个用户可能有多个列表), ListsItems 将包含实体映射列表(每个列表可能包含许多实体),以及实体将包含实体类型(电影,图片,等等)和指向其原生表格的特定实体ID(电影图片等) )。

Aufziehvogel 询问了类型的数量,因为它对于设计中解析的实体类型字段很重要。如果你有一个有限预定义数量的类型,你可以将列entity_type作为枚举,但如果用户应该能够创建自己的类型,那就是一个更复杂的问题和一个表 SpecifiedEntity 应该替换特定的表格(电影图片等)。

您可能会阅读有关关系数据库规范化的内容,以便在所有现有详细信息中了解此问题。

答案 1 :(得分:0)

您正在寻找的解决方案(Mkaz开始描述)是一种称为Disjoint Subtypes的数据库模式。

前一段时间我遇到了同样的问题,这就是我发现的:

Object-oriented-like structures in relational databases

Polymorphism in SQL database tables?