Я хочу сделать систему реляционной базы данных для локального компьютерного оборудования некоммерческой. Есть две взаимосвязанные функции, которые я хочу выяснить, как реализовать. Во-первых, нам нужно управлять запасами деталей, а во-вторых, нам нужно отслеживать пожертвования компьютерных систем по мере их поступления к нам, а также по мере того, как мы их отдаем.
Во-первых, у нас есть простой перечень деталей. Нам не нужно отслеживать отдельные части (в любом случае мы не можем), поэтому я хочу смоделировать количество. Моя мысль состоит в том, чтобы иметь разные «контейнеры» деталей, которые имеют простое количество. Поэтому, если мы переместим видеокарту из ее «инвентарной» корзины в «корзину», я хочу, чтобы -1 к инвентаризации видеокарты и +1 к утилизации видеокарты. Корзины могут быть более четко определены по мере необходимости, например, pci-video-cards, agp-video-cards и т. д. Или, если мы подсчитываем наш инвентарь, нам может потребоваться сделать -3 от инвентаря и +3 к ' усадка».
Смысл этого в том, чтобы в любой момент знать, сколько, скажем, видеокарт у нас есть, сколько планок оперативной памяти и т. д. Два аспекта корзины — это какая часть в ней находится (на любом уровне специфичности, например, «old-misc-card» или «32MB-3.3v-agp-video») и назначение корзины, например «пожертвование», «инвентарь», «переработка», «хранение», « усадка» и др.
Кроме того, мы хотели бы видеть тенденции приливов и отливов деталей и исторические данные, поэтому нам нужно выполнять запросы инвентаризации в любое время.
Итак, как мне спроектировать таблицы, чтобы справиться с этим? Я думаю, это будет что-то вроде бухгалтерской книги с двойной записью. У меня может быть одна таблица под названием «BinTransactions», где будут from_bin, to_bin и сумма. Сумма будет положительным целым числом, и если я хочу написать запрос о том, сколько будет изъято из инвентаря, я сделаю его отрицательным. Что-то вроде «ВЫБЕРИТЕ СУММУ (сумма) * -1 ИЗ BinTransactions, ГДЕ from_bin = «инвентарь» И time_period = ...»?
Вторая часть — это сами компьютерные системы. Они поступают в качестве пожертвований в любом состоянии, в котором они находятся. Части могут быть извлечены из них и помещены в инвентарь или переработаны; части могут быть извлечены из инвентаря и помещены в компьютеры. Думаю, я мог бы сделать компьютер
Наконец-то компьютер выходит из нашей системы в качестве гранта, но эта структура как бы имеет один уровень вложенности. Это набор компьютерных частей в компьютере, но есть еще монитор, клавиатура, мышь, возможно, динамики. А большим грантом может быть несколько систем, в том числе и с сетевым оборудованием. Должна ли «вкладываться» логическая иерархия групп (детали в компьютеры, компьютеры в гранты), или можно было бы просто иметь каждое пожертвование только одной большой группой частей? Если бы это была одна большая группа деталей, не обязательно было бы знать, какие части идут с каким компьютером, если бы мы получили один компьютер обратно по гранту. Также мы хотели бы узнать из отчетов "34 полные системы были переданы в дар в этом квартале..."