Какой первичный ключ в такой таблице?

avatar
Rawan Al-Sager
8 апреля 2018 в 06:36
200
2
1

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

Вот пример:
Таблица заработной платы столбцы:
Basic_salary
Жилищное_пособие
Transfer_allowance
Статус
Сотрудник_id (внешний ключ)

другой пример:
Таблица навыков
Столбцы:
employee_id (внешний ключ)
Навык

Единственным уникальным столбцом здесь является идентификатор сотрудника.
Могу ли я использовать его в качестве первичного ключа?

Источник
Neil
8 апреля 2018 в 10:07
0

Ожидаете ли вы иметь несколько записей для сотрудника в каждой таблице? У людей обычно есть только одна текущая зарплата, но если ваш статус используется для отслеживания предыдущей зарплаты, у вас может быть несколько записей. Точно так же и в отношении навыков, я ожидаю, что вы могли бы легко иметь более одного на каждого сотрудника. Если это так, идентификатор сотрудника сам по себе не будет уникальным. Вы против добавления столбца Id или создания первичного ключа для двух существующих столбцов?

Rawan Al-Sager
9 апреля 2018 в 06:02
0

Нет, я делаю таблицу для текущей зарплаты, только если зарплата изменится, тогда таблица будет обновлена ​​без повторения идентификатора сотрудника.

Rawan Al-Sager
9 апреля 2018 в 06:21
1

но для таблицы навыков идентификатор сотрудника будет введен более одного раза

Ответы (2)

avatar
user9408453
8 апреля 2018 в 06:41
0

Из ваших полей в этой таблице "status employee_id" уже является внешним ключом, поэтому вы не можете использовать его в качестве первичного ключа. Если эта таблица предназначена для сотрудников, то да, Employee_ID определенно будет первичным ключом

.
avatar
Mureinik
8 апреля 2018 в 06:39
0

Одним словом - да. Ничто не мешает вам иметь первичный ключ, который также является внешним ключом для другой таблицы. Id — отличный первичный ключ для этой таблицы.