2016-11-10 4 views
-1

Любопытно, могу ли я иметь один и тот же первичный ключ в 3 разных таблицах? Я собираюсь создать таблицы Employee, FullTime и PartTime. Я хотел бы сделать EmployeeID основным ключом для всех. 3. Любые мысли?Первичный ключ в трех таблицах

+0

Зачем создавать 3 разных стола? Создать 1 и иметь тип сотрудника, который указывает, являются ли они полными/неполными? Мне кажется, вы будете получать одни и те же данные. или таблицу employeeTypes, если есть конкретные атрибуты о полном/неполном времени, которое вам нужно захватить. – xQbert

ответ

3

У вас может быть первичный ключ EmployeeId в таблице под названием Employees. Это будет иметь общую информацию, такую ​​как дата найма и т. Д.

Затем каждый из ваших подтаблицам могут иметь EmployeeId, который является одновременно первичным ключом в таблице и внешний ключ ссылки на Employees.EmployeeId. Это один из способов реализации односторонней связи с использованием реляционных таблиц.

К сожалению, если вы не используете триггеры, этот механизм не мешает одному сотруднику находиться в двух других таблицах, но это не является частью вашего вопроса.

+0

Что бы я сделал в качестве первичного ключа для сотрудников тогда? – LindaS

+0

, которые имеют для меня больше смысла. Я новичок в sql и просто не знал, как реализовать эти ключи. Благодаря! – LindaS

+0

Нет необходимости в триггерах, только что тип emp для каждой таблицы и ее ключа (pk/fk) –

0

Похоже, что ваш дизайн неправильный.

объект является сотрудником

атрибут работника является их статус занятости [ток ^].

Следовательно, в его простейшей форме вам понадобится одна таблица сотрудников с столбцом, который указывает их статус.

Чтобы улучшить это, столбец статуса сотрудника должен иметь отношение внешнего ключа с другой таблицей, в которой хранятся возможные статусы сотрудников.

^текущий статус отношений 1: 1. Если вам нужна история изменений, это 1: M и требует моделирования по-разному.

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