Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование БД в Delphi ВТиП.doc
Скачиваний:
53
Добавлен:
17.03.2016
Размер:
3.62 Mб
Скачать
    1. Таблицы бд и связи между ними

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

Между отдельными таблицами БД могут существовать связи. Такие БД называютсяреляционными (отrelation -связь, отношение). Связанные отношениями таблицы взаимодействуют по принципуглавная (master) - детальная (detail).

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

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

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

    1. Демонстрационная бд "поставщик книг"

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

В БДсодержится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 слов.