диплом (1094861), страница 4

Файл №1094861 диплом (Разработка программы диагностики ошибок при передаче сообщений по технологии клиент-сервер) 4 страницадиплом (1094861) страница 42018-02-16СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 4)

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

, (2.2)

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

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

Теперь рассмотрим реализацию БД БИС посредством операторов реляционной алгебры.

Таблица 2.5.

Отношение БАЗА_ОШИБОК

Проблема

Решение

Код ошибки

Описание

Вход запрещен

Сброс пароля

6

Неправильный пароль

Нет соединения

Включить модем

635

Отсутствие подключения

Ошибка соединения

Перезапустить модем

612

Превышен таймаут соединения

Отношение А

Таблица 2.6.

Отношение БАЗА_НАСТРОЕК

Проблема

Решение

Вход запрещен

Сброс пароля

Нет соединения

Включить модем

Ошибка соединения

Перезапустить модем

Отношение В

Таблица 2.7.

Отношение БАЗА_КОДОВ

Код ошибки

Описание

6

Неправильный пароль

635

Отсутствие подключения

612

Превышен таймаут соединения

Отношение С

Проекцией отношения А по атрибутам X,Y,Z, где каждый из атрибутов принадлежит отношению A, называется отношение с заголовком (X,Y,Z) и телом, содержащим множество кортежей вида (x,y,z), таких, для которых в отношении A найдутся кортежи со значением атрибута X равным x, значением атрибута Y равным y, …, значением атрибута Z равным z.

Синтаксис операции проекции:

A[X,Y,Z]

Замечание. Операция проекции дает "вертикальный срез" отношения, в котором удалены все возникшие при таком срезе дубликаты кортежей.

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

1. R1(ПРОБЛЕМА,РЕШЕНИЕ) = R2[ПРОБЛЕМА,РЕШЕНИЕ]

2. R1(КОД_ОШ,ОПИСАНИЕ) = R3[КОД_ОШ,ОПИСАНИЕ]

На языке SQL такой запрос реализуется одной командой:

SELECT БАЗА_ОШ.ПРОБЛЕМА, БАЗА_ОШ.РЕШЕНИЕ

FROM БАЗА_ОШ

WHERE

БАЗА_НАСТРОЕК.ПРОБЛЕМА= БАЗА_ОШ.ПРОБЛЕМА

AND БАЗА_НАСТРОЕК. РЕШЕНИЕ= БАЗА_ОШ.РЕШЕНИЕ;

Выводы по главе

Согласно требованиям, предъявляемым к разрабатываемому модулю, были разработаны:

  1. Интерфейс, позволяющий реализовывать БД в доступном и понятном виде, а также доступно выводить информацию о результатах диагностики сетевого подключения с сервером данных.

  2. Схема информационных потоков, позволяющая судить о связях между базами данных, с целью эффективно реализовать доступ к ним.

  3. Алгоритмы сетевой диагностики различных уровней с целью представления информации пользователям разных категорий.

ГЛАВА 3. РЕАЛИЗАЦИЯ МОДУЛЯ БИС НА ОСНОВЕ ИНСТРУМЕНТАРИЯ MS VISUAL C++

3.1. Реализация подключения базы данных через использование ODBC – драйвера

Если приложению необходимо общаться с несколькими источниками данных, для взаимодействия с каждой из баз данных было необходимо написать свой код. Для решения возникшей проблемы Microsoft и ряд других компаний создали стандартный интерфейс для получения и отправки данных источникам данных различных типов. Этот интерфейс был назван open database connectivity, или открытая связь с базами данных.

C помощью ODBC прикладные программисты могут разрабатывать приложения для использования одного интерфейса доступа к данным, не беспокоясь о тонкостях взаимодействия с несколькими источниками.

Это достигается благодаря тому, что поставщики различных баз данных создают драйверы, реализующие конкретное наполнение стандартных функций из ODBC API с учетом особенностей их продукта. Приложения используют эти функции, реализованные в соответствующем конкретному источнику данных драйвере, для унифицированного доступа к различным источникам данных.


ODBC API

ODBC API

Рис.3.1. Архитектура ODBC

MFC (Microsoft Foundation Classes - библиотека на языке C++) усовершенствовала ODBC для разработчиков приложений. Истинный интерфейс ODBC является обычным процедурным API (Интерфейс прикладного программирования - Application Programming Interface). Вместо создания простой оболочки процедурного API, разработчики MFC создали набор абстрактных классов, представляющих логические сущности в базе данных.

Рассмотрим реализацию вставки базы данных через ODBC – драйвер используя CDatabase.

Класс CDatabase представляет собой класс, который обеспечивает связь с источником данных. Под источником данных может пониматься как непосредсвенно файл, в котором находится таблица, например dBase, так и файл с многими таблицами, например Microsoft Access или сервер баз данных Oracle, MS SQL Server и т.д. Для связи с источником данных используется интерфейс ODBC.

Установка соединения

Для работы необходимо включить описание функций, которые находятся в файле afxdb.h:

// пример

#include "afxdb.h"

Для начала работы необходимо, используя класс, создать текст при помощи конструктора. В конструктор нет необходимости передавать параметры. После создания объекта с ним можно проводить различные операции. Например: открывать базу данных, устанавливать таймауты соединения , закрывать и т.д.

// Описание конструктора CDatabase();

// пример

CDatabase cdbMyDB();

У данного класса есть всего один член данных. Это m_hdbc. Он указывает на текущее соединение ODBC. Имеет смысл, только если оно установлено. Эта переменная имеет тип HDBC.

Для установки соединения необходимо вызвать функцию Open:

virtual BOOL Open( LPCTSTR lpszDSN, BOOL bExclusive = FALSE,

BOOL bReadOnly = FALSE, LPCTSTR lpszConnect = "ODBC;",

BOOL bUseCursorLib = TRUE );

throw( CDBException, CMemoryException );

Нет необходимости устанавливать все параметры, достаточно установить их только для первого. Первый параметр lpszDSN указывает на имя DNS для связи с источником данных. Эти имена находятся в настройке ODBC в панели управления на вкладке File DNS. Это имя можно установить в NULL, и тогда при выполнении программы будет предложен выбор источника.

// Пример

void CDatebaseDlg::OnOpen()

{

CDatabase cdbMyDB;

cdbMyDB.Open(NULL);

}

При указании некорректного имени, выходит сообщение о ошибке.

/ Пример

void CDatebaseDlg::OnOpen()

{

CDatabase cdbMyDB;

cdbMyDB.Open("Bad date source");

}

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

// Пример

CDatabase cdbMyDB;

try

{

cdbMyDB.Open("Bad date source");

}

catch(...)

{

AfxMessageBox("Error Open DNS");

}

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

// Пример

void CDatebaseDlg::OnOpen()

{

CDatabase cdbMyDB;

try

{

cdbMyDB.Open("MS Access 97 Database");

}

catch(...)

{

AfxMessageBox("Error Open DNS");

}

}

В случае если с источником данных файл связан, никакой информации отображено не будет. Но установку связи можно проверить, вызвав функцию IsOpen, которая вернет истинное значение в случае успеха. Эта же функция поможет при работе и ответит на вопрос – установлена связь или нет. Например, если появиться потребность в использовании одного класса CDatabase для множества различных соединений.

// Описание BOOL IsOpen( ) const;

// Пример

void CDatebaseDlg::OnOpen()

{

CDatabase cdbMyDB;

try

{

cdbMyDB.Open("MS Access 97 Database");

if (cdbMyDB.IsOpen())

AfxMessageBox("Open Base");

else

AfxMessageBox("Not Open");

}

catch(...)

{

AfxMessageBox("Error Open DNS");

}

}

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

// Описание virtual void Close( );

// Пример

void CDatebaseDlg::OnOpen()

{

CDatabase cdbMyDB;

try

{

cdbMyDB.Open("MS Access 97 Database");

if (cdbMyDB.IsOpen())

AfxMessageBox("Ok Open Base");

else

AfxMessageBox("Not Open");

cdbMyDB.Close();

}

catch(...)

{

AfxMessageBox("Error Open DNS");

}

}

Ниже описана процедура открытия с новым параметром и обработкой ошибок.

CDatabase cdbMyDB;

try

{

cdbMyDB.Open("MS Access 97 Database",TRUE);

// Если TRUE не указать, то по умолчанию FALSE

}

catch(CDBException cdbThrow)

{

AfxMessageBox(cdbThrow.m_strError);

}

3.2. Алгоритмы диагностики сетевых подключений

Для запуска подсистем проверки была создана форма функциональных клавиш запуска процедур проверки соединения.

Рис.3.2. Форма запуска проверки соединения

Проверка порта

Существует необходимость проверить какой-либо порт на возможность соединения по нему с указанным IP-адресом. Данную задачу выполнится с помощью следующего алгоритма:

Проверка наличия сетевых хостов



Проверка активности каждого сетевого порта



Вывод информации об активности каждого сетевого порта


Рис.3.3. Алгоритм проверки сетевого порта

Пингование

Еще одним способом проверки доступа к удаленному серверу является отсылка тестовых пакетов данных на шлюз сервера. Ниже представлена блок – схема алгоритма процедуры «пингования»:

Характеристики

Список файлов ВКР

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6510
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее