
- •Введение
- •1.Понятие экономической информационной системы (эис)
- •1.1. Понятие системы
- •1.2. Понятие эис. Назначение эис
- •1.3.Классификация эис
- •1.4. Основные принципы и методы построения эис
- •1.4.1. Принципы построения и функционирования эис.
- •1.4.2.Структурный и объектно-ориентированный подходы к проектированию.
- •1.4.3.Понятие жц эис.
- •2.Теоретические основы работы с информацией
- •2.1. Понятие информации
- •2.2. Измерение количества информации
- •Задания на дом
- •2.3.Кодирование информации
- •2.3.1.Оптимальное основание кода
- •2.3.2.Запись натурального числа в двоичной системе
- •2.3.3.Код Грэя
- •2.3.4.Оптимальное кодирование
- •2.3.5.Помехозащищенное кодирование
- •2.4.Методы организации данных в памяти эвм
- •2.4.1.Типы данных, структуры данных и абстрактные типы данных
- •2.4.2.Время выполнения программ
- •2.4.3.Списки
- •2.4.4.Реализация списков
- •Реализация списков посредством массивов
- •Реализация списков с помощью указателей
- •Реализация списков с помощью курсоров
- •2.4.5.Стеки
- •2.4.6.Реализация стеков
- •2.4.7.Очереди
- •2.4.8.Реализация очередей
- •2.4.9.Графы и деревья
- •2.4.10.Некоторые сд для хранения графов и деревьев
- •3.Особенности работы с экономической информацией
- •3.1.Классификация и кодирование экономической информации.
- •3.2.Единая система классификации и кодирования
- •3.3.Штриховое кодирование
- •Алгоритм расчета контрольного разряда ean
- •4.Модели данных
- •4.1.Атрибуты, составные единицы информации, показатели, документы
- •4.2.Операции над сеи
- •4.3.Реляционная модель данных
- •4.3.1. Отношения, как основа реляционной модели данных
- •4.3.2. Операции над отношениями
- •Операции объединения, пересечения и разности отношений
- •Операция декартова произведения отношений
- •Отношение «список программистов» и результат выполнения проекции
- •Операция натурального соединения отношений
- •4.3.3. Нормализация отношений
- •4.3.4. Функциональные зависимости
- •4.3.5. Нормальные формы
- •Результат первого шага приведения к 2нф отношения преподаватель_предмет (отношение преподаватель в 2нф)
- •Результат первого и второго шагов приведения к 2нф отношения преподаватель_предмет (все отношения в 2нф)
- •4.3.8. Пример проектирования реляционной бд
- •5.Модели знаний
- •5.1. Классификация знаний
- •5.2. Продукционная модель представления знаний
- •5.3.Представление знаний в виде семантической сети
- •5.4. Фреймовая модель представления знаний
- •5.5. Логическая (предикатная) модель представления знаний
- •6.Моделирование предметных областей в экономике
- •6.1.Понятие модели предметной области
- •6.2.Структурная модель предметной области
- •6.2.1.Функциональная методология idef0
- •6.2.2. Функциональная методика потоков данных
- •6.3.Объектная модель предметной области
- •6.4. Сравнение методик моделирования предметной области
- •7.Алгоритмы, наиболее часто использующиеся при обработке информации в эис
- •7.1.Алгоритмы поиска
- •7.1.1.Поиск элемента в неупорядоченном массиве
- •7.1.2.Поиск элемента в упорядоченном массиве.
- •7.1.3.Фонетический поиск
- •7.2.Алгоритмы сортировки
- •7.2.1.Сортировка методом пузырька.
- •7.2.2.Сортировка вставками
- •7.2.3.Сортировка выбором
- •7.2.4.Пирамидальная сортировка
- •7.2.5.Быстрая сортировка.
- •7.2.6.Сортировка слиянием
- •7.3.Поиск на графах
- •7.3.1.Поиск в глубину
- •7.3.2.Поиск в ширину
- •7.4.Топологическая сортировка графа
- •7.5.Сетевое планирование
- •7.5.1.Алгоритм расчета наиболее ранних сроков наступления событий
- •7.5.2.Алгоритм расчета наиболее поздних сроков наступления событий
- •7.5.3.Алгоритм расчета резервов времени.
- •Литература Рекомендуемая основная литература
- •Рекомендуемая дополнительная литература
- •Приложение 1.Форматы штрих-кодов
- •Приложение 2. Коды некоторых стран
4.3.8. Пример проектирования реляционной бд
Рассмотрим пример построения реляционной базы данных, где должна храниться информация о блюдах (рис. 4.10), их ежедневном потреблении, продуктах, из которых приготавливаются эти блюда, и поставщиках этих продуктов.
Проектирование небольшой базы данных, включающих не более 15 атрибутов, можно начать с проектирования так называемого универсального отношения. В универсальное отношение включаются все представляющие интерес атрибуты. Для рассматриваемого случая универсальное отношение ПИТАНИЕ представлено в табл.4.13.
Таблица 4.13 |
|||||||||||||
Универсальное отношение |
|||||||||||||
ПИТАНИЕ |
|||||||||||||
Блюдо |
Вид |
Ре- цепт |
Пор- ций |
Дата |
Про- дукт |
Кало- рий- ность |
Вес (г) |
Постав- щик |
Город |
Страна |
Вес (кг) |
Цена ($) |
Дата постав- ки |
Лобио |
Закуска |
... |
158 |
1/9/94 |
Фасоль |
3070 |
200 |
«Хуанхэ» |
Пекин |
Китай |
250 |
0.37 |
24/8/94 |
Лобио |
Закуска |
... |
58 |
1/9/94 |
Лук |
450 |
40 |
«Наталка» |
Киев |
Украина |
100 |
0.52 |
27/8/94 |
Лобио |
Закуска |
... |
58 |
1/9/94 |
Масло |
7420 |
30 |
«Лайма» |
Рига |
Латвия |
70 |
1.55 |
30/8/94 |
Лобио |
Закуска |
... |
58 |
1/9/94 |
Зелень |
180 |
10 |
«Полесье» |
Киев |
Украина |
15 |
0.99 |
30/8/94 |
Харчо |
Суп |
... |
144 |
1/9/94 |
Мясо |
1660 |
80 |
«Наталка» |
Киев |
Украина |
100 |
2.18 |
27/8/94 |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
Харчо |
Суп |
... |
144 |
1/9/94 |
Зелень |
180 |
15 |
«Наталка» |
Киев |
Украина |
10 |
0.88 |
27/8/94 |
Шашлык |
Горячее |
... |
207 |
1/9/94 |
Мясо |
1660 |
180 |
«Юрмала» |
Рига |
Латвия |
200 |
2.05 |
30/8/94 |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
Шашлык |
Горячее |
... |
207 |
1/9/94 |
Зелень |
180 |
20 |
«Даугава» |
Рига |
Латвия |
15 |
0.99 |
30/8/94 |
Кофе |
Десерт |
... |
235 |
1/9/94 |
Кофе |
2750 |
8 |
«Хуанхэ» |
Пекин |
Китай |
40 |
2.87 |
24/8/94 |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
При использовании универсального отношения ПИТАНИЕ возникает несколько проблем:
Избыточность. Данные практически всех столбцов многократно повторяются. Повторяются и некоторые наборы данных (Блюдо-Вид-Рецепт, Продукт-Калорийность, Поставщик-Город-Страна). И уж совсем плохо, что все данные о блюде (включая рецепт) повторяются каждый раз, когда это блюдо включается в меню.
Аномалии обновления. Например, если поставщик кофе сообщил о своем переезде в Харбин и была обновлена строка с продуктом кофе, то у поставщика «Хуанхэ» появляется два адреса, один из которых не актуален. Следовательно, при обновлениях необходимо просматривать всю таблицу для нахождения и изменения всех подходящих строк.
Аномалии включения. В БД не может быть записан новый поставщик (например, «Няринга», Вильнюс, Литва), если поставляемый им продукт (например, «Огурцы») не используется ни в одном блюде. Можно, конечно, поместить неопределенные значения в столбцы Блюдо, Вид, Порций и Вес (г) для этого поставщика. Но если появится блюдо, в котором используется этот продукт, то строку с неопределенными значениями нужно будет найти и удалить. По аналогичным причинам нельзя ввести и новый продукт (например, Баклажаны), который предлагает существующий поставщик (например, «Полесье»).
Аномалии удаления. Обратная проблема возникает при необходимости удаления всех продуктов, поставляемых данным поставщиком или всех блюд, использующих некоторые продукты, причем в других блюдах эти продукты не используются. После таких удалений будут утрачены сведения о поставщике или продуктах.
Поэтому универсальное отношение ПИТАНИЕ разобьем на более мелкие отношения. Вначале выделим в отдельные отношения сведения о блюдах, рецептах, расходе блюд, продуктах и их поставщиках, а также создадим связующие отношения «Состав» и «Поставка». Такой вариант преобразования универсального отношения «ПИТАНИЕ» представлен в табл.4.13. Соответствующая диаграмма IDEF1X представлена на рис.4.11.
В преобразованном отношении отсутствуют многие из рассмотренных проблем. Например, включение нового поставщика («Няринга», Вильнюс, Литва) и поставляемого им продукта (Огурцы) осуществляется простым добавлением строк Поставщик («Няринга», Вильнюс, Литва) и Поставка («Няринга», Вильнюс, Огурцы, 40). Аналогично можно ввести данные о новом продукте Продукт (Баклажаны, 240) и Поставка («Полесье», Киев, Баклажаны, 50).
Удаление сведений о некоторых поставках или блюдах не приводит к потере сведений о поставщиках.
Однако, в таком варианте все еще много повторяющихся данных, находящихся в связующих отношениях (Состав и Поставки). Следовательно, сохранилась потенциальная противоречивость: для изменения названия поставщика с «Полесье» на «Днепро» придется изменять не только строку отношения Поставщик, но и множество строк отношения Поставка. При этом не исключено, что в БД будут одновременно храниться: «Полесье», «Палесье», «Днепро», «Днипро» и другие варианты названий.
Таблица 4.13
Первый вариант преобразования универсального отношения «ПИТАНИЕ»
Блюдо
|
Рецепт
|
Расход
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Продукт
|
Состав
|
Поставщик
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Рис.4.11. Первый вариант преобразования универсального отношения «ПИТАНИЕ»
Для исключения данных проблем длинные текстовые значения обычно нумеруют. Воспользовавшись этим приемом, получим отношения представленные в табл. 4.14. Соответствующая диаграмма IDEF1X представлена на рис.4.12.
Таблица 4.14
Второй вариант преобразования универсального отношения «ПИТАНИЕ»
Блюдо
|
Рецепт
|
Расход
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Продукт
|
Состав
|
Поставщик
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Поставка
|
Рис.4.12. Второй вариант преобразования универсального отношения «ПИТАНИЕ»
Теперь при изменении названия поставщика «Полесье» на «Днепро» исправляется единственное значение в отношении Поставщик. И даже если оно вводится с ошибкой («Днипро»), то это не может повлиять на связь между поставщиками и продуктами (в связующем отношении Поставка используются номера поставщиков и продуктов, а не их названия).
Проанализируем, в каких нормальных формах находятся спроектированные отношения.
Ко второй нормальной форме приведены почти все отношения первого варианта преобразования универсального отношения Питание (см. табл.4.13, рис.4.11). Исключение составляет отношение Поставщик, в котором атрибут Страна частично зависит только от атрибута Город, который является частью составного ключа (Поставщик+Город). Последнее обстоятельство приводит к проблемам при:
включении данных (пока не появится поставщик из Вильнюса, нельзя зафиксировать, что этот город Литвы),
удалении данных (исключение поставщика может привести к потере информации о местонахождении города),
обновлении данных (при изменении названия страны приходится просматривать множество строк, чтобы исключить получение противоречивого результата).
Приведем отношение Поставщик ко 2НФ. Как было отмечено в разд.4.3.5, для того, чтобы привести отношение ко 2НФ необходимо:
Построить проекцию без атрибутов, которые находятся в частичной функциональной зависимости от составного ключа. В рассматриваемом примере это проекция – Поставщик1=Поставщик[Поставщик, Город].
Построить проекцию на часть составного ключа и атрибуты зависящие этой части. В рассматриваемом примере это проекция - Город=Поставщик[Город,Страна].
В результате отношение Поставщик разбивается на два отношения Поставщик1 и Город (табл.4.15), при этом отмеченные выше аномалии исключаются.
После разделения отношения «Поставщик» на две части все отношения проекта, представленного в табл.4.13 (рис. 4.11), будут удовлетворять определению 2НФ, а так как в них нет неключевых полей, функционально зависящих друг от друга, то все они также будут удовлетворять определению 3НФ. Диаграмма проекта представлена на рис.4.13.
Таблица 4.15
Преобразование отношения «Поставщики»
Поставщик1 |
|
Город |
||
Поставщик Город |
|
Город |
Страна |
|
«Полесье» |
Киев |
|
Киев |
Украина |
«Наталка» |
Киев |
|
Пекин |
Китай |
«Хуанхэ» |
Пекин |
|
Рига |
Латвия |
«Лайма» |
Рига |
|
... |
... |
«Юрмала» |
Рига |
|
|
|
... |
... |
|
|
|
Рис.4.13. Отношение «ПИТАНИЕ» преобразованное в 3НФ
Что же касается отношений проекта представленного в табл.4.14 (рис.4.12), то ввод в них отсутствующих в предметной области цифровых первичных и внешних ключей формально затрудняет процедуру выявления функциональных связей между этими ключами и остальными полями. Действительно, легко установить связь между атрибутом Блюдо и Вид (Харчо – Суп, Лобио – Закуска и т.п.), но нет прямой зависимости между полями БЛ и Вид (блюда), если не помнить, что значение БЛ соответствует номеру блюда.
Для упрощения нормализации подобных отношений целесообразно использовать следующую рекомендацию - при проведении нормализации отношений, в которые введены цифровые (или другие) заменители составных и (или) текстовых первичных и внешних ключей, следует хотя бы мысленно подменять их на исходные ключи, а после окончания нормализации снова восстанавливать.
При использовании этой рекомендации проект представленный в табл.4.14 (рис.4.12) временно превращаются в проект представленный в табл.4.13 (рис.4.11), а после выполнения нормализации и восстановления полей БЛ, ПР и ПОС, как ни странно, среди отношений появятся два, не удовлетворяющие определению 3НФ. Это отношения Блюдо и Продукт (см.рис.4.14).
Действительно, так как после ввода первичных ключей БЛ и ПР поля Блюдо и Продукт стали неключевыми – появились несуществовавшие ранее функциональные зависимости между неключевыми полями:
БлюдоВид
ПродуктКалорийность.
Следовательно, для приведения отношений Блюда и Продукты табл.4.14 к 3НФ их надо разбить следующим образом:
Блюдо(БЛ, Блюдо),
Вид_блюда(БЛ, Вид);
Продукт(ПР, Продукт);
Калор_прод(ПР,Калорийносить),
хотя интуиция подсказывает, что это лишнее разбиение, совсем не улучшающее проекта базы данных.
Столкнувшись с подобными несуразностями, которые могут возникать не только из-за введения кодированных первичных ключей, теоретики реляционных систем Кодд и Бойс обосновали и предложили более строгое определение для 3НФ, которое учитывает, что в отношении может быть несколько возможных ключей.
Отношения находится в нормальной форме Бойса-Кодда (НФБК), если и только если любая функциональная зависимость между его атрибутами сводится к полной функциональной зависимости от возможного ключа.
В соответствие с этой формулировкой отношения Блюдо и Продукт (рис.4.14), имеющие по паре возможных ключей (БЛ и Блюдо) и (ПР и Продукт) находятся в НФБК или в усиленной 3НФ.
Рис.4.14. Отношение «ПИТАНИЕ» преобразованное в НФБК (усиленную 3НФ)