Вы находитесь на странице: 1из 11

2. Понятие системы управления базами данных (СУБД).

7. Модели данных: многомерная модель. 39 Продолжение


Требования к централизованному управлению данными.
Многомерная модель данных (ММД)
Преимущества и недостатки СУБД.
Существуют два направления в развитии концепции
Система управления данными (СУБД) - комплекс программно-
информационных систем:
аппаратных средств, обеспечивающих доступ к БД и управление
• Системы оперативной (транзакционной ) обработки. данными.
• Системы аналитической обработки (системы Технологией БД предполагается , что создание БД, ее поддержка и
поддержки принятия решений). обеспечение доступа пользователей осуществляется
Транзакция - одна или несколько команд выполняются все сразу централизованно с помощью специального программного
(единица работы БД). обеспечения (СУБД).
Многомерные СУБД являются узкоспециализированными, централизованное управление данными должно обеспечиать * В оригинале речь идет об отношениях sibling (брат или сестра) и
предназначены для интерактивной аналитической обработки требования: offspring (сын или дочь). К сожалению, в русском языке такие
информации.
Свойства данных ММД:
1. Производительность системы, оценивается отношения не выражаются одним словом. — Прим.. перев.
временем получения ответа на запрос. Структуры данных, о которых идет речь, называются Б-деревьями,
Агрегируемость - это рассмотрение информации на различных
уровнях и ее обобщения.
2. Минимальное дублирование данных. Дублирование an — порядком Б-дерева. Они обладают следующими свойствами:
данных неэффективно вследствие следующих 1. Каждая страница содержит не более 2п элементов (ключей).
Историчность - предполагает обеспечение высокого уровня причин: 2. Каждая страница кроме корневой содержит не менее п
статичности (неизменяемости ) самих данных и их взаимосвязей, а - дорого, т.к. требуется больше памяти для хранения элементов.
также обязательность привязки данных ко времени. дублируемых данных. 3. Каждая страница либо представляет собой лист, т. е. не
Прогнозируемость - подразумевает задание функции - требуется более одной операции при обновлении данных. имеет потомков, либо имеет m + 1 потомков, где m—число
прогнозирования и применение их к различным временным Из-за этого (дублирования) различные копии ключей на этой странице.
интервалам. данных могут быть на разных стадиях обновления и БД 4. Все страницы-листья находятся на одном уровне. На
Термины ММД: может содержать противоречивую информацию. рис. 4.45 приведено Б-дерево второго порядка с тремя уровнями.
Измерение (Dimension)- множество однотипных данных, 3. Целостность БД - это непротиворечивость, Все страницы содержат 2, 3 или 4 элемента, исключение
образующих одну из граней гиперкуба. согласованность, достоверность данных, представляет лишь корневая страница: в ней может находиться
Ячейка - это поля, значение которого однозначно определяется содержащихся в БД в любой момент времени. лишь один-единственный элемент. Все листья находятся на третьем
фиксированным набором измерений. 4. Безопасность и хранение информации в БД. уровне. Если спроецировать Б-дерево на один-единственный
В существующих ММД имеются два варианта организации -защита данных от случайного или преднамеренного уровень, включая потомков между ключами их родительской
данных: доступа к ним лиц, не имеющих на это право или страницы, то ключи идут в возрастающем порядке слева направо.
- по лек уби чес кое
, запрет несанкционированного доступа Такое размещение представляет собой естественное развитие
- гиперкубическое . 5. Независимость данных. Независимость принципа двоичных деревьев и определяет метод поиска элемента
В полекубической схеме предполагается, что в БД может быть обеспечивается тем фактом, что пользователи с заданным ключом. Пусть страница имеет вид, приведенный на
определено несколько видов кубов с различными размерностями и работают с БД как с единым целым и не знают рис. 4.46, и задан некоторый аргумент поиска х. Предположим,
различными измерениями (Oracle Express Server). внутреннего представления данных. СУБД страница уже считана
В случае гиперкубической схемы предполагается, что у всех обеспечивает два уровня независимости:
гиперкубов БД одинаковые размерности и совпадающие 1-й уровень - это физическая независимость данных,
измерения. 2-й уровень - это логическая независимость данных.
Операции над данными: 6. Синхронизация.
- срез (slice) представляет собой подмножество гиперкуба, 7. Защита от отказов и восстановление данных.
полученное в результате фиксации одного или нескольких 8. Наличие языка запросов высокого уровня,
измерений. Преимущества СУБД: в оперативную память и можно воспользоваться обычными
- вращение (rotate) применяется при двумерном представлении 1. Благодаря интеграции отдельных файлов, степень методами поиска среди ключей ki ... km. Если m достаточно
данных и состоит в изменении порядка измерений. избыточности значительно уменьшается. За счет этого можно большое, то это может быть двоичный поиск, если же оно мало, то
- агрегация (drill up) и детализация (drill down) - эти операции уменьшить или исключить несогласованность данных можно воспользоваться простым последовательным поиском.
означают соответственно, переход к более общему и более характерную для систем, использующих много копий одних и тех (Заметим, что время, затрачиваемое на поиск в оперативной
детальному представлению информации из гиперкуба. же данных. памяти, скорее всего, пренебрежимо мало по сравнению с вре-
Достоинства.уцобства. и эффективность аналитической обработки 2. Увеличивается мобильность и гибкость менем пересылки страницы из вторичной памяти в оперативную.)
больших объемов данных, связанных со временем. Недостатки : информационной системы. Если поиск неудачен, то мы попадаем в одну из следующих
громоздкость для простейших задач оперативной обработки 3. Возможность коллективного использования данных. ситуаций:
информации. 4. Централизованное управление обеспечивает 1. ki < х < ki+1 для 1 =< i < m. Поиск продолжается на
жесткую стандартизацию, что очень важно при обмене странице pi.
информации локальных вычислительных систем. 2. km < х. Поиск продолжается на странице pmt.
5. Наличие интегрированной БД сокращает затраты на 3. х < k1. Поиск продолжается на странице р()Т. Если
создание, хранение и поддержание данных в актуальном указанная ссылка имеет значение NIL, т. е. страницы-потомка не
состоянии. существует, то в дереве вообще не существует элемента с ключом
х и поиск заканчивается.
Недостатки СУБД: К удивлению, включение в Б-дерево проводится сравнительно
1. Может увеличиться опасность просто. Если элемент нужно поместить на страницу с m < 2n
несанкционированного доступа к данным. элементами, то процесс включения затрагивает лишь эту
2. Увеличивается сложность создаваемых систем. страницу. Лишь включение в уже полную страницу затрагивает
3. Повышаются требования к аппаратным средствам. структуру дерева и может привести к появлению новых страниц.
4. Увеличивается доля служебной информации в Для того чтобы понять, что происходит в этом случае, обратимся к
общем объеме хранящихся данных. рис. 4.47, иллюстрирующему процесс включения в Б-дерево
порядка 2 ключа, равного 22. Включение проходит за три шага:
5. Модели данных: реляционная модель. Фундаментальные 1. Обнаруживается, что ключ 22 отсутствует. Включение в
свойства отношений. Модели данных страницу С невозможно, поскольку она уже заполнена.
Виды взаимосвязей: 2. Страница С разделяется на две страницы (т. е. вводится новая
1. Один к одному 1:1 означает что в любой момент времени страница D).
одному значению поля А соответствует только одно значение поля
В.
2. Один ко многим 1:М; многие к одному М:1 означает что
одному значению поля А соответствует некоторое число (0,1 или
несколько) значений, связанного с ним, поля В.
10. Операции обновления данных: добавление, удаление, 3. Многие ко многим М:М однозначность определения
изменение записей. Проблемы, возникающие при обновлении значений полей отсутствует в обоих направлениях. | 7 10 15 18||26 30 35 4о[ [7 10 15 1 а) 122 26 J fe 40 |
данных. Реляционная модель данных (РМД) ВС В С Р
ADD - данная операция сообщает об ошибках в следующих В настоящее время является единственной моделью с хорошо Рис. 4.47. Включение в Б-дерево ключа со значением
случаях: проработанной теоретической БД. 22.
• Добавляемый кортеж не соответствует схеме отношения. В РМД объекты и связи между ними представляются в виде 3. Ключи—их всего 2п + 1—поровну распределяются в С и D, а
• Нек-рое знач-е кортежа не принадлежит соотв-щему домену. набора взаимосвязанных двумерных таблиц. Каждая таблица средний ключ переносится на один уровень вверх на
• Кортеж совпадает по ключу с кортежем, уже имеющемся в имеет собственное имя и представляет один информационный «родительскую» страницу.
отношении. объект. Такая весьма элегантная схема сохраняет все характерные свойства
DEL - для удаления достаточно указать значение ключа Большинство операций над БД сводится к разрезанию и Б-деревьев. В частности, получившиеся две новые страницы
удаленного кортежа. Ошибка возникает только в том случае, если склеиванию по строкам и столбцам таблиц. Связь между содержат ровно по п элементов. Конечно, включение элемента в
удаляемый кортеж в отношении отсутствует. СН - для данной таблицами осуществляется за счет наличия общих родительскую страницу может вновь привести к переполнению
операции все ошибки добавления и удаления имеют место. столбцов(полей). страницы, т. е. разделение будет распространяться. В крайнем случае
Аномалия обновления Достоинства РМД: оно может «подняться» до самого корня. Фактически только в этом
При изменении: 1. Простота, эффективность, удобство использования. случае может увеличиться высота Б-! дерева. Так что Б-деревья
Необходимо многократное изменение данных. 2. Легкость развития и дополнения. растут несколько странно: от листьев к корню.
При удалении: 3. Высокая степень независимости данных. Теперь, основываясь на таком эскизном описании, начнем
Существует возможность потерять очень важную информацию. При Недостатки: разработку полной программы. Конечно, уже ясно, что в данном
случае лучше всего воспользоваться рекурсивной конструкцией,
добавлении: 1. Сложность описания иерархических и сетевых поскольку процесс разделения страниц распространяется по пути
Основными причинами аномалии является избыточность данных. связей. поиска в обратном направлении. Поэтому общее строение
Типичная ошибка проектирования - это сведение всех данных о 2. Сложность обеспечения высокой программы аналогично включению в сбалансированное дерево,
различных информационных объектов в одну таблицу. производительности. Фундаментальные хотя и есть отличие в деталях. Прежде всего нужно
Избыточность в БД может возникнуть при наличии линейной свойства отношений: сформулировать определение структуры страницы. Будем считать,
связи между объектами. 1. Отсутствие кортежей-дубликатов. Это свойство что элементы представляются в виде массива.
следует из определения отношения как множества кортежей. Во
многих практических реализациях, как РСУБД, допускается
нарушение свойства уникальности кортежей для промежуточных
отношений, порождаемых при выполнении запроса.
2. Отсутствие упорядоченности кортежей. Это
свойство дает дополнительную гибкость СУБД при хранении БД
во временной
памяти и при выполнении запросов.
3. Отсутствие упорядоченности атрибутов, позволяет
модифицировать схему отношений путем не только добавления
новых атрибутов, но и удаления уже существующих. В
большинстве систем упорядоченность атрибутов не требуется
4.Лтомарность значения атрибутов. Это свойство следует из
определения домена как множества значений простого типа
данных. В реляционных БД допускаются только нормализованные
отношения или отношения, находящиеся в первой нормальной
форме.
З6.Использование технологии «Клиент-Сервер» для доступа к 31.Проектирование БД. Этапы «Физическое проектирование»
данным. Основные структурные модели и «Машинное проектирование».
Клиент-сервер - это модель взаимодействия компьютеров в сети
Компьютеры не являются равноправными. Каждый из них играет
свою роль.
Одни компьютеры в сети владеют и распоряжаютс?
информационно-вычислительными ресурсами, такими как
процессор, файловая система, служба печати, БД. Другие же
имеют возможность обращаться к этим службам, пользуясь
услугами первых.
Компьютер, управляющий тем или иным ресурсом называют
сервером этого ресурса. А компьютер, желающий им
воспользоваться - клиентом. Конкретный сервер определяется
видом ресурса которым он владеет. Если ресурсом является БД, то
речь идет о сервере БД, назначение которого - обслуживать
клиентские запросы, связанные с обработкой данных, если ресурс
- это файловая система, то говорят о файловом сервере. В сети
один и тот-же компьютер может выполнять роль как клиента, так
и сервера. Например в системе, включающей ПК, большую ЭВМ и
мини-компьютер под управлением ОС UNIX, последний может
выступать как в качестве сервера БД, обслуживая запросы от
клиентов (ПК), так и в качестве клиента, направляющего запросы
к большой ЭВМ.
Этот же принцип распространяется и на взаимодействие
программ. Программа, выполняющая функции предоставления
другим программам соответствующий набор услуг, выступает в
качестве сервера. Программы, пользующиеся этими услугами,
называют клиентами.
Ядро реляционной SQL-ориентированной СУБД называют
сервером БД, а программы, обращающиеся к нему за услугами по
обработке данных SQL-запросов клиентами. ОСНОВНЫЕ
СТРУКТУРНЫЕ МОДЕЛИ Выделяют четыре подхода,
реализованные в моделях:
- модель файлового сервера FILE-SERVER (FS);
- модель доступа к удаленным данным REMOVE DATE A ACCES
(RDA);
- модель сервера БД. DATA BASE SERVER (DBS);
- модель сервера приложений APPLICATION SERVER (AS);
34.Понятие встроенного и динамического SQL.
Команда SELECT, ее назначение и
возможности. Примеры использования .
Встроенный SQL.
В SQL System R присутствуют специальные
операторы, поддерживающие встраивание операторов
SQL в традиционные языки программирования (в
System R основным таким языком был PL/1). Основная
проблема встраивания SQL в язык программирования
состояла в том, что SQL - реляционный язык, т.е. его
операторы большей частью работают со множествами,
в то время как в языках программирования основными
являются скалярные операции. Решение SQL состоит
в том, что в язык дополнительно включаются
операторы, обеспечивающие покортежный доступ к
результату запроса к БД. Для этого в язык вводится
понятие курсора, с которым связывается оператор
выборки. Над определенным курсором можно
выполнять оператор OPEN, означающий
материализацию отношения-результата запроса,
оператор FETCH, позволяющий выбрать очередной
кортеж результирующего отношения в память
программы, и оператор CLOSE, означающий конец
работы с данным курсором. Дополнительную гибкость
при создании прикладных программ со встроенным
SQL обеспечивает возможность параметризации
операторов SQL значениями переменных
включающей программы. . Динамический SQL
Для упрощения создания интерактивных SQL-
ориентированных систем в SQL System R были
включены операторы, позволяющие во время
выполнения транзакции откомпилировать и выполнить
любой оператор SQL.OnepaTop PREPARE вызывает
динамическую компиляцию оператора SQL, текст
которого содержится в указанной переменной
символьной строке включающей программы. Текст
может быть помещен в переменную при выполнении
программы любым допустимым способом, например,
введен с терминала. Оператор DESCRIBE служит для
получения информации об указанном операторе SQL,
ранее подготовленном с помощью оператора
PREPARE. С помощью этого оператора можно узнать,
во-первых, является ли подготовленный оператор
оператором выборки, и во-вторых, если это оператор
выборки, получить полную информацию о числе и
типах столбцов результирующего отношения. Для
выполнения ранее подготовленного оператора SQL,
не являющегося оператором выборки, служит
оператор EXECUTE.
Оператор SELECT является фактически самым важным
для пользователя и самым сложным оператором SQL.
Он предназначен для выборки данных из таблиц, т.е.
он, собственно, и реализует одно их основных
назначение базы данных -предоставлять информацию
пользователю. Оператор SELECT всегда выполняется
над некоторыми таблицами, входящими в базу данных.
Замечание. На самом деле в базах данных могут быть
не только постоянно хранимые таблицы, а также
временные таблицы и так называемые представления.
Представления - это просто хранящиеся в базе данные
SELECT-выражения. С точки зрения пользователей
представления - это таблица, которая не хранится
постоянно в базе данных, а "возникает" в момент
обращения к ней. С точки зрения оператора SELECT и
постоянно хранимые таблицы, и временные таблицы и
представления выглядят совершенно одинаково.
Конечно, при реальном выполнении оператора SELECT
системой учитываются различия между хранимыми
таблицами и представлениями, но эти различия
скрыты от пользователя. Результатом выполнения
оператора SELECT всегда является таблица. Любой
оператор реляционной алгебры может быть выражен
подходящим образом, сформулированным оператором
SELECT. Сложность оператора SELECT определяется
тем, что он содержит в себе все возможности
реляционной алгебры, а также дополнительные
возможности, которых в реляционной алгебре нет.
Пример 6.
Выбрать все
данные из
таблицы
поставщиков
(ключевые
слова
SELECT...
FROM... ):
SELECT *
FROM P;
Замечание. В
результате
получим
новую
таблицу,
содержащую
полную
копию
данных из
исходной
таблицы Р.__________________________________________________
8. Направления развития информационных систем. OLTP и 3. Архитектура и классификация современных СУБД.
OLAP-системы. Понятие транзакции. Свойства транзакций. Средства СУБД:
Особенности аналитической обработки данных. 1. Средства задания структуры БД.
OLTP и OLAP-системы 2. Средства конструирования экранных форм (ввод данных,
Сильно нормализованные модели данных хорошо подходят для так осмотр).
называемых OLTP-приложений (Oп-Liпе Transaction Processing 3. Средства создания запросов для выборки данных, а также для их
(OLTP)- оперативная обработка транзакций). обработки.
Типичными примерами OLTP-приложений являются системы 4. Средства создания отчета, для вывода на печать документа.
складского учета, системы заказов билетов. Основная функция 5. Языковые средства (макросы, язык запросов, встроенный
подобных систем заключается в выполнении большого количества алгоритмический язык).
коротких транзакций. Сами транзакции выглядят относительно 6. Средства создания приложений пользователя, позволяющие
просто, например, "снять сумму денег со счета А, добавить эту объединить различные операции работы с БД в единый
сумму на счет В". Практически все запросы к базе данных в OLTP- технологический процесс.
приложениях состоят из команд вставки, обновления, удаления.
Классификация современных СУБД
Запросы на выборку в основном предназначены для
1. Среда функционирования (платформа).
предоставления пользователям возможности выбора из различных
2. Поддерживаемая модель данных.
справочников. Большая часть запросов, таким образом, известна
заранее еще на этапе проектирования системы. Таким образом,
3. Возможность встроенного языка, его переносимость и др.
приложения.
критическим для OLTP-приложений является скорость и
4. Наличие диалоговых средств конструирования (таблиц, форм
надежность выполнения коротких операций обновления данных.
запросов, отчетов и т.д.) и средств работы с БД.
Чем выше уровень нормализации данных в OLTP-приложений,
тем оно, как правило, быстрее и надежнее. Другим типом
5. Возможность работы с нетрадиционными данными (e-mail,
video, audio, пример странички).
приложений являются так называемые OLAP-приложения (On-
6. Используемые концепции для работы с нетрадиционными
Line Analitical Processing (OLAP) -оперативная аналитическая
данными: объектно-реляционные, объектные.
обработка данных). Это обобщенный термин, характеризующий
7. Уровень использования: локальные системы, архитектуры
принципы построения систем поддержки принятия решений
"клиент-сервер" с параллельной архитектурой данных.
(Decision Support System - DSS), хранилищ данных (Data
8. Возможность интеракции данных из разных СУБД.
Warehouse), систем интеллектуального анализа данных (Data
Mining). Такие системы предназначены для нахождения
9. Степень поддержки языка SQL и возможность работы с
сервером БД.
зависимостей между данными (например, можно попытаться
определить, как связан объем продаж товаров с характеристиками
10. Наличие средств отчуждаемых приложений, позволяющих
не проводить полную инсталляцию СУБД при тиражировании
потенциальных покупателей), для проведения анализа "что
приложений пользователей.
если...". OLAP-приложения оперируют с большими массивами
данных, уже накопленными в OLTP-приложениях, взятыми их
электронных таблиц или из других источников данных. Такие
системы характеризуются следующими признаками: =Добавление
в систему новых данных происходит относительно редко
крупными блоками
= Данные, добавленные в систему, обычно никогда не удаляются.
= Перед загрузкой данные проходят различные процедуры
"очистки
= Запросы к системе являются нерегламентированными и, как
правило, достаточно сложными.
= Скорость выполнения запросов важна, но не критична. Данные
OLAP-приложений обычно представлены в виде одного или
нескольких гиперкубов, измерения которого представляют собой
справочные данные, а в ячейках самого гиперкуба хранятся
собственно данные.
Транзакция представляет собой команду SQL или группу команд
SQL, которые успешно завершаются или отменяются как единое
целое. Транзакция является логической единицей работы,
обладающей следующими свойствами:
• Атомарность - транзакция является автономной единицей
работы.
• Согласованность - транзакция обеспечивает целостность
данных и внутренних структур данных.
• Изолированность - две транзакции могут работать с
одними и теми же данными независимо от изменений, вносимых
другой транзакцией.
• Устойчивость - последствия транзакции продолжают
действовать до тех пор, пока не будут модифицированы другой
транзакцией.
По умолчанию любая команда SQL представляет собой
транзакцию. Кроме того, несколько команд могут быть 6. Модели данных: постреляционная, объектно-
объединены в одну транзакцию. Транзакции используются ориентированная модели.
для различных целей, в том числе: Постреляционная модель данных (ПРМД)
• для соблюдения правил или ссылочной целостности; Постреляционная модель данных представляет собой
• управление отдельными единицами работы; расширенную реляционную модель, снимающую ограничения
• обеспечения согласованности данных, особенно для неделимости данных, хранящихся в записях таблицы. ПРМД
допускает многозначные поля.
избыточных или сводных данных.
а) invoices
11. Реляционная алгебра. Классические операции над б) invoices
отношениями. invno cusino goods qty
Реляционная алгебра состоит из операторов, объединенных в две 0373 872 3 Сыр 3
группы: Рыба 2
1. Классические операции над множествами: объединение, 8374 0232 Лимонад 1
вычитание, пересечение, декартово произведение. Сок 6
2. Специальные реляционные операции: выборка (селекция, печенье 2
ограничения), проекция, деление, операция переименования. Данная модель поддерживает ассоциированные многозначные поля,
Определения: . допускает хранение в таблицах ненормализованных данных.
1. Произведение - возвращает отношение, содержащее Достоинства:
всевозможные кортежи, являющиеся сочетанием двух кортежей, 1. Высокая наглядность представления информации и
принадлежащих соответственно двум исходным отношениям. повышения эффективности ее обработки, по сравнению с
2. Объединение - возвращает отношение, содержащее все РМД. Недостатки:
кортежи, принадлежащие одному из двух исходных отношений 1. Проблема обеспечения целостности и
или двум сразу. непротиворечивости хранимых данных. Объектно-
3. Пересечение - возвращает отношение, содержащее все ориентированная модель данных(ООМД) В ООМД между записями
кортежи, принадлежащие одновременно двум исходным БД и функциями их обработки имеются взаимосвязи,
отношениям. обеспечиваемые механизмами подобными соответствующим
4. Вычитание - возвращает отношение, содержащее все средствам в ООЯП. Стандартизированная модель ООМД описана в
кортежи, принадлежащие одному из двух исходных отношений следующем стандарте: ODMG-93 object database Management Group.
или двум сразу. Структура ООБД представлена в виде дерева, узлами которого
Результат каждой операции над отношением также является являются оъекты. Свойства объектов описываются некоторым
отношением. Это называется свойством замкнутости. стандартным типом или пользовательским типом, который имеет
идентификатор class. Родовые отношении в БД образуют связанную
иерархию объектов.
Логическая структура ООБД похожа на структуру иерархической БД.
Основное отличие состоит в методе монепулирования данными.
Инкапсуляция
Поиск в ООБД состоит в выяснении сходства между объектами,
задаваемым пользователем и объектами, хранящимися в БД.
Достоинства:
- возможность отображения информации о сложных взаимосвязях
объекта. ООМД позволяет идентифицировать отдельную запись
БД и определять функции обработки для нее.
Недостатки:
- высокая понятийная сложность.
- неудобство в обработке данных.
- низкая скорость выполнения запросов.
14. Реляционная алгебра. Другие виды соединений. Понятие 1. Концепция баз данных. Понятия теории и технологии баз
39.Сильноветвящиеся В-деревья. Основные понятия и операции.
соединимости кортежей. . Тэта-соединение данных (БД).
Балансировка страниц. Б-ДЕРЕВЬЯ
Определение 9. Пусть отношение А содержит атрибут X , Концепция баз данных основана на идее выделения данных из
До сих пор мы в наших обсуждениях ограничивали себя деревьями, у каждой
программ в отдельную категорию, несвязанную с конкретной
вершины которых было самое большее два потомка, т. е. двоичными (или отношение В содержит атрибут Y, а - один из операторов программной обработкой.
бинарными) деревьями. Этого было вполне достаточно, например, для
представления родственных отношений, если исходить из «родословных»
сравнения Тогда-соединением 1. База данных может быть определена как совокупность
упорядоченных, структурированных массивов, взаимосвязанной
представлений, когда каждый человек ассоциируется со своими родителями. В отношения А по атрибуту X с отношением В по атрибуту
информацией, которая хранится в ЭВМ и используется многими
конце концов у каждого из нас не более двух родителей. А если нужно Уназывают отношение пользователями.
«потомственное» или «наследственное» представление? Ведь в этом случае
приходится учитывать, что некоторые могут иметь более двух детей, и,
Это частный случай операции общего соединения. 2. База данных может быть определена как совокупность
Иногда, для операции -соединения применяют следующий, логически связанных файлов данных, описывающих некоторую предметную
следовательно, соответствующие деревья — вершины с многими ветвями. За
область.
неимением лучшего термина мы будем называть такие деревья сильно более короткий синтаксис:
Теория баз данных является научной дисциплиной, обладающей
ветвящимися. В этом случае значительно лучше представлять потомство в виде Экви-соединение
собственным понятийным аппаратом, предметом исследования и
линейного списка со ссылками от родителя на самого младшего (или старшего) Наиболее важным частным случаем - Соединения является
теоретическими результатами.
из детей. В такой ситуации можно воспользоваться такими описаниями типов: случай, когда есть просто равенство. Математический аппарат составляет теория множеств, алгебра
Синтаксис экви-соединения: логики, теория графов.
Технология баз данных включает методологию и эксплуатацию ба
данных, а также инструментальные средства для поддержки
разработчиков и администраторов БД.
Предметная область может быть определена как часть реального
мира, которая отображается с помощью банка данных.
Банк данных - это БД в совокупности с СУБД (система
управления БД) применимой для ее создания и эксплуатации.
Рис. 4.43. Сильно ветвящееся дерево, представленное в Предметная область может быть описана множеством
виде двоичного. 17. Понятие нормализации БД. Функциональная зависимость информационных объектов и связями между ними.
и взаимозависимость, транзитивная и многозначная Информационный объект - это некоторое понятие или процесс,
зависимость. Денормализация БД. относящийся к предметной области, о котором хранятся
(4,
Зависимости между атрибутами описательные сведения. Каждый объект описывается в виде: <имя
1. Атрибут В функционально зависит от атрибута А, если объекта, имя характеристики, значение характеристике
На рис. 4.43 приведен пример данных соответствующей каждому значению А соответствует только одно значение В. Для определения характеристик объектов используется понятие
структуры. Можно заметить, что если повернуть на этом рисунке Обознач-ся: А => В поля, которое является наименьшей и логически неделимой
ссылки на 45°, то получим нечто вроде совершенного двоичного 2. Если существует функциональная зависимость вида А -> единицей информации. Поле определяется именем и множеством
дерева. Однако считать его таковым было бы ошибкой, поскольку В и В-> А, то между А и В имеется взаимосвязанное допустимых значений.
функционально эти две ссылки имеют совершенно другой смысл. соответствие или функциональная взаимозависимость. Обозн: Принимаемые полями значения называют данными.
Обычно нельзя обращаться с братом, как с сыном * и поэтому так А ? В Частичная функциональная зависимость это Запись - это совокупность значений всех полей, которые
не следует поступать даже при описании данных. Этот пример зависимость неключевого атрибута от части составного ключа. описывают конкретный объект.
можно легко продолжить и, введя в запись, описывающую Полная функциональная зависимость Когда неключевой Множество однотипных записей называют файлом данных.
человека, еще другие компоненты, получить данные более атрибут полностью зависит от составного ключа. Между полями между записями и между файлами существует
сложной структуры, отражающие другие родственные отношения. Пр:_Кафедра(ФИО, должен, оклад, стаж, д_стаж, кафедра, сложная система взаимосвязей. Среди всех полей, описывающих
Например, из отношений «сын» и «брат» нельзя вывести предмет, группа, вид занятий) ФИО -> кафедра ФИО -> некоторый объект можно выделить одну или несколько, по
отношения класса «муж» и «жена» и даже обратного отношения должность значению которых однозначно определяется объект в БД. Такое
«отец» и «мать». Подобные структуры быстро разрастаются в ->Атрибут С зависит от А транзитивно если для атрибутов А,В,С поле называют ключом.
сложный реляционный банк данных, в котором можно выделить выполняется условие А -> В и В -> С , но нет обратной Элементы не входящие в состав ключа называют неключевыми
несколько деревьев. Алгоритмы, работающие с такими зависимости А -> С Пример. ФИО -> должность -> оклад атрибутами. Соответственно, входящие называют ключевыми
структурами, существенно зависят от их описаний, поэтому не В отношении r атрибут В многозначно зависит от атрибута А, если атрибутами.
имеет смысла определять для них какие-либо общие правила или каждому значению А соответствует множество значений В, не
приемы работы. связанных с другими атрибутами из г.
В этом случае будем считать, что вершины дерева должны Обозн. А => В, А <= В, А <=>В ФИО < => предмет
храниться во вторичной памяти, скажем на диске. Вводимые в Замечание: В общем случае между двумя атрибутами одного
данной главе динамические структуры данных особенно подходят отношения могут существовать функциональные и многозначные
именно для такой вторичной памяти. Принципиальное новшество зависимости (1:1, 1:М, М:М) т.к. зависимость между атрибутами
— ссылки представляют собой адреса на диске, а не в оперативной является причиной аномалий, то необходимо разбить отношение с
памяти. Если использовать для множества данных, включающих, зависимостями атрибутов на несколько отношений. В результате
например, миллион элементов, двоичное дерево, то потребуется в получается совокупность связанных отношений, связи между
среднем приблизительно порядка log(106), т. е. 20 шагов поиска. которыми отражают зависимости между атрибутами различных
Поскольку теперь каждый шаг включает обращение к диску (с его отношений.
собственным латентным временем), то крайне желательна Два или более атрибутов называются взаимонезависимыми, если не
организация памяти, требующая меньшего числа обращений. один из этих атрибутов не зависит функционально от других
Сильно ветвящиеся деревья представляют собой идеальное атрибутов (Обозн. А ? -> В).
решение этой проблемы. Если происходит обращение к одному
Опр. Денормализация - это процесс изменения структуры таблиц
элементу, расположенному во вторичной памяти, то без больших
нормализованной БД, направленной на получение управляемой
дополнительных затрат можно обратиться и к целой группе
избыточности данных с целью повышения производительности
элементов. Это предполагает, что дерево разбито на поддеревья и
систем. 4. Модели данных: иерархическая, сетевая модели. Модели
эти поддеревья как раз те группы, которые одновременно
Транзитивные зависимости также порождают избыточное данных
доступны. Мы будем называть такие поддеревья страницами. На
порождение данных. Виды взаимосвязей:
рис. 4.44 приведено разбитое на страницы двоичное дерево;
каждая из страниц содержит 7 вершин.
Чтобы устранить транзитивные зависимости, необходимо 1. Один к одному 1:1 означает что в любой момент времени одному
использовать проекцию на атрибуты, являющиеся причиной значению поля А соответствует только одно значение поля В.
Поскольку каждое обращение к странице теперь
требует лишь одного обращения к диску, то экономия на числе
данных транзитивных зависимостей 2. Один ко многим 1:М; многие к одному М:1 означает что одному
таких обращений может быть существенной. Представим себе, что значению поля А соответствует некоторое число (0,1 или несколько)
каждая страница содержит 100 вершин (это вполне разумное значений, связанного с ним, поля В.
число), 3. Многие ко многим М:М однозначность определения значений
полей отсутствует в обоих направлениях.
Иерархическая модель данных (ИМД) Иерархической
называют такую модель данных, в которой записи классифицируются по
уровням, причем каждая запись связана только с одной записью более
высокого уровня и с несколькими более низшими по уровню записями.
ИМД позволяет организовать наследование некоторых общих свойств,
имеющих место в любой предметной области, за счет этого можно уменьшить
избыточность хранимых данных. ИМД накладывает жесткие ограничения на
Рис. 4.44. Двоичное дерево, разделенное на страницы.
используемые связи между объектами. Допускаются связи 1:1 и 1:М
в этом случае поиск в дереве с миллионом элементов будет в
Иерархическая БД представляет собой совокупность деревьев, корни которых
среднем требовать logioo(106) обращений к страницам (т. е. всего около 3), а не
отображают различные информационные объекты. Достоинства ИМД:
20. Конечно, если дерево растет случайным образом, то в худшем случае может
1. Простота программной реализации.
потребоваться даже и 104 обращений. Поэтому ясно, что для сильно ветвящихся
деревьев почти обязательна некоторая схема управления их ростом.
2. Простота понимания и использования памяти
Недостатки ИМД:

Сильно ветвящиеся Б-деревья 1. Жесткая ограниченность структур данных.;


Если речь заходит о критерии управления ростом дерева, то сразу же можно 2. Сложность действий при включении или удалении данных.
отказаться от идеальной сбалансированности, поскольку она требует слишком Сетевая модель данных (СМД) Основной конструкцией
-больших затрат на балансировку. Очевидно, правила надо как-то смягчить. СМД является набор. Набор - именованная совокупность записей,
Очень разумный критерий был сформулирован в 1970 г. Р. Бэйером и Е. образующая двухуровневую иерархическую структуру. Исходная запись
Маккрейтом {4.2]: каждая страница (кроме одной) должна содержать при набора называется владельцем набора Порожденная запись называется
заданном постоянном п от п до 2п вершин. Таким образом, для дерева с N элементом набора. Сетевая модель данных допускает все возможные
элементами и максимальным размером страницы в 2п вершин в самом худшем типы взаимосвязей, но прямое представление связей М: М невозможно. Для
случае потребуется logn N обращений к страницам, а ведь эти обращения этого используются две связи 1:М.
составляют основную часть затрат на поиск. Кроме того, коэффициент ис- В отличие от ИМД СМД позволяет осуществлять доступ к данным
пользования памяти, а это достаточно важно, раеен 50 %, поскольку страницы несколькими путями.
всегда заполнены минимум наполовину. При всех этих достоинствах наша Сетевые структуры могут содержать цикл. Связи в сетевых моделях
схема ориентирована и на сравнительно простые алгоритмы поиска, включения представлены в явном виде в специальных полях связи, следовательно, каждая
и исключения. В дальнейшем мы их изучим более детально. запись имеет... Достоинства данной модели:
1. Возможность реализации связи М:М
2. Допустимость образования произвольных связей.
Недостатки:
1. Сложность понимания и обработки информации.
2. Сложность структур данных .
3. Ослаблен контроль целостности
I 41. Переменные памяти в Visual FoxPro 5.0, их сходство и , I 20. Нарушения ссылочной целостности. Стратегии , 9. Теория реляционных баз данных. Основные понятия.
отличия то переменных, используемых в других языках поддержания ссылочной целостности. Теория реляционных баз данных
процедурного программирования. Примеры использования Операции, могущие нарушить ссылочную целостность В основе РМД лежит понятие теоретико-множественного
переменных памяти. i Ссылочная целостность может нарушиться в результате операций, i отношения.
Переменные памяти в структурированных программах изменяющих состояние базы данных. Таких операций три -( Отношение представляет собой двумерную таблицу,
Как и во всех процедурных языках, в Visual FoxPro 5.0 имеются вставка, обновление и удаление кортежей в отношениях. Т.к. в i содержащую некоторые данные.
как средства для обеспечения автономности обозначений в определении ссылочной целостности участвуют два отношения -i Сущность - это объект любой природы, данные о котором
подпрограммах, так и для создания переменных, «видимых» из родительское и дочернее, а в каждом из них возможны три хранятся в БД.
всех модулей: переменные могут быть определены как операции - вставка, обновление, удаление, то нужно рассмотреть [ Атрибут - это свойство характеризующее сущность. Пусть дано
глобальные или как локальные. А также региональные, шесть различных вариантов. Di, D2,..., Dn -n-множеств, Тогда отношение R-это множество
внутренние и системные. Для родительского отношения: упорядоченных кортежей <dbd2,..,dn,> d;e D;, где dj -атрибут, Dj-
PUBLIC, PRIVATE memory variables 1. Вставка кортежа в родительском отношении. При домен. Арностью отношений (степенью) является общее
а) Глобальные (PUBLIC) переменные: переменные, видимые из вставке кортежа в родительское отношение возникает новое количество атрибутов в отношении.
подпрограмм. По умолчанию все переменные, образуемые в значение потенциального ключа. Т.к. допустимо существование Кардинальным, числом (мощностью отношений ) называют число
диалоге (при работе в командном окне), трактуются в Visual кортежей в родительском отношении, на которые нет ссылок из всех различных кортежей в образующих отношения R.
FoxPro 5.0 как глобальные. Переменные, которые по смыслу дочернего отношения, то вставка кортежей в родительское Отношением называется некоторое подмножество декартового
решаемой задачи целесообразно сделать общими для всех отношение не нарушает ссылочной целостности. произведения, включающего один или несколько доменов. Схемой
программных модулей, должны быть объявлены как глобальные 2. Обновление кортежа в родительском отношении. При отношений называется конечное множество имен атрибутов
командой обновлении кортежа в родительском отношении может отношения.
PUBLIC <список переменных через запятые> измениться значение потенциального ключа. Если есть кортежи в Домен - множество всех возможных значений какого-либо
б) Локальные (PRIVATE)пepeменныe: переменные, которые дочернем отношении, ссылающиеся на обновляемый кортеж, то атрибута отношения.
могут быть использованы Головной программой и значения их внешних ключей станут некорректными. Обновление Отношение может меть несколько комбинаций атрибутов, каждая
подпрограммами автономно. Значения локальных переменных, кортежа в родительском отношении может привести к нарушению из которых однозначно определяет все кортежи отношений. Такие
присвоенные в Головной программе, после входа в ссылочной целостности, если это обновление затрагивает значение комбинации называют возможными ключами отношений
подпрограмму не сохраняются. Обозначения этих переменных потенциального ключа. (потенциальными ключами).
могут быть использованы в подпрограмме для своих целей, 3. Удаление кортежа в родительском отношении. При Подмножество атрибутов Р отношения R называется
совершенно отличных от целей использования в Головной удалении кортежа в родительском отношении удаляется значение потенциальным ключом (возможным ключом), если выполняются
программе (вплоть до различий в типе переменных!). После потенциального ключа. Если есть кортежи в дочернем отношении, следующие два условия:
возвращения из подпрограммы переменные будут иметь те же ссылающиеся на удаляемый кортеж, то значения их внешних - в отношении R не может быть двух различных кортежей с
значения, что и имели непосредственно перед обращением к ключей станут некорректными. Удаление кортежей в родительском одинаковым значениям (это называется свойством уникальности). -
подпрограмме. отношении может привести к нарушению ссылочной целостности. уникакое подмножество Р не обладает свойством уникальности.
По умолчанию все переменные в программах (кроме Для дочернего отношения: Потенциальные ключи служат единственным средством
объявленных как глобальные) трактуются как локальные, и 1. Вставка кортежа в дочернее отношение. Нельзя адресации на уровнях кортежей в отношении. Первичным ключом
специальную команду для их объявления вводить не нужно. вставить кортеж в дочернее отношение, если вставляемое называется атрибут (или совокупность атрибутов) отношения,
Такую команду следует использовать только для значение внешнего ключа некорректно. Вставка кортежа в однозначно идентифицирующие каждый из кортежей данного
«переобъявления» глобальных переменных на локальные: дочернее отношение привести к нарушению ссылочной отношения.
PRIVATE<список обозначений через запятые> целостности. Каждое отношение обязательно имеет комбинацию атрибутов,
в) Региональные (REGIONAL) переменные: переменные, 2. Обновление кортежа в дочернем отношении. При которая может служить ключом. Это гарантируется тем фактом,
подобны локальным и объявляются с помощью команды: обновлении кортежа в дочернем отношении можно попытаться что отношение - это множество, которое не содержит одинаковых
REGIONAL <список обозначений через запятые> некорректно изменить значение внешнего ключа. Обновление кортежей. Ключи обычно используются для следующих целей:
перед командой помещается директива # REGION. После кортежа в дочернем отношении может привести к нарушению 1. исключение дублирования значений ключевых атрибутов.
директивы необходимо указать номер региона (от 0 до 31), в ссылочной целостности. 2. упорядочивание кортежей.
котором действуют переменные перечисленные в списке. В 3. Удаление кортежа в дочернем отношении. При 3. ускорение работы с кортежами отношений.
регионе с другим номером та же переменная может иметь другое удалении кортежа в дочернем отношении ссылочная 4. организация связывания таблиц.
значение. целостность не нарушается. Пусть в отношении R1 имеется неключевой атрибут А, значение
г) Внутренние (LOCAL) переменные: переменные действуют Таким образом, ссылочная целостность в принципе может быть которого является значением ключевого атрибута В другого
только в пределах процедуры или функции, в которых были нарушена при выполнении одной из четырех операций: отношения R2, тогда говорят что атрибут А отношения R1
созданы. К ним нельзя обратиться из программы или функции ни - Обновление кортежа в родительском отношении. является внешним ключом.
более высокого, ни более низкого уровня. Объявляются - Удаление кортежа в родительском отношении. Любое отношение может быть представлено в виде
внутренние переменные командой: Вставка кортежа в дочернее отношение. таблицы, но не всякая таблица является отношением. Для того
LOCAL <список обозначений через запятые> - Обновление кортежа в дочернем отношении. чтобы произвольная таблица являлась отношением, необходимо
д) Системные переменные: переменные, встроенные в Visual Стратегии поддержания ссылочной целостности выполнения четырех условий:
FoxPro 5.0, и их имена всегда начинаются со знака подчеркивания. Существуют две основные стратегии поддержания ссылочной 1. все записи должны иметь одинаковую структуру.
В этих переменных, как правило, содержаться значения различных целостности: 2. каждая запись в таблице должна быть уникальна.
установок, таких как параметры страницы при печати и т.п. RESTRICT (ОГРАНИЧИТЬ)- не разрешать выполнение операции, знач-е Эл-тов одного столбца должны ппинадл-ть одному и
Системные переменные загружаются в память при запуске Visual приводящей к нарушению ссылочной целостности. Это самая тому же домену. 4. имена столбцов должны быть уникальными.
Fox.Pro 5.0, в процессе работы их значения могут изменяться, ь простая стратегия, требующая только проверки, имеются ли
будут, сохранены при последующих запусках СУБД. кортежи в дочернем отношении, связанные с некоторым кортежем
в родительском отношении.
CASCADE (КАСКАДИРОВАТЬ)- разрешить выполнение
требуемой операции, но внести при этом необходимые поправки в *
других отношениях так, чтобы не допустить нарушения ссылочной
целостности и сохранить все имеющиеся связи. Изменение
начинается в родительском отношении и каскадно выполняется в
дочернем отношении. В реализации этой стратегии имеется одна
тонкость, заключающаяся в том, что дочернее отношение само
может быть родительским для некоторого третьего отношения.
При этом может дополнительно потребоваться выполнение какой-
либо стратегии и для этой связи и т.д. Если при этом какая-либо из
каскадных операций (любого уровня) не может быть выполнена,
12. Реляционная алгебра. Выборка (селекция) и проекция.
то необходимо отказаться от первоначальной операции и вернуть
Реляционная алгебра состоит из операторов, объединенных в две
базу данных в исходное состояние. Это самая сложная стратегия, группы:
но она хороша тем, что при этом не нарушается связь между
кортежами родительского и дочернего отношений.
3. Классические операции над множествами: объединение,
вычитание, пересечение, декартово произведение.
Эти стратегии являются стандартными и присутствуют во всех
СУБД, в которых имеется поддержка ссылочной целостности.
4. Специальные реляционные операции: выборка (селекция,
ограничения), проекция, деление, операция переименования.
Можно рассмотреть дополнительные стратегии поддержания Выборка - возвращает отношение, содержащее все кортежи,
ссылочной целостности: удовлетворяющие одному условию.
SET NULL (УСТАНОВИТЬ В NULL) - разрешить выполнение Проекция - возвращает отношение, содержащее все кортежи
требуемой операции, но все возникающие некорректные значения исходного отношения после исключения из него некоторых
внешних ключей изменять на null-значения. Эта стратегия имеет атрибутов
два недостатка. Во-первых, для нее требуется допустить Специальные реляционные операции:
использование null-значений. Во-вторых, кортежи дочернего 1. Выборка
отношения теряют всякую связь с кортежами родительского Пусть имеется отношение r(R), A e R; a e dom(A) r where A=a
отношения. Установить, с каким кортежем родительского Выбрать из отношения г все кортежи, удовлетворяющие
отношения были связаны измененные кортежи дочернего условию А=а.
отношения, после выполнения операции уже нельзя. SET ОА=а(г)
DEFAULT (УСТАНОВИТЬ ПО УМОЛЧАНИЮ) - разрешить Операциявыборкиобладаетдвумя свойствами :
выполнение требуемой операции, но все возникающие 1. Коммутативность: аА=а(ов=ь(г))= ав=ь(ов=ь(г))
некорректные значения внешних ключей изменять на некоторое 2. Дистрибутивность относительно трех классических
значение, принятое по умолчанию. Достоинство этой стратегии по операций : оА=а(г V s)= aA=a(r)V oA=a(s) ,где V = U,
сравнению с предыдущей в том, что она позволяет не пользоваться Проекция
null-значеними. Недостатки заключаются в следующем. Во- В результате проекции мы получаем множество атрибутов
первых, в родительском отношении должен быть некий кортеж, Определение: Пусть r(R) схема, а х- подмножество из R, тогда
потенциальный ключ которого принят как значение по умолчанию проекция на х из г обозначается лх(г)
для внешних ключей. В качестве такого "кортежа по умолчанию" Свойства проекции:
обычно принимают специальный кортеж, заполненный нулевыми 1. Коммутатация с выборкой, если атрибуты для выбора
значениями (не null-значениями!). Этот кортеж нельзя удалять из находятся среди атрибутов множества, на которое
родительского отношения, и в этом кортеже нельзя изменять осуществляется проекция
значение потенциального ключа. Таким образом, не все кортежи Если А е х, х -подмножество R и r(R), то
родительского отношения становятся равнозначными, поэтому Лх(оА=а(г))= ОА=а(Лх(г))

приходится прилагать дополнительные усилия для отслеживания 2.Дистрибутивность проекции с объединением


этой неравнозначности. Это плата за отказ от использования null- лх(г Us)= ях(г)и rcx(s)
значений. Во-вторых, как и в предыдущем случае, кортежи
дочернего отношения теряют всякую связь с кортежами
родительского отношения. Установить, с каким кортежем
родительского отношения были связаны измененные кортежи
дочернего отношения, после выполнения операции уже нельзя. В
некоторых реализация СУБД рассматривается еще одна стратегия
поддержания ссылочной целостности: IGNORE
(ИГНОРИРОВАТЬ) - выполнять операции, не обращая внимания
на нарушения ссылочной целостности.
19. Понятие целостности и непротиворечивости БД 25.Методология проектирования БД. Известные подходы к
42. Команды, используемые для создания файлов БД
-Ограничения целостности. Понятие потенциального проектированию БД.
программными средствами.
альтернативного ключей. Первичные и внешние ключи Проектирование БД
СОЗДАНИЕ ФАЙЛА ТАБЛИЦЫ ДАННЫХ и ОКНО
Целостная часть реляционной модели фиксируется базовыми Методология поэтапного проектирования БД может быть
РЕДАКТИРОВАНИЯ ДАННЫХ VF 5/0
требованиями целостности, которые должны выполнятся в любой определена как построение структуры БД на основе
Создание файла таблицы данных включает два этапа: создание
РСУБД. Целостность БД связана с обеспечением информационных и процедурных требований пользователей.
структуры файла и заполнение файла данными.СОЗДАНИЕ
непротиворечивости, согласованности и достоверности В настоящее время существуют следующие этапы построения БД:
СТРУКТУРЫ ФАЙЛА рассмотрим на конкретном примере:
информации, хранящейся в БД. Это обеспечивается набором 1. Этап- Анализ требований.
Структура таблицы типа (*.DBF) создается командой:
правил целостности. Выделяют четыре категории правил: 2. Этап- Концептуальное (логическое) проектирование.
СRЕАТЕ<имя, можно без расширения>(перед именем указывается
1. Целостная сущность. Любой кортеж любого отношения 3. Этап- Проектирование реализации.
путь, если его не указать, то файл запишется в каталог VF по
должен быть отличен от любого другого кортежа этого 4. Этап- Физическое проектирование.
умолчанию) По умолчанию Visual FoxPro присваивает "родовое"
отношения (каждое отношение должно иметь первичный 5. Этап- Машинное проектирование.
расширение (.dbf), принятое для всех таблиц данных, отвечающих
ключ). Каждый этап проектирования характеризуется набором методов
стандарту dBASE (соблюдаются большинством СУБД). На экране
2. Целостность доменов. Каждый атрибут должен понимать проектирования и критериями оценки альтернативных вариантов.
появится диалоговое окно создания/корректировки таблиц баз
лишь допустимые значения. Выбор критериев оценки альтернативных вариантов является
данных, а именно для каждого вводимого поля:
3. Ссылочная целостность - набор правил, обеспечивающих Имя Name слабым звеном в проектировании БД. Это обусловлено
логическую согласованность первичных и внешних ключей следующими факторами:
Туре
перед вставкой, удалением и обновлением кортежей. 1) Многовариантность решения задачи проектирования.
Ссылочная целостность означает то, что для каждого Длина
Тип поля выбирается из списка типов полей (
2) Сложность оценки альтернативных вариантов.
внешнего ключа соответствует первичный ключ. Большинство из критериев не имеет количественной
4. Пользовательские правила целостности - это любые правила Точность (число дробных позиций) для числов оценки, их важность изменяется во времени, время
целостности, не относящиеся к первым трем категориям. Из Index Индекс поля по возрастанию/по убыванию действия различных критериев не одинакова.
этих четырех правил наиболее важными являются 1 и 3. эти Null Пустое значение поля таблицы данных В качестве критериев оценки эффективности проектирования БД
требования должны поддерживаться любой СУБД. Ограничение Окно Table Designer имеет три вкладки: Fields, Indexes, Table. используются следующие:
целостности. Пусть имеется система, в которой хранятся данные с Вкладка Table содержит сведения о количестве записей 1. Количественная - время отклика на запрос,
подразделениях и работающих в них сотрудниках. Списоь (Records) таблицы, количестве полей (Fields) их длине размеры и стоимость памяти, время и стоимость разработки,
подразделений хранится в таблице DEPART, где Deptld (Length) в байтах (1 байт отводится под запоминание имени стоимость обновления и некоторые другие.
-идентификатор подразделения, Dept_Name - наименование таблицы), а также полный путь к данному файлу данных и 2. Качественные - гибкость, адаптивность,
подразделения, Dept_Kol - количество сотрудников в т.д. программная и информационная совместимость с другими
подразделении. Список сотрудников хранится в таблице PERSON Вкладка Indexes позволяет создавать теги структурного системами. Возможность изменения структуры БД, удобство
где Persld - идентификатор сотрудника, PersName - имя составного индекса. пользовательского интерфейса и т.д.
сотрудника, Deptld - идентификатор подразделения, в котором Простой способ создания таблицы через системное меню
работает сотрудник: Ограничение целостности этой базы данных File/New. В диалоговом окне New (создание новых файлов баз 28.Проектирование БД. Этап «Allium требований».
состоит в том, что поле DeptKol не может заполняться Анализ требований
данных, запросов, таблиц и т.д.) выбирается опция Table, после На этом этапе устанавливаются цели заказчика, на основе которых выделяются
произвольными значениями - это поле должно содержать кнопка New File, и VF предлагает сохранить таблицу под требования к БД. Определяются потенциальные пользователи системы и,
количество сотрудников, реально числящихся в подразделении. С определенным именем на диске. Если выбрать кнопку соответственно, требования пользователей к БД. Установленные требования
учетом этого ограничения можно заключить, что вставка нового Wizards, то произойдет вызов мастера (Wizards) - это означает, документируются в форме доступной конечному пользователю,
сотрудника в таблицу не может быть выполнена одной что Ваша работа будет протекать в режиме "вопрос- ответ". проектировщику и разработчику БД.
операцией. При вставке нового сотрудника необходимо Разрабатываются и утверждаются техническое задание на разработку БД.
Порядок расположения полей может быть изменен. Можно Данный этап является наиболее трудоемким во времени и наименее
одновременно увеличить значение поля DeptKol: Шаг 1. Вставить удалять имеющиеся и дополнять новые поля (<Insert> и формализованное из всех этапов проектирования.
сотрудника в таблицу PERSON: INSERT INTO PERSON (6, <Delete>). Основной задачей является сбор требований, предъявляемый к содержанию и
Муфтахов, 1) Шаг 2. Увеличить значение поля Dept_Kol: UPDATE Для изменения структуры таблицы используется команда: процессам обработки данных всеми пользователями БД.
DEPART SET Dept=Dept+l WHERE Dept_Id=l Если после Путем опроса персонала выявляются и разделяются информационные потоки и
MODIFY STRUCTURE В диалоговом окне Table операции над ними. Составляется информационная модель предметной области.
выполнения первой операции и довыполнения второй произойдет Designer в режиме модификации Вы можно удалять, На этом этапе же формируется ограничения по безопасности, надежности и др.
сбой системы, то реально будет выполнена только первая операция переименовывать, дополнять поля таблицы данных, а также Информационные требования сформулированные на начальном этапе
и база данных остается в нецелостном состоянии. Потенциальные менять их параметры. Изменяемый файл должен быть используются в качестве входной информации на всех последующих этапах
ключи предварительно открыт (при изменении таблицы старые проектирования.
По определению, тело отношения есть множество кортежей, Здесь принято разделять информацию на две категории:
структуры сохраняются на диске с расширением ВАК для а) ISP- информация. Она определяет структурное представление о
поэтому отношения не могут содержать одинаковые кортежи. Это файлов DBF и ТВК - для FPT файлов (хранящих Memo-поля). предметной области, и описывает концептуальные объекты и связи,
значит, что каждый кортеж должен обладать свойством На экран можно вывести/убрать статусную строку с помощью исследуемые в предметной области. Данный тип информации не связан с
уникальности. На самом деле, свойством уникальности в пределах команды конкретными приложениями и способами обработки данных.
отношения могут обладать отдельные атрибуты кортежей или SET STATUS ON/OFF Она содержит б) UP- информация ( usage perspective). Данный тип информации
группы атрибутов. Такие уникальные атрибуты удобно отображает данные и связи, используемые в конкретных приложениях.
следующую информацию: имя выполняемой программы, Подход на основе UP- информации гарантирует обеспечение любых текущих и
использовать для идентификации кортежей. текущий диск, имя открытой таблицы или БД и т.д., номер будущих приложений, что говорит о хорошей адаптивности и гибкости систем,
Определение 1. Пусть дано отношение . Подмножество атрибутов текущей записи, общее число записей в таблице, признак разработанных таким образом.
отношения будем называть потенциальным ключом, если обладает пометки текущей записи к удалению (слово Del), положение Подход позволяет обрабатывать высокоэффективные приложения т.к. структура
следующими свойствами: клавиш NumLock и CapsLock (Num и Caps). Переименование БД учитывает наиболее часто используемые пути доступа к данным. Наиболее
- Свойством уникальности - в отношении не может быть двух таблицы данных производится с помощью команды RENAME
эффективно сочетание обоих подходов в рамках одной технологии
проектирования, когда ISP- информация используется для построения
различных кортежей, с одинаковым значением . <старое_имя_файла с расширением> ТО <новое_имя_файла с первоначальной информационной структуры, a UP для дальнейшего
- Свойством неизбыточности - никакое подмножество в не расширением> Данная команда переименовывает файл любого совершенствования с целью повышения эффективности обработки данных
обладает свойством уникальности. типа. Процедурные требования тесно связаны с задачами управляющих организаций,
Любое отношение имеет по крайней мере один потенциальный для которых создается БД.
ключ. Действительно, если никакой атрибут или группа атрибутов Анализ процедурных требований необходимо проводить после идентификации
элементов данных и составления словаря данных на основании
не являются потенциальным ключом, то, в силу уникальности сформулированных информационных требований. Характеристики задачи:
кортежей, все атрибуты вместе образуют потенциальный ключ. 1. Задача - это уникальная единица деятельности, состоящая из набора
Потенциальный ключ, состоящий из одного атрибута, называется последовательно выполняемых шагов.
простым. Потенциальный ключ, состоящий из нескольких 2. Все шаги одной из задач направлены на достижение одной цели.
3. На каждом шаге задачи используют один и тот же набор данных.
атрибутов, называется составным.
Отношение может иметь несколько потенциальных ключей.
4. Выявление связей между задачами и данными имеет важное значение для
следующих этапов.
Традиционно, один из потенциальных ключей объявляется В рамках этих процедурных требований составляется список задач,
первичным, а остальные - альтернативными. Различия между присваивается значение, определяется частота выполнения задач, при
первичным и альтернативными ключами могут быть важны в необходимости задачи классифицируются на производственные и
управленческие.
конкретной реализации реляционной СУБД, но с точки зрения Процедурные требования разделяются на три группы:
реляционной модели данных, нет оснований выделять таким 1. Тривиальные операции- просмотр, изменение, удаление, добавление.
образом один из потенциальных ключей. Первичным ключом 2. Не тривиальные операции - поиск, упорядочивание данных, а также,
называется атрибут (или совокупность атрибутов) отношения, способы обработки данных, взятых из предметной области.
однозначно идентифицирующие каждый из кортежей данного 3. Отчеты - включают в себя не тривиальные операции, необходимые для
формирования отчетов и выходных форм.
отношения. Пусть в отношении R1 имеется неключевой атрибут А, Этап "Анализ требований " целесообразно разбить на три части:
значение которого является значением ключевого атрибута В 1. Анализ требований и информационных потребностей.
другого отношения R2, тогда говорят что атрибут А отношения R1 2. Выявление информационных объектов и связей между ними.
является внешним ключом. 3. Формирование допущений и ограничений.

сводится к полной функциональной зависимости от возможного


38.Сбалансированные деревья. Алгоритм построения 20.Нарушения ссылочной целостности. Стратегии
19. Понятие целостности и непротиворечивости БД поддержания ссылочной целостности. Операции,
Ограничения целостности. Понятие потенциального идеально сбалансированного дерева. Деревья Фибоначчи.
Дерево называется сбалансированным тогда и только тогда, когда нарушающие ссылочную целостность:
альтернативного ключей. Первичные и внешние ключи Вставка, удаление, обновление кортежей в отношениях.
Целостная часть реляционной модели фиксируется базовыми высоты двух поддеревьев каждой из его вершин отличаются не
более чем на единицу. Для родительского отношения:
требованиями целостности, которые должны выполнятся в любой
РСУБД. Целостность БД связана с обеспечением Деревья, удовлетворяющие такому условию, часто называют 1. Вставка кортежей. Здесь возникает новое значение
АВЛ-деревьями (по имени их открывателей). Мы их будем просто потенциального ключа,
непротиворечивости, согласованности и достоверности
информации, хранящейся в БД. Это обеспечивается набором называть сбалансированными деревьями, поскольку упомянутый 2. Обновление кортежей. Может изменится значение
критерий сбалансированности выглядит наиболее подходящим. потенциального ключа..
правил целостности. Выделяют четыре категории правил:
1. Целостная сущность. Любой кортеж любого отношения (Заметим, что все идеально сбалансированные деревья являются 3. Удаление кортежей. Удаляется значение потенциального
также и АВЛ-деревьями.) ключа.
должен быть отличен от любого другого кортежа этого Для дочернего отношения:
Введенное определение не только само очень простое, но и
отношения (каждое отношение должно иметь первичный
ключ). приводит к простой процедуре повторной балансировки, причем 1. Вставка кортежей. Нельзя вставить кортежей в дочернем
средняя длина пути поиска практически совпадает с длиной в отношении, если вставляемое значение внешнего ключа
2. Целостность доменов. Каждый атрибут должен понимать некорректно.
идеально сбалансированном дереве.
лишь допустимые значения.
3. Ссылочная целостность - набор правил, обеспечивающих В сбалансированных деревьях за время, пропорциональное O(logn) 2. Обновление кортежей. При обновлении кортежей в
даже в худшем случае, можно выполнить такие операции: дочернем отношении возможно некорректное изменение
логическую согласованность первичных и внешних ключей внешнего ключа.
1. Найти вершину с данным ключом.
перед вставкой, удалением и обновлением кортежей
Ссылочная целостность означает то, что для каждого 2. Включить новую вершину с заданным ключом. 3. Удаление кортежей. При удалении кортежей в дочернем
3. Исключить вершину с указанным ключом. Такие отношении ссылочная целостность не нарушается.
внешнего ключа соответствует первичный ключ. Таким образом, целостность может быть нарушена при
4. Пользовательские правила целостности - это любые правила утверждения—следствие доказанной Адельсон-Вельским и
Ландисом теоремы, гарантирующей, что сбалансированное дерево выполнении следующих четырех операциях:
целостности, не относящиеся к первым трем категориям. Из 1. обновление кортежей в родительском отношении.
этих четырех правил наиболее важными являются 1 и 3. эти никогда не будет по высоте превышать идеально
сбалансированное более чем на 45 % независимо от количества 2. удаление кортежей в родительском отношении.
требования должны поддерживаться любой СУБД. Ограничение 3. вставка кортежей в дочернем отношении.
вершин. Если обозначить высоту сбалансированного дерева с п
целостности. Пусть имеется система, в которой хранятся данные с
подразделениях и работающих в них сотрудниках. Список вершинами через hb(n), то 4. обновление кортежей в дочернем отношении.
log (n + 1)< Ц (п) < 1.4404 * log (n + 2) - 0.328 (4.60)
Стратегия поддержания ссылочной целостности
подразделений хранится в таблице DEPART, где Deptld • Существует две основные:
идентификатор подразделения, DeptName - наименование Оптимум достигается, очевидно, если дерево идеально
подразделения, DeptKol - количество сотрудников в сбалансировано, при п •== 2й—1. Однако какова 1. RESTRICT (ограничить) т.е. не разрешить выполнение
операции, приводящей к нарушению целостности. Здесь
подразделении. Список сотрудников хранится в таблице PERSON
необходима проверка, имеются ли кортежи в дочернем
где Persld - идентификатор сотрудника, PersName - имя
отношении, связанные с некоторым кортежом в
сотрудника, Deptld - идентификатор подразделения, в котором
родительском отношении.
работает сотрудник: Ограничение целостности этой базы данных
состоит в том, что поле DeptKol не может заполняться
2. CASCADE (каскадировать). Разрешить выполнение
операции, но внести необходимые изменения в других
произвольными значениями - это поле должно содержать
отношениях так, чтобы не допустить нарушение ссылочной
количество сотрудников, реально числящихся в подразделении. С
целостности и сохранить все имеющиеся связи.
учетом этого ограничения можно заключить, что вставка нового Рис. 4.30. Деревья Фибоначчи высотой 2, 3, 4. Эти стратегии являются стандартными и препятствуют во всех
сотрудника в таблицу не может быть выполнена одной структура самого плохого сбалансированного АВЛ- СУБД, поддерживающих ссылочную целостность. Существуют
операцией. При вставке нового сотрудника необходимо дерева? Чтобы найти максимальную высоту h для всех еще стратегии:
одновременно увеличить значение поля DeptKol: Шаг 1. Вставить сбалансированных деревьев с п вершинами, поступим следующим 3. SET NULL. Разрешается выполнение операции, но все
сотрудника в таблицу PERSON: INSERT INTO PERSON (6, образом: возьмем фиксированную высоту h и попытаемся возникшие некорректные значения внешних ключей,
Муфтахов, 1) Шаг 2. Увеличить значение поля DeptKol: UPDATE построить сбалансированное дерево с минимальным числом изменяются на NULL значение. Эта стратегия имеет два
DEPART SET Dept=Dept+l WHERE Dept_Id=l Если после вершин. Мы следуем такой стратегии, поскольку, как и в случае недостатка:
выполнения первой операции и довыполнения второй произойдет
сбой системы, то реально будет выполнена только первая операция
минимальной высоты, это значение может быть достигнуто только 1. Использование NULL значений.
и база данных остается в нецелостном состоянии. Потенциальные
при некоторых вполне определенных значениях. Обозначим такое 2. Теряется связь кортежей дочернего отношения с кортежами
дерево высоты h через Th. Ясно, что То — пустое дерево, &Т\ — родительского отношения.
ключи
По определению, тело отношения есть множество кортежей,
дерево с одной-единственной вершиной. Для построения Th для h
> 1 мы будем брать корень и два поддерева опять же с
4. SET DEFAULT. Разрешается выполнение операции, но все
поэтому отношения не могут содержать одинаковые кортежи. Это возникающие некорректные значения внешних ключей
минимальным числом вершин. Следовательно, эти деревья также заменяются на некоторое значение, принятое по
значит, что каждый кортеж должен обладать свойством относятся к классу Т-деревьев, Одно поддерево, очевидно, должно
уникальности. На самом деле, свойством уникальности в пределах умолчанию.
отношения могут обладать отдельные атрибуты кортежей или
быть высотой h—1, а другому позволяется иметь высоту на
единицу меньше, т. е. h—2. На рис. 4.30 представлены деревья
5. IGNORE. Операции выполняются не обращая внимания на
группы атрибутов. Такие уникальные атрибуты удобно нарушение ссылочной целостности. Вся ответственность за
высотой 2, 3 и 4. Поскольку принцип их построения очень целостность БД ложится на пользователя. Пользователь
использовать для идентификации кортежей. напоминает построение чисел Фибоначчи, то мы будем называть
Определение 1. Пусть дано отношение . Подмножество атрибутов также может придумать свою стратегию поддержки
такие деревья деревьями Фибоначчи. Они определяются ссылочной целостности.
отношения будем называть потенциальным ключом, если следующим образом:
обладает следующими свойствами: 1. Пустое дерево есть дерево Фибоначчи высоты 0.
- Свойством уникальности - в отношении не может быть двух 2. Единственная вершина есть дерево Фибоначчи
различных кортежей, с одинаковым значением . высоты 1.
- Свойством неизбыточности - никакое подмножество в не
обладает свойством уникальности.
3. Если Th.! и Th.2—деревья Фибоначчи
высотой h — 1 и h — 2, то Th = < Ты, х, Th.2> также дерево
Любое отношение имеет по крайней мере один потенциальный Фибоначчи высотой h.
ключ. Действительно, если никакой атрибут или группа атрибутов 4. Других деревьев Фибоначчи не
не являются потенциальным ключом, то, в силу уникальности существует. Число вершин в Th определяется из такого простого
кортежей, все атрибуты вместе образуют потенциальный ключ. рекуррентного отношения:
Потенциальный ключ, состоящий из одного атрибута, называется
простым. Потенциальный ключ, состоящий из нескольких N ,= 0,
атрибутов, называется составным.
Отношение может иметь несколько потенциальных ключей. + I+Nh.
Традиционно, один из потенциальных ключей объявляется Числа Ni как раз и будут числом вершин для самых
первичным, а остальные - альтернативными. Различия между худших случаев (верхний предел h), их называют числами
первичным и альтернативными ключами могут быть важны в
Леонарда.
конкретной реализации реляционной СУБД, но с точки зрения
реляционной модели данных, нет оснований выделять таким
образом один из потенциальных ключей. Первичным ключом
называется атрибут (или совокупность атрибутов) отношения,
однозначно идентифицирующие каждый из кортежей данного
отношения. Пусть в отношении R1 имеется неключевой атрибут А,
значение которого является значением ключевого атрибута В
другого отношения R2, тогда говорят что атрибут А отношения R1
является внешним ключом.
29.Проектирование БД. Этап «Концептуальное 22.Хеширование данных. Основные понятия и термины.
24.Разрешение КОЛЛИЗИЙ. Метод последовательного сдвига регистра.
(логическое) проектирование». Привести пример. Открытое хеширование
Концептуальное (логическое) проектирование любая методика повторного хеширования, где очередная проба зависит только Открытое хеширование. Основная идея:
Основными задачами данного этапа является построение от предыдущей, обнаруживает группирующие свойства линейного потенциальное множество разбивается на конечное число
концептуальной модели предметной области на основании хеширования. Рассмотрим методику :h; (x)= (h(x)+i)mod В, где d,e [1;B-1] классов.
d,-"случайные" перестановки чисел 1,2......В-1.
требований пользователей, выбор модели данных. Интеграция Классы нумеруется от 0 до В-1. Для В классов строится хеш-
Набор чисел А, должен использоваться при реализации всех операций,
частых представлений отдельных пользователей. На основе выполняемых над множеством, а перемешивание целых чисел должно быть функция h такая, что для любого элемента х исходного множества
полученной концептуальной модели в дальнейшем могут быть выбрано еще при разработке алгоритма хеширования. Одним из эффективных h(x) e [0, В-1] (целочисленное значение),т.е. которое соответствует
выполнены различные варианты реализации БД. методов перемешивания целых чисел является метод последовательных сдвигов классу, которому принадлежит элемент х. Элемент х называют
регистров.Пусть В является степенью числа 2, К - константа из интервала е ключом, h(x) - хеш-кодом, х (свертка ), классы называют
[1;В-1], далее генерируется последовательность d, путем удвоения
Последовательность проектирования структуры БД. предыдущего значения до тех пор, пока последнее значение не превысит В,
сегментами.
тогда чтобы получить следующее А, из последнего значения отнимается число Массив называемый таблицей сегментов и проиндексированный
В и результат суммируется по mod2 с константой К. Замечание: не для каждого номерами сегментов содержит заголовки для В списков элемент х,
значения К можно получить все переменные значения из интервала [1 ;В-1], /-го списка - это элемент исходного множества, для которого h(x)
поэтому необходимо для каждого значения В подобрать свое значение К. = i.
Пример:В=$, К=3 [1;7] dt=101=5
Если исходное множество состоит из п элементов, то
сдвиг 1010
средняя длина списков будет равна п/В.
удаление ведущую единицу 010
+3 d2=001=l
Не всегда ясно как выбрать хеш-функцию так, чтобы она,
Сдвиг d3=0K)=2 примерно наполовину, распределила элементы исходного
Сдвиг d4= 100=4 множества по всем сегментам.
Сдвиг 1000
удаление ведущую единицу 000
+3 ds=001=5
Сдвиг d6= 110=6
Сдвиг 1100
Удаление ведущего Нуля 100
+3 d7=lll=7
Полный перемешанный набор чисел 1,... ,7 можно получить также для К=5, но
не при каких других значениях.

Концептуальной схемой называют описание предметной области


в терминах некоторой модели данных. 27.Использование семантического моделирования при
Отображение концептуальной схемы на физическом уровне ЭВМ проектировании БД. ER-модели.
называют внутренней схемой.
В реальном проектировании структуры базы данных применяются
Отображение взгляда отдельной категории пользователей на
другой метод - так называемое, семантическое моделирование.
концептуальную схему называют внешней схемой.
Семантическое моделирование представляет собой моделирование
структуры данных, опираясь на смысл этих данных. В качестве
инструмента семантического моделирования используются
различные варианты диаграмм сущность-связь (ER - Entity-
32.Жизненный цикл систем баз данных.
Relationship).
Жизненный цикл системы баз данных представляет собой Реальным средством моделирования данных является не
концепцию, в рамках которой полезно и удобно рассматривать формальный метод нормализации отношений, а так называемое
развитие системы баз данных во времени. Эта концепция создает семантическое моделирование.
хорошие предпосылки для регламентирования функции В качестве инструмента семантического моделирования
администратора баз данных. Жизненный цикл системы баз данных используются различные варианты диаграмм сущность-связь (ER
делится на две отдельные фазы: фазу анализа н проектирования - Entity-Relationship).
и фазу реализации и функционирования. В течение первой фазы Диаграммы сущность-связь позволяют использовать наглядные
происходит сбор требовании пользователей и проектирование графические обозначения для моделирования сущностей и их
базы данных, в течение второй - машинная реализация и взаимосвязей.
использование. С точки зрения проектировщика и пользователя Различают концептуальные и физические ER-диаграммы.
можно детализировать содержание работ, выполняемых в течение Концептуальные диаграммы не учитывают особенностей
этих фаз жизненного цикла системы баз данных. В этом смысле конкретных СУБД. Физические диаграммы строятся по
указанные фазы включают следующие этапьг.Фаза анализа и концептуальным и представляют собой прообраз конкретной базы
проектирования данных. Сущности, определенные в концептуальной диаграмме
1. Формулирование и анализ требовании. становятся таблицами, атрибуты становятся колонками таблиц
2. Концептуальное проектирование. (при этом учитываются допустимые для данной СУБД типы
3. Проектирование реализации, данных и наименования столбцов), связи реализуются путем
4. Физическое проектирование. миграции ключевых атрибутов родительских сущностей и
Фаза реализации и функционирования базы данных создания внешних ключей.
1. Реализация базы данных, При правильном определении сущностей, полученные таблицы
2. Анализ функционирования и поддержка. будут сразу находиться в ЗНФ. Основное достоинство метода
3. Модификация и адаптация. состоит в том, модель строится методом последовательных
Фаза реализации и функционирования базы данных Реализация уточнений первоначальных диаграмм. В данной главе,
базы данных подразумевает создание базы данных и прикладных являющейся иллюстрацией к методам ER-моделирования, не
программ на основе результатов трех главных эталон рассмотрены более сложные аспекты построения диаграмм, такие
проектирования базы данных, а также, загрузку базы данных. как подтипы, роли, исключающие связи, непереносимые связи,
Задача загрузки базы данных часто упускается из вида, однако она идентифицирующие связи и т.п. Концептуальные и физические
требует много усилий. Имеющиеся данные необходимо ER-модели Разработанный выше пример ER-диаграммы является
преобразовывать из существующей формы представления примером концептуальной диаграммы Это означает, что
логической и физической структуры в новую форму, диаграмма не учитывает особенности конкретной СУБД.
соответствующую результатам проектирования базы данных, По данной концептуальной диаграмме можно построить
Разработка прикладных программ тесно связана с выбором физическую диаграмму, которая уже будут учитываться такие
включающего (базового) языка программирования, с логической особенности СУБД, как допустимые типы и наименования полей и
структурой базы данных и в меньшей степени с физической таблиц, ограничения целостности и т.п. Физический вариант
структурой. Целью этого этапа является создание надежных н диаграммы, приведенной на Рис. 9 может выглядеть, например,
эффективных программ доступа к базе данных, удовлетворяющих следующим
требованиям пользователей к обработке данных. Анализ
функционирования и поддержка используются для сбора CU STO MER
PRODUCT ID INTEOER
(регистрации) и статистической обработки данных о CUSTOMER ID
ADDRESS ~
INTEGER
CHAR(100)
CUST O Mtnjo-cii
JCT_NAMECHAR(10)

функционировании системы. Эта информация позволяет выявить BANK CHAR(1CIO)

степень обоснованности требований пользователей, а также "узкие


места" в процессе эксплуатации с целью пересмотра системы в
будущем. Поддержка базы данных должна обеспечивать ее
T C US T ID IN T EO E RCUS T'SU MM A

целостность и эффективное восстановление после сбоев. N UM BER(10.2)

Модификация и адаптация предусматривает внесение в CUST ID INTEOER

реализованный проект изменений, возникающих вследствие ГО ПОЛЯМИ


появления новых требований, анализа функционирования системы
PRODUCT ID INTEOER
или анализа мнений пользователей о работе системы. Целью этого
и только есл
этапа является оптимизации функционирования существующей
системы путем реорганизации базы данных и/или внесения
изменений в программное обеспечение. Реорганизация базы SKLAD ID INTEOER
-SftAOJO
данных является широким понятием, используемым для описания
любых изменений в логической или физической структуре базы Рис. 10
данных. Изменения могут варьироваться в пределах от На данной диаграмме каждая сущность представляет собой
инвертирования связей (реструктурирования) до перестройки таблицу базы данных, каждый атрибут становится колонкой
физической структуры (реформатирования). соответствующей таблицы. Обращаем внимание на то, что во
И наконец, программная адаптация подразумевает процесс многих таблицах, например, "CUSTDETAIL"
модификации прикладных программ и случае проведения и
реструктуризации базы данных. Обычно эта проблема возникает "PRODINSKLAD", соответствующих сущностям "Запись списка
вследствие отсутствия логической независимости данных [121, накладной" и "Товар на складе", появились новые атрибуты,
123, 125], а модификации включают новые последовательности которых не было в концептуальной модели - это ключевые
команд манипулирования данными и замену переменных для атрибуты родительских таблиц, мигрировавших в дочерние
подсчета числа логических записей в случае изменения таблицы для того, чтобы обеспечить связь между таблицами
коэффициент блокирования. посредством внешних ключей
21.Индексирование данных. Схемы индексирования. 37.Деревья. Основные понятия. Бинарные деревья.
23.3акрытое хеширование. Анализ открытого и закрытого Плотные и разреженные индексы. Вторичные индексы. Операции с бинарными деревьями.
хеширования. Под индексом понимают средство ускорения поиска Определим дерево таким образом дерево с базовым типом Т—это
Закрытое хеширование записей в таблице, а так же других операций использующих поиск либо:
При закрытом хешировании в закрытой таблице сегментов (сортировка, модификация, удаление, исключение). 1) пустое дерево; либо
хранятся не заголовки списков, а сами элементы множества.
Поэтому в каждом сегменте может храниться только один
Индекс исполняет роль оглавления таблицы, просмотр
которого предшествует обращению к записям таблицы. Варианты
2) некоторая вершина типа Те конечным числом
связанных с ней отдельных деревьев с базовым типом Т,
элемент. решения проблемы организации физического доступа информации называемых поддеревьями.
При закрытом хешировании применяется методика повторного зависит: Из сходства рекурсивных определений последовательностей и
хеширования, т.е. если мы пытаемся поместить элемент х в 1. от вида содержимого в поле ключа индексного файла, деревьев ясно, что последовательность (список) есть дерево, в
сегмент с номером h(x), который уже занят другим элементом 2. от типа используемых ссылок на запись таблицы, котором каждая вершина имеет не более одного поддерева.
(коллизия), то в соответствии с методикой повторного 3. от метода поиска записей. Поэтому последовательность (список) называют иногда и
хеширования выбирается последовательность других номеров В поле ключа индексного файла хранятся значения ключевых вырожденным деревом.
сегментов h/ (x), h2 (х)..., куда можно поместить элемент х. полей индексированной таблицы или свертка ключа (хеш-код). Существует несколько способов изображения структуры дерева.
Каждый из них проверяется, пока не будет найдено свободное Преимущества хранения хеш-кода состоят в том, что длина свертка На рис. 4.17 приведено несколько примеров таких структур, где
местоположение (сегмент), если свободных сегментов нет, то независимо от длины исходного значения ключа всегда имеет базовый тип Т—множество букв. Эти схемы относятся к одной и
таблица заполняется, и элемент х вставить нельзя. В=8 постоянную и малую величину, что снижает время для операций той же структуре и, следовательно, эквивалентны. Структура,
а, Ь, с, d поиска данных. представленная в виде графа и явно отражающая разветвления, по
h(a)=3, h(b)=0, h(c)=4, h(d)=3 Недостатком хеширования является то, что необходимо понятным причинам привела к появлению общеупотребительного
empty, deleted выполнять операцию свертки: термина «дерево». Однако довольно странно, что деревья принято
методика линейного хеширования: h1 (x)= (h(x)+i)mod В Если 1. это требует дополнительного времени рисовать перевернутыми или, можно считать и так, изображать
допускается удаление элементов, то при достижении пустого 2. могут возникнуть коллизии только его корни. Как бы то ни было, и последнее толкование
сегмента и не найдя элемента х, мы не можем быть уверены, Коллизии - это когда свертка дает одинаковый хеш-код для вводит в заблуждение, так как верхнюю вершину (А) обычно
что его нет вообще в хеш-таблице, т.к. сегмент может стать различных значений ключа. называют корнем.
пустым уже после вставки элемента х. Поэтому для На практике чаще всего используются два метода поиска Упорядоченное дерево — это дерево, у которого ребра (ветви),
увеличения эффективности при поиске элемента X в хеш- последовательный и бинарный. Индексация таблиц проводиться с исходящие из каждой вершины, упорядочены. Поэтому два
таблице вводится константа delete, которая помещается в применением двух схем: упорядоченных дерева на рис. 4.18—это разные, отличные друг от
сегмент после удаления элемента данного сегмента. 1. одноуровневой друга объекты. Вершина у, находящаяся непосредственно ниже
2, двухуровневой вершины х, называется непосредственным потомком х; если х
Одноуровневая схема. В индексном файле находится на уровне i, то говорят, что у лежит на уровне i + 1 - И
хранятся короткие записи, имеющие по два поля: наоборот, вершину х называют (непосредственным) предком * у.
1. поле значения старшего ключа, адресуемого блока Считается, что корень дерева находится на уровне 0.
26.Проектирование БД методом нормальных форм 2. поле адреса начала этого блока Максимальный уровень какой-либо из вершин дерева называется
В каждом блоке записи располагаются в порядке возрастания его глубиной или высотой.
значения ключа или свертки. Старшим ключом каждого блока Если элемент не имеет потомков, то его называют терминальной
Нормальные формы является ключ его последней записи. вершиной или листом, а нетерминальную вершину называют
В п. 4.4 было дано определение первой нормальной формы (1НФ). внутренней. Число непосредственных потомков внутренней
Приведем здесь более строгое ее определение, а также Алгоритм поиска для данной схемы состоит из трех шагов: вершины называют ее степенью. Максимальная степень всех
определения других нормальных форм. 1. образование свертки значения ключевого поля для искомой вершин есть степень дерева. Число ветвей или ребер, которые
записи нужно пройти от корня к вершине х, называется длиной пути к х.
2. поиск в индексном файле записи о блоке, значение 1-го поля Корень имеет путь 0, его прямые потомки имеют путь длиной 1 и
Таблица находится в первой нормальной форме которого больше полученной свертки т. д. Вообще, вершина на уровне i имеет длину пути i. Длина пути
(1НФ) тогда и только тогда, когда ни одна из ее 3. последовательный просмотр записей блока до совпадения всего дерева определяется как сумма длин путей для всех его ком-
строк не содержит в любом своем поле более одного сверток искомой записи и записи блока. В случае коллизии
значения и ни одно из ее ключевых полей не пусто. понент. Ее также называют длиной внутреннего пути. Например,
сверток ищется запись, значение ключа которой совпадает со длина внутреннего пути дерева, изображенного на рис. 4.17, равна
значением ключа исходной записи. 36.
Из таблиц, рассмотренных в п. 4, не удовлетворяет этим Недостаток: хранение ключей или сверток записей вместе с
требованиям (т.е. не находится в 1НФ) только таблица самими записями - это приводит к увеличению времени поиска
из-за большой длины просмотра.
Двухуровневая схема. В этой схеме
Таблица находится во второй нормальной форме (2НФ), индекс основной таблицы распределен по совокупности
если она удовлетворяет определению 1НФ и все ее поля, не файлов: одному файлу главного индекса и множеству
входящие в первичный ключ, связаны полной файлов с блоками ключей.
функциональной зависимостью с первичным ключом. Вторичный индекс Если необходим поиск
записей, для которых задано значение неключевых полей,
Для упрощения нормализации подобных таблиц целесообразно необходимо использовать вторичные индексы. Рис. 4.17 Представление древовидной структуры: а)
использовать следующую рекомендацию. Вторичные индексы- это файлы состоящие из пар (v , р), где v- вложенные множества, Ь) вложенные скобки, с) отступы, d) граф.
это список значений по одному для каждого из полей F1, F2... Fn, Иногда употребляют термин «родитель» и очень часто говорят об
а р-это указатель на v. «отце» и «сыне», поскольку это сразу объясняет термины «брат» и
Рекомендация. При проведении нормализации таблиц, в Сам факт вторичного индекса может быть организован любым даже «дядя»! — Прим. перев.
которые введены цифровые (или другие) заменители составных и
способом из перечисленных выше.
(или) текстовых первичных и внешних ключей, следует хотя бы
Рассмотрим частный случай, когда задано только два значения
мысленно подменять их на исходные ключи, а после окончания
для полей вторичного индекса. При поиске данных в случае
нормализации снова восстанавливать.
хеширования все сегменты, за исключением двух, были бы
пустыми и таблицы хеширования независимо от общего Рис. 4.18. Два различных двоичных дерева.
Таблица находится в третьей нормальной форме (ЗНФ), если она количества сегментов ускоряли бы выполнение операций всего в Очевидно, что средняя длина пути
удовлетворяет определению 2НФ и не одно из ее неключевых
полей не зависит функционально от любого другого
два раза. Для случая организации в виде разряженного индекса, в
основном файле может оказаться два и более блоков, содержащих
PI= S( :i ! <i<n:n|»i) /n : щ
неключевого поля. одинаковые наименьшие значения ключа, и когда необходимо
будет найти записи с этим значением, потребуется рассмотреть все
После разделения таблицы Поставщики рис. 4.3 на две части все такие блоки.
таблицы этого проекта удовлетворяют определению 2НФ, а так В случае создания дополнительных вторичных индексов для
как в них нет неключевых полей, функционально зависящих друг индексов неключевых полей возникает следующие сложности:
от друга, то все они находятся в ЗНФ. 1. Для хранения вторичного индекса требуется место на
диске.
хотя интуиция подсказывает, что это лишнее разбиение, совсем не 2. Каждый создаваемый вторичный индекс замедляет
улучшающее проекта базы данных. выполнение всех операций вставки и удалений.
Несортированный файл с плотным индексом
Столкнувшись с подобными несуразностями, которые могут В этом случае файл записей сохраняет произвольный порядок
возникать не только из-за введения кодированных первичных самих записей и создается другой файл называемый плотным
ключей, теоретики реляционных систем Кодд и Бойс обосновали и индексом, он состоит из пар (х,р), где р- это указатель с ключом х в
предложили более строгое определение для ЗНФ, которое основном файле. Эти пары отсортированы по значению ключа. Для
учитывает, что в таблице может быть несколько возможных поиска ключей в плотном индексе можно использовать структуру,
ключей. подобную разряженному индексу. Если необходимо вставить новую
запись, находится последний блок основного файла и производится
Таблица находится в нормальной форме Бойса-Кодда (НФБК), ее. вставка. Если последний блок полностью заполнен, то из файловой
ключа. системы получают новый блок, одновременно вставляется указатель
на | соответствующую запись в файле плотного индекса. Чтобы
{ удалить запись, в ней устанавливается бит удаления и удаляется
В соответствие с этой формулировкой таблицы Блюда и Продукты соответствующий вход в индексном файле.
рис. 4;4, имеющие по паре возможных ключей (БЛ и Блюдо) и (ПР
и Продукт) находятся в НФБК или в ЗНФ.

Процедура нормализации
Как уже говорилось, нормализация - это разбиение таблицы на
несколько, обладающих лучшими свойствами при обновлении,
включении и удалении данных. Теперь можно дать и другое
определение: нормализация -это процесс последовательной
замены таблицы ее полными декомпозициями до тех пор, пока все
они не будут находиться в 5НФ. На практике же достаточно
привести таблицы к НФБК и с большой гарантией считать, что они
находятся в 5НФ. Разумеется, этот факт нуждается в проверке,
однако пока.не существует эффективного алгоритма такой
проверки. Поэтому остановимся лишь на процедуре приведения
таблиц к НФБК.
44. Использование индексов в Visual FoxPro 5.0. Типы ЗО.Проектирование БД. Этап «Проектирование
35.Реляционная полнота SQL. Порядок выполнения команды
индексов. Поиск данных в индексированных и неиндекс фай. реализации».
SELECT.
Команда, создающая индексный файл: INDEX ON <expr> TO Проектирование БД
Порядок выполнения оператора SELECT
<ind_file> [FOR <exprL>] [UNIQUE] Здесь: <expr - ключ Методология поэтапного проектирования БД может быть
Для того чтобы понять, как получается результат выполнения
индексирования, т.е. выражение с числовыми или с определена как построение структуры БД на основе
оператора SELECT, рассмотрим концептуальную схему его
символьными переменными или с датами но не с логическими информационных и процедурных требований пользователей.
выполнения. Эта схема является именно концептуальной, т.к.
переменными и не с memo-полями!); <ind_fle> - имя индексного В настоящее время существуют следующие этапы построения БД:
гарантируется, что результат будет таким, как если бы он
файла без расширения (по умолчанию Visual FoxPro 5.0 присвоит 1 Этап- Анализ требований.
выполнялся шаг за шагом в соответствии с этой схемой. На самом
деле, реально результат получается более изощренными
расширение .idx). 2 Этап- Концептуальное (логическое)
FOR <exprL> - опция, позволяющая эффективно сочетать I проектирование. I 3 Этап- Проектирование реализации.
алгоритмами, которыми "владеет" конкретная СУБД. Стадия 1.
индексирование и фильтрацию данных: в индексном файле будут | ! 4 Этап- Физическое проектирование. | : 5 Этап- Машинное
Выполнение одиночного оператора SELECT
упорядочены записи, для которых соблюдается логическое проектирование. | Каждый этап проектирования характеризуется
Если в операторе присутствуют ключевые слова UNION, EXCEPT условие <exprL>. набором методов
и INTERSECT, то запрос разбивается на несколько независимых 1. Поиск записей в индексированных файлах проектирования и критериями оценки альтернативных вариантов.
запросов, каждый из которых выполняется отдельно: I Осуществляется с помощью совокупности команд открытия Выбор критериев оценки альтернативных вариантов является
| индексированных файлов и одной из команд поиска (FIND или слабым звеном в проектировании БД. Это обусловлено
Шаг 1 (FROM). Вычисляется прямое декартовое произведение всех SEEK), в которых должно быть задано значение ключа. Если Вы не следующими факторами:
таблиц, указанных в обязательном разделе FROM. В результате хотите указать значение ключа точно (например, не хотите или не 1 )Многовариантность решения задачи проектирования.
шага 1 получаем таблицу А. помните точно искомой фамилии и ищете запись только по первой 2)Сложность оценки альтернативных вариантов. Большинство из
букве либо по нескольким первым буквам), следует использовать критериев не имеет количественной оценки, их важность
Шаг 2 (WHERE). Если в операторе SELECT присутствует раздел конфигурацию виртуальной машины Visual FoxPro 5.0 командой из
WHERE, то сканируется таблица А, полученная при выполнении изменяется во времени, время действия различных критериев не
группы SET: SET EXACT ON и SET одинакова.
шага 1. При этом для каждой строки из таблицы А вычисляется I EXACT OFF Команды поиска FIND имеют
условное выражение, приведенное в разделе WHERE. Только те В качестве критериев оценки эффективности проектирования БД
форму: FIND <значение ключа используются следующие:
строки, для которых условное выражение возвращает значение
TRUE, включаются в результат. Если раздел WHERE опущен, то
индексирования> SEEK <значение ключа 1. Количественная - время отклика на запрос,
индексирования> размеры и стоимость памяти, время и стоимость разработки,
сразу переходим к шагу 3. Если в условном выражении участвуют По любой из этих команд будет найдена запись, в которой
вложенные подзапросы, то они вычисляются в соответствии с стоимость обновления и некоторые другие.
данной концептуальной схемой. В результате шага 2 получаем
значение ключа точно (если SET EXACT ON) или 2. Качественные - гибкость, адаптивность,
приблизительно (если SET EXACT OFF) совпадает с заданным в программная и информационная совместимость с другими
таблицу В. команде <значением ключа индексирования>. Если ключ системами.
Шаг 3 (GROUP BY). Если в операторе SELECT присутствует -числовой, то совпадение требуется точное, если включен режим I Возможность изменения структуры БД, удобство
раздел GROUP BY, то строки таблицы В, полученной на втором SET NEAR OFF, либо приблизительное, с округлением - если пользовательского интерфейса и т.д.
шаге, группируются в соответствии со списком группировки, j SET NEAR ON По умолчанию в Visual FoxPro 5.0
приведенным в разделе GROUP BY. Если раздел GROUP BY установлено:SET EXACT OFF; SET NEAR OFF
опущен, то сразу переходим к шагу 4. В результате шага 3 Если в файле имеется несколько записей с одинаковым значением
получаем таблицу С. ключа, то по команде FIND файловый указатель остановится на
«первой встреченной», функция RECNO(), возвращает номер
Шаг 4 (HAVING). Если в операторе SELECT присутствует раздел записи: ?RECNO()
HAVING, то группы, не удовлетворяющие условному выражению, 2. Поиск записей в неиндексированном файле.
приведенному в разделе HAVING, исключаются. Если раздел Если база данных невелика (менее 100 записей, менее 10 полей),
HAVING опущен, то сразу переходим к шагу 5. В результате шага индексирование не даст заметного выигрыша во времени по ЗЗ.Понятие языка данных. Язык запросов SQL. Команды DDL,
4 получаем таблицу D. сравнению с «прямым», переборным поиском. Этот поиск DML, DCD.
осуществляется совокупностью команд:
Шаг 5 (SELECT). Каждая группа, полученная на шаге 4, генерирует LOCATE [<scope>] [FOR <exprL>][WHILE <exprl>] Фактически стандартным языком доступа к базам данных в
одну строку результата следующим образом. Вычисляются все <серия команд FoxPro2.0> настоящее время стал язык SQL (Structured Query Language).
скалярные выражения, указанные в разделе SELECT. По правилам [CONTINUE]
использования раздела GROUP BY, такие скалярные выражения Здесь: <scope> - группа записей (все, ALL; Язык SQL оперирует терминами, несколько отличающимися от
должны быть одинаковыми для всех строк внутри каждой группы. насколько следующих NEXT<число>; оставшиеся до конца файла терминов реляционной теории, например, вместо "отношений"
Для каждой группы вычисляются значения агрегатных функций, REST); (по умолчанию поиск ведется по всей базе данных). используются "таблицы", вместо "кортежей" - "строки", вместо
приведенных в разделе SELECT. Если раздел GROUP BY FOR... WHILE - необязательная часть команды, "атрибутов" - "колонки" или "столбцы".
отсутствовал, но в разделе SELECT есть агрегатные функции, то задающая условие поиска:
считается, что имеется всего одна группа. Если нет ни раздела Стандарт языка SQL, хотя и основан на реляционной теории, но во
запись найдена, если логическое условие <exprL> истинно. FOR
GROUP BY, ни агрегатных функций, то считается, что имеется многих местах отходит он нее.
устанавливает условия для всех записей файла; WHILE действует
столько групп, сколько строк отобрано к данному моменту. В до тех пор, пока не будет «встречена» первая запись, не Основу языка SQL составляют операторы, условно разбитые не
результате шага 5 получаем таблицу Е, содержащую столько удовлетворяющая условию <exprL>. несколько групп по выполняемым функциям:
колонок, сколько элементов приведено в разделе SELECT и По команде LOCATE файловый указатель
столько строк, сколько отобрано групп. останавливается на «первой встреченной» записи, для которой Операторы DDL (Data Definition Language) - операторы
соблюдается условие поиска FOR... или WHILE. определения объектов базы данных.
Стадия 2. Выполнение операций UNION, EXCEPT,
Затем может быть выполнена серия команд
INTERSECT Операторы DML (Data Manipulation Language) - операторы
(например, просмотра базы данных и/или определения номера
записи, на которой остановился указатель). манипулирования данными.
Если в операторе SELECT присутствовали ключевые слова
UNION, EXCEPT и INTERSECT, то таблицы, полученные в Затем поиск может быть продолжен Операторы защиты и управления данными, и др.
результате выполнения 1-й стадии, объединяются, вычитаются или необязательная опция CONTINUE для нахождения записей,
пересекаются. Стадия 3. Упорядочение результата возможно, также удовлетворяющих условию поиска - до конца Одним из основных операторов DML является оператор SELECT,
файла (когда функция EOF() возвратит .Т. («истина»)). позволяющий извлекать данные из таблиц и получать ответы на
Если в операторе SELECT присутствует раздел ORDER BY, то различные запросы. Оператор SELECT содержит в себе все
строки полученной на предыдущих шагах таблицы возможности реляционной алгебры. Это означает, что любой
упорядочиваются в соответствии со списком упорядочения, оператор реляционной алгебры может быть выражен при помощи
приведенном в разделе ORDER BY. подходящего оператора SELECT. Этим доказывается реляционная
полнота языка SQL.

Различают концептуальную схему выполнения оператора SELECT


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