- •1. Модели организации данных. Сетевая и иерархическая модели. Реляционная модель организации данных.
- •2. Организация процессов обработки данных в бд. Внутренняя схема бд фактографических ис. Физические структуры данных. Средства ускоренного доступа к данным. Индексирование данных. Хэширование данных.
- •4. Метод нормальных форм. Выявление зависимостей между атрибутами. Нормализация отношений.
- •Нормализация реляционных таблиц-отношений определяется требованиями атомарности значений полей, а также требованием рациональности группировки полей- атрибутов по различным таблицам.
- •5. Метод сущность-связь. Основные понятия метода. Правила формирования отношений.
- •Формирование отношений для связи 1:1
- •K1vk2 – означает, что ключом сформированного отношения может быть либо к1, либо к2.
- •Формирование отношений для связи 1: m
- •6. Языки баз данных. Обработка данных. Ввод-вывод данных. Запросы. Оптимизация запросов. Процедуры, правила (триггеры) и события в базах данных.
- •1. Понятие и содержание информационного обеспечения. Структура и классификация информационных систем.
- •Определение понятия «документ»
- •Структура информационных систем
- •Основные понятия автоматизированной информационной системы (аис)
- •Классификация информационных систем
- •2. По масштабу
- •Основные показатели эффективности функционирования дис
- •Механизмы поиска документов в полнотекстовых ипс
- •3. Гипертекст, гипертекстовые информационно-поисковые системы. Модели организации данных в гипертекстовых ипс. Формирование связей документов в гипертекстовых ипс.
- •4. Распределенные ис. Понятие распределенных ис, принципы их создания и функционирования. Техника представлений. Проблемы, связанные с практической реализацией техники представлений.
- •5. Распределенные ис. Технологии и модели «Клиент-сервер». Управление транзакциями.
- •Модель файлового сервера (fs)
- •Модель сервера приложений (as)
- •Модель удаленного доступа к данным (rda)
- •Модель сервера базы данных (dbs).
- •6. Распределенные ис. Управление распределенными данными. Доступ к общим данным. Технологии объектного связывания данных. Технологии реплицирования данных.
- •1. Понятие информационной технологии. Эволюция информационных технологий; их роль в развитии экономики и общества; свойства информационных технологий; понятие платформы.
- •3. Технологии открытых систем.
- •4. Сетевые информационные технологии: электронная почта, телеконференции, доска объявлений; авторские информационные технологии; гипертекстовые и мультимедийные информационные технологии.
- •Модель файлового сервера (fs)
- •Модель сервера приложений (as)
- •Модель удаленного доступа к данным (rda)
- •Модель сервера базы данных (dbs).
6. Языки баз данных. Обработка данных. Ввод-вывод данных. Запросы. Оптимизация запросов. Процедуры, правила (триггеры) и события в базах данных.
Для подготовки запросов с помощью различных СУБД чаще всего используются два основных языка описания запросов:
язык QBE(Query By Example)- язык запросов по образцу;
SQL (Structured Query Language) - структурированный язык запросов.
Главное отличие между этими языками заключается в способе формирования запросов: язык QBE предполагает ручное или визуальное формирование запроса, в то время как использование SQL означает программирование запроса.
Язык QВЕ позволяет задавать сложные запросы к БД путем заполнения предлагаемой СУБД запросной формы. Такой способ задания запросов обеcпечивает высокую наглядность и не требует указания алгоритма выполнения операции - достаточно описать образец ожидаемого результата.
На языке QBE можно задавать запросы однотабличные и многотабличные.
С помощью запросов на языке QBE можно выполнять следующие основные операции:
выборку данных;
вычисление над данными;
вставку новых записей;
удаление записей;
модификацию данных,
Результатом выполнения запроса является новая таблица, называемая ответной (первые две операции), или обновленная исходная таблица (остальные операции).
Выборка, вставка, удаление и модификация могут производиться безусловно или в соответствии с условиями, задаваемыми с помощью логических выражений. Вычисления над данными задаются с помощью арифметических выражений и порождают в ответных таблицах новые поля, называемые вычисляемыми.
В современных СУБД многие действия по подготовке запросов с помощью языка QBE выполняются визуально с помощью мыши. В частности, визуальное связывание таблиц при подготовке запроса выполняется не элементами примеров, а просто «протаскиванием» мышью поля одной таблицы к полю другой.
Язык SQL предназначен для выполнения операций над таблицами (создание, удаление, изменение структуры) и над данными таблиц (выборка, изменение, добавление и удаление), а также некоторых сопутствующих операций. SQL является непроцедурным языком и не содержит операторов управления, организации подпрограмм, ввода-вывода и т. п. В связи с этим SQL автономно не используется, обычно он погружен в среду встроенного языка программирования СУБД (например, Visual Basic for Application СУБД Access).
Основным назначением языка SQL является подготовка и выполнение запросов. В результате выборки данных из одной или нескольких таблиц может быть получено множество записей, называемое представлением.
Обработка данных включает набор различных функций и операций, которые можно разделить на три группы:
поиск, фильтрация и сортировка данных;
запросы к базе данных;
механизм реализации событий, правил (триггеров) и процедур в базе данных.
Запросы являются наиболее распространенным видом обработки данных. Запрос представляет собой спецификацию (предписание) па специальном языке (языке базы данных) для обработки данных. В реляционных СУБД запросы к базе данных выражаются на языке SQL.
Формирование запросов в СУБД может осуществляться в специальном редакторе (командный режим) или через наглядно-диалоговые средства (конструкторы) и пошаговые мастера формирования запросов. Сформированный запрос в виде SQL-инструкции сохраняется в файле базы данных и впоследствии специальной командой СУБД может запускаться (открываться) на выполнение.
С точки зрения решаемых информационных задач и формы результатов исполнения запросов их можно разделить на три группы:
запросы на выборку данных;
запросы на изменение данных;
управляющие запросы.
Запросы на выборку относятся к одному из наиболее часто применяемых видов запросов. Данный вид запросов реализуется SQL-инструкцией SELECT с предложением FROM. Результатом исполнения запроса на выборку является набор данных, который представляет временную таблицу данных со структурой (поля, их типы и параметры), определяемой параметрами запроса и параметрами полей таблиц, из которых выбираются данные. Результаты запросов на выборку помещаются в специальную временную таблицу, размещаемую на период исполнения («открытия») запроса в оперативной памяти.
Важное значение для решения различных технологических информационных задач по ведению базы данных имеют запросы на изменение данных. В отличие от непосредственного ввода данных в режимах открытой таблицы или формы они вносят изменения сразу в группу записей за одну операцию. Таким образом, результатом запросов на изменение является не набор данных, как в запросах на выборку, а изменение данных в самих таблицах.
При исполнении запроса на удаление за одну операцию осуществляется удаление группы записей из одной или нескольких таблиц. Запросы на удаление реализуются SQL-инструкцией DELETE:
DELETE (поля) FROM (таблица) WHERE (условие);
Запрос на обновление за одну операцию вносит общие изменения в группу записей одной или нескольких таблиц. Реализуются SQL-инструкцией UPDATE. Запросы на обновления применяются тогда, когда необходимо осуществить глобальные однотипные изменения в каком-либо наборе данных.
UPDATE (таблица) SET (поле = значение) WHERE (условие);
Запрос на добавление осуществляет добавление группы записей из одной или нескольких таблиц в конец другой или группы других таблиц. При этом количество и типы полей при вставке записей должны совпадать.
INTERINTO таблица SELECT поля FROM таблица WHERE (условие);
Запросы на создание таблицы за одну операцию создают новую таблицу с заполненными данными на основе всех или части данных из одной или нескольких таблиц.
SELECT поля INTO таблица FROM таблица WHERE (условие);
В составе языка описания данных DDL имеются ряд SQL-инструкций, на основе которых строятся запросы по созданию/модификации реляционных таблиц или отдельных их элементов. Такие запросы называются управляющими.
Запросы на создание таблицы реализуются SQL-инструкцией CREATE ТАВLЕ с ключевыми словами, определяющими типы полей (СНАRACTER, INTEGER, DATETIME и т.д.), предложением CONSTRAINT для создания ограничений на значения полей или связей между таблицами, ключевым словом UNIQUE, задающим свойство уникальности индекса таблицы, а также ключевого слова PRIMERY KEY, определяющего ключевое поле создаваемой таблицы.
Запросы на добавление полей или индексов реализуются SQL -инструкцией ALTER TABLE с использованием зарезервированных слов ADD COLUMN (добавить поле) и ADD CONSTRAIN (добавить индекс). Этим же запросом с помощью зарезервированного слова DROP COLUMN можно удалить поле из существующей таблицы. Как правило, запросы на добавление полей также используются для создания внешних ключей, задающих связи-отношения между таблицами. С этой целью используются зарезервированные слова FOREIGN KEY и REFERENCES.
Запросы на удаление таблицы или индекса реализуются SQL – инструкцией DROP TABLE с указанием имени удаляемой таблицы или индекса.
Запросы на создание индекса реализуются SQL-инструкцией CREATE INDEX с использованием зарезервированного слова UNIQUE запрета повтора значений в индексируемом поле и необязательного предложения WITH с параметрами DISALLOW NULL и IGNORE NULL для запрета/разрешения нулевых (пустых) значений в индексируемом поле. Зарезервированное слово PRIMERY позволяет определить создаваемый индекс ключом таблицы (при этом создаваемый индекс по умолчанию является уникальным, т. е. повторы значений не допускаются).
Под оптимизацией запросов понимается такой способ их обработки, когда по начальному представлению запроса вырабатывается процедурный план его выполнения, наиболее оптимальный при существующих в базе данных управляющих структурах.
В общей схеме обработки запросов выделяются:
Лексический и синтаксический разбор запроса;
Логическую оптимизацию;
Семантическую оптимизацию;
Построение процедурных планов выполнения запросов и выбор оптимального;
Непосредственное выполнение запроса.
Лексический и синтаксический разбор запроса формируют внутреннее представление запроса, содержащее вместо имен таблиц, полей и связей базы данных их истинные внутренние идентификаторы и указатели, находящиеся в системном каталоге базы данных.
Логическая оптимизация запроса может включать различные эквивалентные преобразования, «улучшающие» представление запроса. Такие преобразования можно разбить на три группы:
Преобразования предикатов сравнения;
Преобразования порядка реляционных операций (соединения, объединения, выборки);
Приведение запроса с подчиненными запросами к запросам на соединение (JOIN).
Преобразования предикатов сравнения, улучшающие в целях оптимизации представление запроса, в свою очередь, разделяются на:
Приведение предикатов сравнения к каноническому виду;
Приведение логического условия сравнения к каноническому виду.
Каноническим называется такой вид предикатов сравнения, который содержит сравнение простых выражений. Можно выделить три типа таких сравнений:
Имя поля Операция сравнения Константное арифметическое выражение;
Имя поля Операция сравнения Арифметическое выражение;
Арифметическое выражение Операция сравнения Константное арифметическое выражение.
В первом типе под «Константным арифметическим выражением» понимается такое выражение, которое содержит константы и так называемые объемлющие переменные, в любой момент имеющие одинаковое значение в отношении всех кортежей таблицы.
Во втором типе под « Арифметическим выражением» понимается такое выражение, в котором может присутствовать имя другой таблицы, полностью раскрыты скобки, произведено приведение и упорядочение членов.
Приведение логических условий сравнения к каноническому виду преследует ту же цель снижения числа операций при выполнении запроса на основе поиска общих предикатов и различных упрощений логических выражений.
Преобразования порядка реляционных операций также направлены на сокращение возможного количества операций при обработке запросов. Одними из наиболее частых реляционных операций в запросах являются операции соединения (JOIN) и операции ограничения (WHERE restriction). В этом отношении общим правилом оптимизирующего преобразования запросов будет замена последовательности операции соединения с последующими ограничениями на предварительные ограничения и последующим соединением:
Очевидно, что в большинстве случаев количество операции по реализации наиболее затратной операции соединения таблиц будет меньше после предварительно проведенных операций ограничения по отбору записей из исходных таблиц. Особенно данное правило актуально при наличии ограничений на отбор полей при соединении таблиц, связанных отношений «Один-ко-многим». В этом случае перенос ограничений в условиях отбора на таблицу, находящуюся на стороне «многие» до операции JOIN может существенно ускорить выполнение запроса.
Одним из проявлений вариантности языка SQL является эквивалентность выражения некоторых подчиненных и сложных запросов с соединениями. При выполнении запросов с подчиненными запросами для каждого кортежа-записи в исходном наборе внешнего запроса выполняется подчиненный запрос. Иначе говоря, всякий раз при вычислении предиката внешнего запроса вычисляется подчиненный запрос. Поэтому резервом для оптимизации подобных запросов является поиск возможных путей сокращения количества операций за счет эквивалентных преобразований, приводящих к совмещению операций формирования набора кортежей-записей внешнего и внутреннего (подчиненного) запроса.
Каноническим представлением запроса по данным из n таблиц называется запрос, содержащий n-1 предикат соединения и не содержащий предикатов с подчиненными запросами.
Логическая оптимизация запросов не учитывает семантики конкретной базы данных, проявляемой в ограничениях целостности на значения полей таблиц и связей между ними. В результате ядро СУБД всякий раз при выполнении логически оптимизированного запроса еще и проверяет ограничения целостности. Часть записей-кортежей, сформированных по результатам операций запроса, при этом может быть отвергнута именно по ограничениям целостности. Семантическая оптимизация запросов основывается на слиянии внутреннего представления запроса и ограничений целостности конкретной базы данных до непосредственного выполнения запроса и призвана за счет совместной проверки ограничений целостности и условий запроса сократить количество выполняемых операций.
После логической и семантической оптимизации строится процедурный план выполнения запросов. Процедурным планом запроса называется детализированный порядок выполнения операций доступа к базе данных физического уровня. Уже упоминавшаяся мультивариантность способов выполнения SQL-инструкций соответственно приводит к набору альтернативных процедурных планов выполнения запросов, среди которых оптимизатор запросов ядра СУБД должен выбрать оптимальный в соответствии с определенными критериями.
Общепринятым критерием оптимальности процедурных панов является минимизация стоимости выполнения запросов. При этом под стоимостью выполнения запроса понимают вычислительные ресурсы (ресурсы процессора и ресурсы дисковой и оперативной памяти), необходимые для выполнения запросов.
Суть идеи механизма событий, правил и процедур заключается в том, что они после определения хранятся вместе с данными. Ядро СУБД при любом изменении состояния базы данных проверяет, не произошли ли ранее «поставленные на учет» события, и, если они произошли, обеспечивает проверку соответствующих правил и запуск соответствующих процедур обработки.
Функционирование базы данных осуществляется следующим образом:
1. В базе данных определяются так называемые события, связанные с изменениями данных — добавление новой записи в определенную таблицу, изменение, удаление записи.
2. Для каждого события в базе данных определяются правила (триггеры) по проверке определенных условий состояния данных.;
3. В зависимости от результатов проверки правил в базе данных запускаются на выполнение предварительно определенные процедуры. Процедуры представляют собой последовательности команд по обработке данных, имеющие отдельное смысловое значение, и могут реализовываться на упрощенном макроязыке (последовательность команд запуска запросов или выполнения других действий, например по открытию-закрытию форм, таблиц и т. п.) или на языке 4GL, встроенном в СУБД.
В отличие от традиционного подхода, когда специальные прикладные программы постоянно «опрашивают» базу данных для обнаружения ситуаций, требующих обработки, «событийная» техника более экономична и естественна в технологическом плане.
4. Информационные системы (Беликова М.А.).
