ПЗ (1218909), страница 4
Текст из файла (страница 4)
Сообществом разработчиков MySQL созданы различные ответвления кода, такие, как Drizzle (англ.), OurDelta, Percona Server и MariaDB. Все эти ответвления уже существовали на момент поглощения компании Sun корпорацией Oracle.
MySQL портирована на большое количество платформ: AIX, BSDi, FreeBSD, HP-UX, Linux, Mac OS X, NetBSD, OpenBSD, OS/2 Warp, SGI IRIX, Solaris, SunOS, SCO OpenServer, UnixWare, Tru64, Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows Server 2003, WinCE, Windows Vista и Windows 7. Существует также порт MySQL к OpenVMS. Важно отметить, что на официальном сайте СУБД для свободной загрузки предоставляются не только исходные коды, но и откомпилированные и оптимизированные под конкретные операционные системы готовые исполняемые модули СУБД MySQL.
Максимальный размер таблиц в MySQL 3.22 до 4 ГБ, в последующих версиях максимальный размер ограничивается максимальным размером файла используемой операционной системы.
Размер таблицы ограничен её типом. В общем случае тип MyISAM ограничен предельным размером файла в файловой системе операционной системы.
Например, в NTFS этот размер теоретически может быть до 32 эксабайт. В случае InnoDB одна таблица может храниться в нескольких файлах, представляющих единое табличное пространство. Размер последнего может достигать 64 терабайт.
В отличие от MyISAM, в InnoDB имеется значительное ограничение на количество столбцов, которое можно добавить в одну таблицу. Размер страницы памяти по умолчанию составляет 16 килобайт, из которых под данные отведено 8123 байта. Размер указателя на динамические поля составляет 20 байт.
Таким образом, в случае использования динамического формата строки (ROW_FORMAT=DYNAMIC), одна таблица может вместить максимум 409 столбцов типа blob или text [14].
Данная СУБД, как мощная бесплатная СУБД, пригодная для применения в данном проекте.
Сравнение MySQL и PostgreSQL показано в таблице 3 [13].
Таблица 3 ̶ Сравнение MySQL и PostgreSQL
| Возможность | MySQL | PostgreSQL |
| Ответственный за код | компания MySQL AB | разные разработчики |
| Сжатие данных при передаче | + | + |
| Поддержка модели ACID | +/- (InnoDB, Falcon) | + |
| Поддержка SQL команд: insert ignore / replace | + | - |
| Поддержка внешних ключей | +/- (InnoDB) | + |
| Репликации | + | + |
| Под запросы | + | + |
| Полнотекстовые индексы | + (MyISAM) | + |
| Частичное индексирование | - | + |
| Чистка после работы команд UPDATE и DELETE | не нуждается | VACUUM |
| Система привилегий | + | +/- (проще чем в MySQL) |
| Хранение таблиц в файлах | + | - |
| Хранение/обработка географических данных | +/- | + |
| Лицензирование | GNU GPL | BSD |
Как видно из вышеприведенной таблицы, обе СУБД пригодны для проекта. Поэтому основным критерием выбора СУБД становится опыт и удобство разработчика. В результате проведенного сравнения, для разработки ПО была выбрана СУБД MySQL.
5 СТРУКТУРА БАЗЫ ДАННЫХ РАЗРАБОТАННОГО ПРИЛОЖЕНИЯ
Структура базы данных разработанного приложения представлена на рисунке 5.
Создавая базу данных, нужно стремимся упорядочить информацию по различным признакам для того, чтобы потом извлекать из нее необходимые нам данные в любом сочетании. Сделать это возможно, только если данные структурированы. Структурирование - это набор соглашений о способах представления данных. Понятно, что структурировать информацию можно по-разному. В зависимости от структуры различают иерархическую, сетевую, реляционную, объектно-ориентированную и гибридную модели баз данных.
Реляционная база данных представляет собой множество взаимосвязанных таблиц, каждая из которых содержит информацию об объектах определенного вида.
Каждая строка таблицы содержит данные об одном объекте (например, автомобиле, компьютере, клиенте), а столбцы таблицы содержат различные характеристики этих объектов - атрибуты (например, номер двигателя, марка процессора, телефоны фирм или клиентов).
Для выполнения операций в базах данных применяется механизм запросов. Результатом выполнения запросов является либо отобранное по определенным критериям множество записей, либо изменения в таблицах.
Запросы к базе формируются на специально созданном для этого языке, который так и называется «язык структурированных запросов» (SQL - Structured Query Language).
Рисунок 5 ̶ Структура базы данных
В таблице goods содержатся данные о товарах. Товарами считается, как сырье, результаты промежуточной переработки древесины, конечная продукция, идущая на продажу, так и горюче-смазочные материалы, расходные материалы, оборудование, закупаемые предприятием.
Структура данной таблицы описана в таблице 4.
Таблица 4 ̶ Структура таблицы goods
| Поле таблицы | Описание поля |
| ID_good | Уникальный идентификатор товара |
| GoodName | Наименование товара |
| GoodType | Числовой идентификатор типа товара. Их 4:
|
В таблице cars содержится информация о грузоперевозящих транспортных средствах предприятия. Речь идет о всех транспортных средствах, на которых может перевозиться или храниться товар. Лесозаготовительная техника здесь не учитывается, эти данные хранятся в таблице goods с типом «Оборудование».
Структура данной таблицы описана в таблице 5.
Таблица 5 ̶ Структура таблицы cars
| Поле таблицы | Описание поля |
| ID_car | Уникальный идентификатор транспортного средства |
| CarName | Наименование транспортного средства |
В таблице locations содержатся данные о делянах, на которых ведется добыча леса. Структура данной таблицы описана в таблице 6.
Таблица 6 ̶ Структура таблицы locations
| Поле таблицы | Описание поля |
| ID_location | Уникальный идентификатор деляны |
| LocationName | Наименование деляны |
В таблице warehouses содержатся данные об объектах хранения и переработки товара. Здесь речь идет не только о верхнем и нижних складах, но и производственных участках, где происходит переработка древесины.
Структура данной таблицы описана в таблице 7.
Таблица 7 ̶ Структура таблицы warehouses
| Поле таблицы | Описание поля |
| ID_warehouse | Уникальный идентификатор объекта хранения и переработки товара |
| WarehouseName | Наименование объекта хранения и переработки товара |
| WarehouseType | Числовой идентификатор типа объекта хранения и переработки товара. Их 3: 0 – Место хранения сырья 1 – Производственный участок 2 – Склад готовой продукции |
В таблице demands содержатся заявки на закупки, которые подают мастера участков и другие уполномоченные лица. В данной таблице содержится только шапка документа «Заявка».
Структура данной таблицы описана в таблице 8.
Таблица 8 ̶ Структура таблицы demands
| Поле таблицы | Описание поля |
| ID | Уникальный идентификатор |
| DocDate | Дата документа |
| ID_warehouse | Идентификатор склада |
| DemandState | Числовой код статуса заявки. Всего их 4: 0 – На согласовании 1 – Согласовано 2 – Отклонено 3 – Выполнена |
В таблице minimals содержатся данные о минимальных запасах на складах. Размер минимальных запасов указывается для каждого склада по каждому товару. Если записей таблицы нет – остатки по этому товару не контролируются.
Структура данной таблицы описана в таблице 9.
Таблица 9 ̶ Структура таблицы minimals
| Поле таблицы | Описание поля |
| ID_doc | Уникальный идентификатор документа |
| ID_good | Идентификатор товара |
| ID_warehouse | Идентификатор склада |
| GoodAmount | Минимальное количество товара |
В таблице groups содержатся данные о бригадах. Здесь содержится просто перечень бригад, их состав хранится в других таблицах.
Структура данной таблицы описана в таблице 10.
Таблица 10 ̶ Структура таблицы groups
| Поле таблицы | Описание поля |
| ID_group | Уникальный идентификатор бригады |
| GroupName | Наименование бригады |
В таблице persons содержатся данные о работниках. Структура данной таблицы описана в таблице 11.
Таблица 11 ̶ Структура таблицы persons
| Поле таблицы | Описание поля |
| ID_person | Уникальный идентификатор сотрудника |
| FIO | ФИО сотрудника |
| Phone | Телефон и другие контактные данные сотрудника |
В таблице group_table содержатся данные о составе бригад. Структура данной таблицы описана в таблице 12.
Таблица 12 ̶ Структура таблицы group_table
| Поле таблицы | Описание поля |
| ID | Уникальный идентификатор |
| ID_group | Уникальный идентификатор бригады |
| ID_person | Уникальный идентификатор сотрудника |
В таблице workers_transfer_doc содержатся шапки документов о прикреплении бригад к делянкам.
Структура данной таблицы описана в таблице 13.
Таблица 13 ̶ Структура таблицы workers_transfer_doc
| Поле таблицы | Описание поля |
| ID_doc | Уникальный идентификатор документа |
| DocNumber | Номер документа |
| DocDate | Дата документа |
| ID_location | Идентификатор делянки |
В таблице workers_transfer_table содержатся данные табличной части документов о прикреплении бригад к делянкам. Структура данной таблицы описана в таблице 14.
Таблица 14 ̶ Структура таблицы workers_transfer_table
| Поле таблицы | Описание поля |
| ID | Уникальный идентификатор |
| ID_doc | Идентификатор документа |
| ID_group | Идентификатор бригады |
В таблице into_doc содержатся данные шапки документов о поступлении товаров. Структура данной таблицы описана в таблице 15.
Таблица 15 ̶ Структура таблицы into_doc
| Поле таблицы | Описание поля |
| ID_doc | Идентификатор документа |
| DocNumber | Номер документа |
| DocDate | Дата документа |
| ID_warehouse | Идентификатор склада |
| ID_car | Идентификатор транспортного средства |
| ID_location | Идентификатор деляны |
В таблице out_doc содержатся данные шапки документов о списании товаров. Структура данной таблицы описана в таблице 16.















