2010-07-26 77 views
0

我有一些關於簡單CMS的數據庫設計的問題。數據庫設計交鑰匙記錄

表中的每一頁「PAGES」可能是特定用戶的「AssignedTo」和「LockedBy」。 要管理用戶,我正在使用SQL特定表「aspnet_Users」,每個用戶都使用GUI uniqueIdentifier列進行標識。

如果一個頁面是「解鎖」並且可以由用戶編輯,它在表格「頁面」中的值將是NULL,與「AssignedTo」的機制相同。

這裏我的劇本,當我創建表「頁面」:

LockedBy uniqueidentifier NULL FOREIGN KEY REFERENCES aspnet_users(UserId), 
AssignedTo uniqueidentifier NULL FOREIGN KEY REFERENCES aspnet_users(UserId) 

我的問題: 這樣的設計將產生「LockedBy」很多NULL值,因爲網頁只會在編輯的時刻被鎖定,因爲我聽說在數據庫設計中有很多NULL值不是好東西,我想知道我的設計是否在良好的實踐中,或者如果您可以提出更好的方法。 謝謝你們

+1

我讀爲「土耳其記錄」.. – Jeriko 2010-07-26 13:58:59

回答

1

通常,我認爲這是有這一個表中的好主意,忽略一個事實,即有許多NULL值,但這裏的另一種解決方案:

你可以分裂成其他兩個表如下: PageLocks和PageAssignedTo

PageLocks: PAGEID,用戶名< - 唯一的密鑰

PageAssignedTo: PAGEID,用戶名< - 唯一的密鑰

+0

感謝您的信息,你認爲你的解決方案與兩個表可能會導致更好的性能?謝謝 – GibboK 2010-07-26 13:50:10

+0

這取決於。在SQL Server 2008中,你已經獲得了過濾索引,因此在Pages-table中添加一個索引(在每個字段中)將與在另一個表中分割索引相同。 – 2010-07-26 13:59:25

+0

是的,謝謝你的時間! – GibboK 2010-07-26 14:14:21