четверг, 9 июня 2016 г.

Разработка реляционных БД в СУБД MS Access (по методическому пособию Ефремовой Л.И.)

Типы данных 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 существуют четыре типа фильтров: фильтр по выделенному фрагменту, обычный фильтр, расширенный фильтр и фильтр по вводу.

Фильтр по выделенному фрагменту - это способ быстрого отбора записей по выделенному образцу. Например, выделите слово Доцент в любой из записей. Щелкните по кнопке Выделение на вкладке Главная. и Access выберет только те записи, для которых значение в столбце должность равно Доцент.Обратите внимание, что в строке состояния окна таблицы присутствует слово С фильтром. В дополнении к этому кнопка Применить фильтр затенена, а это означает, что используется фильтр. При отключении этой кнопки фильтры сняты. Установки фильтров не пропадут, они просто будут отключены. Фильтр по выделенному может собирать вместе критерии выбора при каждом использовании кнопки Выделение. Например, если продолжать отбор по Доцента различной специализации, то если поместить курсор в столбец Дисциплина и выделить слово Информатика, а затем щелкнуть по кнопке Выделение, то появятся все записи о Доцентах, читающих дисциплину Информатика. Можно использовать и инверсный выбор, когда выбираются все дисциплины, кроме Информатика. Для этого необходимо щелкнуть правой кнопкой (курсор мыши должен находится внутри таблицы) и выбрать Не содержит "Информатика".

Фильтрование данных производится с помощью кнопок Выделение или Дополнительно. После выбора Изменить фильтр из меню Дополнительно от таблицы остается одна запись. Каждое поле становится полем со списком (когда в нем находится курсор), в котором можно выбрать из списка все значения для данного поля. После щелчка по кнопке Применить фильтр будут выбраны записи, соответствующие измененному фильтру. Еще более сложные условия фильтрации можно задать командой Расширенный фильтр из меню Дополнительно.

Ввод и просмотр данных посредством формы

Формы обеспечивают наиболее гибкий способ ввода, редактирования, просмотра и удаления данных и фактически являются шаблонами, управляющими отображаемой информацией. Форма позволяет не только отображать много полей, но и выступать формой-меню для вызова других форм, таблиц, запросов. При вводе данных можно не только помещать вычисляемые поля в форму, но и добавлять расширенные правила проверки корректности ввода и элементы управления, например, переключатели, флажки, раскрывающиеся списки.

Поля в форме в один столбец упорядочены и представлены в виде столбцов. Такая форма может занимать одну или несколько страниц. Поля можно упорядочить как угодно. Access дает возможность использоваться большинство стандартных элементов управления Windows, которые создают привычный интерфейс при вводе данных. Линии, рамки, цвета и даже специальные эффекты позволяют создать удобные формы с привлекательным внешним видом. Ленточная и табличная формы похожи друг на друга, но табличная форма фактически повторяет вид уже знакомой таблицы и в ней ограничены возможности редактирования. А в ленточной форме доступны все виды инструментов и способы оформления фона и ячеек с данными. Выровненный вид формы похож на ленточную форму, но отличается тем, что на экран выводятся все поля с одной записью, и если полей много, то они располагаются рядами- один под другим.
Если требуется создать форму на основе одной таблицы или одного запроса, то виды форм ограничиваются вышеописанными. Но если разрабатывается форма на основе нескольких таблиц или запросов, то Access предложит создать либо подчиненные, либо связанные формы в ленточном или в табличном виде.

Виды форм:






Создать форму можно несколькими способами:
  • с помощью конструктора форм
  • с помощью инструментов автоформы, создающих формы после нескольких щелчков мыши
  • с помощью мастера форм, который проводит по процессу создания формы, задавая вопросы и конструируя форму в соответствии с ответами
Конструктор позволит создать форму самостоятельно, но для начинающих пользователей это может быть затруднительно. Это самый богатый и гибкий режим. В нем можно все, что угодно: изменять макеты, добавлять и редактировать элементы управления, изменять свойства формы. При создании формы в этом режиме становятся доступными специальные инструменты, сосредоточенные на вкладках Конструктор (Инструменты конструктора форм) и Упорядочить (Инструменты конструктора форм) Ленты. 

Мастер форм дает возможность автоматически создать форму на основе выбранных полей. Этот режим наиболее удобен для всех уровней пользователей. Access в режиме диалога выясняет у пользователя, какую форму он хочет получить и автоматически ее создает. Так же возможна правка формы в Конструкторе. Мастер форм предлагает четыре вида формы: в один столбец, ленточная, табличная (повторяет ленточную, но в ней отсутсвует возможность редактирования) и выровненная(похож на ленточную, но отличается тем, что на экран выводятся все поля с одной записью, и если полей много, то они располагаются рядами - один под другим).

Автоформа это частный случай Мастера форм. Т.е. автоматически создается форма фактически без участия человека. Это может быть удобно, когда таблица одна, содержит немного полей и нужно быстро создать простую форму.

Чтобы применить Автоформу следует:
  1. На панели переходов найдите и выделите таблицу или запрос, содержимое которого нужно вывести в форме.
  2. На ленте активизируйте вкладку Создание. В разделе Формы будут выведены инструменты автоформ: Форма, Разделенная форма, Несколько элементов
  3. Щелкните на любом инструменте автоформ, например, на кнопке Разделенная форма
  4. Для сохранения формы щелкните по кнопке Сохранить на панели быстрого доступа. Активизируется диалоговое окно "Сохранение". Введите имя формы и щелкните на кнопке ОК,

Формирование запросов и отчетов для однотабличной БД

Формирование запросов на выборку

С  помощью запросов можно просматривать, анализировать и изменять данные из нескольких таблиц. Запросы позволяют вычислить итоговые значения и выводить их в компактном формате, подобном формату электронной таблицы,  а также выполнять вычисления над группами записей.

В Access можно создавать следующие типы запросов:
  • запрос на выборку
  • запрос с параметрами
  • перекрестный запрос
  • запрос на изменение (запрос на удаление, обновление и добавление записей, на создание таблицы)
  • запросы SQL (запросы на объединение, запросы к серверу, управляющие запросы, подчиненные запросы)

Запрос на выборку – при его выполнении данные, удовлетворяющие условиям отбора, выбираются из одной или из нескольких таблиц и выводятся в определенном порядке.

Примечание: простые запросы на выборку практически не отличаются от фильтров. Более того, фильтры можно сохранять как запросы.

Можно также использовать запрос на выборку, чтобы сгруппировать записи для вычисления сумм, средних значений, пересчета и других действий.

Запрос с параметрами – это запрос, при выполнении которого в его диалоговом окне пользователю выдается приглашение ввести данные, на основе которых будет выполняться запрос.

Программа Access предлагает три способа создания запросов:
  1. Мастер запросов представляет собой самый легкий способ построения простого запроса
  2.  Конструктор предлагает самый общий метод построения запросов. Он обладает удобным графическим интерфейсом, который можно применять для улучшения вашего запроса
  3. В Режиме SQL вы можете увидеть скрытую команду запросов, представляющую собой текстовый фрагмент, который задает конкретные действия программе Access 
Чтобы создать запрос на выборку с помощью Мастера запросов, на ленте активизируйте вкладку Создать. В разделе Другие щелкните на кнопке Мастер запросов. Активизируется первое окно Мастера запросов, в котором нужно выбрать тип запроса:

·  Простой запрос позволит создать с помощью Мастера запрос на выборку из определенных полей и таблиц или других запросов
·         Перекрестный запрос - запрос на основе существующего запроса
·     Повторяющиеся запросы -   будет создан запрос на поиск повторяющихся записей в простой таблице или в запросе
·       Записи без подчиненных – запрос на поиск записей, которым не соответствует ни одна запись в подчиненной таблице. Такой запрос используется для многотабличных БД

Может возникнуть вопрос: как создавать запросы с параметрами и запросы на изменение, если при создании запроса они явно не указаны? Следует отметить, что основой для всех этих запросов является запрос на выборку, т.е. сначала необходимо определить набор данных, с которыми хотите работать. Затем для созданного запроса на выборку надо перейти в режим конструктора. Задание параметров производится в строке Условия отбора для соответствующих полей. Доступ к запросам на изменение осуществляется через вкладку Конструктор -> Тип запроса

При выполнении запроса на выборку Access извлекает записи из таблицы и формирует результирующий набор данных. Он выглядит, как таблица, хотя ею и не является. Результирующий набор данных является динамическим (или виртуальным) набором записей и не хранится в БД.

После закрытия запроса результирующий набор данных этого запроса прекращает свое существование. Хотя сам по себе динамический  набор данных больше не существует, данные, которые в нем содержались, остаются в базовых таблицах.  

При сохранении запроса остается только структура запроса – перечень таблиц, список полей, порядок сортировки, ограничения на записи, тип запроса и т.д. При каждом выполнении запрос создает новый набор результирующих данных, поэтому запрос автоматически отображает любые изменения, происшедшие в базовых таблицах с момента последнего запуска этого запроса (даже в реальном времени в многопользовательской среде).

Для сохранения запроса следует выполнить следующие действия. Выполните команду Сохранить в меню Office или щелкните Сохранить в панели быстрого доступа. Если запрос сохраняется впервые, введите новое имя запроса в диалоговом окне «Сохранение».

Формирование отчетов

Отчет – это гибкое и эффективное средство для организации просмотра и распечатки итоговой информации. В отчете можно получить результаты сложных расчетов, статистических сравнений, а также поместить в него рисунки и диаграммы.

Основное различие между отчетами и формами заключается в их назначении. Если формы задуманы преимущественно для ввода данных, то отчеты – для просмотра данных. В формах используются вычисляемые поля (обычно с помощью вычислений на основе полей в текущей записи). В отчетах вычисляемые поля (итоги) формируются на основе общей группы записей, страницы записей или всех записей отчета. Всё, что можно сделать с формой (за исключением ввода данных), можно сделать и с отчетом. Действительно, форму можно сохранить в виде отчета, а затем изменить элементы управления формы в окне конструктора отчета.

Создавать отчеты в БД можно четырьмя способами:
  • Сохранением другого объекта БД как отчета
  • С помощью автоотчета на основе таблицы или запроса
  • С помощью мастера отчетов
  • В режиме конструктора отчета

На вкладке Создание есть раздел Отчеты, в котором имеются следующие средства для создания отчетов:

Кнопка Отчет. Одним щелчком создается простой отчет (автоотчет), содержащий все поля выделенной таблицы (или запроса). К первому полю добавляется итоговое значение, соответствующее типу данных поля. Отчет содержит номера страниц, дату, время создания, заголовок, повторяющий имя таблицы или запроса, а также формальную эмблему. После создания отчет открывается в режиме макета.

Кнопка Наклейки. Запускается мастер создания наклеек, в диалоговых окнах которого вы задаете размер наклеек, их тип и количество, шрифт и его атрибуты, поля из выделенной таблицы (или запроса), которые следует разместить на наклейках, сортировку записей, а также имя отчета. Отчет после создания открывается в режиме предварительного просмотра.

Кнопка Пустой отчет. Создается заготовка пустого отчета, который открывается в режиме макета. Для добавления полей открывается панель Список полей. Можно построить источник данных в виде запроса. Перед щелчком этой кнопки не нужно выделять таблицу или запрос.

Кнопка Мастер отчетов. Запускается мастер создания отчетов, который позволяет выбирать поля из различных таблиц или запросов, задавать вид представления данных, группировку и сортировку, стиль оформления и имя отчета. Мастер позволяет строить самые сложные отчеты. От пользователя требуется только корректно заполнять элементы управления в его диалоговых окнах. Отчет открывается в режиме предварительного просмотра или конструктора.

Кнопка Конструктор отчетов. Создает заготовку пустого отчета, которая открывается в режиме конструктора. Для добавления полей открывается панель Список полей. Можно построить источник данных в виде запроса. Перед щелчком этой кнопки не нужно выделять таблицу или запрос. Отчет получает формальное имя Отчет1.

Созданный любым из описанных выше способов отчет можно затем изменять или настраивать в режимах конструктора и макета.

Нормализация таблиц-отношений

В реляционной БД на каждое отношение накладывается такое ограничение - они должны быть нормализованы.
Нормализация отношений - формальный аппарат ограничений на формирование отношений (таблиц), который позволяет устранить дублирование, обеспечивает непротиворечивость хранимых в БД, уменьшает трудозатраты на ведение (ввод, корректировку) БД.
Основателем реляционной модели данных Э.Коддом выделены три нормальные формы отношений. Этот набор в дальнейшем был дополнен нормальной формой Бойса-Кодда, и далее четвертой и пятой нормальными формами.

Первая нормальная форма

Наиболее простой нормальной формой является первая, суть которой определяется требованием атомарности (неделимости) полей и единственности значений по полям а реляционной модели отношений.


Чтобы привести это отношение к нормализованному виду, надо избавиться от сложного атрибута "Спорт". Тогда полученное отношение СТУДЕНТ (Фамилия, Вид_спорта, Курс, Специальность, Спорт_разряд) является нормализованными. Ключ в нем является составным, состоящим из атрибутов "Фамилия" и "Вид спорта"
Отношение называется нормализованным или приведенным к первой нормальной форме, если все его атрибуты простые (далее неделимы). Преобразование отношения к первой нормальной форме может привести к увеличению количества реквизитов (полей) отношения и изменению ключа.
Пример: отношение СТУДЕНТ (Номер, Фамилия, Имя, Отчество, Дата, Группа) находится в первой нормальной форме.

Вторая нормальная форма

Чтобы рассмотреть вопрос приведения отношений ко второй нормальной форме, необходимо дать пояснения к таким понятиям, как функциональная зависимость и полная функциональная зависимость
Описательные реквизиты информационного объекта логически связаны общим для них ключом, эта связь носит характер функциональной зависимости.
Функциональная зависимость реквизитов - зависимость, при которой в экземпляре информационного объекта определенному значению ключевого реквизита соответствует только одно значение описательного реквизита.
Такое определение функциональной зависимости позволяет при анализе всех взаимосвязей реквизитов предметной области выделить самостоятельные информационные объекты.
Функциональная полная зависимость неключевых атрибутов заключается в том, что каждый неключевой атрибут функционально зависит в целом от составного ключа, но не зависит отдельно от любой части составного ключа.
Отношение будет находиться во второй нормальной форме, если оно находится в первой нормальной форме, и каждый неключевой атрибут функционально полно зависит от составного ключа.
Пример: Отношение СТУДЕНТ (Номер, Фамилия, Имя, Отчество, Группа) находится в первой и во второй нормальной форме одновременно, так как описательные реквизиты однозначно определены и функционально зависят от ключа Номер. Отношение  УСПЕВАЕМОСТЬ (Номер, Фамилия, Имя, Отчество, Дисциплина, Оценка) находится в первой нормальной форме и имеют составной ключ Номер+Дисциплина. Это отношение не находится в нормальной форме, т.к. атрибуты Фамилия, Имя, Отчество не находятся в полной функциональной зависимости с составным ключом отношения.



Третья нормальная форма

Понятие третьей нормальной формы основывается на понятии нетранзитивной зависимости.
Транзитивная зависимость наблюдается в том случае, если один из двух описательных реквизитов зависит от ключа, а другой описательный реквизит зависит от первого описательного реквизита.
Отношение будет находиться в третьей нормальной форме, если оно находится во второй нормальной форме, и каждый неключевой атрибут нетранзитивно зависит от первичного ключа.

Пример: если в состав описательных реквизитов информационного объекта СТУДЕНТ включить фамилию старосты группы (Староста), которая определяется только номером группы, то одна и та же фамилия старосты будет многократно повторяться в разных экземплярах данного информационного объекта. В этом случае наблюдаются затруднения в корректировке фамилии старосты в случае назначения нового старосты, а также неоправданный расход памяти для хранения дублированной информации.

Для устранения транзитивной зависимости описательных реквизитов необходимо провести расщепление исходного информационного объекта. В результате расщепления часть реквизитов удаляется из исходного информационного объекта и включается в состав других информационных объектов.
Расщепление информационного объекта, содержащего транзитивную зависимость описательных реквизитов показано ниже:

На практике третья нормальная форма устраняет большинство аномалий схем таблиц-отношений, а также ситуации дублирования данных, и после декомпозиции исходных таблиц отношений до третьей нормальной формы процесс нормализации заканчивается. Вместе с тем в некоторых случаях третью нормальную форму можно также улучшить, в частности приведением таблицы - отношения в нормальную форму Бойса-Кодда.
Такие ситуации связаны с наличием, так называемых детерминантов совокупности атрибутов (составных атрибутов), от которых функционально полно зависят другие атрибуты. В результате таблица может находится в третьей нормальной форме, т.е. все его неключевые атрибуты взаимно функционально независимы, но имеется полная функциональная зависимость некоторых атрибутов от совокупности других атрибутов (детерминантов). Пример приведения таблицы из третьей нормальной формы в форму Бойса-Кодда:

В данной таблице имеются два детерминанта - ("Лич. № сотр.", "Операция") и ("Фамилия", "Операция"), от каждого из которых функционально полно зависит поле-атрибут "Мероприятие". Для приведения отношения к нормальной форме Бойса-Кодда необходимо разбить детерминанты. Так, в первом отношение из первой пары детерминантов забирается поле "Лич. "сотр." и становится уникальным ключом, а из второй пары детерминантов забирается поле "Фамилия", во второе отношение из первой пары детерминантов забирается поле "Лич. № сотр.", а из второй пары детерминантов забирается "Операция" и оба поля становятся составным ключом, поскольку однозначно идентифицируют поле "Мероприятие".

Таблица-отношение находится в нормальной форме Бойса-Кодда тогда и только тогда, когда каждый его детерминант является возможным ключом. Очевидно, что если в таблице имеется всего один возможный ключ, то он одновременно является детерминантом, и нормальная форма Бойса-Кодда совпадет с третьей нормальной формой. Поэтому иногда нормальную форму Бойса-Кодда считают частным случаем третьей нормальной формы. 
Встречаются также случаи, требующие улучшения и нормальной формы Бойса-Кодда. Такие ситуации связаны с многозначной зависимостью атрибутов. 

Таблица-отношение находится в четвертной нормальной форме тогда, когда в случае существования многозначной зависимости атрибута Y от атрибута X все остальные атрибуты функционально зависят от атрибута X.
Пример декомпозиции таблицы из нормальной формы Бойса-Кодда в четвертую нормальную форму:

Исходя из примера, будем считать, что каждый сотрудник, привлеченный к какой-либо операции, в обязательном порядке участвует во всех проводимых в рамках данной операции мероприятиях. В этом случае единственно возможным ключом является совокупность всех трех полей-атрибутов (каждый сотрудник может участвовать в разных операциях, в одной операции может участвовать несколько сотрудников).
Так как имеется единственный возможный составной ключ, то данная таблица автоматически находится в нормальной форме Бойса-Кодда. При этом имеется многозначная зависимость поля-атрибута "Фамилия" от поля-атрибута "Операция" (для любой пары значений атрибутов "Операция" - "Мероприятие" значение атрибута "Фамилия" фактически определяется только значением атрибута "Операция" при сформулированном выше условии участия каждого сотрудника автоматически во всех мероприятиях данной операции). В такой ситуации для внесения информации о новом сотруднике, вовлекаемом в какую-либо операцию, придется добавить столько строк-кортежей, сколько мероприятий проводится в рамках данной операции.
Приведение таблицы в четвертую нормальную форму основывается на теореме Фейджина, в которой доказывается возможность проецирования без потерь таблицы с атрибутами X, Y. Z в две таблицы с атрибутами X,Y и X,Z, когда существует многозначная зависимость атрибута Y от атрибута X.
Наиболее сложной при нормализации является пятая нормальная форма, связанная с наличием в таблице-отношении зависимостей соединения. В таблице-отношении с полями-атрибутами X, Y, ..., Z имеется зависимость соединения тогда и только тогда, когда таблица может быть без потерь восстановлена на основе операций соединения своих проекций.
Таблица-отношение может находиться в четвертой нормальной форме, но когда в ней имеется зависимость соединения, могут возникать аномалии при операциях добавления/удаления строк-кортежей.
Рассмотрим пример декомпозиции таблицы из четвертой в пятую нормальную форму.


Ключом таблицы является совокупность всех трех полей-атрибутов, так как сотрудник может входить в состав разных групп и участвовать в разных мероприятиях, каждое из которых может проводиться разными группами. В таблице нет детерминантов, отсутствуют функциональные и многозначные зависимости, т.е. таблица находится в четвертой нормальной форме. Тем не менее в данной таблице нельзя удалить информацию по участию Бонда в мероприятии "Контакт", не удалив при этом вообще информацию о Бонде в таблице. Нельзя также добавить строку-запись о вхождении Бонда еще и в группу "F", если при этом он не участвовал ни в одном мероприятии.
Подобные аномалии устраняются приведением таблицы в пятую нормальную форму. Таблица-отношение находится в пятой нормальной форме тогда и только тогда, когда любая зависимость соединения в ней следует из существования некоторого вхождения ключа. 
Приведение таблицы в пятую нормальную форму осуществляется путем декомпозиции сразу на несколько таблиц-отношений. Если предположить, что в рассмотренной таблице имеется зависимость соединения по составным атрибутам "Фамилия"-"Группа", "Фамилия"- "Мероприятие", "Группа"-"Мероприятие", то, разбив таблицу на три проекции по соответствующим полям-атрибутам, можно удовлетворить требованиям пятой нормальной формы.
Из-за нетривиальности зависимости соединения пятая нормальная форма практически не используется.

Операция над отношениями
Операциями, выполняемыми на уровне строк отношений, являются включение, удаление, обновление.
Включить - добавляет новую строку (кортеж) в таблицу-отношение. Для выполнения этой операции требуется задать имя таблицы и указать значения атрибутов новой строки (значения ключа задается обязательно). Добавить новую строку со значением ключа, которое уже есть в таблице, невозможно. 
Удалить - удаляет одну или группу кортежей (строк-записей). Для выполнения этой операции требуется задать имя таблицы и указать значение первичного ключа удаляемой строки. Для удаления группы строк надо задать значение вторичного ключа
Обновить - изменяет значение не ключевых атрибутов у одного или группы кортежей. Для обновления требуется задать имя таблицы, значение первичного ключа для идентификации обновляемой строк, а также указать имена атрибутов и их новые значения. 

Операции над отношениями.
Основной единицей обработки в операциях реляционной модели данных является отношение, а не отдельные ее записи. При этом результатом обработки всегда является новая таблица-отношение, которая также может быть обработана.
Степенью отношения называется число входящих в него атрибутов. Мощностью (кардинальным числом) отношения называется число кортежей отношения. 
При выполнении некоторых операций отношения должны иметь совместимые схемы, т.е. иметь одинаковую степень и одинаковые типы соответствующих атрибутов.
Основными операциями над отношениями в реляционной БД являются следующие восемь:
  • традиционные операции над множествами, такие как объединение, пересечение, разность, декартово произведение, деление;
  • специальные реляционные операции проекции, соединения и выбора.
Совокупность этих операций образует полную алгебру отношений.


  1. Объединение. Операция выполняется над двумя совместимыми отношениями: R1, R2 (операнды). В результате операции объединения строится новое отношение R = R1 U R2 (результат). Отношение R имеет тот же состав атрибутов и совокупность кортежей исходных отношений. Причем в эту совокупность не включаются дубликаты. Результат объединения включает все кортежи первого отношения и недостающие кортежи из второго отношения. 
  2. Пересечение. Операция выполняется над двумя совместимыми отношениями R1, R2. Результирующее отношение RP = R1 Э R2, содержит одинаковые кортежи, которые есть в каждом из двух исходных, т.е. результат пересечения содержит только те кортежи первого отношения, которые есть во втором. Результат пересечения имеет тот же состав атрибутов, как и в исходных.
  3. Вычитание. Операция выполняется над двумя совместимыми отношениями R1, R2 с идентичным набором атрибутов. В результате операции вычитания строится новое отношение RV = R1 - R2 с идентичным набором атрибутов, содержащее только те кортежи первого отношения R1, которые не повторяются в другом отношении R2.
  4. Декартово произведение выполняется над двумя отношениями R1, R2 с разными схемами. В результате операции декартова произведения образуется новое отношение RD = R1 * R2, которое включает все атрибуты исходных отношений. Результирующее отношение состоит из всевозможных сочетаний кортежей исходных отношений R1, R2, которые образуются путем сцепления каждого кортежа первой таблицы-отношения к каждому кортежу второй таблицы-отношения. Число кортежей декартова произведения равно произведению количеств кортежей в исходных отношениях, т.е. степень результирующего отношения равна сумме степеней отношений-операндов. а мощность  - произведению их мощностей.

  5. Деление. Операция выполняется над двумя отношениями R1, R2, имеющими в общем случае разные структуры и некоторые одинаковые атрибуты. Первое отношение называется делимым, а второе делителем. В результате операции образуется новое отношение. структура которого получается исключением из множества атрибутов отношения R1, множества атрибутов отношения R2. Отношение-делитель должно содержать подмножество атрибутов отношения делимого. Результирующее отношение содержит только те атрибуты делимого, которых нет в делителе. Результирующие строки не должны содержать дубликаты.
  6. Проекция. Результирующее отношение (RPR) включает часть атрибутов исходного отношения R, на которые выполняется проекция. Оно может содержать меньше кортежей, так как после отбрасывания в исходном отношении R части атрибутов (возможного исключения первичного ключа) могут образоваться кортежи, дублирующие друг друга. дублирующие кортежи из результирующего отношения исключаются и поэтому мощность итоговой таблицы может быть равна или меньше исходной. Проекция позволяет переупорядочивать домены в отношении.
  7. Соединение выполняется для заданного условия соединения над двумя логически связанными отношениями. Исходные отношения R1 и R2 имеют сходные структуры, в которых есть одинаковые атрибуты - внешние ключи (ключи связи). Операция соединения формирует новое отношение, структура которого является совокупностью всех атрибутов исходных отношений. Результирующие кортежи формируются объединением каждого кортежа из R1 с теми кортежами R2, для которых выполняется условие. При этом условием, как правило, являются одинаковые значения внешнего ключа в исходных отношениях.
  8. Выбор - операция выполняется над одним отношением R. Для отношения R по заданному условию (предикату) осуществляется выборка подмножества кортежей. Результирующее отношение имеет ту же структуру, но число его кортежей будет меньше (или равно) исходному.

Организация данных

Одной из важнейших достоинств реляционных БД состоит в том, что можно хранить логически сгруппированные данные в разных таблицах и задавать связи между ними, объединяя их в единую базу.
Первичные ключи гарантируют уникальность записей в таблице, а поля первичных ключей используются для связи таблиц. Общее поле связи в другой таблице может не быть в ней первичным ключом. Связующее поле - это поле с тем же типом данных, что и у первичного ключа таблицы связи. Поле, используемое для связи с полем первичного ключа в другой таблице, называется внешним ключом. В отличие от первичного ключа, который должен создаваться особым образом, внешним ключом может быть всякое поле, использованное для связи.
В Access можно задать три вида связей между таблицами: Один-ко-многим, Многие-ко-многим, и Один-ко-многим.

Целостность данных
Целостность данных означает систему правил, используемых в СУБД Access для поддержания связей между записями в связанных таблицах, а также обеспечивает защиту от случайного удаления или изменения связанных данных. Контролировать целостность данных можно, если выполнены следующие условия:
  • связанное поле (поле, посредством которого осуществляется связь) одной таблицы является ключевым полем или имеет уникальный индекс
  • связанные поля имеют один тип данных. Здесь существует исключение. Поле счетчика может быть связано с числовым полем, если оно имеет формат Длинное целое
  • обе таблицы принадлежат одной базе данных Access. Если таблицы являются связанными, то они должны быть таблицами Access. Для установки целостности данных БД, в которых находятся таблицы, должна быть открыта такая возможностью Для связанных таблиц из БД других форматов установить целостность данных невозможно.



Формирование сложных запросов. Краткая справка
В перекрестном запросе отображаются результаты статистических расчетов (таких, как суммы, количество записей, средние значения), выполненных по данным из одного поля таблицы. Эти результаты группируются по двум наборам данных, один из которых расположен в левом столбце таблицы, а второй - в верхней строке. Например, нам надо узнать средний стаж работы ассистентов, доцентов и профессоров на разных кафедрах (на основе таблицы Преподаватели). Перекрестный запрос позволит легко решить эту задачу, создав таблицу, в которой заголовками строк будут служить должности, заголовками столбцов - названия кафедр, а в ячейках будут рассчитаны средние значения стажа преподавателей.
Запрос на изменение - это запрос, который за одну операцию вносит изменения в несколько записей. Существует четыре типа запросов на изменение: на удаление, обновление и добавление записей, а также на создание таблицы.
Запрос на удаление удаляет группу записей, удовлетворяющих заданным условиям, из одной или нескольких таблиц. С помощью запроса на удаление можно удалять только всю запись, а не отдельные поля внутри нее.
Запрос на обновление записей вносит общие изменения в группу записей одной или нескольких таблиц.
Запрос на добавление добавляет группу записей из одной или нескольких таблиц в конец одной или нескольких таблиц.
Запрос на создание таблицы создает новую таблицу на основе всех или части данных из одной или нескольких таблиц.
Запрос SQL - это запрос, создаваемый при помощи инструкций SQl.

пятница, 3 июня 2016 г.

Проектирование баз данных. СУБД

Проектирование реляционных БД с использованием ER-технологии

Основные понятия реляционных БД

БД - это средство накопления и организации больших массивов информации об объектах некоторой предметной области (ПО). БД должна отображать текущие данные о предметной области, накапливать, хранить информацию и предоставлять различным категориям пользователей быстрый доступ к данным. Для этого данные в базе должны быть структурированы в соответствии с некоторой моделью, отражающей основные объекты ПО, их свойства и связи между ними. БД является частью сложной системы, называемой банком данных или системой баз данных (СБД), Эта система включает в себя собственно БД, программные, технические, языковые и организационно-методические средства, обеспечивающие централизованное накопление и коллективное многоцелевое использование данных.

При проектировании и эксплуатации БД к ней предъявляются следующие требования: 
  1. Адекватность отображения ПО (полнота, целостность, непротиворечивость актуальность данных)
  2. Возможность взаимодействия пользователей разных категорий; обеспечение высокой эффективности доступа
  3. Дружественный интерфейс
  4. Обеспечение секретности и конфиденциальности
  5. Обеспечение взаимной независимости программ и данных
  6. Обеспечение надежности БД; защита данных от случайного и преднамеренного разрушения; возможность быстрого и полного восстановления данных в случае сбоев в системе.
В жизненном цикле БД одним из наиболее важных этапов является этап проектирования, от результатов которого зависит эффективность дальнейшего использования БД в решении задач предметной области. Главная задача, которая решается в процессе проектирования - это организация данных: интегрирование, структурирование и определение взаимосвязей. Способ организации данных определяется логической моделью, которая отражает основные сущности ПО и их взаимосвязи. 

Этапы проектирования БД

При проектировании БД организацию данных принято рассматривать на трех уровнях: информационно-логическом (инфологическом), даталогическом (концептуальном) и физическом. Этим уровням соответствует инфологическая, концептуальная и физическая модели предметной области. Весь процесс проектирования может быть разбит на три этапа.



Реляционная модель данных

Модель данных - это правила, которые определяют структуру данных, допустимые реализации данных и допустимые операции над данными. 

Инфологическая модель описывает предметную область на содержательном уровне. На первом этапе при ее разработке осуществляется анализ предметной области, решаемых задач, запросов пользователей и документов, отражающих события и процессы, протекающие в ПО. Результатом этого анализа являются списки объектов предметной области, перечни их свойств или атрибутов, определение связей между объектами и описание структуры ПО в виде диаграммы. Для каждого из атрибутов указываются ограничения на их возможные значения, определяемые свойствами ПО. Такие ограничения называются ограничениями целостности данных. Инфологическая модель объединяет в единое "обобщенное представление" требования отдельных пользователей и служит средством общения между ними, поэтому разрабатывается без учета особенностей представления данных в памяти ЭВМ.

Концептуальная модель описывает объекты и связи ПО на формальном уровне. Ее разработка ведется на втором этапе и основывается на инфологической модели, полученной на первом этапе. В процессе разработки осуществляется выбор типа модели данных и определяются ее элементы. Каждая СУБД поддерживает только одну из моделей. Выбор модели данных и выбор СУБД тесно взаимосвязаны. 

Внутренняя, или физическая, модель данных определяет способ размещения данных непосредственно на машинном носителе, учитывает распределение данных, методы доступа и способы индексирования.

Определение РБД

РБД представляет собой совокупность отношений, содержащих всю информацию, которая должна храниться в БД. Отношением называется любая взаимосвязь между объектами и/или их свойствами. Различают взаимосвязи между объектами, между свойствами одного объекта и между свойствами различных объектов.

Отношение задается своим именем и списком атрибутов - элементов, связанных отношением <имя отношения>(<список атрибутов>)
Имя отношения выбирается таким образом, чтобы оно поясняло смысл связи между элементами отношения (семантику отношения).
Для описания некоторого свойства объекта или связи используется простейший неделимый элемент данных, называемый атрибутом.

Атрибут характеризуется именем, типом, значением и другими свойствами.
Имя атрибута - это условное обозначение атрибута в процессах обработки данных. Оно должно быть уникальным в пределах одного и того же отношения. 
Значение атрибута - величина, характеризующая некоторое свойство объекта и связи. 
Атрибуты соответствуют классам сущностей, объединяемых данным отношением. Список имен атрибутов отношения и их характеристик называется схемой отношения.
Характеристики атрибутов задают область допустимых значений (ОДЗ) для каждого аргумента отношения.
Атрибут или набор атрибутов, которые могут быть использованы для однозначной идентификации конкретного кортежа (конкретного экземпляра отношения), называется первичным ключом отношения или просто ключом.


Таким образом, в ходе разработки РБД должен быть определен состав взаимосвязанных реляционных таблиц и определен состав атрибутов каждого отношения с указанием ограничений на их допустимые значения. Состав атрибутов должен отвечать требованиям нормализации. Нормализация отношений производится на этапе концептуального проектирования БД. 
Существует несколько нормальных форм (НФ) реляционной модели данных (РМД), которые позволяют исключить избыточное дублирование данных, обеспечить целостность и непротиворечивость данных. 
При первой нормальной форме (1НФ) все атрибуты отношения должны быть простыми (атомарными, неделимыми) с точки зрения СУБД. Удовлетворение требованиям первой нормальной формы называется структурной или синтаксической нормализации.
НФ более высокого порядка основаны на понятии функциональной зависимости (ФЗ), которая может быть определена как:
Пусть А и В - подмножества атрибутов отношения. Говорят, что В функционально зависит от А (А-->В), если для каждого значения А существует ровно одно связанное значение В. ФЗ можно выявить, исходя из базовых свойств самих атрибутов путем анализа. 
При второй нормальной форме (2НФ) должна обеспечиваться 1НФ и каждый неключевой атрибут функционально полно зависит от ключа. 
Полная ФЗ от ключа означает, что если ключ составной, то любой неключевой атрибут зависит от всего ключа и не зависит ни от какой его части. 
При третьей нормальной форме (3НФ) отношение должно находиться 2НФ, а также каждый неключевой атрибут нетранзитивно зависит от ключа, проще говоря: отсутствует ФЗ между неключевыми атрибутами. 
Нормальная форма Бойса-Кодда (НФБК) является развитием 3НФ и требует, чтобы в отношении были только такие ФЗ, левая часть которых является потенциальным ключом отношения. Потенциальным ключом называется такое подмножество атрибутов отношения, которое удовлетворяет определению первичного ключа отношения. Фактически первичный ключ - это один из потенциальных ключей, назначенных в качестве первичного.

Потенциальный ключ представляет собой атрибут (или множество атрибутов), который может быть использован для данного отношения в качестве первичного ключа.
логические ограничения, которые накладываются на данные, называются ограничениями целостности.
Выделяют два основных вида ограничений: внутренние и явные.
Внутренние - это ограничения, свойственные собственно модели данных. Они накладываются на структуру отношений, на связи, на допустимые значения наборов данных, заложенные в выбранной модели данных. 
Явные ограничения - это ограничения, задаваемые семантикой ПО. Они описывают области допустимых значений атрибутов, соотношение между атрибутами, динамику их изменения и т.д.
В РМД существует два вида внутренних ограничений целостности:
  1. Целостность по существованию - потенциальный ключ отношения не может иметь пустого (NULL) значения. Иными словами, так как потенциальный ключ отношения позволяет из всего множества экземпляров сущности выделить только один, то сущность, не имеющая идентификатора, не существует.
  2. Целостность по связи - определяется понятием внешнего ключа (ВК) отношения: подмножество атрибутов отношения R2 называется внешним ключом для отношения R1, если каждому значению ВК отношения R2 найдется такое же значение первичного ключа в отношении R1. Внешний ключ является тем клеем, который обеспечивает связывание отдельных отношений РБД в единое целое. Целостность данных по связи означает систему правил, используемых в СУБД для поддержания связей между записями в связанных таблицах, а также обеспечивает защиту от случайного удаления или изменения связанных данных, от некорректного изменения ключевых полей. 
Основными операциями над отношениями РМД являются 8 операций, входящих в реляционную алгебру Кодда: объединение, пересечение, разность (вычитание), декартово произведение - специальные операции: выбор, проекция, соединение и деление. 

Выбор - операция выполняется над одним отношением R. Для отношения R по заданному условию (предикату) осуществляется выборка подмножества кортежей. Результирующее отношение имеет ту же структуру, что и исходное отношение, но число его кортежей будет меньше (или равно) числа кортежей исходного отношения. 
Проекиця - операция выполняется над одним отношением R. Операция проекции формирует новое отношение (RPR) с заданным подмножеством атрибутов исходного отношения R. Оно может содержать меньше кортежей, так как после отбрасывания с исходном отношении R части атрибутов (возможного исключения первичного ключа) могут образоваться кортежи-дубли, которые из результирующего отношения исключаются по определению.
Соединение выполняется для заданного условия соединения над двумя логически связанными отношениями. Операция соединения формирует новое отношение, структура которого является совокупностью всех атрибутов исходных отношений. Результирующие кортежи формируются соединением каждого кортежа из R1 с теми кортежами R2, для которых выполняется условие соединения. В зависимости от этого условия соединение называется: естественным - равенство значений общих атрибутов отношений R1 и R2; эквисоединением - равенство значений атрибутов, входящих в условие соединения; тета-соединением - другой знак сравнения. 
Операция соединения имеет большое значение для РБД, так как в процессе нормализации отношений исходное нормализованное отношение разбивается на несколько более мелких отношений, которые при выполнении запросов пользователя требуется, как правило, вновь соединять для восстановления исходного отношения. 
Деление -  операция выполняется над двумя отношениями R1 и R2, имеющими в общем случае разные структуры и часть одинаковых атрибутов. В результате операции образуется новое отношение, структура которого получается исключением из множества атрибутов отношения R1 множества атрибутов отношения R2. Результирующие строки образуются из тех строк отношения R1, значения несовпадающих атрибутов которых одинаковые, а значения общих атрибутов образуют отношение, совпадающее с отношением R2.

Проектирование РБД с использованием ER-технологии

Постановка задачи проектирования РБД
Целью разработки БД является определение ее логической структуры. В результате проектирования должен быть определен состав реляционных таблиц, для каждой таблицы  - состав ее атрибутов (столбцов) и логические связи между таблицами. Для каждого атрибута должны быть заданы тип данного, его размер и ограничения целостности. Для каждой таблицы - первичный ключ, потенциальные ключи и внешние ключи. При этом получаемая логическая модель оценивается по достижению следующих целей проектирования:
  1. Возможности хранения всех необходимых данных в Бд
  2. Исключения избыточных данных
  3. Сведения числа хранимых отношений в БД к минимуму
  4. Нормализации отношений для упрощения решения проблем, связанных с обновлением, добавлением и удалением данных
Первый шаг процесса проектирования состоит в определении как всех атрибутов, наличия которых в БД ожидает пользователь, так и связей между атрибутами. Этот шаг выполняется на основе анализа документов с данными, запросов пользователей и других сведений об объектах и процессах, характеризующих предметную область. После определения состава данных, подлежащих хранению в БД, должен быть проведен их анализ и структурирование.

Один из подходов к проектированию БД: метод "сущность-связь"
Суть метода состоит в построении ER-диаграмм, отображающих в графической форме основные объекты ПО и связи между ними, и в определении характеристик этих связей. Затем по четким правилам делается переход от ER-диаграмм к таблицам БД, осуществляется наполнение таблиц атрибутами и проверка их на выполнение условий нормализации (НФБК). Определяются ключевые атрибуты таблиц и связи между таблицами. Результатом проектирования является схема данных БД.
Сущности и связи
Сущность - это объект, информация о котором должна быть представлена в БД (обычно соответствует существительному). Экземпляр сущности - это информация о конкретном представителе объекта. Например, для сущности Студент экземпляром является Петухов, а для сущности Группа - экземпляром является 144.
Связь - соединение между двумя и более сущностями (соответствует глаголу). Экземпляр связи - это конкретная связь между конкретными представителями объектов. Пример: Петухов учиться в группе 144.
Атрибут - свойство сущности или связи. Например, Фамилия, Имя, Отчество есть атрибуты сущности Личность. А слова Терехин, Николай есть экземпляр этого атрибута.
Атрибут или набор атрибутов, используемый для однозначной идентификации экземпляра сущности, называется ключом сущности. Каждый экземпляр связи определяется набором ключей сущностей, соединяемых этой связью.
Построение ER-диаграммы ПО
Рассмотрим построение ER-диаграммы, описывающей структуру ПО. В ER-диаграмме для отображения сущностей используются прямоугольники, а для отображения связей - ромбы. Различают ER-диаграммы для экземпляров сущностей и ER-диаграммы для классов сущностей. Ниже приведены ER-диаграммы обоих типов.

Характеристики связей
Связь между сущностями имеет две характеристики: степень связи и класс принадлежности сущности к связи. Значения этих характеристик могут быть определены из анализа связей между экземплярами сущностей. Степень связи показывает, сколько экземпляров одной сущности могут быть связаны с каждым экземпляром другой сущности. Степень связи оценивается с каждой из сторон. Степень связи может иметь одно из трех значений:

  • один к одному (1:1)
Означает, что каждый экземпляр первой сущности может быть связан только с одним экземпляром второй сущности и наоборот
  • один ко многим (1:М или М:1)
Каждый экземпляр первой сущности может быть связан с несколькими экземплярами второй сущности, а каждый экземпляр второй сущности может быть связан только с одним экземпляром первой сущности
  • многие ко многим (М:N)
Каждый экземпляр первой сущности может быть связан с несколькими экземплярами второй сущности и наоборот.


Класс принадлежности сущности к связи может быть обязательным и необязательным.

Получение отношений из диаграммы ER-типа

Общий подход к построению БД с использованием ER-метода состоит в выполнении следующих шагов:
  1. Построения диаграммы ER-типа, включающей в себя все сущности и связи, важные с точки зрения интересов организации
  2. Анализа связей и определения их характеристик: степени связи и класса принадлежности
  3. Построения набора предварительных отношений с указанием предполагаемого ключа для каждого отношения
  4. Подготовки списка всех представляющих интерес атрибутов (тех из них, которые не были уже перечислены в диаграмме ER-типа в качестве ключей сущности) и назначения каждого из этих атрибутов одному из предварительных отношений с тем условием, чтобы эти отношения находились в НФБК
  5. Проверки, все ли полученные отношения находятся в НФБК
  6. Построения схемы данных
  7. Если полученные в итоге отношения не находятся в НФБК или если некоторым атрибутам не находится логически обоснованных мест в предварительных отношениях, то в этих случаях необходимо пересмотреть ER-диаграммы на предмет устранения возможных затруднений.
Раннее были рассмотрены первые два шага процесса проектирования, третий шаг - построение предварительных отношений - выполняется по определенным правилам.

Правило 1. Если степень бинарной связи 1:1 и класс принадлежности обеих сущностей является обязательным, то требуется только одно отношение. Первичным ключом этого отношения может быть ключ любой из двух сущностей.

Правило 2. Если степень бинарной связи 1:1 и класс принадлежности одной сущности является обязательным, а другой - необязательным, то необходимо построение двух отношений. Под каждую сущность выделяется одно отношение, при этом ключ сущности должен служить первичным ключом для соответствующего отношения. Кроме того, ключ сущности, для которого класс принадлежности является необязательным добавляется в качестве атрибута в отношение, выделенное для сущности с обязательным классом принадлежности.

Правило 3. Если степень бинарной связи равна 1:1 и класс принадлежности ни одной из сущностей не является обязательным, то необходимо использовать три отношения: по одному для каждой сущности и одно отношение для связи. Причем ключ каждой сущности используется в качестве первичного ключа соответствующего отношения. Отношение связи должно иметь в числе своих атрибутов ключи каждой сущности.

Правило 4. Если степень бинарной связи равна 1:N и класс принадлежности N-связной сущности является обязательным, то достаточным является использование двух отношений, по одному на каждую сущность, при условии, что ключ каждой сущности служит в качестве первичного ключа для соответствующего отношения. Дополнительно ключ 1-связной сущности должен быть добавлен как атрибут в отношении, отводимое N-связной сущности.

Правило 5. Если степень бинарной связи равна 1:N и класс принадлежности N-связной сущности является необязательным, то необходимо формирование трех отношений: по одному для каждой сущности и одно отношение для связи. Причем ключ каждой сущности используется в качестве первичного ключа соответствующего отношения. Отношение связи должно иметь в числе атрибутов ключи каждой сущности.

Правило 6. Если степень бинарной связи равна M:N, то для хранения данных необходимо три отношения: по одному для каждой сущности и одно отношение для связи. Причем ключ каждой сущности используется в качестве первичного ключа соответствующего отношения. Отношение связи должно иметь в числе атрибутов ключи каждой сущности.

Правило 7. В случае трехсторонней связи необходимо использовать 4 (n+1) предварительных отношения, по одному для каждой сущности, и одно для связи. Причем ключ каждой сущности должен служить в качестве первичного ключа для соответствующего отношения. Отношение, порождаемое связью, будет иметь среди своих атрибутов ключи от каждой сущности. (Аналогично, когда связь N-сторонняя, требуется n+1 предварительное отношение)

Между ролевыми сущностями могут быть связи, зависящие от деятельности организации и от выполняемых ими функций. Обобщающая сущность описывает общие свойства всех ролевых сущностей. Между обобщающей сущностью и ролевыми сущностями устанавливается связь типа "дерево", иерархическая связь.
Правило 8. Обобщающей сущности соответствует одно отношение, причем ключ сущности служит в качестве ключа отношения, общие для всех ролевых сущностей атрибуты приписываются этому отношению. Ролевые элементы и связи, их соединяющие, порождают такое число отношений, которое определяется ранее описанными правилами, причем каждая роль трактуется как обычная сущность. Связываются отношения с помощью ключевого атрибута. Каждому значению ключевого атрибута ролевой сущности соответствует одна запись в обобщающем отношении с таким же значение ключа.

Связь между таблицами
Результатом проектирования по методу "сущность-связь" является совокупность взаимосвязанных таблиц. Связь между таблицами осуществляется через одинаковые по смыслу. типу и значению атрибуты. Назовем их атрибутами связи. В одних таблицах эти атрибуты играют роль ключевых, в других они вводятся дополнительно.
Таблица, в которой атрибут связи является ключом отношения, называется главной; связанная с ней по этому атрибуту таблица называется подчиненной. Информация в подчиненной таблице зависит от данных в главной таблице. Атрибут связи в подчиненной таблице называется внешним ключом.
Данные в связанных таблицах должны удовлетворять следующим ограничениям целостности:

  • для каждой записи главной таблицы может соответствовать нуль или более записей подчиненной таблицы
  • в подчиненной таблице не должно быть записей, которые не имеют родительской записи в главной таблице
  • каждая запись подчиненной таблицы может иметь только одну родительскую запись в главной таблице
Эти ограничения определяют порядок выполнения операций ввода, обновления и удаления записей. 
Перед созданием таблиц и заполнением их данными следует определить между ними отношение порядка. К нулевому порядку относятся таблицы, в которых данные не зависят от данных в других таблицах. Обычно это таблицы со справочными данными. К первому уровню принадлежат те таблицы, данные в которых зависят только от таблиц нулевого уровня; ко второму - таблицы, данные в которых зависят от таблиц нулевого и первого уровня, и т.д. Полученное отношение порядка определяет порядок заполнения таблиц. Сначала создают и заполняют таблицы нулевого уровня, затем первого и т.д.




______________________________________________________________________
______________________________________________________________________

Источник: Проектирование баз данных. СУБД Microsoft Access: Учебное пособие для вузов/ Н.Н,Гринченко, Е.В.Гусев, Н.П.Макаров, А.Н. Пылькин, Н.И, Цуканова - М.: Горячая линия-Телком, 2004

понедельник, 4 апреля 2016 г.

Этапы проектирования и создания базы данных (БД) с среде Access

В качестве основного источника информации в рамках текущего блога будет использоваться литература: Юрий Бекаревич и Нина Пушкина "Самоучитель Access 2010 и 2013"



Для проектирования БД необходимо располагать описанием выбранной предметной области, которое должно охватывать реальные объекты и процессы,  определять все необходимые источники информации для обеспечения предполагаемых запросов пользователей и решаемых в приложении задач.

Определение состава и структуры данных, которые должны быть загружены в БД, осуществляется на основе анализа предметной области. Структура данных предметной области может отображаться информационно-логической моделью (ИЛМ). Если при построении такой модели обеспечены требования нормализации данных и она, соответственно, представлена в каноническом виде, далее легко определяется проект логической структуры нормализованной базы данных. На основе канонической модели можно создать реляционную базу без дублирования данных.

При разработке модели данных предметной области могут использоваться два подхода. В первом (аналитическом или процессном) сначала формулируются основные задачи, для решения которых строится база, выявляются информационные потребности задач приложения пользователя, и, соответственно, определяются состав и структура информационных объектов модели, а также связи между ними.

При втором подходе (интуитивном) сразу устанавливаются типовые информационные объекты предметной области и их взаимосвязи. Наиболее рационально сочетание обоих подходов. Это связано с тем, что на начальном этапе, как правило, нет исчерпывающих сведений обо всех задачах. Использование такой технологии тем более оправдано, что гибкие средства создания реляционной базы данных позволяют  на любом этапе разработки внести изменения в базу данных и модифицировать ее структуру без ущерба для введенных ранее данных.


В процессе разработки каноническрй модели данных предметной области для проектирования реляционной базы данных необходимо выделить информационные объекты (ИО), соответствующие требованиям нормализации данных, и определить связи между ИО с типом отношений "один-ко-многим" (1:М).

В процессе создания базы данных на компьютере сначала осуществляется конструирование ее таблиц средствами Access. Для поддержания целостности данных в каждой таблице определяется ключевое поле и правила проверки значений данных в полях. Далее создается схема данных, в которой устанавливается логические связи таблиц. В схеме данных базы могут быть заданы параметры поддержания связной целостности данных.
Связная целостность данных означает, что в базе данных установлены и корректно поддерживаются взаимосвязи между записями разных таблиц при загрузке, добавлении и удалении записей в связанных таблицах, а также при изменении значений ключевых полей. При обеспечении связной целостности в подчиненной таблице не может существовать запись, для которой отсутствует связанная запись в главной таблице.

Информационные объекты

Информационный объект(ИО) - это информационное описание некоторой сущности предметной области: реального объекта, процесса, явления или события. Информационный объект является совокупностью логически взаимосвязанных реквизитов, представляющих качественные и количественные характеристики сущности.

Информационный объект имеет множество реализаций - экземпляров объекта.
Экземпляр объекта должен однозначно определяться среди множества экземпляров, т.е. идентифицироваться значением уникального (первичного) ключа информационного объекта. Уникальность ключа означает, что любое значение ключа не может повториться в каком-либо другом экземпляре объекта. Простой ключ состоит из одного реквизита. Составной ключ - из нескольких реквизитов. Таким образом, реквизиты информационного объекта подразделяются на ключевые и описательные, которые являются функционально зависимыми от ключа.

Требования нормализации

Реквизиты каждого ИО канонической модели данных должны отвечать требованиям, соответствующим третьей нормальной форме реляционной модели данных:
  • информационный объект должен содержать уникальный идентификатор - ключ;
  • все описательные реквизиты должны быть взаимонезависимы, т.е. между ними не должно быть функциональных зависимостей;
  • все реквизиты, входящие в составной ключ, также должны быть взаимонезависимы;
  • каждый описательный реквизит должен функционально полно зависеть от ключа, т.е. каждому значению ключа должно соответствовать только одно значение  описательного реквизита, а при составном ключе описательные реквизиты должны зависеть целиком от всей совокупности реквизитов, образующих ключ; 
  • каждый описательный реквизит должен зависеть от ключа нетранзитивно, т.е не должен зависеть через другой промежуточный реквизит. 
Замечание
В случае транзитивной зависимости между реквизитами информационного объекта можно выполнить расщепление совокупности реквизитов с образованием двух информационных объектов одного.

Информационный анализ и определение логической структуры информации

Информационный анализ включает:

  • структурирование информации предметной области
  • формализацию и моделирование данных
Структура информации внемашинной сферы находит отражение в ее представлении отдельными структурными единицами - реквизитами, их группировке в документах-источниках и упорядочении по классификационным признакам.


Структурирование информации

Рассмотрим структурирование информации применительно к организационно-экономической сфере. Определим важнейшие виды структурных единиц информации:
  • реквизит - простейшая структурная единица информации, неделимая на смысловом уровне, отражающая количественную или качественную характеристику сущности (объекта, процесса и т.п.) предметной области. Можно выделить:
  1. реквизит-признак позволяет выделить (идентифицировать) объект из множества однотипных объектов (как правило, символьное представление)
реквизит-основание содержит количественную характеристику объекта, процесса или другой сущности, определяющую их состояние (как правило, числовое значение)
  • составная единица информации (СЕИ) - логически взаимосвязанная совокупность реквизитов
Документ является примером составной единицы информации. Семантика и размещение реквизитов в форме документа определяют роль реквизитов в структуре информации, содержащейся в документе.
В процессе информационного семантического (смыслового) анализа нужно выявить функциональную зависимость реквизитов и определить реквизитный состав информационных объектов.

Выделение информационных объектов

На основе описания предметной области необходимо выявить документы-источники и их реквизиты, подлежащие хранению в базе данных. Затем надо перейти к информационному анализу этих документов для определения функциональных зависимостей и выявления информационных объектов.
Рассмотри порядок действий, которые могут быть использованы для выделения информационных объектов, отвечающих указанным ранее требования нормализации.
  1. Определяются функциональные зависимости между реквизитами документа. Для этого анализируется роль реквизитов в структуре информации документа. Сначала целесообразно выявить реквизит (один или несколько), который играет роль общего идентификатора всей информации документа. Как правило, к таким реквизитам относятся номер документа, идентификатор подразделения предприятия, выпускающего документ, период действия оформления документа и т.п. От такого идентификатора документа будут функционально полно зависимыми некоторые описательные реквизиты в общей части документа. В результате для каждого определяемого реквизита должны бть выявлены реквизиты (ключевые), которые в совокупности однозначно его определяют (одному значению ключа соответствует одно значение описательного реквизита).
  2. В результате просмотра выявленных функциональных зависимостей выбираются зависимые реквизиты и для каждого из них устанавливаются все его ключевые реквизиты, т.е. те (один или несколько), которые в совокупности определяют его однозначно.
  3. Группируются реквизиты, одинаково зависимые от ключевых реквизитов. Полученные группы зависимых реквизитов вместе с ключевыми реквизитами образуют реквизитный состав соответствующих информационных объектов. Если в группе несколько ключевых реквизитов, то они являются составным ключом информационного объекта.
После выделения информационных объектов необходимо сформировать их окончательное описание. В таком описании кроме состава реквизитов и указания ключа может быть представлена также семантика информационных объектов -их смысловое определение.

Замечание
Обычно при использовании приведенных правил сразу оказываются выделенными объекты, играющие роль связки между объектами, находящимися в отношении "многие-ко-многим" (M:N). Соответственно, в модели можно ограничиваться рассмотрением только одно-многозначных связей. 

Типы связи информационных объектов

  • одно-однозначные (1:1)
  • одно-многозначные (1:М)
  • много-многозначные (М:М)

Создание базы данных

Создание новой нормализованной реляционной базы данных осуществляется в соответствии с ее структурой, полученной в результате  проектирования. Структура реляционной БД определяется составом таблиц и их взаимосвязи. Взаимосвязи между двумя таблицами реализуются через ключ связи, входящий в состав полей связываемых таблиц. В нормализованной реляционной БД таблицы находятся в отношениях тип "один-ко-многим" или "один-к-одному". Для одно-многозначных в качестве ключа связи, как правило, используется уникальный ключ главной таблицы, в подчиненной таблице это может быть любое из полей, которое называется внешним ключом.

Создание реляционной БД начинается с формирования структуры таблиц. При этом определяется состав полей, их имена, тип данных каждого поля, размер поля, клюи, индексы таблицы и другие свойства полей. После определения структуры таблиц создается схема данных, в которой устанавливаются связи между таблицами. Access запоминает и использует эти связи при заполнении таблиц и обработке данных.

При создании БД важно задать параметры, в соответствии с которыми Access будет автоматически поддерживать целостность данных. Для этого при определении структуры таблиц должны быть заданы ключевые поля таблиц, указаны ограничения на допустимые значения данных, а при создании схемы данных на основе нормализованных таблиц должны быть заданы параметры поддержания целостности связей БД.

Завершается создание БД процедурой загрузки, т.е. заполнением таблиц конкретными данными. особое значение имеет технология загрузки взаимосвязанных данных. Удобным инструментом загрузки данных во взаимосвязанные таблицы являются формы ввода/вывода, обеспечивающие интерактивный интерфейс для работы с данными базы. Формы позволяют создать экранный аналог документа источника, через который можно вводить данные во взаимосвязанные таблицы. 

Внимание! 
Пользователь может начинать работу с базой при любом количестве созданных таблиц еще до создания полной базы, отображающей все объекты модели данных предметной области. БД может создаваться поэтапно, и в любой момент ее можно дополнять новыми таблицами и вводить связи между таблицами в схему данных, существующие таблицы могут дополняться новыми полями.

Окно Access


Создание новой пустой базы данных приводит к открытию окна Access

















Три основных компонента пользовательского интерфейса формируют среду, в которой созда ются и используются БД:

  • Лента - полоса в верхней части окна приложения, содержащая группы команд выбранной вкладки. Вкладки ленты объединят логически связанные команды, ориентированные на задачу. Четыре стандартные вкладки - Главная (Home), Создание (Create), Внешние данные (External Data) и Работа с базами данных (Database Tools)
  • Представление Backstage - набор команд на вкладке Файл (File)
  • Область навигации - область в левой части окна, предназначенная для работы с объектами БД.
Создание таблицы БД

Создание таблицы БД состоит из двух этапов. На первом этапе определяется ее структура: состав полей, их имена, тип данных каждого поля, размер поля, ключи, индексы таблицы и другие свойства полей. На втором этапе производится создание записей таблицы путем заполнения ее полей данными.
В Access создание таблицы может быть выполнено в одном из двух режимов:

  • в режиме конструктора (Desogn View), позволяющем максимально полно определить структуру таблицы
  • в режиме таблицы (Datasheet View), предназначенном, прежде всего, для создания, просмотра, поиска, корректировки ее записей и, кроме того, реализующем функции, обеспечивающие определение структуры таблицы.

Схема данных в Access

Связи между таблицами устанавливаются в соответствии с проектом логической структуры БД и запоминаются в схеме данных. Схема данных является не только средством графического отображения логической структуры БД, она активно используется системой в процессе обработки данных. Благодаря связям, установленным в схеме данных, разработчику нет необходимости всякий раз сообщать системе о наличии той или иной связи. Однажды указанные в схеме данных связи используются системой автоматически.
Создание схемы данных позволяет упростить конструирование многотабличных форм, запросов, отчетов, а также обеспечить поддержание целостности взаимосвязанных данных при вводе и корректировке данных в таблице.

Создание схемы данных

Создание схемы данных начинается с выполнения команды Схемы данных (Relationships) в группе Отношения (Relationships) на вкладке ленты Работа с базами данных (Dаtabase Tools). В результате выполнения этой команды открывается окно схемы данных и диалоговое окно Добавление таблицы (Show Table), в которой осуществляется выбор таблиц, включаемых в схему. Диалоговое окно Добавление таблицы откроется автоматически, если в БД ещё не определена ни одна связь. Если окно не открылось, на ленте Работа со связями | Конструктор (Relationship Tools | Design) в группе Связи нажмите кнопку Отобразить таблицу.

Включение таблиц в схему данных

В окне Добавление таблицы отображены все таблицы и запросы, содержащиеся в БД. Выберем вкладку Таблицы и с помощью кнопки Добавить разместим в окне Схема данных все ранее созданные таблицы БД, отображенные в окне Добавление таблицы. Затем нажмем кнопку Закрыть. В результате в окне Схема данных таблицы базы будут представлены окнами со списками своих полей и выделенными жирным шрифтом ключами.

Создание связей между таблицами схемы данных

При создании связей в схеме данных используется проект логической структуры реляционной БД, в котором показаны все одно-многозначные связи таблиц. Реализуются связи с помощью добавления в связанные таблицы общих полей, называемых ключом связи. При одно-многозначных отношениях между таблицами ключом связи является ключ главной таблицы (простой или составной). В подчиненной таблице он может быть частью уникального ключа или вовсе не входить в состав ключа таблицы. Одно-многозначные связи являются основными в реляционных БД. Одно-многозначные связи используются, как правило, при необходимости распределять большое количество полей, определяемых одним и тем же ключом, по разным таблицам, имеющим разный регламент обслуживания.

Запросы

Запросы являются основным инструментом выборки, обновления и обработки данных в таблицах БД.

Основным видом запроса является запрос на выборку. Результатом выполнения этого запроса является новая таблица, которая существует до закрытия запроса. Структура такой таблицы определяется выбранными из одной или нескольких взаимосвязанных таблиц полями. Записи формируются путем объединения записей таблиц, на которых построен запрос. Способ объединения записей таблиц указывается при определении их связи в схеме данных или при создании запроса. Условия отбора, сформулированные в запросе, позволяют фильтровать записи, составляющие результат объединения таблиц. Запрос на выборку позволяет сформировать нормализации. 
В Access может быть создано несколько видов запроса: 
  • запрос на выборку - выбирает данные из одной таблицы или запроса или нескольких взаимосвязанных таблиц и других запросов. Результатом является таблица, которая существует до закрытия запроса. Формирование записей таблицы результата производится в соответствии с заданными условиями отбора и при использовании нескольких таблиц путем объединения их записей 
  • запрос на создание таблицы - выбирает данные из взаимосвязанных таблиц и других запросов, но, в отличие от запроса на выборку, результат сохраняет в новой постоянной таблице
  • запросы на обновление, добавление, удаление - являются запросами действия, в результате выполнения которых изменяются данные в таблицах
Запрос в режиме конструктора содержит схему данных, отображающую используемые таблицы, и бланк запроса, в котором конструируется структура таблицы запроса и условия выборки записей.

С помощью запроса можно выполнить следующие виды обработки данных:
  • включить в таблицу запроса выбранные пользователем поля таблицы
  • произвести вычисления в каждой из полученных записей
  • выбрать записи, удовлетворяющие условиям отбора
  • сформировать на основе объединения записей взаимосвязанных таблиц новую виртуальную таблицу
  • сгруппировать записи, которые имеют одинаковые значения в одном или нескольких полях, одновременно выполнить над другими полями группы статистические функции и в результат включить одну запись для каждой группы
  • создать новую таблицу БД, используя данные из существующих таблиц
  • произвести обновление полей в выбранном подмножестве записей
  • удалить выбранное подмножество записей из таблицы БД
  • добавить выбранное подмножество записей в другую таблицу
Последовательное выполнение ряда запросов позволяет решать достаточно сложные задачи, не прибегая к программированию.

Конструирование запросов

  1. Для создания запроса в окне БД выберите вкладку лент - Создание(Create)  и  в группе Запросы(Queries) нажмите кнопку  Конструктор запросов(Query Design). Откроется пустое окно запроса на выборку в режиме конструктора -  ЗапросN(QueryN) и диалоговое окно Добавление таблицы(Show Table) 
  2. В окне Добавление таблицы (Show Table) выберите ТОВАР и нажмите кнопку Добавить (Add). Выбранная таблица будет отображена в области схемы данных запроса. Закройте окно Добавление таблицы (Show Table), нажав кнопку Закрыть (Close)/
В результате выполненных действий в окне конструктора запросов в верхней панели появится схема данных запроса, которая включает выбранные для данного запроса таблицы. В данном случае одну таблицу ТОВАР. Таблица представлена списком полей. Первая строка в списке полей таблицы, отмеченная звездочкой (*) , обозначает все множество полей таблицы. Нижняя панель является бланком запроса, который нужно заполнить. 
Кроме того, на ленте появляется и автоматически активизируется новая вкладка Работа с запросами | Конструктор (Query Tools | Design), на котором цветом выделен тип созданного запроса - Выборка (Select). Таким образом, по умолчанию всегда создается запрос на выборку. Команды этой вкладки представляют инструментарий для выполнения необходимых действий при создании запроса. Эта вкладка открывается, когда в режиме конструктора создается новый запрос или редактируется существующий.

Параметры в запросах 
В предыдущих примерах выражение в условие отбора вводилось в бланке запроса. При этом чтобы задать новое значение в условие отбора, нужно повторно открыть запрос в режиме конструктора и ввести его. При решении практических задач значительно удобнее вводить выражение в условие отбора в процессе выполнения запроса в диалоге с пользователем, не переходя в режим конструктора. Обеспечить такой диалог можно с помощью параметра запроса.  Имя параметра запроса задается в строке Условия отбора (Criteria) в квадратных скобках. При выполнении запроса это имя появится в диалоговом окне Введите значение параметра (Enter Parameter Value).

Групповые операции в запросах 

Групповые операции позволяют выделить группы записей с одинаковыми значениями в указанных полях и вычислить итоговые данные для каждой из групп по другим полям, используя одну из статистических функций. Статистические функции применимы, прежде всего, к полям с типом данных Числовой, Денежный, Дата/Время.
В Access предусматривается девять статистических функций: 
  • Sum - сумма значений некоторого поля для группы
  • Avg -  среднее от всех значений поля в группе
  • Max, Min - максимальное, минимальное значение поля в группе
  • Count - число значений поля в группе без учета пустых значений
  • StDev - среднеквадратичное отклонение от среднего значения поля в группе
  • Var - дисперсия значения поля в группе
  • First и Last - значение поля из первой или последней записи в группе
Результат запроса с использованием групповых операций по одной записи для каждой группы. В запрос, прежде всего, включаются поля, по которым производится группировка, и поля, для которых выполняются статистические функции. Кроме этих полей в запрос могут включаться поля, по которым задаются условия отбора.

Если необходимо найти несколько товаров, используйте оператор In. Он позволяет выполнить проверку на равенство любому значению из списка, который задается в круглых скобках.

Формы

Формы являются основой разработки диалоговых приложений пользователя для работы с БД. Формы обеспечивают удобную работу с данными одной или нескольких взаимосвязанных таблиц, которые выводятся на экран с использованием ее макета, разработанного пользователем. Работая с формой, пользователь может добавлять, удалять и изменять записи таблиц, получать расчетные данные.  В процессе работы может осуществляться контроль вводимых данных, могут проверяться ограничения на доступ к данным, выводиться необходимые дополнительные сведения.

Форма состоит из элементов управления, которые отображают поля таблиц, и графические элементы, не связанные с полями таблиц. Графические элементы управления предназначены, прежде всего, для разработки макета формы: полей таблиц и запросов, надписей, внедряемых объектов (рисунков, диаграмм), вычисляемых полей, кнопок, выполняющих печать, открывающих другие объекты или задачи.

Как форма в целом, так и каждый из ее элементов обладает множеством свойств. Посредством их изменения можно настроить внешний вид, размер, местоположение элементов в форме, определить источник данных формы, режим ввода/вывода, привязать к элементу выражение, макрос или программу. Набор  свойств доступен в соответствующем окне, где они разбиты на категории, каждая из которых представлена на своей вкладке. Основными вкладками в окне свойств являются:
  • Макет (Format) - представляет свойства. ориентированные на определение внешнего вида формы или ее элементов
  • Данные (Data) - представляет свойства для определения источника данных формы или ее элементов, режима использования формы (только ввод, разрешение на изменение, добавление, удаление и т.п.)
  • События (Event) - событиями называют определенные действия, возникающие при работе с конкретным объектом или элементом: нажатие кнопки мыши, изменение данных, до обновления, после обновления, открытие или закрытие формы и т.д. Они могут быть инициированы пользователем или системой. С событием может связываться макрос или процедура обработки события на языке VBA, выполняющая некоторые действия или рассчитывающая значения. Например, в процедуре можно организовать открытие связанной формы, обновление данных таблицы расчетными значениями, печать формы, вывод отчета. Запрограммировав в процедурах вызов различных объектов БД, можно автоматизировать выполнение задач приложения.
Формы в Access могут быть представлены в трех режимах.
  • Режим формы (Form View) предназначен для ввода, просмотра и корректировки данных таблиц. на которых основана форма.
  • Режим макета (Layout View) обеспечивает просмотр данных почти в таком виде, в каком они отображаются в режиме формы, и в то же время позволяет изменять форму. В этом режиме элементы формы становятся выделяемыми, их можно перетаскивать в другие места, редактировать содержимое надписей полей и т.д. Режим макета позволяет удобно настраивать внешний вид формы и может использоваться для внесения  большинства структурных изменений. В Access 2010 появилась возможность в режиме макета выполнять действия. ранее доступные только в режиме конструктора. В режиме макета стала доступной лента Конструктор (Design). Если некоторую задачу невозможно выполнить в режиме макета, следует переключиться в режим конструктора. В ряде случаев в Access отображается сообщение о том, что для внесения изменений надо переключиться в режим конструктора.
  • Конструктор (Design View) предназначен для разработки формы с помощью полного набора инструментов, обеспечивающего более детальную проработку структуры формы, использование всех элементов управления. В этом режиме форму можно разработать с нуля или доработать ее после создания мастером. Просмотр данных при внесении изменений в этом режиме не предусматривается.

Разработка интерфейса для ввода, просмотра и корректировки документов

Основным средством создания интерфейса для работы с документами являются формы. С помощью средств разработки форм могут быть созданы электронные аналоги документов, обеспечивающие ввод, просмотр и корректировку документов в БД, Формы могут использоваться и для оформления документов на компьютере, например, накладных на отгрузку товара. В процессе оформления документа может выполняться и ввод его в БД, Кроме того, как правило, предусматривается распечатка подготовленного документа средствами отчетов.

Инструментарий разработки форм предоставляет широкие возможности по созданию графического диалогового интерфейса пользователя для работы с документами, сохраняемыми в БД, Такой интерфейс является основой работы с БД практического приложения пользователя. После окончательного создания приложения пользователь, как правило, не работает непосредственно с таблицами БД, Разработчик приложения часто ограничивает полностью или частично непосредственный доступ пользователя к таблицам.

При конструировании интерфейса пользователя могут использоваться макросы или процедуры VBA для обработки событий, инициируемых пользователем в процессе работы с формой. Для формы и ее элементов управления определен набор типовых событий. Такие связанные с полем события как Изменение (On Change), До обновления (Before Update), После обновления (After Update) или связанные с записью события Удаление (Delete), До обновления (Before Update), После обновления (After Update) часто используются для подключения процедур, обеспечивающих автоматический перерасчет (изменение) показателей в таблицах.

При создании некоторых элементов формы автоматически формируются типовые процедуры обработки событий. Таким элементом является, например, кнопка. С ее событием Нажатием кнопки (On Click) связывается выполнение таких категорий действий как: 
  • переходы по записям источника формы, обработка записей (добавление, удаление, печать, восстановление)
  • работа с формой (закрытие, открытие других форм, изменение фильтра, обновление данных, печать форы)
  • работа с отчетом (печать, просмотр, отправка, вывод в файл)
  • запуск запроса, макроса, печать таблицы, автонабор номера.
Этапы разработки интерфейса

Технология создания целостной базы, в которой между таблицами установлены связи и определены параметры поддержания целостности, предполагает упорядочение первоначальной загрузки взаимосвязанных таблиц.

Технология поддержания такой БД в актуальном состоянии требует обеспечения процесса ввода оперативных данных и обновления существующих данных.

При этом должен быть разработан удобный интерфейс пользователя, обеспечивающий важнейший аспект технологии работы с БД - однократный и корректный ввод взаимосвязанных данных. Использование экранных форм - электронных аналогов первичных документов, являющихся источниками для загрузки справочных, плановых и оперативных учетных данных - позволяет решить эти задачи. 

Прежде чем вводить, отображать или корректировать данные таблиц через экранную форму, надо спроектировать и сконструировать ее. Далее рассматриваются основы проектирования форм для построения удобного интерфейса пользователя для работы с документами. Подробно описана технология разработки формы, обеспечивающей первоначальный ввод, просмотр и обновление документов в БД.

В процессе разработки технологии загрузки БД и проектирования форм целесообразно определить:
  • перечень документов-источников, содержащих необходимые данные для загрузки таблиц БД
  • таблицы - объекты загрузки для каждого документа-источника
  • содержание и последовательность загрузки; при этом необходимо учитывать, что для обеспечения связной целостности главные таблицы должны быть загружены ранее подчиненных
  • подсхему данных каждой формы (фрагмент схемы данных), состоящую из таблиц, необходимых для создания электронного документа. При этом для многотабличной (составной) формы выбираются: 
- таблица, которая будет базовым источником записей главной формы, и таблицы для отображения справочных данных в этой части формы
- таблица, которая будет источником записей подчиненной формы, включаемой в главную форму, и таблицы для отображения справочных данных в подчиненной форме
  • макет формы, т.е. ее общую структуру, в соответствии со структурой документа-источника и полученной подсхемой данных. При этом распределяется пространство формы для размещения включаемых подчиненных форм
  • состав и размещение элементов, связанных с полями таблиц, и надписей для каждой из частей составной формы. При этом:
- в главную форму обязательно надо вводить ключевые поля таблицы-источника данных (например, идентификатор документа "Договор" - номер договора)
- в подчиненной форме предусмотреть только те ключевые поля таблицы - базового источника подчиненной формы, которых нет в таблице-источнике главной формы (например, код товара из спецификации документа "Договор")

Определение последовательности загрузки таблиц с документов

При разработке форм, обеспечивающих загрузку взаимосвязанных таблиц БД, следует иметь в виду требования к последовательности загрузки записей в таблицы в соответствии со схемой данных и установленными параметрами поддержания целостности. Эти требования можно сформулировать следующим образом: 
  • независимо могут создаваться записи таблиц, которые не подчинены каким-либо другим таблицам в схеме данных
  • запись таблицы, подчиненной каким-либо другим таблицам, может создаваться при наличии связанных с ней записей в главных таблицах; записи главной таблицы должны быть загружены ранее (таблицы справочных данных) или должны создаваться вместе с подчиненной записью в одной форме
В соответствии с этими требованиями можно рекомендовать в практических приложениях предусмотреть сначала ввод в БД, а затем данных плановых и оперативно-учетных документов Это связано с тем, что таблицы с плановыми и оперативно-учетными данными в схеме данных являются подчиненными по отношению к таблицам справочных данных, которые, как правило, находятся на верхнем уровне.

Отчеты

Средства Access по разработке отчетов предназначены для конструирования макета отчета, в соответствии с которым осуществляется вывод данных из определенного источника записей в виде выходного печатного документа. Эти средства позволяют создавать отчет любой сложности, обеспечивающий вывод взаимосвязанных данных из многих таблиц, их группировку, вычисления итоговых значений. При этом могут быть выполнены самые высокие требования к оформлению документа.

Перед началом конструирования пользователь должен спроектировать макет отчета. При этом определяются состав и содержание разделов отчета, размещение в нем значений, выводимых из полей таблиц (запросов) БД. и вычисляемых реквизитов, определяются поля, по которым нужно группировать данные. Для каждого уровня группировки определяются заголовки и примечания, вычисляемые итоговые значения. Кроме того, оформляются заголовки и подписи реквизитов отчета. Определяется также порядок вывода данных в отчете.

Отчет может создаваться с помощью мастера или в режиме конструктора отчетов. Во многих случаях удобно использовать мастера отчетов. Созданный мастером отчет можно доработать в режиме конструктора.

При необходимости вывода в отчете результатов решения задачи в качестве основы для отчета может быть использован многотабличный запрос, представляющий эти результаты. На запрос могут быть возложены наиболее сложные виды выборки и предварительной обработки данных. Разнообразные возможности конструктора отчетов позволяют легко структурировать и оформить полученные в запросе данные.

Основы конструирования отчетов

Чтобы правильно создавать отчеты, необходимо понимать назначение каждого его раздела. Например, от выбора раздела, в который помещен вычисляемый элемент управления, зависит способ вычисления результата.

























Назначение  каждого из разделов:

  • Заголовок отчета (Report Header) обычно включает эмблему компании, название отчета, дату. Заголовок отображается перед верхним колонтитулом только один раз в начале отчета
  • Верхний колонтитул (Page Header) отображается вверху каждой страницы и используется в случае, когда нужно, чтобы название отчета и другая общая информация повторялись на каждой странице
  • Заголовок группы (<имя поля > Header) используется при группировке записей отчета для вывода названия группы и однократного отображения полей, по которым производится группировка. Отображается перед каждой новой группой записей. Например, если отчет сгруппирован по покупателям, в заголовке группы можно указать название покупателя, а также адрес, телефон и другие реквизиты. Допускается до 10 уровней группировки выводимых записей
  • Область данных (Detail) отображает записи из источника данных, составляющие основное содержание отчета
  • Примечание группы (<имя поля > Footer) используется для отображения итогов и другой сводной информации по группе в конце каждой группы записей. Если поместить в примечание группы вычисляемый элемент управления, использующий статистическую функцию Sum, сумма будет рассчитываться для текущей группы
  • Нижний колонтитул (Page Footer) применяется для нумерации страниц и отображения другой информации внизу каждой страницы
  • Примечание отчета (Report Footer) служит для отображения итогов и другой сводной информации по всему отчету один раз в конце отчета. Если в примечании отчета поместить вычисляемый элемент управления, использующий статистическую функцию Sum, сумма рассчитывается для всего отчета.