Проектирование БД «Садово-огородные культуры»
Допустим, пользователю БД необходимо иметь (локальную) ИС, обеспечивающую решение различных информационных задач, связанных с выращиванием культур на его участке.
Такая база данных должна предоставить:
• информацию о фактическом составе и характеристиках садово-огородных культур;
• количественную информацию об урожайности (продуктивности) культур;
• информацию для своевременного сбора урожая (сроки созревания);
• информацию для оценки качественного состояния почвы (например, кислотность);
Кроме того, культуры должны быть разбиты на группы (классы) по видовому признаку и способам выращивания (деревья, кустарники и т. д.). Необходимо предусмотреть возможность хранить поля с некоторыми характеристиками групп и по мере эксплуатации расширять их состав.
В данном варианте базы данных мы не приводим эти поля (используем только поле «Единицы измерения»).
БД и средства ее эксплуатации должны обеспечить решение следующих задач.
1. Создать условия надежного ввода, хранения и корректировки информации о культурах, которые размещаются или могут быть размещены на участке.
2. Обеспечить при отображении информационных массивов, содержащих характеристики культур с делением культур на группы.
3. По требованию пользователя выводить данные о культурах, которые имеют определенные значения заданных характеристик.
4. Обеспечить вывод на печать полного списка культур, размещенных на участке, с подсчетом их количества или площади, занимаемой отдельными группами культур.
Очевидно, что данный список задач может быть продолжен.
В соответствии с общей схемой проектирования БД мы должны тщательно проанализировать задачи и запросы пользователя и на основе этого анализа определить из каких информационных массивов будет состоять база данных, по каждому массиву определить структуру, состав и тип полей, установить взаимосвязь массивов и т. д.
Допустим, что после обсуждения с пользователем состава и характеристик БД мы определили два массива: массив «Группы», содержащий общие характеристики групп и массив «Культуры», содержащий характеристики культур. После исключения одинаковых полей и объединения всех полей из обоих массивов мы получили исходную реляционную информационную модель, которую можно представить в виде таблицы 4.1 «Культуры участка». Из методических соображений мы не стали включать набор общих характеристик групп (например, общее количество единиц представителей группы на участке, общие технологические параметры возделывания культур группы и др.), которые пользователь сможет добавить в процессе эксплуатации базы данных.
С точки зрения реляционной теории данная ИМ имеет ряд недостатков (дублирование данных, взаимозависимость некоторых полей, наличие вычисляемого поля). Кроме того, использование текстовых названий групп и культур для идентификации записей может вызвать определенные неудобства при решении ряда задач обслуживания и эксплуатации БД.
Для устранения недостатков используем процесс нормализации.
Нормализация должна определить такой набор таблиц и их взаимосвязи, который обладает лучшими свойствами по сравнению с другими вариантами при выполнении операций добавления, корректировки и удаления данных, а также обеспечивает максимальное быстродействие при запросах и требует минимального расхода электронной памяти.
Нормализация состоит из ряда этапов, в результате которых создаются информационные модели разного уровня.
Такие модели называются нормальными формами.
Первый этап нормализации заключается в образовании таблицы, содержащей все необходимые поля информационной модели и ключевых полей. При этом необходимо исключить повторяющиеся столбцы и столбцы-массивы (содержащие значения типа списка). Фрагмент таблицы 4.1 представляет ИМ в первой нормальной форме. Однозначно определять записи будут поля «Название культуры» (далее – «Культуры») и «Группа» (т.е. мы имеем составной ключ). Все остальные поля будут функционально зависеть от этих двух.
Второй этап нормализации заключается в выделении полной и частичной зависимости неключевых полей от первичного ключа.
В нашем случае мы имеем частичную зависимость от составного первичного ключа полей: «Сроки созревания», «Почвы», «Количество культур», «Урожай» и «Урожайность». Значения этих полей зависят от поля «Культуры» и не зависят непосредственно от поля «Группы». А поле «Ед. измерения» зависит от поля «Группы».
Для решения проблем зависимости полей выделим из исходной таблицы поля связанные с группировкой культур, и объединим их в отдельную таблицу (информационный объект), которую назовем «Группы».
Определим поля «Название группы» и «Ед. измерения». Добавим поле «Обозначение», которое будем использовать в некоторых запросах и отчетах при выводе информации (на печать или экран).
Для связывания таблиц добавим в таблицу специальное числовое поле «Код_Гр», что позволит (без ущерба удобству эксплуатации) значительно быстрее выполнять запросы, экономить память (особенно во второй таблице) и упростит ввод данных.
Структура таблицы «Группы» и некоторые данные приводятся в таблице 4.2. Ключевым столбцом в этой таблице будет «Код_Гр».
Замечание
Названия столбцов в постановке задачи (в информационных моделях) могут отличаться от имен полей в таблицах базы данных.
Для хранения характеристик культур создадим таблицу «Культуры». В нее включим все поля, зависимые только от «культуры» и добавим необходимое поле для связывания таблиц в единую информационную модель.
Для связи таблиц будем использовать числовое поле «Код_Гр». Это поле будет использоваться и для группировки культур при выполнении запросов и в отчетах БД.
Таблица 4.1