[英]Bad practice to create a foreign key constraint on primary key of the same table?
我試圖在我的數據庫中做一個注釋表,並將子注釋存儲在同一個表中。 我會在名為“ParentId”的列上放置一個外鍵約束,該列將鏈接到CommentId列,該列是同一個表的主鍵。 如果它是父評論,那么我將為ParentId賦予它null。 這是不好的做法嗎? 如果是這樣,有什么更好的方法來解決這個問題。
這可以。 您需要考慮的一件事是,如果刪除帶有子項的評論該怎么辦。 FK約束將阻止刪除,並且級聯刪除的常見解決方案在這里似乎不合適,也不會使父引用為NULL。 因此,您可能必須保留已刪除的注釋,並清除內容或以其他方式將其標記為已刪除。
這不是一種不好的做法,但正如評論者指出的那樣,你可能會在以后遇到問題。
由於注釋評論相當於邏輯樹,因此可能值得查看Celko的工作:
http://www.ibase.ru/devinfo/DBMSTrees/sqltrees.html
非常便利!
http://msdn.microsoft.com/en-us/library/ms124432(v=sql.100).aspx
對於SQL Server,這不是一個壞習慣,請參閱上面的Employee表定義鏈接並參考ManagerID列,Microsoft已在SQL Server提供的示例數據庫中使用此方案。
需要注意的主要事情是父記錄無法物理刪除,您可能需要使用標記的軟刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.