- •Глава 1 введение в банки данных 12
- •Глава 2 концептуальное проектирование 72
- •Глава 3 даталогическое проектирование 184
- •Глава 4 целостность базы данных 234
- •Глава 5 создание и ведение баз данных 252
- •Глава 6 язык запросов qbe 295
- •Глава 7 язык sql 348
- •Глава 8 создание экранных форм и страниц доступа 401
- •Глава 9 создание отчетов 442
- •Глава 10 распределенные банки данных 475
- •Предисловие
- •Глава 1 введение в банки данных
- •1.1. Понятие банка данных
- •1.2. Компоненты банка данных
- •1.2.1. Информационный компонент
- •1.2.2. Программные средства БнД
- •1.2.3. Языковые средства БнД
- •1.2.4. Технические средства БнД
- •1.2.5. Организационно-методические средства
- •1.2.6. Администраторы банка данных
- •1.2.7. Взаимодействие компонентов БнД
- •1.3. Классификация банков данных
- •1.3.1. Классификация баз данных
- •1.3.2. Классификации субд
- •1.3.3. Классификационные группировки, относящиеся к БнД в целом
- •1.4. Выбор субд
- •1.4.1. Тенденции развития субд
- •1.4.2. Общая характеристика проблемы выбора субд
- •1.4.3. Факторы влияния на выбор субд
- •1.4.4. Выбор субд
- •1.5. Уровни моделей и этапы проектирования бд
- •1.5.1. Уровни моделей
- •1.5.2. Взаимосвязь этапов проектирования бд
- •1.5.3. Факторы влияния на проектирование бд
- •На это следует обратить внимание
- •Контрольные вопросы
- •Глава 2 концептуальное проектирование
- •2.1. Общие сведения о моделировании предметной области
- •2.1.1. Уточнение понятия концептуальной модели
- •2.1.2. Основные компоненты концептуальной модели
- •2.1.3. Требования, предъявляемые к концептуальной модели
- •2.1.4. Преимущества использования er-моделирования
- •2.2. Описание базовой er-модели
- •2.2.1. Понятия «объект» и «класс объектов»
- •2.2.2. Разновидности объектов
- •2.2.3. Изображение простого объекта
- •2.2.4. Описание свойств объекта. Разновидности свойств
- •2.2.5. Алгоритмические зависимости
- •2.2.6. Интегральные характеристики класса объектов
- •2.2.7. Связи между объектами
- •2.2.8. Сложные объекты
- •2.2.9. Рекомендации по построению базовой er-модели
- •2.3. Сравнение методик построения er-моделей
- •2.3.1. Несущественные различия в использовании условных обозначений
- •2.3.2. Различия в использовании и изобразительных средств, приводящие к изменениям в методике построения модели
- •2.3.3. Пространственное размещение элементов er-модели
- •2.3.4. Отсутствующие возможности
- •2.3.5. Различия в классификации объектов и отношений между ними
- •2.3.6. Терминологические различия
- •2.3.7. Соглашения по именованию элементов er-модели
- •2.3.8. Дополнительные характеристики case-средств
- •2.3.9. Использование графических пп для изображения er-моделей
- •2.4. Особенности методологии построения er-моделей
- •2.5. Использование Design/idef для проектирования баз данных
- •2.5.1. Построение er-модели при использовании Design/idef Общая характеристика
- •Описание сущности
- •Описание связи
- •Описание обобщенного объекта
- •2.5.2. Методология построения er-модели при использовании Design/idef
- •2.6. Особенности моделирования в erWin
- •2.6.1. Общие замечания Уточнение терминологии
- •Нотации, используемые при построении концептуальной модели
- •2.6.2. Построение логической модели Создание новой сущности
- •Описание свойств сущности
- •Дополнительные свойства атрибутов
- •Описание обобщенных объектов
- •Задание связей между сущностями
- •2.6.3. Особенности методологии моделирования
- •На это следует обратить внимание
- •Контрольные вопросы
- •Глава 3 даталогическое проектирование
- •3.1. Общие сведения о даталогическом проектировании
- •3.1.1. Исходные данные для даталогического проектирования
- •3.1.2. Результат даталогического проектирования
- •3.1.3. Подход к даталогическому проектированию
- •3.1.4. Определение состава базы данных
- •3.1.5. Введение искусственных идентификаторов
- •3.1.6. Критерии оценки бд
- •3.2. Особенности даталогических моделей
- •3.2.1. Внутризаписная структура
- •3.2.2. Межзаписная структура
- •3.3. Проектирование логической структуры реляционной базы данных
- •3.3.1. Вводные положения
- •3.3.2. Алгоритм перехода от базовой er-модели к схеме реляционной базы данных
- •Отображение простых объектов
- •Отображение связи между объектами
- •Отображение сложных объектов
- •Использование дополнительных характеристик концептуальной модели
- •Дополнительные рекомендации по проектированию бд
- •3.4. Создание физической модели в erWin
- •3.4.1. Выбор целевой субд
- •3.4.2. Нотации, используемые при построении физической модели
- •3.4.3. Уровни просмотра физической модели
- •3.4.4. Сравнение логической и физической моделей
- •3.4.5. Создание хранилищ данных
- •3.4.6. Переход к даталогической модели
- •На это следует обратить внимание
- •Контрольные вопросы
- •Глава 4 целостность базы данных
- •4.1. Классификация ограничений целостности
- •4.3. Задание ограничений целостности в erWin
- •4.3.1. Обязательный атрибут
- •4.3.2. Ограничения целостности связи
- •4.3.3. Триггер ссылочной целостности
- •На это следует обратить внимание
- •Контрольные вопросы
- •Глава 5 создание и ведение баз данных
- •5.1. Описание структуры баз данных. Общие сведения
- •5.2. Создание бд в Microsoft Access
- •5.2.1. Создание новой таблицы путем описания ее структуры
- •Описание полей таблицы
- •Определение ключа таблицы
- •Свойства полей
- •Сохранение описания таблицы
- •Создание таблиц для контрольного примера
- •5.2.2. Изменение структуры таблиц
- •5.2.3. Другие способы создания таблиц
- •5.2.4. Связывание таблиц
- •5.2.5. Просмотр связанных таблиц
- •5.2.6. Задание ограничений целостности в Access
- •Ограничения, относящиеся к полю
- •Ограничения, относящиеся к записи
- •Целостность связи
- •5.3. Организация ввода и корректировки данных в бд
- •5.3.1. Общие сведения
- •5.3.2. Возможности ввода данных в Access
- •На это следует обратить внимание
- •Контрольные вопросы
- •Глава 6 язык запросов qbe
- •6.1. Общая характеристика языка qbe
- •6.2. Реализация ове в Access
- •6.2.1. Общие сведения
- •Добавление таблиц в запросе
- •Удаление таблицы из запроса
- •6.2.4. Включение полей в запрос
- •6.2.5. Поля, выводимые в ответ
- •6.2.6. Управление выводом повторяющихся строк
- •6.2.7. Простые запросы
- •6.2.8. Сложные запросы
- •6.2.9. Просмотр ответа
- •6.2.10. Определение числа записей, выводимых в ответ
- •6.2.11. Формирование запросов к связанным таблицам
- •6.2.12. Выполнение агрегирующих операторов
- •6.2.13. Вычисляемые поля
- •6.2.14. Перекрестные запросы
- •6.2.15. Создание запроса с параметрами
- •6.2.16. Корректирующие запросы
- •6.2.17. Запрос на создание таблицы
- •6.2.18. Специальные запросы
- •6.2.19. Режим сводной таблицы и сводной диаграммы
- •На это следует обратить внимание
- •Контрольные вопросы
- •Глава 7 язык sql
- •7.1. Общая характеристика sql
- •7.2. Описание базы данных
- •7.2.1. Описание таблиц
- •7.2.2. Ограничения целостности
- •7.3. Запросы на выборку
- •7.4. Возможности корректировки хранимых данных
- •7.5. Создание представлений (view)
- •7.6. Создание и использование курсоров
- •Управление транзакциями
- •7.8. Стандартный sql-92
- •7.8.1. Создание объектов Виды объектов
- •Определение таблицы
- •Определение домена
- •7.8.2. Запросы Оператор select
- •Запросы, затрагивающие несколько таблиц
- •Корректирующие операторы
- •7.8.3. Создание представлений (view) Оператор create view
- •Цели использования представлений
- •Ограничения при использовании представлений
- •Создание представлений с использованием erWin
- •7.8.4. Курсоры
- •7.9.1. Оператор select Общая характеристика оператора
- •Предложение select
- •Предложение from
- •Предложение where
- •Предложение group by
- •Предложение having
- •Предложение order by
- •7.9.2. Подчиненные запросы sql
- •7.9.3. Корректирующие операторы Добавление
- •Обновление
- •Удаление записей
- •7.9.4. Запрос к серверу
- •На это следует обратить внимание
- •Контрольные вопросы
- •Глава 8 создание экранных форм и страниц доступа
- •8.1. Понятие, классификация и роль экранных форм
- •8.2. Рекомендации по созданию форм
- •8.3. Создание экранных форм в субд Access
- •8.3.1. Выбор способа создания формы
- •8.3.2. Создание форм с помощью Мастера Создание простой связанной формы с помощью Мастера
- •Создание многотабличной формы с помощью Мастера
- •8.3.3. Корректировка формы в режиме Конструктор
- •Изменения, связанные с уже включенными в форму элементами управления
- •Включение новых элементов в форму
- •Изменение типа элемента управления
- •Создание форм, состоящих из нескольких страниц
- •Последовательность обхода полей
- •Свойства формы
- •Задание ограничений целостности при создании форм
- •Добавление кнопок в форму
- •8.3.4. Кнопочная форма
- •8.3.5. Возможные случаи возникновения ошибок
- •8.3.6. Открытие формы в режиме сводной таблицы или в режиме диаграммы
- •8.3.7. Создание страниц доступа
- •На это следует обратить внимание
- •Контрольные вопросы
- •Глава 9 создание отчетов
- •9.1. Общая характеристика отчетов
- •9.2. Создание отчетов в системе Access
- •9.2.1. Выбор способа создания отчета
- •9.2.2. Создание отчетов с использованием Мастера отчетов
- •9.2.3. Корректировка отчета в режиме Конструктор Переход в режим Конструктор
- •Корректировка отчета
- •Вычисления в отчете
- •Ввод нового поля в отчет
- •Группировка
- •Использование графических элементов
- •Задание номеров страниц
- •9.2.4. Создание отчета, базирующегося на нескольких таблицах
- •9.2.5. Создание сложных отчетов
- •9.2.6. Свойства
- •9.2.7. Создание отчета анкетной формы
- •9.2.8. Совместная работа с другими приложениями ms Office
- •На это следует обратить внимание
- •Контрольные вопросы
- •Глава 10 распределенные банки данных
- •10.1. Основные понятия
- •10.2. Классификация рБнД
- •10.3. Транзакции
- •10.3.1. Понятие транзакции
- •10.3.2. Плоские транзакции
- •10.3.3. Контрольные точки
- •10.3.4. Многозвенные транзакции
- •10.3.5. Вложенные транзакции
- •10.4. Проблемы параллелизма и пути их решения
- •10.4.1. Параллелизм
- •10.4.2. Блокировки
- •10.4.3. Режимы доступа к информации
- •10.4.4. Уровни изоляции в sql
- •10.4.5. Использование хранимых процедур и триггеров для контроля целостности бд
- •10.5. Тиражирование данных
- •10.5.1. Основные понятия
- •10.5.2. Преимущества и недостатки тиражирования
- •10.5.3. Виды тиражирования
- •10.6. Обеспечение целостности и безопасности данных в рбд
- •10.6.1. Особенности обеспечения целостности в рбд
- •10.6.2. Средства защиты данных Способы защиты данных
- •Создание и удаление пользователей
- •Определение и отмена привилегий
- •10.7. Работа в распределенной среде при использовании субд Access
- •10.7.1. Способы совместного использования данных в Access
- •10.7.2. Виды блокировок
- •10.7.3. Проекты Microsoft Access
- •10.7.4. Средства защиты Microsoft Access Управление правами доступа пользователей
- •Средства защиты бд
- •На это следует обратить внимание
- •Контрольные вопросы
- •Приложения
- •1. Основные понятия реляционной модели данных
- •1. Информационные единицы.
- •2. Ключи.
- •3. Связи.
- •2. Сквозной пример использования er-моделирования для проектирования бд
- •Глоссарий
- •Литература
- •Сокращения
Ограничения, относящиеся к записи
Если ограничения целостности затрагивают несколько полей одной записи, то они должны задаваться не как свойство записи, а как свойство таблицы (рис. 5.34). Чтобы попасть в окно Свойства таблицы, надо, находясь в окне конструктора таблицы, позиционироваться на заголовке этого окна, нажать правую клавишу мыши и в появившемся контекстном меню выбрать позицию Свойства.
Целостность связи
Как отмечалось выше, при задании связи между таблицами в Access можно установить флажок Поддержание целостности данных, и в этом случае система будет автоматически поддерживать ограничения целостности связи.
При удалении основной записи, связанной с несколькими подчиненными, могут быть выбраны разные стратегии обновления:
запретить удалять основную запись, если имеются подчиненные;
удалить вместе с основной записью и все подчиненные (каскадное удаление).
В Access при поддержании целостности связи автоматически принимается первая стратегия. Чтобы отменить ее для данной связи, надо установить флажок Каскадное удаление связанных записей.
Если установлено Поддержание целостности данных и не установлено Каскадное удаление связанных записей, то из основной таблицы нельзя будет удалить запись, если в зависимой таблице есть связанные с ней записи.
Обеспечить ссылочную целостность можно и иным способом -используя поле подстановки: если значения будут переноситься из связанной таблицы, то в подчиненной не может появиться значение, отсутствующее в основной таблице.
Для задания сложных условий проверки целостности можно использовать макросы или модули.
5.3. Организация ввода и корректировки данных в бд
5.3.1. Общие сведения
После того как завершено проектирование структуры базы данных и БД описана на ЯОД, можно приступать к вводу данных. Это можно сделать как сразу по окончании описания структуры таблицы (или иной информационной единицы, если речь идет не о реляционной СУБД), так и потом.
Если для осуществления ввода просто воспользоваться командой ввода записи, то обычно на экране появляется структура записи в следующем виде: все поля размещаются одно под другим (анкетная форма) в том порядке, в котором они были заданы при описании структуры файла; для каждого поля слева указывается его идентификатор, а справа имеется окошко, длина которого совпадает с длиной поля. В это окошко можно вводить требуемое значение поля.
Другой способ - идентификаторы полей размещаются друг за другом слева направо, а окошки располагаются под ними (табличная форма). Такой способ ввода данных имеет много очевидных недостатков.
Идентификаторы полей часто бывают короткими и малоинформативными.
Порядок ввода полей может не совпадать с порядком их расположения в структуре файла БД.
Нерационально используется пространство экрана.
Не все СУБД позволяют задать контроль ограничений целостности при описании структуры БД и обеспечивать таким образом контроль правильности ввода.
Оформление экрана оставляет желать лучшего.
Невозможно в полной мере управлять выдачей подсказок пользователю.
Чтобы устранить эти недостатки, для организации ввода данных обычно создаются специальные экранные формы. СУБД обладают разными возможностями для создания экранных форм. Большинство современных систем имеет в своем составе специальные генераторы экранных форм, обеспечивающие конечному пользователю без программирования создание экранных форм требуемого вида. Кроме того, генераторы экранных форм обычно позволяют без программирования задавать многие виды ограничений целостности.
В СУБД, не имеющих соответствующих генераторов, экранные формы и процедуры проверки правильности данных при вводе должны программироваться с использованием иных языковых средств системы.
Поскольку экранные формы могут использоваться для организации как ввода, так и вывода информации, этот вопрос выделен в отдельный раздел учебника (см. главу 8).
Заполнение БД можно осуществлять посредством ввода данных с клавиатуры, переноса данных из других файлов (той же СУБД) или путем импорта из других систем. Кроме того, можно формировать запись или отдельные ее элементы программным путем.
При организации ведения баз данных нужно стремиться к реализации принципа однократного ввода информации. Вводить вручную информацию в БД следует только тогда, когда невозможно это сделать иными способами, используя уже имеющуюся в ИС информацию. Современные СУБД предоставляют простые и быстро реализуемые возможности по связыванию и совместной обработке файлов, по переносу данных из одних файлов в другие, возможности экспорта/импорта в другие системы; и этим надо пользоваться, избегая повторного ручного ввода данных. Кроме того, нужно стремиться к достижению минимально возможного уровня дублирования данных.
При организации ввода данных в базу данных надо стараться сокращать обьем данных, вводимых пользователем с клавиатуры. Наряду с уменьшением затрат времени на ввод данных это приводит и к сокращению ошибок при вводе. Сокращения объема вводимых с клавиатуры данных можно добиться, задавая заранее определенные значения полей (значения по умолчанию). Ввод значения в поле может быть заменен выбором нужной позиции из списка возможных значений. Кроме того, при наличии повторяющихся значений полей в следующих друг за другом записях СУБД позволяют переносить соответствующие значения из предыдущей записи в следующую за ней запись. Для сокращения ввода данных можно формировать отдельные поля автоматически, используя для этого функции или иные выражения.
Как отмечалось выше, в большинстве случаев в БД не следует хранить производные показатели. Если же по каким-либо причинам это признано целесообразным, то значения этих полей следует не вводить вручную, а вычислять. Это не только сократит объем ручных операций и возможность ошибок при вводе, но и обеспечит автоматическое поддержание целостности данных.
При организации ввода данных важно не только выявить возможные ошибки, но и организовать ввод таким образом, чтобы предотвратить их.
Одним из приемов, предотвращающим возможные ошибки и упрощающим работу пользователей при вводе данных, является использование функций по преобразованию данных. Так, например, символьные данные могут храниться в поле базы данных в виде заглавных либо строчных букв. Чтобы пользователь не задумывался, какими именно буквами должны вводиться данные, не тратил усилия на переключение клавиатуры, можно использовать соответствующие функции, преобразующие символы из одного регистра в другой, и шаблоны.
Для обеспечения удобства ввода данных в БД обычно создают специальные экранные формы. При добавлении записи может оказаться полезным использовать два экрана ввода. Первый предназначен только для ввода значения ключа. Он будет использоваться для проверки на наличие дубликатов, прежде чем будет продолжен ввод, и выдачу сообщений в случае ошибок. Второй экран будет использоваться для ввода остальных данных.
Существует несколько вариантов ввода записей:
сразу в БД;
сначала в переменные памяти (при вводе данных в переменные памяти они могут быть обособленными переменными, а могут быть организованы в виде массива);
с использованием вспомогательных файлов.
Второй и третий из перечисленных вариантов позволяют переносить введенные данные в БД только после того, как будут выполнены все необходимые проверки.
Третий вариант дает, кроме того, возможность распараллелить процесс ввода данных.
При корректировке БД могут использоваться те же самые формы, что и при первоначальном вводе, или, что чаще, специально созданные экранные формы. В экранных формах, предназначенных для корректировки, может быть запрещено изменение отдельных полей. Так же как и при вводе данных, экранные формы для корректировки для удобства пользователей лучше связывать не со структурой корректируемого файла, а с функциями, выполняемыми пользователем.
При осуществлении корректировок следует знать ограничения, накладываемые СУБД. Так, некоторые системы не разрешают корректировать ключевое поле. В других системах допускается корректировка ключевых полей и полей индексирования. Но в любом случае корректировка ключа считается плохой практикой. Рекомендуется проектировать БД таким образом, чтобы не было причин для корректировки ключа. Например, если естественный идентификатор объекта является динамическим (т.е. может со временем меняться), то в БД следует ввести искусственный идентификатор и использовать его в качестве ключа. Не следует также повторно использовать идентификаторы удаленных объектов.
Корректировка ключа приводит ко многим нежелательным последствиям. Каскадное обновление, реализованное во многих современных СУБД, иногда не решает всех проблем, связанных с корректировкой ключа.
Особую осторожность нужно проявлять и при корректировке проиндексированных файлов. Здесь надо обращать внимание на то, осуществляется ли корректировка индексного файла одновременно с соответствующим файлом БД системой автоматически. При корректировке поля индексирования ввиду того, что записи в проиндексированных файлах обрабатываются в логической последовательности, а сама эта последовательность меняется в результате корректировки, может случиться, что не все требуемые записи будут обработаны. В связи с этим не рекомендуется делать операции по корректировке поля индексирования при активном индексе, особенно это касается случаев, когда корректируются не единичные записи, а группа записей, отбираемых по условию FOR или WHILE. Даже если корректировка индексных файлов не приведет к некорректностям, нужно избегать поддержания многих индексных файлов открытыми, особенно при массовой корректировке, поскольку это замедляет обработку.
Следует обратить внимание на то, как (в какой момент, какими «порциями» и др.) запоминаются данные в БД. Некоторые СУБД позволяют управлять этим процессом, в других - он жестко предопределен. Как правило, перенос в БД сразу большого количества записей (в противовес позаписному) ускоряет обработку данных, но приводит к другим отрицательным последствиям. В частности, при вводе большого количества записей может оказаться, что в случае какого-то сбоя (например, отключения питания) некоторая часть введенных записей пропадет. Современные СУБД обладают средствами, позволяющими минимизировать отрицательные последствия, возникающие в таких ситуациях.
При организации ввода данных часто используют маски. Их применение не позволяет ввести в поле значения, не вписывающиеся в маску, что позволяет обеспечивать контроль правильности вводимых данных.
С помощью масок можно организовать ввод конфиденциальной информации (если использовать маску типа «пароль», то вместо символов, введенных в поле, будут изображаться звездочки (*); если в СУБД нет специальных типов, предназначенных для подобных целей, то можно запрограммировать эту возможность самостоятельно (например, сделать одинаковым цвет букв и фона).
Введение в маску текстовых констант, во-первых, освобождает от внесения их вручную при вводе данных и, во-вторых, позволяет не хранить их в каждом из полей.
При выполнении корректирующих операций с базой данных СУБД проверяет соблюдение заданных ограничений целостности. При обнаружении ошибочной ситуации могут быть предприняты различные действия, которые зависят от типа допущенной ошибки, специфики предметной области, особенностей СУБД, принятых проектных решений при создании СОД. Так, если допущена ошибка в типе данных или неправильно введена дата, то пользователь должен обязательно исправить ошибку, поскольку СУБД не дает других возможностей продолжить работу. В зависимости от конкретной ситуации могут быть разработаны специальные программы обработки ошибочных ситуаций.
