
- •Глава 1 введение в банки данных 12
- •Глава 2 концептуальное проектирование 72
- •Глава 3 даталогическое проектирование 183
- •Глава 4 целостность базы данных 233
- •Глава 5 создание и ведение баз данных 251
- •Глава 6 язык запросов qbe 294
- •Глава 7 язык sql 347
- •Глава 8 создание экранных форм и страниц доступа 400
- •Глава 9 создание отчетов 441
- •Глава 10 распределенные банки данных 474
- •Предисловие
- •Глава 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.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.2. Er-модели и ограничения целостности
- •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. Ms Jet Access sql
- •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-моделирования для проектирования бд
- •Глоссарий
- •Литература
- •Сокращения
6.2.15. Создание запроса с параметрами
Если приходится часто выполнять однотипный запрос на выборку или перекрестный запрос, изменяя при этом значение какого-либо атрибута в условии отбора, то можно использовать запрос с параметрами. Запрос с параметрами не требует каждый раз вносить изменения в бланк запроса; вместо этого выводится приглашение пользователю ввести условия отбора.
Запрос с параметрами особенно удобно использовать, когда конечные пользователи, для которых создается система, не очень квалифицированные и желательно, чтобы они сами никакие элементы системы не изменяли. Запросы с параметрами также удобно использовать в качестве основы для форм и отчетов. Например, на основе запроса с параметрами можно создать ежемесячные отчеты. При выводе такого отчета на экране появится приглашение ввести месяц, за который должен быть получен отчет.
Для каждого поля, которое предполагается использовать как параметр, в «Конструкторе запросов» необходимо ввести в ячейку строки «Условие отбора» текст приглашения, заключенный в квадратные скобки. Это приглашение будет выводиться при запуске запроса. Текст подсказки должен отличаться от имени поля, но может включать его.
На рис. 6.36 представлен параметрический запрос для получения списка сотрудников заданной кафедры. При запуске этого запроса на исполнение будет появляться окно с подсказкой (рис. 6.37), в которое нужно ввести требуемое значение параметра.
Для каждого поля можно задать не только одно конкретное значение, но и диапазон значений. Так, например, для поля, в котором отображаются даты, можно вывести приглашения «Введите начальную дату:» и «Введите конечную дату:» для определения диапазона отбираемых значений. Для этого в соответствующую ячейку строки «Условие отбора» необходимо ввести выражение Between [Введите начальную дату:] And [Введите конечную дату:].
В качестве параметров может быть использовано не одно, а несколько полей. В этом случае для каждого поля, которое предполагается использовать как параметр, в ячейку строки «Условие отбора» вводится текст приглашения, заключенный в квадратные скобки. Эти приглашения будут последовательно выводиться при запуске запроса.
6.2.16. Корректирующие запросы
Общая характеристика. К корректирующим запросам относятся запросы на обновление (Update) и на удаление (Delete) записей, а также добавление (Append, Insert)2 записей из одной таблицы или нескольких связанных таблиц в конец другой таблицы. В документации по Access к типу «запросов на изменение» отнесены не только перечисленные выше запросы, но еще и «запрос на создание таблицы». Последний запрос все-таки отличается от названных ранее: первый круг запросов меняет содержание существующих таблиц, а последний - создает новую таблицу, т.е. фактически меняет имеющуюся структуру базы данных. Поэтому «запрос на создание таблицы» выделен в отдельную группу.
Корректирующие запросы на обновление и удаление могут изменять как все записи таблицы, так и определенное их подмножество -это будет зависеть от условия отбора. Так, например, запрос, приведенный на рис. 6.38, увеличит зарплату всех сотрудников на 30% (так как условие отбора не задано). Запрос, изображенный на рис. 6.39, изменит зарплату одного конкретного сотрудника (см. условие отбора данного запроса) и установит для нее значение, указанное в запросе.
При выполнении корректирующих запросов система осуществляет контроль ограничений целостности. Так, например, если при описании таблицы было задано ограничение на максимально допустимое значение поля «Оклад», то при выполнении запроса (см. рис. 6.38) в случае нарушения ограничения может быть выдано сообщение, подобное приведенному на рис. 6.40. Если выбрать вариант «Да», то для записей, нарушающих ограничение на значение, корректировка вообще выполнена не будет. В нашем примере такой выбор будет неправильным, поскольку в этом случае у одних сотрудников зарплата будет повышена, а у других - нет. Причем потом разобраться, у кого она была повышена, а у кого - нет, будет практически невозможно. В рассматриваемой ситуации следует отказаться от выполнения запроса, скорректировать при необходимости ограничение на значение и только после этого выполнить запрос.
Для создания корректирующего запроса надо в режиме Конструктор запроса выбрать соответствующую позицию в меню Запрос (либо нажать стрелку рядом с кнопкой Тип запроса на панели инструментов). В приведенных выше примерах выбиралась позиция меню Обновление.
Чтобы просмотреть обновляемые записи перед выполнением запроса, можно щелкнуть по кнопке Вид на панели инструментов. Выводимый список будет содержать старые значения полей отобранных в запросе записей.
Внимание! Следует быть очень внимательным перед выполнением корректирующих запросов (недаром в списке запросов перед их именем стоит восклицательный знак), так как каждый их запуск на выполнение изменяет содержимое таблиц и отменить результат выполнения нельзя. В связи с этим рекомендуется сохранять резервные копии изменяемых таблиц. Это позволит восстановить ошибочно скорректированные записи.
Запрос на обновление. Для создания запроса на обновление необходимо сначала в режиме Конструктор выбрать таблицу(ы), поля которой будут корректироваться, а затем изменить тип запроса, выбрав позицию Обновление в меню Запрос (либо нажать стрелку рядом с кнопкой Тип запроса на панели инструментов и выбрать соответствующий тип). При этом вид бланка запроса изменится по сравнению с запросом на выборку: в бланке отсутствуют строки «Сортировка» и «Вывод на экран», но зато появилась строка «Обновление». В бланк запроса включаются те поля, значения которых будут изменяться. В строке «Обновление» соответствующего поля записывается его новое значение или выражение для его вычисления. При создании выражения можно воспользоваться построителем. Если обновление касается не всех записей таблицы, а только некоторых из них, то нужно обычным образом задать условия отбора. С целью убедиться, что условия отбора заданы верно, рекомендуется сначала посмотреть результаты отбора. Это можно сделать двумя способами:
просмотреть запрос в режиме таблицы;
выполнить запрос как запрос на выборку.
«Открытие» запроса на обновление означает изменение значений в базе данных. Каждое «Открытие» запроса на обновление будет означать обновление уже обновленных данных.
Запрос на удаление. Его используют для удаления группы записей, отбираемых с помощью указанных пользователем условий отбора. Сначала необходимо задать условие отбора. Перед выполнением запроса на удаление рекомендуется предварительно просмотреть результаты отбора.
Для создания запроса на удаление следует в режиме Конструктор запроса выбрать соответствующую позицию «Удаление» в меню Запрос (либо нажать стрелку рядом с кнопкой Тип запроса на панели инструментов).
На рис. 6.41 изображен запрос, приводящий к удалению из таблицы «Сотрудник» записей, соответствующих стажерам.
Внимание! Если в запросе на удаление не указать условие отбора, то будут удалены все записи. В некоторых случаях запрос-удаление приводит к удалению записей в таблицах, не включенных в запрос. Это случается, если в запрос включена таблица, находящаяся на стороне «один» отношения «один ко многим», а целостность данных обеспечивается параметром «Каскадное удаление». При удалении записей из этой таблицы будут также удалены связанные записи из таблицы, находящейся на стороне «многие».
В многотабличном запросе в бланк запроса QBE необходимо переместить символ звездочки (*) для каждой таблицы, из которой будут удаляться записи, и поля, используемые для задания условий отбора.
Запрос на добавление. Он добавляет группу записей из одной или нескольких таблиц (таблиц-источников) в конец другой таблицы (результатной таблицы). Для задания запроса такого типа следует сначала создать запрос, содержащий таблицу (таблицы), записи из которой необходимо добавить в другую таблицу. Затем в режиме Конструктор запроса нужно нажать стрелку рядом с кнопкой Тип запроса на панели инструментов и выбрать команду Добавление (либо выбрать соответствующую позицию в меню Запросы). На экране появится диалоговое окно Добавление (рис. 6.42). В поле «Имя таблицы» следует ввести имя таблицы, в которую необходимо добавить записи.
Таблица, в которую осуществляется добавление, может быть как в той же базе данных, так и в другой, причем это не обязательно должна быть база данных Access (это может быть Microsoft FoxPro, Paradox или dBASE, а также база данных SQL).
Из списка полей таблиц-источников в бланк запроса необходимо переместить поля, которые должны входить в состав добавляемых записей, а также те, которые будут использованы при определении условия отбора.
Если все поля таблицы-источника должны быть перенесены в целевую таблицу и поля в таблице-источнике и целевой таблице имеют одинаковые имена, то можно просто переместить с помощью мыши символ «звездочка» (*) в бланк запроса. Однако при работе с репликой базы данных добавлять придется все поля. Кроме того, при использовании символа «звездочка» (*), даже если структуры обеих таблиц полностью совпадают, могут возникнуть проблемы с ключами (если ключевое поле имеет тип «Счетчик», то для автоматического добавления значений счетчика не следует при создании запроса перемещать поле счетчика в бланк запроса).
Если в обеих таблицах выделенные поля имеют одинаковые имена, соответствующие имена автоматически вводятся в строку «Добавление». Если имена полей двух таблиц отличаются друг от друга, в строку «Добавление» необходимо ввести имя поля целевой таблицы, которое соответствует полю таблицы-источника.
Следует быть внимательным при создании запроса на добавление записей в таблицу. Все поля целевой таблицы, которые имеют либо свойство «Обязательное поле», либо заданные «условия на значение», должны быть включены в состав добавляемых полей, иначе ни одна запись добавлена не будет по причине нарушения ограничений целостности.