Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Естественные и суррогатные ключи



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

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

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

§ Несоответствие реальности — Уникальность естественного первичного ключа в реальных БД не всегда соблюдается. Допустим, например, что первичный ключ в таблице — данные личного документа. В такую таблицу окажется невозможным внести человека, о документах которого нет информации в момент добавления записи, а на практике такая необходимость может возникнуть.

§ Повторяемость — При использовании естественного ключа, содержание может повторяться (так, как могут повторятся поля, из которых состоит ключ), что недопустимо в первичном ключе

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

Вне́шний ключ (англ. foreign key) — понятие теории реляционных баз данных. Внешним ключом называется поле таблицы, предназначенное для хранения значения первичного ключа другой таблицы с целью организации связи между этими таблицами.

Пусть имеются таблицы A и B. Таблица A содержит поля a, b, c, d, из которых поле a — первичный ключ. Таблица B содержит поля x, y, z. В поле y содержатся значение поля a одной из записей таблицы A. В таком случае поле y и называется внешним ключом таблицы A в таблице B.

Вот такой SQL-запрос вернёт все связанные пары записей из таблиц A и B:

select * from A, B where A.a = B.y;

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

Развитые СУБД поддерживают автоматический контроль ссылочной целостности на внешних ключах.

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

.





Дата публикования: 2014-11-26; Прочитано: 1136 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...