我正在为一个新闻网站的数据库工作,我不确定分割表格的最佳做法是什么。它将有四个不同的类别,每个类别包含不同的字段:
新闻
网络研讨会
事件
比赛
我应该做:
答案 0 :(得分:2)
没有人"对"回答。这取决于几个因素。
(幸运的是,你没有提到实现实体属性值(EAV)模型。我强烈建议你避免使用它。)
需要考虑的一些因素:
考虑关系...将每个"类别"与其他实体有相同的关系?你展示"事件"属性为location
...的是属性,还是代表与另一个实体的关系?
考虑如何编写查询。您是否经常需要查询来自几个"类别"的行?一起?对于大量行,为了获得最佳性能,您希望避免内联视图使用UNION ALL
将单独的表组合到单个视图中。
有很多关于映射"继承层次结构的好信息"进入关系数据库,每种方法的优缺点,以及看起来像什么的例子,以及(最重要的)查询的样子。
<强>后续强>
如果要求是单独处理每个类别,并且您不需要查询组合类别,那么为了方便和简单,我将为每个类别(选项2)使用单独的表。
如果你需要查询组合类别(例如从所有类别ORDER BY date_col
中选择),那么我可能会使用一个表,带有一个鉴别器列(category
)来区分哪个基于有限数量的属性,我很想定义所有属性,然后只填充适用于每个类别的属性。(选项1)
第三种选择也是可行的。所有这三个选项都可以使用。