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

时间:2017-08-13 17:37:35

标签: 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(不是“AutoIncrement”ID)都会成为用户名。

如何像这样管理数据库?

还是应该在两个表中添加密码列? (员工和技术员)

或者我应该像这样制作一张桌子?

(新)管理员

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     |

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

1 个答案:

答案 0 :(得分:1)

在您的情况下,您最好以规范化形式制作表格,如下所示:

<强>员工

from plotly.offline import download_plotlyjs, init_notebook_mode, iplot
from plotly.graph_objs import *
init_notebook_mode()

trace1 = Histogram(
   x=data_mil.country,
   y=data_mil.NS,
   opacity=0.75
)
data = [trace1]
layout = Layout(barmode='overlay')
fig = Figure(data=data, layout=layout)

iplot(fig, filename='overlaid histogram')

<强>技术人员

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

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

因此,如果您的管理员有IdAdmin&#39; EM10002&#39;,请使用以下查询获取该员工的密码:

IdEmployee  |  Password  
TE10001     |  hashed_pass1 
EM10002     |  hashed_pass2 

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

要更多地了解规范化,请查看this thread