php - 从数据库中检查3个表,同时保留每个表的信息以验证登录表单php

标签 php mysql database authentication database-normalization

我有这样的表格

员工

Id | IdEmployee  | Employee | Address     | Phone_num | 
1  | EM10000     |  Jack    | wall st.    | 9000010   | 
2  | EM10001     |  Paul    | elm st.     | 9000010   |
3  | EM10002     |  George  | ex  st .    | 9000010   |

技术人员

id | IdTech      | TechName | Address      | phone_num | 
1  | TE10000     | Gabut    | Hello st.    | 9000010   | 
2  | TE10001     | Polnaref | coding st.   | 9000010   |
3  | TE10002     | Rafioli  | stack st.    | 9000010   |

管理员

id | IdAdmin     | username | password     | phone_num | 
1  | AM10000     |  sim1    | 1234         | 9000010   | 
2  | AM10001     |  sim2    | luvcoding    | 9000010   |
3  | AM10002     |  sim3    | okaymate     | 9000010   |

我如何使表技术人员员工也成为用户,以便他们可以在登录表单中使用他们的信息作为用户名?另外,我希望技术人员员工的每个ID(不是“自动增量”ID)都将成为用户名。

如何管理这样的数据库?

或者我应该在两个表中添加密码列? (员工和技术人员)

或者我应该像这样制作一张 table 吗?

(新)管理员

id | Id          | username | password     | phone_num | 
1  | AM10000     |  sim1    | 1234         | 9000010   | 
2  | AM10001     |  sim2    | luvcoding    | 9000010   |
3  | AM10002     |  sim3    | okaymate     | 9000010   |
4  | AM10003     |  EM10000 | test1        |  NULL     |
5  | AM10004     |  EM10001 | test2        |  NULL     |
6  | AM10005     | EM10002  | test3        |  NULL     |
7  | AM10006     | TE10000  | 1234         |  NULL     | 
8  | AM10007     | TE10001  | ok123        |  NULL     |

技术员和员工之间没有关系(独立表)

最佳答案

就您的情况而言,您最好将表格制作为标准化形式,如下所示:

员工

IdEmployee  | Employee | Address     | Phone_num 
EM10000     |  Jack    | wall st.    | 9000010  
EM10001     |  Paul    | elm st.     | 9000010  
EM10002     |  George  | ex  st .    | 9000010 

技术人员

IdEmployee | TechName 
TE10000    | Gabut   
TE10001    | Polnaref

管理员

IdEmployee  |  Password  
TE10001     |  hashed_pass1 
EM10002     |  hashed_pass2 

这可确保您没有复制数据,并确保您可以使用外键正确关联表。

因此,如果您的管理员拥有 IdAdmin“EM10002”,请使用以下查询获取该员工的密码:

// Will return a row with EM10002's password, which is 'hashed_pass2'. 
SELECT Password from Admins WHERE IdEmployee = EM10002

这是 foreign key 的另一个示例用法。

要更多地了解标准化,请查看 this thread

关于php - 从数据库中检查3个表,同时保留每个表的信息以验证登录表单php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45663109/

相关文章:

php - Ajax 值未传输到 PHP

php - OpenSSL 真的需要 openssl.conf 的路径吗?

php - 如何将用户输入与自定义 WordPress 数据库表进行比较

javascript - 读取选定的变量,然后从表发送回 Controller

java - 在 Java 中关闭 ResultSet 后不允许操作

php - MySQL DATE_ADD - 日期错误?

php - 将文件夹中的文件名列表插入 mysql

mysql - Codeception DB模块异常

mongodb - 如何在 MongoDB 中搜索深树状结构?

database - 确定日历可用性、搜索算法和数据库结构