Проектирование базы данных: выбор первичного ключа

Хорошая модель и правильный проект базы данных формируют основу информационной системы. Построение слоя данных — часто первый критичный шаг в направлении создания новой системы, который правомерно требует внимания к деталям и тщательного планирования. База данных, как и любая компьютерная система, является моделью небольшой части реального мира. И, как любая модель, это — узкое представление, которое значительно упрощает сложность реальной вещи.

Современные системы баз данных основываются на реляционной модели хранения и извлечения данных. Название происходит от слова relationship — отношение между столбцами в таблице (а не из того, что Вы можете связать таблицы между собой). Другими словами, «реляционный» означает, что несколько значений, которые принадлежат одной и той же строке, являются связанными.

Первичный ключ — это атрибут (или комбинация атрибутов), который уникально идентифицирует строку. Хотя и не строго требуемые реляционной математикой, первичные ключи облегчают работу с реляционными данными программным образом. Они позволяют выполнить отображение реляционных данных в объектно-ориентированную модель, дают возможность приложениям уникально идентифицировать и манипулировать каждой сущностью (строкой) в базе данных.

Естественные Ключи

Понятие уникального идентификатора существует в реальном мире — Вы используете номера счетов для идентификации кредитных карточек, адреса для идентификации зданий или домов и т.д. Это примеры естественных ключей, идентификаторов реального мира, которые используются для однозначной идентификации объектов реального мира.

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

Есть множество желательных (не обязательно требуемых) характеристик первичного ключа, которых зачастую не имеют естественные идентификаторы:

· Уникальные значения: первичный ключ должен уникально идентифицировать каждую строку в таблице.

· Неинтеллектуальный: первичный ключ не должен иметь смыслового содержания. Другими словами, он не должен описывать характеристики сущности. Идентификатор клиента 398237 обычно более предпочтителен по сравнению с Майкл Дж. Малоун.

· Неизменяемость во времени: значение первичного ключа никогда не должно меняться. Изменение значения первичного ключа означает, что Вы меняете идентичность сущности, что не имеет смысла. Неинтеллектуальные ключи предпочтительны, поскольку они с меньшей вероятностью подвержены изменениям.

· Одноатрибутность: первичный ключ должен состоять из минимально возможного числа атрибутов. Желательно иметь одноатрибутные первичные ключи, поскольку с ними легче работать в приложениях, и они упрощают создание внешних ключей.

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

Вам также может понравиться...

Your email will not be published. Name and Email fields are required