Совокупность связанных между собой таблиц БД представляет реляционную (relation- отношение) БД.
При проектировании реляционной базы данных необходимо решить вопрос о наиболее эффективной структуре данных. Основные цели, которые при этом преследуются:
· Обеспечить быстрый доступ к данным в таблицах
· Исключить ненужное повторение данных, которое может являться причиной ошибок при вводе и нерационального использования дискового пространства вашего компьютера
· Обеспечить целостность данных таким образом, чтобы при изменении одних объектов автоматически происходило соответствующее изменение связанных с ними объектов
Данные, хранящиеся в БД должны быть непротиворечивы, целостны и минимально избыточны. Сведения, хранящиеся в таблице «Магазин», являются избыточными. Проявляется это в том, что данные о покупателях и товарах будут повторяться многократно, а это не рациональное использование дискового пространства. Кроме того, такая структура полей таблицы делает ее неудобной при заполнении. При заполнении данных о каждой покупке необходимо вводить данные о покупателе и товаре.
Для устранения этих недостатков БД надо уменьшить избыточность данных. Процесс уменьшения избыточности данных называется нормализацией БД. Уменьшение избыточности данных возможно путем разделения вышеприведенных данных и размещения их в нескольких таблицах.
В нашем примере таблицу «Магазин» можно разбить на три таблицы, но в этом случае для связывания таблиц между собой необходимо будет в каждую таблицу добавить новые поля, которых нет в таблице «Магазин». Разобьем эту таблицу на три: «Покупатели», «Товары» и «Продажи».
Структура таблицы «Покупатели» будет следующей:
· код покупателя
· фамилия,
· имя,
· отчество,
· город проживания,
· улица,
· номер дома,
· номер квартиры,
· телефон.
Таблице «Товары» определим следующую структуру:
· код товара
· наименование,
· цена,
· единица измерения;
И таблица «Продажи» должна иметь такую структуру:
· код покупателя,
· код товара,
· дата продажи,
· количество проданного товара.
В этой БД появилось четыре новых поля, которых не было в предыдущей БД и в таблице «Продажи» также будут повторяться многократно код покупателя и товара, но эта БД будет намного компактней. Это связано с тем, что данные о покупателе и товаре в ней будут повторяться только один раз, а многократно повторяющиеся код покупателя и товара имеют гораздо меньшую длину. Эти таблицы являются взамосвязанными: таблица «Покупатели» связана с таблицей «Продажи» и таблица «Товары» связана с таблицей «Продажи». Эта связь таблиц осуществляется через общие поля. В данном случае эти поля имеют одинаковое наименование, хотя это не обязательно. Однако, связываемые поля всегда должны быть одного типа.
Таким образом, наша БД, назовем ее «Учет продаж», является реляционной БД.