- •Аннотация
- •Содержание
- •1 Аналитический раздел
- •1.1 Анализ предметной области
- •1.2 Организационно-производственная структура
- •1.3 Анализ существующих программных продуктов
- •1.4 Выбор математического аппарата
- •1.5 Постановка задачи
- •1.5.2 Требования к программному средству и техническому оборудованию
- •2 Проектный раздел
- •2.1 Инструментальные средства
- •2.1.1 Выбор языка программирования
- •1.5.1 Назначение программного продукта
- •2.1.2 Технология клиент/сервер. Принцип работы Java Web-приложения
- •2.1.3 Архитектура платформы Tandem
- •2.1.4 Выбор субд
- •2.1.5 Структурированный язык запросов sql
- •2.2 Разработка базы данных проектируемого программного средства
- •2.2.1 Формализованное описание предметной области
- •2.2.2 Разработка инфологической модели бд
- •2.2.3 Разработка даталогической модели бд
- •2.2.4 Нормализация отношений
- •2.2.5 Физическая модель бд
- •2.2.5.1 Техническое описание объектов бд
- •2.2.5.2 Реализация ограничений целостности бд
- •2.3 Разработка программного средства автоматизации обслуживания заявок
- •3 Технико-эксплуатационный раздел
- •3.1 Руководство для пользователей
- •3.2 Руководство для серверной части
- •3.3 Руководство администратора
- •3.4 Руководство программиста
- •4 Обоснование экономической эффективности проекта
- •4.1 Расчет трудоемкости разработки программного продукта
- •4.2 Расчет себестоимости программного продукта
- •4.3 Расчет экономического эффекта от внедрения программного продукта
- •5 Безопасность труда
- •5.1 Анализ условий труда
- •5.2 Расчет искусственного освещения
- •5.3 Возможные чрезвычайные ситуации
- •5.3.1 Расчет зоны заражения
- •5.3.2 Расчет времени эвакуации
- •Заключение
- •Список использованных источников
- •Приложение а
- •Приложение б
2.1.4 Выбор субд
В качестве основных претендентов рассмотрим СУБД Microsoft SQL Server 2008, MySQL 5.1, PostgreSQL 8.4. Все они имеют широкий функционал, высокую скорость работы, поддержку основных типов данных, поддерживают различные ОС .
В таблице 2.1 производится сравнение выбранных СУБД.
Таблица 2.1 – «Сравнение СУБД»
Показатели |
Microsoft SQL Server 2008 |
MySQL 5.1 |
PostgreSQL 8.4 |
1 |
2 |
3 |
4 |
Поддерживаемые операционные системы |
Windows Desktop/Server |
Windows Desktop/Server, Linux, Unix, Mac |
Windows1 Desktop/S22erver, Linux, Unix, Mac |
Условия лицензирования |
Коммерческий продукт с закрытым исходным кодом |
Коммерческая лицензия и GNU GPL |
Лицензия BSD Open Source |
Процесс установки и поддержки |
Довольно длительное время уходит на установку приложения и всех его зависимостей, однако множество средств помощи помогают в процессе. Платные версии отсылают электронные сообщения, если что-то «не так» в процессе работы |
Самый простой процесс установки, так как существует огромное количество готовых пакетов для разных операционных систем, установка из которых сводит трудности и проблемы к нулю |
Для операционных систем семейств Linux/Unix установка идентична установке MySQL. Однако во время установки под Windows иногда возникают проблемы с инициализацией базы данных |
Продолжение таблицы 2.1
1 |
2 |
3 |
4 |
Наличие драйверов ODBC, JDBC, ADO.NET |
Да |
Да |
Да |
Наличие View, доступных только для чтения |
Да |
Да |
Да |
Наличие программных продуктов с открытым исходным кодом, основанных на этой СУБД |
Несколько |
Много |
Несколько, но их число растет, особенно в проектах на PHP |
Использование в коммерческих проектах |
Среднее (продукт новый) |
Среднее |
Среднее (почти как у MySQL) |
Обновляемые View |
Да, даже для двухтабличных view |
Да, для однотабличных view и некоторых «простых» двухтабличных |
Да, но не в автоматическом режиме. Надо писать правила обновления |
Наличие графического ПО для конструирования и оптимизации запросов |
Да (SQL Management Studio и Studio Express) |
Нет |
Да (PgAdminIII) |
Наличие Computed Columns |
Да, но все равно чаще используются view |
Нет |
Нет — в PostgreSQL это функциональность излишняя |
Поддержка функциональных индексов |
Нет, но можно обойтись Computed Columns |
Нет |
Да |
Продолжение таблицы 2.1
1 |
2 |
3 |
4 |
Поддержка частичных индексов |
Да (называются “фильтрованные индексы”) |
Нет |
Да |
Поддержка ACID-требований к транзакциям |
Да |
Да, при использовании некоторых движков хранения данных |
Да |
Каскадное обновление/удаление внешних ключей |
Да |
Да, при использовании некоторых движков хранения данных |
Да |
Внесение данных в несколько строк |
Да |
Да |
Да |
Поддержка UPSERT-логики |
Да (через MERGE UPDATE) |
Да (через INSERT IGNORE, REPLACE INSERT ON DUPLICATE UPDATE) |
нет |
Поддержка репликации |
Да, встроенная и разных типов |
Да, включая mater-master репликацию |
Да, но с помощью сторонних продуктов с открытым исходным кодом |
Возможность писать хранимые функции на разных языках программирования |
Да, теоретически на любом языке, поддерживающим CLR, например VisualBasic.NET, C#, IronPython |
Нет (кроме C и Pl/SQL) |
Да, наиболее полная поддержка из всех рассматриваемых |
Возможность создавать пользовательские агрегированные функции |
Да — любой .NET язык, кроме TRANSACT SQL |
Да, только на С |
Да — на PL language и встроенных C, SQL, PLPgSQL |
Продолжение таблицы 2.1
1 |
2 |
3 |
4 |
Поддержка триггеров |
Да |
Да |
Да |
Партицирование таблиц |
Да (в Enterprise версии) |
Да |
Да |
Возможность создавать функции, возвращающие таблицу или набор таблиц, которые можно использовать в секции FROM |
Да |
Нет |
Да |
Поддержка хранимых процедур |
Да |
Да |
Да (с помощью CREATE FUNCTION) |
Поддержка динамического SQL в функциях |
Нет |
Нет |
Да |
Бесплатное ПО для графического управления БД |
Да (SQL Management Studio/Express) |
Нет |
Да (PgAdmin III) |
Наличие встроенного планировщика (не CronTab) |
Да (SQL Agent не для Express версии) |
Да (только для SQL-запросов) |
Да (PgAgent) |
Возможность доступа к таблице из другой базы данных, находящейся на том же хосте |
Да |
Да |
Да |
Чувствительность к регистру |
По умолчанию — не чувствительна |
Нет |
Да |
Продолжение таблицы 2.1
1 |
2 |
3 |
4 |
Поддержка даты и времени |
Да |
Да (но без временной зоны) |
Да |
Аутентификация |
Средствами БД и ActiveDirectory |
Средствами БД |
Много разных методов, включающих предыдущие |
Разграничение доступа к столбцам |
Да |
Да |
Да |
Поддержка рекурсивных запросов |
Да |
Нет |
Да |
Поддержка CROSS APPLY |
Да |
Нет |
Нет, но можно обойтись возвращающей функции в Select |
Поддержка LIMIT .. OFFSET |
Нет |
Да |
Да |
Поддержка связанных подзапросов |
Да |
Да |
Да |
Производительность планировщика запросов для сложных запросов |
Средняя (умеет параллельные запросы «из коробки») |
Плохая |
Очень хорошая (GridSQL) |
Наличие текстового процессора |
Да |
Да |
Да |
Возможность откатить CREATE, ALTER |
Да |
Нет |
Да |
На основе данных, представленных в таблице 2.1, можно сделать вывод что для реализации данной задачи подходят все три СУБД, но так как PostgreSQL является бесплатно распространяемой, имеющей встроенные средства обеспечивающие надёжность хранимых данных и широкие возможности оптимизации запросов, то она была выбрана в качестве СУБД для разрабатываемого программного средства по автоматизации обслуживания заявок от пользователей.
