请勿使用单个表格。去关系。
我建议设置一个所谓的“主”表(具有共同特征的表)和三个包含特定信息的表之间的多态关系。该结构将是这个样子:
主表
- ID
- 标题
- ...
- CATEGORY_NAME(VARCHAR或CHAR)
- CATEGORY_ID(整数)
分类表
对于类别字段应包含的具体类别表,例如表名。'job_category',而category_id应指向类别表中的ID。一个例子是这样的:
# MAIN TABLE
id | title | ... | category_name | category_id
-------------------------------------------------------
123 | Some title | ... | job_category | 345
321 | Another title | ... | sale_category | 543
# SPECIFIC TABLE (job_category)
id | ...
---------
345 | ...
# SPECIFIC TABLE (sale_category)
id | ...
---------
543 | ...
现在,每当您查询的主表,你会马上知道哪个表来从附加数据,你就知道该表中的ID。此方法唯一的缺点是您必须执行两个单独的查询才能获取单个项目的信息。但是,这可能会在交易中实现。另一方面,对于通过其他方式获取数据(例如,搜索jobs_category中的某些内容),可以使用JOIN从主表中获取关联数据。请记住,不仅要加入main.category_id = jobs_category.id,还要使用category_name列作为连接条件。否则,您可能会获取属于其他类别之一的数据。
为了获得最佳性能,您可能需要索引category_name和category_id列。如前一段所述,这大多会加快加入这两个表的任何查询。
希望这会有所帮助!