簡體   English   中英

數據庫設計幫助-分層數據

[英]Database design help - hierarchical data

因此,我有一個用戶帳戶(用戶)表。 子帳戶需要有適當的功能。

例如,一家名為Dunder Mifflin的公司可能有一個帳戶。 該公司將有子帳戶,會計和銷售。 會計帳戶將有Kevin,Angela和Oscar的子帳戶。 而且級別數沒有限制。

我最初的想法是創建一個像這樣的表:

CREATE TABLE Users
(
    UserID INTEGER,
    ParentUserID INTEGER,
    ...
)

主帳戶的ParentUserID只是null,而子帳戶將包含其父帳戶的UserID。

這是一個好的設計嗎? 我沒有其他辦法了

這是一個很好的設計。 一種替代方法是使用HIERARCHID數據類型映射層次結構,但是對此的支持是有限的(報告,ORM工具等)。

實際上,我在許多設置中都使用了它。 根本沒有太多沒有明顯轉儲的替代方案(例如,層次結構具有X字段)。 我從根本上知道沒有別的選擇。

這是一個很好的設計,您實際上別無選擇。 閱讀CTE(公用表表達式) ,這將幫助您(遞歸)查詢此層次關系。

在Sql Server 2000中可以遞歸查詢層次結構,但自2005年以來,使用CTE進行了大大簡化。

連接到自身的表在設計器中將如下所示: 自封帽

這稱為自聯接,是的,它是表示層次結構數據的標准方式。 您可能需要像這樣查詢才能獲得與Dunder Mifflin相關的所有用戶的信息。

子帳戶用於什么用途? 數據庫設計很重要。 較早的答案聲稱您展示的設計從定義上講是好的。 當您擁有分層數據時,是的,您始終具有父代ID。 但是,通常您會擁有某種帳戶所屬的組帳戶。 那將是建立層次結構的更合適的地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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