- •Курс «Базы данных»
- •Глава 6. Разработка пользовательских приложений в среде субд ms Access 28
- •Глава 1. Базы данных. Системы управления базами данных (субд)
- •Обзор субд
- •Основные функции субд
- •Управление данными во внешней памяти
- •Управление буферами оперативной памяти
- •Управление транзакциями
- •Журнализация и восстановление базы данных после сбоев
- •Поддержка языков баз данных
- •Контрольные вопросы
- •Глава 2. Модели данных
- •Иерархическая модель данных
- •Сетевая модель данных
- •Достоинства и недостатки ранних моделей
- •Объектная модель
- •Контрольные вопросы
- •Глава 3. Реляционная модель Основные понятия и ограничения реляционной модели
- •Математическое определение отношения. Реляционная алгебра
- •1.Объединение (r u s).
- •2.Разность (r - s).
- •3.Декартово произведение (RxS)
- •4. Проекция
- •5. Селекция
- •Контрольные вопросы
- •Глава 4. Вопросы проектирования реляционных баз данных Цели проектирования базы данных. Этапы проектирования
- •Вопросы и задания
- •Нормализация. 1,2,3 нормальные формы
- •1 Нормальная форма.
- •2 Нормальная форма.
- •3 Нормальная форма.
- •Вопросы и задания
- •Глава 5. Семантическая модель данных
- •Читатель
- •Операции над сущностями
- •Порядок построения er-модели и построение реляционной схемы базы данных из er-модели
- •Пример построения er- модели
- •Глава 6. Разработка пользовательских приложений в среде субд ms Access Объекты базы данных
- •Вопросы и задания
- •Ввод данных в таблицу
- •Вопросы и задания
- •Формы. Типы форм. Элементы управления
- •Создание формы с помощью Конструктора
- •Вопросы и задания
- •Запросы. Макросы. Отчеты Основы sql
- •Создание вложенных (подчиненных) запросов
- •Обновление записей
- •Вопросы и задания
- •Запросы qbe. Мастер запросов
- •Вопросы и задания
- •Вопросы и задания
- •Итоговый запрос
- •Перекрестный запрос
- •Вопросы и задания
- •Построение форм на основе запроса
- •Макросы
- •Разработка приложения
Контрольные вопросы
Перечислить и дать определения основных понятий реляционной модели данных: отношение, атрибут, кортеж, домен, степень отношения, мощность отношения.
Внутренние ограничения реляционной модели данных.
Перечислить и кратко охарактеризовать основные операции реляционной алгебры.
Глава 4. Вопросы проектирования реляционных баз данных Цели проектирования базы данных. Этапы проектирования
Прежде чем использовать конкретную СУБД в качестве инструмента для создания базы данных, необходимо выполнить проектирование концептуальной схемы базы данных в соответствии с правилами той модели данных, которую поддерживает данная СУБД.
Рассмотрим процесс проектирования реляционной модели базы данных.
В процессе проектирования базы данных необходимо:
Обеспечить возможность хранения в базе всех данных, необходимых для решения поставленных задач.
Разработать структуры данных с учетом внутренних ограничений модели данных, поддерживаемой конкретной СУБД.
Этапы работ
Для достижения первой цели необходимо выполнить следующие этапы работ:
Обозначить круг задач, для решения которых создается база данных.
Определить перечень информационных объектов, характеристики которых понадобятся при решении поставленных задач и должны будут храниться в базе.
Определить, какие именно характеристики или атрибуты информационных объектов будут иметь значение при решении поставленных задач.
Составить списки характеристик (атрибутов) информационных объектов.
Для достижения второй цели необходимо разместить данные в структурах, соответствующих внутренним ограничениям модели данных, поддерживаемой выбранной СУБД. В случае выбора СУБД MS Access, основанной на реляционной модели данных, эти структуры – реляционные таблицы.
Пример.
Требуется разработать базу данных для предметной области Библиотека.
Этапы работ.
Задачи, для решения которых создается база данных.
Учет всех книг, поступающих и хранимых в библиотеке.
Учет всех читателей, пользующихся библиотекой.
Учет всех операций обмена (выдачи и возврата) книг.
Поиск книги по какой-то ее характеристике (жанр, автор, название, год издания).
Поиск данных читателя.
Определение книг, пользующихся повышенным спросом.
Определение задолжников.
Перечень информационных объектов, характеристики которых понадобятся при решении поставленных задач и будут храниться в базе.
Книги Жанры Читатели Обмен книг
Списки атрибуты выделенных информационных объектов, которые будут иметь значение при решении поставленных задач и которые надо хранить в базе.
Книги(Номер_книги, Автор, Название, Код_жанра, Год_издания, Издательство, Цена)
Жанр(Код_жанра, Название_жанра, описание_жанра)
Читатель(Номер_билета, ФИО, Адрес, Телефон, Дата рождения, Пол)
Обмен_книг (Номер_операции, Номер_книги, Номер_билета,Дата выдачи,Дата возврата)
Приведение данных предметной области в соответствие требованиям модели данных, поддерживаемой конкретной СУБД
1.Уникальность записи в таблице. Первичный ключ отношения. Внешний ключ.
Внутренним ограничением или требованием, которое предъявляет к данным реляционная модель, является уникальность(неповторимость) каждой записи в каждой таблице. Каждая запись описывает конкретный экземпляр информационного обьекта и должна иметь идентификатор, по которому ее можно отличить от других записей таблицы.
В качестве такого идентификатора должен быть выбран один из атрибутов или совокупность атрибутов. (Например, номер билета для таблицы Читатель).
Атрибут (набор атрибутов), значение которого служит для однозначной идентификации записи в таблице, называется первичный ключ отношения.
Для каждой таблицы обязательно определяется первичный ключ. Роль уникального идентификатора в описании информационных обьектов предметной области Библиотека играют атрибуты Номер_книги, Код_жанра, Номер_билета, Номер_операции). Это простые, не составные, первичные ключи.
Иногда для идентификации экземпляра объекта недостаточно ключа, состоящего из одного атрибута. Например, в колледже есть несколько компьютерных классов. В каждом классе стоит 9 компьютеров. Каждый компьютер имеет индивидуальный номер от 1 до 9. Определить конкретный компьютер только по этому номеру в колледже нельзя, так как номера повторяются в каждом классе. Для уникальной идентификации компьютера требуется знать номер класса+номер машины. Эти атрибуты и являются первичным ключом отношения, хранящего информацию о компьютерах. В данном случае первичный ключ составной.
Другая важная роль первичного ключа состоит в том, что он служит для связывания таблиц. Например, в таблице Жанр есть атрибут Код_жанра. Он играет роль первичного ключа. В таблице Книги тоже есть атрибут Код_жанра. В этой таблице он является внешним ключом. Он пришел извне. Из таблицы Жанр. Если мы свяжем таблицы Книги и Жанр по этому атрибуту, из конкретной записи таблицы Книги возьмем значение атрибута код_жанра и найдем это значение в таблице Жанры, то узнаем название и описание данного жанра. Что нам дает такая связь? Она позволяет не перегружать таблицу Книги излишними подробностями о другом информационном обьекте (именно о жанре), но позволяет быстро эти подробности узнать, по значению атрибута-связки.
Таблица Жанр в данном случае называется родительской, а таблица Книги – дочерней, так как в нее мигрирует атрибут первичного ключа из таблицы Жанр.
Важное правило!
Атрибуты, по которым связываются таблицы, обязательно должны быть одинакового типа данных, чтобы связь состоялась. Нельзя связывать числовой атрибут с текстовым, но только с числовым.
2. Отсутствие избыточности данных в таблицах.
Другая важная роль первичного ключа состоит в том, что именно на основании зависимости от него других, не ключевых атрибутов производится удаление из таблиц избыточных данных. Почему вредны избыточные данные? Не только потому, что избыточные данные перегружают таблицы и физические носители информации (жесткие диски и т.п.). Избыточность порождает ошибки в процессе манипулирования данными, а именно при выполнении операций добавления, удаления или редактирования записей.
Для того, чтобы понять, как может возникнуть ошибка, уточним, что такое избыточные данные. Данные могут просто дублироваться и могут избыточно дублироваться. Рассмотрим таблицу:
Студент |
Куратор |
Телефон куратора |
Иванов |
Орлов |
222 |
Петров |
Орлов |
222 |
Сидоров |
Соколов |
333 |
В таблице дублируются фамилия куратора (Орлов) и телефон куратора(222). Имеет ли место избыточность? Избыточные данные – это данные, удаление которых не ведет к потере информации. Если мы удалим фамилию куратора в какой-либо записи, мы потеряем информацию о том, кто является куратором у конкретного студента. Следовательно, эти данные не являются избыточными. Далее. Телефон можно узнать и из первой записи таблицы, и из второй. Значит ли это, что из какой-то записи эти данные можно удалить? Если в одной из записей убрать информацию о телефоне, возникнет противоречие. Из одной записи будет следовать, что телефон у куратора есть и он такой, а из другой записи - что телефона нет вообще. Фактически, такое противоречие - это тоже потеря данных. В то же время оставить структуру таблицы прежней нельзя, т.к. она заключает в себе возможность возникновения ошибки. Если изменится телефон и это изменение будет внесено не во все записи, то данные снова станут противоречивы. Так операции удаления и исправления данных в ситуации избыточности могут породить ошибку. А если потребуется удалять не отдельные значения, а записи? Например, студент Иванов получил все двойки и был отчислен. Мы удалили запись. Та же участь постигла и Петрова. Мы опять удалили запись. Что получилось в результате? Из таблицы исчезли данные о кураторе! Стремясь удалить данные об отчисленных студентах, мы удалили данные о кураторе и потеряли информацию. Следовательно, структура рассматриваемой таблицы не является верной, она не отвечает внутренним ограничениям реляционной модели. Поэтому попытка манипулирования данными таблицы приводит к возникновению аномалий (ошибок). Таблицу следует декомпозировать, чтобы исключить избыточность, порождающую ошибку, а именно разделить на две таблицы следующим образом:
Студент |
Куратор |
Иванов |
Орлов |
Петров |
Орлов |
Сидоров |
Соколов |
Куратор |
Телефон куратора |
Соколов |
333 |
Орлов |
222 |
Структура полученных в результате декомпозиции таблиц верна. Каждый факт хранится в одном месте и данные не дублируются. Избыточности нет. Удаление данных не приведет к потере информации и изменение данных не породит ошибку. Обе таблицы при необходимости легко связать по общему атрибуту Куратор.
Процесс декомпозиции отношений с целью исключения избыточности называется нормализацией. В процессе изменения структуры таблица последовательно приводится к конкретной нормальной форме.
