Смекни!
smekni.com

Разработка системы дистанционного обучения кафедры ВТИТ (стр. 7 из 10)

2.2.1 Создание схемы данных для СДО на сервере Oracle

В одной базе данных Oracle можно хранить множество разных наборов информации - множество схем. Схема - это набор объектов базы данных (таблиц, представлений, моментальных копий или снимков, индексов, последовательностей, синонимов, процедур, функций, пакетов и триггеров). Понятие схемы - это небольшая поправка к СУБД Oracle, введенная с седьмой версии. Ранее все объекты принадлежали создавшему их пользователю. По умолчанию схема аналогична подключенному в настоящее время пользователю.

Администратор базы данных (АБД) Oracle создает новую пустую схему, задавая ее имя и пароль. Для СДО на сервере в базе данных orcl создана схема sdo с паролем sdo.

Для создания новой схемы необходимо выполнить следующую команду:

CREATE USER SDO IDENTIFIED BY SDO DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS

Затем для созданного пользователя необходимо назначить права. Права задаются при помощи команды GRANT. Следующая команда задает право на создание таблиц:

GRANT CREATE TABLE TO SDO

Все команды выполняются в программе sqlplus, которая реализована как в консольном варианте, так и в виде web-интерфейса, показанного на рисунке 2.2.1.1. Каждая команда должна заканчиваться либо обратным слешем («/») , либо точкой с запятой («;»).

Рисунок 2.2.1.1 - Использование SQL*Plus через web-интерфейс

Полный код создания пользователя и назначение ему прав приведен в Приложении В.

При выполнении кода создающего схему данных необходимо осуществить вход в эту схему, следующей командой:

CONNECT SDO/SDO;


2.2.2 Используемые типы данных

Все типы данных, перечисленные в стандарте ANSI SQL92, полностью поддерживаются в Oracle. Но так же и имеются типы, которые характерны только для СУБД Oracle.

На данной стадии реализации приложения необходимо использовать три типа данных: строка, целое число и дата.

Для хранения строк переменной длины используется тип VARCHAR. При использовании данного типа резервируется реально необходимое пространство. Длина строки указывается в скобочках, за названием типа. Если длина строки не указана явно, то она полагается равной 1. Максимальное значение – 4000 символов.

Существует тип VARCHAR2, который используется только для Oracle. Основная причина введения этого типа состоит в том, что фирма-производитель декларирует неизменность этого типа в более поздних реализациях Oracle, в то время как тип VARCHAR будет соответствовать требованиям стандарта SQL.

Пример, описания строкового поля переменной длины, ограниченной 1000 символами:

varstr1 VARCHAR2(1000)

Типом VARCHAR2 будут описываться логин, ФИО, пароль, названия факультетов, специальностей, кафедр и т.п.

Тип INTEGER используется для представления целых чисел в диапазоне от -231 до 231.

Пример, описания целочисленного поля:

varint1 INTEGER

Данный тип будет использоваться для описания номера зачетной книжки, табельного номера, кода специальности, уникального кода кафедры, факультета, ученой степени, должности и роли.

Тип DATE используется для хранения даты и времени. Допускаются даты с 1 января 4712 г. до н.э. до 31 декабря 4712 г. н.э. Для формирования значения типа DATE в SQL и PL/SQL обычно используется встроенная функция ТО_DАТЕ('символьная строка даты', 'формат даты'). При определении даты без уточнения времени по умолчанию принимается время полуночи. Функция SYSDATE возвращает текущее значение даты и времени. Значение функции определяется средствами операционной системы компьютера, на котором работает сервер Oracle.

Пример, описания поля с типом дата:

birthday DATE

Наличие специального типа для хранения даты и времени позволяет поддерживать специальную арифметику дат и времен. Добавление к переменной типа DATE целого числа интерпретируется Oracle как определение более поздней даты, а вычитание выполняется как определение более ранней [6].

Типом DATE будет описываться поле «дата рождения».

2.2.3 Создание таблиц и связей между ними

Для создания таблиц существует оператор CREATE TABLE. Рассмотрим создание таблицы на примере:

CREATE TABLE Faculty (

facultyID INTEGER NOT NULL,

facultyName VARCHAR2(200) NOT NULL,

facultyShortName VARCHAR2(20) NULL

);

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

Для задания первичного ключа таблицы необходимо внести в нее изменения:

ALTER TABLE Faculty ADD ( PRIMARY KEY (facultyID));

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

Для создания связей между таблицами используются внешние ключи. Рассмотрим пример задания внешнего ключа для таблицы «Кафедры»:

ALTER TABLE Chair ADD (FOREIGN KEY (facultyID)

REFERENCES Faculty ON DELETE SET NULL);

Приведенная команда указывает, что необходимо изменить таблицу Chair, установив в качестве первичного ключа поле facultyID, которое связано с таблицей Faculty. В случае удаления факультета полю facultyID установить значение NULL.

Исходный код генерации таблиц, первичных ключей и внешних ключей приведен в Приложении Г.

2.2.4 Создание последовательностей

В Oracle отсутствует поддержка автоинкрементных полей. Но существует возможность создания последовательностей, значения которых будут уникальны. Для каждой таблицы, нуждающейся в получении уникального кода, где его не требуется указать явно (например, номер зачетной книжки или код специальности указывается явно при заполнении) создаются такие последовательности.

Пример создания последовательности:

CREATE SEQUENCE faculty_seq

- создать последовательность faculty_seq

INCREMENT BY 1

- значения увеличивать на 1

START WITH 1

- начальное значение 1

NOMAXVALUE

- отсутствует максимальное значение

MINVALUE 1

- минимальное значение равно 1

ORDER

- упорядочивать значения

;

Код генерации всех последовательностей приведен в Приложении Г.


2.2.5 Создание триггеров

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

Пример триггера:

create or replace trigger faculty_insert_trig

BEFORE INSERT on Faculty

for each row

begin

SELECT faculty_seq.nextval INTO :new.facultyID from dual;

end;

Данный код говорит о необходимости создать или заменить триггер faculty_insert_trig, который перед вставкой каждой новой записи в таблицу Faculty будет извлекать значение из последовательности faculty_seq методом nextval и добавлять в новую запись в поле facultyID.

Код генерации всех триггеров приведен в Приложении Г. Полная даталогическая схема СДО показана в Приложении Д.

2.3 Установка и настройка БАЗОВОГО программного комплекса

В системе Linux имеется пользователь «sk», который устанавливает Oracle Database 10g и Apache-Tomcat 5.5.20, а также являться владельцем этих приложений. Чтобы создать нового пользователя, необходимо запустить приложение YaST. Выбирается раздел управление пользователями и создается новый пользователь (рисунок 2.3.1).

Рисунок 2.3.1 – Создание нового пользователя

Далее на закладке «Описание», указывается домашняя директория пользователя, основная группа, к которой он относится, и дополнительные группы. После применения параметров, можно пользоваться новой учетной записью.

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

2.3.1 Контейнер Apache-Tomcat 5.5.20

Установка и настройка контейнера Apache-Tomcat не представляет затруднений. Предварительно устанавливается JDK в директорию /usr/local/jdk1.6.0. Установка производится обычным копированием файлов. Далее описываются переменные окружения в файле /etc/profile:

### Java+Tomcat ###

export JAVA_HOME="/usr/local/jdk1.6.0"

export CATALINA_HOME="/usr/local/apache-tomcat-5.5.20"

export PATH=$PATH:$JAVA_HOME/bin

После производится копирование файлов Apache-Tomcat в директорию /usr/local/apache-tomcat-5.5.20/. Задаются права владения директорией JDK и Apache-Tomcat для пользователя sk: