Ссылочная целостность

Ссылочная целостность отражает взаимосвязь между значениями атрибутов, входящих в разные таблицы – родительские и дочерние

Ограничения ссылочной целостности предполагают:

1) Задание пары ключей родительского и внешнего ключей;

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

Требования к родительскому ключу – уникальность, либо неопределённость, поэтому в качестве родительского ключа выбирается либо первичный ключ, либо потенциальный ключ.

Значения внешнего ключа должны совпадать с одним из значений родительского ключа, либо должны быть неопределёнными. Значения внешнего ключа могут повторяться в различных картежах дочерней таблицы (конечно, если это поле не является первичным ключом для этой таблицы).

Таким образом, значения ссылочной целостности защищают базу данных от ошибок, связанных с вставкой, удалением и обновлением данных.

Например, в нашу базу данных в таблицу «Dogovor» нельзя занести информацию о новом клиенте без внесения данных об этом клиенте в таблицу «Useri», т.к. отношение «Useri» является родительским для отношения «Dogovor». А в таблицу «Ip» нельзя внести информацию о работнике, которого нет в отношении «Dogovor» (т.е. нельзя указать расходование трафика не указав причины(пользователя)).

Такая же ситуация обстоит и с удалением и обновлением картежей в отношениях.

Например, нельзя удалить картеж из отношения «Useri», так как у него имеется потомок – отношение «Dogovor», а если возникает необходимость удаления, то соответствующие картежи необходимо удалить и из всех дочерних отношений.

Аналогичная связь прослеживается и в других отношениях.


 


Выбор СУБД

Для реализации базы данных «Провайдер» я выбрал СУБД Oracle 10g. Это объясняется следующими возможностями данной СУБД:

- Поддержка языка SQL, который достаточно прост в обращении и позволяет без особых затрат времени извлекать любую информацию из базы данных;

- Real Application Cluster (RAC) обеспечивает работу одного экземпляра базы данных на нескольких узлах grid, позволяя управлять нагрузкой и гибко масштабировать систему в случае необходимости;

- Automatic Storage Management (ASM) позволяет автоматически распределять данные между имеющимися ресурсами систем хранения данных, что повышает отказоустойчивость системы и снижает общую стоимость владения (TCO);

- Производительность. Oracle Database 10g позволяет автоматически управлять уровнями сервиса и тиражировать эталонные конфигурации в рамках всей сети;

- Простые средства разработки. Новый инструмент разработки приложений HTML DB позволяет простым пользователям создавать эффективные приложения для работы с базами данных в короткие сроки;

- Самоуправление. Специальные механизмы Oracle Database 10g позволяют самостоятельно перераспределять нагрузку на систему, оптимизировать и корректировать SQL-запросы, выявлять и прогнозировать ошибки;

- Большие базы данных. Максимальный размер экземпляра базы данных Oracle может достигать 8 экзабайт;

- Недорогие серверные системы. Oracle Database 10g может использовать недорогие однопроцессорные компьютеры или модульные системы из "серверов-лезвий";

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

- Буферирование. На обработку первого запроса уходит больше времени, чем на все последующие запросы это характеризуется тем, что их повторное использование позволяет исключить физический ввод данных с дискового устройства и уменьшает время выполнения запроса, ограничение объема буфера приводит к перманентному вытеснению из него раннее считанных блоков.

- Ряд вышеперечисленных возможностей, выделяет СУБД Oracle 10g как наиболее подходящую для реализации нашей базы данных по предоставляемым возможностям.

 


 


Физическая модель

    Физическая модель данных представлена реляционными таблицами, в которых в виде кортежей реляционных отношений хранится информация. Для хранения информации выбраны Oracle 10g таблицы, как удобные в работе и распространенные. Таблицы Oracle 10g поддерживают многие приложения, что обеспечивает более высокую универсальность системы.

Таблица 5.1 Типы данных

Тип Наименование типа Размер (байты) Содержание
Текстовый Varchar каждый символ по 1 Буквы, цифры, спец. символы(%, &, #)
Числовой Integer 4 Планируется выполнять арифме тические операции над значениями из этого поля
Денежный Integer 8 Числовое поле, содержимое которого изображается с дробной частью и денежным символом
Дата Date 8 Даты до 31 декабря 9999 года.

 

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

-- Create table

create table USLUGI

(

shifr INTEGER not null,

name1 VARCHAR2(250),

stoimost FLOAT,

type_us VARCHAR2(250)

);

-- Create/Recreate primary, unique and foreign key constraints

alter table USLUGI

add primary key (SHIFR);

-- Create table

create table USLUGA_DOGOVOR

(

shifr INTEGER not null,

nomer CHAR(7) not null

)

-- Create/Recreate primary, unique and foreign key constraints

alter table USLUGA_DOGOVOR

add foreign key (SHIFR)

references USLUGI (SHIFR);

alter table USLUGA_DOGOVOR

add foreign key (NOMER)

references DOGOVOR (NOMER);

-- Create table

create table USERI

(

id      NUMBER not null,

pasport NUMBER not null,

fio     VARCHAR2(250),

registration VARCHAR2(250),

telephone VARCHAR2(250)

)

-- Create/Recreate primary, unique and foreign key constraints

alter table USERI

add unique (ID);

-- Create table

create table PROVAIDER

(

inn  NUMBER not null,

nameorg VARCHAR2(250),

adress VARCHAR2(250),

director VARCHAR2(250),

telephone NUMBER

)

-- Create/Recreate primary, unique and foreign key constraints

alter table PROVAIDER

add primary key (INN)

-- Create table

create table OPLATA

(

id_karti NUMBER not null,

data_vremya DATE,

summa  FLOAT,

id_d   CHAR(7)

)

-- Create/Recreate primary, unique and foreign key constraints

alter table OPLATA

add foreign key (ID_D)

references DOGOVOR (NOMER);

alter table OPLATA

add foreign key (ID_KARTI)

references KARTA (NOMER)

disable;

-- Create table

create table KARTA

(

nomer NUMBER not null,

summa FLOAT,

sostoyanie INTEGER,

password_k VARCHAR2(250),

inn   NUMBER

)

-- Create/Recreate primary, unique and foreign key constraints

alter table KARTA

add foreign key (INN)

references PROVAIDER (INN);

-- Create table

create table IP

(

time1     TIMESTAMP(6),

with_adress VARCHAR2(250),

with_port NUMBER,

on_adress VARCHAR2(250),

on_port   VARCHAR2(250),

bait      NUMBER,

with_interfase NUMBER,

on_interfase INTEGER,

nomer     CHAR(7)

)

-- Create/Recreate primary, unique and foreign key constraints

alter table IP

add foreign key (NOMER)

references DOGOVOR (NOMER);

-- Create table

create table DOGOVOR

(

nomer CHAR(7) not null,

date2 DATE,

date3 DATE,

inn NUMBER,

id_u NUMBER,

money FLOAT,

pass VARCHAR2(250),

status NUMBER

)

-- Create/Recreate primary, unique and foreign key constraints

alter table DOGOVOR

add primary key (NOMER)

alter table DOGOVOR

add foreign key (INN)

references PROVAIDER (INN);

alter table DOGOVOR

add foreign key (ID_U)

references USERI (ID);

-- Create table

create table DEBIT

(

time1 DATE,

money FLOAT,

why VARCHAR2(255),

id_d CHAR(7)

)

-- Create/Recreate primary, unique and foreign key constraints

alter table DEBIT

add foreign key (ID_D)

references DOGOVOR (NOMER);



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: