Визуальное проектирование структуры базы данных.
Цель работы: познакомить с принципами разработки и внедрения SQL-сценариев при проектировании структуры базы данных; научиться работе в графическом построителе базы данных
Ø Определение типов данных таблиц
Назначая типы данных колонкам таблиц, можно использовать "свои" типы — домены.
Таблица 3 - Типы полей таблиц БД DB.gdb
Имя таблицы | Имя поля | Тип | Длина | Десятичная часть |
Owner | NOn | SMALLINT | ||
Ow | CHAR | 10 | ||
AdO | CHAR | 20 | ||
Lease | NLease | SMALLINT | ||
Tn | SMALLINT | |||
AdT | CHAR | 20 | ||
NOn | SMALLINT | |||
AdR | CHAR | 20 | ||
LDate | DATE | |||
Realty | AdR | CHAR | 20 | |
Тур | CHAR | 20 | ||
Rent | Тур | CHAR | 20 | |
Rn | NUMERIC | 6 | 2 |
Таблица 4 - Описание доменов базы данных
Имя поля | Тип | Длина | Значение по умолчанию | Ограничения |
dnNum | SMALLINT | - | 0 | |
dnOwTn | CHAR | 10 | нет | |
dnAddrs | CHAR | 20 | нет | |
dnTyp | CHAR | 20 | 1-к. квартира | 1-к.квартира 2-к.квартира дом |
dnRn | NUMERIC | 6,2 | 60 | > 0 |
dnDATE | TIMESTAMP | - | <= "TODAY" |
Ø Создание доменов
Для создания домена выберите команду Database-> New Domain. В появившемся окне Domain вводится информация о доменах. Name – имя домена, Field Type – тип поля домена, Size/Scale – размер поля, Not Null – обязательное ли поле, Default Source – значение по умолчанию, Check – проводимая проверка (например, value > 0, т.е. значение поля должно быть больше нуля). Добавление нового домена производится нажатием на кнопку со значком «+», удаление – «-».
После заполнения данных о доменах следует нажать на кнопку Compile(значок в виде молнии) или Ctrl-F9. В появившемся окне произойдет создание доменов и будут выведены ошибки(если таковые будут найдены). Внизу есть кнопки: Commit(применить изменения) и Rollback(откатить изменения). Если ошибок не обнаружено, то нажмите на кнопку Commit.
Ø Создание таблиц
Для создания таблицы выберите команду Database->New T able. В появившемся окне вводится информация о полях таблицы. Параметры поля можно задать вручную, а можно доменом. Для задания доменом следует указать в поле Domain нужный домен. Создание нового поля производится нажатием на кнопку Add Field(вторая после кнопки с молнией), добавление происходит в конец списка полей. Следующая кнопка(Insert Field) производит добавление в начало списка полей. Кнопка после(Drop / Delete Field) удаляет поле.
После задания полей следует нажать на кнопку Compile(кнопка с молнией) или Ctrl-F9. В появившемся окне, как и при создании доменов, будут кнопки Com m it и Rollback. Для применения изменений нужно нажать на Commit.
Ø
Создание ключей
Для создания внешнего ключа перейдите на вкладку Constraints(ограничители), в которой надо перейти на вкладку 2. Foreign keys. В появившеся таблице нажмите правой кнопкой мыши на шапку таблицы и выберите команду New foreign key или нажмите на клавишу Insert. Будет добавлен внешний ключ и следует задать поле и таблицу, на которую ссылается ключ. Описание полей таблицы внешних ключей :
Constraint Name – название внешнего ключа
On Field – какое поле данной таблицы будет ссылаться на другую
FK Table – на какую таблицу будет ссылаться внешний ключ
FK Field – на какое поле другой таблицы будет ссылаться ключ
Главный (первичный) ключ создается на соседней вкладке слева 1. Primary key , создаются так же как и внешние, но надо указать только имя ключа и ключевое поле.
ЛАБОРАТОРНАЯ РАБОТА № 4
Отображение данных на клиенте.
Цель работы: познакомить с принципами отображения данных контейнеров в клиентском приложении, разработанном в среде Borland Delphi 7
1. Создать обычное VCL-приложение Delphi.
2. Поместить на форму компоненты из вкладки InterBase — IBDatabase и IBTransaction. Эти компоненты служат для соединения с конейнером(IBDatabase) и проведения танзакций( IBTransaction ).
3. По компоненту IBDatabase формы щелкните два раза левой кнопкой мыши и появившееся окно заполните следующим образом:
В поле Database укажите путь к своему контейнеру InterBase(удобно воспользоваться кнопкой Browse, которая вызовет стандартный диалог Windows выбора файла). Флаг Login Promt отвечает за запрос логина и пароля при подключении к контейнеру(для отладки программы удобнее это отключить).
4. Затем измените свойство Connected у IBDatabase на значение true (произойдет подключение к контейнеру). В свойстве DefaultTransaction укажите компонент IBTransaction формы.
5. Компоненту IBTransaction формы в свойстве DefaultDatabase укажите свой IBDatabase. После установите свойство Active в значение true.
6. Затем установите на форме компоненты IBTable для каждой таблицы в контейнере (или сколько там вам нужно...). Задайте им свойство Database своим IBDatabase. Выберите таблицу в свойстве TableName и установите свойство Active в true.
7. Для возможности отображения таблиц при помощи компонента DBGrid(из вкладки Data Controls) создайте для каждой таблицы Datasource и укажите им соответствующие IBTable (свойство DataSet). Укажите DBGrid соответствующие Datasource.
В итоге должно получиться примерно следующее:
Примечание: при активировании таблиц возможно не будут отображаться данные в них, ничего в этом страшного нет, но, если после запуска программы они так и не появились, то вы сделали что-то не так ;)
Для связывания таблиц используются свойства MasterSource и MasterFields у компонентов IBTable. В MasterSource подчиненной таблицы указывается Datasource главной таблицы, а в MasterFields поле, по которму производится связывание. Связи таблиц можно установить как и в Object Inspector'е так и написать вручную в коде программы, например для события формы OnShow().
К примеру:
procedure TForm1.FormShow(Sender: TObject);
begin
TLEASE.Active:=false; TOWNER.Active:= false; TREALTY.Active:= false; TRENT.Active:=false;
TRENT.MasterSource := DREALTY; TRENT.MasterFields := 'TYP';
TREALTY.MasterSource := DLEASE; TREALTY.MasterFields := 'ADR';
TOWNER.MasterSource := DLEASE; TOWNER.MasterFields := 'NON';
TLEASE.Active := true; TOWNER.Active := true; TREALTY.Active := true; TRENT.Active:= true;
end;
Перед установкой связей следует деактивировать связываемые таблицы, а после - активировать снова.
Лабораторная №5