如何在mysql数据库中处理多个用户

时间:2014-09-18 12:23:36

标签: php mysql

我在mysql中为一个拥有四个不同用户的站点设计数据库如下。

1.Admin
2.Businesses
3.Investors
4.Personal

我为每种类型的用户创建了四个不同的表,因为它们具有不同的列。我还创建了一个名为用户角色的表,如。

User_roles => rol_id& rol_name

我已将rol 1作为admin,2作为business等等。现在我需要创建一个commen user_login表,其中包含用户名&传递所有上述类型用户的字。我对如何在所有这四个表和user_login表之间建立关系感到困惑?

3 个答案:

答案 0 :(得分:1)

<强>模型

您只需要3张桌子。

  1. user:id,username,password
  2. role:id,role_name
  3. user_role:user_id,role_id
  4. 列user_id是指向用户表的列ID的foreign key。 列role_id是指向角色表的列id的外键。

    此模型的优点是,如果要创建新角色,只需在角色表中添加一行,而无需修改模型。

    <强>实施例

    用户表:

    id   username   password
    1    sangam     password
    2    Muur       password
    

    角色表:

    id   role_name
    1    Admin
    2    Business
    3    Investor
    4    Personal
    

    检索管理员列表:

    SELECT u.*
    FROM user u, user_role ur, role r
    WHERE u.id = ur.user_id AND ur.role_id = r.id
        AND r.role_name = 'Admin';
    

    添加新角色:

    INSERT INTO TABLE role(role_name) VALUES('New Role Name');
    

    将业务角色添加到用户sangam:

    INSERT INTO user_role(1, 2);
    

    或者:

    INSERT INTO users.role_user(user_id, role_id) VALUE(
        (SELECT id FROM user WHERE username = 'sangam'),
        (SELECT id FROM role WHERE role_name = 'Business')
    );
    

答案 1 :(得分:0)

您最有可能使用foreign keys,并创建一个包含用户ID和角色ID的表,然后可以使用该表查找关联表中的角色+用户数据。

答案 2 :(得分:0)

表USER_ROLES,例如管理,企业,投资者,个人

USERID | USER_ROLES_ID

表USER_LOGIN

USERID | USERNAME | PASSWORD

表USER_ROLE_DEFINED

USER_ROLES_ID | ROLE_NAME

找出用户名的用户角色

  

SELECT ul.username,ud.role_name FROM USER_LOGIN ul,USER_ROLES ur,USER_ROLE_DEFINED ud&gt; WHERE ul.username =&#34; adam&#34; AND ul.userid = ur.userid AND ur.user_roles_id =&gt; ud.user_roles_id;

逻辑在那里,是否有效......你必须自己测试它。

正如其他人评论的那样,这是一个三表版本。是的,两张桌子也有其优势。