- •Bde та ado
 - •Введение
 - •Введение в базы данных
 - •Типы субд
 - •Стандарт odbc
 - •Технологии взаимодействия delphi с бд
 - •Особенности технологии bde
 - •Особенности технологии ado
 - •Таблицы бд и связи между ними
 - •Первичные ключи и индексы
 - •Демонстрационная бд "поставщик книг"
 - •Использование odbc для подключения источника данных. Внешний псевдоним бд
 - •Создание внешнего псевдонима бд
 - •Создание проекта с бд в технологии bde
 - •Особенности использованияbdeдля соединения с источником данных
 - •Структура проекта с бд и визуальными компонентами
 - •Активизация проекта
 - •Главная форма проекта
 - •Модуль данных
 - •Создание модуля данныхTDataModule
 - •Создание компонента tDatabase
 - •Создание компонента tTable
 - •Создание компонентаTDataSource
 - •Связь модуля главного окна с модулем данных
 - •Связь сеткиTdbGrid и навигатораDbNavigatorcисточником данныхTDataSource
 - •Связь главный-детальный между наборами данных
 - •Задание реляционной связи между наборами данных
 - •Активизация наборов данных
 - •Недостатки полученных решений и пути их устранения
 - •Объекты-столбцы сетки dbGrid
 - •Объекты-поля наборов данных
 - •Создание объектов-полей
 - •Присоединение к наборам данных новых полей
 - •Присоединение полей из других таблиц. Подстановочные поля
 - •Вычисляемые поля
 - •Обработчики событий компонент работы с бд
 - •Обработчики событий OnGetText полей нд и компонента визуализации данныхTdbGrid
 - •Установка системных переменных в обработчике событяOnCreate
 - •Бизнес-правила иобработчики событий компонент работы с бд
 - •Implementation
 - •Sql запросы к бд
 - •КомпонентtQuery
 - •СозданиекомпонентаtQuery
 - •ИспользованиякомпонентаtQuery
 - •Свойство sql
 - •Методы Open и ExecSql
 - •Параметрические запросы
 - •Параметрические запросы и свойство DataSource компонента tQuery
 - •Связь главный-детальный с компонентомTQuery в качестве детального набора данных
 - •Доступ к полям запроса
 - •Обращение к значению поля при помощи свойств объектов-полейValueиAsXxxx
 - •Обращение к значению поля при помощи свойств набора данных Fields и FieldValues
 - •Обращение к значению поля при помощи функции набора данных FieldByName
 - •Программный доступ к данным запроса
 - •Общая схема программного доступа к данным запроса
 - •Последовательная навигация по записям
 - •Обзор событий компонентаtQuery
 - •Хранимые процедуры и триггеры
 - •Хранимые процедуры
 - •Создание хранимых процедур
 - •Вызов хранимых процедур
 - •Триггеры
 - •Наборы данных
 - •Обзор событий класса tdbDataSet
 - •Реализация каскадных изменений и бизнес-правил
 - •Другие события
 - •Технология ado
 - •Основные особенности технологии ado
 - •Реализация технологии ado в Delphi
 - •Создание проекта с бд в технологии ado. Установка связи с бд
 - •Создание модуля данных
 - •Начало настройки связи
 - •Выбор провайдера
 - •Настройка провайдера
 - •Настройка провайдераMicrosoftJet4.0oledbProvider
 - •Настройка провайдера Microsoft ole db Provider for odbc Drivers
 - •Завершение настройки связи
 - •Настройка оставшихся компонент модуля данных
 - •Особенности использования компонентов ado
 - •Базовые объекты ado
 - •ОбъектRecordset
 - •ОбъектCommand
 - •ОбъектParameter
 - •Компонент tadoCommand
 - •Свойства, методы и события ado компонентов-наборов
 - •Общие свойства с bde-компонентами
 - •Специфические свойства
 - •Методы класса tCustomAdoDataSet
 - •События класса tCustomAdoDataSet
 - •Компонент tadoDataSet
 - •Компонент tadoTable
 - •Компонент tadoQuery
 - •Компоненты визуализации данных вDelphi
 - •Компонент tdbGrid
 - •Свойства
 - •Дополнительные возможности сетки
 - •Компоненты визуализации полей текущей записи
 - •Компонент tdbText
 - •Компонент tdbEdit
 - •Компонент tdbCheckBox
 - •Компонент tdbRadioGroup
 - •Списочные компоненты
 - •Компонент tdbMemo
 - •Компонент tdbRichEdit
 - •Компонент tdbCtrlGrid
 - •Компонент tdbNavigator
 - •Приложение 2. Бд "поставщик книг"
 - •Рекомендованная литература
 
Таблицы бд и связи между ними
Единицей хранящейся в БДинформации являетсятаблица. Каждая таблица представляет собой совокупностьстрокистолбцов, где строки соответствуют экземпляру объекта, конкретному событию или явлению, а столбцы - атрибутам (признакам, характеристикам, параметрам) этого объекта, события или явления.
Между отдельными таблицами БД могут существовать связи. Такие БД называютсяреляционными (отrelation -связь, отношение). Связанные отношениями таблицы взаимодействуют по принципуглавная (master) - детальная (detail).
Первичные ключи и индексы
В каждой таблице БДможет существоватьпервичный ключ - поле или набор полей, однозначно идентифицирующий запись. Значение первичного ключа в таблицеБДдолжно быть уникальным, то есть в таблице не должно существовать2-х или более записей с одинаковым значением первичного ключа. Первичные ключи облегчают установление связи между таблицами.
Индексы отличаются от первичных ключей тем, что не требуют непременной уникальности значений входящих в их состав полей. Они устанавливаются по одному или нескольким полям, которые часто используются при поиске и сортировке данных. Индексы помогаюут системе значительно быстрее найти нужные данные или отсортировать их в нужной последовательности.
Демонстрационная бд "поставщик книг"
Для последующих примеров будет использована демонстрационная БД"Поставщик книг". Назначение такой системы интуитивно понятно из приводимого ниже описания таблицБД.
В БДсодержится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 слов.
