Реализация распределенной базы данных с удаленным доступом

Автор работы: Пользователь скрыл имя, 30 Ноября 2011 в 00:17, курсовая работа

Краткое описание

В дипломном проекте рассмотрены общие подходы к реализации распределенных систем обработки данных на базе технологии клиент-сервер, а также задача создания действующей информационной системы на примере системы автоматизации расчетов с абонентами АО «Связьинформ» РМ. Актуальность построения этой системы обусловлена резким ростом количества предоставляемых услуг связи, а также переходом некоторых районов на повременную систему тарификации разговоров.
В процессе написания дипломной работы автором велась разработка архитектуры информационной системы, механизма репликации данных, средств удаленного доступа и удаленного администрирования системы, структуры БД, а также некоторых компонентов клиентской части системы (справочной службы и картотеки абонентов).

Содержание работы

ВВЕДЕНИЕ 4
1. ОСНОВНЫЕ ПОДХОДЫ К ПРОЕКТИРОВАНИЮ РАСПРЕДЕЛЕННЫХ БАЗ ДАННЫХ 6
1.1 ОСНОВНЫЕ ПОНЯТИЯ ТЕОРИИ РЕЛЯЦИОННЫХ БАЗ ДАННЫХ 6
1.2 СЕРВЕР БАЗЫ ДАННЫХ 10
1.2.1 Технология и модели "клиент-сервер" 10
1.2.2 Механизмы реализации активного ядра 19
1.2.3 Хранимые процедуры 20
1.2.4 Правила (триггеры) 21
1.2.5 Механизм событий 21
1.3 ОБРАБОТКА РАСПРЕДЕЛЕННЫХ ДАННЫХ 22
1.4 ВЗАИМОДЕЙСТВИЕ С PC-ОРИЕНТИРОВАННЫМИ СУБД 30
1.5 ОБРАБОТКА ТРАНЗАКЦИЙ 33
1.6 СРЕДСТВА ЗАЩИТЫ ДАННЫХ В СУБД 37
1.7 ПРИМЕНЕНИЕ CASE-СРЕДСТВ ДЛЯ ИНФОРМАЦИОННОГО МОДЕЛИРОВАНИЯ В СИСТЕМАХ ОБРАБОТКИ ДАННЫХ . 41
2. РЕАЛИЗАЦИЯ РАСПРЕДЕЛЕННОЙ БАЗЫ ДАННЫХ С УДАЛЕННЫМ ДОСТУПОМ 43
2.1 АНАЛИЗ СУЩЕСТВУЮЩЕЙ СИСТЕМЫ 44
2.2 НОВАЯ СХЕМА ОБМЕНА ИНФОРМАЦИЕЙ 45
2.3 ВЫБОР ОПЕРАЦИОННОЙ СИСТЕМЫ 47
2.4 ВЫБОР СЕРВЕРА БАЗ ДАННЫХ 48
2.5 ВЫБОР СРЕДСТВ РАЗРАБОТКИ 55
2.6 ОРГАНИЗАЦИЯ ВЗАИМОДЕЙСТВИЯ МЕЖДУ СЕРВЕРАМИ 56
2.6.1 Выбор модели распределенной базы данных 56
2.6.2 Модель взаимодействия 56
2.6.3 Использование слоя RPC для распределенной обработки данных на платформе Windows NT 57
2.6.4 Компоненты Microsoft RPC 57
2.6.5 Механизм работы RPC 58
2.6.6 Организация логического канала передачи данных 61
2.7 ОРГАНИЗАЦИЯ ДОСТУПА УДАЛЕННЫХ ПОЛЬЗОВАТЕЛЕЙ 61
2.7.1 Необходимость удаленного доступа 61
2.7.2 Использование слоя RAS для удаленного доступа на платформе Windows NT 61
2.7.3 Обеспечение информационной безопасности при удаленном доступе 63
2.8 ПРОЕКТИРОВАНИЕ СТРУКТУРЫ БАЗЫ ДАННЫХ 63
2.9 СХЕМА РЕПЛИКАЦИИ ДАННЫХ 65
2.10 ПРОЕКТИРОВАНИЕ КОММУНИКАЦИОННОГО СЕРВЕРА 67
2.10.1 Постановка задачи 67
2.10.2 Архитектура коммуникационного сервера 68
2.10.3 Вспомогательное программное обеспечение 70
3. ТЕХНИКО-ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ 71
3.1 ПЛАН ВЫПОЛНЕНИЯ ДИПЛОМНОГО ПРОЕКТА 71
3.2 РАСЧЕТ ОЖИДАЕМОЙ ПРОДОЛЖИТЕЛЬНОСТИ ВЫПОЛНЕНИЯ РАБОТ И ИХ ДИСПЕРСИЙ 73
3.3 ПОСТРОЕНИЕ ЛЕНТОЧНОГО ГРАФИКА ВЫПОЛНЕНИЯ РАБОТЫ 74
3.4 ОПРЕДЕЛЕНИЕ ПЛАНОВОЙ СЕБЕСТОИМОСТИ НИР 76
ЗАКЛЮЧЕНИЕ 79
СПИСОК ЛИТЕРАТУРЫ 80

Содержимое работы - 1 файл

РЕАЛИЗАЦИЯ РАСПРЕДЕЛЕННОЙ БАЗЫ ДАННЫХ С УДАЛЕННЫМ ДОСТУПОМ.doc

— 1.41 Мб (Скачать файл)

ALTER TABLE SysLog

       ADD CONSTRAINT XPKSysLog PRIMARY KEY (Code); 
 

CREATE TABLE SysSettings (

       Code                 INTEGER NOT NULL,

       TimeTalksUsl         INTEGER NOT NULL,

       NullOwner            INTEGER NOT NULL

); 
 

ALTER TABLE SysSettings

       ADD CONSTRAINT XPKSysSettings PRIMARY KEY (Code); 
 

CREATE TABLE Talks (

       Code                 INTEGER NOT NULL,

       DayCode              INTEGER NOT NULL,

       Phone                INTEGER NOT NULL,

       ToPhone              INTEGER NOT NULL,

       CallTime             CALLTIME_TYPE,

       PhoneNmb             PHONE_TYPE,

       HowLong              INTEGER NOT NULL,

       ToPhoneNmb           PHONE_TYPE,

       Calculated           SMALLINT NOT NULL,

       CallDate             DATE_TYPE

); 

CREATE INDEX XAK1TalksCallDate ON Talks

(

       CallDate

); 
 

ALTER TABLE Talks

       ADD CONSTRAINT XPKTalks PRIMARY KEY (Code); 
 

CREATE TABLE TalksPay (

       Code                 INTEGER NOT NULL,

       Phone                INTEGER NOT NULL,

       TotalSum             CURR_TYPE,

       TotalLgotTime        CALLTIME_TYPE,

       TotalFullTime        CALLTIME_TYPE,

       TotalTime            COMPUTED BY (TotalLgotTime+TotalFullTime),

       CallDate             DATE_TYPE

); 
 

ALTER TABLE TalksPay

       ADD CONSTRAINT XPKTalksPay PRIMARY KEY (Code); 
 

CREATE TABLE UslCat (

       Code                 INTEGER NOT NULL,

       PKey                 INTEGER NOT NULL,

       Name                 DESCR_TYPE,

       Parent               INTEGER NOT NULL,

       BegDate              DATE_TYPE,

       EndDate              DATE_TYPE

); 

CREATE INDEX XIEUslCatName ON UslCat

(

       Name

); 

CREATE INDEX XIEUslCatParent ON UslCat

(

       Parent

); 
 

ALTER TABLE UslCat

       ADD CONSTRAINT XPKUslCat PRIMARY KEY (Code); 

CREATE TRIGGER UslCat_BUH FOR UslCat

BEFORE UPDATE  POSITION 0

AS

BEGIN 

/*     Изменение BegDate    */

IF (new.BegDate <> old.BegDate) THEN

   BEGIN

     IF (new.BegDate < old.BegDate) THEN

       BEGIN

         /*     Расширение BegDate    */

         UPDATE UslCat

          SET EndDate = new.BegDate

          WHERE ((new.BegDate BETWEEN BegDate AND EndDate)  AND (PKey = new.PKey)); 

       

       END

     ELSE

       BEGIN

         /*     Сужение BegDate     */

         UPDATE UslCat

          SET EndDate = new.BegDate

          WHERE ((EndDate = old.BegDate)  AND (PKey = new.PKey)); 
 

       END

   END 

/*     Изменение EndDate    */

IF (new.EndDate <> old.EndDate) THEN

   BEGIN

     IF (new.EndDate > old.EndDate) THEN

       BEGIN

         /*     Расширение EndDate    */

          UPDATE UslCat

          SET BegDate = new.EndDate

          WHERE ((new.EndDate BETWEEN BegDate AND EndDate)  AND (PKey = new.PKey)); 

       

       END

     ELSE

       BEGIN

         /*     Сужение EndDate     */

          UPDATE UslCat

          SET BegDate = new.EndDate

          WHERE ((BegDate = old.EndDate)  AND (PKey = new.PKey)); 
 

       END

   END 

    /*     Сборка мусора       */

    DELETE FROM UslCat

    WHERE ((BegDate >= new.BegDate) AND (EndDate <= new.EndDate) AND (PKey = new.PKey) AND (Code <> new.Code)); 
 

END ^ 
 

CREATE TRIGGER UslCat_BIH FOR UslCat

BEFORE INSERT POSITION 0

AS

BEGIN 

  DELETE FROM UslCat

  WHERE ((BegDate >= new.BegDate) AND (EndDate <= new.EndDate) AND (PKey = new.PKey)); 
 

  UPDATE UslCat

  SET BegDate = new.EndDate

  WHERE ((new.EndDate BETWEEN BegDate AND EndDate)  AND (PKey = new.PKey)); 
 

  UPDATE UslCat

  SET EndDate = new.BegDate

  WHERE ((new.BegDate BETWEEN BegDate AND EndDate)  AND (PKey = new.PKey)); 
 

END ^ 
 
 

CREATE TRIGGER UslCat_BDH FOR UslCat

BEFORE DELETE  POSITION 0

AS

BEGIN 

    UPDATE UslCat

    SET EndDate = old.EndDate

     WHERE ((EndDate = old.BegDate)  AND (PKey = old.PKey)); 

 

END ^ 
 
 
 

CREATE TABLE UslCatKeys (

       Code                 INTEGER NOT NULL

); 
 

ALTER TABLE UslCatKeys

       ADD CONSTRAINT XPKUslCatKeys PRIMARY KEY (Code); 
 

CREATE TABLE UslDivisions (

       Code                 INTEGER NOT NULL,

       Name                 DESCR_TYPE,

       PKey                 INTEGER NOT NULL,

       Parent               INTEGER NOT NULL,

       BegDate              DATE_TYPE,

       EndDate              DATE_TYPE

); 

CREATE INDEX XIEUslDivisionsname ON UslDivisions

(

       Name

); 

CREATE INDEX XIEUslDivisionsParent ON UslDivisions

(

       Parent

); 
 

ALTER TABLE UslDivisions

       ADD CONSTRAINT XPKUslDivisions PRIMARY KEY (Code); 

CREATE TRIGGER UslDivisions_BUH FOR UslDivisions

BEFORE UPDATE  POSITION 0

AS

BEGIN 

/*     Изменение BegDate    */

IF (new.BegDate <> old.BegDate) THEN

   BEGIN

     IF (new.BegDate < old.BegDate) THEN

       BEGIN

         /*     Расширение BegDate    */

         UPDATE UslDivisions

         SET EndDate = new.BegDate

          WHERE ((new.BegDate BETWEEN BegDate AND EndDate)  AND (PKey = new.PKey)); 

       

       END

     ELSE

       BEGIN

         /*     Сужение BegDate     */

         UPDATE UslDivisions

          SET EndDate = new.BegDate

          WHERE ((EndDate = old.BegDate)  AND (PKey = new.PKey)); 
 

       END

   END 

/*     Изменение EndDate    */

IF (new.EndDate <> old.EndDate) THEN

   BEGIN

     IF (new.EndDate > old.EndDate) THEN

       BEGIN

         /*     Расширение EndDate    */

          UPDATE UslDivisions

          SET BegDate = new.EndDate

          WHERE ((new.EndDate BETWEEN BegDate AND EndDate)  AND (PKey = new.PKey)); 

       

       END

     ELSE

       BEGIN

         /*     Сужение EndDate     */

          UPDATE UslDivisions

          SET BegDate = new.EndDate

          WHERE ((BegDate = old.EndDate)  AND (PKey = new.PKey)); 
 

       END

   END 

    /*     Сборка мусора       */

    DELETE FROM UslDivisions

    WHERE ((BegDate >= new.BegDate) AND (EndDate <= new.EndDate) AND (PKey = new.PKey) AND (Code <> new.Code)); 
 

END ^ 
 

CREATE TRIGGER UslDivisions_BIH FOR UslDivisions

BEFORE INSERT POSITION 0

AS

BEGIN 

  DELETE FROM UslDivisions

  WHERE ((BegDate >= new.BegDate) AND (EndDate <= new.EndDate) AND (PKey = new.PKey)); 
 

  UPDATE UslDivisions

  SET BegDate = new.EndDate

  WHERE ((new.EndDate BETWEEN BegDate AND EndDate)  AND (PKey = new.PKey)); 
 

  UPDATE UslDivisions

  SET EndDate = new.BegDate

  WHERE ((new.BegDate BETWEEN BegDate AND EndDate)  AND (PKey = new.PKey)); 
 

END ^ 
 
 

CREATE TRIGGER UslDivisions_BDH FOR UslDivisions

BEFORE DELETE  POSITION 0

AS

BEGIN 

    UPDATE UslDivisions

    SET EndDate = old.EndDate

     WHERE ((EndDate = old.BegDate)  AND (PKey = old.PKey)); 

 

END ^ 
 
 
 

CREATE TABLE UslDivisionsKeys (

       Code                 INTEGER NOT NULL

); 
 

ALTER TABLE UslDivisionsKeys

       ADD CONSTRAINT XPKUslDivisionsKeys PRIMARY KEY (Code); 
 

CREATE TABLE UslLgots (

       Code                 INTEGER NOT NULL,

       Category             INTEGER NOT NULL,

       Property             INTEGER,

       Tax                  CURR_TYPE,

       Usl                  INTEGER NOT NULL,

       NachCoeff            INTEGER NOT NULL,

       Nalog                INTEGER NOT NULL,

       BegDate              INTEGER NOT NULL,

       Info                 INTEGER NOT NULL,

       EndDate              INTEGER NOT NULL

); 
 

ALTER TABLE UslLgots

       ADD CONSTRAINT XPKUslLgots PRIMARY KEY (Code); 
 

CREATE TABLE UslProps (

       Code                 INTEGER NOT NULL,

       PKey                 INTEGER NOT NULL,

       Tag                  INTEGER NOT NULL,

       ValInteger           INTEGER,

       ValFloat             FLOAT,

       BegDate              DATE_TYPE,

       EndDate              DATE_TYPE

); 
 

ALTER TABLE UslProps

       ADD CONSTRAINT XPKUslProps PRIMARY KEY (Code); 

CREATE TRIGGER UslProps_BUH FOR UslProps

BEFORE UPDATE  POSITION 0

AS

BEGIN 

/*     Изменение BegDate    */

IF (new.BegDate <> old.BegDate) THEN

   BEGIN

     IF (new.BegDate < old.BegDate) THEN

       BEGIN

         /*     Расширение BegDate    */

Информация о работе Реализация распределенной базы данных с удаленным доступом