Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Первичный ключ может состоять из информационных полей таблицы (то есть полей, содержащих полезную информацию об описываемых объектах). Такой первичный ключ называют естественным ключом. Теоретически, естественный ключ всегда можно сформировать, в этом случае мы получим т. н. интеллектуальный ключ. На практике, однако, использование естественных ключей наталкивается на определённые сложности:
Низкая эффективность — Естественный ключ может быть велик по размеру (особенно когда он составной), и его использование окажется технически неэффективным (ведь во всех таблицах, связанных с данной, понадобится создать поле того же размера, чтобы хранить ссылки).
§ Необходимость каскадных изменений — При изменении значения поля, входящего в естественный ключ, оказывается необходимым изменить значение поля не только в данной таблице, но и во всех таблицах, связанных с данной, в противном случае все ссылки на данную запись окажутся некорректными. В сложных базах данных таких связанных таблиц может быть очень много, и всегда остаётся опасность упустить из виду какую-то из них. При добавлении новых связанных таблиц приходится добавлять согласующие изменения во все места программ, где правится исходная таблица.
§ Несоответствие реальности — Уникальность естественного первичного ключа в реальных БД не всегда соблюдается. Допустим, например, что первичный ключ в таблице — данные личного документа. В такую таблицу окажется невозможным внести человека, о документах которого нет информации в момент добавления записи, а на практике такая необходимость может возникнуть.
§ Повторяемость — При использовании естественного ключа, содержание может повторяться (так, как могут повторятся поля, из которых состоит ключ), что недопустимо в первичном ключе
Вследствие этих и других соображений в практике проектирования БД чаще используют т.н. синтетические (суррогатные) ключи — искусственно созданные технические ключевые поля, не несущие информации об объектах.
Вне́шний ключ (англ. 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!