Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Понятие реляционной базы данных



 

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

Используя MS Access можно создавать удобные формы для ввода и просмотра данных, выполнять необходимые вычисления, составлять различной сложности отчеты. В СУБД MS Access обладает мощным набором сервисных средств, облегчающих работу пользователя. Мастера помогают создавать таблицы, запросы, формы, отчеты из имеющихся заготовок, выполнив всю черновую работу. Макросы позволяют автоматизировать многие процессы без использования традиционных средств программирования. Более опытные пользователи могут воспользоваться встроенным языком программирования VBA (Visual Basic for Application), позволяющим создавать сложные приложения.

Мощность и простота использования делают MS Access одной из лучших программ для управления базами данных.

MS Access является реляционной базой данных. Реляционная база данных представляет собой множество взаимосвязанных двумерных таблиц – реляционных таблиц, в каждой из которых содержатся сведения об одном объекте.(relation – связь, отношение)

На примере работы фирмы по продаже компьютеров рассмотрим недостатки хранения данных в одной таблице. Использую таблицу MS Excel создадим базу данных, данные о заказах будем размещать в отдельной строке.

 

Дата заказа Компьютер Цена Кол Стоимость Название Контактная персона Телефон Город
20.01.99 Pentium i166 333, 00 3330, 00 ОАО Лад Серый Денис 293-55-74 Спб
27.12.98 Pentium i133 322, 00 2576, 00 АО Плата Сидоров Петр 343-77-88 Москва
25.12.98 Pentium i133 322, 00 1610, 00 АО Прогресс Ломтин Василий 234-78-87 СПб
24.12.98 AMD K5-P100 296, 00 1184, 00 АО Рубин Барышев Семен 989-88-99 Москва
25.12.98 Pentium i133 322, 00 3220, 00 ОАО Лад Серый Денис 293-55-74 Спб
05.01.99 Pentium i166 MMX 386, 00 1930, 00 ООО Память Холодная Вера 345-67-77 Минск
26.12.98 Pentium i166 333, 00 999, 00 АО Прогресс Ломтин Василий 234-78-87 СПб
25.12.98 Pentium i200 351, 00 351, 00 АО Рубин Барышев Семен 989-88-99 Москва
24.12.98 Pentium i200 MMX 425, 00 4250, 00 НПО Алмаз Иванова Светлана 454-33-33 Москва
26.12.98 Pentium i200 351, 00 2106, 00 ОАО Лад Серый Денис 293-55-74 Спб
04.01.99 Pentium i200 MMX 425, 00 1700, 00 ОАО Плата Умная Анна 389-84-33 Москва
20.01.99 Pentium i133 322, 00 1610, 00 НПО Алмаз Веткин Андрей 989-88-99 Спб
20.01.99 Pentium i200 MMX 425, 00 850, 00 ОАО Лад Серый Денис 293-55-74 Спб

 

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

  1. В Московском районе, в котором находится фирма постоянного клиента Дениса Серого поменялись номера телефонов и теперь для замены одного номера телефона требуется просмотреть всю таблицу и внести изменения в несколько записей.
  2. Запись о заказе Ивановой Светланы оказалась ошибочной и после удаления соответствующей строки мы потеряли данные об этом клиенте или о товаре заказанным клиентом.
  3. При создании новой записи мы должны просмотреть таблицу в поисках данных о стоимости товара.
  4. Случайно допустив ошибку в названии модели компьютера мы не сможем впоследствии правильно подвести итоги о популярности товара.

Этот список можно дополнить. Таким образом мы столкнулись с аномалиями базы данных.

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

ü Аномалии модификации – изменение значения одного данного может повлечь за собой просмотр всей таблицы и соответствующего изменения других записей

ü Аномалии удаления – при удалении какого-либо данного из таблицы может пропасть и другая информация, которая не связана напрямую с удаляемыми данными

ü Аномалии добавления – информацию в таблицу нельзя поместить до тех пор пока она не полная, либо вставка новой записи потребует просмотр всей таблицы (новый сотрудник)

Обратите внимание на выделенные серым цветом строки таблицы. Здесь мы столкнулись с дублированием информации. Различается простое (не избыточное) и избыточное дублирование данных.

Пример простого дублирования

 

Сотрудник Телефон
Иванов
Петров
Сидоров
Чистяков

 

Пример избыточного дублирования

 

Сотрудник № комнаты Телефон
Иванов
Петров
Сидоров
Чистяков

Для ликвидации дублирования разобьем таблицу на две

№ комнаты Телефон

 

Сотрудник № комнаты
Иванов
Петров
Сидоров
Чистяков

 

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

 

 

Таблица Товары

Компьютер Цена
Pentium i166 333, 00
Pentium i133 322, 00
AMD K5-P100 296, 00
Pentium i200 MMX 425, 00
Pentium i133 322, 00
Pentium i166 MMX 386, 00
Pentium i166 333, 00
Pentium i200 351, 00
Pentium i200 MMX 425, 00
AMD K5-P133 307, 00

 

Таблица Клиенты

Название Контактная персона Телефон Город
ОАО Лад Серый Денис 293-55-74 Спб
АО Плата Сидоров Петр 343-77-88 Москва
АО Прогресс Ломтин Василий 234-78-87 СПб
АО Рубин Барышев Семен 989-88-99 Москва
ООО Память Холодная Вера 345-67-77 Минск
АО Рубин Барышев Семен 989-88-99 Москва
НПО Алмаз Иванова Светлана 454-33-33 Москва
НПО Алмаз Веткин Андрей 989-88-99 Спб

Таблица Заказы

Дата заказа Компьютер Кол Стоимость Название
20.01.99 Pentium i166 3330, 00 ОАО Лад
27.12.98 Pentium i133 2576, 00 АО Плата
25.12.98 Pentium i133 1610, 00 АО Прогресс
24.12.98 AMD K5-P100 1184, 00 АО Рубин
25.12.98 Pentium i133 3220, 00 ОАО Лад
05.01.99 Pentium i166 MMX 1930, 00 ООО Память
26.12.98 Pentium i166 999, 00 АО Прогресс
25.12.98 Pentium i200 351, 00 АО Рубин
24.12.98 Pentium i200 MMX 4250, 00 НПО Алмаз
26.12.98 Pentium i200 2106, 00 ОАО Лад
04.01.99 Pentium i200 MMX 1700, 00 ОАО Плата
20.01.99 Pentium i133 1610, 00 НПО Алмаз
20.01.99 Pentium i200 MMX 850, 00 ОАО Лад

 

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

Итак каждая таблица включает информацию об объектах определенного типа, например о товарах, поставщиках, клиентах и т.д.

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

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

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

Размещение сведений о каждом объекте в отдельной таблице и связывание таблиц позволяет избежать дублирования данных и упрощает процесс обновления и поиска в базе.

Рекомендации по определению полей

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

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

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

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

ü В большинстве случаев не возникает необходимости хранить в таблице результаты вычислений.

ü Хранить данные лучше в виде минимально возможных элементов. Наличие в одном поле нескольких элементов затрудняет их извлечение из этого поля.(Например поле ФИО следует разбить на три отдельных поля: Имя, Отчество, Фамилия)

 

Примеры выделения ключевых полей

В MS Access можно выделить три типа ключевых полей: простой ключ, составной ключ и счетчик. Обычно в качестве ключевого поля выбирается поле с неповторяющимися значениями (простой ключ) или комбинация из нескольких полей (составной ключ). Если такие поля не найдены или получается слишком сложный составной ключ используется специальный тип данных – счетчик. Счетчик содержит номера строк и будет последовательно увеличиваться на 1 при создании новой записи. Если Вы забыли самостоятельно определить ключевое поле MS Access предложит Вам задать ключевое поле сам. Не отказывайтесь от этого сразу, а лучше подумайте какое поле с не повторяющими значениями можно выбрать в качестве ключевого или согласитесь на счетчик.

Совет! Не забывайте создавать ключевые поля, не даром ключ является символом MS Access

Рассмотрим примеры выделения ключевых полей.

Пусть в базе необходимо хранить данные об объекте Сотрудники, имеющим следующие атрибуты: фамилия, имя, адрес, телефон, табельный №, должность. Рассмотрим по порядку эти атрибуты

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

2. Те же причины заставляют отказаться от использования ключевого атрибута Имя

3. К сожалению по тем же причинам нельзя использовать и составной ключ Фамилия + Имя

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

5. Всегда существует несколько сотрудников, занимающих одну должность

6. Табельный № -не содержит совпадений. Следовательно именно он может быть выбран в качестве ключевого поля

Графически это отображается следующим образом

В первой строке прямоугольника указывается имя таблицы и отделяется чертой от атрибутов (полей) таблицы

Жирным начертанием выделяется ключевое поле

 

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

 

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

 

 

Следующий пример – объект Студенты имеет следующие атрибуты: №группы, №студента, фамилия, имя, год рождения, адрес. По известным причинам ни фамилия, ни имя, ни адрес, ни год рождения не могут быть выбраны в качестве ключевых. №группы также не может быть выбранным в качестве ключевого, так как в одной группе обучается больше одного студента. Атрибут №студента содержит порядковый номер студента в группе и в каждой группе имеется студент с номером 1, 2 и т.д. Следовательно ни один из этих атрибутов не может быть ключевым. Конечно можно добавить поле Код Студента, а можно воспользоваться составным ключом. В качестве составного ключа используем поля №группы и №студента, так как эта комбинация не содержит повторяющихся значений.

 

 

Типы связей между таблицами.

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

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

Примеры

 
 

 

 


Одной записи в таблице Клиенты может соответствовать много записей в таблице Заказы.

 
 

 

 


Одной записи в таблице Товары может соответствовать много записей в таблице Заказы.

 
 

 

 


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

Отношение ( связь) один - к – одному (1: 1). Запись в таблице А может иметь не более одной связанной записи в таблице В и наоборот. Содержимое таких таблиц как правило можно объединить в одну. Этот тип связи используется довольно редко Такие связи имеет смысл устанавливать для разделения таблиц с очень большим количеством полей, для отделения части таблицы по соображениям защиты или если не все данные из одной таблицы используются в другой.

 
 

 

 


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

Связь один к одному создается только в том случае когда оба поля являются ключевыми

Отношение ( связь) многие ко многим (N: M). Одной записи в таблице А может соответствовать несколько записей в таблице В, а одной записи в таблице В может соответствовать много записей в таблице А.

 


У одной книги может быть несколько авторов, а каждого автора может быть несколько книг.

Такую связь в MS Access реализовать невозможно. Такая связь реализуется только при помощи третьей таблицы – таблицы связки, имеющей составной ключ

 

 

 
 

 


Внимание! Связь многие ко многим преобразуется в две связи один ко многим при помощи таблицы связки.

 

Установление связи между таблицами возможно

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

ü Таблицы хранятся внутри одной БД.

ü Главная таблица связывается с подчиненной по ключу

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

 


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-07-12; Просмотров: 613; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.048 с.)
Главная | Случайная страница | Обратная связь