У меня есть такие таблицы
Работник
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 |
Как мне сделать стол техник а также Работник стать пользователем, чтобы они могли использовать свою информацию в качестве имени пользователя в форме входа? Кроме того, я хочу, чтобы каждый идентификатор (а не идентификатор «AutoIncrement») техник а также Работник станет именем пользователя.
Как управлять базой данных, как это?
или я должен добавить столбец пароля в обеих таблицах? (Сотрудник и техник)
или я должен сделать одну таблицу, как это?
(новый) Admin
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
Вот еще один пример иностранный ключ использование.
Чтобы больше понять нормализацию, взгляните на эта тема.
Других решений пока нет …