47706 (588500), страница 13
Текст из файла (страница 13)
Рис. 17. Инфологическая модель базы данных.
Звёздочками на инфологической модели показаны ключевые атрибуты.
В качестве даталогической модели базы данных была выбрана реляционная модель, поскольку именно реляционная модель является результатом более развитых представлений о формировании и ведении баз данных, на которые наложен строгий математический аппарат. Реляционные модели наиболее логично и наглядно отражают структуру хранимой информации и внутренних связей, что позволяет более полно анализировать структуру базы данных при разработке. Это привело к тому, что именно реляционные модели баз данных наиболее распространены в настоящее время и являются стандартом, на который переводятся все существовавшие ранее базы данных с иерархической и сетевой моделью. Ещё одним веским доводом в пользу выбора реляционной модели является тот факт, что подавляющее большинство предоставляемых средств для разработки баз данных ориентированны исключительно на реляционную модель. Кроме того, реляционные базы данных в последствии легче расширять и интегрировать, что является неотъемлемой частью дальнейшего развития баз данных, с увеличением возлагаемых на них задач.
Инфологическая модель базы данных легко отображается в реляционную даталогическую модель, используя описанные ранее правила по переводу. В результате получается семь таблиц реляционной базы данных, где каждая сущность напрямую отражается в отдельную таблицу, атрибуты каждой сущности становятся полями этой таблицы, а первичные ключи сущности становятся первичными ключами таблицы. На данном этапе необходимо также провести нормализацию полученных таблиц с целью устранения избыточности данных. Эта процедура в дальнейшем значительно облегчит усилия, которые будут затрачиваться на поддержании таблиц базы данных в целостном состоянии.
Правила нормализации, описанные ранее, предписывают для таких случаев заводить отдельную таблицу для каждого поля и хранить в ней все значения характерные только для одного поля. Я же принял решение свести значения для всех полей в одну таблицу и различать их не только по уникальному номеру-идентификатору, но и указывать таблицу, к которой это поле принадлежит, а также название самого поля. Выбор такого варианта оправдан тем, что таких полей в таблицах базы данных более десяти. Организация отдельных таблиц для каждого такого поля существенно усложнит структуру базы данных. Кроме того добавление новых атрибутов с подобным ограниченным числом значений потребует организовывать новую таблицу и затрату больших усилий по изменению интерфейса взаимодействия с конечным пользователем и исправлению программного кода, нежели от добавления этих значений в одну универсальную таблицу.
Конечно, в этом случае таблицы базы данных не будут до конца нормализованы, что накладывает некоторые требования на процедуры поддержания базы данных в целостном состоянии, но даёт возможность “безболезненных изменений” в программном коде, что может существенно сократить время разработки в дальнейшем. Процедуры по поддержанию целостности можно реализовать в программном коде, сделав их таким образом прозрачными для конечного пользователя.
Т
Таблица 1.
| Имя поля | Описание |
| Имя_таблицы | Название таблицы к которой принадлежит поле |
| Имя_поля | Название поля в этой таблице |
| Код | Уникальный номер (код) для значения данного поля |
| Значение | Значение для поля с данным кодом |
аким образом, в результате нормализации таблиц базы данных и проведённого анализа состава полей этих таблиц получилась ещё одна таблица, содержащая значения тех полей, которые принимают ограниченное число значений. Состав полей, первичный ключ (выделен жирным шрифтом с курсивом) и описание полей представлены в таблице 1.
Такой состав таблиц позволяет выполнять все возложенные задачи, поскольку он выведен из инфологической модели, проектируемой исходя из требований конечных пользователей.
-
Физическое описание модели
База данных организованна в популярном формате локальных баз данных dBase. Этот формат для организации реляционных баз данных довольно распространен, поскольку обладает очень развитой системой хранимых типов данных, возможностями индексирования полей, что позволяет получать доступ к данным за минимальное время, а также функциями по обеспечению ссылочной целостности между реляционными таблицами, что позволяет разработчику минимизировать временные затраты на создание базы данных, а конечному пользователю затраты на поддержание целостности хранимых данных и получения из базы данных самих хранимых данных. Поскольку базы данных dBase - реляционные базы данных, то запросы к данным осуществляются с помощью реляционного языка запросов SQL. Благодаря развитой системе определения ключевых полей и индексов при создании таблиц запросы будут выполняться с минимальными временными затратами. Хотя этот фактор для локальных баз данных не является ключевым, однако, при росте объема хранимых данных именно скорость выполнения запросов становиться решающим фактором при выборе формата баз данных.
Типы данных, хранимые в таблицах dBase, очень разнообразны. Это и символьные значения и разнообразные типы числовых значений, включающие целочисленные, вещественные, вещественные с плавающей запятой, числа в двоичном и двоично-десятичном формате, логические типы, специальные форматы для хранения значений даты, времени и денежных сумм, графические типы для хранения графических изображений в самых популярных форматах, а также строковые значения неограниченной длины (в том числе и форматированные в формате rtf) и даже типы поддерживаемые технологией OLE (Object Linking and Embedding) фирмы Micrоsoft. Такое разнообразие типов данных может отвечать даже самым изысканным задачам, которым призвана служить создаваемая база данных и без сомнения подходит для решения круга задач возложенного на базу данных о зерна зерноперерабатывающего предприятия.
База данных ZERNO представлена 4-мя таблицами (или по терминологии реляционных баз данных - 4-мя реляционными отношениями): Dorg, Dkul, Dtyp, Fnakl. Рассмотрим структуру каждой более подробно.
В таблице Dorg представлена информация о клиентах. Поля, их типы, и назначение представлены в таблице 2.
Таблица 2.
| Имя поля | Тип поля | Описание |
| O_Kod | Numeric[6] | Код клиента |
| O_Name | Character[30] | Название |
| O_Typ | Numeric[1] | Тип |
| O_Bank | Character[45] | Банковские реквизиты |
| O_Address | Character[45] | Адрес |
| O_Phone | Numeric[10] | Номер телефона |
Первичным ключем таблицы является поле O_Kod, которое однозначно определяет каждую запись в таблице.
В
Таблица 3.
| Имя поля | Тип поля | Назначение |
| K_Kod | Numeric[3] | Код культуры |
| K_Nazva | String[30] | Название культуры |
| K_Class | Numeric[1] | Класс культуры |
| K_Volo | Numeric[4.2] | Базисная влажность |
| K_Domi | Numeric[4.2] | Базисная зерновая примесь |
| K_Soro | Numeric[4.2] | Базисная сорная примесь |
| K_Natu | Numeric[4.2] | Базисная натура |
| K_Sklo | Numeric[4.2] | Базисная стекловидность |
| K_Kley | Numeric[4.2] | Базисная клейковина |
таблице Dkul представлена информация о культурах. Поля, их типы, и назначение представлены в таблице 3.
Первичным ключем является поле K_Kod, однозначно определяющее любую запись в таблице.
В
Таблица 4.
| Имя поля | Тип поля | Назначение |
| T_Kod | Numeric[2] | Код вида поступления |
| T_Nazva | Character[25] | Название вида поступления |
таблице Dtyp представлена информация о видах поступления зерна.. Поля, их типы, и назначение представленны в таблице 4.
В
Таблица 5.
| Имя поля | Тип поля | Назначение |
| N_Nomer | Character[6] | Номер накладной |
| N_Date | Date | Дата накладной |
| N_Avto | Character[7] | Номер автомашины |
| N_Kodo | Numeric[6] | Код клиента |
| N_Kodk | Numeric[3] | Код культуры |
| N_Kodt | Numeric[2] | Код вида поступления |
| N_NSkl | Numeric[1] | Номер склада |
| N_Brutto | Numeric[9] | Масса брутто |
| N_Tara | Numeric[9] | Масса тары |
| N_Netto | Numeric[9] | Масса нетто |
| N_Nana | Character[5] | Номер лабораторного анализа |
таблице Fnakl представлена информация о накладных, по которым поступает зерно. Поля, их типы, и назначение представлены в таблице 5.
Ключевые поля данной таблицы – N_Nomer и N_Date. По полю N_Nana данная таблица связана с базой данных лаборатории, где содержится информация о фактических качественных показателях принятого зерна. Структуру таблиц базы данных лаборатории я здесь приводить не буду, это отдельная задача. Кроме того, на базе данной таблицы (Fnakl) в задаче реализации готовой продукции формируются квитанции и накладные на выдачу муки клиентам.
-
Програмная реализация
Все описанные таблицы, составляющие основу базы данных, функционируют в рамках созданной системы управления базой данных ”Zernot”. СУБД ”Zernot” создана средствами среды программирования Delphi 5.0.
В основу создания данной СУБД положен принцип экономии времени и усилий конечного пользователя, т.е. работников зерноперерабатывающего предприятия, предполагая, что машина берет на себя все рутинные функции управления и доступа к хранимым данным. Этот принцип прослеживался во всех моментах реализации данной СУБД, включая создание удобного интерфейса для работы конечных пользователей с этим программным продуктом, продуманной структурой реляционных таблиц, выбранным форматом баз данных выполняющие SQL-запросы за наиболее короткое время. Даже функции администрирования базы данных не требуют знакомства с теорией реляционной баз данных, СУБД самостоятельно тестирует находящиеся в базе данных записи и производит приведение базы данных к целостному состоянию. Пользователю остается согласиться со всей проделанной работой (или ее частью) или провести все самостоятельно. За сохранность введенных данных можно не беспокоиться, поскольку никакая информация, внесенная в базу данных не может быть удалена без подтверждения пользователя.
Краткое описание программного проекта
Проект Azagot, реализующий доступ к БД Zerno выполнен в виде библиотеки DLL. Состоит из двух форм MainForm (главная форма) и NaklForm (форма для ввода накладных). Из библиотеки Global.DLL в проект импортируются функции работы со справочниками клиентов, культур и видов поступления соответственно ShowDovOrg, ShowDovKul, ShowDovTyp.













