2014-04-16 4 views
0

Я хочу создать 3 таблицы: босс и наемный работник, наследующий человека таблицы.Наследие с автоматической инкрементацией

человек: id, логин, пароль;
boss: id, login, mdp, firstname, lastname, email;
работодатель: id, login, mdp, firstname, lastname, email;

Я разделяю эти два типа лиц для контроля прав.

Но я хочу сохранить таблицу, содержащую всех пользователей для управления соединением.

Проблема заключается в автоматическом отступе в трех идентификаторах. Когда я создаю член типа «босс», идентификаторы в боссов таблиц и «человек» автоматически идентифицируются в 1. И когда я создаю новый член типа Employe, Иды (1 в «Employee» и 2 в " personn "beacause, первый - босс), не то же самое.

Как я могу моделировать его?

Спасибо и извините за мой английский, Флориан.

ответ

1

У вас есть много дублирующихся данных. Рассмотрю эту альтернативу:

person 
------ 
id 
login 
password 
firstname 
lastname 
email 

boss 
---- 
id 
person_id 

employee 
-------- 
id 
person_id 

я могу хранить ту же самую информацию, используя эту структуру, как вы можете в ваших, но каждый «человек» будет иметь только один ПгвЬЫат/LastName, адрес электронной почты, логин и пароль. Вы должны хранить только данные таблицы босса/сотрудника, которые имеют отношение только к этому объекту. Например, у босса может быть поле security_code, тогда как обычный сотрудник не будет.

Вам не следует пытаться сохранить первичные ключи id между двумя разными таблицами, чтобы соответствовать (то есть, идентификатор босса не должен совпадать с идентификатором личности). Вместо этого добавьте внешний ключ person_id, чтобы, если у вас есть запись босса, вы можете легко найти свою информацию в таблице лиц из этого.

+0

Что касается таблицы 1 с флагом boss \ employee (role) (при условии, что они не могут быть оба) –

+0

, которые будут работать, если боссы и сотрудники имеют одинаковые поля и не отклоняются. Я предполагал, что была основная причина для их расщепления в первую очередь. –

+0

Спасибо за ваш ответ! Я окончательно решил сохранить только одну таблицу, и я добавил свойство, которое идентифицирует тип человека. – FlorianDlbr

Смежные вопросы