从数据库中检查 3 table,同时保留每个 table 的信息以验证登录表单 php
Check 3 table from database while kept the information of each table for authenticate login form php
我有 table 个这样的
员工
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 |
如何让 Table 技术人员 和 员工 也成为用户,这样他们就可以将他们的信息用作用户名在登录表单中?另外,我希望 Technician 和 Employee 的每个 ID(不是 "AutoIncrement" ID)都将成为用户名。
如何管理这样的数据库?
还是我应该在两个 table 中都添加密码列? (员工和技术员)
还是我应该像这样制作一个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 |
Technician 和 Employee 之间没有关系(独立 table)
在您的情况下,您最好按如下规范化形式制作表格:
员工
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。
我有 table 个这样的
员工
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 |
如何让 Table 技术人员 和 员工 也成为用户,这样他们就可以将他们的信息用作用户名在登录表单中?另外,我希望 Technician 和 Employee 的每个 ID(不是 "AutoIncrement" ID)都将成为用户名。
如何管理这样的数据库?
还是我应该在两个 table 中都添加密码列? (员工和技术员)
还是我应该像这样制作一个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 |
Technician 和 Employee 之间没有关系(独立 table)
在您的情况下,您最好按如下规范化形式制作表格:
员工
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。