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