2013-01-02 33 views
4

我想在我的數據庫中做一個評論表,並將子註釋存儲在同一個表中。我會在名爲「ParentId」的列上放置一個外鍵約束,該列將被鏈接到作爲同一個表的主鍵的CommentId列。如果它是一個Parent註釋,那麼我會爲ParentId給它null。這是不好的做法嗎?如果是的話,有什麼更好的方法來解決這個問題。在同一個表的主鍵上創建外鍵約束的錯誤做法?

+2

這不是一個壞習慣。請記住,許多數據庫不能執行遞歸查詢,並且/或者使用一個'create table'創建這樣一個表結構。你可能需要創建它,然後改變它以後添加FK。 –

+0

如果你可以給一個父ID爲null,那麼一個外鍵約束是沒有意義的。外鍵約束是爲了確保你沒有'孤兒'。 –

+0

@SteveWellens在你想確保沒有孤兒的情況下,如果不爲空? – Matthew

回答

4

這很好。有一件事你需要考慮的是如果刪除對孩子的評論,該怎麼辦。 FK約束將防止刪除,並且級聯刪除的常見解決方案在此似乎不合適,也不會將父引用填入空值。因此,您可能必須保留已刪除的評論,並清除內容或將其標記爲已刪除。