ОГЛАВЛЕНИЕ
Введение Сегодня компьютеры и компьютерные технологии все прочнее входят в нашу жизнь. Компьютерные программы, предназначенные для обработки разнообразных данных, электронные системы считывания и распознавания различных данных, учет огромных массивов информации, все это невозможно без применения ЭВМ.
Одним из направлений развития стали различные базы данных и многочисленные программы, позволяющие быстро обрабатывать и находить необходимую информацию. Поэтому умение создавать БД и приложения для работы с хранящимися данными становятся все более актуальными.
В данной работе мне необходимо разработать БД и приложение к ней, которое отражает работу супермаркета.
В ходе данной работы будут рассмотрены принципы построения всех компонентов, входящих как в саму базу, так и в клиентскую программу. Описана организация связи между данными компонентами, а также организована работа программы с информацией, находящейся в спроектированной базе.
Проектирование БД
Определение необходимых сущностей для описания предметной области
На данном этапе основной задачей будет создание необходимого количества сущностей, которые будут в наиболее полной мере описывать заданную предметную область.
Как уже говорилось ранее, предметной областью является работа супермаркета. За основу создания сущностей возьмем сущности, созданные в ходе выполнения лабораторных работ, дополним и расширим их.
Далее, заполним данные сущности всеми необходимыми атрибутами, для наиболее наглядного описания предметной области.
Результат выполнения данного этапа представлен в таблицах 1-11. Таблица 1 - Сущность «Продажи» и ее атрибуты
Наименование сущности
| Продажи
| №
| Атрибут
| Описание
| Тип данных
| Длина
| Ограничения
| Примеры допустимых значений
| Допустимость NULL
| Ключ
| 1
| Код
|
| Счетчик
| 5
| >0
| 1
| нет
| *
Номер записи уникален
| 2
| Клиенты_код
|
| Число
| 5
| >0
| 1
| нет
|
| 3
| Перонал_код
|
| Число
| 5
| >0
| 2
| нет
|
| 4
| Время
|
| Дата и время
|
|
| 01.01.2020 00:00
| нет
|
|
Таблица 2 - Сущность «Должности» и ее атрибуты Наименование сущности
| Должности
| №
| Атрибут
| Описание
| Тип данных
| Длина
| Ограничения
| Примеры допустимых значений
| Допустимость NULL
| Ключ
| 1
| Код
|
| Счетчик
| 5
| >0
| 1
| нет
| *
Номер записи уникален
| 2
| Название
|
| Текст
| 45
|
| Кассир
| нет
|
| 3
| Заработная плата
|
| Число
| 5
| >0
| 20000
| нет
|
|
Таблица 3 - Сущность «Поставки» и ее атрибуты
Наименование сущности
| Поставки
| №
| Атрибут
| Описание
| Тип данных
| Длина
| Ограничения
| Примеры допустимых значений
| Допустимость NULL
| Ключ
| 1
| Код
|
| Счетчик
| 5
| >0
| 1
| нет
| *
Номер записи уникален
| 2
| Товар_код
|
| Число
| 5
| >0
| 1
| нет
|
| 3
| Произведено
|
| Дата и время
|
|
| 01.01.2020
| нет
|
| 4
| Цена_
заказчика
|
| Число
| 5
| >0
| 1150
| нет
|
| 5
| Цена
|
| Число
| 5
| >0
| 1300
| нет
|
| 6
| Дата заказа
|
| Дата и время
|
|
| 02.01.2020
| нет
|
| 7
| Дата прибытия
|
| Дата и время
|
|
| 02.01.2020
| нет
|
| 8
| Количество
|
| Число
| 5
| >0
| 10
| нет
|
| Таблица 4 - Сущность «Списание» и ее атрибуты Наименование сущности
| Списание
| №
| Атрибут
| Описание
| Тип данных
| Длина
| Ограничения
| Примеры допустимых значений
| Допустимость NULL
| Ключ
| 1
| Код
|
| Счетчик
| 5
| >0
| 1
| нет
| *
Номер записи уникален
| 2
| Поставки_
код
|
| Число
| 5
| >0
| 3
| нет
|
| 3
| Дата
|
| Дата и время
|
|
| 02.01.2020
| нет
|
| 4
| Количество
|
| Число
| 5
| >0
| 50
| нет
|
| 5
| Причина
|
| Текст
| 100
|
| Просрочен
| нет
|
|
Таблица 5 - Сущность «Расшифровка_продаж» и ее атрибуты Наименование сущности
| Расшифровка_продаж
| №
| Атрибут
| Описание
| Тип данных
| Длина
| Ограничения
| Примеры допустимых значений
| Допустимость NULL
| Ключ
| 1
| Код
|
| Счетчик
| 5
| >0
| 1
| нет
| *
Номер записи уникален
| 2
| Продажи код
|
| Число
| 5
| >0
| 3
| нет
|
| 3
| Поставки код
|
| Число
| 5
| >0
| 4
| нет
|
| 5
| Количество
|
| Число
| 5
| >0
| 25
| нет
|
|
Таблица 6 - Сущность «Работники» и ее атрибуты Наименование сущности
| Работники
| №
| Атрибут
| Описание
| Тип данных
| Длина
| Ограничения
| Примеры допустимых значений
| Допустимость NULL
| Ключ
| 1
| Код
|
| Счетчик
| 5
| >0
| 1
| нет
| *
Номер записи уникален
| 2
| Фамилия
|
| Текст
| 35
|
| Иванова
| нет
|
| 3
| Имя
|
| Текст
| 25
|
| Мария
| нет
|
| 4
| Отчество
|
| Текст
| 35
|
| Петровна
| нет
|
| 5
| Телефон
|
| Текст
| 15
|
| 8(111)111-11-11
| нет
|
| 6
| Адрес
|
| Текст
| 35
|
| Ул. Пушкина д. 7 кв. 11
| нет
|
|
Таблица 7 - Сущность «Клиенты» и ее атрибуты Наименование сущности
| Клиенты
| №
| Атрибут
| Описание
| Тип данных
| Длина
| Ограничения
| Примеры допустимых значений
| Допустимость NULL
| Ключ
| 1
| Код
|
| Счетчик
| 5
| >0
| 1
| нет
| *
Номер записи уникален
| 2
| Телефон
|
| Текст
| 15
|
| 8(111)111-11-11
| нет
|
| 3
| Номер карты
|
| Текст
| 15
|
| АБ 777999
| нет
|
| 4
| Фамилия
|
| Текст
| 35
|
| Иванов
| нет
|
| 5
| Имя
|
| Текст
| 25
|
| Иван
| нет
|
| 6
| Отчество
|
| Текст
| 35
|
| Иванович
| нет
|
| 7
| Бонусы
|
| Число
| 5
| >0
| 150
| нет
|
|
Таблица 8 - Сущность «Персонал» и ее атрибуты Наименование сущности
| Персонал
| №
| Атрибут
| Описание
| Тип данных
| Длина
| Ограничения
| Примеры допустимых значений
| Допустимость NULL
| Ключ
| 1
| Код
|
| Счетчик
| 5
| >0
| 1
| нет
| *
Номер записи уникален
| 2
| Работник код
|
| Число
| 5
| >0
| 2
| нет
|
| 3
| Должность код
|
| Число
| 5
| >0
| 1
| нет
|
| 4
| Назначен
|
| Дата и время
|
|
| 02.01.2020
| нет
|
| 5
| Снят
|
| Дата и время
|
|
| 03.01.2020
| Да
|
|
Таблица 9 - Сущность «Категории» и ее атрибуты Наименование сущности
| Категории
| №
| Атрибут
| Описание
| Тип данных
| Длина
| Ограничения
| Примеры допустимых значений
| Допустимость NULL
| Ключ
| 1
| Код
|
| Счетчик
| 5
| >0
| 1
| нет
| *
Номер записи уникален
| 3
| Наименование
|
| Текст
| 35
|
| Мясо
| нет
|
| Таблица 10 - Сущность «Поставщики» и ее атрибуты Наименование сущности
| Поставщики
| №
| Атрибут
| Описание
| Тип данных
| Длина
| Ограничения
| Примеры допустимых значений
| Допустимость NULL
| Ключ
| 1
| Код
|
| Счетчик
| 5
| >0
| 1
| нет
| *
Номер записи уникален
| 2
| Телефон
|
| Текст
| 15
|
| 8(111)111-11-11
| нет
|
| 3
| Название
|
| Текст
| 35
|
| Склад № 1
| нет
|
| 4
| Адрес
|
| Текст
| 45
|
| Ул. Плеханова д. 7
| нет
|
| 5
| Срок
|
| Число
| 5
| >0
| 3
| нет
|
| 6
| Дата погашения
|
| Текст
| 15
|
| 15.05.2022
| нет
|
|
Таблица 11 - Сущность «Товары» и ее атрибуты Наименование сущности
| Товары
| №
| Атрибут
| Описание
| Тип данных
| Длина
| Ограничения
| Примеры допустимых значений
| Допустимость NULL
| Ключ
| 1
| Код
|
| Счетчик
| 5
| >0
| 1
| нет
| *
Номер записи уникален
| 2
| Категория код
|
| Число
| 5
| >0
| 1
| нет
|
| 3
| Поставщик код
|
| Число
| 5
| >0
| 2
| нет
|
| 4
| Наименование
|
| Текст
| 35
|
| Цыпленок-бройлер
| нет
|
| 5
| Вес
|
| Число
| 3
| >0
| 3
| нет
|
| 6
| Срок хранения
|
| Число
| 5
| >0
| 60
| нет
|
| 7
| Цена заказчика
|
| Число
| 5
| >0
| 160
| нет
|
|
Нормализация отношений
В начале давайте перечислим какие нормальные формы, согласно классификации Бойса-Кодда, нам известны.
Первая нормальная форма (1НФ). Отношение находится в первой нормальной форме в том случае, если все атрибуты содержат атомарные значения.
Вторая нормальная форма (2НФ). Отношение, которое находится в первой нормальной форме и каждый атрибут которого, не входящий в состав первичного ключа, характеризуется полной функциональной зависимостью от этого первичного ключа. Вторая нормальная форма применяется к отношениям с составными ключами, т.е. к таким отношениям, первичный ключ которых состоит из двух или больше атрибутов.
Третья нормальная форма (3НФ). Отношение, которое находится в первой и второй нормальных формах и не имеет не входящих в первичный ключ атрибутов, которые находились бы в транзитивной функциональной зависимости от этого первичного ключа. Нормализация 2НФ-отношений с образованием ЗНФ-отношений включает устранение транзитивных зависимостей. Перечислим все функциональные зависимости отношений:
Для наиболее эффективной работы БД необходима 3 НФ, поэтому при создании БД будем все отношения создавать именно в 3 НФ.
Теперь давайте определим какие отношения должны быть между созданными сущностями. Результат выполнения данной операции приведен в таблице 12. Таблица 12. – Связи между сущностями
Сущность 1
| Ключ 1
| Сущность 2
| Ключ 2
| Кардинальность
| Должности
| Код
| Персонал
| Должность_код
| 1:М
| Работник
| Код
| Персонал
| Работник_код
| 1:М
| Клиенты
| Код
| Продажи
| Клиенты_код
| 1:М
| Персонал
| Код
| Продажи
| Персонал_код
| 1:М
| Товары
| Код
| Поставки
| Товар_код
| 1:М
| Поставки
| Код
| Списание
| Поставки_код
| 1:М
| Поставки
| Код
| Расшифровка продаж
| Продажи_код
| 1:М
| Поставки
| Код
| Расшифровка продаж
| Поставки_код
| 1:М
| Категории
| Код
| Товары
| Категория_код
| 1:М
| Поставщики
| Код
| Товары
| Поставщик_код
| 1:М
|
Таким образом, на данном этапе были скорректированы созданные ранее сущности, а также определены все необходимые связи между ними. Теперь можно перейти к созданию концептуальной модели БД.
Концептуальная модель БД
Для реализации данного этапа воспользуемся нотацией IDEF1x (рисунок 1).
|