- •Перечень используемых сокращений
- •Введение
- •1.1.3. Модульная декомпозиция ипс
- •1.1.4. Обоснование выбора средств разработки ипс
- •1.2.1. Проектирование бд системы
- •1.2.2. Структура входных и выходных данных
- •1.2.3. Алгоритмы работы программы
- •1.2.4. Иерархия форм
- •1.2.5. Методика испытаний
- •Заключение
- •Список литературы
1.2.1. Проектирование бд системы
В БД отражается информация об определенной предметной области. Предметная область – это часть реального мира, представляющая интерес для данного исследования или использования.
Создание инфологической модели (ИЛМ)
Для проектирования структуры БД необходимо иметь исходную информацию (желательно в формализованном виде). Формализованным видом представления информации является инфологическая модель.
Инфологическая модель предметной области – это описание информационных аспектов предметной области, выполненное с помощью специальных языковых средств, не зависящее в дальнейшем от выбранных средств разработки.
Все работы, проводимые в НИИ ВС и СУ можно условно разделить на работы с разрабатываемыми изделиями и с примененными в них ЭРИ. Одним из требований технического задания являлась систематизация данных об изделиях и элементах. С этой целью мне потребовалось спроектировать таблицы для хранения информации об изделиях и примененных в них элементах (рис. 1.2 и 1.3).
-
Идентификатор изделия
Идентификатор темы
Идентификатор назначения изделия
Шифр изделия
Название изделия
Рис. 1.2. Структура таблицы «Изделия»
-
Идентификатор элемента
Идентификатор назначения элемента
Тип элемента
Фирма-изготовитель, страна
Основные характеристики
Вид исполнения
Полные аналоги элемента
Рекомендуемая замена
Фирмы, у которых можно купить
Цена элемента
Организация, выдавшая разрешение на использование
Номер протокола с разрешением
Дата протокола с разрешением
Дата регистрации или обновления
Комментарий
Рис. 1.3. Структура таблицы «Элементы»
Так как разработка электронной аппаратуры связана с использованием большого количества электро- и радиоизделий, то эти таблицы должны быть связаны, причем эта связь имеет тип «многие ко многим» (одно изделие может состоять из нескольких элементов и один элемент может быть применен при разработке нескольких изделий) (рис. 1.4).
Рис. 1.4. Связь таблицы «Изделия» и таблицы «Элементы»
Для реализации связи типа «многие ко многим» между таблицами изделий и элементов потребовалось ввести дополнительную таблицу «Элементы_Изделия» (рис. 1.5).
-
Идентификатор изделия
Идентификатор элемента
Рис. 1.5. Структура таблицы «Элементы_Изделия»
В результате связь между таблицами изделий и элементов разбилась на две (рис. 1.6 а, б):
а)
б)
Рис. 1.6. а - связь таблицы «Изделия» и таблицы «Элементы_Изделия»,
б - связь таблицы «Элементы» и таблицы «Элементы_Изделия».
Каждое изделие, разрабатываемое в НИИ ВС и СУ, принадлежит определенной категории и реализует основные характеристики этой категории. Для описания списка функциональных назначений изделий я ввел в рассмотрение таблицу «Категории изделий» (рис. 1.7). Таблицы «Категории изделий» и «Изделия» связаны между собой и имеют связь типа «один ко многим».
-
Идентификатор назначения изделия
Название категории
Рис. 1.7. Структура таблицы «Категории изделий»
Каждое изделие разрабатывается в рамках определенной темы одним или несколькими разработчиками. На каждое готовое изделие разработчиками выпускается техническая и программная документация. Для хранения данной информации были спроектированы таблицы «Темы», «Разработчики изделий» и «Документация на изделия» соответственно (рис. 1.8).
Идентификатор темы |
Шифр темы Название темы Руководитель Ответственный исполнитель Дата начала Дата окончания |
Идентификатор разработчика |
ФИО Пол Дата рождения Должность Подразделение |
Идентификатор документа |
Идентификатор изделия Децимальный номер документа Наименование документа Местонахождение файла Код доступа |
Рис. 1.8. Структура таблиц «Темы» (а), «Разработчики изделий» (б) и «Документация на изделия» (в)
Эти таблицы связаны с таблицей «Изделия» и имеют типы связей, изображенные на рис. 1.9.
а)
б)
в)
Рис. 1.9. а - связь таблицы «Изделия» и таблицы «Темы»,
б - связь таблицы «Разработчики изделий» и таблицы «Изделия»,
в - связь таблицы «Документация на изделия» и таблицы «Изделия»
Как разрабатываемые изделия, так и примененные в них элементы тоже принадлежат определенным категориям. Для описания списка функциональных назначений элементов предусмотрена таблица «Категории элементов» (рис. 1.10). Таблицы «Категории элементов» и «Элементы» связаны между собой и имеют связь типа «один ко многим».
-
Идентификатор назначения элемента
Название категории
Рис. 1.10. Структура таблицы «Категории элементов»
Все примененные элементы имеют свое описание и электрическую схему. Информация о местонахождении файла с описанием элементов, функциональных электрических схем и др. хранится в специальных таблицах (рис 1.11).
Идентификатор описания элемента |
Идентификатор элемента Местонахождение файла Адрес описания элемента Дата обновления описания |
Идентификатор схемы |
Идентификатор элемента Местонахождение файла Адрес источника информации Дата обновления информации |
Рис. 1.11. Структура таблиц «Описание элементов» (а) и «Схемы» (б)
Данные таблицы связаны с таблицей «Элементы» и имеют типы связей, изображенные на рис. 1.12.
а)
б)
Рис. 1.12. а – связь таблицы «Элементы» и таблицы «Описание элементов»,
б - связь таблицы «Элементы» и таблицы «Схемы»
Имеющиеся в наличии элементы хранятся в определенном месте на складе. Для ведения складского учета была спроектирована таблица «Места на складе» (рис. 1.13, а), которая связана с таблицей «Элементы» связью типа «многие ко многим». Для обеспечения такой связи создается дополнительная таблица «Места на складе - Элементы». В ней указываются идентификаторы элемента и места хранения, а также количество элементов, хранящихся в данном месте, и количество зарезервированных элементов для исполнения заявок (рис. 1.13, б).
Идентификатор места |
Указатель местоположения |
Идентификатор места Идентификатор элемента |
Количество имеющихся элементов Количество зарезервированных элементов |
Рис. 1.13. Структура таблиц «Места на складе» (а) и
«Места на складе - Элементы» (б)
Для хранения приходных и расходных ведомостей, заявок на выдачу элементов со склада и фиксаций операций с этими документами предусмотрены таблицы «Ведомости» и «Журнал операций», а также таблицы-словари «Тип ведомости» и «Статус ведомости». В таблице «Ведомости» хранятся сведения о типе и статусе ведомости (идентификаторы соответствующих значений словарей), дате создания и документе-основании (рекурсивная связь), исполнителе и номере ведомости (рис 1.14).
-
Идентификатор ведомости
Идентификатор типа
Идентификатор документа-основания
Идентификатор исполнителя
Номер ведомости
Дата создания
Идентификатор статуса
Идентификатор места перемещения
Рис. 1.14. Структура таблицы «Ведомости»
В ведомость включаются элементы, изымаемые или помещаемые на различные места хранения. Для реализации такой трехсторонней связи типа «многие ко многим» была введена дополнительная таблица «Ведомости – Элементы», в которой содержатся идентификаторы ведомости, элемента, его количества и места хранения (рис. 1.15).
-
Идентификатор ведомости
Идентификатор элемента
Идентификатор места хранения
Количество элементов
Рис. 1.15. Структура таблицы «Ведомости - Элементы»
Таблицы-словари «Тип ведомости» и «Статус ведомости» имеют простую структуру, которая включает в себя идентификатор элемента словаря и его значение (рис. 1.16, а, б).
Идентификатор типа ведомости |
Тип ведомости |
Идентификатор статуса ведомости |
Статус ведомости |
Рис. 1.16. Структура таблиц «Тип ведомости» (а) и «Статус ведомости» (б)
В таблице «Журнал операций» отражаются все операции, производимые со складскими документами – получение, исполнение и аннулирование заявок, проведение и отмена проводок ведомостей. В ней хранится информация о документе, над которым производилась операция, дате проведения, исполнителе и результате операции (рис. 1.17).
-
Идентификатор операции
Идентификатор ведомости
Идентификатор исполнителя
Идентификатор статуса
Дата операции
Рис. 1.17. Структура таблицы «Журнал операций»
Разрабатываемая система является многопользовательской, поэтому для хранения информации о пользователях предусмотрена таблица «Пользователи системы» (рис.1.18). Кроме стандартных учетных сведений («фамилия, имя, отчество», «login», «пароль») в базе данных хранится информация о подразделении, в котором работает пользователь, и о занимаемой должности. Для статистического анализа фиксируется количество входов в систему и дата регистрации пользователя. В процессе автоматической регистрации вырабатывается признак нового пользователя.
-
Идентификатор пользователя
ФИО пользователя
Имя пользователя (Login)
Пароль пользователя
Должность пользователя
Подразделение, в котором работает
Код доступа к документам
Категория пользователя
Дата регистрации
Счетчик входов в систему
Признак нового пользователя
Рис. 1.18. Структура таблицы «Пользователи системы»
В разрабатываемой системе предусмотрен механизм разграничения прав доступа пользователей. Он реализуется с помощью определения категории пользователя (роли) и кода доступа к документам. Для последующего варьирования этих параметров (добавление и удаление ролей и уровней доступа) мной были спроектированы таблицы-словари «Роли пользователей» и «Коды доступа к документам» (рис. 1.19).
Идентификатор роли |
Описание роли |
Идентификатор кода доступа |
Код доступа Описание кода доступа |
Рис. 1.19. Структура таблиц «Роли пользователей» (а)
и «Коды доступа к документам» (б)
Данные таблицы связаны с таблицей «Пользователи системы» посредством связи «один ко многим». Кроме того, таблица «Коды доступа к документам» дополнительно связана с таблицей «Документация на изделия».
Следует заметить, что при работе модуля формирования перечней и ведомостей покупных изделий в базе данных формируются дополнительные таблицы. Они являются временными и предназначены для проведения необходимых операций. По окончании работы эти таблицы удаляются из БД.
В результате инфологического моделирования была получена модель, показанная на рис.1.20.
Рис. 1.20. Результат построения инфологической модели
Создание даталогической модели (ДЛМ)
Даталогическая модель – это описание структуры баз, сделанное на языке выбранной СУБД. Выбранной СУБД является Firebird, достоинства которой были рассмотрены ранее. Требования, предъявляемые к системе, полностью можно реализовать с помощью данной СУБД. Она обеспечивает достаточно большое быстродействие на отдельном компьютере и в пределах небольшой локальной сети. ДЛМ является концептуальной моделью БД и представляет собой отражение логических связей между информационными элементами ИЛМ. ДЛМ строится в терминах условных единиц, допустимых в конкретной СУБД. Результат построения даталогической модели представлен на рисунке 1.21.
Рис. 1.21. Результат построения даталогической модели
Результатом даталогического проектирования является схема базы данных. Она включает в себя описание всех полей таблиц с указанием их типов. Схема БД для разрабатываемой системы приведена в таблице 1.1.
Таблица 1.1
Название таблицы |
Описание таблицы |
Название поля |
Тип данных поля |
Описание поля |
Designers |
Разработчики готовых изделий |
DBirthDay |
DATE |
Дата рождения разработчика |
Таблица 1.1 (продолжение)
Название таблицы |
Описание таблицы |
Название поля |
Тип данных поля |
Описание поля |
|
|
DDep |
VARCHAR(50) |
Подразделение, в котором работает разработчик |
|
|
DName |
VARCHAR(50) |
Фамилия, имя, отчество разработчика |
|
|
DPost |
VARCHAR(50) |
Должность разработчика |
|
|
DSex |
CHAR(1) |
Пол разработчика (М, Ж) |
|
|
IdR |
INTEGER |
Уникальный идентификатор разработчика |
Documents |
Документация на разработанные изделия |
DACL |
INTEGER |
Код доступа к документу - Access Control Level (используется для сравнения с кодом доступа пользователя системы к документам) |
|
|
DocName |
VARCHAR(100) |
Полное наименование документа |
|
|
DocNum |
VARCHAR(100) |
Децимальный номер документа по принятой системе обозначений |
|
|
FileDoc |
VARCHAR(100) |
Местонахождение файла с текстом документа на диске |
|
|
IdD |
INTEGER |
Уникальный идентификатор документа |
|
|
IdI |
INTEGER |
Уникальный идентификатор изделия |
EDescription |
Описание импортного элемента |
ERenewDate |
DATE |
Дата обновления описания импортного элемента |
|
|
FileLoc |
VARCHAR(100) |
Местонахождение файла с описанием элемента на диске |
|
|
FileURL |
VARCHAR(100) |
Адрес описания элемента в Интернете |
|
|
IdE |
INTEGER |
Уникальный идентификатор элемента |
|
|
IdO |
INTEGER |
Уникальный идентификатор описания элемента |
Таблица 1.1 (продолжение)
Название таблицы |
Описание таблицы |
Название поля |
Тип данных поля |
Описание поля |
Elements |
Импортные элементы изделий |
AllowDate |
DATE |
Дата протокола с разрешением на использование/приобретение импортного ЭРИ |
|
|
AllowOrg |
VARCHAR(100) |
Организация, выдавшая разрешение на использование/приобретение импортного ЭРИ |
|
|
Analogs |
VARCHAR(600) |
ЭРИ, являющиеся полными аналогами данного ЭРИ |
|
|
IdE |
INTEGER |
Уникальный идентификатор элемента |
|
|
IdNE |
INTEGER |
Уникальный идентификатор назначения элемента |
|
|
MainValues |
VARCHAR(100) |
Функциональное назначение и основные характеристики ЭРИ |
|
|
Performance |
VARCHAR(50) |
Вид исполнения/наличие исполнения millitary |
|
|
Price |
DECIMAL(12,2) |
Цена ЭРИ (в У.Е.) |
|
|
Producer |
VARCHAR(100) |
Фирма-изготовитель, страна |
|
|
ProtocolN |
VARCHAR(20) |
№ протокола с разрешением на использование/приобретение импортного ЭРИ |
|
|
RenewDate |
DATE |
Дата регистрации или обновления сведений об ЭРИ |
|
|
Replacement |
VARCHAR(100) |
ЭРИ, используемые для замены |
|
|
TypeE |
VARCHAR(300) |
Тип примененного импортного электрорадиоизделия (ЭРИ) |
|
|
Vendor |
VARCHAR(100) |
Фирмы, у которых можно купить ЭРИ |
Elem_Prod |
Таблица связи «Элементы-Изделия» |
IdE |
INTEGER |
Уникальный идентификатор элемента |
|
|
IdI |
INTEGER |
Уникальный идентификатор изделия |
Таблица 1.1 (продолжение)
Название таблицы |
Описание таблицы |
Название поля |
Тип данных поля |
Описание поля |
ENomination |
Функциональное назначение ЭРИ |
IdNE |
INTEGER |
Уникальный идентификатор назначения элемента |
|
|
NameNE |
VARCHAR(100) |
Наименование функционального назначения элемента (ЭРИ) |
EScheme |
Электрические схемы ЭРИ |
FileLoc |
VARCHAR(100) |
Местонахождение файла с описанием электрической схемы на диске |
|
|
FileURL |
VARCHAR(100) |
Адрес источника информации в Интернете |
|
|
IdE |
INTEGER |
Уникальный идентификатор элемента |
|
|
IdS |
INTEGER |
Уникальный идентификатор электрической схемы импортного элемента |
|
|
SRenewDate |
DATE |
Дата обновления электрической схемы импортного элемента |
PNomination |
Функциональное назначение изделия |
IdNI |
INTEGER |
Уникальный идентификатор назначения изделия |
|
|
NameNI |
VARCHAR(100) |
Наименование функционального назначения изделия |
Products |
Информация о разработанном изделии |
IdI |
INTEGER |
Уникальный идентификатор изделия |
|
|
IdNI |
INTEGER |
Уникальный идентификатор назначения изделия |
|
|
IdT |
INTEGER |
Уникальный идентификатор темы |
|
|
PCode |
VARCHAR(100) |
Условное обозначение изделия |
|
|
PName |
VARCHAR(100) |
Полное название изделия |
Pr_Designers |
Таблица связи «Изделия-Разработчики» |
IdI |
INTEGER |
Уникальный идентификатор изделия |
|
|
IdR |
INTEGER |
Уникальный идентификатор разработчика |
Таблица 1.1 (продолжение)
Название таблицы |
Описание таблицы |
Название поля |
Тип данных поля |
Описание поля |
StorePlaces |
Места на складе, где находятся импортные ЭРИ |
IdM |
INTEGER |
Уникальный идентификатор места на складе |
|
|
Place |
VARCHAR(50) |
Указатель местоположения ЭРИ на складе |
SP_Elements |
Таблица связи «Места на складе-Элементы» |
IdE |
INTEGER |
Уникальный идентификатор элемента |
|
|
IdM |
INTEGER |
Уникальный идентификатор места на складе |
|
|
N_Exist |
INTEGER |
Количество имеющихся элементов |
|
|
N_Reserved |
INTEGER |
Количество зарезервированных элементов |
Themes |
Темы выполненные или выполняемые |
FinishDate |
DATE |
Дата окончания выполнения темы |
|
|
IdT |
INTEGER |
Уникальный идентификатор темы |
|
|
StartDate |
DATE |
Дата начала выполнения темы |
|
|
TChief |
VARCHAR(50) |
Руководитель темы |
|
|
TCode |
VARCHAR(50) |
Условное обозначение темы |
|
|
TName |
VARCHAR(100) |
Полное название темы |
|
|
TRuler |
VARCHAR(50) |
Ответственный исполнитель темы |
Users |
Пользователи системы |
UCount |
INTEGER |
Счетчик входов пользователя в систему |
|
|
IdU |
INTEGER |
Уникальный идентификатор пользователя системы |
|
|
Login |
VARCHAR(20) |
Имя пользователя системы |
|
|
UPassword |
VARCHAR(20) |
Пароль зарегистрированного пользователя для входа в систему |
Таблица 1.1 (продолжение)
Название таблицы |
Описание таблицы |
Название поля |
Тип данных поля |
Описание поля |
|
|
RegDate |
DATE |
Дата регистрации пользователя системы |
|
|
URole |
INTEGER |
Роль пользователя |
|
|
UACL |
INTEGER |
Код доступа пользователя к документам |
|
|
UDep |
VARCHAR(50) |
Подразделение, в котором работает пользователь |
|
|
UName |
VARCHAR(50) |
Фамилия, имя, отчество пользователя системы |
|
|
UPost |
VARCHAR(50) |
Должность пользователя системы |
|
|
N_New |
INTEGER |
Признак нового пользователя |
Dict_ACL |
Коды доступа |
N_ACL_Id |
INTEGER |
Уникальный идентификатор кода доступа |
|
|
N_ACL_Code |
INTEGER |
Децимальное обозначение кода доступа |
|
|
VC_ACL_Name |
VARCHAR(30) |
Описание кода доступа |
Dict_Role |
Роли пользователей |
N_Role_Id |
INTEGER |
Уникальный идентификатор роли пользователя |
|
|
VC_Role |
VARCHAR(30) |
Описание роли пользователя |
Orders_Type |
Тип ведомости |
N_Order_Type_Id |
INTEGER |
Уникальный идентификатор типа ведомости |
|
|
VC_Order_Name |
VARCHAR(30) |
Тип ведомости |
States_Type |
Статус ведомости |
N_State_Id |
INTEGER |
Уникальный идентификатор статуса ведомости |
|
|
VC_State_Name |
VARCHAR(30) |
Статус ведомости |
Orders |
Ведомости |
N_Order_Id |
INTEGER |
Уникальный идентификатор ведомости |
|
|
N_Order_Type_Id |
INTEGER |
Уникальный идентификатор типа ведомости |
|
|
N_Parent_Id |
INTEGER |
Уникальный идентификатор документа-основания |
Таблица 1.1 (окончание)
Название таблицы |
Описание таблицы |
Название поля |
Тип данных поля |
Описание поля |
|
|
IdU |
INTEGER |
Уникальный идентификатор исполнителя |
|
|
N_Order_Num |
INTEGER |
Децимальный номер ведомости |
|
|
DA_Order_Date |
DATE |
Дата создания ведомости |
|
|
N_State_Id |
INTEGER |
Уникальный идентификатор статуса ведомости |
|
|
N_Source_IdM |
INTEGER |
Идентификатор места перемещения (для документа «перемещение по складу») |
Orders_Elem |
Таблица связи «Ведомости – Элементы» |
N_Order_Id |
INTEGER |
Уникальный идентификатор ведомости |
|
|
IdE |
INTEGER |
Уникальный идентификатор элемента |
|
|
IdM |
INTEGER |
Уникальный идентификатор места хранения |
|
|
N_Ordered |
INTEGER |
Количество элементов |
Orders_Log |
Журнал операций |
N_Log_Id |
INTEGER |
Уникальный идентификатор записи журнала |
|
|
N_Order_Id |
INTEGER |
Уникальный идентификатор ведомости |
|
|
IdU |
INTEGER |
Уникальный идентификатор исполнителя |
|
|
N_State_Id |
INTEGER |
Уникальный идентификатор статуса ведомости |
|
|
DA_Log_Date |
DATE |
Дата совершения операции |
Ограничения целостности
Ограничения целостности – это условия, при которых имеют смысл значения, хранящиеся в БД. Ограничения целостности для разрабатываемой системы определяются как типами данных, выбранными при проектировании даталогической модели, так и имеющимися связями между таблицами. Они обеспечиваются автоматически системой после создания базы и при внесении изменений в нее.