Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Proektirovanie_BD_v_Delphi_VTiP.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
5 Мб
Скачать
☆

2.4Таблицы бд и связи между ними

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

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

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

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

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]