首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

在 DotNetNuke 中加入組織架構(二):樹狀部門與橫向群組的雙重架構設計

     編輯:關於ASP.NET

組織架構本質為樹狀結構,這是拋棄 DNN 原生「安全角色」(扁平化)另建架構的主因。兩者定位不同:安全角色管控系統權限(頁面/模組存取),組織架構管控業務數據權限與流程流轉。

部門與群組的雙重語義

  • 部門: 體現垂直層級關係(上下級)。
  • 群組: 體現橫向關係(如各部門主管組成的「主管群組」),較隨意、為工作便利而設。

兩者共用一張資料表,以 IsDept 位元欄位區分。允許任意巢狀(群組下掛部門、部門下掛群組),雖邏輯上可能怪異,但保留最大彈性由使用者決定。IsValid 欄位支援「停用」而非刪除,保留關聯資料與權限,亦可隱藏僅供管理員/流程引擎可見的功能性群組。

極簡資料結構:兩張表支撐完整功能

受 DNN 啟發,以最精簡結構實現最大擴展性:

-- 部門/群組表
CREATE TABLE {databaseOwner}[{objectQualifier}RedStart_Department] (
  [DeptID] [int] NOT NULL IDENTITY(1,1),
  [PortalID] [int] NOT NULL,
  [ParentID] [int] NULL,
  [DeptName] [nvarchar](50) NOT NULL,
  [DeptDescribe] [nvarchar](200) NULL,
  [DeptOrder] [int] NOT NULL,
  [IsValid] [bit] NOT NULL DEFAULT(1),
  [IsDept] [bit] NOT NULL DEFAULT(1),
  [CreateDate] [datetime] NULL,
  [CreateUser] [int] NULL,
  CONSTRAINT PK_... PRIMARY KEY CLUSTERED (DeptID),
  CONSTRAINT FK_... FOREIGN KEY (PortalID) REFERENCES {databaseOwner}[{objectQualifier}Portals](PortalID) ON DELETE CASCADE
)

-- 人員從屬表
CREATE TABLE {databaseOwner}[{objectQualifier}RedStart_DeptUser] (
  [DeptID] [int] NOT NULL,
  [UserID] [int] NOT NULL,
  [UserPrio] [int] NOT NULL,
  [IsLead] [bit] NOT NULL DEFAULT(0),
  [IsValid] [bit] NOT NULL DEFAULT(1),
  CONSTRAINT PK_... PRIMARY KEY CLUSTERED (DeptID, UserID),
  CONSTRAINT FK_Dept FOREIGN KEY (DeptID) REFERENCES ... ON DELETE CASCADE,
  CONSTRAINT FK_User FOREIGN KEY (UserID) REFERENCES {databaseOwner}[{objectQualifier}Users](UserID) ON DELETE CASCADE
)

用戶表直接複用 DNN Users 表,避免重複。剩餘編碼工作屬標準 CRUD,略過不贅述。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved