Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы и ответы для экзамена по курсу.docx
Скачиваний:
93
Добавлен:
11.09.2019
Размер:
86.84 Кб
Скачать
  1. Ключи, назначение, виды

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

Более строго определить понятие первичного ключа можно следующим образом:

если R отношение с атрибутами A1 A2..., An, то множество атрибутов

К = Ai„ Аj ...,Ak) отношения R является первичным ключом этого отношения тогда и толь­ко тогда, когда удовлетворяются два независимых от времени условия:

  • уникальность: в произвольный момент времени никакие два различных корте­жа отношения R не имеют одного и того же значения для Аi Аj ..., Аk.

  • минимальность: ни один из атрибутов Аi Аj ..., Аk не может быть исключен из К без нарушения уникальности.

Для каждого отношения свойством уникальности обладает, по крайней мере, пол­ный набор его атрибутов. Однако требуется обеспечить и условие минимальности. Поэтому, как правило, в отношении всегда имеется один атрибут, обладающий свойством уникальности и являющийся первичным ключом.

В зависимости от количества атрибутов, входящих в ключ, различают простые и сложные (или составные) ключи.

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

Сложный или составной ключ — состоит из нескольких атрибутов.

В зависимости от того, содержит ли атрибут, являющийся первичным ключом, какую-либо информацию, различают искусственные и естественные ключи.

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

Естественный ключ ключ, в который включены значимые атрибуты и который, таким образом, содержит информацию.

В рассматриваемом нами примере в качестве первичного ключа отношения СТУДЕН­ТЫ можно рассматривать атрибут №_студенческого_билета. Причем данный ключ будет естественным, так как он несет вполне определенную информацию.

Каждый из типов первичных ключей имеет свои преимущества и недостатки; их обсуждению посвящено большое количество публикаций. Мы не будем проводить подробное их сравнение, а отметим лишь основные плюсы и минусы каждого из видов ключей.

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

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

Следует пони­мать, что значения атрибутов первичного ключа не должны изменяться. То есть од­нажды заданное значение первичного ключа для кортежа не может быть позже изменено. Такое требование ставится в основном для поддержания целостности базы данных.

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

Даже в сравнительно простых базах данных это может вызвать ряд трудноразрешимых проблем.

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

Действительно, невозможно опреде­лить для человека набор атрибутов, которые были бы уникальны и неизменны на протяжении всей его жизни.

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

Таким образом, с точки зрения быстродействия системы естественные ключи часто оказываются неоптимальными.

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

Таким обра­зом можно обеспечить уникальность и неизменность ключа (раз он никаким обра­зом не зависит от предметной области, то никогда не возникнет необходимость изменять его).