本質上,我希望用戶能夠定義分層模型,但是接下來我需要允許用戶將數據存儲在其定義的模型中。這有意義嗎?因此,用戶將能夠創建新的「單元類型」以分層方式組織,並決定如何組織這些類型的單元。一個簡單的例子:在我的假設界面中,用戶創建三種單位類型,樹幹,分支和葉子。用戶然後定義它們之間的關係。葉子可以存在於層次結構中的任何點,分支必須具有樹幹作爲父級。然後用戶可以創建這些單位類型的實例(作爲單位),並可以按照他們的模型中定義的規則來組織它們......在數據庫中這樣做的好方法是什麼?在數據庫中建模用戶定義的層次關係的最佳方法是什麼?
3
A
回答
3
這是一個非常寬泛的問題,但這可能會指向正確的方向。請注意,您只能將關係規則存儲在數據庫中。執行它們將取決於您的客戶端代碼。試試這個關於大小..
unit:
unit id,
name,
unit relationship:
unit id,
foreign unit id
然後,您可以使用您的單位關係表通過以下方式..
unit id
涉及到它描述的單元。 foreign unit id
應該是空的。
A unit
沒有關係記錄只能存在於heirarchy的根部。 A unit
與null
foreign unit id
可以有任何其他unit
作爲其父母。否則,unit
必須有另一個unit
作爲其父項,並且它的類型必須是其關係記錄中定義的那一個。
至於存儲實例本身,這應該是簡單..
instance:
instance id,
unit id,
parent instance_id
我肯定會有其他領域你需要(名稱,例如),但我相信你得到的漂移。
2
您需要實現三個概念:
- 「單位類型」和他們的允許協會
- 層次
- 實際單位
這些概念可以共存或多或少在模型中獨立,但一起工作。
create table unittype
(
id int;
name varchar(20);
)
create table unitrelationship
(
id int;
parent_id int;
)
你可以模擬層次的自我引用表:
create table hierarchy
(
id int;
parent_id int;
unit_type_id int;
unit_id int;
)
然後,您可以在一個或多個表的單元實例,並與他們做你所描述的。
create table unit
{
id int;
....
}
好消息是,你只限制在允許父類型,它可以在用戶界面中從允許類型的所有現有設備的列表選擇父容易執行,例如。
1
雖然我需要支持多個層次結構(一個子集,多個層次結構視圖),但我正在處理類似的問題。我發現Joe Celko的「智能化SQL中的樹和層次結構」(ISBN:1558609202)很有用。我仍然在研究這個問題,但是在討論這個話題時經常提到它似乎很適合提及。
相關問題
- 1. 構建類層次結構的最佳方法是什麼?
- 2. 在rails上用ruby建模對稱關係的最佳方法是什麼?
- 3. 在對象模型中定義關係的最佳方法?
- 4. 定義MySQL關係的最佳方法
- 5. 在Rails中建立數據庫的最佳方式是什麼?
- 6. 在數據庫中表示1:1關係的最佳方式是什麼
- 7. 在關係數據庫中存儲1:1用戶關係的最佳方式
- 8. 什麼是構建數據庫的最佳構建系統?
- 9. 處理這些MySQL數據庫關係的最佳方法是什麼?
- 10. 在數據庫中存儲IP的最佳方法是什麼?
- 11. 在php中連接數據庫的最佳方法是什麼?
- 12. 表示軟件系統的最佳建模方法是什麼?
- 13. 在數據庫建模中,它是什麼樣的關係?
- 14. 在Objective-C中使用相關分層數據的最佳方式是什麼?
- 15. 從mysql中的數據庫表中刪除層次結構方式的最佳方法是什麼?
- 16. 什麼是使用鈦創建數據庫的最佳方式
- 17. 與關係獲取數據的最佳方式是什麼?
- 18. 在關係數據庫中存儲自定義對象的最佳方式是什麼?
- 19. 什麼是表示數據庫中多對多關係的最佳方式?
- 20. 建立這個數據庫模型(MySQL)的最佳方法是什麼?
- 21. 在Django中建模異構多對多關係的最佳方式是什麼?
- 22. 檢查mySQL數據庫中現有用戶的最佳方法是什麼?
- 23. 用H2數據庫測試JPA的最佳方法是什麼?
- 24. 什麼是查詢自定義客戶數據的最佳方法。 MongoDB/ElasticSearch
- 25. 檢查r中對應關係的最佳方法是什麼
- 26. 什麼是創建自定義鍵盤的最佳方法?
- 27. 建立我的數據庫的最佳方式是什麼
- 28. 在Grails中建模地圖值的最佳方法是什麼?
- 29. 在mongodb中建立多對多關係的最佳方法是什麼?
- 30. 將數據庫中的用戶連接到可識別的關係的最佳方式是什麼?
這是什麼被稱爲「鄰接列表」? – ninesided 2009-04-08 02:03:58