Реферат по предмету "Информатика, программирование"


Разработка программы запросов

Курсовая работа
Одесса 2010

Содержание
Введение
1 Анализ существующих решений
1.1 Операции реляционной алгебры
1.2 Оптимизация запросов
1.3 Диаграмма запроса
1.4 Создание диаграммы запроса
1.5 Программы построения планавыполнения запроса
1.6 Выводы
2 Техническое задание на разработкуобучающей программы построению запросов с использованием реляционных операций
2.1 Основание для разработки
2.2 Назначение разработки
2.3 Требования к программе
2.4 Требования к программнойдокументации
2.5 Стадии и этапы разработки
2.6 Порядок контроля и приемки
3 Проектирование программы обученияреляционной алгебре
3.1 Анализ предметной области
3.2 Структура данных
Список литературы

Введение
Реляционная алгебра описывает выполняемые над отношениями действия. Языкизапросов, построенные на основе реляционной алгебры, в современных СУБДширокого распространения не получили. Однако знание реляционной алгебрынеобходимо для понимания сути действий, происходящих при выполнении любыхзапросов к реляционным базам данных.
Значительным фактором, влияющим на производительность бизнес-приложений,является скорость выполнения их SQL-запросов. SQL-серверы предоставляютдостаточно широкие возможности улучшений. SQL-код, значительно влияющий назагрузку системы и производительность конечных пользователей, обычно можноулучшить как минимум в два раза. Однако можно найти немного советов понастройке SQL-запросов.
В литературе описывают подробные методы, подходящие для автоматизированнойоптимизации, но эти методы не адаптированы для ручной настройки. Поставщики базданных и независимые авторы хорошо описывают, как можно исследовать путь, покоторому извлекаются необходимые данные. Путь к данным называется планомвыполнения. Имея план выполнения, можно понять, почему запрос выполняется заопределенное время. Так как для выполнения реальных запросов вбизнес-приложениях могут существовать миллиарды различных путей выполнения,настройка практически бесполезна и безнадежна, если нет систематического методавыбора целевого плана.
Отсутствие информации о выборе наилучшего плана выполнения характерно длявсех поставщиков баз данных.
Обычно для решения настройки SQL применяется самое ограниченное, но темне менее наиболее широко распространенное решение —изменения в структуре базыданных (например, добавление новых индексов) или, чаще, в самом SQL-коде.Подобные изменения позволяют медленному оператору SQL выполняться быстрее безизменения его функциональности и перестройки приложения, которое используетэтот запрос. Это распространенное решение особенно привлекательно, так как оноявляется достаточно простым и у него редко появляются неожиданные побочныеэффекты.
Иногда при анализе проблемы настройки SQL обнаруживаются симптомы,которые указывают на небольшие функциональные ошибки, сопутствующие ошибкампроизводительности.
В редких случаях задачи настройки SQL нельзя решить за счет ускорениявыполнения одного запроса. Запрос может возвращать слишком много строк, иливыполняться слишком часто, чтобы достигнуть максимальной скорости, будь он дажеабсолютно оптимизированным. Для таких проблем существуют систематическиерешения на уровне приложения, изменяющие модель применения SQL-запроса.
Настройка SQL состоит из трех основных этапов:
1) понять, какой план выполнения (путь к данным, запрашиваемым вашимоператором) имеется;
2) изменить SQL или базу данных, чтобы получить выбранный планвыполнения;
3) выбрать оптимальный план выполнения.
Все производители серверов баз данных предлагают специальные инструментысоздания и просмотра планов выполнения, зачастую обладающие удобным графическиминтерфейсом. Также существуют популярные утилиты сторонних производителей,например ТОАО.
В первой главе приведено описание операций реляционной алгебры.Представлены принципы оптимизации запросов. Описано представление запроса ввиде диаграммы. А также приведено описание графических сред для просмотра планавыполнения запроса.
Во второй главе описано назначение разработанной программы, представленыее основные функции.

1Анализ существующих решений
В начале 70-х годов двадцатого века Кодд опубликовал двестатьи, в которых ввел реляционную модель данных (РМД) и реляционные языкиобработки данных.
В зависимости от характера математического аппарата, лежащегов основе языков, все языки манипулирования данными в РМД м. разделить на дваглавных класса: языки реляционной алгебры и языки реляционного исчисления.
Реляционная алгебра — это процедурный язык обработкиреляционных таблиц, то есть используется пошаговое выполнение задачи. Вреляционном исчислении запрос создается путем определения результата запроса заодин шаг.
Реляционная алгебра и реляционное исчисление логическиэквивалентны, то есть любой запрос, который можно сформулировать, пользуясьреляционной алгеброй, можно сформулировать при помощи реляционного исчисления,и наоборот. Если язык запросов имеет как минимум те же возможности, что иреляционная алгебра, он называется реляционно полным. Это означает, что любойзапрос, который можно сформулировать в реляционной алгебре, должен формулироватьсяв реляционно полном языке.
Из реляционной алгебры исходят многие термины для понятийобработки данных. А реляционное исчисление имеет важное значение по двумпричинам: оно основано на исчислении предикатов формальной логики, SQLконцептуально очень близок к нему.
1.1 Операции реляционной алгебры
Вариант реляционной алгебры, предложенный Коддом, включает всебя следующие основные операции: объединение, разность (вычитание),пересечение, декартово (прямое) произведение (или произведение), выборка(селекция, ограничение), проекция, деление и соединение.
Операции реляционной алгебры Кодда можно разделить на двегруппы: базовые теоретико-множественные и специальные реляционные. Перваягруппа операций включает в себя классические операции теории множеств:объединение, разность, пересечение и произведение. Вторая группа представляетсобой развитие обычных теоретико-множественных операций в направлении креальным задачам манипулирования данными, в ее состав входят следующие операции:проекция, селекция, деление и соединение.
Реляционные операторы объединения, пересечения и взятияразности требуют, чтобы отношения имели одинаковые заголовки. Действительно,отношения состоят из заголовка и тела. Операция объединения двух отношений естьпросто объединение двух множеств кортежей, взятых из тел соответствующихотношений [1].
Отношения называются совместимыми по объединению, если имеютодно и то же множество имен атрибутов, то есть для любого атрибута в одномотношении найдется атрибут с таким же наименованием в другом отношении, атрибутыс одинаковыми именами определены на одних и тех же доменах.
Некоторые отношения не являются совместимыми по объединению,но становятся таковыми после некоторого переименования атрибутов.
Оператор присваивания (:=) позволяет сохранить результатвычисления реляционного выражения в существующем отношении.
Отношение с тем же заголовком, что и у совместимых по типуотношений A и B, и телом, состоящим из кортежей, принадлежащих или A, или B,или обоим отношениям, называется объединением отношений A и B.
Синтаксис:
A U B
Отношение с тем же заголовком, что и у отношений A и B, ителом, состоящим из кортежей, принадлежащих одновременно обоим отношениям A иB, называется пересечением отношений A и B.
Синтаксис:
A ∩ B
Отношение с тем же заголовком, что и у совместимых по типуотношений A и B, и телом, состоящим из кортежей, принадлежащих отношению A и непринадлежащих отношению B, называется разностью отношений A и B.
Синтаксис:
A — B
Отношение (A1, A2, …, Am, B1, B2, …, Bm), заголовок которогоявляется сцеплением заголовков отношений A(A1, A2, …, Am) и B(B1, B2, …, Bm), атело состоит из кортежей, являющихся сцеплением кортежей отношений A и B:
(a1, a2, …, am, b1, b2, …, bm)
таких, что (a1, a2, …, am)Î A, (b1, b2, …,bm) Î B,
называется декартовым произведением отношений А и В.
Синтаксис:
A ´ B
Отношение с тем же заголовком, что и у отношения A, и телом,состоящим из кортежей, значения атрибутов которых при подстановке в условие C дают значение ИСТИНА,называется выборкой. С представляет собой логическое выражение, вкоторое могут входить атрибуты отношения A и/или скалярные выражения.
Синтаксис:
s (A, C)
Отношение с заголовком (X, Y, …, Z) и телом, содержащиммножество кортежей вида (x, y, …, z), таких, для которых в отношении A найдутсякортежи со значением атрибута X равным x, значением атрибута Y равным y, …,значением атрибута Z равным z, называется проекций отношения А. При выполнениипроекции выделяется «вертикальная» вырезка отношения-операнда с естественнымуничтожением потенциально возникающих кортежей-дубликатов.
Синтаксис:
A [X, Y, …, Z]
или
p A {x, y, …, z}
Операция соединения есть результат последовательногоприменения операций декартового произведения и выборки. Если в отношениях иимеются атрибуты с одинаковыми наименованиями, то перед выполнением соединениятакие атрибуты необходимо переименовать.
Синтаксис:
s ((A ´B), C)
Важными с практической точки зрения частными случаямисоединения являются эквисоединение и естественное соединение.
Операция эквисоединения характеризуется тем, что формулазадает равенство операндов. Приведенный выше пример демонстрирует частныйслучай операции эквисоединения по одному столбцу. Иногда эквисоединение двухотношений выполняется по таким столбцам, атрибуты которых в обоих отношенияхимеют соответственно одинаковые имена и домены. В этом случае говорят обэквисоединении по общему атрибуту.
Операция естественного соединения (операция NATURE JOIN) применяется к двумотношениям, имеющим общий атрибут (простой или составной). Этот атрибут вотношениях имеет одно и то же имя (совокупность имен) и определен на одном итом же домене (доменах).
Результатом операции естественного соединения являетсяотношение R, которое представляет собой проекцию эквисоединения отношений R1 иR2 по общему атрибуту на объединенную совокупность атрибутов обоих отношений.
Внешнее соединение — расширяет естественное соединение,гарантируя, что каждая запись из обеих исходных таблиц будет представлена врезультирующей таблице хотя бы один раз. Внешнее соединение выполняется в дваэтапа. Сначала выполняется естественное соединение. Затем, если какая-либострока одной из исходных таблиц не подходит ни к какой строке второй таблицы,она включается в таблицу соединения, а все дополнительные столбцы заполняютсяпустыми значениями. Обозначение: OUTER JOIN(A,B). Возможно также левое и правоесоединения, при которых в результирующую таблицу включаются только строки изодной таблицы.
Отношение с заголовком (X1, X2, …, Xn) и телом, содержащиммножество кортежей (x1, x2, …, xn), таких, что для всех кортежей (y1, y2, …,ym) Î B в отношении A(X1, X2, …, Xn, Y1, Y2, …, Ym) найдется кортеж(x1, x2, …, xn, y1, y2, …, ym), называется делением отношений.
Синтаксис:
A / B
1.2 Оптимизация запросов
Один и тот же результат запроса может быть получен СУБДразличными способами (планами выполнения запросов), которые могут существенноотличаться как по затратам ресурсов, так и по времени выполнения. Задачаоптимизации заключается в нахождении оптимального способа.
Обычно, говоря про оптимизацию в реляционных СУБД, имеют ввиду аспект оптимизации запросов, т.е. такой способ выполнения запросов, когдапо начальному представлению запроса путем его синтаксических и семантическихпреобразований вырабатывается процедурный план выполнения запроса, наиболееоптимальный при существующих в базе данных управляющих структурах.Соответствующие преобразования начального представления запроса выполняютсяспециальным компонентом СУБД — оптимизатором, и оптимальность производимого имплана запроса носит достаточно условный характер: план оптимален в соответствиис критериями, заложенными в оптимизатор; при этом, конечно, возможны отклоненияот реальной оптимальности.
Оптимизатор по правилам (rule-based) — оптимизатор,основанный на анализе жестко заданных правил. Этот оптимизатор выбирает методыдоступа на основе предположения о статичности базы данных и в соответствии сзаданной системой правил выбора методов доступа.
Оптимизатор по стоимости (cost-based optimizer) —оптимизатор, основанный на анализе накладных затрат системы. Для этогооптимизатора выбор метода доступа основан на хранимой внутренней статистике.Под статистикой понимаются точные или аппроксимированные сведения ораспределении значений данных в таблицах. СУБД может собирать статистику двумяспособами: путем оценки, основанной на произвольной выборке данных и путемточных вычислений.
Под методом доступа (access path) подразумевается варианталгоритма доступа, а под планом выполнения (execution plan) —последовательность выполняемых действий, которые обеспечивают выбранные методыдоступа. Существует два основных вида оптимизаторов:
В реляционной СУБД оптимальный план выполнения запроса — этотакая перестановка всех исходных выбираемых таблиц, реляционное соединениекоторых в выбранной последовательности, представленное в процедурном виде,может быть выполнено за минимальное число операций.
В связи с оптимизацией запросов существует достаточноеколичество проблем: проблемы преобразований запроса к более эффективномунепроцедурному представлению (логическая оптимизация), проблемы выбора набораальтернативных процедурных планов выполнения запроса, проблемы оценок стоимостивыполнения запроса по выбранному плану и т.д.
Изменение SQL-выражений на основе знаний о данных, индексах,связях таблиц для повышения эффективности их выполнения, называется коррекциейзапросов (query rewriting). Изменение предложений SQL отличается от написанияновых предложений. Для того чтобы эффективно переписывать запросы, необходимо втечение некоторого времени накопить знания о системе. Сюда относятся сведения отом, какие предложения SQL нуждаются в переписывании в связи с их частымиспользованием или использованием ими значительных ресурсов, какие данные имиобрабатываются, каковы характеристики и распределение этих данных, какиелогические условия в выражениях можно убрать или трансформировать в связи слогикой функционирования системы. При решении задач оптимизации проблемныхзапросов необходимо следовать следующим рекомендациям:
Во-первых, при необходимости доступа к значительной частистрок какой-либо таблицы полное сканирование (full scan) является болееэффективным, чем использование индексов. Граница применения данных методовдоступа в общем случае составляет 5-10% записей таблицы, к которым обращаетсязапрос. Дело в том, что для сканирования индекса и извлечения строки требуются,по крайней мере, две операции чтения для каждой строки (одна — для чтенияиндекса, другая для чтения данных из таблицы). А при полном сканированиитаблицы для извлечения строки требуется только одна операция чтения. Придоступе к большому количеству строк становится очевидной неэффективностьиспользования индекса по сравнению с полным сканированием таблицы, при которомстроки считываются непосредственно из таблицы. Для небольших таблиц полноесканирование практически всегда оказывается эффективнее использования индекса.
Во-вторых, на различных этапах выполнения запросов следуетмаксимально использовать результаты предыдущих этапов. Например, еслирезультирующий набор данных требуется отсортировать по значениям некоторогостолбца, то при выполнении операции соединения таблиц можно указать способвыполнения этой операции, при котором будет проведена сортировка этих значений.Полученные результаты будут использованы при окончательной сортировке.
В-третьих, при использовании различных видов подзапросов наоснове знаний о данных следует учитывать особенности вычисления специальныхпредикатов и применения операторов теоретико-множественных операций. Например,оператор MINUS может выполняться гораздо быстрее, чем запросы с WHERE NOT IN(SELECT) или WHERE NOT EXISTS.
Помимо таких, достаточно очевидных способов улучшениякачества запросов, можно использовать другие. Как правило, на основе опыта работыс конкретной базой данных у каждого пользователя формируется свой стильнаписания оптимальных SQL-выражений.
1.3 Диаграмма запроса
Можно представить два стиля диаграмм запросов — полные иупрощенные. Полные диаграммы включают все данные, которые потенциально могутотноситься к проблеме настройки. Упрощенные диаграммы более качественные и несодержат данных, которые обычно не требуются [Дэн Тоу].
Ниже показан простой запрос с одним соединением,иллюстрирующий все значимые элементы диаграммы запроса.
SELECT D.DepartmentJIame. E.LastJIame.E.Firstjlame FROM Employees E. Departments 0 WHEREE.Department_Id=D.Departmentjd
AND E.Exempt_Flag='Y'
AND D.US_Based_Flag='Y';
В математических терминах то, что показано на рис. 1.Х,является направленным графом. Это набор узлов и связей, причем связей частообозначаются стрелками, указывающие направление. Узлы на этой диаграммепредставлены буквами Е и D. Рядом с узлами и обоими концами каждой связи естьчисла, которые указывают дополнительные свойства узлов и связей. В терминахзапроса можно интерпретировать эти элементы диаграммы следующим образом.
Узлы
Узлы представляют таблицы или псевдонимы таблиц в разделе FROM— в примере это псевдонимы Е и D. Для удобства можно сокращать названия таблицили псевдонимов, если это не вызывает двусмысленности или недопонимания.
Связи
Связи представляют соединения между таблицами, а направленнаясвязь обозначает, что соединение гарантированно получит уникальные значения втой таблице, на которую указывает связь. В данном случае DepartmentId —первичный (уникальный) ключ в таблице Departments, поэтому у связи есть стрелкана конце, указывающем на узел D. Так как Departments не уникален в таблице Employees,на другом конце связи стрелки нет. Хотя вы можете догадаться, что DepartmentId —это первичный ключ для Departments, SQL не объявляет явно, какая сторонасоединения является первичным ключом, а какая — внешним. Необходимо проверитьиндексы или объявленные ключи, чтобы удостовериться, что Departments гарантированноуникален в таблице Departments.
Подчеркнутые числа
Подчеркнутые числа рядом с узлами обозначают долю строккаждой таблицы, удовлетворяющих условиям фильтрации для этой таблицы. Здесь подусловиями понимаются не условия соединения, а условия, относящиеся только кконкретной таблице на диаграмме SQL. На рис. 1.X 10 % строк таблицы Employeesудовлетворяют условию Exempt_Flag='Y', и 50 % строк таблицы Departments удовлетворяютусловию US_Based_Flag='Y'. Эти доли называются коэффициентами фильтрации.
Часто для одной или нескольких таблиц вообще не указаныусловия фильтрации. В этом случае для коэффициента фильтрации (К) используетсязначение 1,0, так как 100 % строк удовлетворяют (несуществующим) условиямфильтрации для этой таблицы. В подобных случаях обычно вообще не указываютсякоэффициенты фильтрации на диаграмме. Отсутствие этого числа обозначает К = 1,0для данной таблицы. Коэффициент фильтрации не может быть больше 1,0. Зачастуюможно приблизительно угадать значение коэффициентов фильтрации, зная, чтопредставляют таблицы и столбцы. Если доступны распределения реальных данных,можно найти точные значения коэффициентов фильтрации, просто получив ипроанализировав эти данные. Необходимо рассматривать каждую фильтрованнуютаблицу с операторами фильтрации, относящимися только к этой таблице, какоднотабличный запрос, и искать селективность условий фильтров.
Во время фазы разработки приложения не всегда можно точнознать, какие коэффициентов фильтрации следует ожидать во время работыприложения на реальных объемах данных. В этом случае нужно производить оценку,основываясь на знании работающего приложения, а не на малых искусственныхобъемах данных в тестовых базах данных.
Неподчеркнутые числа рядом с обоими концами связипредставляют среднее количество строк, найденных в таблице на этом концесоединения для соответствующей строки на другом конце соединения. Ониназываются коэффициентами соединения. Коэффициент соединения в началесоединения — это детальный коэффициент соединения, а на конце соединения (со стрелкой)— главный коэффициент соединения.
Главные коэффициенты соединения всегда меньше или равны 1,0,так как уникальный ключ гарантирует обнаружение нескольких главных строк дляодной детальной. Часто встречается случай, когда в детальной таблице внешнийключ обязателен и ссылочная целостность данных идеальна (что гарантируетсуществование подходящей главной строки), тогда главный коэффициент соединенияравен в точности 1,0.
Детальные коэффициенты соединения могут быть равны любомунеотрицательному числу. Они могут быть меньше 1,0, так как некоторые отношенияглавной и детальной таблиц разрешают существование нуля, одной или многихдетальных строк, причем чаще всего встречается случай «один к нулю». В примередля средней строки Employees есть соответствующая строка (с которой онасвязана) в Departments в 98 % случаев, тогда как средняя строка Departments соответствует(связывается с) 20 строкам Employees. Нужно по возможности получать этизначения из полных, реальных распределений данных. Так же, как и с коэффициентамифильтрации, может потребоваться вычисление коэффициентов соединения во времяфазы разработки приложения.
Диаграммы запросов полностью исключают любые упоминаниясписков столбцов и выражений, которые выбирает запрос (то есть все, чтонаходится между SELECT и FROM). Производительность запроса практическиполностью определяется тем, какие строки выбираются из базы данных, и какимобразом они получаются. Что делается с этими строками, какие столбцывозвращаются, и какие выражения подсчитываются — это практически несущественнодля производительности. Главное, но редкое исключение из этого правила — когдавыбираются так мало столбцов из таблицы, что база данных может выполнитьзапрос, используя только данные из индекса, совершенно не обращаясь к основнойтаблице. Иногда доступ только к индексу может существенно сэкономить ресурсы,но он мало влияет на решения, которые принимаются относительно оставшейся частиплана исполнения. Решать, нужно ли попробовать только индексный доступ, следуетв последний момент процесса настройки и только если наилучший план безприменения этой стратегии оказывается слишком медленным.
В диаграмме отсутствуют любые указания на сортировку (ORDERBY), группировку (GROUP BY) и фильтрацию после группировки (HAVING). Этиоперации практически никогда не имеют большого значения для производительностизапроса. Шаг сортировки, который они обычно включают, может влиять на скоростьвыполнения, но для изменения его стоимости мало что можно сделать, и этастоимость обычно не так велика по сравнению с производительностью плоховыполняющегося запроса.
В диаграммах запроса имена таблиц обычно заменяютсяпсевдонимами. Не имеет значения, из какой таблицы запрос считывает данные иликакие сущности хранятся в таблицах. Нужно уметь преобразовывать результатобратно в действия в исходном SQL и в базе данных (такие действия, как созданиенового индекса, например). Однако при решении абстрактной проблемы настройки,то чем более абстрактными будут названия узлов, тем лучше.
Детали условий соединения теряются, когда представляютсясоединения как простые стрелки с парой чисел, полученных откуда-то за пределамиSQL. Если известна статистика соединения, то подробности (например, столбцысоединения и как они между собой связаны) не играют роли.
Диаграмма не указывает размеры таблиц. Однако можно сделатьпредположение о размерах таблиц, исходя из детального коэффициента соединения,который находится у верхнего конца связи. Имея диаграмму запроса, необходимознать общие размеры таблиц, чтобы установить, сколько будет возвращено строк, исколько времени займет выполнение запроса. Но оказывается, что эта информацияне нужна для выяснения относительного времени выполнения различных вариантов,и, следовательно, для поиска лучшего. Это полезный результат, посколькузачастую необходимо добиться хорошего выполнения запроса не только наединственном экземпляре базы данных, но на целом диапазоне экземпляров длямножества пользователей. Для различных пользователей могут существовать таблицыразличных абсолютных размеров, но относительные размеры обычно изменяютсянесущественно, а коэффициенты соединения и фильтрации и того меньше. Вдействительности они изменяются настолько мало, что различия можноигнорировать.
Подробности условий фильтрации теряются, когда они абстрагируютсядо обыкновенных чисел. Можно выбрать оптимальный путь к данным, ничего не знаяо том, как, или по каким столбцам база данных исключает строки из результатавыполнения запроса. Необходимо только знать, насколько эффективен в числовомотношении каждый фильтр для достижения поставленных целей исключения строк. Кактолько будет обнаружен абстрактный оптимальный план, потребуется вернуться кподробным условиям фильтрации, чтобы понять, что нужно изменить. Можно изменитьиндексы для достижения оптимального пути, или изменить SQL-код, чтобы заставитьбазу данных использовать уже существующие индексы, но, в любом случае, этотфинальный шаг прост, если известно, каков оптимальный абстрактный план.
1.4 Создание диаграммы запроса
Ниже перечислены правила создания полной диаграммы запроса.
1. Начать с произвольно выбранного псевдонима таблицы израздела FROM и поместить его в середину пустой страницы. Эта таблица будетназываться центральной таблицей, подразумевая, что она будет текущей точкой,начиная с которой будут добавляться дальнейшие элементы в диаграмму запроса.
2. Найти условия соединения, соответствующие единственномузначению первичного ключа центральной таблицы. Для каждого такого соединениянарисовать стрелку, указывающую вниз, на центральную таблицу, пометив началострелки псевдонимом на противоположной стороне соединения. Если связьпредставляет внешнее соединение, добавить посередине связи острие стрелки,направленное на дополнительную таблицу.
3. Найти условия соединения, идущие от внешнего ключацентральной таблицы к первичному ключу другой таблицы, и нарисовать для такихсоединений стрелки, указывающие вниз от центральной таблицы. У нижнего концакаждой стрелки напишите псевдонимы таблиц, с которыми проводится соединение.Если связь представляет внешнее соединение, в центре связи добавить остриестрелки, указывающее на дополнительную таблицу.
4. Сместить фокус на другой, пока что не рассмотренный узел вдиаграмме и повторять шаги 2 и 3, пока не будут собраны узлы, представляющиевсе псевдонимы в разделе FROM, и стрелки, представляющие все соединения. Обычновниз на узел будет указывать только одна стрелка, поэтому придется искать новыеуказывающие вниз соединения из узлов, уже находящихся на нижнем концесоединения (со стрелкой). Так получается перевернутая древовидная структура,ниспадающая из одной детальной таблицы наверху.
5. Заполнив все узлы и связи, вписать числа для коэффициентовфильтрации и коэффициентов соединения, основываясь, если возможно, настатистике по таблицам для промышленного приложения. Если нет промышленныхданных, то постараться представить коэффициенты как можно точнее. Нетнеобходимости добавлять коэффициенты соединения рядом со связями,представляющими внешние соединения. Практически всегда для дополнительнойтаблицы внешнего соединения (сразу за ключевыми словами LEFT OUTER) условияфильтрации не указаны, поэтому коэффициент фильтрации равен 1,0, чтообозначается просто фактом отсутствия числа на диаграмме.
6. Нарисовать звездочку рядом с коэффициентом фильтрации длявсех фильтров, которые гарантированно возвращают максимум одну строку. Это нефункция, высчитанная на основе коэффициента и количества возвращенных строк изтаблицы, так как условие может в среднем возвращать одну строку, но не обязательноона будет возвращать только одну строку. Чтобы гарантировать, что максимальноеколичество возвращенных строк будет равно единице, необходимо иметь уникальныйиндекс или понятные ограничения приложения, дающие реальную гарантию.
Пример.
Имеется запрос
SELECT C.Phone_Number, C.Honorific, C.First_Name,C.Last_Name,
C.Suffix, C.AddressJD, A.AddressJD,A.Street_Address_Linel,
A.Street_Address_Line2, A.City_Name,A.State_Abbreviation, A.ZIP_Code,
DD.Deferred_Shipment_Date, OD.Item_Count.DOT.Text, OT.Text,
P.Product_Description, S.Shipment_Date
FROM Orders O, Orderjtetails OD, Products P,Customers C, Shipments S,
Addresses A, Code_Translations DOT,Code_Translations OT
WHERE UPPER(C.Last_Name) LIKE :Last_Name||'%'
AND UPPER(C.First_Name) LIKE :First_Name||'%'
AND OD.OrderID = O.Order_ID
AND O.CustomerID = C.Customer_ID
AND OD.Product_ID = P.Product_ID(+)
AND OD.Shipment_ID = S.Shipment_ID(+)
AND S.Address_ID = A.Address_ID(+)
AND O.Status_Code = OT.Code
AND DT.CodeJype = 'ORDER_STATUS'
AND OD.Status_Code = ODT.Code
AND CDT.CodeJype = 'ORDERJIETAILJTATUS
AND O.Order_Date > :Now — 366
ORDER BY C.CustomerID, O.Drder_ID DESC,S.ShipmentID, DD.Order_Detail_ID;
Построенная по вышеперечисленным правилам для данного запросадиаграмма показана на рис.1.2.
Множество подробностей, присутствующих на полных диаграммахзапросов, не обязательны, только для самых редких проблем. Для концентрации нанеобходимых элементах нужен только скелет диаграммы и приблизительные коэффициентыфильтрации. Изредка требуются коэффициенты соединений, но обычно только когдалюбой из детальных коэффициентов соединения меньше 1,5 или главный коэффициентсоединения меньше 0,9. Это, в свою очередь, значит, что меньшее количестводанных требует создания более простых диаграмм соединения. Нет необходимостиузнавать количество строк для таблиц без фильтров. На практике в многостороннихсоединениях обычно есть фильтры только для 3-5 таблиц, поэтому даже самыйсложный запрос легко изобразить на диаграмме, не используя множество запросовдля сбора статистики.
Отбросив перечисленные детали, можно упростить рис. 1.1 дорис.1.3.
1.5 Программы построения планавыполнения запроса
В различных СУБД имеются собственные средства для построенияплана выполнения запроса.
План выполнения запроса для MS SQL Server проще всегопросмотреть из SQL Server Management Studio [2]/
Для того чтобы получить информацию об ожидаемом планевыполнения запроса, можно в меню Query (Запрос) выбрать команду DisplayEstimated Execution Plan (Отобразить ожидаемый план выполнения). Если нужноузнать реальный план выполнения запроса, можно перед его выполнением установитьв том же меню параметр Include Actual Execution Plan (Включить реальный планвыполнения). В этом случае после выполнения запроса в окне результатов в SQLServer Management Studio появится еще одна вкладка Execution Plan (Планвыполнения), на которой будет представлен реальный план выполнения запроса. Принаведении указателя мыши на любой из этапов можно получить о нем дополнительнуюинформацию (рис. 1.4).
Еще одно интерактивное графическое средство, котороепозволяет администратору базы данных или разработчику писать запросы, выполнятьразличные запросы одновременно, просматривать результаты, анализировать планзапроса и получать поддержку для улучшения плана выполнения – SQL QueryAnalyzer. Опция просмотра плана выполнения графически показывает методыполучения данных, используемые оптимизатором запроса Microsoft SQL Server. Вграфическом исполнении плана используются иконки для представления специфичныхдействий и запросов в SQL Server, а не изображения в виде таблиц, созданныхинструкциями SET SNOWPLAN_ALL или SET SNOWPLAN_TEXT. Это очень полезно дляпонимания скоростных показателей запроса. Кроме того, SQL Query Analyzerпоказывает советы по дополнительным индексам и статистическим данным внеиндексируемых колонках, что улучшит возможности оптимизатора запросарационально обработать запрос. В частности, SQL Query Analyzer показывает какиестатистические данные пропущены, тем самым, заставляя оптимизатор запросадавать оценку по селективности, а затем дает возможность создать пропущенныестатистические данные.
Иконки, изображенные в графическом плане исполнения,представляют физические операторы, которые используются MS SQL Server длявыполнения запроса.
Пример
Запрос
SELECT DISTINCT t.date AS c0,
c.prefijoext AS c1,
c.numeroext AS c2,
c.checkbook AS c3
FROM Transac t (nolock)
JOIN cmpasociados c (nolock)
ON t.nrotrans = c.nrotrans
JOIN tiposcmp you (nolock)
ON c.codcmp = you.codcmp
JOIN checkbooks so (nolock)
ON c.checkbook = so.checkbook
AND t.codemp = so.codemp
WHERE T.Nrotranselim is null
AND
(
CASE
WHEN T.Codcmp
IN (
' CA', ' CC', ' CB', ' CE'
,' LR', ' LO', ' LP', ' CZ'
,' VA', ' VB', ' VC', ' YOU'
,' VZ'
)
THEN T.Nrotransaut
WHEN T.Codcmp
IN (' I', ' E', ' RD')
THEN T.Nrotransctrl
ELSE T.Nrotrans END
)
IS NOT NULL
AND (t.CodEmp IS NULL OR t.codemp = 1)
AND c.checkbook = 25
AND t.codsuc = 1
ORDER BY C2 DESC
имел следующий план исполнения в Query Analyzer (см.рис.1.5).
После применения индексов, получился план исполнения,показанный на рис.1.6.
1.6 Выводы
Для любой информационной системы с ростом объема данных можетоказаться актуальной задача повышения производительности системы. При этомадминистратор базы данных должен анализировать выполнение критических запросов.Основным средством настройки запроса является изучение его плана исполнения споследующей корректировкой запроса или структуры БД. Для эффективноговыполнения анализа запросов администратор БД должен хорошо понимать, из какихопераций состоит запрос. Основными операциями являются операции реляционнойалгебры.
В настоящее время отсутствуют обучающие программы работе среляционной алгеброй.
Следовательно, существует необходимость разработки программы,которая даст возможность получить навыки формирования процедурного планавыполнения запроса. Для этого необходимо решить следующие задачи:
·    изучитьособенности работы всех реляционных операций;
·    разработатьструктуру данных для хранения необходимой информации;
·    разработатьалгоритмы преобразования последовательности реляционных операций в запрос кСУБД для представления результата выполнения процедурного плана;
·    разработатьудобный интерфейс для формирования процедурного плана запроса;
·    разработатьобучающий и контролирующий компоненты программы.

2Техническое задание на разработку обучающей программы построениюзапросов с использованием реляционных операций
 
Обучающая программа работе с реляционными операциями предназначена дляформирования навыков построения плана выполнения запроса в процедурном виде, тоесть в виде последовательности реляционных операций. В основе программынаходится БД, позволяющая администратору программы формировать список вопросовдля выполнения обучаемыми с контролем правильности введенных результатов.
/>/>2.1 Основание для разработки
Основанием для разработки программы «Обучающая программа построениюзапросов в процедурном виде» является задание на дипломное проектирование.
/>/>/>2.2 Назначение разработки
Назначением данной программы является обучение и контроль знаний вобласти применения реляционной алгебры для построения последовательностиреляционных операций.
/>/>/>2.3 Требования к программе
Программа «Обучающая программа построению запросов в процедурном виде» должнаобеспечивать автоматизацию следующих функций:
1) формирование вопросов для обучаемых;
а) соединение с внутренней БД программы;
б) подключение БД, к которой формируются учебные запросы;
в) запись текста запроса;
г) доступ к метаданным учебной БД;
д) подключение схемы данных учебной БД в виде графического файла;
е) формирование множества операций ответа на запрос;
ж) формирование различных верных последовательностей операций;
2) прием ответа от обучаемого;
а) возможность выбора операции из заданного множества;
б) формирование списка таблиц учебной БД;
в) динамическое подключение к списку таблиц имен таблиц, которые являютсярезультатом предыдущих операций;
г) определение списка столбцов заданной таблицы;
д) подключение операндов выбранной операции;
е) изменение последовательности введенных операций;
ж) сравнение введенного ответа с эталонным множеством последовательностейопераций;
з) формирование сообщений о неправильных действиях пользователя;
3) обучающая часть;
а) возможность просмотра результата промежуточной операции запроса;
б) возможность просмотра результата запроса;
в) просмотр правильного ответа;
4) контролирующая часть;
а) формирование вопросника из имеющихся во внутренней БД запросов;
б) выставление баллов за ответ;
в) формирование итоговой оценки;
г) сохранение результатов теста;
д) сохранение введенных ответов.
5) работа с отчетами;
а) формирование сообщений о результатах теста;
б) печать списка вопросов и списка ответов.
Программа должна обеспечивать возможность ввода, хранения, обработки ивывода полученной в результате работы программы информации, а также получение отчетов,фиксирующих на бумаге или в файле результаты работы программы.
Входными данными должны быть:
информация для соединения с учебной БД;
структура таблиц учебной БД;
соединение с внутренней БД.
Ввод данных должен производиться во время работы программы с клавиатуры иконтролироваться благодаря отображению на дисплее.
Выходными данными являются:
а) множество вопросов в виде текста запроса к учебной БД;
б) множество последовательностей операций для реализации запросов;
в) последовательности операций для реализации запросов к учебной БД,введенные пользователем;
7) оценки за введенные ответы при использовании программы вконтролирующем режиме.
Выходные данные должны распечатываться на принтере, храниться в видефайла и/или записей БД программы и отображаться на экране монитора.
Надежность и устойчивость функционирования программы должны обеспечиваться:
— продуманной технологиейобработки информации;
— контролем правильностиввода входной информации;
— системойдиагностических сообщений;
— минимизацией операций,осуществляемых пользователем;
— соблюдением требованийэксплуатационной документации.
При функционированиипрограммы «Обучающая программа построению запросов в процедурном виде» должнообеспечиваться:
— решение задачи заприемлемое время;
— вывод результатовработы программы в виде выходных отчетов на принтере и отображения их на экранемонитора.
Сохранность программдолжна обеспечиваться наличием дубликатов программы и хранением программногообеспечения на внешних носителях.
Программа «Обучающаяпрограмма построению запросов в процедурном виде» требует для своегофункционирования компьютер типа IBM PC под управлением операционной системыWindows 2000 и выше.
Минимальный составтехнических средств:
-    процессор соперативным запоминающим устройством емкостью не менее 512 Мб;
-    накопитель намагнитных дисках типа «винчестер» емкостью не менее 30 Гб;
-    CD-ROM для чтенияинформации с компакт-диска;
-    монитор;
-    принтер.
Программа «Обучающаяпрограмма построению запросов в процедурном виде» реализована в виде исполняемогофайла и множества БД (внутренняя и учебные).
Язык программирования – Visual Basic 6.0.
Программа «Обучающаяпрограмма построению запросов в процедурном виде» должна удовлетворятьтребованиям используемой операционной системы, быть совместимой с системнымипрограммными средствами, обеспечивать возможность переноса самой программы иобрабатываемых данных на другие компьютеры аналогичного класса.
Контрольный пример долженобеспечивать проверку правильности и работоспособности функций программы «Обучающаяпрограмма построению запросов в процедурном виде», обеспечивать проверкуработоспособности программы в различных ситуациях.
Контрольный пример долженохватить все варианты решения, предусмотренные функциональным описанием иалгоритмами, отражать все этапы решения, демонстрировать возможности программы.
 
/>/>2.4 Требования к программной документации
Состав программнойдокументации программы «Обучающая программа построению запросов в процедурномвиде» должен быть следующим:
-  описание программы;
-  руководство пользователя;
-  функциональное описание.
Состав документов можетуточняться в процессе разработки.
/>/>/>2.5 Стадии и этапы разработки
Стадии и этапыразработки, содержание работ и сроки выполнения приведены в таблице 2.1.
/> 
2.6 Порядок контроля и приемки
В процессе разработкипрограммы «Обучающая программа построению запросов в процедурном виде» должныпроводиться: 1) проектирование и отладка программы; 2) предварительныеиспытания; 3) опытная эксплуатация; 4) ввод в действие.
Предварительные испытаниядолжны проводиться разработчиком в лабораториях кафедры системного программногообеспечения Одесского национального политехнического университета.
Опытная эксплуатацияпрограммы должна проводиться разработчиком в лабораториях кафедры системногопрограммного обеспечения с целью опробования функционирования программы вреальных условиях эксплуатации и корректировки программ и программной документациис учетом потребностей пользователя.
Продолжительность опытнойэксплуатации составляет 2 недели.
Таблица 2.1 Стадии и этапы разработкиСтадии разработки Этапы работ Содержание работ Сроки выполнения Изучение предметной области Изучение особенностей реляционных операций Исследование основных составляющих запросов и способов их реализации в виде последовательности реляционных операций 31.01.10 Техническое задание Разработка технического задания Разработка технического задания, экономическое обоснование 01.03.10 Эскизный проект Эскизное проектирование Разработка функционального описания 15.03.10 Рабочий проект Разработка прикладных программ
Реализация и отладка программ
Разработка программной документации 15.04.10 Испытания программы Проведение предварительных испытаний 07.05.10 Проведение опытной эксплуатации 21.05.10

3Проектирование программы обучения реляционной алгебре
 
3.1 Анализ предметной области
Программа предназначена для обучения применению реляционной алгебрыКодда, которая включает девять операций: объединение, пересечение, разность,произведение, выборка, создание проекций, соединение, деление и присвоение.
Первые четыре операции взяты из математической теории множеств ипрактически совпадают с операциями теории множеств. Что понятно, так какреляционные таблицы являются множествами. Следующие четыре – новые операции,относящиеся только к реляционной модели данных. Последняя – присвоение –стандартная операция компьютерного языка, дающая имя величине. В данном случаепроизводится присвоение имени новой таблице, созданной из существующих таблиц.
При выполнении операций объединения, пересечения и разности участвующие вних отношения должны удовлетворять свойству совместимости по объединению. Дваотношения совместимы по объединению (или просто совместимы), если они имеютодну и ту же степень (т.е. одно и то же число атрибутов) и совпадающиеатрибуты, причем значения атрибутов в каждой паре одинаковых атрибутов из обоихотношений должны быть элементами одного и того же домена.
Объединением двух совместимых таблиц R1 и R2 называется таблица R,состоящая из всех строк, принадлежащих хотя бы одной из таблиц R1, R2.
Пересечением двух совместимых таблиц R1 и R2 называется таблица R,состоящая из всех строк, являющихся общими для таблиц R1, R2.
Разностью двух совместимых таблиц R1 и R2 называется таблица R, состоящаятолько из тех строк таблицы R1, которые отсутствуют в таблице R2.
Декартовым произведением двух таблиц R1 и R2 (необязательно совместимых)называется таблица R, состоящая из всех таких строк, каждая из которых естьконкатенация двух строк, по одной из таблиц R1 и R2, причем на первом месте должнабыть строка из R1.
Операции объединения, пересечения и декартова произведения могут бытьобощены на произвольное число участвующих в них таблиц.
Выборка — это операция реляционной алгебры, производящая отбор строк изтаблицы на основании некоторого условия.
Создание проекций — операция реляционной алгебры, создающая новую таблицупутем исключения столбцов из существующей таблицы.
Проекция — реляционная таблица, полученная в результате созданияпроекций.
Соединение — операция реляционной алгебры, связывающая таблицы. У нееесть несколько версий:
Естественное соединение — операция соединения, связывающая таблицы, когдаобщие столбцы имеют равные значения.
Тета-соединение — это соединение с определенным условием, в которомучаствуют столбцы из каждой таблицы. Оператор сравнения может быть любой:
JOIN (A,B: X dY), где d обозначает операцию сравнения.
Если используется операция «=», то соединение также называетсяэквисоединением.
Внешнее соединение – расширяет естественное соединение, гарантируя, чтокаждая запись из обеих исходных таблиц будет представлена в результирующейтаблице хотя бы один раз. Внешнее соединение выполняется в два этапа. Сначалавыполняется обычное соединение. Затем, если какая-либо строка одной из исходныхтаблиц не подходит ни к какой строке второй таблицы, она включается в таблицусоединения, а все дополнительные столбцы заполняются пустыми значениями.Обозначение: OUTER JOIN (A,B). Возможно также левое и правое соединения, прикоторых в результирующую таблицу включаются только строки из одной таблицы.
Деление – операция реляционной алгебры, создающая новую таблицу путемвыбора строк одной таблицы, соответствующих каждой строке другой таблицы.
Программа может работать в двух режимах: обучающем и контролирующем.
В обоих режимах необходимо наличие множества вопросов. Таким образом,необходим еще один компонент программы – формирования вопросов.
Каждый вопрос представляет собой текст запроса к учебной БД. Пользователюдля ввода ответа на вопрос необходимо представить текст запроса и информацию оБД, к которой направляется запрос. Удобно представлять информацию о БД в видеграфической схемы данных.
Ответ на вопрос должен вводиться в виде последовательности операцийреляционной алгебры.
Особенностью данной предметной области является то, что один и тот жерезультат запроса может быть получен различными способами. Это могут бытьпоследовательности различных операций реляционной алгебры. Либо это могут бытьразличные последовательности одних и тех же операций.
Например, пусть БД состоит из таблиц Товар (Идентификатор, Название) иПродажа (Дата, Идентификатор товара, Количество, Цена).
Необходимо получить результат запроса «Какой товар продавали в количествеболее 100». Ответ можно представить в виде следующих последовательностей.
Первая последовательность:
R1=JOIN (Товар, Продажа, Идентификатор товара=Товар)
R2= s (R1, Количество>100)
R3=p (R2, Название)
Вторая последовательность:
R1= s (Продажа,Количество>100)
R2=JOIN (Товар, R1, Идентификатор товара=Товар)
R3=p (R2, Название)
Необходимо получить результат запроса «Какой товар ни разу не продавали».Ответ можно представить в виде следующих последовательностей.
Первая последовательность:
R1= LEFT JOIN (Товар, Продажа, Идентификатор товара=Товар)
R2= s (R1,Идентификатор товара=NULL)
R3=p (R2, Название)
Вторая последовательность:
R1=p (Продажа,Идентификатор товара)
R2=p (Товар,Идентификатор)
R3=R2-R1
R4=JOIN (Товар, R3, Товар.Идентификатор = R3.Идентификатор)
R5=p (R4, Название)
При этом во второй последовательности возможны варианты порядкаследования операций, например, можно поменять местами первую и вторую операцию,при этом измениться третья операция, так как для операции разности существененпорядок операндов.
Проверка правильности введенного ответа может выполняться двумяспособами.
Первый способ предполагает сравнение ответа с эталонным множествомответов. При этом важное значениек5 имеет полнота введенных ответов, то естькачество заполнения внутренней БД.
Вторым способом проверки является выполнение введенного ответа иэталонного запроса. Здесь также важным является качество заполнения учебной БД,так как некоторые запросы могут давать верный результат при одном набореданных, но оказываться неверными при других данных. Поэтому в этом случае такжеважным является качество заполнения исходных данных.
Таким образом, администратор программы должен обеспечить следующее.
Должна быть учебная БД с заполненными таблицами. Таблицы должны бытьзаполнены такими данными, чтобы можно было проверить правильность выполнениязапроса в любом случае.
Для выполнения запроса к БД должна быть возможность соединения с учебнойБД.
Учебных БД может быть несколько.
К каждой БД может быть составлено множество запросов, на каждый запросможет быть множество ответов.
Пользователь должен иметь удобный интерфейс для ввода последовательностиопераций.
Ему должна быть предоставлена возможность выбрать требуемую операцию. Взависимости от выбранной операции должен быть предусмотрен ввод одного или двухоперандов, а также дополнительной информации.
В качестве дополнительной информации используется следующая. Для операциивыборки – условие выбора; для операции проекции – множество полей таблицы,которые попадут в результирующую таблицу; для операции соединения – условиесоединения.
При вводе условий необходимо предоставить возможность выбора операциисравнения и множества стандартных констант типа TRUE, FALSE, NULL.
При проверке правильности ответа необходимо учесть зависимость инезависимость порядка операндов.
Например, для операции объединения порядок операндов несущественен, дляоперации внутреннего соединения тоже, но при выполнении операции левогосоединения порядок существенен. При этом эквивалентны операции:
R1= LEFT JOIN (A, B, условие соединения)
и
R1= RIGHT JOIN (B, A, условие соединения).
Таким образом, проверка правильности введенного ответа не можетвыполняться простым сравнением эталона и введенного текста.
Необходимы алгоритмы интеллектуального сравнения с учетом особенностейпредметной области.
При вводе очередной n-йоперации последовательности ее результату присваивается стандартное имя Rn. Этоимя добавляется в список возможных операндов следующей операции.
При вводе ответа пользователь также должен иметь возможность изменятьпорядок введенных операций. При этом должны изменяться имена результирующихтаблиц во всех операциях, в том числе использованных как операнды.
В режиме обучения пользователь должен иметь возможность просматриватьрезультат запроса в целом, или результат выбранной операции в введенной импоследовательности.
Для этого программа должна уметь преобразовывать операцию(последовательность операций) в запрос к БД.
В режиме контроля должен формироваться балл за введенный ответ. При этомадминистратор должен иметь возможность установить максимальный балл для каждоговведенного во внутреннюю БД вопроса. Программа должна оценивать ответ не толькопо принципу Верно/Неверно, но выставлять оценку как процент от максимальногобалла в зависимости от качества введенного ответа.
Введенные ответы должны сохраняться во внутренней БД с указаниемполученного за них балла.
Пользователь должен иметь возможность просмотреть полученные им вопросы,введенные ответы и полученные результаты. Эта информация должна распечатыватьсяна принтере.
3.2 Структура данных
Для функционирования программы необходимо хранить информацию двух типов.Первый тип – эта информация о вопросах и об эталонных ответах, об учебных БД ипользователях. Второй тип – информация о введенных пользователем ответах.
Данная информация должна храниться в так называемой внутренней БД.
Для проектирования внутренней БД можно выделить следующие сущности.
Сущность Пользователь обладает атрибутами Идентификатор. Имя, Пароль.
Сущность Учебная БД обладает атрибутами Имя, Информация для соединения,Схема данных.
Сущность Вопрос обладает атрибутом Текст запроса, Максимальный балл.
Сущность Реляционная операция обладает атрибутами Название, Обозначение,Операнд1, Операнд2, Дополнительная информация.
Сущность Эталонный ответ включает множество операций.
Сущность Последовательность операций определяет возможный порядокопераций в эталонном ответе.
Сущность Тест характеризуется атрибутами Дата, Контролирующий илиобучающий, Итоговая оценка.
Сущность Ответ включает последовательность операций.
Между сущностями можно определить следующие взаимосвязи.
Сущность Учебная БД и Вопрос связаны отношением «один ко многим», вопросотносится только к одной БД, но к одной БД может быть построено множествозапросов.
Между сущностями Пользователь и Тест существует связь «один ко многим»,один пользователь может проходить множество тестов, но каждый тест относится кодному пользователю.
Сущность Вопрос и Тест связаны отношением «многие ко многим», один вопросможет входить в различные тесты, и в тест могут входить много вопросов. Даннаявзаимосвязь обладает собственным атрибутом Оценка.
Сущности Вопрос и Ответ связаны отношением «Один ко многим», один вопросможет иметь множество ответов, но ответ относится к одному вопросу.
Между сущностями Ответ и Последовательность определена связь «Один комногим», ответ может иметь множество последовательностей, но каждаяпоследовательность относится к одному ответу.
Сущности Операция и Ответ связаны отношением «многие ко многим», в ответеможет быть множество операций, и операция участвует во многих ответах. Даннаясвязь имеет собственные атрибуты Операнд1, Операнд2 (необязательный),Дополнительная информация (необязательная).
Для ускорения работы программы можно во внутреннюю БД внестидополнительную информацию о структуре учебной БД – список таблиц и список полейдля каждой таблицы. Этот список может формироваться автоматически в моментвнесения учебной БД во внутреннюю БД.
Таким образом, получается концептуальная модель данных, показанная нарис.3.1.
В результате преобразования связей между сущностями добавлены внешниеключи в следующие таблицы.
В таблицу Таблицы добавлен атрибут Идентификатор БД. В таблицу Поля добавленатрибут Идентификатор таблицы. В таблицу Тест добавлен атрибут Идентификаторпользователя. В таблицу Вопрос добавлен атрибут Идентификатор БД.
Для реализации связей «многие ко многим» созданы дополнительные таблицы Операцияэталонного ответа, Операция ответа пользователя, Вопрос теста.
В таблицу Ответ добавлен атрибут Идентификатор вопроса теста. В таблицуПоследовательность добавлен Атрибут Идентификатор операции эталонного ответа.
В результате получена следующая структура внутренней БД (см. табл.3.1)
Таблица 3.1 Структура внутренней БДТаблица Поле Тип поля 1 2 3 Пользователь Идентификатор Числовой Имя Строковый Пароль Строковый Учебная БД Идентификатор Числовой Название Строковый Строка соединения Строковый Схема данных Графический Тест Идентификатор Числовой Дата Дата Итоговая оценка Числовой Вопрос Идентификатор Числовой Текст Строковый Оценка Идентификатор БД Числовой Реляционная операция Идентификатор Числовой
  Название Строковый
  Обозначение Строковый
  Операнд1 Логический
  Операнд2 Логический
  Доп. информация Логический
  Эталонный ответ Идентификатор Числовой
  Операция в эталонном ответе Идентификатор ЭОО Числовой
  Идентификатор ответа Числовой
  Идентификатор операции Числовой
  Операнд1 Строковый
  Операнд2 Строковый
  Выражение1 Строковый
  Выражение2 Строковый
  Операция сравнения Строковый
  Последовательность Идентификатор ЭОО Числовой
  Номер Числовой
  Ответ Идентификатор ОП Числовой
  Идентификатор вопроса Числовой
  Идентификатор теста Числовой
  Оценка Числовой
  Операция в ответе Идентификатор ОО Числовой
  Идентификатор ОП Числовой
  Идентификатор операции Числовой
  Операнд1 Строковый
  Операнд2 Строковый
  Выражение1 Строковый
  Выражение2 Строковый
  Операция сравнения Строковый
  /> /> /> /> /> />
Поскольку последовательность задается только номером, то при внесенииответов должна быть возможность указывать в качестве операнда относительныйадрес результата предыдущих операций последовательности

Списоклитературы
1.План выполнения запроса.Свободная энциклопедия Википедия: [электронный ресурс] – Режим доступа: ru.wikipedia.org
2.Оптимизация запросов в SQL Server 2005: [электронныйресурс] – Режим доступа: www.askit.ru/custom/sql2005_admin/m11/11_05_08_query_ optimization.htm
3.Гарсиа-Молина Г.Системы баз данных. Полный курс / Гарсиа-Молина Г., Ульман Дж., Уидом Дж… –М.: Издательский дом «Вильямс», 2003. – 1088 с.
4.Хансен Г. Базы данных:разработка и управление / Хансен Г., Хансен Дж..: Пер. с англ. – М.: ЗАО«Издательство БИНОМ», 1999. – 704 с.
5.Роджер Дж. Руководстворазработчика баз данных на Visual Basic 6 / Роджер Дж.: Пер. с англ. – К.; М.; СПб.:Издательский дом «Вильямс», 2001. – 976 с.: ил.
6.Теория и практикапостроения баз данных. 8-е изд./ Д.Кренке. – СПб.: Питер, 2003. – 800 с.: ил.
7.Коннолли Т. Базыданных: Проектирование, реализация, сопровождение. Теория и практика / КонноллиТ… – М.: Издательский дом «Вильямс», 2002. – 1120 с.: ил.
8.VB 6.0: доступ к данным спомощью технологии ADO. Часть 1. ADO идет на смену DAO и RDO. – www.microsoft.com/Rus/Msdn/Activ/MSVB/Archive/ VBInHistory/VB60_ ADO-1.mspx
9.Visual Basic 6.0: пер. с англ. –СПб.: БХВ – Санкт-Петербург, 1999. – 992 с.,
10.Сбор и анализтребований: [электронный ресурс] – Режим доступа: progresoft.ru/
11.Мюллер Р.Дж. Базыданных и UML / Мюллер Р.Дж… – М.: ЛОРИ, 2002, — 420 с.
12.Мацяшек Л.А. Анализ ипроектирование информационных систем с помощью UML 2.0. / Мацяшек Л.А.Третье издание. – М.: Издательский дом «Вильямс», 2008. – 816 с.
13.Кузнецов С.Д. Основысовременных баз данных / С.Д. Кузнецов // Информационно-аналитические материалыЦентра информационных технологий: [электронный ресурс] – Режим доступа: www.citforum.ru/ database/osbd/contents.shtml
14.Грофф Дж. SQL: Полное руководство /Грофф Дж., Вайнберг П.; пер. с англ. – К.: Издательская группа BHV, 1998. – 608 с.
15.Кириллов В.В. Основыпроектирования реляционных баз данных. Учебное пособие / В.В. Кириллов – СПб.:ИТМО, 1994. – 90 с.
16.Карпова И.П. Введениев базы данных: [электронный ресурс] учебное пособие / И.П. Карпова –Московский государственный институт электроники и математики (Техническийуниверситет). – Режим доступа: http:// rema.44.ru/resurs/study/dblectio/dblectio.html.
18.Оптимизация запросовСУБД: [электронный ресурс] – Режим доступа: dic.academic.ru/dic.nsf/ruwiki/356734
19.Кузнецов С. Методыоптимизации выполнения запросов в реляционных СУБД / Кузнецов С.: [электронныйресурс] – Режим доступа: www.citforum.ru/
20.Методы повышенияпроизводительности: [электронный ресурс] – Режим доступа: wworacle.narod.ru/glava7.html
21.Производительность mysql, задание query plan: [электронный ресурс] –Режим доступа: baron.pp.ru/archives/194-Proizvoditelnost_mysql,_ zadanie_query_plan.html


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

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :

Реферат Воздействие сети Интернет на пользователей
Реферат А. Д. Градовский и славянофильство
Реферат Прикладной системный анализ: сетевой анализ и календарное планирование проектов, метод прогнозного графа
Реферат Concerns Facing The United States In The
Реферат Социальнопедагогическая программа по профилактике компьютерной зависимости детей и подростков
Реферат Сучасна екологічна криза: причини її виникнення та шляхи подолання
Реферат Ислам - религия от истоков до современного мира
Реферат Существенный урон возрождению экономики Азии
Реферат Гельман Александр Исаакович
Реферат Гельштаттерапия
Реферат 1. Утвердить прилагаемые Правила ведения кассовых операций и расчетов наличными денежными средствами в Республике Беларусь
Реферат "Калевала": слово заменяет действие
Реферат Принципы, механизмы и основные направления регулирования земельных отношений
Реферат Деятельность торгового предприятия
Реферат Арбитражное процессуальное право в системе российского права