Реляционная база данных

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

MS Access хранит все данные в одном файле, хотя и распределяет их по разным таблицам. Для версии 2003 это файл вида – имя_БД.mdb; для версии 2007 – имя_БД.accdb.

Все версии Access имеют в сво­ем арсенале средства, значительно упрощающие ввод обработку, поиск данных, предоставление информации в виде таблиц, графиков и отчетов. Начиная с версии Access 2000, были добавлены Web-страницы доступа к данным, которые пользователь может просматривать с помощью программы Internet Explorer. Помимо этого, Access позволяет использовать электронные таблицы и таблицы других персональных и серверных БД для обмена и хранения информации, необходимой при­ложению.

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

Отношения обладают следующими свойствами:

· каждый элемент таблицы – один элемент данных;

· каждый кортеж таблицы – данные об одном экземпляре объекта предметной области, например, в таблице «Сотрудники» строка сведений о конкретном сотруднике;

· все элементы поля имеют одинаковый тип и длину, определёны на одном домене;

· каждое поле имеет уникальное имя;

· одинаковые строки в таблице отсутствуют;

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

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

Таблица 2 – Отношение Должности

Должность Подразделение
Директор Администрация
Менеджер по продажам РабочийПерсонал
Менеджер по закупкам РабочийПерсонал

Таблица 3 – Отношение Оклады

Оклад ТарифныйРазряд
   
   
   

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

В таблице 2 показаны должности, каждая должность относится к той или иной категории, представленной в виде подразделения.

В таблице 1 отражены данные о сотрудниках с возможностью выбора Должности и Оклада из списка Подстановки. Назначение таблицы Сотрудники в том, чтобы связать между собой две другие таблицы. При этом появляется возможность сопоставить одну запись из таблицы 3 списку записей сотрудников с определённым окладом, и одну запись из таблицы 2 – списку записей сотрудников с определённой должностью.

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

Ключевые поля используются для быстрого поиска и связи данных из разных таблиц при помощи запросов, форм и отчетов. Если для таблицы определены ключевые поля, то MS Access предотвращает дублирование или ввод в них пустых значений. Ключевые поля бывают двух типов – первичные и внешние.

Первичные ключи используются для создания связей между таблицами. В этом случае первичному ключу одной таблицы соответствует внешний ключ второй таблицы. Например, поле Должность является первичным ключом в таблице Должности и внешним ключом в таблице Сотрудники; поле Оклад является первичным ключом в таблице Оклады и внешним ключом в таблице Сотрудники.

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

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

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

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

· Целостность по сущностям. Не допускается, чтобы какой-либо атрибут, участвующий в первичном ключе базового отношения, принимал неопределенные значения. Базовым отношением называют независимое именованное отношение (для БД Сотрудники – это отношения Должности, и Оклады). Мотивировка этого правила определяется тем, что базовые отношения соответствуют сущностям в реальном мире, следовательно, они отличимые, т.е. имеют уникальную идентификацию. В реальной же модели функцию уникальной идентификации выполняют первичные ключи, и, таким образом, ситуация, когда первичный ключ принимает неопределенное значение, является противоречивой и говорит о том, что некоторая сущность не обладает индивидуальностью, а значит, не существует. Отсюда и название – целостность по сущностям.

· Целостность по ссылкам. Если базовое отношение включает некоторый внешний ключ (ВК), соответствующий некоторому первичному ключу (ПК), то каждое значение ВK должно быть либо равным значению ПК, либо полностью неопределенным. Неопределенность внешнего ключа может возникнуть в ситуации, когда, например, имеется вакансия на должность в некоторый отдел.

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

1.4 Связи между таблицами

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

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

Связи между отношениями на уровне БД могут иметь один из трех видов:

1. Один-к-одному. Одной записи базового отношения соответствует одна запись в подчинённой таблице, и наоборот. Этот тип связи применяется достаточно редко. Единственный случай, когда применение этого типа связи оправданно – разбиение таблицы, содержащей большое количество полей, на несколько вспомогательных таблиц. Например, значения атрибута Должность храниться в отдельной таблице-справочнике с конкретизацией по другим дополнительным атрибутам.

2. Один-ко-многим. Одной записи базового отношения соответствует несколько или ни одной записи в подчинённой таблице. В свою очередь каждой записи подчиненной таблицы может соответствовать только одна запись базового отношения. Наиболее употребительный вид связи. На рисунке 3 представлен пример такой связи между подчиненной таблицей Сотрудники и базовыми отношениями Должности и Оклады по атрибутам Должность и Оклад.

Рисунок 3 – Связанные таблицы

3. Многие-ко-многим. При этом типе связи многим записям базового отношения может соответствовать много записей в подчинённой таблице (и наоборот). В таблице 4 приведён вариант должностного совмещения внутри предприятия. Из табличных данных следует, что кадровый работник может быть сотрудником разных подразделений одного предприятия. Такую связь в MS Access можно организовать только при помощи третьей вспомогательной таблицы. По сути, связь «многие-ко-многим» представляет собой две связи типа «один-ко-многим». При этом базовая и подчинённая таблицы расположены со стороны «один», а вспомогательная таблица со стороны – «многие»(рисунок 4). Одной записи главной таблицы может соответствовать несколько записей подчинённой таблицы и наоборот. Уникальных ключей нет. Все ключи внешние. В этом случае таблицу, содержащую всевозможные комбинации базовых компонент, удобно нормализовать, используя инструмент Анализатор таблиц (Работа с базами данных /Анализ / Анализ таблиц, запускается мастер). На рисунке 4 показан этап нормализации таблицы Должностные совмещения на предприятии.

Таблица 4 – Должностные совмещения на предприятии

Код ФИО Дата Рождения Таб Номер Должность Подразделение Оклад Тарифный Разряд
  Иванов А.М. 10.12.1970   Директор Администрация    
  Петров Н.И. 08.11.1975   Менеджер по закупкам Рабочий Персонал    
  Сидоров О.П. 04.05.1977   Менеджер по продажам Рабочий Персонал    
  Степанов А.М. 12.05.1981   Менеджер по продажам Рабочий Персонал    
  Иванов А.М. 10.12.1970   Менеджер по закупкам Рабочий Персонал    
  Сидоров О.П. 04.05.1977   Менеджер по закупкам Рабочий Персонал    

Одной из основных особенностей запросов является возможность отображения полей из связанных таблиц.

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

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

Рисунок 4 – Окно мастера анализа таблиц

Рисунок 5 – Создание связи на уровне запроса

Установив целостность данных, необходимо следовать следующим правилам:

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  




Подборка статей по вашей теме: