Техническое задание

Новая версия программы Склад.

Техническое задание

Сообщение alex » Ср янв 28, 2009 12:33

Изменить размер шрифта ↓ВернутьИзменить размер шрифта ↑Предлагаю начать обсуждение ТЗ для нового Склада.

Предназначение проекта я вижу так: автоматизация процесса производства в небольшой фирме. Производство может быть любым. Не обязательно связанным с электроникой. Какие функции должен выполнять склад:
  • учет наличия "единиц хранения" (не могу подобрать правильное слово),
  • приход на склад,
  • списание со склада,
  • процесс комплектации,
  • контактная информация о партнерах фирмы (поставщики, заказчики ...).

Учет "единиц хранения" подразумевает не только учет деталей, но и более общих конструкций. Если каждую позицию на складе рассматривать как составную, то процесс комплектации можно сделать универсальным. Конечно, полностью от конкретных функций отказаться невозможно. Например, импорт комплектации на печатную плату из *cad системы. Считаю, что нужно просто дать возможность максимально просто добавлять в систему такие вещи.

Наибольшую трудность представляет то, как сделать универсальной структуру БД. Хотелось бы как-то обобщить большое количество конкретных требований в простую структуру. Пока я никак не могу придумать эффективный принцип построения БД.

По результатам данного обсуждения я сделаю страничку с ТЗ на нашем DokuWiki.
alex
Пользователь
 
Сообщения: 33
Зарегистрирован: Вс янв 11, 2009 2:26

Сообщение alex » Вт фев 03, 2009 17:31

Изменить размер шрифта ↓ВернутьИзменить размер шрифта ↑Я вижу три подхода к построению структуры БД.

Подробная структура, жестко связанная с предметной областью

Предназначение каждого поля каждой таблицы жестко связано с определенным понятием из предметной области. Вся конкретика подробно описана в документации в терминах предметной области. Для добавления новых возможностей нужно создавать новые таблицы или поля в существующих.

Так построено большинство проектов, которые я видел. Форумы, системы отслеживания ошибок, интернет-магазины и.т.д. Главная особенность -- большое количество таблиц с полями, отвечающими конкретным параметрам.

Преимущества: Простота разработки структуры БД, в случае если подробно поставлена задача в терминах предметной области.
Недостатки: Невозможно внести существенные изменения в функционирование проекта без изменения структуры БД.

Вынесение некоторых функций администрирования БД в пространство пользователя

Структура БД не фиксируется разработчиками проекта, может изменятся пользователем, обладающим права администратора. Существуют некоторые фиксированные таблицы, отвечающие за внутреннюю структуру, как бы ядро проекта. Также есть пользовательские таблицы, данные в которых отвечают за предметную область. Такие таблицы администратор может создавать и изменять сам. Также администратор создает взаимосвязи между этими таблицами.

Так построены системы типа MS Access и даже на основе MS Excel можно написать свою БД. Пользователь сам может заводить нужные таблицы, делать формы и писать алгоритмы.

Преимущества: Нет привязки к предметной области.
Недостатки: Разработчику проекта нужно выносить функции по администрированию БД (создание, изменение таблиц и полей) в интерфейс пользователя.

Использование структуры с произвольными полями

Структура БД фиксируется разработчиком, но в ней присутствует механизм, позволяющий хранить произвольные пользовательские данные в фиксированных таблицах. Например, можно перейти от понятия таблиц со строками и фиксированными полями к понятию ключ -> значение. Тогда можно завести одну текстовую таблицу вида:

Код: Выделить всё
Склад радиокомпонентов :: Резистор :: R0805 100 :: Номинал  -> 100 Ом
Склад радиокомпонентов :: Резистор :: R0805 100 :: Место    -> 123 65
Склад радиокомпонентов :: Резистор :: R0805 100 :: Остаток  -> 550
Склад радиокомпонентов :: Резистор :: R0805 100 :: Закупки :: 1 :: Поставщик   -> Компел
Склад радиокомпонентов :: Резистор :: R0805 100 :: Закупки :: 1 :: Количество  -> 500
Склад радиокомпонентов :: Резистор :: R0805 100 :: Закупки :: 1 :: Цена        -> 1.52
Склад радиокомпонентов :: Резистор :: R0805 100 :: Закупки :: 2 :: Поставщик   -> Компел
Склад радиокомпонентов :: Резистор :: R0805 100 :: Закупки :: 2 :: Количество  -> 750
Склад радиокомпонентов :: Резистор :: R0805 100 :: Закупки :: 2 :: Цена        -> 1.32
Склад радиокомпонентов :: Резистор :: R0805 100 :: Расход :: 1 :: Проект       -> №1254
Склад радиокомпонентов :: Резистор :: R0805 100 :: Расход :: 1 :: Количество   -> 50
Склад радиокомпонентов :: Резистор :: R0805 100 :: Расход :: 2 :: Проект       -> №320
Склад радиокомпонентов :: Резистор :: R0805 100 :: Расход :: 2 :: Количество   -> 25
Склад радиокомпонентов :: Резистор :: R0805 100 :: Расход :: 3 :: Проект       -> №544
Склад радиокомпонентов :: Резистор :: R0805 100 :: Расход :: 3 :: Количество   -> 100


Получаем древовидную структуру абсолютно произвольной конфигурации.

Решение может быть не такое прямолинейное, а более оптимальное. В любом случае, характерной особенностью такого решения является то, что пользователь может сделать абсолютно любое хранилище произвольных данных.

Преимущества: Возможна любая структура пользовательских данных.
Недостатки: Неизбежная избыточность количества сохраненных данных.

* * *

Какой подход выбрать? Возможно ли постоить проект по первому подходу?
alex
Пользователь
 
Сообщения: 33
Зарегистрирован: Вс янв 11, 2009 2:26

Сообщение Сергей » Ср фев 04, 2009 10:43

Изменить размер шрифта ↓ВернутьИзменить размер шрифта ↑
alex писал(а):Какой подход выбрать? Возможно ли постоить проект по первому подходу?


Я так понимаю, что первый подход подразумевает уже готовую базу данных (структуру), то, что есть сейчас (в версии 1.0). Если так, то это наверное наилучший способ, т.к. редактирование таблиц производится по некоторым шаблонам (хорошо для тех, кто не сильно разбирается в структуре БД). Посути второй подход - это расширенный первый.
Сергей
Пользователь
 
Сообщения: 5
Зарегистрирован: Ср янв 28, 2009 10:02

Сообщение skal » Пт янв 15, 2010 8:41

Изменить размер шрифта ↓ВернутьИзменить размер шрифта ↑Добрый день!
Очень заинтересовал проект "склад".
Не совсем понравился принцип создания спецификации. В идеале сделать создание спецификации отдельно для конкретного изделия, а
комплектование по выбранной спецификации на определенное количество.
Сейчас это выглядит так:(пример) раз в неделю я делаю одинаковые платы - 10 шт, т.е.
мне нужно создавать раз в неделю спецификацию на 10 шт?
skal
Пользователь
 
Сообщения: 1
Зарегистрирован: Пт янв 15, 2010 8:33


Вернуться в Склад 2.0

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1