Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OAP_VOpros_6-7_Bazy_dannykh_1_lektsia_lab_1.doc
Скачиваний:
23
Добавлен:
30.04.2015
Размер:
3.33 Mб
Скачать

Первичные ключи и индексы

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

Первичные ключи облегчают установление связи между таблицами. В таблице по­купателей таким ключом может быть одноименное поле. Установив связь по пер­вичному ключу, мы можем выяснить, что, например, 10.12.99 со склада было от­пущено 100 единиц книг «Borland С++ Builder 4» покупателю «Магазин № 1», который расположен по адресу: 107005, Москва, 2-я Бауманская ул., 12 (телефон для связи 273-00-14).

Поскольку первичный ключ должен быть уникальным, для него могут использо­ваться не все поля таблицы. В приведенном примере название покупателя вряд ли может быть уникальным («Магазин № 1» может существовать не только в Моск­ве, но и в любом другом городе), поэтому поле Покупатель не может использо­ваться в качестве первичного ключа.

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

Покупатель

Адрес

Телефон

1

Магазин № 1

107005, Москва, 2-я Бауманская ул., 12

273-00-14

2

Дом книги

105066, Москва, Измайловский б-р, 18/11

165-18-99

Соответственно изменилась бы и связанная с ней таблица отпуска товаров.

Дата Название книги Покупатель Отпущено

10.12.99 Borland С++ Builder 4 1 100

10.12.99 Delphi 5. Учебный курс 1 100

12.12.99 В сетях Всемирной паутины 2 2000

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

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

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

Один из индексов является первичным (primary), он задает начальный порядок следования записей в таблице. Значение первичного индекса обязательно должно быть уникальным для каждой отдельной записи. Иначе говоря, в таблице не могут существовать две записи с одинаковыми значениями первичного индекса. Например, в таблице заказов первичный индекс правильно будет построить по полю «номер заказа», т.к. каждому заказу всегда назначается уникальный номер.

Все остальные индексы таблицы являются вторичными (secondary), они задают альтернативные способы упорядочивания записей и могут быть неуникальными.