Смекни!
smekni.com

Организация базы данных провайдера (стр. 2 из 8)

3.3.2 Целостность приложения

Ограничения целостности приложения определяют отношения, в которые пользователь может вносить изменения, связанные с удалением, обновлением и вставкой. Ведь в базе данных существуют и такие отношения, в которые изменения вноситься не должны (по крайней мере, пользователем) – эти отношения формируются один раз при создании базы данных и далее в течение долгого времени данные в них не меняются. Эти отношения называются «справочниками» (точнее, некоторые из них).

В базе данных «Провайдер» это отношения «Usluga» (хотя, возможность изменения этой таблицы реализована в приложении).

Ограничения ссылочной целостности формируются при проектировании приложения (клиентской части) к базе данных.

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

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

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

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

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

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

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

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

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

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

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

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


4 Выбор СУБД

Для реализации базы данных «Провайдер» я выбрал СУБД 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 как наиболее подходящую для реализации нашей базы данных по предоставляемым возможностям.


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

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

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

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

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

-- Create table

createtable USLUGI

(

shifr INTEGERnotnull,

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

createtable USLUGA_DOGOVOR

(

shifr INTEGERnotnull,

nomer CHAR(7) notnull

)

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

altertable USLUGA_DOGOVOR

addforeignkey (SHIFR)

references USLUGI (SHIFR);

altertable USLUGA_DOGOVOR

addforeignkey (NOMER)

references DOGOVOR (NOMER);

-- Create table

createtable USERI

(

idNUMBERnotnull,

pasport NUMBERnotnull,

fio VARCHAR2(250),

registration VARCHAR2(250),

telephone VARCHAR2(250)

)

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

altertable USERI

addunique (ID);

-- Create table

createtable PROVAIDER

(

inn NUMBERnotnull,

nameorg VARCHAR2(250),

adress VARCHAR2(250),

director VARCHAR2(250),

telephone NUMBER

)

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

altertable PROVAIDER

addprimarykey (INN)

-- Create table

createtable OPLATA

(

id_karti NUMBERnotnull,

data_vremya DATE,

summa FLOAT,

id_d CHAR(7)

)

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

altertable OPLATA

addforeignkey (ID_D)

references DOGOVOR (NOMER);

altertable OPLATA

addforeignkey (ID_KARTI)

references KARTA (NOMER)

disable;

-- Create table

createtable KARTA

(

nomer NUMBERnotnull,

summa FLOAT,

sostoyanie INTEGER,

password_k VARCHAR2(250),

inn NUMBER

)

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

altertable KARTA

addforeignkey (INN)

references PROVAIDER (INN);

-- Create table

createtable 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

altertable IP

addforeignkey (NOMER)

references DOGOVOR (NOMER);

-- Create table

createtable DOGOVOR

(

nomer CHAR(7) notnull,

date2 DATE,

date3 DATE,

inn NUMBER,

id_u NUMBER,

money FLOAT,

pass VARCHAR2(250),

status NUMBER

)

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

altertable DOGOVOR

addprimarykey (NOMER)

altertable DOGOVOR

addforeignkey (INN)

references PROVAIDER (INN);

altertable DOGOVOR

addforeignkey (ID_U)

references USERI (ID);

-- Create table

createtable DEBIT

(

time1 DATE,

money FLOAT,

why VARCHAR2(255),

id_d CHAR(7)

)

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

altertable DEBIT

addforeignkey (ID_D)

referencesDOGOVOR (NOMER);

6 Проектирование и реализация информационной системы

6.1 Описание средств, использованных при реализации

Для создания базы данных, сначала создаются таблицы с помощью средств, предлагаемых СУБД Oracle 10g :

- Создание таблицы помощью графического инструментального средства конфигурирования Oracle Database Configuration Assistant (DBCA);

- Создание таблицы шаблонов баз данных (database templates),;

- Создание таблицы путём ввода данных.

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

После того, как таблицы созданы, необходимо их связать по ключевым полям.

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

При создании запросов в СУБД Oracle 10g был использован режим SQL . Это объясняется удобством и простотой языка SQL, который представляет достаточно богатый набор средств для формирования запросов.

6.2 Тексты SQL-запросов и результаты их выполнения

Ниже приведены все SQL-запросы, использованные в процессе создания информационной системы.


1. Какой номер последнего договора?

SELECT *

FROM DOGOVOR

WHERE NOMER = (SELECT MAX(NOMER)

FROM DOGOVOR)

NOMER DATE2 DATE3 INN ID_U MONEY PASS STATUS
npi013 17.12.2010 17.12.2011 7,77778E+11 13 0 5656 1

2. Какие предоставляются тарифы? Вывести, упорядочив по шифру.