Комментарии / предложения по проектированию базы данных - управление складом - PullRequest
1 голос
/ 06 февраля 2012

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

Позвольте мне показать вам, что я сделал такдалеко ... Ссылка, поскольку я все еще новичок здесь

Сначала вам нужно создать Склад, затем вы можете создать Местоположение в этом Складе.

Вы также можете создатьItemType (ItemGroup), затем вы можете создать Item для этой группы.

После того, как у вас есть Item и Location, вы можете добавить Stock, таблица Stock имеет составной ключ, поэтому дубликаты не могут быть добавлены.Я также добавил ограничение, чтобы вы не могли ввести Предмет неправильного ItemType, то же самое ограничение для Складов / Местоположения.

Затем мне нужно вести учет каждой части запаса, SerialisedItems и NonSerialisedItems.Пример: если не сериализованный запас добавляется с количеством 10, то в настоящее время я создаю 10 строк в таблице NonSerialisedItems (1), для которых установлено значение «в наличии» с соответствующей информацией о запасах.Если они изменят количество запаса, то строки будут удалены или добавлены (2).

Я мог бы также сделать что-то с таблицей Ван, которая похожа на Склад, но думаю, что мне придется изменить таблицу Склад начто-то вроде хранилища, которое ссылается на две таблицы, Warehouse и Van?

(1) В настоящее время на моей странице есть TransactionScope, добавляющий x строк, это лучший способ справиться с этим?(2) Количество Количество в таблице запасов должно было бы подсчитать количество строк для этого элемента, а затем обновлять количество каждый раз, когда склад добавляется или удаляется, какие-либо проблемы здесь? - Оба вопроса исправлены - толькосоздавать строки для сериализованных элементов.

Есть ли другие проблемы?

Ну, это то, что я сделал, если это хорошо или ужасно, дайте мне знать.Кроме того, если есть какие-либо подводные камни, которые я должен искать, это также было бы полезно знать.

Спасибо

[РЕДАКТИРОВАТЬ] Благодаря Невиллу К. Я сделал несколькоизменения ...

Ссылка на новую и улучшенную базу данных

Кажется, это имеет больше смысла!Кажется, я долго смотрел на это вчера!

1 Ответ

2 голосов
/ 07 февраля 2012

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

Во-вторых, ваш дизайн не очень нормализован и требует много дублирования.Не уверен, в чем причина, но обычно таблица «сток» будет иметь ссылку на «item», а не «itemType» - тот факт, что элемент принадлежит типу элемента, уже зафиксирован в отношениях между элементом и элементомвведите, и вам не нужно дублировать его.То же самое касается местоположения и склада.

Ключевое изменение, которое я бы предложил, - это концепция транзакции с акциями, а не отдельная таблица «акций».

Что-то вроде

TransactionID      date    itemID  locationID  quantity 
------------------------------------------------------------------
1                1/1/12        1            1       10
2                1/2/12        1            1       -1
3                1/3/12        1            1       20

Чтобы узнать текущий запас для элемента, вы суммируете (количество) по группам;чтобы найти текущий запас для товара с разбивкой по местоположению, вы складываете (количество) по группам по товару, местоположению.

На первое января было 10 товаров на складе;на втором был удален 1 предмет, оставив запас 9;3-го числа на складе появилось 20 новых товаров с балансом 29.

Этот дизайн позволяет отслеживать изменения во времени, что является распространенным требованием;он также предоставляет контрольный журнал, создавая метаданные транзакции (operatorID, номер счета и т. д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...