我遇到了以下问题: 我有一个可以创建列表的用户列表 我有包含以下实体的表: - 电影 - 具有不同的属性 - 图片 - 具有不同的属性 - 人物简介 - 具有不同的属性 - X类型 - 具有不同的属性(待办事项列表)。
用户可以使用以上所有类型创建列表(其他用户可以添加元素的位置)。 (例如带有电影,演员和图片库的列表)。
如何有效地存储该列表并且没有太多问题:)
提前致谢
答案 0 :(得分:0)
如果我正确理解了您的问题,您应该创建一个单独的表实体,它将是您所有电影,图片等的基本类型。另外一个表 ListsItems 包含以下列:(list_id
,entity_id
)和表格用户列表(user_id
,list_id
)。
UsersLists 将包含用户列表映射(每个用户可能有多个列表), ListsItems 将包含实体映射列表(每个列表可能包含许多实体),以及实体将包含实体类型(电影,图片,等等)和指向其原生表格的特定实体ID(电影,图片等) )。
Aufziehvogel 询问了类型的数量,因为它对于设计中解析的实体类型字段很重要。如果你有一个有限预定义数量的类型,你可以将列entity_type
作为枚举,但如果用户应该能够创建自己的类型,那就是一个更复杂的问题和一个表 SpecifiedEntity 应该替换特定的表格(电影,图片等)。
您可能会阅读有关关系数据库规范化的内容,以便在所有现有详细信息中了解此问题。
答案 1 :(得分:0)
您正在寻找的解决方案(Mkaz开始描述)是一种称为Disjoint Subtypes的数据库模式。
前一段时间我遇到了同样的问题,这就是我发现的: