Проектирование базы данных
Хорошо организованная структура БД позволит:
сделать ввод информации простым и понятным для пользователя;
быстро находить в БД требуемую информацию;
хранить данные в виде, который не приводит к чрезмерному разрастанию БД;
упростить разработку и сопровождение программного обеспечения.
Эффективная структура данных БД должна:
обеспечить быстрый доступк данным в таблицах;
исключить ненужное повторениеданных, которое может являться причиной ошибок при вводе и нерационального использования дискового пространства PC;
обеспечить целостность данных, чтобы при изменении одних объектов автоматически происходило соответствующее изменение связанных с ними объектов.
Процесс уменьшения избыточности информации в БД называется нормализацией.
Цель нормализации:
устранение избыточной информации;
расширение взаимодействия данных;
повышение эффективности системы.
Создание нормализованной бд
Как пример, рассмотрим таблицу заказов, содержащую поля:
-
Поля таблицы
Сведения о покупателе, номера его телефонов
Дата заказа, количество заказанного товара и данные о менеджере
Наименование и стоимость товара
Количество проданного товара
Если оставить таблицу без изменений, то получим однотабличную БД, не являющуюся оптимальной.
Основная проблема состоит в том, что в ней содержится значительное количество повторяющейсяинформации, в частности, сведения о покупателе и менеджере, содержащиеся в каждом сделанном заказе, поэтому:
при изменении адреса или фамилии покупателя нужно корректировать все записи, содержащие сведения о заказах этого покупателя, что приведет к неоправданному увеличению БД, при этом снизитсяскоростьвыполнения запросов;
в случае многократного ввода повторяющихся данных значительно возрастет вероятность ошибки.
Воспользуемся практическими советами теории нормализации для разработки на основании таблицы о заказах (или однотабличной БД) многотабличной БДс эффективной структурой.
К каждой таблицемноготабличной БД предъявляются требования:
В таблице не должно быть повторяющихся записей.
Для выполнения этого требования каждая запись таблицы должна иметь уникальный индекс, т. е. ключевое поле, которое содержит уникальное значение, например, код клиента.
В таблице не должно быть повторяющихся групп полей.
Второе требование постулирует устранение повторяющихся групп полей. В частности, т. к. каждый покупатель может иметьнесколько телефонов, сделать несколько заказов, в каждом из которых может бытьнесколько товаров, то следует иметь по крайней меречетыретаблицы с данными:
Номер таблицы |
Данные |
1 |
Сведения о покупателе |
2 |
Список телефонов покупателя |
3 |
Номер и дата заказа покупателя, данные о менеджере |
4 |
Наименование, стоимость, количество заказанного и проданного товара |
Теперь первая и вторая таблицы нормализованы. Отношение между связываемыми таблицами – один-ко-многим.
В третьей таблице имеется повторяющаясяинформация оменеджере, оформляющем заказы и дате заказа. Следовательно, ее можно разделить на три таблицы: в одной –номер заказа, во второй –дата заказа, в третьей – данные о менеджере.
Следует рассмотреть четвертую таблицу. Она тоже содержит повторяющуюся информацию о наименовании, стоимостииколичествезаказанного и проданного товара, которую следует разместить в двух таблицах:
в таблице наименований и стоимоститоваров, продаваемых фирмой;
в таблице количествазаказанного и проданногопо заказу товара.
Необходимо отметить, что информацию о заказанном и проданном товаре следуетпоместить в одну таблицу, при этом неопределённости не возникает: каждому заказанному количеству соответствует определённое количество проданного товара.
Таким образом, вместо четырёх неполностью нормализованных таблиц получаетсясемь простых таблиц снеповторяющейся информацией.
После определения структур таблиц, отношений между ними и совпадающих полей, которые будут использованы для связывания таблиц, можно приступить к созданию многотабличной БД, например, в VisualBasic.
Номер таблицы |
Данные |
1 |
Сведения о покупателе |
2 |
Список телефонов покупателя |
3 |
Номер заказа |
4 |
Дата заказа |
5 |
Данные о менеджере |
6 |
Наименование и стоимость товара |
7 |
Количество заказанного и проданного товара |