php - 如何处理mysql数据库中的多个用户

标签 php mysql

我正在为一个有四个不同用户的网站设计 mysql 数据库,如下所示。

1.管理员
2.企业
3.投资者
4.个人

我为每种类型的用户创建了四个不同的表,因为它们有不同的列。我还创建了一个名为 user roles like 的表。

用户角色 => rol_id & rol_name

我已将 rol 1 指定为管理员,将 2 指定为企业,依此类推。现在我需要创建一个 commen user_login 表,其中包含所有上述类型用户的用户名和密码。我很困惑如何在所有这四个表和 user_login 表之间建立关系?

最佳答案

型号

您只需要 3 个表。

  1. 用户:id、用户名、密码
  2. 角色:id,角色名
  3. 用户角色:user_id, role_id

列 user_id 是一个 foreign key指向用户表的列 id。 列 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')
);

关于php - 如何处理mysql数据库中的多个用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25912524/

相关文章:

mysql - SQL如何简化这个查询并提高性能?

php - <?php language_attributes(); ?> 在 html 标签上

php - Symfony pre_submit 更改字段顺序

Php session 丢失

mysql - 使用 liquibase 时相同的数据类型修改数据类型

mysql - 外键在 MySQL : Why can I INSERT a value that's not in the foreign column? 中不起作用

php - VS Code PHP Intelephense 数组中的对象未向 -> 运算符显示属性和函数

php - 将时间戳放在 Flotr2 折线图中的 x 轴上

python - python mysql where子句中的错误

php - 来自 mySQL 的 JSON 和 Google Charts 中的着色