ПЕРВИЧНЫЕ КЛЮЧИ И ИНДЕКСЫ

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

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

1.8 ДЕМОНСТРАЦИОННАЯ БД "ПОСТАВЩИК КНИГ"

Для последующих примеров будет использована демонстрационная БД "Поставщик книг". Назначение такой системы интуитивно понятно из приводимого ниже описания таблиц БД.

В БД содержится 6 таблиц. В таблице FIRMS хранятся сведения о партнерах – покупателях и поставщиках, с указанием названия каждого партнера его адреса и телефонов. В этой же таблице хранится сальдо - суммарный долг каждого покупателя или каждому поставщику.

В таблице BOOKS содержатся сведения о каждой книге, купленной или полученной у конкретного поставщика.

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

В отдельной таблице MOVEBOOK хранятся сведения о связанных с накладной книгах: в ее полях указывается ссылка на соответствующую накладную, наименование и количество переданных/полученных книг.

В таблице PAYMENTS хранятся сведения о платежах: кто, кому и сколько платит.

Вспомогательная таблица TYPENAKL хранит харарктеристики типа накладной: покупка, продажа и т.д.

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

Каждой записи в таблице NAKLS соответствует произвольное количество записей в таблице MOVEBOOK (связь один ко многим). Для связи таблицы MOVEBOOK с главной таблицей NAKLS таблица MOVEBOOK содержит поле MNakl - уникальный идентификатор накладной.

Каждой записи в таблице NAKLS соответствует одна запись в таблице FIRMS (связь один к одному). Для связи таблицы NAKLS с таблицей FIRMS таблица NAKLS содержит поле NFirm - уникальный идентификатор партнера.

Для связи таблицы MOVEBOOK с таблицей BOOK таблица MOVEBOOK содержит поле MBook - ссылка на уникальный идентификатор книги в таблице BOOKS (связь один к одному).

Таблица PAYMENTS – поле PFirm, имеет единственную связь - с таблицей FIRMS. При выполнении очередного платежа - появление очередной записи в таблице PAYMENTS, должен выполняться пересчет сумм платежей в таблице NAKLS и сальдо в таблице FIRMS.

Во избежание ненужных проблем с текстом программ и использованием SQL-запросов не рекомендуется использовать кириллицу в именах таблиц и их полей.

Имена полей по возможности должны быть лаконичными, но осмысленными.

В именах полей полезно ставить префикс малыми буквами из одной-двух букв названия таблицы (в таблице NAKLS все имена начинать с буквы "n", в FIRMS - с "f" и т. п.). Это исключит вероятность дать полю таблицы имя, совпадающее с одним из зарезервированных в SQL слов.