- •Тема 3. Архітектура субд
- •Тема 3. Архітектура субд 1
- •3.1. Використання та типові складові субд
- •3.1.1. Огляд варіанту структури субд
- •3.1.1.1. Команди мови визначення даних та обробки запитів
- •Обробка запитів
- •3.1.1.2. Процесор запитів
- •3.1.1.3. Збереження файлів на диску
- •3.1.1.4. Менеджери буферів та зберігання даних
- •3.1.1.5. Обробка транзакцій
- •3.1.1.6. Acid - властивості транзакцій
- •3.2. Субд навігаційного типу. Ієрархічні. Сітьові.
- •3.2.1. Навігаційні бази даних
- •3.2.2. Ієрархічні бази даних
- •3.2.2.1. Керуюча частина ієрархічної моделі
- •3.2.2.2. Приклади типових операторів пошуку даних
- •3.2.2.5. Відомі ієрархічні субд
- •3.2.3. Сітьові бази даних
- •3.2.3.1. Керуюча частина мережевої моделі
- •3.2.3.1. Приклади мережевих скбд
- •3.3. Субд реляційного типу.
- •3.3.1. Реляційна база даних
- •3.3.2. Відношення
- •3.3.3. Нормалізація
- •3.4. Об’єктно-орієнтовані бд.
- •3.4.2. Об'єктно-орієнтовані бд
- •3.4.2. Об'єктно-реляційні бд
- •3.4.3. Переваги моделі ообд
- •1. Визначення призначених для користувача абстракцій
- •2. Полегшене проектування деяких зв'язків
- •3. Відсутність потреби у визначенні ключів
- •4. Наявність предикатів порівняння
- •5. Менша потреба в з'єднаннях
- •6. Виграш в продуктивності -?
- •7. Підтримка версій і тривалих транзакцій
- •8. Об'єктна алгебра
- •3.4.4. Недоліки моделі ообд
- •1. Відсутність інтероперабельності між рбд і ообд
- •2. Недостатність засобів для оптимізації запитів
- •3. Відсутність засобів забезпечення запитів
- •4. Відсутність підтримки подань
- •3.4.6. Стандарт odmg.
- •3.4.7. Об'єктні розширення реляційних субд. Мова Sql-3.
- •3.4.8. Об'єктно-реляційні субд
3.4.7. Об'єктні розширення реляційних субд. Мова Sql-3.
Спроби сумістити засоби маніпулювання даними реляційної моделі і способи опису зовнішнього світу об'єктно-орієнтованої моделі отримали розвиток в мові Sql-3
Розглянемо способи визначення даних.
Розробники Sql-3 вважають, що характеристики об'єкту визначається описом рядка таблиці. Тому, вводиться спеціальна можливість опису нового типу даних:
Create type Address as object( id number , street char (30), aptno integer, city char (30), state char (2), zip integer ) ;
На основі нового типу можуть бути визначені таблиці, наприклад:
Create table Addresses of Address;
Нові типи допускається використовувати і для визначення стовпців (тобто ігнорується вимога атомарності атрибутів реляційної моделі):
Create table People ( id number, name char (30), paddress Address, birthdate date );
Спадковість визначається за допомогою посилання.
Create OR REPLACE type Employee as object( empno number, id ref Address );
Тут атрибут id є посиланням на об'єкт, що зберігається в таблиці Address. Тобто в поняттях реляційної моделі в цьому стовпці повинен бути записаний зовнішній ключ, що вказує на один з рядків таблиці Address. Насправді, в Sql-3 передбачається, що кожен об'єкт має унікальний ідентифікатор - OID, саме він використовується при створенні посилань на об'єкти.
create or replace type address_type
as object
(city varchar2(30),
street varchar2(30),
state varchar2(2),
zip number)
/
Type created.
create or replace type person_type
as object
(name varchar2 (30) ,
dob date,
home_address address_type,
work_address address_type)
/
Type created.
create table people of person_type
/
Table created.
Name Type
NAME VARCHAR2 (30)
DOB DATE
HOME_ADDRESS ADDRESS TYPE
WORK ADDRESS ADDRESS TYPE
Використовуємо створений тип
create table people
(name varchar2(10),
home_address address_type,
work_address address_type
)
/
Таblе created.
Declare
l_home_address address_type;
l_work_address address_type;
Begin
l_home_address := Address_Type('123 Main S t r e e t ' , null,
'Reston', 'VA', 45678);
l_work_address :=Address_Type('l OracleWay', null,
'Redwood', 'CA', 23456);
insert into people
(name, home_address, work_address)
Values
('TomKyte', l_home_address, l_work_address);
end;
/
CREATE OR REPLACE TYPE Point AS OBJECT (
- Точка определяется своими координатами в декартовой системе координат.
х NUMBER,
у NUMBER,
- Возвращает строку символов '(х, у)'.
MEMBER FUNCTION ToString RETURN VARCHAR2,
PRAGMA RESTRICT_REFERENCES(ToString, RNDS, WNDS, RNPS, WNPS),
- Возвращает расстояние между р и текущей Point (SELF).
- Если р не определена, то по умолчанию используется (О, О).
MEMBER FUNCTION Distance(p IN Point DEFAULT Point(0, 0)) RETURN NUMBER,
PRAGMA RESTRICT_REFERENCES( Distance, RNDS, WNDS, RNPS, WNPS),
- Возвращает сумму р и текущей Point.
MEMBER FUNCTION Plus(p IN Point) RETURN Point;
PRAGMA RESTRICT_REFERENCES(Plus, RNDS, WNDS, RNPS, WNPS),
- Возвращает текущую Point * n
MEMBER FUNCTION Times(n IN NUMBER) RETURN Point,
PRAGMA RESTRICT_REFERENCES(Times, RNDS, WNDS, RNPS, WNPS)
)
