Объектно-реляционные субд. Введение в объектно-реляционные субд



Скачать 284.92 Kb.
страница2/6
Дата07.07.2013
Размер284.92 Kb.
ТипДокументы
1   2   3   4   5   6

Создание ОРСУБД.


Переходим сразу к реализации, постановка задачи и E/R модель находятся документе “Реляционная модель”, в разделе “Построение семантической модели”.

Реализовать эту модель можно по-разному, здесь приведены два способа.

  1. Объектно-реляционный;

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

Перед тем как создавать типы, хорошо проанализируйте свою модель, какие типы вам нужны, как и где вы будете использовать их в будущем (это просто совет). В данном примере можно создать следующие типы: carriage_type, station_type, car_type, service_type, place_type, advantage_type. Поскольку в типах нельзя создавать первичные ключи или задать какую-либо уникальность данных, то я предложу два варианта, как решить эту проблему. Первый вариант - чисто объектно-реляционный, в которой ответственность за внесение данных лежит на пользователе. Необходимо предусмотреть, чтобы данные не дублировались (нельзя было вставить одну и туже строку дважды), тип поезда м.б. либо “sp”-скорый, либо ”pass”- пассажирский, а также тип вагона, обслуживающего персонала. Для этого нужно будет написать триггеры, процедуры, также этот подход осложняется тем, что нет универсального способа загрузки данных, нельзя будет использовать Loader, как это делали в реляционном подходе. Эти запреты действуют лишь в Oracle, в стандарте SQL3 можно, следующий пример демонстрирует это:

CREATE TYPE carriage type AS( id INT NOT NULL UNIQUE,

tr_num INT,

made_in VARCHAR2(100),

type VARCHAR2(50) CHECK(type=’plas’ OR type=’comp’));
CREATE TABLE carriage( CREATE TABLE carriage(

carriage carriage type, или PRIMARY KEY id);

PRIMARY KEY id);

Реляционный подход, с использованием объектов.


Этот подход очень похож на обыкновенный реляционный подход, но с использованием типов, определенных пользователем. В данном случае сразу решается проблема с ключами как с первичными, так и с внешними. Нельзя лишь использовать check-и. Рассмотрим подробнее типы и их создание (приведены SQL команды):

//тип – вагон, который определяет номер поезда, место формирования вагона и тип вагона (plas или comp), в дальнейшем используется как тип – столбец.


CREATE TYPE carriage_type AS OBJECT( tr_num INT,

made_in VARCHAR2(100),

type VARCHAR 2(50));

/

//тип – вагон, этот тип, необходим для создания на основе его табличного типа, он отличается от carriage_type, лишь отсутствием номера поезда.

CREATE TYPE car_type AS OBJECT (made_in VARCHAR 2(100),

type VARCHAR 2(50));

/

CREATE TYPE car_table_type AS TABLE of car_type;

/

//тип – станция, будет использоваться как тип – столбец, а также на его основе будет создаваться табличный тип. Обратите внимание на содержание этого типа: город – станция, название вокзала, время прибытия, время стоянки, тип (начальная(1), конечная(2), промежуточная()), при наличии такого типа не будет необходимости в связи “Останавливается”, у каждого поезда будет иметься вложенная таблица “Остановки(stations)”.

CREATE TYPE staiton_type AS OBJECT (point VARCHAR2(100),

railst VARCHAR 2(100),

time_ar DATE,

time_st VARCHAR 2(30),

type INT);

/

//сразу создаю на основе station_type новый тип – таблицы

CREATE TYPE station_table_type AS TABLE of station_type;

/

//тип – поезд, который включает в себя тип поезда (скорый(sp) или пассажирский(pass)), название маршрута, перечень всех остановок и вагонов. В этом типе две вложенные таблицы.
CREATE TYPE train_type AS OBJECT ( type VARCHAR 2(50),

marshrut VARCHAR 2(100),

stations station_table_type,

carriages car_table_type);

/

//тип персонал – в нем находится вся информация о персонале, также типе указывается либо проводник(cond), либо машинист(driv).

CREATE TYPE service_type AS OBJECT ( fio VARCHAR 2(150),

address VARCHAR2(150),

tel VARCHAR 2(50),

type VARCHAR 2(50));

/

//тип – место, номер вагона и номер места. (car_num должен был быть ссылкой на “вагон”, но поскольку в типе, я не могу делать внешние ключи, делаю его типа int, а в дальнейшем придется для этого написать либо триггер, либо этот факт учесть в процедуре вставке, хотя вставлять место мы не будем – не имеет никакого смысла)

CREATE TYPE place_type AS OBJECT ( car_num INT,

num INT);

/

//тип – льготы

CREATE TYPE advantage_type AS OBJECT ( grup VARCHAR2(100),

persent REAL);

/

Теперь необходимо создать таблицы, также приведены SQL команды, (обратите внимание на наличие ключей, все возможности реляционного подхода используются (кроме ограничений)):

CREATE TABLE carriage( id INT PRIMARY KEY,

carriage carriage_type);
Обратите внимание на создание таблицы Train, а именно задание имен вложенным таблицам (neasted).

CREATE TABLE train( id INT PRIMARY KEY,

train train_type)

NESTED TABLE train.stations STORE AS station_table

NESTED TABLE train.carriages STORE AS car_table;
CREATE TABLE service( id INT PRIMARY KEY,

service service_type);
CREATE TABLE place( id INT PRIMARY KEY,

place place_type);
CREATE TABLE advantage( id INT PRIMARY KEY,

adv advantage_type);
CREATE TABLE t_m( id INT PRIMARY KEY,

data DATE,

tr_num REFERENCES train(id) ON DELETE CASCADE);
CREATE TABLE t_s( id INT PRIMARY KEY,

data DATE,

tr_num REFERENCES train(id ON DELETE CASCADE,

ser_num REFERENCES service(id) ON DELETE CASCADE);
CREATE TABLE c_s( id INT PRIMARY KEY,

data DATE,

car_num REFERENCES carriage(id) ON DELETE CASCADE,

ser_num REFERENCES service(id) ON DELETE CASCADE);
CREATE TABLE buying( id INT PRIMARY KEY,

data DATE,

otkuda station_type,

kuda station_type,

pl_num REFERENCES place(id) ON DELETE CASCADE,

adv_num REFERENCES advantage(id) ON DELETE SET NULL,

passport VARCHAR 2(50),

price REAL,

flag INT CHECK(flag=1 OR flag='2'));

На этом этапе создана база, теперь необходимо заполнить ее данными.
1   2   3   4   5   6

Похожие:

Объектно-реляционные субд. Введение в объектно-реляционные субд iconПодсистема управления схемами баз данных в объектно-ориентированной субд
Для этого целесообразно использовать объектно-ориентированную субд. Одной из ключевых подсистем такой субд является подсистема управления...
Объектно-реляционные субд. Введение в объектно-реляционные субд iconРеляционные субд
...
Объектно-реляционные субд. Введение в объектно-реляционные субд iconБазы данных Лектор 2010/11 уч года: д ф. м наук, профессор Кумсков М. И
В курсе обсуждаются общие вопросы систем управления базами данных (субд) и основы реляционных баз данных: введение в реляционные...
Объектно-реляционные субд. Введение в объектно-реляционные субд iconЛекция Тема: Внутренняя организация реляционных субд cтруктуры внешней памяти, методы организации индексов
Реляционные субд обладают рядом особенностей, влияющих на организацию внешней памяти. К наиболее важным особенностям можно отнести...
Объектно-реляционные субд. Введение в объектно-реляционные субд iconОбъектно-ориентированные системы
Объектно-ориентированные субд использует класс как фундаментальную абстракцию и рассматривает отношение как один из многих типов
Объектно-реляционные субд. Введение в объектно-реляционные субд iconКраткое содержание курса Теория баз данных Модели данных и языки запросов Транзакции и согласованность
Субд в прикладных системах. Основные функции субд. Взаимодействие субд с другими компонентами программного обеспечения. История развития...
Объектно-реляционные субд. Введение в объектно-реляционные субд iconУдаление субд «Yaffil» Перед установкой субд
Обращаем ваше внимание на то, что субд следует заменить на всех рабочих местах
Объектно-реляционные субд. Введение в объектно-реляционные субд iconСписок использованных источников
Аткинсон М. и др. Манифест систем объектно-ориентированных баз данных/ Аткинсон М., Бансилон Ф., ДеВитт Д., Дитрих К., Майер Д.,...
Объектно-реляционные субд. Введение в объектно-реляционные субд iconПеренос схемы базы данных и данных из субд oracle в субд ibm db2
В докладе рассматривается переход с субд oracle на субд ibm db2 в рамках разработки модуля администрирования для SmartVista Front...
Объектно-реляционные субд. Введение в объектно-реляционные субд iconPreparedStatement vs. Statement 8 CallableStatement 8 Вопросы, которые не обсуждены 9
Субд. В реальности оказывается, что некоторые объектные субд и иногда даже совсем не субд предоставляют jdbc интерфейс для работы...
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org