Структура базы данных
Администратор базы данных (DatabaseAdministrator) – специалист который выполняет работы по созданию и эксплуатации базы данных и информационных систем.
На стадии анализа моделируются только основные классы, относящиеся к предметной области, т.е. таблицы базы данных. Необходимо убедиться, что отсутствует избыточность хранимой информации и аномалии в организации данных, т.е. модель данных необходимо привести к третьему нормальному виду.
Архитектор баз данных формирует документ «Структура базы данных». В документе представлены отчёты по структуре данных в документах, отчётах и таблицах. Данные таблицы формируются с помощью возможности формировать отчёты в среде EnterpriseArchitect (F8). Отчёты формируются по шаблону datamodeltemplate.
Для контроля возможности выполнения СППР функциональных требований заполняется таблица 2.14, которая позволяет сопоставить наименование полей в документах и отчётах с полями таблиц базы данных. Пример документа «Проект структуры базы данных» представлен ниже [2].
Диаграмма классов базы данных представляется в графической части.
Структура полей данных.
Таблица 2.1 – Структура полей таблицы «Продукция»
PK | Name | Type | Not Null | Unique | Len |
True | Продукт_ID | int | True | False | |
False | Наименование | nvarchar | True | False | |
False | Описание | nvarchar | False | False | |
False | Белки | real | False | False | |
False | Жиры | real | False | False | |
False | Углеводы | real | False | False | |
False | Энерг_ценность | int | False | False | |
False | Масса | real | False | False | |
False | Срок_хранения | int | False | False | |
False | Цена | int | False | False |
Таблица 2.2 – Структура полей таблицы «Реализованная_продукция»
PK | Name | Type | Not Null | Unique |
True | Реализ_продукция_ID | int | True | False |
False | Продукт_ID | int | True | False |
Продолжение таблицы 2.2
PK | Name | Type | Not Null | Unique |
False | Количество | int | True | False |
False | КодЕдИзм | int | False | False |
False | Дата_изготовления | datetime | False | False |
False | Стоимость | int | False | False |
Таблица 2.3 – Структура полей таблицы «Рецептура»
PK | Name | Type | Not Null | Unique |
True | Рецепт_ID | int | True | False |
False | Количество | real | True | False |
False | Продукт_ID | int | True | False |
False | Сырье_ ID | int | True | False |
False | КодЕдИзм | int | False | False |
Таблица 2.4 – Структура полей таблицы «Сырье»
PK | Name | Type | Not Null | Unique | Len |
True | Сырье_ ID | int | True | False | |
False | Наименование | nvarchar | True | False | |
False | Количество | real | True | False | |
False | КодЕдИзм | int | False | False |
Таблица 2.5 – Структура полей таблицы «ЕдИзм»
PK | Name | Type | Not Null | Unique | Len |
True | КодЕдИзм | int | True | False | |
False | НаимЕдИзм | nvarchar | False | False |
Таблица 2.6 – Ограничения таблицы «Продукция»
Name | Type | Columns |
PK_Продукция | Public | Продукт_ID |
Таблица 2.7 – Ограничения таблицы «ЕдИзм»
Name | Type | Columns |
PK_ЕдИзм | Public | КодЕдИзм |
Таблица 2.8 – Ограничения таблицы «Реализованная_продукция»
Name | Type | Columns | Notes |
FK_РеалПрод_Прод | Public | Продукт_ID | Foreign key constraint |
FK_РеалПрод_ЕдИзм | Public | КодЕдИзм | Foreign key constraint |
PK_Реализованная_продукция | Public | Реализ_продукция_ID |
Таблица 2.9 – Отношения таблицы «Реализованная_продукция»
Columns | Association | Notes |
(Продукт_ID=Продукт_ID) | 0..* Реализованная_продукция.Продукт_ID 1 Продукция.PK_Продукция | |
(КодЕдИзм=КодЕдИзм) | 0..* Реализованная_продукция.КодЕдИзм 1 ЕдИзм.PK_ЕдИзм |
Таблица 2.10 – Ограничения таблицы «Рецептура»
Name | Type | Columns | Notes |
FK_Рецепт_Прод | Public | Продукт_ID | Foreign key constraint |
FK_Рецепт_Сырье | Public | Сырье_ID | Foreign key constraint |
FK_Рецепт_ЕдИзм | Public | Сырье_ID | Foreign key constraint |
PK_Рецептура | Public | Рецепт_ID |
Таблица 2.11 – Отношения таблицы «Рецептура»
Columns | Association | Notes |
(Продукт_ID=Продукт_ID) | 1..* Рецептура.Продукт_ID 1 Продукция.PK_Продукция | |
(Сырье_ID=Сырье_ID) | 1..* Рецептура.Сырье_ID 1 Сырье.PK_Сырье | |
(КодЕдИзм=КодЕдИзм) | 1..* Рецептура.КодЕдИзм 1 ЕдИзм.PK_ЕдИзм |
Таблица 2.12 – Ограничения таблицы «Сырье»
Name | Type | Columns | Notes |
FK_Сырье_ЕдИзм | Public | КодЕдИзм | Foreign key constraint |
PK_Сырье | Public | Сырье_ID |
Таблица 2.13 – Отношения таблицы «Сырье»
Columns | Association | Notes |
(КодЕдИзм=КодЕдИзм) | 1..* Сырье.КодЕдИзм 1 ЕдИзм.PK_ЕдИзм |
Таблица 2.14 – Соответствие полей данных документов и таблиц базы данных
Документ | Поле документа | Таблица | Поле таблицы |
Ассортимент продукции | Наименование | Продукция | Наименование |
Белки | Продукция | Белки | |
Жиры | Продукция | Жиры | |
Углеводы | Продукция | Углеводы | |
ЭнЦенность | Продукция | Энерг_ценность | |
Масса | Продукция | Масса | |
СрокХран | Продукция | Срок_хранения | |
Цена | Продукция | Цена | |
Рецептура продукта | НаимПрод | Продукция | Наименование |
Описание | Продукция | Описание | |
ЭнЦенность | Продукция | Энерг_ценность | |
Масса | Продукция | Масса | |
СрокХран | Продукция | Срок_хранения | |
Цена | Продукция | Цена | |
НаимСырья | Сырье | Наименование | |
КолСырья | Рецептура | Количество | |
ЕдИзм | ЕдИзм | НаимЕдИзм | |
Белки | Продукция | Белки | |
Жиры | Продукция | Жиры | |
Углеводы | Продукция | Углеводы |
Продолжение таблицы 2.14
Документ | Поле документа | Таблица | Поле таблицы |
Отчет о реализуемой продукции | НаимПрод | Продукция | Наименование |
Цена | Продукция | Цена | |
Количество | Реализованная_продукция | Количество | |
Дата | Реализованная_продукция | Дата_изготовления | |
Стоимость | Рассчитываемое поле (Количество * Цена) | ||
Итого | Рассчитываемое поле |
Заключение
Разработанная структура базы данных однозначно определяет значения всех необходимых для эффективного функционирования информационной системы полей.
Присутствие незначительного количества полей, не использующихся явно в данной предметной области, объясняется тем, что вся информационная база представляет собой комплексный информационный продукт, а в рассмотрении находится лишь часть этой системы.
Данная база данных приведена к третьей нормальной форме. Это позволяет эффективно функционировать самой базе данных и корректно выполнять запросы. Каждый не ключевой атрибут разработанных таблиц зависит от соответствующего ключа, причём от всего ключа целиком и ни от чего другого, кроме как от ключа.
3 Проектирование архитектуры проекта
3.1 Взаимодействие классов СППР
Системный архитектор (ComputerSoftwareEngineer) осуществляет анализ требований заказчика в контексте используемого программного обеспечения и обеспечивает реализацию проектных спецификаций и архитектуры системных и программных средств.
Системный архитектор разрабатывает документ «Архитектура проекта»
Диаграмма классов представлена в графической части «Диаграмма классов. Диалоговые формы», «Диаграмма классов. Запросы» [3].
Диаграмма последовательности - это диаграмма, на которой представлено взаимодействие, состоящее из множества объектов и отношений между ними, включая и сообщения, которыми они обмениваются.
Данная диаграмма представлена в графическом материале.
Главное предназначение диаграммы состояний – описать возможные последовательности состояний и переходов, которые в совокупности характеризуют поведение моделируемой системы. Диаграмма состояний представляет интерфейс пользователя.
Особое внимание обращено на список внутренний действий. Список внутренний действий отражает действия, которые должны быть выполнены моделируемым элементом при нахождении его в том или ином состоянии. Для этой цели служит дополнительная секция в обозначении состояния, содержащая перечень внутренних действий или деятельность, которые выполняются в процессе нахождения моделируемого элемента в данном состоянии.
На UML моделях форм и на самих формах присутствуют необходимые кнопки для осуществления do/ Деятельности и организации переходов между формами. Данная диаграмма представлена в графическом материале [4].
Архитектура СППР
В документе «Архитектура проекта» представлены диаграммы классов всех остальных элементов проекта: диалоговых форм, запросов к базе данных [5].
Таблица 3.1 – Структура компонента MainForm
Name | Type |
lblLogo | Label |
btnAssort | Button |
btnProducts | Button |
btnRaw | Button |
btnRlzdForDay | Button |
btnExit | Button |
Продолжение таблицы 3.1
Name | Type |
MainForm | Public |
btnProducts_Click | Private |
btnExit_Click | Private |
btnRaw_Click | Private |
btnAssort_Click | Private |
btnRlzdForDay_Click | Private |
Таблица 3.2 – Структура компонента FormProducts
Name | Type |
lblNew | Label |
cbxNewProd | ComboBox |
lblName | Label |
lblDescription | Label |
lblProtein | Label |
lblFat | Label |
lblCarb | Label |
lblEnValue | Label |
lblMass | Label |
lblShelfLife | Label |
lblPrice | Label |
lblId | Label |
lblRepice | Label |
lblRlzdProd | Label |
btnRepice | Button |
btnDelRepice | Button |
btnRlzdProd | Button |
btnDel | Button |
btnAdd | Button |
btnEdit | Button |
btnDoc | Button |
btnDelProd | Button |
btnExitToMenu | Button |
btnClear | Button |
tbxName | TextBox |
tbxDescription | TextBox |
tbxId | TextBox |
tbxPrice | TextBox |
Продолжение таблицы 3.2
Name | Type |
tbxId | TextBox |
btnExitToMenu_Click | Private |
btnAdd_Click | Private |
cbxNewProd_SelectedIndexChanged | Private |
btnRlzdProd_Click | Private |
btnRepice_Click | Private |
btnClear_Click | Private |
btnEdit_Click | Private |
btnDoc_Click | Private |
btnDel_Click | Private |
btnDelRepice_Click | Private |
btnDelProd_Click | Private |
dgvRepice | DataGridView |
dgvRlzdProd | DataGridView |
tbxCarb | TextBox |
tbxEnValue | TextBox |
tbxMass | TextBox |
tbxShelfLife | TextBox |
tbxProtein | TextBox |
tbxFat | TextBox |
FormProducts | Public |
FormProducts_Load | Private |
Таблица 3.3 – Структура компонента FormRawMaterials
Name | Type |
lblRMs | Label |
lblName | Label |
lblQuantity | Label |
lblEIzm | Label |
lblId | Label |
cbxRawMaterials | ComboBox |
tbxName | TextBox |
tbxQuantity | TextBox |
cbxEIzm | ComboBox |
tbxId | TextBox |
btnAdd | Button |
btnClear | Button |
Продолжение таблицы 3.3
Name | Type |
btnSave | Button |
btnSave_Click | Private |
btnClear_Click | Private |
btnDel_Click | Private |
btnSave | Button |
btnDel | Button |
btnExitToMenu | Button |
tbxId | TextBox |
tbxPrice | TextBox |
FormRawMaterials | Public |
FormRawMaterials_Load | Private |
btnExitToMenu_Click | Private |
btnAdd_Click | Private |
cbxRawMaterials_SelectedIndexChanged | Private |
Таблица 3.4 – Структура компонента FormRepice
Name | Type |
lblNameProd | Label |
lblNameRMs | Label |
lblQuantity | Label |
lblEIzm | Label |
cbxNameProd | ComboBox |
cbxNameRMs | ComboBox |
tbxQuantity | TextBox |
cbxEIzm | ComboBox |
btnAdd | Button |
btnClose | Button |
FormRepice | Public |
FormRepice_Load | Private |
btnAdd_Click | Private |
btnClose_Click | Private |
cbxNameRMs_SelectedIndexChanged | Private |
Таблица 3.5 – Структура компонента FormRlzdProducts
Name | Type |
lblName | Label |
lblQuantity | Label |
lblEIzm | Label |
lblSpendRMs | Label |
cbxName | ComboBox |
nudQuantity | NumericUpDown |
cbxEIzm | ComboBox |
dgvSpendRMs | DataGridView |
btnAdd | Button |
btnClose | Button |
FormRlzdProducts | Public |
cbxName | ComboBox |
FormRlzdProducts_Load | Private |
btnAdd_Click | Private |
btnClose_Click | Private |
Таблица 3.6 – Структура компонента FormRlzdForDay
Name | Type |
lblDate | Label |
dtpDate | DateTimePicker |
btnDoc | Button |
btnExit | Button |
FormRlzdForDay | Public |
btnExit_Click | Private |
btnDoc_Click | Private |