2014-07-11 56 views
0

任何人都有創建和管理用戶層次結構的示例,用戶(員工)可以向其他用戶報告。任何人都有維護員工層級的例子嗎?

當用戶離開公司時,他們的下屬應該被重新分配給離職用戶經理。我想我可以用刪除觸發器來做到這一點。

說我有這樣一張桌子。

CREATE TABLE Employees 
    (empid int NOT NULL, 
    mgrid int NULL, 
    empname varchar(25) NOT NULL, 
    salary money NOT NULL, 
    lvl int NULL, 
    hierarchy varchar(900) NULL, 
    CONSTRAINT PK_Employees_empid PRIMARY KEY(empid), 
    CONSTRAINT FK_Employees_mgrid_empid 
     FOREIGN KEY(mgrid) 
     REFERENCES Employees(empid)) 

它足夠容易查詢所有誰擁有特定的服務器的用戶,但什麼當經理被重新分配...和所有在他們的用戶會怎樣?

[更新] 我剛剛發現可能使用新的SQL 2008的數據類型HierarchyId的一種更好的方式,閱讀本http://beyondrelational.com/modules/4/whatisnew/468/features/10585/sql-server-2008-hierarchyid-will-allows-you-to-efficiently-store-and-query-hierarchial-data.aspx

+0

你想要發生什麼? –

+0

處理這種類型層次結構的另一種方法是使用嵌套集合。你可以從google找到大量關於嵌套集的信息。 –

回答

2

你的模式是錯誤的。員工應該向某個職位報告。該職位由一名員工填補。

+0

我並不反對這一點,但它確實帶來了自己的挑戰。通常情況下,公司變更給定的人最終會填補多個職位。這當然很容易處理,但這是必須考慮的事情。 –

+0

@SeanLange我的答案沒有解決哪部分內容?沒有任何關於這可以防止員工填補多個職位。 – Paparazzi

+0

我沒有說它沒有。我試圖指出,你不想在一個人和一個職位之間以1:1的比例。 –

相關問題