允许同一父级的多个“类型”数据的通用模式是什么

时间:2012-03-11 01:16:43

标签: mysql sql relational-database innodb

如果你在像MySQL这样的关系型数据库中存储“子类型”的标准方法是什么?

举个例子,想想单个用户的Facebook Feed。它包含的只是“条目”,但这些条目在类型和需要存储的内容方面可能有很大差异。例如,状态可能需要VARCHAR(255),而图片可能需要BLOB而注释可能需要TEXT

完全独立的表格使得有必要进行看似不必要的复杂查询以获取任何类型的所有最近条目。它只是看起来很笨拙,效率低下而且不完全稳定,因为有很多额外的列只有一个不能为NULL。


我知道这一定是一个常见的问题,但我找不到类似的东西,所以请随时告诉我一个副本,我很乐意结束这个问题。

2 个答案:

答案 0 :(得分:0)

我认为你所谓的子类型是一种层次结构。 条目实际上是抽象实体,具体子实体是状态图片无论。因此,用户可以将许多条目以某种方式“映射”到其中一个子实体。

您可以查看此问题,了解如何将层次结构转换为表格:What is the best database schema to support values that are only appropriate to specific rows?

答案 1 :(得分:0)

我会为每种类型创建单独的表(即状态,注释等),并使用表将条目链接到具有三列的用户 - 用户ID,项目类型,项目ID。然后使用项类型来确定要加入的表。然后,所有数据都可以存储为正确的类型,适当的索引将使连接运行良好。