Должен ли я создать таблицу с несколькими ключами-кандидатами?

#database #database-design #primary-key #functional-dependencies

#База данных #база данных-дизайн #первичный ключ #функциональные зависимости

Вопрос:

Предположим, у меня есть таблица:

 MyTable(AttrA, AttrB, AttrC)
Functional dependencies: (AttrA, AttrB) -> AttrC, (AttrA, AttrC) -> AttrB
  

И я выбираю (AttrA, AttrB) в качестве первичного ключа. Итак, этот дизайн хорош или плох?

Ответ №1:

Если такова бизнес-ситуация, и это решение точно отражает бизнес-сценарий, то что в этом может быть «плохого»?

Редактировать

Я предполагал, что вы знали, что такие проекты могут вызвать у вас проблемы с некоторыми «заменяющими» обновлениями, но, возможно, было бы лучше указать это явно. Простейший случай такого обновления с «заменой» — это когда вам нужно перейти с {A,B, C} {A,C, D} на {A,B, D} {A, C, C} . Какие способы доступны для преодоления таких проблем, зависит от вашей СУБД. И, конечно, тот факт, что на практике достижение определенных обновлений может быть проблематичным, не делает логическую структуру вашей базы данных недействительной как таковой.

Прошу прощения за то, что упомянул об этом с опозданием.