Форум программистов, компьютерный форум, киберфорум
Разработка и тестирование
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 05.07.2011
Сообщений: 85
1

Как правильно организовать структуру хранения данных

06.03.2020, 11:33. Просмотров 246. Ответов 3
Метки нет (Все метки)


Добрый день!
Прошу совета по базам данных.
есть задача логистики деталей со склада на участок и обратно.
как правильно организовать таблицу для данной задачи?
пример:
есть деталь (Дт - 100 шт.), участок (Уч), склад (Ск)
процедура такая.
1. Уч - запрашивает со Ск, чтобы привезли Дт в полном количестве.
2. Ск - привозит на Уч только Дт -50шт. (это нормально)
3. Уч принимает в работу Дт -50шт. и в какой то момент времени изготавливает Дт -20шт.
4. Ск - видит изготовленные Дт -20шт. забирает их на склад и помечает как оприходовано.
5. Уч доделывает оставшиеся и повторяет пп1-4 пока все Дт не будут выданы на участок.

Пока я склоняюсь к мысли, чтобы в таблицу завести колонки для каждого этапа.
получится типа:
1. в колонке (Request) появляется 100шт. - это запрос на склад
3. в колонке (inWork) появляется 50шт. (Request=0 т.к. запрос выполнен)
и т.д.
насколько это правильная организация?
или есть другие варианты?
предложенный вариант мне тоже мало нравится, т.к. маршрут достаточно сложный
и колонок получается много, очень легко запутаться.

P.S.
Если что-то непонятно, я с удовольствием поясню, очень нужна помощь
Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.03.2020, 11:33
Ответы с готовыми решениями:

Организовать структуру данных Heap для хранения целых чисел
Помогите пожалуйста решить задачую Заранее спасибо! В этой задаче вам необходимо организовать...

Как лучше организовать файловую структуру хранения новостей на сайте
Как лучше организовать файловую структуру хранения новостей на сайте? Параметры новости: 1....

Как правильно организовать структуру приложения EJB
Вообщем по названию темы не совсем понятно что я имею в виду, поясню... Есть home-интерфейс...

Как правильно организовать структуру папок на хостинге?
вопрос возник вот откуда: создаю личные странички для зарегистрированных пользователей, на эти...

__________________
Помогаю в написании студенческих работ здесь.
3
2 / 2 / 0
Регистрация: 20.04.2015
Сообщений: 15
09.03.2020, 08:11 2
Я бы сделал так:
Если рассматривать за объект - партию деталей, а свойства этого объекта:
Порядковый номер партии (Ключ таблицы с автоинкрементом)
Кол-во деталей в партии (Положительное целое)
Местонахождение партии (Ссылка на таблицу, в которой объекты - места, т.е. Склад, Участок)
Признак оприходованности (булево)

Запись в такой таблице будет соответствовать партии деталей.
Первоначально в таблице будет 1 запись, 50 деталей, на складе, оприходованы.
Запросом к базе определяем, сколько оприходовано и на складе, меняем место на Участок. Это частично выполнен первый заказ на 100 деталей. В работе 50 деталей.
Следующим запросом к базе создаем партию 20 деталей, которая на Участке, не оприходована.
Затем меняем на ней параметр «место», это она уехала на склад.
Потом меняем признак «оприходовано» на true.
Теперь меняем «место» на «участок».

Теперь у нас на Участке 2 объекта числятся с признаком «оприходовано» true, на 20 и 50 деталей. Значит, в работе 70 деталей.
Следующий объект создаем, ещё сколько-то деталей на участке не оприходованных.
Дальше, мне кажется, всё понятно?
0
115 / 105 / 51
Регистрация: 29.03.2016
Сообщений: 478
09.03.2020, 09:34 3
Здравствуйте. Я буду думать что Вы уже рассматривали варианты с использованием сущестующих решений для Вашей задачи, и у Вы занимаетесь этим в целях саморазвития, ибо время Ваше в итоге может быть потрачено впустую.
Начну с того что не являюсь экспертом в данной области, и дальнейшее изложение - сугубо мое мнение на то как стоит организовать структуру базы данных.
Для начала, думаю, необходимо предусмотреть некоторую гибкость, обеспечить расширяемость и учесть возможность восстановления картыины событий. Но нужно еще понять что происходит с деталью на участке. Наверняка деталь преобретает там новые качества, что делает ее уже совершенно другой деталью, или же происходит ее износ и, возможно, в какой-то момент она будет списана, забракована или выведена из эксплуатации. Так же, желательно, определить всех лиц производящих перемещение детали и ее эксплуатацию. Чем больше будет определено и учтено этапов и звеньев на раннем этапе проектирования Вашей системы, тем меньше потом будет проблем с поддержкой системы и ее расширением.

На вскидку могу предложить следующую модель:
Деталь (Идентификатор, Наименование, ИдентификаторСостояния, [Описание, т.е. какие-нибудь характеристики детали, напр. вес, матириал изготовления, габариты и т.д.], ДатаВремяСозданияЗаписи, ДатаВремяУдаленияЗаписи)
СостояниеДетали (Идентификатор, [НаименованиеСостояния, например: активно, брак, в пути, потерян, списан, получен, выдан.. В общем нужно предусмотреть варианты], ДатаВремяСозданияЗаписи, ДатаВремяУдаленияЗаписи)
СкладХранение (ИдентификаторРядаМеста, ИдентификаторДетали, Количество, ДатаВремя, ИдентификаторСостояния, ИдентификаторКладовщика, ДатаВремяСозданияЗаписи, ДатаВремяУдаленияЗаписи)
РядМесто (Идентификатор, [СотояниеМеста, например: свободно, занято, влезет ещё, ликвидировано], Описание, ДатаВремяСозданияЗаписи, ДатаВремяУдаленияЗаписи)
Кладовщик (Идентификатор, Фамилия, Имя, Отчество, ДатаВремяСозданияЗаписи, ДатаВремяУдаленияЗаписи)
СкладУбытие (Идентификатор, ИдентификаторКладовщика, ИдентификаторПеревозчика, [ИдентификаторТранспортногоСредства], ИдентификаторДетали, ИдентификаторСостояния, ДатаВремяСозданияЗаписи, ДатаВремяУдаленияЗаписи)
СкладПрибытие (Идентификатор, ИдентификаторКладовщика, ИдентификаторПеревозчика, [ИдентификаторТранспортногоСредства], ИдентификаторДетали, ИдентификаторСостояния, ДатаВремяСозданияЗаписи, ДатаВремяУдаленияЗаписи)

Идея должна быть понятна из приведенного примера. Создаем для каждого класса сущностей свою таблицу. При изменении состояния сущности не удаляем запись физически, а просто ставим отметку в поле ДатаВремяУдаленияЗаписи и можно также добавить колонку ИдентификаторПричиныУдаления, что бы было проще восстановить картину событий, когда это понадобится.

Также для большей гибкости, например, в случае создания второго склада, можно вместо таблиц СкладХранение и Участок создать таблицы Объекты (Идентификаатор, НаименованиеОбъекта, [даты создания и удаления]) и ОбъектХранение (ИдентификааторОбъекта, ИдентификаторНахождения, ИдентификаторДетали, Количество, ДатаВремя, ИдентификаторСостояния, ИдентификаторОтветственногоЛица)

Также при организации базы возможно рпидется предусмотреть хранимые процедуры, триггеры для того чтобы обеспечить согласованность измениния записей в таблицах базы. Конечно этим может заниматься и приложение, которое будет использовать базу даннных.
Все зависит только от Вас
0
Модератор
2767 / 1923 / 418
Регистрация: 26.03.2015
Сообщений: 7,142
12.03.2020, 20:06 4
Цитата Сообщение от sonmax Посмотреть сообщение
или есть другие варианты?
Заведите таблицу для каждого типа первичного документа.
Так же, для ускорения работы можно завести таблицы-агрегаты (например, текущее количество деталей на объекте).
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.03.2020, 20:06

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Как организовать хранения данных о таблицах
Здравствуйте, мне надо создать структуру базы данных которая хранит информацию о таблицах и полях...

Как организовать массив для хранения данных?
не судите только начал изучать с++ , правильно ли так сохранять все данные в массив? const...

Есть над чем подумать или как правильно организовать структуру БД
Кому по зубам такая задачка? Часть первая: Например у нас есть сущность "Товары". Данные о...

Как правильно организовать структуру отправки заявок со страницы через форму
Здравствуйте. Организовал средствами html и css три таба. По нажатию на каждый всплывает форма с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.