2010-08-18 96 views
6

在我的web應用程序中,我將有三種類型的帳戶。3個不同表格中的用戶,客戶,管理帳戶?

  • 用戶:使用Web應用程序的免費
  • 客戶:廣告和獲取公司徽標
  • 管理:用於編輯和刪除的東西

如果所有這三個是獨立的或者在名爲「account_type」的列中,我可以將其標記爲User,Customer或Admin?

兩者有什麼優點和缺點?對此有最佳做法嗎?

感謝

+0

我認爲它會留在用例如何與其他的東西在你的數據模型是有用的。即用戶和管理員之間的連接是什麼? – Nix 2010-08-18 12:05:48

+0

我會說一個表,但是如果每個角色都有很多不同的屬性,那麼應該考慮不同的表。您可以用id/enum標記用戶,我們稱之爲角色。角色= 1將是一個用戶,角色= 2將是一個客戶,角色= 3將是一個管理員。所以你可以很容易地用一個外鍵構造擴展你的角色(比如David Stratton說的)。 – hering 2010-08-18 12:10:21

回答

9

在一般情況下,一個person可以是用戶,客戶和管理員 - 因此,我將與Person表列開始,IsUserIsAdmin。稍後(爲了快速搜索),您可能決定將單獨的表格Admin,Customers,Users與FK添加到Person表格中。

編輯:

一個典型的例子可以是:

  • 5百萬的用戶
  • 1000客戶
  • 10管理員

通常,具有爲客戶單獨的表,並管理員應該加快任何管理員/客戶相關的查詢。

+0

有時,用戶和客戶具有不同的屬性,因此您需要將其分成2個表格,而不是將可選列放在同一個表格中。 – brunocascio 2017-05-31 23:22:39

7

如果一個用戶只能是一個類型,你會用一個表和IsAdministrator位域等

更好,如果使用者可以超過一個帳戶類型,你應該再有一個不同的表的外鍵,

樣本結構(數據sypes是SQL Server和只是建議)

用戶表

  • 用戶名 - 詮釋
  • 用戶名 - VARCHAR(25)
  • 密碼 - VARCHAR(25)
  • 名字 - VARCHAR(50)等等...

角色表

  • RoleId - int
  • 角色描述 - VARCHAR(25)

User_Roles表

  • 用戶ID - INT(帶foregin關鍵用戶表)
  • 角色ID INT(外鍵角色表)
+0

我想我會幫你。一個帳戶表由他們共享的基本信息全部,然後3個不同的表爲他們每個具有特定信息,然後我鏈接到他們與foreign_key在基本表右? – 2010-08-18 12:10:11

+0

是的,你已經知道了, – David 2010-08-18 12:11:16

+0

我在想你的意思是爲管理員提供一張桌子,而另一張桌子則爲所有重複信息的客人。我讀錯了,不是嗎? – David 2010-08-18 12:12:01

0

優缺點取決於系統的大小和複雜程度。

我將其拆分成用戶,角色,UserResources

用戶(將定義基本信息)

用戶角色

  • FK->角色類型

Role_Type(用戶,管理員,客戶,可能的權限,或者你可以進一步解決這個問題)。

UserResources(媒體)

  • FK->用戶