
- •664074, Иркутск, ул. Лермонтова, 83
- •2.3. Разработка концептуальной модели базы данных на основе
- •4.3. Диаграммы взаимодействия……………………………………………...39
- •5. Лабораторная работа 2…………………………………………………..…...41
- •7.1.Инспектор объектов (Object Inspector)…………………………………..49
- •7.2. Формы, модули и метод разработки «Two-Way Tools»……………….52
- •9. Лабораторная работа 3……………………………………………………….74
- •Пользователи
- •2. Проектирование логической структуры базы данных
- •2.1. Основные понятия реляционных баз данных
- •2.2. Разработка концептуальной модели базы данных на основе метода «Объект-Связь»
- •. Разработка концептуальной модели базы данных на основе метода функциональных зависимостей и ее нормализация
- •Разработка логической модели базы данных с помощью
- •Лабораторная работа 1
- •4. Разработка объектной модели задачи
- •4.1. Диаграммы сценариев
- •4.2. Диаграммы классов
- •4.3. Диаграммы взаимодействия
- •5. Лабораторная работа 2
- •6. Реляционная алгебра и язык sql
- •6.1. Основы реляционной алгебры
- •6.2. Язык sql
- •Настраиваемая cреда разработчика cBuilder
- •7.1.Инспектор объектов (Object Inspector)
- •7.2 Формы, модули и метод разработки «Two-Way Tools»
- •7.3. Палитра компонент
- •8. Разработка локального приложения баз данных
- •8.1. Создание файлов базы данных
- •8.2. Создание приложения и включение в его состав модуля данных
- •8.3.Размещение в модуле данных невизуальных компонент для доступа к бд и ее таблицам
- •Path путь к таблицам бд
- •8.4. Создание главной формы Главная форма будет содержать меню с пунктами, соответствующими выводу форм просмотра таблиц и форм вывода отчетов (выходных документов).
- •8.5. Создание форм просмотра и корректировки таблиц и размещение в них визуальных компонент
- •8.6. Разработка отчета для выдачи выходного документа
- •Выполнение запроса состоит в присвоении значения параметрам и повторном открытии запроса:
- •Лабораторная работа 3
- •Технология «клиент-сервер»
- •База данных
- •10.1. Серверная часть
- •10.2. Разработка клиентской части
- •Размещение в модуле данных невизуальных компонент для доступа к бд и ее таблицам. Разместим в модуле данных один экземпляр компоненты tibDatabase для связи с бд.
- •Разработка клиентского приложения в виде набора Web-страниц
- •11.1. Взаимодействие Internet-браузера с Web-сервером
- •11.2. Разработка html-страниц
- •Тег td. Предназначен для создания одной ячейки таблицы. Тег td должен размещаться внутри контейнера tr, который в свою очередь располагается внутри тега table.
- •11.3. Классы и пакеты классов Java
- •11.4. Обработка исключений
- •11.5. Теги jsp
- •11. 6. Сессия jsp
- •С ее помощью запросу делается доступной сессия и в ней создается 2 переменные. Следующая страница isses.Jsp
- •11. 7. Пакет java.Util в пакете java.Util сосредоточены контейнерные классы, то есть такие, которые содержат другие объекты.
- •Для добавления объекта в конец вектора существует метод addElement(добавляемый объект).
- •11. 8. Пакет sql
- •Метод executeQuery выполняет оператор sql (как правило, select) и возвращает набор данных – объект ResultSet
- •Метод executeUpdate выполняет один из операторов корректировки бд insert, update или delete
- •Метод getString возвращает значение указанного столбца текущей строки таблицы.
- •Курсовой проект
- •Варианты заданий
- •Учет товаров на складах и их потребности на торговых точках
- •Успеваемость студентов
- •Ремонт бытовой техники
- •Библиотека
- •Магазины
- •Конструктор
- •Учет наличия товара на складе
- •Отдел кадров
- •Учет выполнения лабораторных работ
- •Предприятие
- •Студенты
- •Изготовление деталей
- •Потребность в лекарствах
- •Подписка.
- •8. Сайт http://www.Citforum.Ru/database/osbd/contents.Shtml. Кузнецов с.Д. Основы современных баз данных, информационно-аналитические материалы центра информационных технологий .
База данных
Рис. 12
В настоящее время разработано большое число серверов баз данных, к числу которых относятся Interbase, Oracle, Informix, Microsoft SQL, MySQL и другие.
Мы рассматриваем сервер Interbase (версия 6.0). Он имеет ряд преимуществ: не требует больших объемов памяти; кроме того, поставляется в составе пакета CBuilder в виде локальной версии, размещаемой на том же компьютере, что и приложение - клиент, и используемой для отладки, и сетевой версии, размещаемой на компьютере - сервере и используемой для промышленной эксплуатации приложения.
10.1. Серверная часть
Генерация БД на сервере с помощью утилиты ERWIN. Для того чтобы пакет ERWIN часть работы по созданию БД взял на себя, следует открыть ранее созданную логическую модель и на ее основе получить соответствующую ей физическую модель.
Пример логической модели:
При переходе к физической модели (Physical) для выбора сервера БД следует выполнить пункт основного меню Databases, Choose Database.
При этом появится окно, в котором следует выбрать нужный сервер (в нашем случае InterBase):
В логической модели рассматриваются отношения и атрибуты, а в физической – таблицы и столбцы.
Если в логической модели имена отношений и атрибутов были написаны по-русски, то необходимо в физической модели переименовать таблицы и столбцы в латинские эквиваленты. После этого следует конкретизировать размеры строковых полей:
Получится следующая физическая модель:
После этого следует выбрать пункт основного меню Tools, Forward Engineer. Появится окно, в котором следует выбрать режимы генерации операторов языка SQL. Рекомендуется отменить генерацию триггеров и исключений (Exception), генерацию видов и процедур. Затем следует нажать кнопку Report. При этом будет сгенерирован текстовый файл с расширением .sql (скрипт).
Корректировка сгенерированного текста скрипта. В результате генерации с помощью ERWIN структуры БД будет создано некоторое количество операторов языка SQL (Structured Query Language).
БД содержит различные объекты, из всего многообразия которых мы будем использовать таблицы, генераторы, исключения, просмотры и хранимые процедуры. Эти объекты называются метаданными.
Для работы с объектами существуют операторы языка SQL.
Рассмотрим эти объекты подробнее:
Таблицы. Все данные сохраняются в таблицах. Таблица - это структура данных, содержащая строки, каждая строка содержит одинаковое число столбцов. На пересечении строки и столбца находится поле. Основная мощность реляционных БД достигается за счет определения связей между таблицами.
Столбцы. Создание таблицы включает определение ее столбцов. Основные атрибуты столбца: имя столбца, тип данных столбца, разрешение иметь в столбце нулевое (NULL) значение.
Типы данных. Данные в столбцах имеют определенные типы, которые могут быть разбиты на 4 класса: числовые, символьные, даты и BLOB - двоичные данные большого размера (binary large object), которые могут содержать данные неограниченного размера. Они используются для хранения рисунков и других неструктурируемых InterBase данных.
Числовые данные подразделяются на:
целые (INTEGER),
числа с плавающей точкой(FLOAT).
Символьные данные подразделяются на:
данные фиксированного размера (CHAR(n)),
данные переменного размера (VARCHAR(n)).
Данные типа даты могут содержать значения от 1-JAN-100 до 11-DEC-5941.
Для создания таблицы БД используется оператор CREATE TABLE, который включается в текст скрипта.
В примере создается таблица JOB из 7 столбцов. Каждый столбец имеет имя и тип. Первичный ключ таблицы содержит три столбца; внешний ключ содержит один столбец JOB_COUNTRY для связи с таблицей COUNTRY по полю COUNTRY. Ограничение CHECK позволяет не пропускать записи таблицы, не удовлетворяющие условию:
CREATE TABLE JOB (JOB_CODE INTEGER NOT NULL, JOB_GRADE INTEGER NOT NULL, JOB_COUNTRY VARCHAR(20) NOT NULL, JOB_TITLE VARCHAR(25) NOT NULL, MIN_SALARY REAL NOT NULL,MAX_SALARY REAL NOT NULL, JOB_REQUIREMENT BLOB,PRIMARY KEY (JOB_CODE, JOB_GRADE, JOB_COUNTRY), FOREIGN KEY (JOB_COUNTRY) REFERENCES COUNTRY (COUNTRY), CHECK (MIN_SALARY < MAX_SALARY));
В группе CHECK можно определить условие, накладываемое на значения данных во время ввода значений в столбец:
<условие> = {VALUE <оператор> <значение>
| VALUE [NOT] BETWEEN <значение> AND <значение>
| VALUE [NOT] LIKE <значение>
| VALUE [NOT] IN (<значение> [, <значение> ...])
| VALUE IS [NOT] NULL
| VALUE [NOT] CONTAINING <значение>
| VALUE [NOT] STARTING [WITH] <значение>
| (<условие>)| NOT <условие>| < условие > OR < условие >
| < условие > AND < условие >}
<оператор> = = | < | > | <= | >= | !< | !> | <> | !=
Пример:
CHECK ((VALUE IS NULL) OR (VALUE > 1000));
Следующий пример контроля ограничивает вводимые значения четырьмя определенными значениями:
CHECK (VALUE IN ("software", "hardware", "other", "N/A"));
Следующий пример контроля позволяет только городам в Калифорнии быть введенными в столбец:
CHECK (VALUE LIKE "%, CA");
Таким образом, необходимо скрипт, сгенерированный с помощью ERWIN, пополнить операциями контроля.
Скрипт, сгенерированный ERWIN, для примера имеет вид:
/*Операторы создания таблиц с первичными и внешними ключами */
CREATE TABLE Predmet (np INTEGER NOT NULL,
namepred VARCHAR(20),
CONSTRAINT XPKPredmet PRIMARY KEY (np));
CREATE TABLE Teacher (nt INTEGER NOT NULL,
nameteacher VARCHAR(20),
CONSTRAINT XPKTeacher PRIMARY KEY (nt));
CREATE TABLE Class (ncl INTEGER NOT NULL,
nt INTEGER,
nameclass VARCHAR(3),
np INTEGER,
CONSTRAINT XPKClass PRIMARY KEY (ncl),
FOREIGN KEY (nt) REFERENCES Teacher,
FOREIGN KEY (np) REFERENCES Predmet);
CREATE TABLE Pupil (nchi INTEGER NOT NULL,
ncl INTEGER,
namechi VARCHAR(20),
ball INTEGER,
dat DATE,
CONSTRAINT XPKPupil PRIMARY KEY (nchi),
FOREIGN KEY (ncl) REFERENCES Class);
Создание БД на сервере InterBase. Общение с сервером InterBase удобно проводить интерактивно с помощью программы IBExpert. Рассматривается версия IBExpert 2.0.
При вызове на выполнение этой программы появляется окно, в котором прежде всего следует выполнить пункт меню Database, CreateDatabase:
Регистрация БД на сервере
В Interbase существует пользователь SYSDBA с паролем masterkey.
После того, как БД создана, с ней можно установить связь (пункт меню Database, Connect to Database).
После этого в левой части экрана всегда виден список объектов БД:
При выборе пункта меню Tools, Script Executive появится окно:
Следует открыть скорректированный скрипт, сгенерированный ERWIN, и выполнить его с помощью пункта меню Script, Run script.
Для создания различных объектов БД существуют пункты меню или кнопки; при создании объекта его нужно компилировать (пункт Compile) и подтвердить сделанные изменения (кнопка Commit).
Создание генераторов. Генератор - это механизм для создания уникальных значений первичных ключей при добавлении строк к таблицам. Генераторы создаются в тех случаях, когда первичный ключ является невидимым пользователю дополнительным полем.
При нажатии кнопки New Generator появляется окно:
Создание исключений. Исключение – это именованное сообщение, которое вызывается из хранимой процедуры при возникновении какой-либо ситуации. Для создания исключения нужно нажать кнопку New Exception.
Хранимые процедуры. Хранимая процедура - это программа, записанная как процедура в языке процедур InterBase, расширении SQL. Хранимые процедуры могут получать параметры от приложения и возвращать ему значения и могут вызываться из приложения.
Преимущества хранимых процедур:
они могут совместно использоваться несколькими приложениями;
при корректировке процедуры изменения автоматически отражаются на всех приложениях, использующих ее;
они выполняются сервером, а не клиентом, что сокращает сетевой трафик.
Синтаксис хранимой процедуры:
CREATE PROCEDURE имя процедуры [ (параметр тип [, параметр тип …])]
[RETURNS ( параметр тип [, параметр тип …])]
AS
<тело процедуры>;
<тело процедуры> =[ <список объявлений переменных>]
<блок>
< список объявлений переменных > =
DECLARE VARIABLE переменная тип;
[DECLARE VARIABLE переменная тип; …]
<блок> = BEGIN
<составной оператор>
[ <составной оператор> …]
END
При использовании имени переменной или параметра в операторе SQL этому имени предшествует двоеточие; в других операторах хранимой процедуры двоеточие не нужно.
Например, процедура SUB_TOT_BUDGET принимает номер отдела как входной параметр и возвращает сумму, среднее, минимальный и максимальный бюджеты:
CREATE PROCEDURE sub_tot_budget (head_dept CHAR(3))
RETURNS (tot_budget DECIMAL(12, 2), avg_budget DECIMAL(12, 2),min_budget DECIMAL(12, 2), max_budget DECIMAL(12, 2))
AS
BEGIN
SELECT SUM(budget), AVG(budget), MIN(budget), MAX(budget)FROM department WHERE head_dept = :head_dept INTO :tot_budget, :avg_budget, :min_budget, :max_budget;
SUSPEND;
END
Хранимые процедуры делятся на два типа:
процедуры выбора, которые должны возвращать один или несколько выходных параметров и могут использоваться в операторе SELECT аналогично таблице или просмотру; для возврата значений в вызывающую программу используется оператор SUSPEND.
Например:
CREATE PROCEDURE GET_EMP_PROJ (emp_no SMALLINT)
RETURNS (emp_proj SMALLINT) AS
BEGIN
FOR SELECT PROJ_ID FROM EMPLOYEE_PROJECT
WHERE EMP_NO = :emp_no INTO :emp_proj
DO
SUSPEND;/* Этот оператор возвращает указанные в SELECT значения для каждого шага цикла FOR */
END
Вызов такой процедуры происходит с помощью оператора вида
SELECT * FROM GET_EMP_PROJ(24);
процедуры выполнения, которые вызываются с помощью оператора EXECUTE PROCEDURE с возможной передачей входных параметров как констант. Такие процедуры выполняют действие, но не возвращают значений.
Например, EXECUTE PROCEDURE SUB_TOT_BUDGET (‘stt’);
В теле хранимой процедуры можно использовать операторы:
Оператор присваивания
переменная = выражение
Переход к последнему оператору END процедуры
EXIT
Повторение операторов составного блока, следующих за DO для каждой строки результата оператора SELECT
FOR оператор SELECT DO составной оператор
Пример:
FOR
SELECT DEPT_NO FROM DEPARTMENT WHERE HEAD_DEPT = :dno INTO :rdno
DO
BEGIN
EXECUTE PROCEDURE DEPT_BUDGET :rdno RETURNS :sumb;
tot = tot + sumb;
END
Проверка условия
IF (условие)
THEN составной оператор
[ELSE составной оператор]
Цикл: пока условие истинно, продолжается выполнение составного оператора.
WHILE (условие) DO составной оператор
Пример:
CREATE PROCEDURE SUM_INT (i INTEGER) RETURNS (s INTEGER)
AS
BEGIN
s = 0;
WHILE (i > 0) DO
BEGIN
s = s + i;
i = i - 1;
END
END
Оператор добавления данных к таблице:
INSERT INTO имя таблицы (столбец1, столбец2, ...) VALUES (значение1, значение2, ...);
Например:
INSERT INTO DEPARTMENT (DEPT_NO, DEPARTMENT, HEAD_DEPT, BUDGET,LOCATION,PHONE_NO)VALUES("000","CORPORATE HEADQUARTERS", NULL, 1000000, "MONTEREY","(408) 555-1234")
Для использования генератора следует вызывать функцию InterBase GEN_ID( ). Эта функция имеет два аргумента: имя вызываемого генератора и шаг изменения. Функция GEN_ID() чаще всего вызывается из процедуры, предназначенной для добавления.
CREATE PROCEDURE INS_CLASS (PNAMECLASS varchar(3),PNT INTEGER,PNP INTEGER) AS
begin
insert into class values
GEN_ID(Class,1),:pnt,:pnameclass,:pnp);
end
Оператор изменения данных в таблице:
UPDATE имя таблицы SET столбец = значение,… WHERE условие
Например:
UPDATE EMPLOYEE SET SALARY = SALARY + 2000 WHERE JOB_CODE = "Sales" AND HIRE_DATE < "01-Jan-1992"
Оператор удаления данных из таблицы:
DELETE FROM имя таблицы [WHERE условие]
Если WHERE отсутствует, то удаляются все строки.
Например:
DELETE FROM EMPLOYEE WHERE JOB_CODE = "Mngr"
Оператор выборки данных из таблиц (одной или нескольких):
SELECT [DISTINCT] столбцы или функции от столбцов FROM таблицы WHERE условие [ORDER BY столбец сортировки]
Примеры:
SELECT * FROM PHONE_LIST SELECT LAST_NAME, FIRST_NAME, PHONE_EXT FROM EMPLOYEE WHERE LAST_NAME = "Green";
SELECT COUNT(EMP_NO), MIN(HIRE_DATE), SUM(SALARY) FROM EMPLOYEE;
SELECT D.DEPARTMENT, D.MNGR_NO, E.SALARY FROM DEPARTMENT D,EMPLOYEE E WHERE D.DEPT_NO = S.DEPT_NO)ORDER BY D.DEPARTMENT;
Функции, используемые в процедурах InterBase:
AVG(значение) – вычисление среднего из числовых значений столбца или выражения:
значение - Столбец или выражение, приведенное к числовому типу.
CAST(значение AS тип данных) – преобразование значения в указанный тип данных (число в строку, строку в дату и т.д.).
COUNT (* | значение) – вычисление числа строк, которые удовлетворяют условиям запроса:
* - Вычисление числа строк в таблице
значение - Столбец или выражение.
MAX (значение) – вычисление максимального значения в столбце
значение - Столбец, константа, переменная, выражение или функция.
MIN (значение) – вычисление минимального значения в столбце
значение - Столбец, константа, переменная, выражение или функция.
SUM (значение) – вычисление суммы значений в столбце
значение - Столбец, константа, переменная, выражение или функция.
UPPER (строковое значение) – преобразование строки в верхний регистр
Для создания процедуры в IBExpert следует нажать кнопку New Procedure. Появится окно с заготовкой процедуры:
При просмотре процедуры в обычном режиме она показывается согласно синтаксису:
Ее текст можно корректировать, затем ее надо компилировать; при отсутствии ошибок выполнить нажатием кнопки Execute Procedure.
При этом появится окно, в котором будут запрашиваться значения параметров процедуры:
Таким образом следует создать процедуры добавления, изменения, удаления для всех таблиц БД и выполнить их для наполнения БД. Их заготовки можно создать, выделив любую таблицу и выбрав в контекстном меню пункт Create SUID procedures (то есть процедуры для выбора, изменения, добавления и удаления). При этом появится окно:
При этом процедуры добавления должны иметь в качестве параметра первичный ключ, принимающий любое значение. Его использование на сервере чаще всего не требуется, так как первичный ключ часто создается автоматически с помощью генератора. Однако, как увидим далее, технология разработки клиентского приложения требует передачи всех полей таблицы при добавлении записи.
Пример процедуры, вызывающей исключение:
CREATE PROCEDURE INS_TEACHER (PNAMETEACHER VARCHAR(20))
AS
declare variable v integer;
begin
select count(*) from teacher where NAMETEACHER=:PNAMETEACHER into :v;
if (v=0) then
insert into teacher values (GEN_ID(Teacher,1),:pnameteacher) ;
else exception hasteacher;
end
Создание просмотров или процедур для получения выходных документов. Просмотр - это виртуальная таблица, которая не сохраняется физически в БД, но выглядит точно как реальная таблица. Просмотр может содержать выборочные данные из одной или нескольких таблиц или других просмотров и используется для сохранения наиболее часто используемых запросов к БД.
Когда данные в базовых таблицах изменяются, просмотры, использующие эти таблицы, автоматически изменяются.
Просмотр может быть создан как:
Вертикальное подмножество столбцов одной таблицы. Например, пусть таблица JOB в БД employee.gdb имеет 8 столбцов: JOB_CODE, JOB_GRADE, JOB_COUNTRY, JOB_TITLE, MIN_SALARY, MAX_SALARY, JOB_REQUIREMENT и LANGUAGE_REQ. Следующий просмотр выводит список продаж (подмножество столбцов) для всех работ (все строки) в таблице JOB:
CREATE VIEW JOB_SALARY_RANGES AS SELECT JOB_CODE, MIN_SALARY, MAX_SALARY FROM JOB;
Горизонтальное подмножество строк из одной таблицы. Следующий просмотр выводит все колонки в таблице JOB, но только подмножество строк, в которых MAX_SALARY меньше чем $15000:
CREATE VIEW LOW_PAY AS SELECT * FROM JOB WHERE MAX_SALARY < 15000;
Комбинированное вертикальное и горизонтальное подмножество столбцов и строк из одной таблицы. Следующий просмотр выводит только столбцы JOB_CODE и JOB_TITLE и только те работы, в которых MAX_SALARY меньше чем $15000:
CREATE VIEW ENTRY_LEVEL_JOBS AS SELECT JOB_CODE, JOB_TITLE, FROM JOB WHERE MAX_SALARY < 15000;
Подмножество строк и столбцов из нескольких таблиц. Следующий просмотр показывает просмотр, созданный из таблиц JOB и EMPLOYEE. Таблица EMPLOYEE содержит 11 столбцов: EMP_NO, FIRST_NAME, LAST_NAME, PHONE_EXT, HIRE_DATE, DEPT_NO, JOB_CODE, JOB_GRADE, JOB_COUNTRY, SALARY, FULL_NAME. Просмотр выводит два столбца из таблицы JOB и два столбца из таблицы EMPLOYEE и только те строки, в которых SALARY меньше чем $15000:
CREATE VIEW ENTRY_LEVEL_WORKERS AS SELECT JOB_CODE, JOB_TITLE, FIRST_NAME, LAST_NAME FROM JOB, EMPLOYEE WHERE JOB.JOB_CODE = EMPLOYEE.JOB_CODE AND SALARY < 15000;
Для создания нового просмотра в IB Expert следует нажать кнопку New View. При этом появится заготовка нового просмотра:
Можно увидеть данные в просмотре (закладка Data).
В ряде случаев, когда выходной документ выдается в зависимости от параметров, представление не дает эффекта и следует воспользоваться хранимой процедурой выполнения.
Создание пользователей и присвоение им привилегий. Можно создать нового пользователя с помощью пункта меню Tools, User Manager:
При добавлении нового пользователя появляется окно, в котором необходимо указать имя пользователя и его пароль, повторив его:
Необходимо создать столько пользователей, сколько действующих лиц описано в диаграмме Use Case в пакете Rational Rose при описании объектной модели задачи.
Пользователи нужны для присвоения им уникальных привилегий – прав на доступ к определенным таблицам для выполнения корректировки и/или просмотра и к определенным процедурам.
Информация о пользователях сохраняется в файле isc4.gdb, который расположен на компьютере, где установлен сервер Interbase (обычно в папке Program Files\Borland|Interbase).
Для присвоения пользователю привилегий нужно выбрать функцию IB Expert Grant Manager. В появившемся окне для выбранного пользователя можно указать привилегии для каждой таблицы, представления и для каждой процедуры. Для таблиц и представлений привилегии можно назначать на все виды корректировок и на выборку, а для процедур – только на выполнение. Привилегии назначаются и отменяются нажатием курсора мыши или клавиши «пробел».