使用两个单独的类别表优化数据库

时间:2016-01-28 09:46:03

标签: mysql database database-design relational-database database-schema

我有一个网站数据库,提供网站的所有数据存储功能。它将文章存储在知识库中,并为内部和最终用户访问提供服务。

文章和服务都存储在类别中,这些类别可以通过自引用具有无限量的父类别。可以通过连接表添加多个类别。

The Schema

需要能够找到服务或文章的类别,包括类别 - 父树的所有方式。还需要能够找到一个类别的服务或文章。当然,一个类别不能兼得。

这是一种最佳方式吗?感觉不对,我欢迎其他想法。

编辑:这种方式通常有效吗?所有类别都具有大致相同的内容,只是名称和描述,也许是图像。

Alternative

1 个答案:

答案 0 :(得分:0)

category_servicecategory_article的主键应包括相应表格中的两个字段(如果某个类别可以包含多个服务或文章)。另外,你真的需要一个VARCHAR(45)型指示器吗?我建议使用简短的ENUM。

否则,第二个图中的基本设计看起来不错。我建议你添加一个closure table来有效地查询递归层次结构。

如果要强制类别类型与category_article / category_service中的记录之间的一致性,可以在这些表中复制类型指示符并将其包含在外键约束中。是的,这样做感觉多余,但它有效。抵制结合这两个表的诱惑,在一个列中混合来自不同域的值通常会导致更多困难。