logo
Информационные технологии управления (ИТУ) / Курс «Информационные технологии управления»

Система проектирования и управления базами данных Access Реляционные базы данных

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

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

Таблица содержит поля (столбцы), в которых хранятся различного рода данные об объекте (например, для таблицы Поставщики полями могут быть - наименование поставщика, адрес поставщика, телефон поставщика и др.; для таблицы Товары – наименование, цена и др.), изаписи (строки), где собрана вся информация о конкретном значении объекта (например, о конкретном поставщике).

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

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

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

Поставки

Поставщик

Адрес

Телефон

С кем общаться

Др. поля П-ка

Наимен Товара

Количество

Цена

Др. поля Товара

1

П1

А1

Т1

И1

...

Н1

К1

Ц1

...

2

П1

А1

Т1

И1

...

Н2

К2

Ц2

...

3

П1

А1

Т1

И1

...

Н3

К3

Ц3

...

4

П2

А2

Т2

И2

...

Н4

К4

Ц4

...

5

П2

А2

Т2

И2

...

Н5

К5

Ц5

...

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

Чтобы избежать этого используется процесс нормализации, который и обеспечивает преимущество реляционных баз данных, состоящее в том, что для каждого самостоятельного объекта (физического объекта поставщики и физического объекта товары) создается своя собственная таблица, т.е. в нашем примере - это таблица Товаров и таблица Поставщиков. В таблице Товаров поставщик указывается в виде ссылки (это поле называетсявнешним ключом) на номер записи в таблице Поставщиков. Преимущества такой модели базы данных налицо - централизованное хранение информации о поставщиках и как следствие меньшие затраты времени на ввод, на поиск, устойчивость к ошибкам ввода. Поля номеров записей в таблице Поставщиков и в таблице Товаров назначимпервичными ключамиэтих таблиц. В дальнейшем выберем для них тип данных – Счетчик. С помощью ключей устанавливается связь (отношение, реляция) между этими таблицами. В данном случае это отношение«один ко многим» (один поставщик может поставлять много товаров):

Поставщики

1

Товары

№ П-ка

П-к

Адр

Тел

С кем

Др. П-ка

один

Т-ра

П-ка

Наим Т-ра

К-во

Цена

Др.

Т-ра

1

П1

А1

Т1

И1

...

1

1

Н1

К1

Ц1

...

2

П2

А2

Т2

И2

...

ко

2

1

Н2

К2

Ц2

...

3

1

Н3

К3

Ц3

...

многим

4

2

Н4

К4

Ц4

...

5

2

Н5

К5

Ц5

...

Но что делать, когда один поставщик предлагает много товаров, а один и тот же товар может поставляться несколькими поставщиками? Возникает связь «многие ко многим», которая в рамках двух таблиц не может быть однозначно развязана. Тогда приходится вводить третью таблицу (она называется таблицейпересечения), с помощью которой можно разбить связь «многие комногим» на две связи «один ко многим». В нашем примере это таблица Предложения:

Поставщики

1 

Предложения

1

Товары

№П-ка

П-к

Адрес

Тел

С кем

Др

один

№ Предл

№П-ка

№ Т-ра

№ зак

К-во

Цена

Др

один

№ Т-ра

Наим.Т-ра

Др

1

П1

А1

Т1

И1

...

1

1

1

1

К1

Ц1

...

1

Н1

...

2

П2

А2

Т2

И2

...

ко

2

1

2

К2

Ц2

...

ко

2

Н2

...

3

1

3

1

К3

Ц3

...

3

Н3

...

многим

4

2

4

К4

Ц4

...

многим

4

Н4

...

5

2

5

2

К5

Ц5

...

5

Н5

...

6

2

1

К6

Ц6

...

7

1

4

К7

Ц7

Существуют 4 правила, которым надо следовать при нормализации:

1) каждое поле любой таблицы должно быть уникальным;

2) каждая таблица должна иметь первичный ключ;

3) для каждого значения первичного ключа должно быть одно и только одно значение любого поля и это значение должно относиться к объекту таблицы. Т.е. каждая таблица должна описывать определенный объект (физический или логический) и описывать его полностью (в какой-либо таблице не должны появляться атрибуты или свойства другого объекта);

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

Кроме таблиц база данных Accessможет включать: запросы, формы, отчеты, страницы, макросы и модули.

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

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

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

Страницадоступа к данным – это опубликованная с помощьюAccessвеб - страница, имеющая подключение к базе данных и предназначенная доля просмотра, добавления, изменения, обработки данных в базе данных, например через сетьInternet.

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

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