注册 - 登录数据库架构

时间:2011-12-01 16:50:04

标签: php mysql database

以下是我想问的问题:

我想建立一个系统来注册患者,然后他们就可以登录了。我有3种类型的用户。

  1. admin(无需注册)
  2. 医生(标准医生人数,无需注册)
  3. 患者(他们将被注册)
  4. 我想为他们保留更多信息,而不仅仅是ID,用户名,密码,电子邮件。 我想有多个表来执行此操作并将它们与主键和外键相关联:

    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
    
    • 一个。这是最好的方法吗?
    • 湾在部分 注册,如何处理主键和外键?两个插入 命令在两个不同的表中? [为了获得相同的acc_id 在帐户表和额外的信息表]
    • ℃。在登录部分, 我需要检查用户的类型和重定向(标题(位置:..);) 到一个页面?这是正确的做法吗?

    有什么建议吗? 谢谢。

1 个答案:

答案 0 :(得分: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