库存数据库的最佳结构

Sai*_*han 13 database structure

我想为我的库存创建一个小型数据库,但我在挑选结构时遇到了一些问题.库存将在每天结束时每天更新.

我面临的问题如下.

我有一张桌子供我的产品使用

id, name, price, quantity.
Run Code Online (Sandbox Code Playgroud)

现在我有另一张桌子供我销售,但有我的问题.我需要什么样的领域.在一天结束时,我想存储这样的记录:

20       product_x       $ 5,00         $ 100,-
20       product_y       $ 5,00         $ 100,-
20       product_z       $ 5,00         $ 100,-
20       product_a       $ 5,00         $ 100,-
-------------------------------------------------
                                        $ 400,-
Run Code Online (Sandbox Code Playgroud)

那么我该如何在销售记录中对此进行建模.我是否只使用产品ID的逗号分隔创建连接记录.

或者是否有另一种方式以正确的方式对此进行建模.

Waj*_*ghe 42

这是一个支持许多方面的模型,

  1. 支持站点,位置和仓库等.
  2. 支持分类和分组
  3. 支持通用产品(例如"表时钟"和特定产品"Citizen C123多闹钟")
  4. 还支持品牌变体(由各个制造商提供)
  5. 有CSM(颜色/尺寸/型号支持)Ex.Bata Sandles(彩色45英寸蓝色)
  6. 系列产品实例(如电视,冰箱等)
  7. 批量控制/批量控制与序列号.
  8. 包大小/ UOM和UOM转换
  9. 制造商和品牌以及供应商
  10. 还包括示例事务表(采购订单)
  11. 还有许多其他交易类型,例如问题,转移,调整等.

希望这会有所帮助.如果您需要有关每张桌子的更多信息,请与我们联系.

干杯...!!!

Wajira Weerasinghe.

网站

  • ID
  • site_code
  • SITE_NAME

仓库

  • ID
  • SITE_ID
  • warehouse_code
  • warehouse_name

物品类别

  • ID
  • category_code
  • 分类名称

物品组

  • ID
  • group_code
  • 团队名字

通用产品

  • ID
  • 通用名

产品

  • ID
  • 产品代码
  • CATEGORY_ID
  • GROUP_ID
  • brand_id
  • generic_id
  • MODEL_ID/PART_ID
  • 产品名称
  • 产品描述
  • product_price(当前汇率)
  • has_instances(Y/N)
  • has_lots(y/n)
  • has_attributes
  • default_uom
  • 包装尺寸
  • AVERAGE_COST
  • single_unit_product_code(用于包)
  • dimension_group(指向维度)
  • lot_information
  • warranty_terms(一般不具体)
  • 活跃
  • 删除

产品属性类型(颜色/大小等)

  • ID
  • ATTRIBUTE_NAME

product_attribute

  • ID
  • PRODUCT_ID
  • attribute_id

产品属性值(此产品 - >红色)

  • ID
  • product_attribute_id

product_instance

  • ID
  • PRODUCT_ID
  • instance_name(由制造商提供)
  • 序列号
  • brand_id(这个品牌)
  • stock_id(指向qih,位置等的股票记录)
  • lot_information(lot_id)
  • warranty_terms
  • 产品属性值id(如果适用)

产品很多

  • ID
  • lot_code/batch_code
  • date_manufactured
  • date_expiry
  • 产品属性值id(如果适用)

  • ID
  • MANUFACTURER_ID
  • brand_code
  • 品牌

品牌制造商

  • ID
  • 生产商名称

股票

  • ID
  • PRODUCT_ID
  • warehouse_id,zone_id,level_id,rack_id等
  • 手中的数量
  • 产品属性值id(如果适用)[我们有4个红色项目等]

产品价格记录

  • PRODUCT_ID
  • 从日期
  • PRODUCT_PRICE

采购订单表头

  • ID
  • supplier_id
  • 购买日期
  • 总金额

采购订单行

  • ID
  • po_id
  • PRODUCT_ID
  • 单价
  • 数量

供应商

  • ID
  • 供应商代码
  • 供应商名称
  • supplier_type

product_uom

  • ID
  • uom_name

product_uom_conversion

  • ID
  • from_uom_id
  • to_uom_id
  • conversion_rule


Tom*_*son 9

我有一个每天每件商品的表 - 存储日期,商品ID,销售数量和销售价格(即使它也在产品表中存储 - 如果更改,您需要你在保存时实际售出的价值).您可以在查询中计算每个项目日的总计和每天的总计.

表:

create table product (
  id integer primary key,
  name varchar(100) not null,
  price decimal(6,2) not null,
  inventory integer not null
);

create table sale (
  saledate date not null,
  product_id integer not null references product,
  quantity integer not null,
  price decimal(6,2) not null,
  primary key (saledate, product_id)
);
Run Code Online (Sandbox Code Playgroud)

报告一天:

select s.product_id, p.name, s.quantity, s.price, (s.quantity * s.price) as total
from product p, sale s
where p.id = s.product_id
and s.saledate = date '2010-12-5';
Run Code Online (Sandbox Code Playgroud)

报告所有日子:

select saledate, sum(quantity * price) as total
from sale
group by saledate
order by saledate;
Run Code Online (Sandbox Code Playgroud)

一个很好的主日历报告,带有摘要行:

select *
from (
    (select s.saledate, s.product_id, p.name, s.quantity, s.price, (s.quantity * s.price) as total
    from product p, sale s
    where p.id = s.product_id)
  union
    (select saledate, NULL, 'TOTAL', sum(quantity), NULL, sum(quantity * price) as total
    from sale group by saledate)
) as summedsales
order by saledate, product_id;
Run Code Online (Sandbox Code Playgroud)