Зачем может понадобится добавлять первичный ключ с двумя значениями?

Рейтинг: 1Ответов: 1Опубликовано: 07.04.2015

Зачем может понадобится добавлять первичный ключ с двумя значениями?

пример запроса:

mysql_query("ALTER TABLE cities
         ADD CONSTRAINT ex PRIMARY KEY (id, id2)

Спасибо.

Ответы

▲ 4Принят

Составные ключи могут быть полезны для таблиц, которые содержат связи между сущностями. Например, у нас есть следующие таблицы: Студенты, Предметы и Оценки.

Таблица Оценки связывает студентов с предметами и содержит оценки студентов по предметам: СтудентИд, ПредметИд, Оценка. Казалось бы, очевидным будет сделать суррогатный первичный ключ: СтудентПредметИд. Но тогда может возникнуть проблема неконсистентных данных: будет возможно одному студенту поставить две разных оценки по одному и тому же предмету. Например:

СтудентПредметИд  СтудентИд  ПредметИд  Оценка

1                                   1                    1                    3

2                                   1                    1                    5

В этом случае пригодится составной ключ (СтудентИд, ПредметИд), которого будет достаточно для идентификации записи.