簡體   English   中英

在同一個表的主鍵上創建外鍵約束的不良做法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM