Типы данных ACCESS
Текстовый (Text) - числа, буквы, знаки пунктуации и символы, не более 255 (абзац среднего размера).
Примеры: имена, адреса, номера телефонов и описания товаров . Это наиболее распространенный тип данных
Поле MEMO (Memo) - большие объемы неформатированного текста до 65 536 символов
Примеры: статьи, заметки, письма и другие короткие документы
Числовой (Number) - все многообразие числовых данных, включая отрицательные и дробные числа.
Примеры: любой тип чисел за исключением денежных значений. Хранит измерения, итоги и проценты
Денежный (Currency) - аналогичен числовому типу, но оптимизирован для хранения сумм в денежном выражении
Примеры: цены, платежи и статьи расходов
Дата/время (Date/Time) - календарная дата или время суток (или и то и другое). Не применяйте этот тип данных для задания временных интервалов (количество минут в песне), для этого больше подойдет числовой тип данных
Примеры: дни рождения, даты заказов, даты доставки и т.д.
Логический (Yes/No) - содержит одно из двух значений Да или Нет. (Можно считать их значениями Истина или Ложь)
Примеры: строго двухвариантные поля, как мужской/женской
Гиперссылка (Htperlink) - URL (uniform resource locator, унифицированный указатель информационного ресурса) сайта, адрес электронной почты или полное имя файла
Вложение (Attachment) - один или несколько отдельных файлов. Содержимое этих файлов колируется в БД
Примеры: изображения, документы Word, электронные таблицы Excel, звуковые файлы и т.д.
Счетчик (AutoNumber) - хранит число, генерируемое программой Access при вставке новой записи. Каждой записи автоматически присваивается уникальный код, идентифицирующий ее.
Примеры: применяется для уникальной идентификации каждой записи, в особенности для первичного ключа (primary key). Обычно столбец называется Код (ID)
Поле объекта OLE (OLE Object) - хранит встроенные двоичные данные, соответствующие стандарту OLE (Object Linking and Embeding, применяется для обозначения технологий на основе COM, используемых для создания составных документов внедрением и связыванием) OC Windows. Применяется редко, т.к. приводит к быстрому увеличению размера БД и другим проблемам. Почти всегда лучше выбирать тип данных Вложение
Примеры: Некоторые типы изображений и документов, созданных в других программах. Обычно применяется в БД старого стиля. В наши дни проектировщики БД используют тип данных Вложение вместо поля объекта OLE
Примечание. Индекс - это средство Access, ускоряющее поиск и сортировку данных в таблице. Ключевое поле (поле первичного ключа)) таблицы индексируется автоматически. Не допускается создание индексов для полей типа MEMO и Гиперссылка или полей объектов OLE. Свойство Индексированное поле определяет индекс, создаваемый по одному полю. Индексированное поле может содержать как уникальные, так и повторяющиеся значения. Допускается создание произвольного количества индексов.
Примечание. Индекс - это средство Access, ускоряющее поиск и сортировку данных в таблице. Ключевое поле (поле первичного ключа)) таблицы индексируется автоматически. Не допускается создание индексов для полей типа MEMO и Гиперссылка или полей объектов OLE. Свойство Индексированное поле определяет индекс, создаваемый по одному полю. Индексированное поле может содержать как уникальные, так и повторяющиеся значения. Допускается создание произвольного количества индексов.
Отбор данных с помощью фильтра
Фильтр - это набор условий, применяемых для отбора подмножества записей. В Access существуют четыре типа фильтров: фильтр по выделенному фрагменту, обычный фильтр, расширенный фильтр и фильтр по вводу.
Фильтр по выделенному фрагменту - это способ быстрого отбора записей по выделенному образцу. Например, выделите слово Доцент в любой из записей. Щелкните по кнопке Выделение на вкладке Главная. и Access выберет только те записи, для которых значение в столбце должность равно Доцент.Обратите внимание, что в строке состояния окна таблицы присутствует слово С фильтром. В дополнении к этому кнопка Применить фильтр затенена, а это означает, что используется фильтр. При отключении этой кнопки фильтры сняты. Установки фильтров не пропадут, они просто будут отключены. Фильтр по выделенному может собирать вместе критерии выбора при каждом использовании кнопки Выделение. Например, если продолжать отбор по Доцента различной специализации, то если поместить курсор в столбец Дисциплина и выделить слово Информатика, а затем щелкнуть по кнопке Выделение, то появятся все записи о Доцентах, читающих дисциплину Информатика. Можно использовать и инверсный выбор, когда выбираются все дисциплины, кроме Информатика. Для этого необходимо щелкнуть правой кнопкой (курсор мыши должен находится внутри таблицы) и выбрать Не содержит "Информатика".
Фильтрование данных производится с помощью кнопок Выделение или Дополнительно. После выбора Изменить фильтр из меню Дополнительно от таблицы остается одна запись. Каждое поле становится полем со списком (когда в нем находится курсор), в котором можно выбрать из списка все значения для данного поля. После щелчка по кнопке Применить фильтр будут выбраны записи, соответствующие измененному фильтру. Еще более сложные условия фильтрации можно задать командой Расширенный фильтр из меню Дополнительно.
Ввод и просмотр данных посредством формы
Формы обеспечивают наиболее гибкий способ ввода, редактирования, просмотра и удаления данных и фактически являются шаблонами, управляющими отображаемой информацией. Форма позволяет не только отображать много полей, но и выступать формой-меню для вызова других форм, таблиц, запросов. При вводе данных можно не только помещать вычисляемые поля в форму, но и добавлять расширенные правила проверки корректности ввода и элементы управления, например, переключатели, флажки, раскрывающиеся списки.
Поля в форме в один столбец упорядочены и представлены в виде столбцов. Такая форма может занимать одну или несколько страниц. Поля можно упорядочить как угодно. Access дает возможность использоваться большинство стандартных элементов управления Windows, которые создают привычный интерфейс при вводе данных. Линии, рамки, цвета и даже специальные эффекты позволяют создать удобные формы с привлекательным внешним видом. Ленточная и табличная формы похожи друг на друга, но табличная форма фактически повторяет вид уже знакомой таблицы и в ней ограничены возможности редактирования. А в ленточной форме доступны все виды инструментов и способы оформления фона и ячеек с данными. Выровненный вид формы похож на ленточную форму, но отличается тем, что на экран выводятся все поля с одной записью, и если полей много, то они располагаются рядами- один под другим.
Если требуется создать форму на основе одной таблицы или одного запроса, то виды форм ограничиваются вышеописанными. Но если разрабатывается форма на основе нескольких таблиц или запросов, то Access предложит создать либо подчиненные, либо связанные формы в ленточном или в табличном виде.
Виды форм:
Поля в форме в один столбец упорядочены и представлены в виде столбцов. Такая форма может занимать одну или несколько страниц. Поля можно упорядочить как угодно. Access дает возможность использоваться большинство стандартных элементов управления Windows, которые создают привычный интерфейс при вводе данных. Линии, рамки, цвета и даже специальные эффекты позволяют создать удобные формы с привлекательным внешним видом. Ленточная и табличная формы похожи друг на друга, но табличная форма фактически повторяет вид уже знакомой таблицы и в ней ограничены возможности редактирования. А в ленточной форме доступны все виды инструментов и способы оформления фона и ячеек с данными. Выровненный вид формы похож на ленточную форму, но отличается тем, что на экран выводятся все поля с одной записью, и если полей много, то они располагаются рядами- один под другим.
Если требуется создать форму на основе одной таблицы или одного запроса, то виды форм ограничиваются вышеописанными. Но если разрабатывается форма на основе нескольких таблиц или запросов, то Access предложит создать либо подчиненные, либо связанные формы в ленточном или в табличном виде.
Виды форм:
Создать форму можно несколькими способами:
- с помощью конструктора форм
- с помощью инструментов автоформы, создающих формы после нескольких щелчков мыши
- с помощью мастера форм, который проводит по процессу создания формы, задавая вопросы и конструируя форму в соответствии с ответами
Конструктор позволит создать форму самостоятельно, но для начинающих пользователей это может быть затруднительно. Это самый богатый и гибкий режим. В нем можно все, что угодно: изменять макеты, добавлять и редактировать элементы управления, изменять свойства формы. При создании формы в этом режиме становятся доступными специальные инструменты, сосредоточенные на вкладках Конструктор (Инструменты конструктора форм) и Упорядочить (Инструменты конструктора форм) Ленты.
Мастер форм дает возможность автоматически создать форму на основе выбранных полей. Этот режим наиболее удобен для всех уровней пользователей. Access в режиме диалога выясняет у пользователя, какую форму он хочет получить и автоматически ее создает. Так же возможна правка формы в Конструкторе. Мастер форм предлагает четыре вида формы: в один столбец, ленточная, табличная (повторяет ленточную, но в ней отсутсвует возможность редактирования) и выровненная(похож на ленточную, но отличается тем, что на экран выводятся все поля с одной записью, и если полей много, то они располагаются рядами - один под другим).
Автоформа это частный случай Мастера форм. Т.е. автоматически создается форма фактически без участия человека. Это может быть удобно, когда таблица одна, содержит немного полей и нужно быстро создать простую форму.
Чтобы применить Автоформу следует:
- На панели переходов найдите и выделите таблицу или запрос, содержимое которого нужно вывести в форме.
- На ленте активизируйте вкладку Создание. В разделе Формы будут выведены инструменты автоформ: Форма, Разделенная форма, Несколько элементов
- Щелкните на любом инструменте автоформ, например, на кнопке Разделенная форма
- Для сохранения формы щелкните по кнопке Сохранить на панели быстрого доступа. Активизируется диалоговое окно "Сохранение". Введите имя формы и щелкните на кнопке ОК,
Формирование запросов и отчетов для однотабличной БД
Формирование запросов
на выборку
С помощью запросов
можно просматривать, анализировать и изменять данные из нескольких таблиц.
Запросы позволяют вычислить итоговые значения и выводить их в компактном формате,
подобном формату электронной таблицы, а
также выполнять вычисления над группами записей.
В Access можно создавать следующие типы запросов:
- запрос на выборку
- запрос с параметрами
- перекрестный запрос
- запрос на изменение (запрос на удаление, обновление и добавление записей, на создание таблицы)
- запросы SQL (запросы на объединение, запросы к серверу, управляющие запросы, подчиненные запросы)
Запрос на выборку –
при его выполнении данные, удовлетворяющие условиям отбора, выбираются из одной
или из нескольких таблиц и выводятся в определенном порядке.
Примечание: простые запросы на выборку практически не отличаются от
фильтров. Более того, фильтры можно сохранять как запросы.
Можно также использовать запрос на выборку, чтобы
сгруппировать записи для вычисления сумм, средних значений, пересчета и других
действий.
Запрос с параметрами –
это запрос, при выполнении которого в его диалоговом окне пользователю
выдается приглашение ввести данные, на основе которых будет выполняться запрос.
Программа Access предлагает три способа создания запросов:
- Мастер запросов представляет собой самый легкий способ построения простого запроса
- Конструктор предлагает самый общий метод построения запросов. Он обладает удобным графическим интерфейсом, который можно применять для улучшения вашего запроса
- В Режиме SQL вы можете увидеть скрытую команду запросов, представляющую собой текстовый фрагмент, который задает конкретные действия программе Access
Чтобы создать запрос на выборку с помощью Мастера запросов,
на ленте активизируйте вкладку Создать. В
разделе Другие щелкните на кнопке
Мастер запросов. Активизируется первое окно Мастера запросов, в котором нужно
выбрать тип запроса:
· Простой
запрос позволит создать с помощью Мастера запрос на выборку из определенных
полей и таблиц или других запросов
·
Перекрестный
запрос - запрос на основе существующего запроса
· Повторяющиеся
запросы - будет создан запрос на
поиск повторяющихся записей в простой таблице или в запросе
· Записи без
подчиненных – запрос на поиск записей, которым не соответствует ни одна
запись в подчиненной таблице. Такой запрос используется для многотабличных БД
Может возникнуть вопрос: как создавать запросы с параметрами
и запросы на изменение, если при создании запроса они явно не указаны? Следует
отметить, что основой для всех этих запросов является запрос на выборку, т.е.
сначала необходимо определить набор данных, с которыми хотите работать. Затем
для созданного запроса на выборку надо перейти в режим конструктора. Задание
параметров производится в строке Условия отбора для соответствующих полей.
Доступ к запросам на изменение осуществляется через вкладку Конструктор -> Тип запроса
При выполнении запроса на выборку Access извлекает
записи из таблицы и формирует результирующий набор данных. Он выглядит, как
таблица, хотя ею и не является. Результирующий набор данных является динамическим (или виртуальным) набором
записей и не хранится в БД.
После закрытия запроса результирующий набор данных этого
запроса прекращает свое существование. Хотя сам по себе динамический набор данных больше не существует, данные,
которые в нем содержались, остаются в базовых таблицах.
При сохранении запроса остается только структура запроса –
перечень таблиц, список полей, порядок сортировки, ограничения на записи, тип
запроса и т.д. При каждом выполнении запрос создает новый набор результирующих
данных, поэтому запрос автоматически отображает любые изменения, происшедшие в
базовых таблицах с момента последнего запуска этого запроса (даже в реальном
времени в многопользовательской среде).
Для сохранения запроса следует выполнить следующие действия.
Выполните команду Сохранить в меню Office или щелкните Сохранить в панели
быстрого доступа. Если запрос сохраняется впервые, введите новое имя запроса в
диалоговом окне «Сохранение».
Формирование отчетов
Отчет – это гибкое и эффективное средство для организации
просмотра и распечатки итоговой информации. В отчете можно получить результаты
сложных расчетов, статистических сравнений, а также поместить в него рисунки и
диаграммы.
Основное различие между отчетами и формами заключается в их
назначении. Если формы задуманы преимущественно для ввода данных, то отчеты –
для просмотра данных. В формах используются вычисляемые поля (обычно с помощью вычислений
на основе полей в текущей записи). В отчетах вычисляемые поля (итоги)
формируются на основе общей группы записей, страницы записей или всех записей
отчета. Всё, что можно сделать с формой (за исключением ввода данных), можно
сделать и с отчетом. Действительно, форму можно сохранить в виде отчета, а
затем изменить элементы управления формы в окне конструктора отчета.
Создавать отчеты в БД можно четырьмя способами:
- Сохранением другого объекта БД как отчета
- С помощью автоотчета на основе таблицы или запроса
- С помощью мастера отчетов
- В режиме конструктора отчета
На вкладке Создание есть
раздел Отчеты, в котором имеются
следующие средства для создания отчетов:
Кнопка Отчет. Одним
щелчком создается простой отчет (автоотчет), содержащий все поля выделенной
таблицы (или запроса). К первому полю добавляется итоговое значение,
соответствующее типу данных поля. Отчет содержит номера страниц, дату, время
создания, заголовок, повторяющий имя таблицы или запроса, а также формальную
эмблему. После создания отчет открывается в режиме макета.
Кнопка Наклейки. Запускается
мастер создания наклеек, в диалоговых окнах которого вы задаете размер наклеек,
их тип и количество, шрифт и его атрибуты, поля из выделенной таблицы (или
запроса), которые следует разместить на наклейках, сортировку записей, а также
имя отчета. Отчет после создания открывается в режиме предварительного
просмотра.
Кнопка Пустой отчет. Создается
заготовка пустого отчета, который открывается в режиме макета. Для добавления
полей открывается панель Список полей. Можно
построить источник данных в виде запроса. Перед щелчком этой кнопки не нужно
выделять таблицу или запрос.
Кнопка Мастер отчетов.
Запускается мастер создания отчетов, который позволяет выбирать поля из
различных таблиц или запросов, задавать вид представления данных, группировку и
сортировку, стиль оформления и имя отчета. Мастер позволяет строить самые
сложные отчеты. От пользователя требуется только корректно заполнять элементы
управления в его диалоговых окнах. Отчет открывается в режиме предварительного
просмотра или конструктора.
Кнопка Конструктор
отчетов. Создает заготовку пустого отчета, которая открывается в режиме
конструктора. Для добавления полей открывается панель Список полей. Можно построить источник данных в виде запроса. Перед
щелчком этой кнопки не нужно выделять таблицу или запрос. Отчет получает
формальное имя Отчет1.
Созданный любым из описанных выше способов отчет можно затем
изменять или настраивать в режимах конструктора и макета.
Нормализация таблиц-отношений
В реляционной БД на каждое отношение накладывается такое ограничение - они должны быть нормализованы.
Нормализация отношений - формальный аппарат ограничений на формирование отношений (таблиц), который позволяет устранить дублирование, обеспечивает непротиворечивость хранимых в БД, уменьшает трудозатраты на ведение (ввод, корректировку) БД.
Основателем реляционной модели данных Э.Коддом выделены три нормальные формы отношений. Этот набор в дальнейшем был дополнен нормальной формой Бойса-Кодда, и далее четвертой и пятой нормальными формами.
Первая нормальная форма
Наиболее простой нормальной формой является первая, суть которой определяется требованием атомарности (неделимости) полей и единственности значений по полям а реляционной модели отношений.
Чтобы привести это отношение к нормализованному виду, надо избавиться от сложного атрибута "Спорт". Тогда полученное отношение СТУДЕНТ (Фамилия, Вид_спорта, Курс, Специальность, Спорт_разряд) является нормализованными. Ключ в нем является составным, состоящим из атрибутов "Фамилия" и "Вид спорта"
Нормализация отношений - формальный аппарат ограничений на формирование отношений (таблиц), который позволяет устранить дублирование, обеспечивает непротиворечивость хранимых в БД, уменьшает трудозатраты на ведение (ввод, корректировку) БД.
Основателем реляционной модели данных Э.Коддом выделены три нормальные формы отношений. Этот набор в дальнейшем был дополнен нормальной формой Бойса-Кодда, и далее четвертой и пятой нормальными формами.
Первая нормальная форма
Наиболее простой нормальной формой является первая, суть которой определяется требованием атомарности (неделимости) полей и единственности значений по полям а реляционной модели отношений.
Отношение называется нормализованным или приведенным к первой нормальной форме, если все его атрибуты простые (далее неделимы). Преобразование отношения к первой нормальной форме может привести к увеличению количества реквизитов (полей) отношения и изменению ключа.
Пример: отношение СТУДЕНТ (Номер, Фамилия, Имя, Отчество, Дата, Группа) находится в первой нормальной форме.
Вторая нормальная форма
Чтобы рассмотреть вопрос приведения отношений ко второй нормальной форме, необходимо дать пояснения к таким понятиям, как функциональная зависимость и полная функциональная зависимость
Описательные реквизиты информационного объекта логически связаны общим для них ключом, эта связь носит характер функциональной зависимости.
Функциональная зависимость реквизитов - зависимость, при которой в экземпляре информационного объекта определенному значению ключевого реквизита соответствует только одно значение описательного реквизита.
Такое определение функциональной зависимости позволяет при анализе всех взаимосвязей реквизитов предметной области выделить самостоятельные информационные объекты.
Функциональная полная зависимость неключевых атрибутов заключается в том, что каждый неключевой атрибут функционально зависит в целом от составного ключа, но не зависит отдельно от любой части составного ключа.
Отношение будет находиться во второй нормальной форме, если оно находится в первой нормальной форме, и каждый неключевой атрибут функционально полно зависит от составного ключа.
Пример: Отношение СТУДЕНТ (Номер, Фамилия, Имя, Отчество, Группа) находится в первой и во второй нормальной форме одновременно, так как описательные реквизиты однозначно определены и функционально зависят от ключа Номер. Отношение УСПЕВАЕМОСТЬ (Номер, Фамилия, Имя, Отчество, Дисциплина, Оценка) находится в первой нормальной форме и имеют составной ключ Номер+Дисциплина. Это отношение не находится в нормальной форме, т.к. атрибуты Фамилия, Имя, Отчество не находятся в полной функциональной зависимости с составным ключом отношения.
Третья нормальная форма
Понятие третьей нормальной формы основывается на понятии нетранзитивной зависимости.
Транзитивная зависимость наблюдается в том случае, если один из двух описательных реквизитов зависит от ключа, а другой описательный реквизит зависит от первого описательного реквизита.
Отношение будет находиться в третьей нормальной форме, если оно находится во второй нормальной форме, и каждый неключевой атрибут нетранзитивно зависит от первичного ключа.
Пример: если в состав описательных реквизитов информационного объекта СТУДЕНТ включить фамилию старосты группы (Староста), которая определяется только номером группы, то одна и та же фамилия старосты будет многократно повторяться в разных экземплярах данного информационного объекта. В этом случае наблюдаются затруднения в корректировке фамилии старосты в случае назначения нового старосты, а также неоправданный расход памяти для хранения дублированной информации.
Для устранения транзитивной зависимости описательных реквизитов необходимо провести расщепление исходного информационного объекта. В результате расщепления часть реквизитов удаляется из исходного информационного объекта и включается в состав других информационных объектов.
Расщепление информационного объекта, содержащего транзитивную зависимость описательных реквизитов показано ниже:
Пример: отношение СТУДЕНТ (Номер, Фамилия, Имя, Отчество, Дата, Группа) находится в первой нормальной форме.
Вторая нормальная форма
Чтобы рассмотреть вопрос приведения отношений ко второй нормальной форме, необходимо дать пояснения к таким понятиям, как функциональная зависимость и полная функциональная зависимость
Описательные реквизиты информационного объекта логически связаны общим для них ключом, эта связь носит характер функциональной зависимости.
Функциональная зависимость реквизитов - зависимость, при которой в экземпляре информационного объекта определенному значению ключевого реквизита соответствует только одно значение описательного реквизита.
Такое определение функциональной зависимости позволяет при анализе всех взаимосвязей реквизитов предметной области выделить самостоятельные информационные объекты.
Функциональная полная зависимость неключевых атрибутов заключается в том, что каждый неключевой атрибут функционально зависит в целом от составного ключа, но не зависит отдельно от любой части составного ключа.
Отношение будет находиться во второй нормальной форме, если оно находится в первой нормальной форме, и каждый неключевой атрибут функционально полно зависит от составного ключа.
Пример: Отношение СТУДЕНТ (Номер, Фамилия, Имя, Отчество, Группа) находится в первой и во второй нормальной форме одновременно, так как описательные реквизиты однозначно определены и функционально зависят от ключа Номер. Отношение УСПЕВАЕМОСТЬ (Номер, Фамилия, Имя, Отчество, Дисциплина, Оценка) находится в первой нормальной форме и имеют составной ключ Номер+Дисциплина. Это отношение не находится в нормальной форме, т.к. атрибуты Фамилия, Имя, Отчество не находятся в полной функциональной зависимости с составным ключом отношения.
Третья нормальная форма
Понятие третьей нормальной формы основывается на понятии нетранзитивной зависимости.
Транзитивная зависимость наблюдается в том случае, если один из двух описательных реквизитов зависит от ключа, а другой описательный реквизит зависит от первого описательного реквизита.
Отношение будет находиться в третьей нормальной форме, если оно находится во второй нормальной форме, и каждый неключевой атрибут нетранзитивно зависит от первичного ключа.
Пример: если в состав описательных реквизитов информационного объекта СТУДЕНТ включить фамилию старосты группы (Староста), которая определяется только номером группы, то одна и та же фамилия старосты будет многократно повторяться в разных экземплярах данного информационного объекта. В этом случае наблюдаются затруднения в корректировке фамилии старосты в случае назначения нового старосты, а также неоправданный расход памяти для хранения дублированной информации.
Для устранения транзитивной зависимости описательных реквизитов необходимо провести расщепление исходного информационного объекта. В результате расщепления часть реквизитов удаляется из исходного информационного объекта и включается в состав других информационных объектов.
Расщепление информационного объекта, содержащего транзитивную зависимость описательных реквизитов показано ниже:
На практике третья нормальная форма устраняет большинство аномалий схем таблиц-отношений, а также ситуации дублирования данных, и после декомпозиции исходных таблиц отношений до третьей нормальной формы процесс нормализации заканчивается. Вместе с тем в некоторых случаях третью нормальную форму можно также улучшить, в частности приведением таблицы - отношения в нормальную форму Бойса-Кодда.
Такие ситуации связаны с наличием, так называемых детерминантов совокупности атрибутов (составных атрибутов), от которых функционально полно зависят другие атрибуты. В результате таблица может находится в третьей нормальной форме, т.е. все его неключевые атрибуты взаимно функционально независимы, но имеется полная функциональная зависимость некоторых атрибутов от совокупности других атрибутов (детерминантов). Пример приведения таблицы из третьей нормальной формы в форму Бойса-Кодда:
В данной таблице имеются два детерминанта - ("Лич. № сотр.", "Операция") и ("Фамилия", "Операция"), от каждого из которых функционально полно зависит поле-атрибут "Мероприятие". Для приведения отношения к нормальной форме Бойса-Кодда необходимо разбить детерминанты. Так, в первом отношение из первой пары детерминантов забирается поле "Лич. "сотр." и становится уникальным ключом, а из второй пары детерминантов забирается поле "Фамилия", во второе отношение из первой пары детерминантов забирается поле "Лич. № сотр.", а из второй пары детерминантов забирается "Операция" и оба поля становятся составным ключом, поскольку однозначно идентифицируют поле "Мероприятие".
Таблица-отношение находится в нормальной форме Бойса-Кодда тогда и только тогда, когда каждый его детерминант является возможным ключом. Очевидно, что если в таблице имеется всего один возможный ключ, то он одновременно является детерминантом, и нормальная форма Бойса-Кодда совпадет с третьей нормальной формой. Поэтому иногда нормальную форму Бойса-Кодда считают частным случаем третьей нормальной формы.
Встречаются также случаи, требующие улучшения и нормальной формы Бойса-Кодда. Такие ситуации связаны с многозначной зависимостью атрибутов.
Таблица-отношение находится в четвертной нормальной форме тогда, когда в случае существования многозначной зависимости атрибута Y от атрибута X все остальные атрибуты функционально зависят от атрибута X.
Пример декомпозиции таблицы из нормальной формы Бойса-Кодда в четвертую нормальную форму:
Исходя из примера, будем считать, что каждый сотрудник, привлеченный к какой-либо операции, в обязательном порядке участвует во всех проводимых в рамках данной операции мероприятиях. В этом случае единственно возможным ключом является совокупность всех трех полей-атрибутов (каждый сотрудник может участвовать в разных операциях, в одной операции может участвовать несколько сотрудников).
Так как имеется единственный возможный составной ключ, то данная таблица автоматически находится в нормальной форме Бойса-Кодда. При этом имеется многозначная зависимость поля-атрибута "Фамилия" от поля-атрибута "Операция" (для любой пары значений атрибутов "Операция" - "Мероприятие" значение атрибута "Фамилия" фактически определяется только значением атрибута "Операция" при сформулированном выше условии участия каждого сотрудника автоматически во всех мероприятиях данной операции). В такой ситуации для внесения информации о новом сотруднике, вовлекаемом в какую-либо операцию, придется добавить столько строк-кортежей, сколько мероприятий проводится в рамках данной операции.
Приведение таблицы в четвертую нормальную форму основывается на теореме Фейджина, в которой доказывается возможность проецирования без потерь таблицы с атрибутами X, Y. Z в две таблицы с атрибутами X,Y и X,Z, когда существует многозначная зависимость атрибута Y от атрибута X.
Наиболее сложной при нормализации является пятая нормальная форма, связанная с наличием в таблице-отношении зависимостей соединения. В таблице-отношении с полями-атрибутами X, Y, ..., Z имеется зависимость соединения тогда и только тогда, когда таблица может быть без потерь восстановлена на основе операций соединения своих проекций.
Таблица-отношение может находиться в четвертой нормальной форме, но когда в ней имеется зависимость соединения, могут возникать аномалии при операциях добавления/удаления строк-кортежей.
Рассмотрим пример декомпозиции таблицы из четвертой в пятую нормальную форму.
Ключом таблицы является совокупность всех трех полей-атрибутов, так как сотрудник может входить в состав разных групп и участвовать в разных мероприятиях, каждое из которых может проводиться разными группами. В таблице нет детерминантов, отсутствуют функциональные и многозначные зависимости, т.е. таблица находится в четвертой нормальной форме. Тем не менее в данной таблице нельзя удалить информацию по участию Бонда в мероприятии "Контакт", не удалив при этом вообще информацию о Бонде в таблице. Нельзя также добавить строку-запись о вхождении Бонда еще и в группу "F", если при этом он не участвовал ни в одном мероприятии.
Подобные аномалии устраняются приведением таблицы в пятую нормальную форму. Таблица-отношение находится в пятой нормальной форме тогда и только тогда, когда любая зависимость соединения в ней следует из существования некоторого вхождения ключа.
Приведение таблицы в пятую нормальную форму осуществляется путем декомпозиции сразу на несколько таблиц-отношений. Если предположить, что в рассмотренной таблице имеется зависимость соединения по составным атрибутам "Фамилия"-"Группа", "Фамилия"- "Мероприятие", "Группа"-"Мероприятие", то, разбив таблицу на три проекции по соответствующим полям-атрибутам, можно удовлетворить требованиям пятой нормальной формы.
Из-за нетривиальности зависимости соединения пятая нормальная форма практически не используется.
Операция над отношениями
Операциями, выполняемыми на уровне строк отношений, являются включение, удаление, обновление.
Включить - добавляет новую строку (кортеж) в таблицу-отношение. Для выполнения этой операции требуется задать имя таблицы и указать значения атрибутов новой строки (значения ключа задается обязательно). Добавить новую строку со значением ключа, которое уже есть в таблице, невозможно.
Удалить - удаляет одну или группу кортежей (строк-записей). Для выполнения этой операции требуется задать имя таблицы и указать значение первичного ключа удаляемой строки. Для удаления группы строк надо задать значение вторичного ключа
Обновить - изменяет значение не ключевых атрибутов у одного или группы кортежей. Для обновления требуется задать имя таблицы, значение первичного ключа для идентификации обновляемой строк, а также указать имена атрибутов и их новые значения.
Операции над отношениями.
Основной единицей обработки в операциях реляционной модели данных является отношение, а не отдельные ее записи. При этом результатом обработки всегда является новая таблица-отношение, которая также может быть обработана.
Степенью отношения называется число входящих в него атрибутов. Мощностью (кардинальным числом) отношения называется число кортежей отношения.
При выполнении некоторых операций отношения должны иметь совместимые схемы, т.е. иметь одинаковую степень и одинаковые типы соответствующих атрибутов.
Основными операциями над отношениями в реляционной БД являются следующие восемь:
- традиционные операции над множествами, такие как объединение, пересечение, разность, декартово произведение, деление;
- специальные реляционные операции проекции, соединения и выбора.
Совокупность этих операций образует полную алгебру отношений.
- Объединение. Операция выполняется над двумя совместимыми отношениями: R1, R2 (операнды). В результате операции объединения строится новое отношение R = R1 U R2 (результат). Отношение R имеет тот же состав атрибутов и совокупность кортежей исходных отношений. Причем в эту совокупность не включаются дубликаты. Результат объединения включает все кортежи первого отношения и недостающие кортежи из второго отношения.
- Пересечение. Операция выполняется над двумя совместимыми отношениями R1, R2. Результирующее отношение RP = R1 Э R2, содержит одинаковые кортежи, которые есть в каждом из двух исходных, т.е. результат пересечения содержит только те кортежи первого отношения, которые есть во втором. Результат пересечения имеет тот же состав атрибутов, как и в исходных.
- Вычитание. Операция выполняется над двумя совместимыми отношениями R1, R2 с идентичным набором атрибутов. В результате операции вычитания строится новое отношение RV = R1 - R2 с идентичным набором атрибутов, содержащее только те кортежи первого отношения R1, которые не повторяются в другом отношении R2.
- Декартово произведение выполняется над двумя отношениями R1, R2 с разными схемами. В результате операции декартова произведения образуется новое отношение RD = R1 * R2, которое включает все атрибуты исходных отношений. Результирующее отношение состоит из всевозможных сочетаний кортежей исходных отношений R1, R2, которые образуются путем сцепления каждого кортежа первой таблицы-отношения к каждому кортежу второй таблицы-отношения. Число кортежей декартова произведения равно произведению количеств кортежей в исходных отношениях, т.е. степень результирующего отношения равна сумме степеней отношений-операндов. а мощность - произведению их мощностей.
- Деление. Операция выполняется над двумя отношениями R1, R2, имеющими в общем случае разные структуры и некоторые одинаковые атрибуты. Первое отношение называется делимым, а второе делителем. В результате операции образуется новое отношение. структура которого получается исключением из множества атрибутов отношения R1, множества атрибутов отношения R2. Отношение-делитель должно содержать подмножество атрибутов отношения делимого. Результирующее отношение содержит только те атрибуты делимого, которых нет в делителе. Результирующие строки не должны содержать дубликаты.
- Проекция. Результирующее отношение (RPR) включает часть атрибутов исходного отношения R, на которые выполняется проекция. Оно может содержать меньше кортежей, так как после отбрасывания в исходном отношении R части атрибутов (возможного исключения первичного ключа) могут образоваться кортежи, дублирующие друг друга. дублирующие кортежи из результирующего отношения исключаются и поэтому мощность итоговой таблицы может быть равна или меньше исходной. Проекция позволяет переупорядочивать домены в отношении.
- Соединение выполняется для заданного условия соединения над двумя логически связанными отношениями. Исходные отношения R1 и R2 имеют сходные структуры, в которых есть одинаковые атрибуты - внешние ключи (ключи связи). Операция соединения формирует новое отношение, структура которого является совокупностью всех атрибутов исходных отношений. Результирующие кортежи формируются объединением каждого кортежа из R1 с теми кортежами R2, для которых выполняется условие. При этом условием, как правило, являются одинаковые значения внешнего ключа в исходных отношениях.
- Выбор - операция выполняется над одним отношением R. Для отношения R по заданному условию (предикату) осуществляется выборка подмножества кортежей. Результирующее отношение имеет ту же структуру, но число его кортежей будет меньше (или равно) исходному.
Организация данных
Одной из важнейших достоинств реляционных БД состоит в том, что можно хранить логически сгруппированные данные в разных таблицах и задавать связи между ними, объединяя их в единую базу.
Первичные ключи гарантируют уникальность записей в таблице, а поля первичных ключей используются для связи таблиц. Общее поле связи в другой таблице может не быть в ней первичным ключом. Связующее поле - это поле с тем же типом данных, что и у первичного ключа таблицы связи. Поле, используемое для связи с полем первичного ключа в другой таблице, называется внешним ключом. В отличие от первичного ключа, который должен создаваться особым образом, внешним ключом может быть всякое поле, использованное для связи.
В Access можно задать три вида связей между таблицами: Один-ко-многим, Многие-ко-многим, и Один-ко-многим.
Целостность данных
Целостность данных означает систему правил, используемых в СУБД Access для поддержания связей между записями в связанных таблицах, а также обеспечивает защиту от случайного удаления или изменения связанных данных. Контролировать целостность данных можно, если выполнены следующие условия:
- связанное поле (поле, посредством которого осуществляется связь) одной таблицы является ключевым полем или имеет уникальный индекс
- связанные поля имеют один тип данных. Здесь существует исключение. Поле счетчика может быть связано с числовым полем, если оно имеет формат Длинное целое
- обе таблицы принадлежат одной базе данных Access. Если таблицы являются связанными, то они должны быть таблицами Access. Для установки целостности данных БД, в которых находятся таблицы, должна быть открыта такая возможностью Для связанных таблиц из БД других форматов установить целостность данных невозможно.
Формирование сложных запросов. Краткая справка
В перекрестном запросе отображаются результаты статистических расчетов (таких, как суммы, количество записей, средние значения), выполненных по данным из одного поля таблицы. Эти результаты группируются по двум наборам данных, один из которых расположен в левом столбце таблицы, а второй - в верхней строке. Например, нам надо узнать средний стаж работы ассистентов, доцентов и профессоров на разных кафедрах (на основе таблицы Преподаватели). Перекрестный запрос позволит легко решить эту задачу, создав таблицу, в которой заголовками строк будут служить должности, заголовками столбцов - названия кафедр, а в ячейках будут рассчитаны средние значения стажа преподавателей.
Запрос на изменение - это запрос, который за одну операцию вносит изменения в несколько записей. Существует четыре типа запросов на изменение: на удаление, обновление и добавление записей, а также на создание таблицы.
Запрос на удаление удаляет группу записей, удовлетворяющих заданным условиям, из одной или нескольких таблиц. С помощью запроса на удаление можно удалять только всю запись, а не отдельные поля внутри нее.
Запрос на обновление записей вносит общие изменения в группу записей одной или нескольких таблиц.
Запрос на добавление добавляет группу записей из одной или нескольких таблиц в конец одной или нескольких таблиц.
Запрос на создание таблицы создает новую таблицу на основе всех или части данных из одной или нескольких таблиц.
Запрос SQL - это запрос, создаваемый при помощи инструкций SQl.
Комментариев нет:
Отправить комментарий