Создание информационной системы включает в себя последовательность следующих этапов:
· нормализация данных;
· создание макетов таблиц;
· установка связей между таблицами;
· создание форм для каждой таблицы;
· заполнение главных таблиц необходимыми данными;
· заполнение подчинённых таблиц данными;
· создание запросов;
· создание отчётов;
· создание интерфейса пользователя.
Эти этапы подробно рассмотрены в последующих пунктах главы на примере создания ИС для фирмы, торгующей кондитерскими изделиями.
Нормализация данных
Нормализация данных является самым ответственным этапом, поскольку неправильная нормализация приводит к непредсказуемым результатам работы информационной системы.
Нормализация данных состоит в анализе исходной информации с целью выявления количества типов объектов, сведения о которых необходимо хранить в базе данных, и установлении перечня свойств объектов каждого типа. По результатам нормализации определяется необходимое число таблиц базы данных, а именно, для каждого типа объектов должна быть своя таблица, полями которой являются свойства объектов данного типа. Нормализация должна выполняться в соответствии с требованиями правил нормализации (нормальных форм). Чтобы понять технологию их использовангия рассмотрим следующий пример.
Пусть необходимо создать информационную систему для некоторой фирмы, торгующей кондитерскими изделиями, клиентами которой являются организации. Фирма ведёт учёт своей деятельности, фиксируя следующую информацию о заказе:
Номер заказа;
Дата заказа;
Наименование клиента;
Адрес клиента;
Название продукта;
Цена продукта;
Количество продукта;
Стоимость заказа.
В целях упрощения анализа и уменьшения объёма излагаемого материала будем считать, что клиенты заказывают каждый раз только один продукт и что цена на продукты не меняется во времени.
Первое, что нужно сделать – это определиться с целью создания базы данных и кто ее будет использовать для того, чтобы определить поле, с которым будет связан однозначно первичный ключ. Очевидно, что эта база данных нужна для получения оперативной информации о доходах, получаемых при выполнении заказов, что зависит от работы с клиентами. Поэтому первичный ключ будет связан с полем Наименование клиента. После этого надо выполнить второе требование первой нормальной формы. Так как поля Наименование клиента и его адрес однозначно связаны с первичным ключом и один и тот же клиент может делать два и более заказа, то поля Код клиента, Наименование клиента, Адрес клиента выделяет в отдельную таблицу, которую назовем Клиенты. Оставшиеся поля образуют вторую таблицу, которую назовем Заказы. Так перечисленные три поля исключены из исходной таблицы, то во второй таблицы надо предусмотреть поле, с помощью которого можно получить информацию о сделанных заказах клиента. Очевидно, что это поле должно содержать в себе значения первичного ключа и эти значения будут повторяться. Имя этого поля может быть любым, для простоты назовем его Код клиента. Очевидно, что эти две таблицы связаны отношением один-ко-многим.
Вторая таблица не находится в первой нормальной форме, так как у нее нет первичного ключа. Так как эта таблица находится со стороны многие, то для нее нужно создать составной первичный ключ. Его образуют поля Код клиента, Код продукта и либо Номер заказа, либо Дата заказа. Выберем – Код клиента, Код продукта, Номер заказа.
Обе таблицы находятся в первой нормальной форме. Приведем их ко второй нормальной форме. В соответствии с ее условиями кандидатом для такого анализа будет вторая таблицы, так как только она имеет составной первичный ключ и только для нее имеет смысл искать частичные функциональные зависимости между элементами составного первичного ключа и не ключевыми полями. Здесь также легко заметить, что поля Наименование продукта и Цена продукта будут определяться только полем Код продукта, но не полями Код клиента и Номер заказа. Поэтому эти данные могут повторяться и их надо исключить в отдельную таблицу, которую назовем Продукты. Между таблицами Заказы и Продукты по полю Код продукта будут отношения один-ко-многим.
Итак, в нашем случае мы имеем объекты трёх типов: клиент, продукт, заказ.
После определения количества типа объектов и выявления их свойств осталось попробовать уменьшить объём хранимой информации, так как чем меньше объём базы данных, тем быстрее будет работать информационная система. В нашем случае единственная возможность сделать это – исключить из свойств заказа его стоимость. Действительно, стоимость заказа определяется произведением цены продукта на количество и, следовательно, всегда может быть вычислена, если в этом возникнет необходимость.
Итак, в результате нормализации мы выяснили, что база данных содержит три типа объектов: клиент, продукт, заказ. Эти объекты обладают следующими свойствами.
Таблица 1
№ | Тип объекта | Его реальность | Свойства объекта |
1 | клиент | реальный | Код клиента Наименование клиента Адрес клиента |
2 | продукт | реальный | Код продукта Название продукта Цена продукта |
3 | заказ | виртуальный | Номер заказа Дата заказа Код клиента Код продукта Количество продукта |
Создание таблиц
Перед тем как создавать таблицы, необходимо дать каждой таблице уникальное имя, для каждой таблицы определить первичный ключ, а затем определить тип данных и выбрать подходящие названия для каждого поля таблицы.
В нашем случае названия таблиц могут быть такими: «Клиенты», «Продукты», «Заказы».
Первичный ключ - это минимальный набор полей, позволяющий однозначно отличить одну запись от другой.
Очевидно, что менее одного поля в первичном ключе быть не может, поэтому формирование первичного ключа надо начинать с попытки найти такое поле в таблице. Если такого поля в таблице нет, надо попытаться составить первичный ключ из двух полей и так далее. Если даже из всех полей таблицы не удаётся составить первичный ключ, надо добавить новые поля.
В таблице «Клиенты» поле «код клиента» может служить первичным ключом, т.к. не может быть двух клиентов с одинаковым кодом. Аналогично, у таблицы «Продукты» первичным ключом может быть поле «код продукта». Так как, по нашему предположению, клиенты каждый раз заказывают только один тип продукта, то первичным ключом таблицы «Заказы» может быть поле «номер заказа».
Давая имена полям таблицы необходимо руководствоваться следующими соображениями.
Во-первых, имена полей должны быть как можно короче. Имена полей могут входить в формулы, и чем они короче, тем меньше вероятность сделать ошибку при наборе формулы.
Во-вторых, желательно, чтобы имена полей имели смысловое содержание, соответствующее данным, хранящимся в этом поле.
Учитывая вышесказанное, можно предложить следующий вид таблиц, входящих в проектируемую базу данных.
Клиенты | ||
Код клиента | наименование | адрес |
Продукты | ||
Код продукта | Название | цена |
Заказы | ||||
Номер заказа | Код клиента | Код продукта | количество | дата |
Теперь нужно определиться с типом данных, хранимых в каждом поле. Будем считать, что поля «код клиента», «код продукта», «цена», «номер заказа» и «количество» содержат числовые данные. Поля «наименование», «адрес» и «название» содержат текстовые данные, а поле «дата» - специальный тип «Дата/Время».
Последовательность создания таблиц рассмотрим на примере таблицы «Клиенты».
В окне базы данных щелкнуть на объекте «Таблицы», а затем щелкнуть по кнопке «Создать».
В появившемся окошке выделить строчку «Конструктор» и нажать ОК.
В первой строке столбца «Имя поля» набрать имя «Код клиента» (без кавычек конечно) и нажать на клавишу «Таб».
В столбце «Тип данных» выбрать из списка «Числовой», а внизу в строке «Размер поля» должно стоять «Длинное целое». Если это не так, надо щелкнуть мышкой в этой строке и выбрать из списка «Длинное целое».
В строке «Значение по умолчанию» удалить 0.
Щелкнуть в строке «Обязательное поле» и выбрать из списка «Да».
Щелкнуть в строке «Индексированное поле» и выбрать из списка «Да (совпадения не допускаются)».
На этом создание поля «Код клиента» можно считать законченным.
Теперь в следующей строке аналогично создадим поле «Наименование», только тип данных будет «Текстовый», поле обязательное, а всё остальное можно оставить как есть.
В третье строке создать поле «Адрес», которое имеет тип данных «Текстовый», только размер поля установить равным 80 символам.
С полями покончили, теперь надо указать какие поля входят в первичный ключ.
Так как в этой таблице первичный ключ состоит всего из одного поля «Код клиента», надо щелкнуть в строке с именем поля «Код клиента», а затем щелкнуть по кнопке с изображением ключа в панели инструментов. Слева от поля «Код клиента» должно появиться изображение ключа. Это изображение отмечает ключевые поля.
Осталось присвоить таблице имя. Для этого нажать в панели инструментов на кнопку «Сохранить», ввести имя таблицы «Клиенты» и на ОК.
Аналогично создаются и таблицы «Продукты» и «Заказы».
В таблице «Продукты» поле «Цена» имеет тип «Числовой», а свойства поля должны быть установлены так:
· размер поля - «одинарное с плавающей точкой»,
· число десятичных знаков – 2,
· обязательное поле – Да.
·
В таблице «Заказы» поля имеют следующие свойства.
«Номер заказа» - длинное целое, обязательное поле – Да, индексированное поле – Да(Совпадения не допускаются).
«Код клиента» - длинное целое, обязательное поле – Да, индексированное поле – Нет.
«Код продукта» - аналогично коду клиента.
«Количество» - «одинарное с плавающей точкой», обязательное поле – Да, индексированное поле – Нет.
«Дата» - тип «Дата/время», формат поля - «Краткий формат даты», обязательное поле – Да.
Внести изменения в созданную таблицу можно щелкнув по имени таблицы, а затем по кнопке «Конструктор». Вообще аналогично редактируются и все другие объекты базы данных, формы, запросы и т.д.
2.4. Установка связей между таблицами
Чтобы информационная система функционировала правильно необходимо установить связи между таблицами базы данных. Рассмотрим, как это делается в СУБД «MS Access».
Таблицы «Заказы» и «Клиенты» связаны друг с другом одноименным полем «Код клиента», а таблицы «Заказы» и «Продукты» связаны друг с другом одноименным полем «Код продукта». Главными таблицами в этих парах являются таблицы «Клиенты» и «Продукты», а таблица «Заказы» - подчинённая.
Чтобы установить связи необходимо сделать следующее.
1. С помощью меню «Сервис/Схема данных» открыть окно, в котором выделить все взаимосвязанные таблицы (клавишу Ctrl надо держать нажатой) и нажать на кнопку «Добавить», а потом на кнопку «Закрыть».
2. Должно появиться окно с изображением таблиц. Если между таблицами есть линии, соединяющие одноименные поля, значит программа автоматически установила связи. Если этих линий нет, надо установить связи вручную. Сначала мышкой перетащить изображения таблиц в новые места, для того, чтобы появившиеся линии не пересекали таблиц (в нашем случае надо расположить таблицы так, чтобы таблица «Заказы» была между двумя другими таблицами). Если изображения таблиц не перемещаются, то надо сначала щелкнуть по какому-нибудь полю в этом изображении. Изображения перемещаются за заголовки окошек. В общем, должно получиться что-то похожее на этом рисунке
3. Подвести указатель мыши к имени поля в главной таблице, нажать левую кнопку и, не отпуская ее, перетащить поле к одноименному полю подчиненной таблицы, после чего отпустить левую кнопку. В появившемся окне поставить галочку у пункта «Обеспечение целостности данных» и нажать на кнопку «Создать». Это надо проделать с полями «Код клиента» и «Код продукта». Должна получиться такая картина.
Если это не так (в смысле единичка и знак бесконечности стоят не там), надо внести коррективы, но сначала удалить неправильную связь. Для этого подвести указатель мыши к линии связи и щелкнуть правой кнопкой, после чего выбрать пункт меню «Удалить». После этого можно снова перетащить поле из главной таблицы в подчиненную.
4. После установки всех необходимых связей надо закрыть окно «Схема данных», подтвердив сохранение схемы.
Чтобы скопировать схему данных, нужно её вызвать на экран и нажать сочетание клавиш «Alt+Print Screen». После этого её можно будет вставить из буфера обмена на лист пояснительной записки.
2.5. Создание форм для работы с таблицами
Внесение данных в таблицы лучше осуществлять через соответствующие формы. Форма должна содержать все поля таблицы. Поля формы могут быть двух типов:
· поля первого типа заполняются вводом значений с клавиатуры;
· поля второго типа содержат список возможных значений, из которого и производится выбор конкретного значения поля. Поля второго типа называются полями со списком.
Создание форм рассмотрим на примере формы для таблицы «Заказы».
В нашем случае полями первого типа будут поля «Номер заказа», «Количество» и «Дата».
Полями второго типа будут поля «Код клиента» и «Код продукта», причем в форме будут содержаться списки клиентов и продуктов, но в таблицу «Заказы» будет передаваться их код! На это надо обратить внимание при создании этих полей.
Чтобы создать форму надо сделать следующее.
1. Щелкнуть на объекте «Формы» и по кнопке «Создать».
2. В появившемся окне выбрать из списка строку «Мастер форм», в нижней части окна открыть список, выбрать таблицу «Заказы» и нажать ОК. Должно появится окно «Создание форм».
3. Сначала создадим поля первого типа. В списке «Доступные поля» выделить поле «Номер заказа» и нажать на кнопку с изображением угла, направленного острием вправо. Это поле переместится в список «Выбранные поля». Аналогично поступить с полями «Количество» и «Дата».
4. Нажать на кнопку «Далее», поставить точку у пункта «В один столбец» (если она там не стоит) и нажать кнопку «Далее».
Выбрать стиль «Стандартный» и на кнопку «Далее».
5. В появившемся окне задается имя формы (оставляем имя Заказы) и выбирается дальнейшее действие. Так как форма содержит еще не все необходимые поля, надо поставить точку у пункты «изменить макет формы» и нажать «Готово».
6. Появится окно с шаблоном формы и панелью элементов. Внимательно рассмотрите шаблон и панель элементов. Шаблон содержит три области:
«Заголовок формы»;
«Область данных»;
«Примечание формы».
В данный момент «Заголовок формы» и «Примечание формы» не содержат никаких данных, а «Область данных» содержит три поля.
Выглядит это примерно так.
Необходимо будет проделать следующее. Добавить недостающие поля «Код клиента», «Код продукта» и расположить все поля в таком же порядке как в таблице «Заказы».
6.1. Чтобы в области данных поместились поля «Код клиента» и «Код продукта» надо эту область сделать побольше, как показано на рис. 1.
Для этого подвести указатель мыши к нижней кромке области данных и когда он примет вид перечеркнутой двунаправленной стрелки, нажать левую кнопку и перетащить границу вниз так, чтобы появилось достаточно места еще для двух полей.
6.2. Теперь необходимо перетащить пониже поля «Количество» и «Дата» чтобы освободить место после поля «Номер заказа». Для этого сначала щелкнуть левой кнопкой по надписи «Дата» на сером фоне. Вокруг надписи появится выделяющая рамка. Подвести указатель мыши к верхнему левому углу рамки и когда он примет вид черной руки, нажать левую кнопку и перетащить рамку вниз. Затем то же самое проделать с надписью «Дата» на белом фоне.
Рис. 1. Форма Заказы в режиме конструктора
Аналогичным образом надо перетащить вниз и поле «Количество».
И выглядеть это должно так.
Теперь настала пора создавать поля второго типа, т.е. поля «Код клиента» и «Код продукта».
6.3. Щелкнуть по кнопке «Поле со списком» в панели элементов, подвести указатель мыши в то место области данных, где надо разместить поле со списком и щелкнуть левой кнопкой.
6.4. В появившемся окне отметить пункт «объект поле со списком будет использовать значения из таблицы или запроса» и нажать «Далее».
Выбрать из списка таблицу «Клиенты» и снова на кнопку «Далее». Появится окно, в котором надо поле «Наименование» переместить в список «Выбранные поля» и нажать на кнопку «Далее».
6.5. В появившемся окне прочитать второй абзац указаний и выполнить его, после чего нажать на кнопку «Далее».
6.6. Поставить точку у пункта «Сохранить в поле», выбрать из списка поле «Код клиента» и нажать кнопку «Далее». Появится окно, где необходимо задать подпись для создаваемого поля (назовем его «Клиент») и нажать на кнопку «Готово».
6.7. То же самое надо проделать для поля «Код продукта». Т.е. проделываем пункты 6.3-6.6. Естественно в пункте 6.4 выберем таблицу «Продукты» и выберем поле «Название». В пункте 6.6 надо указать, что значение сохраняем в поле «Код продукта». Поле назвать «Продукт».
7. После этого все должно выглядеть примерно так.
Завершив создание полей, закрыть форму, подтвердив сохранение данных.
Создание запросов
Дата: 2018-11-18, просмотров: 446.