|
0 / 0 / 0
Регистрация: 05.07.2011
Сообщений: 204
|
|
Как правильно организовать структуру хранения данных06.03.2020, 11:33. Показов 739. Ответов 3
Метки нет (Все метки)
Добрый день!
Прошу совета по базам данных. есть задача логистики деталей со склада на участок и обратно. как правильно организовать таблицу для данной задачи? пример: есть деталь (Дт - 100 шт.), участок (Уч), склад (Ск) процедура такая. 1. Уч - запрашивает со Ск, чтобы привезли Дт в полном количестве. 2. Ск - привозит на Уч только Дт -50шт. (это нормально) 3. Уч принимает в работу Дт -50шт. и в какой то момент времени изготавливает Дт -20шт. 4. Ск - видит изготовленные Дт -20шт. забирает их на склад и помечает как оприходовано. 5. Уч доделывает оставшиеся и повторяет пп1-4 пока все Дт не будут выданы на участок. Пока я склоняюсь к мысли, чтобы в таблицу завести колонки для каждого этапа. получится типа: 1. в колонке (Request) появляется 100шт. - это запрос на склад 3. в колонке (inWork) появляется 50шт. (Request=0 т.к. запрос выполнен) и т.д. насколько это правильная организация? или есть другие варианты? предложенный вариант мне тоже мало нравится, т.к. маршрут достаточно сложный и колонок получается много, очень легко запутаться. P.S. Если что-то непонятно, я с удовольствием поясню, очень нужна помощь Спасибо.
0
|
|
| 06.03.2020, 11:33 | |
|
Ответы с готовыми решениями:
3
Как лучше организовать файловую структуру хранения новостей на сайте Как правильно организовать структуру приложения EJB |
|
2 / 2 / 0
Регистрация: 20.04.2015
Сообщений: 15
|
|
| 09.03.2020, 08:11 | |
|
Я бы сделал так:
Если рассматривать за объект - партию деталей, а свойства этого объекта: Порядковый номер партии (Ключ таблицы с автоинкрементом) Кол-во деталей в партии (Положительное целое) Местонахождение партии (Ссылка на таблицу, в которой объекты - места, т.е. Склад, Участок) Признак оприходованности (булево) Запись в такой таблице будет соответствовать партии деталей. Первоначально в таблице будет 1 запись, 50 деталей, на складе, оприходованы. Запросом к базе определяем, сколько оприходовано и на складе, меняем место на Участок. Это частично выполнен первый заказ на 100 деталей. В работе 50 деталей. Следующим запросом к базе создаем партию 20 деталей, которая на Участке, не оприходована. Затем меняем на ней параметр «место», это она уехала на склад. Потом меняем признак «оприходовано» на true. Теперь меняем «место» на «участок». Теперь у нас на Участке 2 объекта числятся с признаком «оприходовано» true, на 20 и 50 деталей. Значит, в работе 70 деталей. Следующий объект создаем, ещё сколько-то деталей на участке не оприходованных. Дальше, мне кажется, всё понятно?
0
|
|
|
116 / 106 / 51
Регистрация: 29.03.2016
Сообщений: 480
|
|
| 09.03.2020, 09:34 | |
|
Здравствуйте. Я буду думать что Вы уже рассматривали варианты с использованием сущестующих решений для Вашей задачи, и у Вы занимаетесь этим в целях саморазвития, ибо время Ваше в итоге может быть потрачено впустую.
Начну с того что не являюсь экспертом в данной области, и дальнейшее изложение - сугубо мое мнение на то как стоит организовать структуру базы данных. Для начала, думаю, необходимо предусмотреть некоторую гибкость, обеспечить расширяемость и учесть возможность восстановления картыины событий. Но нужно еще понять что происходит с деталью на участке. Наверняка деталь преобретает там новые качества, что делает ее уже совершенно другой деталью, или же происходит ее износ и, возможно, в какой-то момент она будет списана, забракована или выведена из эксплуатации. Так же, желательно, определить всех лиц производящих перемещение детали и ее эксплуатацию. Чем больше будет определено и учтено этапов и звеньев на раннем этапе проектирования Вашей системы, тем меньше потом будет проблем с поддержкой системы и ее расширением. На вскидку могу предложить следующую модель: Деталь (Идентификатор, Наименование, ИдентификаторСостояния, [Описание, т.е. какие-нибудь характеристики детали, напр. вес, матириал изготовления, габариты и т.д.], ДатаВремяСозданияЗаписи, ДатаВремяУдаленияЗаписи) СостояниеДетали (Идентификатор, [НаименованиеСостояния, например: активно, брак, в пути, потерян, списан, получен, выдан.. В общем нужно предусмотреть варианты], ДатаВремяСозданияЗаписи, ДатаВремяУдаленияЗаписи) СкладХранение (ИдентификаторРядаМеста, ИдентификаторДетали, Количество, ДатаВремя, ИдентификаторСостояния, ИдентификаторКладовщика, ДатаВремяСозданияЗаписи, ДатаВремяУдаленияЗаписи) РядМесто (Идентификатор, [СотояниеМеста, например: свободно, занято, влезет ещё, ликвидировано], Описание, ДатаВремяСозданияЗаписи, ДатаВремяУдаленияЗаписи) Кладовщик (Идентификатор, Фамилия, Имя, Отчество, ДатаВремяСозданияЗаписи, ДатаВремяУдаленияЗаписи) СкладУбытие (Идентификатор, ИдентификаторКладовщика, ИдентификаторПеревозчика, [ИдентификаторТранспортногоСредства], ИдентификаторДетали, ИдентификаторСостояния, ДатаВремяСозданияЗаписи, ДатаВремяУдаленияЗаписи) СкладПрибытие (Идентификатор, ИдентификаторКладовщика, ИдентификаторПеревозчика, [ИдентификаторТранспортногоСредства], ИдентификаторДетали, ИдентификаторСостояния, ДатаВремяСозданияЗаписи, ДатаВремяУдаленияЗаписи) Идея должна быть понятна из приведенного примера. Создаем для каждого класса сущностей свою таблицу. При изменении состояния сущности не удаляем запись физически, а просто ставим отметку в поле ДатаВремяУдаленияЗаписи и можно также добавить колонку ИдентификаторПричиныУдаления, что бы было проще восстановить картину событий, когда это понадобится. Также для большей гибкости, например, в случае создания второго склада, можно вместо таблиц СкладХранение и Участок создать таблицы Объекты (Идентификаатор, НаименованиеОбъекта, [даты создания и удаления]) и ОбъектХранение (ИдентификааторОбъекта, ИдентификаторНахождения, ИдентификаторДетали, Количество, ДатаВремя, ИдентификаторСостояния, ИдентификаторОтветственногоЛица) Также при организации базы возможно рпидется предусмотреть хранимые процедуры, триггеры для того чтобы обеспечить согласованность измениния записей в таблицах базы. Конечно этим может заниматься и приложение, которое будет использовать базу даннных. Все зависит только от Вас
0
|
|
|
Модератор
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
|
||
| 12.03.2020, 20:06 | ||
|
Так же, для ускорения работы можно завести таблицы-агрегаты (например, текущее количество деталей на объекте).
0
|
||
| 12.03.2020, 20:06 | |
|
Помогаю со студенческими работами здесь
4
Как правильно организовать структуру папок на хостинге? Как организовать хранения данных о таблицах Как организовать массив для хранения данных?
Как правильно организовать структуру отправки заявок со страницы через форму Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc
О Господи, Вечный, Ты . . .
Я помоги, Бесконечный. . .
Я прошу Ты. . .
Я погибаю, спаси. . .
Я прошу Тебя Вечный. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|