我有一個包含各種類別的表格。下面是一個縮小的表結構:使用外鍵時在同一個表中包含parent_id的表格
tb_categories
category_id
category_name
category_parent_id
我在創建CATEGORY_ID上category_parent_id外鍵約束這樣的數據完整性可以在同一個表內舉行。
第一個問題是,在同一張桌子上有一個外鍵是不錯的做法。從我的思維方式來看,我認爲在這種情況下是的,這是一個很好的做法。
第二個問題是,如何存儲全局父實體的最佳方法是什麼?
我想出了以下方法:
方法1:category_parent_id可以存儲空值和唯一的空有權所有
方法2全球父類:category_parent_id不能存儲空值和全球parrent ALL將包含相同的category_id。因此,只有這個類別,category_id和category_parent_id都是相同的。沒有空值,我不能插入這個category_parent_id爲0,因爲0不存在作爲category_id
方法3:沒有全局父項,並且會有不同的'父項'。例如,將Audio,Visual作爲父母和MP3,將WMA作爲Audio的孩子,將MPEG,AVI作爲Visual的孩子。在整個這種方法中,方法1和方法2的原理都適用。方法4:這是我最不喜歡的方法,它包括沒有這個外鍵約束,因此全局父元素可以被設置爲0,這在其他任何類別中都不存在。
有什麼建議嗎?因爲我正在尋找最佳實踐,而不是「正常工作」。
[有很少一個最好的設計解決方案與軟件問題。(http://www.codinghorror.com/blog/ 2008/03/revisiting-the-facts-and-fallacies-of-software-engineering.html)「Just works」就像它得到的一樣好。 – Andomar 2012-08-04 16:45:56
我並不是指一般的「正義作品」。我指的是現在的正義工作,未來會出現問題。 – seedg 2012-08-04 17:02:34