例如,我有文章,文章答案和答案評論。數據庫體系結構
還有什麼更好的辦法:讓每個實體(帖子,答案,評論)都有每個表或者帶有'post_type'和'parent_id'參數的表?
UPD:答案和評論與屬性相似。
例如,我有文章,文章答案和答案評論。數據庫體系結構
還有什麼更好的辦法:讓每個實體(帖子,答案,評論)都有每個表或者帶有'post_type'和'parent_id'參數的表?
UPD:答案和評論與屬性相似。
無論你是否有單獨的帖子和評論表,部分取決於是否可以使用一個而不是另一個,部分取決於每個處理的相似程度。換句話說,每個人有多少獨特的信息?如果沒有或幾乎沒有什麼是獨一無二的,那麼一張桌子很可能會工作。
的最佳路線將是3個表:
作爲最終父母的職位,與其鏈接的答案以及與答案相關的評論。
在某些情況下,使用具有區分列的單個表是有意義的(選項2),但任何屬於單一類型的列都應該放入其自己的表中,並且該表將具有外鍵映射回主表。這將形成一個table inheritance hierarchy。
如果這些表格表示的對象共享相當數量的列,這是有意義的;並且它們的共同點允許將一些處理在不同類型中進行概括而不必知道具體的子類型。
如果您的大部分查詢最終都不得不按照差異列進行篩選,您將它們存儲在同一個地方會獲得什麼真正的好處?
總之: K.I.S.S.適用;如果使用單表方法具有編程優勢,請使用它;否則保持簡單並使用3(我知道直覺,但是增加的認知負荷只是爲了完成自我連接應該說服你)。
對不起,忘記說答案和評論是相似的,這就是爲什麼表格太類似了。 – dearmisterrobot
兩個相似的表沒有錯。 – staticsan
是的,兩張類似的桌子都很好,它們的區別在於它們的區別 - 所以不用擔心。 3桌完美的作品。 – Brayden