我有一個名爲Project的表。爲了簡單起見,我們假設它有一個名爲projectId的列。SQL表設計
Projects --------- projectId PK
我有另一張桌子。它被稱爲SubProjects。它有兩列,一列叫做projectId,另一列叫做subProjectId。這兩列構成了主鍵。
Sub Projects -------- projectId PK subProjectId PK
他們這樣工作的方式是你有一堆列在項目表中的項目。其中一些項目可以是項目的子項目。例如,如果項目表有3行類似項目1.本是其中子項目表進來這麼
Projects ------- projectId 1 2 3
項目2和3,可考慮分項目。爲了表示這一點,子項目應該是這樣的
Sub Projects -------- 1 ,2 1 ,3
這意味着項目2和項目3項目1的子項目
我有創造這個模型的問題。在SubProjects表中,我需要projectId和subProjectId引用Projects表中的projectId。但關鍵的是他們可以參考不同的項目。我建議我應該用foregin鍵來做這件事?這有意義嗎?這是否允許?有一個更好的方法嗎?
我正在使用MySql和MySql工作臺,但似乎不能解決這個問題。有任何想法嗎?
編輯 項目可以是多個表的子項目。
是的,你的'Sub_Project'表應該使用(非空)外鍵。這種關係與樹型結構通常在數據庫中完成的方式有些「倒退」,但應該沒問題(因爲像一些答案指出的那樣,通常你存儲'my-parent-is',而不是'my-child-是)。但是,由於缺乏遞歸數據結構(大多數其他主要的RDBMS可以本機地在一條語句中檢索整個樹),您可能很難在mySQL中漫遊樹。 –
每個ProjectId和SubProjectId將需要FK到Project.ProjectId。另外,請注意循環的父母/子女關係。即。 1,2然後2,1。 –