Скачиваний:
9
Добавлен:
17.06.2023
Размер:
2.81 Mб
Скачать

Рисунок 2.7 – Логическая модель данных по стандарту IDEF1X

Рисунок 2.8 – Физическая модель данных по стандарту IDEF1X

Отношение находится в третьей нормальной форме (3НФ), если оно находится во второй нормальной форме, и каждый не ключевой атрибут зависит только от первичного ключа и не зависят друг от друга [15].

Данные могут группироваться разными способами в таблицы

(отношения). В качестве исходной (отправной)точки при проектировании БД может использоваться одно какое-то универсальное отношение, в которое включаются все нужные атрибуты. Оно может содержать все данные, которые предполагается размещать в БД.

Алгоритм нормализации (к ЗНФ) [16]:

1.Получить исходное множество функциональных зависимостей для атрибутов рассматриваемой БД.

2.Получить минимальное покрытие множества функциональных зависимостей.

22

3.Определить первичный ключ отношения.

4.Для каждой функциональной зависимости fi создать проекцию исходного отношения Ri = R[Xi], где Xi – объединение атрибутов из левой и правой частей fi.

5.Если первичный ключ исходного отношения не вошел полностью ни в одну проекцию, то создать отдельное отношение из атрибутов ключа.

Проверим сущности «Запчасти», «Отделы», «Профилактика», «Работы», «ПО» и «Заявка» на соответствие 3НФ.

Рассмотрим сущность Запчасти, представленную в таблице 2.2.

Таблица 2.2 – Сущность «Запчасти»

Zapchact

Id

Z_name

 

Ed_izm

kolvo

Photo

1

Материнская плата

шт

 

5

pic1.jpg

2

Насос для котла

шт

 

3

pic2.jpg

3

Процессор

шт

 

4

pic3.jpg

4

Термообменник вторичный

шт

 

2

pic1.png

5

Картридж

шт

 

5

pic2.png

Ключом данной сущности будет атрибут – Id. Для более краткой записи процесса нормализации введем следующие обозначения: I – код запчасти, Z –

наименование запчасти, E – единица измерения материала, K – количество на складе, P – изображение запчасти. Выпишем функциональные зависимости:

I -> Z, E, K, P; I -> Z; I -> E; I -> K; I -> P.

Рассмотрим отношение R(I, Z, E, K, P) с ключом I. Здесь есть функциональные зависимости I -> Z, I -> E, I -> K, I -> P. Так как каждый не ключевой атрибут зависит от первичного ключа, то отношение R(I, Z, E, K, P)

находится в 3НФ по определению, что и требовалось доказать.

Теперь рассмотрим сущность Отделы, представленную в таблице 2.3.

Таблица 2.3 – Сущность «Отделы»

Otd

Id

O_name

Rucovod

Kab

Telef

1

Бухгалтерия

Потапова А.Н.

102

25-36-95

2

Отдел кадров

Крюков М.С.

201

29-36-95

3

Отдел АСУ

Мохов А.Н.

109

52-66-85

4

Цех 1

Васильев Р.В.

 

15-25-36

5

Котельная 1

Сухарев П.О.

 

52-63-29

23

Ключом данной сущности будет атрибут – Id. Для более краткой записи процесса нормализации введем следующие обозначения: I – код отдела, O –

наименование отдела, R – руководитель отдела, K – кабинет, T – телефон.

Выпишем функциональные зависимости: I -> O, R, K, T; I -> O; I -> R; I -> K; I -> T

Рассмотрим отношение R(I, O, R, K, T) с ключом I. Здесь есть функциональные зависимости I -> O; I -> R; I -> K; I -> T. Так как каждый не ключевой атрибут зависит от первичного ключа, то отношение R(I, O, R, K, T)

находится в 3НФ по определению, что и требовалось доказать.

Далее рассмотрим сущность Профилактика, представленную в таблице 2.4.

Таблица 2.4 – Сущность «Профилактика»

Profilact

Id

Date

Id_otd

object

Otm_vipln

1

03.11.2018

2

Системный блок

false

2

03.11.2018

5

Насос для котла

false

3

03.12.2018

4

Терморегулятор вторичный

false

4

118.10.2018

1

Принтер

true

Ключом данной сущности будет атрибут – Id. Для более краткой записи процесса нормализации введем следующие обозначения: Id – код профилактики, D – дата проведения профилактики, IO – код отдела, O – объект профилактики, OV – отметка выполнения. Выпишем функциональные зависимости: Id -> D, IO, O, OV; Id -> D; Id -> IO; Id -> O; Id -> OV

Рассмотрим отношение R(Id, D, IO, O, OV) с ключом Id. Здесь есть функциональные зависимости Id -> D; Id -> IO; Id -> O; Id -> OV. Так как каждый не ключевой атрибут зависит от первичного ключа, то отношение R(Id, D, IO, O, OV) находится в третьей нормальной форме (3НФ) по определению,

что и требовалось доказать.

Рассмотрим сущность Работы, представленную в таблице 2.5.

Таблица 2.5 – Сущность «Работы»

Rabota

Id

R_name

Ed_Izm

Id_Zapchact

Kolvo_zapch

1

Замена картриджа

шт

5

1

2

Ремонт материнской платы

шт

1

1

3

Замена теплообменника

шт

4

2

4

Установка насоса

шт

2

1

24

Ключом данной сущности будет атрибут – Id. Для более краткой записи процесса нормализации введем следующие обозначения: I – код работы, R –

наименование работы, EI – единица измерения, IZ – код запчасти, KZ –

количество требуемых запчастей. Выпишем функциональные зависимости: I -> R, EI, IZ, KZ; I -> R; I -> EI; I -> IZ; I -> KZ

Рассмотрим отношение R(I, R, EI, IZ, KZ) с ключом I. Здесь есть функциональные зависимости I -> R; I -> EI; I -> IZ; I -> KZ. Так как каждый не ключевой атрибут зависит от первичного ключа, то отношение R((I, R, EI, IZ, KZ) находится в 3НФ по определению, что и требовалось доказать.

Рассмотрим предпоследнюю сущность ПО, представленную в таблице 2.6.

Таблица 2.6 – Сущность «ПО»

Prog

Id

P_name

Date

Id_otd

Licens

Date_ok

1

Windows10

10.10.2017

1

false

10.11.2018

2

MS Office

10.09.2017

1

true

10.09.2019

3

Delphi 7

15.10.2018

3

true

15.10.2019

4

1С: Предприятие 8. Управление теплосетью

02.08.2017

3

true

20.01.2019

5

ГИС «Теплосети»

15.01.2017

3

true

15.03.2018

Ключом данной сущности будет атрибут – Id. Для более краткой записи процесса нормализации введем следующие обозначения: I – код ПО, Pn –

наименование ПО, D – дата установки, IO – код отдела, L – наличие лицензии, Do – дата окончания действия лицензии. Выпишем функциональные зависимости: I -> Pn, D, IO, L, Do; I -> Pn; I -> D; I -> IO; I -> L; I -> Do

Рассмотрим отношение R(I, Pn, D, IO, L, Do) с ключом I. Здесь есть функциональные зависимости I -> Pn; I -> D; I -> IO; I -> L; I -> Do. Так как каждый не ключевой атрибут зависит от первичного ключа, то отношение R(I, Pn, D, IO, L, Do) находится в 3НФ по определению, что и требовалось доказать.

Рассмотрим последнюю сущность Заявка, представленную в таблице 2.7.

Таблица 2.71 – Сущность «Заявка»

Zaavka

Id

Date

Id_otd

Id_rabot

Otm_vipln

 

10.10.2018

2

1

false

 

28.11.2018

4

3

true

 

03.12.2018

5

4

false

 

01.10.2018

1

2

true

25

Ключом данной сущности будет атрибут – Id. Для более краткой записи процесса нормализации введем следующие обозначения: I – код заявки, D –

дата создания заявки, Io – код отдела, Ir – код работы, Ov – отметка выполнения заявки. Выпишем функциональные зависимости: I -> D, Io, Ir, Ov; I -> D; I -> Io; I -> Ir; I -> Ov

Рассмотрим отношение R(I, D, Io, Ir, Ov) с ключом I. Здесь есть функциональные зависимости I -> D; I -> Io; I -> Ir; I -> Ov. Так как каждый не ключевой атрибут зависит от первичного ключа, то отношение R(I, D, Io, Ir, Ov)

находится в 3НФ по определению, что и требовалось доказать.

Проанализировав данную модель, можно сказать, что для автоматизации процесса автоматизации деятельности сотрудников группы АСУ может потребоваться программа, которая будет хранить базу о таких данных, как справочник профилактики, заявки и другие, а также всю информацию о них.

Выводы по второму разделу

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

IDEF0, DFD и IDEF1X можно сделать вывод, что разрабатываемое web-

приложение автоматизирует работу сотрудников отдела АСУ, упростит документооборот между отделами по вопросам ремонта и профилактики вычислительной техники, помимо этого, будет содержать шесть справочников,

атакже в данном приложении вход будет осуществлять по логину и паролю.

Врезультате проектирования web-приложения был получен проект приложения, содержащий достаточно информации для её реализации.

26

3 РАЗРАБОТКА И ТЕСТИРОВАНИЕ ИС

3.1 Описание структуры базы данных

Rails поддерживает самые распространенные СУБД такие, как Firebird, MySQL, Oracle, MSSQLServer, PostgreSQL и SQLite [17]. По умолчанию СУБД в Rails является SQLite, поэтому при создании данного приложения был указан параметр “--database=postgresql”, который подключает СУБД PostgreSQL.

Разработанная ИС работает именно с СУБД PostgreSQL. В приложении Б представлен план разработки web-приложения в программе ProjectLibre.

Для разрабатываемой ИС «Отдел АСУ» требуется создать 6

справочников и 4 отчета. Списки отделов, работ, выполненных профилактик,

запчастей, установленных ПО, заявок. Отчеты: заявки за заданный период времени, невыполненные заявки, профилактические работы за заданный промежуток времени, документ учета ПО в организации на текущую дату. В

таблицах 3.1-3.6 представлено описание справочников.

Таблица 3.1 – Таблица «Отделы»

Название таблицы

Название поля

Тип поля

Примечание

otd (Отделы)

Id

Integer

Генерируется самостоятельно

 

O_name (Название отдела)

string

 

 

Rucovod (Руководитель)

string

 

 

Telef (Телефон)

string

 

 

kab (Кабинет)

integer

 

 

status

boolean

 

 

s_delete

boolean

 

 

created_at

timestamp

Генерируется самостоятельно

 

updated_as

timestamp

Генерируется самостоятельно

Таблица 3.2 – Таблица «Работа»

Название

Название поля

Тип поля

Примечание

rabotum

Id

 

Integer

Генерируется самостоятельно

(Работа)

R_name (Название)

string

 

 

Ed_Izm

(Единица измерения)

string

 

 

zaphact

(Запчасти)

Belongs_to

Берется из таблицы запчасти

 

Kolvo (Количество)

intager

 

 

status

 

boolean

 

 

s_delete

 

boolean

 

 

created_at

timestamp

Генерируется самостоятельно

 

updated_as

timestamp

Генерируется самостоятельно

 

 

27

 

 

Таблица 3.3 – Таблица «Профилактика»

Название

Название поля

Тип поля

Примечание

profilact

Id

Integer

Генерирует самостоятельно

(Профилактика)

Data (Дата)

date

 

 

Otd (Отдел)

Belongs_to

Берется из таблицы отделы

 

Object (объект)

string

 

 

Otm_v (отметка выполнения)

boolean

 

 

status

boolean

 

 

s_delete

boolean

 

 

created_at

timestamp

Генерируется самостоятельно

 

updated_as

timestamp

Генерируется самостоятельно

Таблица 3.4 – Таблица «Запчасти»

Название

Название поля

Тип поля

Примечание

zaphact

Id

integer

Генерируется самостоятельно

(Запчасти)

 

 

 

Z_name (Наименование)

string

 

 

Ed_Izm (Единица измерения)

string

 

 

Kolvo (Кол-во на складе)

integer

 

 

Foto (Изображение)

string

 

 

status

boolean

 

 

s_delete

boolean

 

 

created_at

timestamp

Генерируется самостоятельно

 

updated_as

timestamp

Генерируется самостоятельно

Таблица 3.5 – Таблица «Установленное ПО»

Название

Название поля

Тип поля

Примечание

prog

Id

integer

Генерируется самостоятельно

(установленное

 

 

 

p_name (Наименование)

string

 

программное

data (дата установки)

date

 

обеспечение)

 

otd (отдел)

Belongs_to

Берется из таблицы отделы

 

 

licens (наличие лицензии)

boolean

 

 

data_ok (окончание лицензии)

date

 

 

Photo (логотип)

string

 

 

status

boolean

 

 

s_delete

boolean

 

 

created_at

timestamp

Генерируется самостоятельно

 

updated_as

timestamp

Генерируется самостоятельно

Таблица 3.6 – Таблица «Заявки»

Название

Название поля

Тип поля

Примечание

zakaz (Заявки)

Id

integer

Генерируется самостоятельно

 

 

 

 

 

data (дата создания)

date

 

 

otd (отдел)

Belongs_to

Берется из таблицы отделы

 

Rabotum (работа)

Belongs_to

Берется из таблицы работы

 

otm_v (отметка выполнения)

boolean

 

 

status

boolean

 

 

s_delete

boolean

 

 

created_at

timestamp

Генерируется самостоятельно

 

updated_as

timestamp

Генерируется самостоятельно

28

Для создания платформы (scaffold) Otd, которая состоит из модели,

представления и контроллера, записывается в консоли следующая команда: rails

generate scaffold Otd O_name:string Rucovod:string Telef:string Kab:integer status:boolean

s_delete:boolean

При генерации платформы был создан файл-миграция, в нем находятся сведения о структуре таблицы, которые необходимо внести в БД. Для этого

пропишем в консоли следующую команду: rake db:migrate

Создадим остальные платформы. Запишем последовательно в консоли (не

забывая затем выполнять команду добавления миграций в БД (rake db:migrate)):

для

создания платформы Rabotum:

rails generate

scaffold Rabota

R_name:string

Ed_Izm:string

zaphact:belongs_to

Kolvo:integer

status:boolean

s_delete:boolean

для создания платформы Profilact: rails generate scaffold Profilact Data:date otd:belongs_to object:string status:boolean Otm_v:boolean s_delete:boolean

для создания платформы Zaphact: rails generate scaffold Zaphact z_name:string Ed_izm:string Kolvo:integer Foto:string status:boolean s_delete:boolean

для создания платформы Prog: rails generate scaffold Prog p_name:string data:date otd:belongs_to licens:boolean data_ok:date Photo:string status:boolean

s_delete:boolean

для создания платформы Zakaz: rails generate scaffold Zakaz data:date otd:belongs_to rabotum:belongs_to otm_v:boolean status:boolean s_delete:boolean

Таким образом, было создано шесть платформ (справочников), которые после выполнения команды rake db:migrate были созданы в БД. Проверить факт наличия таблиц можно, открыв pgAdmin и зайдя в БД «Otdel». Найти их можно в ветке таблицы.

3.2 Описание программных модулей

В данном проекте был спроектирован и создан ряд отдельных программных модулей, выполняющих специфические функции (модули объектов (справочников) и так далее). На рисунке 3.1 представлено дерево

29

программных модулей.

ПМ авторизации

ПМ главного меню

ПМ справочники

ПМ Запчасти

ПМ ввода

ПМ редактирования

ПМ удаление

ПМ просмотра

ПМ Работы

ПМ ввода

ПМ редактирования

ПМ удаление

ПМ просмотра

ПМ Установленное ПО

ПМ ввода

ПМ редактирования

ПМ удаление

ПМ просмотра

ПМ Отделы

ПМ ввода

ПМ редактирования

ПМ удаление

ПМ просмотра

ПМ Профилактика

ПМ ввода

ПМ редактирования

ПМ удаление

ПМ просмотра

ПМ Заявки

ПМ ввода

ПМ редактирования

ПМ удаление

ПМ просмотра

ПМ отчеты

ПМ Отчета1

ПМ обработка и выдача на экран

ПМ Отчета2

ПМ обработка и выдача на экран

ПМ Отчета3

ПМ обработка и выдача на экран

ПМ Отчета4

ПМ обработка и выдача на экран

ПМ экспорт

Рисунок 3.1 – Дерево программных модулей

ПМ пользователи

ПМ просмотра

30

Схема взаимосвязи программных модулей должна содержать базу данных и составные части (модули) и отражать связь между ними. На рисунке 3.2

изображена схема взаимосвязи модулей и массивов данных.

ПМ пользователи

БД

 

 

Таблица

 

ПМ Запчасти

«Пользователи»

ПМ авторизации

 

Таблица

 

ПМ Работы

«Запчасти»

 

 

 

 

Таблица «Работы»

ПМ Отчета1

 

 

ПМ Заявки

 

 

 

Таблица «Заявки»

ПМ Отчета2

ПМ Установленное ПО

Таблица

 

 

«Установленное ПО»

ПМ Отчета4

ПМ Отделы

Таблица

 

«Отделы»

 

 

ПМ Отчета3

 

 

 

Таблица

 

ПМ Профилактика

«Профилактика»

 

Рисунок 3.2 – Схема взаимосвязи модулей и массивов данных

Из рисунка 3.2 видно, что модули отчетов, модули справочников и модуль авторизации при своей работе отправляю запросы в базу данных, а база данных модулям обратно отдает результаты запроса.

3.3 Реализация программных модулей

Отчет – представление требуемых данных в виде удобном для просмотра

ипечати.

Вданном web-приложении реализовано четыре отчета. Рассмотрим отчет

«Заявки за период времени». Данный отчет выводит код, наименование отдела,

название работы, дату создания и отметку выполнения в зависимости от того,

какой период был задан пользователем. Алгоритм работы этого отчета представлен на рисунке 3.3.

31

Соседние файлы в папке Курсовые работы