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

Автор работы: Пользователь скрыл имя, 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 Мб (Скачать файл)

   BEGIN

     IF (new.BegDate < old.BegDate) THEN

       BEGIN

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

         UPDATE Phones

          SET EndDate = new.BegDate

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

       

       END

     ELSE

       BEGIN

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

         UPDATE Phones

          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 Phones

          SET BegDate = new.EndDate

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

       

       END

     ELSE

       BEGIN

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

          UPDATE Phones

          SET BegDate = new.EndDate

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

       END

   END 

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

    DELETE FROM Phones

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

END ^ 
 

CREATE TRIGGER Phones_BIH FOR Phones

BEFORE INSERT POSITION 0

AS

BEGIN 

  DELETE FROM Phones

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

  UPDATE Phones

  SET BegDate = new.EndDate

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

  UPDATE Phones

  SET EndDate = new.BegDate

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

END ^ 
 
 

CREATE TRIGGER Phones_BDH FOR Phones

BEFORE DELETE  POSITION 0

AS

BEGIN 

    UPDATE Phones

    SET EndDate = old.EndDate

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

 

END ^ 
 
 
 

CREATE TABLE PhonesBanks (

       Code                 INTEGER NOT NULL,

       Name1                DESCR_TYPE,

       PMFO                 CHAR(12) NOT NULL,

       Name2                DESCR_TYPE,

       ELMFO                CHAR(12) NOT NULL,

       PlatCount            SMALLINT NOT NULL,

       Acc1                 CHAR(12) NOT NULL,

       Acc2                 CHAR(12) NOT NULL

); 

CREATE INDEX XIEPhonesBanksName ON PhonesBanks

(

       Name1,

       Name2

); 
 

ALTER TABLE PhonesBanks

       ADD CONSTRAINT XPKPhonesBanks PRIMARY KEY (Code); 
 

CREATE TABLE PhonesKeys (

       Code                 INTEGER NOT NULL

); 
 

ALTER TABLE PhonesKeys

       ADD CONSTRAINT XPKPhonesKeys PRIMARY KEY (Code); 
 

CREATE TABLE PhonesOwners (

       Code                 INTEGER NOT NULL,

       PKey                 INTEGER NOT NULL,

       Name1                DESCR_TYPE,

       Name2                DESCR_TYPE,

       Category             INTEGER NOT NULL,

       Bank                 INTEGER,

       Street               INTEGER NOT NULL,

       PostStation          INTEGER,

       House                CHAR(5),

       Corpus               CHAR(3),

      Flat                 CHAR(3),

       Account              CHAR(5),

       RS                   CHAR(9),

       INN                  CHAR(13),

       Nmb_Dogov            CHAR(6),

       Date_Dogov           DATE,

       BegDate              DATE_TYPE,

       EndDate              DATE_TYPE

); 
 

ALTER TABLE PhonesOwners

       ADD CONSTRAINT XPKPhonesOwners PRIMARY KEY (Code); 

CREATE TRIGGER PhonesOwners_BUH FOR PhonesOwners

BEFORE UPDATE  POSITION 0

AS

BEGIN 

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

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

   BEGIN

     IF (new.BegDate < old.BegDate) THEN

       BEGIN

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

         UPDATE PhonesOwners

          SET EndDate = new.BegDate

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

       

       END

     ELSE

       BEGIN

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

         UPDATE PhonesOwners

          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 PhonesOwners

          SET BegDate = new.EndDate

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

       

       END

     ELSE

       BEGIN

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

          UPDATE PhonesOwners

          SET BegDate = new.EndDate

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

       END

   END 

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

    DELETE FROM PhonesOwners

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

END ^ 
 

CREATE TRIGGER PhonesOwners_BIH FOR PhonesOwners

BEFORE INSERT POSITION 0

AS

BEGIN 

  DELETE FROM PhonesOwners

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

  UPDATE PhonesOwners

  SET BegDate = new.EndDate

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

  UPDATE PhonesOwners

  SET EndDate = new.BegDate

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

END ^ 
 
 

CREATE TRIGGER PhonesOwners_BDH FOR PhonesOwners

BEFORE DELETE  POSITION 0

AS

BEGIN 

    UPDATE PhonesOwners

    SET EndDate = old.EndDate

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

 

END ^ 
 
 
 

CREATE TABLE PhonesOwnersKeys (

       Code                 INTEGER NOT NULL,

       InRest               CURR_TYPE,

       OutRest              CURR_TYPE,

       NDolg                INTEGER NOT NULL

); 
 

ALTER TABLE PhonesOwnersKeys

       ADD CONSTRAINT XPKPhonesOwnersKeys PRIMARY KEY (Code); 
 

CREATE TABLE PhonesPostStations (

       Code                 INTEGER NOT NULL,

       Name                 DESCR_TYPE,

       Region               INTEGER NOT NULL,

       PostIndex            CHAR(6) NOT NULL,

       PostNmb              CHAR(6) NOT NULL

); 

CREATE UNIQUE INDEX XAKPhonesPostStationsIndex ON PhonesPostStations

(

       PostIndex

); 

CREATE UNIQUE INDEX XAKPhonesPostStationsPostNmb ON PhonesPostStations

(

       PostNmb

); 

CREATE INDEX XIEPhonesPostStationsName ON PhonesPostStations

(

       Name

); 
 

ALTER TABLE PhonesPostStations

       ADD CONSTRAINT XPKPhonesPostStations PRIMARY KEY (Code); 
 

CREATE TABLE PhonesRegions (

       Code                 INTEGER NOT NULL,

       Name                 DESCR_TYPE NOT NULL

); 

CREATE INDEX XIEPhonesRegionsName ON PhonesRegions

(

       Name

); 
 

ALTER TABLE PhonesRegions

       ADD CONSTRAINT XPKPhonesRegions PRIMARY KEY (Code); 
 

CREATE TABLE PhonesStations (

       Code                 INTEGER NOT NULL,

       Region               INTEGER NOT NULL,

       Name                 DESCR_TYPE NOT NULL

); 

CREATE INDEX XIEPhonesStationsName ON PhonesStations

(

       Name

); 
 

ALTER TABLE PhonesStations

       ADD CONSTRAINT XPKPhonesStations PRIMARY KEY (Code); 
 

CREATE TABLE PhonesStreets (

       Code                 INTEGER NOT NULL,

       Station              INTEGER NOT NULL,

       Region               INTEGER NOT NULL,

       Name                 DESCR_TYPE

); 

CREATE INDEX XIEPhonesStreetsName ON PhonesStreets

(

       Name

); 
 

ALTER TABLE PhonesStreets

       ADD CONSTRAINT XPKPhonesStreets PRIMARY KEY (Code); 
 

CREATE TABLE Plat (

       Code                 INTEGER NOT NULL,

       Owner                INTEGER NOT NULL,

       ToUsl                INTEGER,

       PlatDate             DATE_TYPE,

       PlatType             INTEGER NOT NULL,

       DocNmb               CHAR(12) NOT NULL

); 
 

ALTER TABLE Plat

       ADD CONSTRAINT XPKPlat PRIMARY KEY (Code); 
 

CREATE TABLE SysLog (

       Code                 INTEGER NOT NULL,

       TableName            CHAR(16) NOT NULL,

       OpType               INTEGER NOT NULL,

       NewData              CHAR(64) NOT NULL,

       OpDate               DATE NOT NULL

); 
 

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