我应该如何设置具有多种帖子类型的关系数据库?

时间:2015-06-27 04:25:33

标签: php mysql database database-design

我正在为一个新闻网站的数据库工作,我不确定分割表格的最佳做法是什么。它将有四个不同的类别,每个类别包含不同的字段:

新闻

  • 标题
  • 分目
  • 日期
  • 故事内容
  • 可选照片

网络研讨会

  • 日期
  • 时间
  • 链接

事件

  • 姓名
  • 日期
  • 时间
  • 位置
  • 描述
  • 链接

比赛

  • 开始日期
  • 名称
  • 描述

我应该做:

  • 所有人的单一表格
  • 每个类别类型的不同表格
  • 或包含所有常用字段的表格,以及每个类别的唯一值的单独表格?

1 个答案:

答案 0 :(得分:2)

没有人"对"回答。这取决于几个因素。

(幸运的是,你没有提到实现实体属性值(EAV)模型。我强烈建议你避免使用它。)

需要考虑的一些因素:

考虑关系...将每个"类别"与其他实体有相同的关系?你展示"事件"属性为location ...的是属性,还是代表与另一个实体的关系?

考虑如何编写查询。您是否经常需要查询来自几个"类别"的行?一起?对于大量行,为了获得最佳性能,您希望避免内联视图使用UNION ALL将单独的表组合到单个视图中。

有很多关于映射"继承层次结构的好信息"进入关系数据库,每种方法的优缺点,以及看起来像什么的例子,以及(最重要的)查询的样子。

<强>后续

如果要求是单独处理每个类别,并且您不需要查询组合类别,那么为了方便和简单,我将为每个类别(选项2)使用单独的表。

如果你需要查询组合类别(例如从所有类别ORDER BY date_col中选择),那么我可能会使用一个表,带有一个鉴别器列(category)来区分哪个基于有限数量的属性,我很想定义所有属性,然后只填充适用于每个类别的属性。(选项1)

第三种选择也是可行的。所有这三个选项都可以使用。

相关问题