2011-07-08 73 views
0

我有一個登錄表和三個組可以登錄的用戶:客戶端,成員,管理員。所有用戶都共享一些常用屬性,如用戶名,密碼,活動。 其他大部分字段對於相應的組都不相同,表成員最多有30個字段。用戶登錄組

這是我寧可不要一個大的用戶表與所有需要的領域,但該集團相關領域中分離到不同的表的原因。 那麼我將有如下表:

------------------ 
| tbl_user  | 
|----------------| 
| id    | 
| username  | 
| password  | 
| active   | 
------------------ 

------------------ 
| tbl_client  | 
|----------------| 
| id    | 
| pid   | 
| company  | 
| address  | 
| projects  | 
| ...   | 
------------------ 

... same with tbl_member and tbl_admin. 

但登錄後,我怎麼能選擇從任tbl_client,TBL_MEMBER和tbl_admin附加字段? 我可以在tbl_user中使用組字段,並使用組表名稱作爲值。但是,這似乎並沒有很專業;)

任何其他的想法?

+0

謝謝大家說服我使用一個tbl_user.group字段指定用戶黨團(客戶,會員,admin)和聯接表上TBL tbl_user.id _ *。PID。 我試着接受所有答案,不幸的是只有一個是可能的,所以我選擇了第一個來自瑞安貝茨。但是要感謝TheCapn,Dalton Conley和Jim。 –

回答

0

你的建議是完全可以接受的解決方案 - tbl_user需要識別用戶類型以某種方式,不知何故。如果這可能更容易處理,您可以將字符串替換爲id。確定用戶類型後,您可以簡單地使用適用的詳細表進行連接,或者直接查詢詳細表。

1

我不知道你爲什麼說「它看起來不專業」。您應該像用戶那樣將用戶數據角色與用戶身份驗證信息分開。有沒有錯,你的建議,我會推薦它...

1

我建議增加在tbl_user另一列,指出它是什麼類型的帳戶。例如管理員,會員,客戶,這樣你可以在他們登錄後將他們引導到你需要的任何地方,並且你可以提取他們的信息。

1

您可以在所有三個表上進行異常連接。

這將返回所有三個表,其中兩個將具有空結果的結果(因爲它們不存在)。當你加入四個表(用戶,成員,客戶端,管理員)時,這樣做效率較低,然後在特定的位置添加一個字段來指定該成員所屬的組,然後僅使用某種邏輯查詢該表。