Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3 Практический раздел.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
5.18 Mб
Скачать

Лабораторная работа №12

Тема: Администрирование БД. Создание доменов и таблиц.

Цель работы: Научится администрировать БД и создавать домены и таблицы в среде Inter Base.

Время работы: 2 учебных часа.

Правила по ТБ: Общие.

Оборудование рабочего места: Практикум, ПК.

Программное обеспечение: Windows, MS Office, InterBase

Вопросы входного контроля:

  1. Дайте определение понятию запрос

  2. Дайте определение понятию вложенный запрос.

  3. Напишите синтаксис SELECT-запроса.

  4. Напишите синтаксис вложенного SELECT-запроса.

  5. Перечислите операторы манипулирования данными.

  6. Напишите синтаксис каждого оператора манипулирования данными.

КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

Установка Interbase 7.5

Лучше использовать Interbase 7.5. Потому что удобно использовать последние версии программных продуктов, так как в новых версиях появляется много интересных фишек и исправлена добрая куча ошибок, замеченных в предыдущих версиях ПО.

Рисунок 12.1 – Установка IB 7.5.

Кликаем на кнопку ‘Next’, выбираем тип установки ‘Server and Client’ и еще несколько раз жмнм на ‘Next’.

Вот и вся установка!

Теперь в Пуске появился новый пункт меню:

Пуск – Программы – Interbase 7.5 Developer Edition.

Все, теперь можно приступать к запуску Interbase, для этого запустим IBConsole:

Пуск – Программы – Interbase 7.5 Developer Edition – IBConsole.

После запуска появится окно, изображенное на рисунке 12.2.

Рисунок 12.2 – Окно приложения InterBase

Нам нужно зарегистрировать сервер Interbase, для этого отрываем меню “Server” и выбираем “Register …”, появится окошко, заполняем его так чтобы получилось что-то вроде этого (рисунок 12.3):

Рисунок 12.3 – Регистрация сервера

Мы будем создавать базу на своем компьютере, поэтому выбираем Local Server. В поле Description введем описание нашего сервера. В поле Login Information – вводим логин и пароль админа базы данных, по умолчанию он будет (не знаю почему, но введите именно эти данные, потом можно будет добавлять и удалять пользователей):

User Name: SYSDBA

Password: masterkey

Жмем "Ok" – сервер зарегистрирован!

Обязательно создайте папку, где Вы хотите сохранить свою базу данных (вся Ваша база будет состоять из одного GDB-файла!).

Теперь создадим базу данных – выбираем пункт меню “Database” – “CREATE Database …” Появится следующее окно (рисунок 12.4):

Рисунок 12.4 – Окно создания базы данных

Указываем название файла базы данных и его месторасположение, в одной из строк списка Files.

Список Default Character Set не трогаем! Если на Вашем компьютере используется русский язык (то есть в настройках винды указано что Вы в России), то русские буквы будут поддерживаться Вашей базой.

В поле Alias вводим произвольный псевдоним.

Жмем ОК, база создана, окно IBConsole стала такой (рисунок 12.5):

Рисунок 12.5 – Окно базы данных

Interbase версии 7.5 позволяет манипулировать данными с помощью гуя, но мы все будем делать через утилиту Interactive SQL, так как с интерфейсом я думаю Вы и так разберетесь, а вот основные команды SQL Вам пригодятся.

Запускаем утилиту Interactive SQL, выбрав в меню Tools – Interactive SQL, появится окошко (рисунок 12.6):

Рисунок 12.6 – Окно Interactive SQL

Постановка задачи

Представьте, что к Вам пришел умный дядька и просит Вас написать ему программу, которая организует прозрачность работы автомойки (на самом деле компания не имеет принципиального значение, ну у нас пусть будет автомойка :). А что такое прозрачность? Прозрачность в данном контексте означает то, что есть система, которая хранит все операции автомойки и позволяет следить за бизнесом.

Вы не торопясь подумали над этой затеей и решили, что в Вашей базе данных будут следующие таблицы:

Таблица (справочник) ПЕРСОНАЛ (PERSONAL)

Название

Описание

Тип данных

PERSONALID

Поле – счетчик

Число

FIO

Фамилия Имя Отчество сотрудника

Текст (40)

DATA_BD

Дата рождения сотрудника

Дата

TEL

Номер телефона

Текст (20), текст лучше массива цифр, сам поймешь на практике

 

Таблица ГРАФИК РАБОТЫ (GRAFWORK)

Название

Описание

Тип данных

WORKID

Поле – счетчик

Число

PERSONALKOD

Вторичный ключ, для связи с таблицей «ПЕРСОНАЛ»

Число

NOTE

Описание графика работы

Текст (150)

DATA

Дата занесения записи в таблицу

Дата

Таблица КЛИЕНТЫ (CLIENT)

Название

Описание

Тип данных

CLIENTID

Поле – счетчик

Число

FIO

Фамилия Имя Отчество клиента

Текст (40)

DATA_BD

Дата рождения клиента

Дата

TEL

Номер телефона

Текст (20)

 

Таблица АВТОМОБИЛИ (CAR)

Название

Описание

Тип данных

CARID

Поле – счетчик

Число

CLIENTKOD

Вторичный ключ, для связи с таблицей «КЛИЕНТЫ»

Число

MARK

Марка автомобиля

Текст (30)

NUMCAR

Номер автомобиля

Текст (10)

NOTE

Примечание

Текст (150)

 

Таблица ОПЕРАЦИИ (OPERATION)

Название

Описание

Тип данных

OPERID

Поле – счетчик

Число

PERSONALKOD

Вторичный ключ, для связи с таблицей «ПЕРСОНАЛ»

Число

CLIENTKOD

Вторичный ключ, для связи с таблицей «КЛИЕНТЫ»

Число

DATA

Дата совершения операции

Дата

NOTE

Примечание

Текст (150)

 

Таблица СЕРВИСЫ (TSERVICE)

Название

Описание

Тип данных

TSERVICEID

Поле – счетчик

Число

OPERKOD

Вторичный ключ, для связи с таблицей «ОПЕРАЦИИ»

Число

SERVICEKOD

Вторичный ключ, для связи со справочником «УСЛУГИ»

Число

 

Таблица (справочник) УСЛУГИ (SERVICE)

Название

Описание

Тип данных

SERVICEID

Поле – счетчик

Число

NAME

Название услуги

Текст (30)

COST

Цена услуги

Число (4 цифры для целой части, 2 цифры – дробной)

По поводу двух последних таблиц: в SERVICE мы заносим все услуги предоставляемые автомойкой, а TSERVICE необходима для связи справочника УСЛУГИ (SERVICE) с таблицей ОПЕРАЦИИ (OPERATION). Дело в том, что клиент может заказать несколько услуг, и чтобы они все принадлежали одной операции нужна таблица TSERVICE.

Если что-то не понятно, перечитайте выше изложенный текст. Если Вы уже это сделали и не раз, тогда читайте дальше – скоро все встанет на свои места!

Чтобы вообще все стало понятно, посмотрите диаграмму (рисунок 12.7), на которой изображены все семь таблиц и показаны связи между ними.

Рисунок 12.7 – ER-диаграмма.

Приведенная диаграмма выполнена в нотации IDEF1X (Integration Definition for Function Modeling), разработанной Т.Рэмей.

В этой нотации:

- поля, определяющие первичный ключ, размещаются наверху списка и отделяются от других полей горизонтальной чертой;

- связи таблиц типа «один-ко-многим» изображают линиями, которые на одном конце заканчиваются кружком. Связь «один-ко-многим» на примере таблиц «CLIENT» и «CAR» означает, что у одного клиента может быть несколько автомобилей, т.е. запись о данном клиенте в «CLIENT» одна, а в «CAR» может быть несколько записей, относящихся к данному клиенту!

- связи таблиц типа «один-к-одному» изображают линиями. Это жесткие связи таблиц, то есть любой одной записи из первой таблице соответствует одна определенная запись из второй. Как ты уже заметил, в нашей диаграмме таких связей нет, они могли быть, если б мы разбили таблицу «PERSONAL» на две, выделив в отдельную таблицу список дат рождения, но это крайне дурацкая затея :) а потому она отметается!

Наша диаграмма еще с 1976 года стала называться ER-диаграммой (Entity-Relationship, сущность-связь) – стандартный способ детализации хранилищ данных.

С постановкой задачи разобрались! Теперь за практику!

Определение типов данных таблиц

Назначая типы данных полям таблиц, можно использовать свои типы – домены. Это удобно, если имеются одинаковые поля в нескольких таблицах. Кроме того, использование доменов гарантирует реализацию соединения таблиц, а значит, поддержку ссылочной целостности.

Введите в окне Interactive SQL следующий SQL-скрипт:

CREATE DOMAIN dnDB AS DATE

CHECK (VALUE <= 'TODAY');

commit;

Эти строки означают, что мы создаем домен с именем "dnDB", тип данных: дата и накладываем ограничения: значение должно быть меньше либо равно сегодняшней дате.

Команда commit завершает транзакцию, которую неявно стартует утилита Interactive SQL. Противоположная ей команда rollback, которая позволяет делать откат, то есть если Вы удалите запись из таблицы, то можете ее вернуть, написав в окне Interactive SQL:

rollback;

и нажав CTRL+E.

Ну, это так к слову…

Должно получиться вот так (рисунок 12.8):

Рисунок 12.8 – Написанный SQL-скрипт в окне Interactive SQL

Теперь нажмите кнопку либо сочетание клавиш: CTRL+E. Если ошибок нет, тогда у Вас в базе появится свеженький домен :)

Продолжим создавать наши домены.

Теперь пишите следующий код:

CREATE DOMAIN dnData AS DATE

NOT NULL;

commit;

CREATE DOMAIN dnFIO AS CHAR(40);

commit;

CREATE DOMAIN dnTEL AS CHAR(20);

commit;

CREATE DOMAIN dnNum AS INT

CHECK (VALUE > 0)

NOT NULL;

commit;

CREATE DOMAIN dnNOTE AS CHAR(150);

commit;

CREATE DOMAIN dnNAME AS CHAR(30);

commit;

CREATE DOMAIN dnNumCar AS CHAR(10);

commit;

CREATE DOMAIN dnCost AS NUMERIC(4, 2)

CHECK (VALUE > 0)

NOT NULL;

commit;

Жмите CTRL+E, у Вас должны создаться 9 доменов (рисунок 12.9)

Рисунок 12.9 – Домены к базе данных

Создание таблиц

Введите в окне Interactive SQL следующий код:

CREATE TABLE Personal

(

PersonalID dnNum,

FIO dnFIO,

DATA_BD dnDB,

TEL dnTEL,

PRIMARY KEY (PersonalID)

); commit;

CREATE TABLE – команда создания таблицы, после команды указывается название таблицы, дальше в скобках указываются параметры таблицы, потом скобка закрывается и обязательно ставится точка с запятой.

В скобках у нас указаны четыре поля. После имени поля указывается его тип, то есть домен.

Командой PRIMARY KEY определяем первичный ключ.

Жмите кнопку «Высокого напряжения» - третья справа, вуаля, таблица создана.

Не останавливаемся на достигнутом, создаем еще 6 таблиц:

CREATE TABLE Client

(

ClientID dnNum,

FIO dnFIO,

DATA_BD dnDB,

TEL dnTEL,

PRIMARY KEY (ClientID)

); commit;

CREATE TABLE GrafWork

(

WorkID dnNum,

PersonalKod dnNum,

NOTe dnNOTE,

Data dnDATA,

PRIMARY KEY (WorkID),

FOREIGN KEY (PersonalKod) REFERENCES Personal (PersonalID)

); commit;

CREATE TABLE Car

(

CarID dnNum,

ClientKod dnNum,

Mark dnNAME,

NumCar dnNUMCAR,

NOTe dnNOTE,

PRIMARY KEY (CarID),

FOREIGN KEY (ClientKod) REFERENCES Client (ClientID)

); commit;

CREATE TABLE Service

(

ServiceID dnNum,

Name dnNAME,

Cost dnCOST,

PRIMARY KEY (ServiceID)

); commit;

CREATE TABLE Operation

(

OperID dnNum,

PersonalKod dnNum,

ClientKod dnNum,

Data dnDATA,

NOTe dnNOTE,

PRIMARY KEY (OperID),

FOREIGN KEY (PersonalKod) REFERENCES Personal (PersonalID),

FOREIGN KEY (ClientKod) REFERENCES Client (ClientID)

); commit;

CREATE TABLE TService

(

TServiceID dnNum,

OperKod dnNum,

ServiceKod dnNum,

PRIMARY KEY (TServiceID),

FOREIGN KEY (OperKod) REFERENCES Operation (OperID),

FOREIGN KEY (ServiceKod) REFERENCES Service (ServiceID)

); commit;

Команда "FOREIGN KEY (PersonalKod) REFERENCES Personal (PersonalID)" связывает таблицу GRAFWORK и PERSONAL.

Чтобы разобраться со всеми связями обратись к ER-диаграмме, на самом деле, здесь все просто.

Жмите CTRL+E, у Вас должны создаться 7 таблиц (рисунок 12.10):

Рисунок 12.10 – Таблица базы данных

СОДЕРЖАНИЕ И ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

  1. Изучить теоретические сведения.

  2. Создать базу данных, как рассказано выше, следуя все описанным шагам.

  3. Проверить работу всего проекта.

  4. Продемонстрировать преподавателю работу разработанного образца проекта.

  5. Получить от преподавателя индивидуальное задание и создать проект (по аналогии) для выполнения индивидуального задания.

  6. Подготовиться к защите лабораторной работы, которая включает в себя демонстрацию индивидуального варианта, защиту по контрольным вопросам теоретической части работы.

Вопросы выходного контроля:

  1. Расскажите, как установить и настроить Inter Base.

  2. Расскажите, как создать домен и для чего они используются

  3. Напишите синтаксис создания доменов.

  4. Расскажите, как создать таблицу

  5. Напишите синтаксис создания таблицы.

  6. Дайте определение понятию первичный ключ и как его указать в Inter Base.

  7. Дайте определение понятию вторичный ключ и как его указать в Inter Base.