МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Сила воли ведет к действию, а позитивные действия формируют позитивное отношение


Как определить диапазон голоса - ваш вокал


Игровые автоматы с быстрым выводом


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


Целительная привычка


Как самому избавиться от обидчивости


Противоречивые взгляды на качества, присущие мужчинам


Тренинг уверенности в себе


Вкуснейший "Салат из свеклы с чесноком"


Натюрморт и его изобразительные возможности


Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д.


Как научиться брать на себя ответственность


Зачем нужны границы в отношениях с детьми?


Световозвращающие элементы на детской одежде


Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия


Как слышать голос Бога


Классификация ожирения по ИМТ (ВОЗ)


Глава 3. Завет мужчины с женщиной


Оси и плоскости тела человека


Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д.


Отёска стен и прирубка косяков Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу.


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

Ограничения целостности данных и их реализация





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

Под понятием безопасности определяется, что пользователю разрешается выполнить какие-либо действия над заданными данными, а под целостностью понимается то, что эти действия выполняются корректно. Сходство между этими двумя понятиями заключается в том, что СУБД должна проверить не нарушают ли действия пользователя определенных правил. Подобные правила описываются администратором баз данных на определенном языке, для этого в стандарте SQL есть специальные элементы для поддержки безопасности и целостности – это представления, хранимые процедуры и триггеры.

Необходимо определить стратегии для ограничения ссылочной целостности в базе данных для каждой из связей. Стратегии могут применяться на трех основных действиях над таблицами: на вставку, удаление или модификацию кортежей. Так, для каждой связи между 2 таблицами выбираются стратегии на удаление, вставку и модификацию для родительской и дочерней таблиц с целью дальнейшего решения о возможном использовании средств обеспечения целостности данных для реализации этих стратегий. По стандарту SQL есть 3 вида стратегий: restrict - запрещающая, cascade – каскадного обновления, удаления или вставки данных, и set null – стратегия установки null-значений в атрибутах. Если какое-либо действие не может нарушить целостность данных, то можно оставить его без определенной стратегии и не совершать при его происхождении никаких действий. Стратегии для каждой связи изображены на физической схеме и представлены на рисунке 7.

 

Рисунок 7 – Стратегии ограничения ссылочной целостности

Представление – это статические определение динамической таблицы базы данных, созданной из одной или более базовых таблиц в соответствие с критериями заданной выборки. Другими словами, представление – это кадр, через который пользователь видит данные, существующие в базе данных на текущий момент времени. С технической точки зрения представление- это хранимое в базе данных определение инструкции SELECT-запроса с заданными в ней строками и столбцами, которые должны считываться при обращении к представлению. После создания представления к нему можно обращаться, как к обычной таблице базы данных.

Помимо представлений, как способа обработки данных, реляционные СУБД могут хранить и хранимые процедуры. Хранимые процедуры позволяют использовать помимо языка SQL операторы алгоритмических языков программирования, а также средства обработки ошибочных ситуаций.

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

Примеры триггеров приведены в приложении Б.

 

Заключение

В ходе выполнения курсовой работы были решены следующие задачи:

а) была построена модель описания бизнес-процессов предметной области;

б) было осуществлено поэтапное (логическое и физическое) проектирование базы данных;

в) была продемонстрирована работа базы данных, выполнены несколько запросов;

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

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

 

Список литературы

1 Коннолли Т. Базы данных / Томас Конноли// 6 изд., – М.: «Вильямс», 2003 – 1440 с. - ISBN 5-8459-0527-3.

2 Дейт К. Введение и системы баз данных /Крис Дейт// 6 изд., – Киев: Диалектика, 1999. – 848 с. - ISBN 1-9279-2114-6.

3 Мейер, Д. Теория реляционных баз данных /Д. Мейер// – М.:Мир, 1987. – 608 с. - б ISBN 5-5579-01994-2, ISBN 1-546-15681-0.

4 Олькина Е.В. Методические указания по оформлению пояснительных записок к дипломным, курсовым проектам (работам) и отчетов по практикам в соответствии с требованиями государственных стандартов [Текст] / Олькина Е.В. – Орел: ОрелГТУ, 2007.

 

 

Приложение А

(обязательное)

Скрипт базы данных

Листинг DDL-запросов на создание таблиц и связей:

CREATE TABLE Client_info(

Passport_number VARCHAR(12) NOT NULL,

Name VARCHAR(255) NOT NULL,

Address VARCHAR(255) NOT NULL,

Sex CHAR NOT NULL)

ALTER TABLE Client_info

ADD PRIMARY KEY (Passport_number)

CREATE TABLE Detailed_calls(

ID_Detail INT NOT NULL,

Talk_time INT NOT NULL,

Date_of_call DATE NOT NULL,

Call_price REAL NOT NULL,

ID_Num INT NOT NULL,

Call_number VARCHAR(255) NOT NULL)

ALTER TABLE Detailed_calls

ADD PRIMARY KEY (ID_Detail)

CREATE TABLE Recharge_balance(

ID_Recharge INT NOT NULL,

Date_recharge DATE NOT NULL,

Recharge_sum REAL NOT NULL,

ID_Num INT NOT NULL)

ALTER TABLE Recharge_balance

ADD PRIMARY KEY (ID_Recharge)

 

CREATE TABLE Service(

ID_Service INT NOT NULL,

Title VARCHAR(255) NOT NULL,

Monthly_price REAL NOT NULL

)

ALTER TABLE Service

ADD PRIMARY KEY (ID_Service)

CREATE TABLE Tariff(

ID_Tariff INT NOT NULL,

Title VARCHAR(255) NOT NULL,

Price_per_conversation_minute REAL NOT NULL,

Sms_price REAL NOT NULL)

ALTER TABLE Tariff

ADD PRIMARY KEY (ID_Tariff)

CREATE TABLE Telephones(

ID_Num INT NOT NULL,

Phone_number VARCHAR(255) NOT NULL,

Balance REAL NOT NULL,

Is_active SMALLINT NOT NULL,

Passport_number VARCHAR(12) NOT NULL,

ID_Tariff INT NOT NULL)

ALTER TABLE Telephones

ADD PRIMARY KEY (ID_Num)

CREATE TABLE Telephones_Services(

Date_connection DATE NOT NULL,

Date_disconnection DATE NULL,

ID_Service INT NOT NULL,

ID_Num INT NOT NULL,

ID_Telephone_Services CHAR(18) NOT NULL)

ALTER TABLE Telephones_Services

ADD PRIMARY KEY (ID_Telephone_Services)

ALTER TABLE Detailed_calls

ADD FOREIGN KEY (ID_Num) REFERENCES Telephones(ID_Num)

ALTER TABLE Recharge_balance

ADD FOREIGN KEY (ID_Num) REFERENCES Telephones(ID_Num)

ALTER TABLE Telephones

ADD FOREIGN KEY (Passport_number) REFERENCES Client_info(Passport_number)

ALTER TABLE Telephones

ADD FOREIGN KEY (ID_Tariff) REFERENCES Tariff(ID_Tariff)

ALTER TABLE Telephones_Services

ADD FOREIGN KEY (ID_Service) REFERENCES Service(ID_Service)

ALTER TABLE Telephones_Services

ADD FOREIGN KEY (ID_Num) REFERENCES Telephones(ID_Num)

Листинг DML-запросов на ввод данных:

INSERT INTO "TARIFF" ("ID_TARIFF", "TITLE", "PRICE_PER_CONVERSATION_MINUTE", "SMS_PRICE") VALUES (0, 'ОБЫЧНЫЙ', 8, 2);

INSERT INTO "TARIFF" ("ID_TARIFF", "TITLE", "PRICE_PER_CONVERSATION_MINUTE", "SMS_PRICE") VALUES (1, 'ПРОФЕССИОНАЛЬНЫЙ', 6.5, 3);

INSERT INTO "TARIFF" ("ID_TARIFF", "TITLE", "PRICE_PER_CONVERSATION_MINUTE", "SMS_PRICE") VALUES (2, 'НЕОБЫЧНЫЙ', 0, 0.05);

INSERT INTO "SERVICE" ("ID_SERVICE", "TITLE", "MONTHLY_PRICE") VALUES (0, 'Безлимитные звонки', 1000);

INSERT INTO "SERVICE" ("ID_SERVICE", "TITLE", "MONTHLY_PRICE") VALUES (1, 'Безлимитные СМС', 300);

INSERT INTO "SERVICE" ("ID_SERVICE", "TITLE", "MONTHLY_PRICE") VALUES (2, 'Замени гудок', 200);

INSERT INTO "CLIENT_INFO" ("PASSPORT_NUMBER", "NAME", "ADDRESS", "SEX") VALUES ('5410185202', 'Боярский Эдуард Ахметович', 'Россия г.Орёл ул.Ленина 1-10', 'М');

INSERT INTO "CLIENT_INFO" ("PASSPORT_NUMBER", "NAME", "ADDRESS", "SEX") VALUES ('5408203000', 'Коротков Данил Сергеевич', 'Россия г.Орёл ул.Орловских Партизан 10-92', 'М');

INSERT INTO "CLIENT_INFO" ("PASSPORT_NUMBER", "NAME", "ADDRESS", "SEX") VALUES ('5280102412', 'Андреева Ольга Николаевна', 'Россия г.Орёл ул.Маринченко 5-23', 'Ж');

INSERT INTO "TELEPHONES_SERVICES" ("DATE_CONNECTION", "DATE_DISCONNECTION", "ID_SERVICE", "ID_NUM", "ID_TELEPHONE_SERVICES") VALUES ('05.12.2015', '06.12.2015', 0, 1, '0');

INSERT INTO "TELEPHONES_SERVICES" ("DATE_CONNECTION", "DATE_DISCONNECTION", "ID_SERVICE", "ID_NUM", "ID_TELEPHONE_SERVICES") VALUES ('04.10.2015', '06.10.2015', 1, 2, '1');

INSERT INTO "TELEPHONES_SERVICES" ("DATE_CONNECTION", "DATE_DISCONNECTION", "ID_SERVICE", "ID_NUM", "ID_TELEPHONE_SERVICES") VALUES ('06.12.2015', NULL, 0, 2, '2');

INSERT INTO "TELEPHONES_SERVICES" ("DATE_CONNECTION", "DATE_DISCONNECTION", "ID_SERVICE", "ID_NUM", "ID_TELEPHONE_SERVICES") VALUES ('06.15.2015', '08.15.2015', 2, 0, '3');

INSERT INTO "RECHARGE_BALANCE" ("ID_RECHARGE", "DATE_RECHARGE", "RECHARGE_SUM", "ID_NUM") VALUES (0, '05.10.2015', 50, 0);

INSERT INTO "RECHARGE_BALANCE" ("ID_RECHARGE", "DATE_RECHARGE", "RECHARGE_SUM", "ID_NUM") VALUES (1, '05.12.2015', 100, 1);

INSERT INTO "RECHARGE_BALANCE" ("ID_RECHARGE", "DATE_RECHARGE", "RECHARGE_SUM", "ID_NUM") VALUES (2, '04.15.2015', 300, 0);

INSERT INTO "RECHARGE_BALANCE" ("ID_RECHARGE", "DATE_RECHARGE", "RECHARGE_SUM", "ID_NUM") VALUES (3, '04.27.2015', 150, 2);

INSERT INTO "TELEPHONES" ("ID_NUM", "PHONE_NUMBER", "BALANCE", "IS_ACTIVE", "PASSPORT_NUMBER", "ID_TARIFF") VALUES (0, '89208010001', 100, 1, '5280102412', 0);

INSERT INTO "TELEPHONES" ("ID_NUM", "PHONE_NUMBER", "BALANCE", "IS_ACTIVE", "PASSPORT_NUMBER", "ID_TARIFF") VALUES (1, '89208010002', 30, 1, '5408203000', 1);

INSERT INTO "TELEPHONES" ("ID_NUM", "PHONE_NUMBER", "BALANCE", "IS_ACTIVE", "PASSPORT_NUMBER", "ID_TARIFF") VALUES (2, '89208010003', 0, 0, '5410185202', 2);

 

 

Приложение Б

(обязательное)





©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.