2011-12-01 86 views
-1

這裏是我想問:註冊 - 登錄數據庫計劃

我想製作一個系統註冊病人,然後他們將能夠登錄。儘管我有3種類型的用戶。

  1. 管理(無需註冊)
  2. 醫生(標準編號醫生,無需註冊)
  3. 患者(他們將被註冊)

我想保留更多信息對他們來說不僅僅是id,用戶名,密碼,電子郵件。 我想有超過1個表來做到這一點,原發性鍵和外鍵關聯人:

 
1st table 
accounts (it will store the login data) 
Example: 
acc_id(primary key) 
acc_password 
acc_username 
acc_type 
 
2nd table 
doctors_extra_info 
Example: 
acc_id (foreign key) 
doc_info_id (primary key) 
doc_name 
... 
... 
 
3rd table 
patients_extra_info 
Example: 
acc_id (foreign key) 
pat_info_id (primary key) 
pat_name 
... 
... 
 
4th table 
admin_info 
Example: 
acc_id (foreign key) 
admin_id (primary key) 
admin_email 
  • 一個。這是做這件事的最好方法?
  • b。在註冊部分 ,如何處理主鍵和外鍵?兩個插入 命令在兩個不同的表中? [爲了在帳戶表和附加信息表中具有相同的acc_id ]
  • c。在登錄部分, 我需要檢查用戶的類型和重定向(標題(位置:..);) 到頁面?這是做這件事的正確方法嗎?

有什麼建議嗎? 謝謝。

回答

0

如果您使用的是PHP,那麼當您插入一條記錄時,您可以立即檢索使用mysql_insert_id()創建的ID。然後使用它來創建其他記錄作爲您的外鍵。

關於重定向,我只是從數據庫中獲取用戶類型,然後檢查用戶的類型並重定向到所需的頁面。

通常儘管您創建的表格沒有正確關聯。記住使用系統的人的定義是他們是一個人,不應該被他們的工作角色所定義。他們應該有一個account_type_id鏈接到另一個表。否則,你有三個表基本上保持相同的信息。

例如,你應該有你的表像這樣

User table 
    user_id 
    first_name 
    last_name 
    email 
    account_type_id* 

Accounts type table 
    user_id 
    account_type_id* 
    account_type //e.g. patient, doctor, admin etc 

現在這意味着你可以輕鬆地擴展與新表,用戶訪問級別,新列的數據庫,而不必在三個表中的重複相同的列等等。嘗試閱讀數據庫規範化。來自YouTube的非常好的視頻是http://www.youtube.com/watch?v=fg7r3DgS3rA

+0

那麼我的情況下有多少桌?因爲我想在每種類型的用戶中有不同的列。 – Andrew