Базы данных 1 лекция лаб 1
.pdf11
Рис. 1.16. Расположение таблиц в окне Data Diagram
Для установления связи между таблицами щелкните на кнопке [Щ: (кнопка Master Detail) панели инструментов, подведите указатель мыши в виде перечеркнутого круга к нижней кромке верхней таблицы (в этот момент указатель превратится в крестик), нажмите левую кнопку мыши и, удерживая ее нажатой, прочертите линию к верхней кромке нижней таблицы, после чего отпустите кнопку. На экране появится окно конструктора связей (рис. 1.17).
Чтобы установить связь, нужно указать связываемые поля в родительской и дочерней таблицах. По умолчанию для дочерней таблицы конструктор связей выбрал поле с первичным ключом Move ID. Чтобы сменить поле, нужно раскрыть список Available Indexes в верхней части окна и выбрать индекс MOVEBOOK_NAKL. После этого в поле Detail Fields появится имя поля MNakl — щелкните на нем и на имени поля NakllD в списке Master Fields, после чего щелкните на кнопке Add (эта кнопка станет доступной только после выделения полей связи и перестает быть доступной после щелчка на ней). Закройте окно конструктора связей щелчком на кнопке ОК.
Рис. 1.17. Окно конструктора связей
После выполнения этих действий между таблицами NAKLS и MOVEBOOK устанавливается связь один ко многим по полю NakllD, о чем свидетельствует вид окна Data Diagram на рис. 1.18.
Рис. 1.18. Окно Data Diagram после установления связи между таблицами
Щелкните на таблице Movebook. DB в окне дерева объектов и откройте набор данных Move: в окне инспектора объектов поместите в его свойство Active значение True. Точно так же откройте таблицу Nakls.
На этом начальный этап работы с окном модуля данных закончен, и нам нужно перейти к главному окну программы (щелкните на вкладке fmNaklsU в окне кода и нажмите клавишу F12). С помощью команды File ► Use Unit свяжите модуль главного окна с модулем данных. Для верхней сетки DBGridl раскройте список свойства DataSource и выберите в нем пункт DataSourcel — сетка туг же наполнится данными из НД Nakls. Точно так же свяжите нижнюю сетку с источником данных DataSource2. Свяжите навигатор баз данных DBNavigatorl в нижней части окна с источни-
ком DataSourcel.
12
3. Модули данных
Для упрощения разработки приложений баз данных наряду с формами в Delphi используются модули данных. Модуль данных (data module) – это централизованный контейнер для невизуальных компонентов доступа к базе данных. Он предназначен для отделения логики обработки данных и бизнес-правил от логики работы пользовательского интерфейса.
4. Компоненты для работы с базой данных
Для работы с базами данных используются три группы компонентов:
множества данных (data sets);
визуальные компонентs баз данных (data-aware controls);
источники данных (data sources).
Множества данных – это невизуальные компоненты, которые взаимодействуют с BDE и обеспечивают доступ к данным в таблицах. Главные из них – Table и Query.
Компонент Table является самым фундаментальным множеством данных в Delphi. Он обеспечивает доступ к таблице практически любой СУБД. С помощью данного компонента можно организовать произвольный доступ к любой записи или их подмножеству, поиск записей по заданному критерию.
Компонент Query является самым гибким множеством данных в Delphi. Он инкапсулирует в себе запрос к базе данных на языке SQL, результат действия которого есть логическая таблица, формируемая их строк и столбцов всех физических таблиц базы данных. В сравнении с компонентом Table компонент Query обладает тем преимуществом, что он может работать сразу с несколькими таблицами, предоставляя доступ ко всем реляционно связанным данным. Более того, данный компонент позволяет создавать “гетерогенные множества”, объединяя на серверах таблицы с разнотипными СУБД.
Визуальные компоненты баз данных – это управляющие элементы пользовательского интерфейса для просмотра и редактирования данных. Большинство из них дублируют известные управляющие элементы диалоговых окон. Визуальные компоненты баз данных отличаются от обычных управляющих элементов тем, что сами знают о том, как брать данные из полей таблицы и как их туда помещать. Для этого они связываются с соответствующими источниками данных с помощью своих свойств.
Источники данных – это невизуальные компоненты DataSource, выполняющие роль трубопроводов между множествами данных и визуальными компонентами данных.
При разработке приложений множества данных обычно помещают в модуль данных, а визуальные компоненты базы данных – на форму.
1. Таблица с источником данных
Для работы с набором данных в табличной форме используются компоненты Table и DataSource. Компонент Table содержит все необходимые свойства, события и методы для создания, модификации, поис-
ка, и фильтрации записей в таблице. Он обеспечивает простой и эффективный доступ к таблице. Важнейшие свойства компонента следующие:
Свойство |
Описание |
Active |
Если равно True, то таблица открыта, если False, то закрыта. |
CachedUpdates |
Если равно True, операции по модификации таблицы (например, изменение или уда- |
|
ление записей) сразу не выполняются, а кэшируются (т.е. накапливаются). Для физи- |
|
ческого выполнения скопившихся операций вызывается метод ApplyUpdates. |
DatabaseName |
База данных, которой принадлежит таблица. Это свойство либо содержит псевдоним, |
|
либо маршрут к файлам таблиц. |
Exclusive |
Если равно True, всем остальным пользователям таблицы будет отказано в доступе. |
Filter |
Булевское выражение, задающее фильтр для записей. |
Filtered |
Включает или выключает фильтрацию записей. |
FilterOptions |
Флаги, определяющие режимы фильтрации. |
IndexFieldNames |
Имена индексных полей, по которым упорядочиваются записи. |
IndexFiles |
Список индексных файлов, используемых при работе с таблицами в формате Dbase. |
IndexName |
Вторичный индекс таблицы. Свойства IndexName и IndexFieldNames являются взаи- |
|
моисключающими. |
MasterFields |
Содержит имена полей, по которым данная подчиненная таблица связывается с глав- |
|
ной таблицей. |
MasterSource |
Указывает источник данных (компонент DataSource) главной таблицы, если данная |
|
таблица является подчиненной. |
ReadOnly |
Позволяет запретить любую модификацию данных в таблице. |
TableName |
Имя таблицы БД. |
TableType |
Физический тип таблицы (возможные значения: ttASCII, ttDBase, ttParadox). Это |
|
свойство игнорируется при работе с серверной СУБД. |
13
Второй компонент, называемый DataSource, является вспомогательным. Он используется для соединения таблицы в базе данных с визуальным компонентом на форме. Свойства компонента DataSource приводятся в cледующей таблице:
Свойство |
Описание |
AutoEdit |
Определяет, переходит ли связанная с источником данных таблица БД в режим редактирова- |
|
ния записи, если пользователь начинает печатать символы в одном из управляющих элемен- |
|
тов, связанных с источником данных. |
DataSet |
Указывает компонент (Table или Query), поставляющий данные из таблицы. |
Enabled |
Определяет, обновляется ли содержимое управляющих элементов, связанных с источником |
|
данных, при изменении текущей записи в таблице. |
2. Компонент DBGrid для табличного просмотра и редактирования данных
Компонент DBGrid является визуальным табличным компонентом для просмотра и редактирования таблицы БД. Компонент DBGrid внешне похож на StringGrid и DrawGrid, но отличается от них свойствами и событиями, основные из которых приведены в следующей таблице:
Свойство |
Описание |
Align |
Определяет способ выравнивания компонента внутри своего владельца (формы или |
|
другого компонента). |
Columns |
Содержит список объектов, описывающих колонки в таблице. |
DataSource |
Указывает источник (компонент DataSource), из которого поступают отображаемые |
|
данные. |
DefaultDrawing |
Если равно True, то ячейки таблицы отражаются в обычном стиле. Если установить это |
|
свойство в значение False, то в обработчике события OnDrawColumnCell можно опре- |
|
делить свой способ рисования ячеек. |
FixedColor |
Цвет фиксированных строк и колонок таблицы. |
Options |
Определяет режимы работы компонента. |
ReadOnly |
Запрещает пользователю изменять данные. |
TitleFont |
Шрифт, используемый при отображении колонок. |
Для защиты таблицы от изменений используется свойство ReadOnly. Если сделать только читаемой саму таблицу, то никакие другие визуальные компоненты также не смогут изменить ее содержание.
Определение вторичных индексов для сортировки полей БД
DataBase Desktop – Загрузить таблицу
Restructure – изменить структуру
Установить индексное и вторичные поля:
Table Properties – Secondary Indexes
Define
14
15
Порядок создания приложения для работы с базами данных
|
Пусть имеются 2 таблицы: |
|
ГРУППА |
|
СТУДЕНТ |
Номер группы |
|
Номер группы |
Кол-во студентов |
|
ФИО |
Староста |
|
Результаты сдачи сессии |
1.Создание псевдонима базы данных
BDE Administrator Object – New
Тип базы данных – STANDARD – OK
Изменить имя в STANDARD1 в левом окне на свое имя пользователя. В правом окне изменить путь
PATH: свой каталог на сервере Сохранить все – Apply.
2.Создание таблиц базы данных.
(Инструменты – Database Desktop) Database Desktop
File – Work Directory – Alias – указать псевдоним базы данных
File – Private Directory – свой каталог на диске C File – New – Table – задаем структуру таблицы Каждая строка таблицы соответствует полю.
Fields Name – имя поля
Type – тип поля Size – размер
Key – первичный ключ. Тип поля:
Alpha – A
Number – N
Money – $
Short – S LongInteger – I BCD – #
Date – D
Time – T Timesamp – @ Memo – M
Formatted Memo – F
Graphic Fields – G OLE – O
Logical – L Autoincrement – ± Binary – B
Bytes – Y
3. Создание приложения
BDE – Table
DatabaseName – ruzhitskaya TableName – имя первой таблицы
Active – True Data Access – DataSource
DataSet – Table1 DataControl – DBGrid
DataSource – DataSource1 DataControl – DBNavigator
DataSource – DataSource1