Файл: курсовая Кирилл.doc

ВУЗ: Сибирский федеральный университет

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 31.01.2019

Просмотров: 1403

Скачиваний: 5

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


Таблица 10 – Сущность «Производитель» после преобразования


Код производителя

Код типа производителя

Наименование

Код страны

Населенный пункт

1

2

Минусинский пивоваренный завод

1

Минусинск

2

2

Т Д Кристал

1

Нижний Новгород

3

2

Бунге СНГ

1

Воронеж

4

3

Простоквашино

1

Красноярск

Продолжение таблицы 10


Код типа адреса

Адрес

Номер дома

Номер корпуса

Номер квартиры

1

Ленина

38



2

Кировский

18 А



1

Пушкина

34

2


1

Сливочная

56



Таблица 11 – Тип производителя


Код типа производителя

Тип производителя

1

ИП

2

ОАО

3

ООО

4

ЗАО


Таблица 12 – Справочник страны


Код страны

Страна

1

Россия

2

Китай

3

Белоруссия

4

Украина


Таблица 13 – Справочник адреса


Код адреса

Адрес

1

ул.

2

т.

3

пер.


Рассмотрим сущность «Поставка», первичным ключом является атрибут «Код поставки» – все значения атрибута должны быть уникальными.

Поле «Дата поставки» содержит уникальную информацию о поставке. Информация, содержащаяся в поле «Дата поставки» достоверна только для одной поставки. Поля «Поставленное наименование продукции», «Код производителя», «Количество», «Дата окончания срока годности» содержат не уникальную информацию о поставке, поэтому следует разделить сущность «Поставка» на две сущности «Поставка» и «Детали поставки» с сохранением связи за счёт добавления в сущность «Детали поставки» поля «Код поставки». Информации хранящейся в поле «Количество» не достаточно что бы отобразить полностью всю информацию о количестве поставленного наименования продукции, помимо информации о количестве необходимо добавить информацию о единицах измерения поставки, для этого добавляем в сущность «Детали поставки» поле «Код единицы измерения» за счёт этого поля будет осуществляться связь между сущностью «Детали поставки» и «Единицы измерения». Поле «Поставленное наименование продукции» содержит не уникальную информацию, которая ко всему прочему не полноценная, так как под наименованием поставленной продукции подразумеваем продукт, произведённый под определённым брендом определённым производителем, который поставляет это наименование продукции по определённой цене, поэтому следует выделить поле «Поставленное наименование продукции» в отдельную сущность «Наименования продукции» и добавить в эту сущность поля «Код производителя», «Код продукта» и «Цена (руб.)». Следует уточнить, что один производитель может производить более одного наименования продукции. Поскольку сущность «Наименования продукции» уже содержит поле «Код производителя» это поле можно убрать из сущности «Детали поставки». Сущность «Поставка» представлена в таблице 14, сущность «Детали поставки» представлена в таблице 15, сущность «Наименование продукции» представлена в таблице 16.







Таблица 14 – Сущность «Поставка» после преобразования декомпозиции


Код поставки

Дата поставки

1

01.01.2015

2

01.02.2015



Таблица 15 – Сущность «Детали поставки»


Код поставки

Код наименования продукции

Количество

Код единицы измерения

Дата окончания срока годности

1

1

50

2

01.06.2015

1

2

100

3

01.02.2015

1

3

50

2

01.06.2015

1

4

15

2

01.06.2015


Таблица 16 – Сущность «Наименование продукции»


Код наименования продукции

Наименование продукции

Код производителя

Код продукта

Цена (в руб.)

1

Брусничка

7

1

25

1

Спаский собор

1

2

10

1

Красный бык

6

3

25

1

Капуста

7

4

15


Каждое блюдо состоит из множества продуктов, каждый продукт в этом множестве имеет некое количество, помимо этого один и тот же продукт может находиться более чем в одном блюде. Для создания связи между сущностью «Блюдо» и «Продукты», которая не будет нарушать условие, описанное выше, необходимо создать связующую сущность с указанием полей «Код блюда», «Код продукта» и «Количество». Связующая сущность «Ассоциация» представлена в таблице 17.



Таблица 17 – Сущность «Ассоциация»


Код блюда

Код продукта

Количество

1

11

90

1

6

8

1

8

4

2

3

80


Теперь следует установить связи между сущностями в соответствии с рисунком 1.1.



Рисунок 1.1 – Информационно-логическая модель


2 Структура и создание таблиц в Microsoft Visual FoxPro


Microsoft Visual FoxPro – объектно-ориентированный и процедурный язык программирования. Он позволяет создавать и разрабатывать базы данных, а так же представлять их в виде приложения, что делает удобным работы с базами данных для пользователей, не имеющих определенных навыков.

Создадим таблицы «assoc», «bl», «naimenovaniya», «prod», «proizvoditel», «spr_address», «spr_bl», «spr_ed_izm», «spr_prod», «spr_proizv», «spr_strana», «spr_bl», «spr_ed_izm» в режиме конструктора в соответствии с рисунками 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8 2.9, 2.10, 2.11, 2.12, 2.13.


Рисунок 2.1 – Таблица «assoc» в режиме конструктора, вкладка «Fiends»


Рисунок 2.2 – Таблица «bl» в режиме конструктора, вкладка «Fiends»


Рисунок 2.3 – Таблица «naimenovaniya» в режиме конструктора, вкладка «Fiends»


Рисунок 2.4 – Таблица «prod» в режиме конструктора, вкладка «Fiends»


Рисунок 2.5 – Таблица «proizvoditel» в режиме конструктора, вкладка «Fiends»

Рисунок 2.6 – Таблица «spr_address» в режиме конструктора, вкладка «Fiends»


Рисунок 2.7 – Таблица «spr_bl» в режиме конструктора, вкладка «Fiends»


Рисунок 2.8 – Таблица «spr_ed_izm» в режиме конструктора, вкладка «Fiends»


Рисунок 2.9 – Таблица «spr_prod» в режиме конструктора, вкладка «Fiends»



Рисунок 2.10 – Таблица «spr_proizv» в режиме конструктора, вкладка «Fiends»


Рисунок 2.11 – Таблица «spr_strana» в режиме конструктора, вкладка «Fiends»


Рисунок 2.12 – Таблица «zakup» в режиме конструктора, вкладка «Fiends»


Рисунок 2.13 – Таблица «zakup_det» в режиме конструктора, вкладка «Fiends»


Далее заполняем таблицы необходимыми данными. На рисунках 2.14, 2.15, 2.16, 2.17, 2.18, 2.19, 2.20, 2.21, 2.22, 2.23, 2.24, 2.25, 2.26, 2.27 представлены таблицы: «assoc», «bl», «naimenovaniya», «prod», «proizvoditel», «spr_address», «spr_bl», «spr_ed_izm», «spr_prod», «spr_proizv», «spr_strana», «spr_bl», «spr_ed_izm», заполненные с помощью команды Browse. Такой метод лучше, тем, что позволяет видеть перед собой все данные таблицы, а не только редактируемую или добавляемую запись, и при необходимости оперативно внести изменения в таблицу.


Рисунок 2.14 – Таблица «assoc» в режиме «Browse»


Рисунок 2.15 – Таблица «bl» в режиме «Browse»


Рисунок 2.16 – Таблица «naimenovaniya» в режиме «Browse»


Рисунок 2.17 – Таблица «prod» в режиме «Browse»


Рисунок 2.18 – Таблица «proizvoditel» в режиме «Browse»


Рисунок 2.19 – Таблица «spr_address в режиме «Browse»


Рисунок 2.20 – Таблица «spr_bl» в режиме «Browse»


Рисунок 2.21 – Таблица «spr_ed_izm» в режиме «Browse»


Рисунок 2.22 – Таблица «spr_prod» в режиме «Browse»


Рисунок 2.23 – Таблица «spr_proizv» в режиме «Browse»


Рисунок 2.24 – Таблица «spr_strana» в режиме «Browse»


Рисунок 2.25 – Таблица «zakup» в режиме «Browse»


Рисунок 2.26 – Таблица «zakup_det» в режиме «Browse»





3 Создание реляционной модели в Microsoft Visual FoxPro


Для создания реляционной модели необходимо при настройке таблиц указывать ключевые поля типа «Primary» и «Regular» в режиме конструктора, во вкладке «Fiends». В дальнейшем в окне Database Designer необходимо настроить связи между таблицами. Ключевые поля, имеющие параметр «Primary» перечислены в списке «indexes» и обозначены жирным шрифтом, ключевое поля типа «Regular» так же перечислены в списке «indexes», но имеют обычный шрифт. На рисунке 3.1 представлена схема данных базы данных «Столовая».


Рисунок 3.1 – Схема данных «Stolovaya»





4 Создание запросов в Microsoft Visual FoxPro


Запрос (query) – это средство выбора необходимой информации из базы данных. Вопрос, сформированный по отношению к базе данных, и есть запрос [2].

Создание запросов в режиме конструктора: добавляем нужные таблицы и указываем поля, которые необходимо отобразить после запроса. В окне «Project Manager» переходим на вкладку «Queryes» и нажимаем кнопку «New» для создания запроса.

В конечном итоге на экран выведутся значения тех полей, которые были указаны в запросе.

Можно создавать запросы с условиями отбора, или вычисляемым полем.


4.1 Запрос 1


Какие продукты необходимы для приготовления блюда A?

Создание этого запроса будет происходить в режиме конструктора запросов с использованием таблиц «spr_bl», «bl», «assoc», «prod», «spr_prod», «spr_ed_izm», выберем следующие поля необходимые для запроса «name» из таблицы «bl», «name» из таблицы «prod» и «kolvo» из таблицы «assoc», «ed_izm» из таблицы «spr_ed_izm». На рисунке 4.1.1 представлен «запрос 1» в режиме конструктора.


Рисунок 4.1.1 – Запрос 1 в режиме конструктора, вкладка «Fields»


Теперь во вкладке «Filter» панели конструктора запроса введем значение поля идентифицирующего необходимое нам блюдо, например его код «Bl.Bl_id=(1)». Далее закрываем окно конструктора и сохраняем запрос, затем находим наш запрос в окне «Project manager», нажмем на кнопку «Run» (Выполнить). В результате мы увидим таблицу, в которой будут перечислены продукты необходимые для блюда с кодом = 1 (каша манная). На рисунке 4.1.2 представлен «запрос 1» после создания фильтрации данных.


Рисунок 4.1.2 – Результат выполнения запроса 1