請勿使用單個表格。去關係。
我建議設置一個所謂的「主」表(具有共同特徵的表)和三個包含特定信息的表之間的多態關係。該結構將是這個樣子:
主表
- 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列。如前一段所述,這大多會加快加入這兩個表的任何查詢。
希望這會有所幫助!