- •Глава 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.9. Просмотр ответа
Для того чтобы посмотреть ответ, можно щелкнуть мышью по кнопке Запуск («!») на панели инструментов, либо выбрать соответствующую возможность из меню Запрос/Запуск, либо щелкнуть по стрелке на кнопке Вид и выбрать из появившегося списка вид Режим таблицы. Для того чтобы опять вернуться к построению / корректировке запроса, надо выбрать режим Конструктор (рис. 6.15).
6.2.10. Определение числа записей, выводимых в ответ
По умолчанию в ответ выводятся все отобранные записи. В Access есть возможность (выходящая за рамки двухмерных табличных языков) управлять числом записей, выводимых в ответ. Указанной возможностью можно пользоваться не только для ограничения числа записей, если отобранное множество слишком велико и для пользователя является приемлемым ограничиться определенным его подмножеством, но и для создания запросов специального вида.
В ответ на запрос можно выводить не все записи, а какое-то определенное их число. Причем это число может быть задано как в абсолютных величинах (например, выдать 10 записей, отвечающих условию отбора), так и в процентах (например, 10%). Задание числа выводимых записей часто бывает удобно сочетать в запросе с упорядочением записей. Например, если на институт выделено пять именных стипендий, можно определить средний балл студентов, упорядочить записи в порядке убывания этого поля и запросить вывод пяти записей. Если появилась возможность оказать материальную помощь определенному числу низкооплачиваемых сотрудников, то записи нужно упорядочить по возрастанию поля «Оклад».
Задать число записей, выводимых в ответ, можно по-разному. Во-первых, можно позиционироваться на свободное место в верхней части окна запросов, нажать правую клавишу мыши, в появившемся меню выбрать позицию «Свойства» и в появившемся окне Свойства запроса в строке «Набор значений» указать требуемое значение (рис. 6.16). Число записей, выводимых в ответ, можно указать не только в абсолютных величинах, но и в процентах.
Другим способом задания числа записей, выводимых в ответ, является использование соответствующей кнопки (рис. 6.17) на панели конструктора запросов.
Как видим, для управления выводом определенного количества записей используются «нетабличные» возможности языка запросов. В рамках табличного языка это отобразить нельзя.
6.2.11. Формирование запросов к связанным таблицам
Если была предварительно определена схема данных (см. разд. 5.2.4), то при добавлении таблиц в запрос они будут должным образом связаны. Даже если связи между таблицами не были созданы пользователем, то при добавлении в запрос двух таблиц, при условии, что они имеют поля с одинаковым или совместимым типом данных и одно из полей связи является ключевым, связи могут быть созданы автоматически. Автоматическое объединение можно разрешить или запретить. Для этого необходимо выполнить следующую последовательность шагов.
В меню Сервис выбрать команду Параметры.
Перейти к вкладке Таблицы/Запросы.
Установить/снять флажок Автоматическое объединение.
Параметр «Автоматическое объединение» относится только к новым запросам.
Если связи не были определены предварительно и связи не созданы автоматически, то следует задать соединение таблиц вручную (так же, как это делалось при задании схемы).
Внимание! Если связь не задана (и не отменено «Автоматическое объединение»), то будет осуществляться связь каждой записи одной таблицы с каждой записью второй таблицы.
Надо осторожно относиться к формированию запросов к связанным таблицам. Как вы думаете, что будет получено в ответ на запрос, изображенный на рис. 6.18? На самом деле ответить на этот вопрос, не имея дополнительной информации, нельзя. Необходимо знать, каковы параметры объединения (если вы внимательны, то по виду линии сможете определить вид связи) и какие значения имеют свойства «Уникальные записи» и «Уникальные значения» (этого на схеме не видно). Если задано обычное («внутреннее») соединение таблиц и для свойства «Уникальные значения» задано значение «Да», то в ответ на запрос, содержащий в бланке запроса поле «ФИО» и больше ничего, будет получен список сотрудников, имеющих детей.
Исходя из вышесказанного, можно дать следующие рекомендации:
При задании запроса удаляйте из него все таблицы, поля которых не участвуют в формировании запроса.
При проектировании структуры базы данных тщательно продумывайте имена, которые даете полям разных таблиц.
Проверяйте связи, которые система задает автоматически.
Существуют понятия внутреннего, левого и правого соединения.
В Access соединение таблиц и его тип, как правило, определяются при задании схемы. При формулировании запроса следует уточнить, какой тип объединения1 был задан, и, если нужно, изменить тип соединения на тот, который необходим именно для этого запроса, поскольку тип объединения будет влиять на правильность ответа.
Изменить тип объединения в запросе можно, выделив нужную связь и нажав на правую кнопку мыши. В появившемся контекстном меню выбрать Параметры объединения (рис. 6.19) либо позицию меню Вид/Параметры объединения - появится окно Параметры объединения (рис. 6.20), в котором можно выбрать нужный для данного запроса тип объединения. Так, например, если требуется выдать список всех сотрудников, а для тех, кто имеет детей, - информацию о детях, то для соединения таблиц «Сотрудники» и «Дети» следует выбрать вторую альтернативу в окне Параметры объединения.
Запрос, приведенный на рис. 6.21, при всей своей схожести с запросом на рис. 6.18, даст иной ответ, поскольку изменен тип объединения.
Возможно создание запросов, в которых таблица соединяется сама с собой (так называемое самообъединение). Такая ситуация может возникнуть, когда в ER-модели имеются отношения на одном и том же классе объектов. Например, для класса объектов СОТРУДНИК имеется связь «Быть руководителем». В рассматриваемом примере для отражения этой связи в таблицу «Сотрудники» введено поле «Руководитель», которое содержит код сотрудника, являющегося руководителем данного сотрудника.
Чтобы объединить две копии одной и той же таблицы в запросе, необходимо в режиме Конструктор запроса дважды добавить эту таблицу в запрос. Далее надо осуществить соединение таблицы с ее копией обычным путем (переместив поле из списка полей первой таблицы в соответствующее поле в списке полей другой таблицы). На рис. 6.22 изображен запрос «Для каждого из руководителей выдать список его подчиненных». Для того чтобы в результатной таблице было понятно, что означает поле «ФИО» в каждом столбце, можно переименовать эти столбцы, назвав первый «Руководитель», второй - «Подчиненный». Для этого можно щелкнуть правой клавишей мыши по соответствующему полю, в высветившемся меню выбрать позицию Свойства, а затем в появившемся окне Свойства поля в строке «Подпись» ввести требуемый заголовок столбца (рис. 6.23). Вид результатной таблицы после проведенных действий представлен на (рис. 6.24).
При реализации запросов на связанных таблицах по ER-модели следует уточнить характер связи между соответствующими объектами (это может повлиять на формулировку запроса) и определить, какие должны быть заданы параметры объединения для данного запроса (в случае необходимости изменить эти параметры).