2010-12-17 45 views
1

我們正在重新設計和合並數據庫中的某些表。我們曾經有過兩張桌子'administrators''users',我們現在將它們組合成一張名爲'users'的桌子。爲了便於更改,我們創建了一個'user_types'表和一個'user_user_types'表,這是'用戶'和'user_types'之間的一對多鏈接表。在數據庫中構造這些數據的更好方法是什麼?

我們必須使用'user_types'表的原因是,有不同類型的管理員,其中一個是超級管理員,他有權訪問我們系統中的所有內容。在舊的設置中,'administrators'表中有一個字段'SiteAdmin',表示該特定管理員是否是超級管理員。自從轉移到這個新系統以來,我的想法是在'user_types'表中會有一個用戶類型,它將是一個超級管理員,並且在這些情況下我們只將正確的用戶鏈接到該用戶類型。然而,我的同事程序員在這裏說他仍然希望在新的「用戶」表中使用'SiteAdmin'位字段。我認爲這有點多餘,但他聲稱會有超負荷,並且在SQL服務器上需要更多的處理器密集度才能將表加入到'users','user_types'表中,以確定特定用戶是否爲超級管理員。

我的問題是哪種方式更好?在SQL服務器上加入這兩個表是否太棒了,它保證在'用戶'表中添加位字段來標記超級管理員?

謝謝!

回答

3

您的重新設計似乎是合理的,更容易維護。我懷疑加入會影響性能,尤其是因爲您可能在登錄時爲每個用戶查詢一次用戶類型。

您可以針對兩種設計編寫一些單元測試,用一堆假數據填充表格,並針對連接運行計時器,並使用標誌運行計時器。

0

性能差異將取決於這些表中有多少數據。如果您談論數百或數千用戶行,您將看不到解決方案之間的差異。如果您擁有數百萬用戶,並且可能同時訪問大量數據,您可能會看到不同。

0

我覺得很奇怪,如果有什麼打擊性能加入到小桌子裏的話。

什麼可能是一個更大的問題是存儲不同類型的用戶兩種不同的方式,這是混淆維護。我認爲你的解決方案從長遠來看更直接。

相關問題