В случаях, когда невозможно гарантировать уникальность значений каждого поля, существует возможность создать ключ, состоящий из нескольких полей.
Если определить подходящий набор полей для составного ключа сложно, просто добавьте поле счетчика и сделайте его ключевым. Например, не рекомендуется определять ключ по полям «Имена» и «Фамилии», поскольку нельзя исключить повторения этой пары значений для разных людей.
Пример 5: Предположим у нас есть таблица для отпуска товара по накладным. Эту таблицу мы должны привести ко второй нормальной форме.
Накладные
|
Дата
|
Номер
|
Покупатель
|
Счет покупателя
|
Город покупателя
|
Телефон покупателя
|
Товар
|
Количество
|
Сумма
|
Первичным ключом здесь являются поля Дата и Номер. Поля: Счет, Город и Телефон – зависят только от поля Покупатель, но не от первичного ключа, поэтому их можно выделить в отдельную таблицу под названием Клиенты.
Накладные
|
|
|
Дата
|
| Покупатель
|
Номер
|
| Счет покупателя
|
Покупатель
|
| Город покупателя
|
Товар
|
| Телефон покупателя
|
Количество
|
|
|
Сумма
|
|
|
Таким образом, мы привели БД Накладные ко второй нормальной форме.