mysql – 如何为POS系统设计出色的数据库结构

我正在为我的POS系统设计 mysql数据库.我会把它解释为最好的.请帮助我更成功地设计它!

库存

ID
条形码(主键)
产品名称
公司ID
类别的ID

(此表用于商店产品信息.这对于日常销售流程无用.对于商店产品信息.如果产品添加到数据库,则首先存储在该表中.之后该STOCK表从此表中获取信息)

公司

公司-ID(主键)
公司名
电话

(这是商店产品公司的信息.)

类别

类别的ID(主键)
分类名称

(这是商店产品类别)

股票

ID
条形码(主键)
获得价格
卖出价格,散装
卖出价,零售
数量

(该表用于日常使用.用于计算当前库存和所有流程.主要从INVENTORY表中获取信息.)

LAST_STOCK_DATE

条形码(主键)
约会时间
数量

(该表处理每个库存重新编码.使用完整的卖家查看库存产品和日期的次数.以及可以计算每年的全部数量等…)

法案

帐单无(主键)
约会时间
顾客ID
正常价格(100美元等……)
折扣价(99美元等……)

(这是关于商店账单信息.我的主要问题在这里.我不能在这一点上创造性地思考.所以我希望你帮助设计那个BILL表和SOLD_ITEM表.在那个时候我正在考虑另一个表“SOLD_ITEM”减少数据重复.)

SOLD_ITEM

帐单无(主键)
条码
数量(2等…)
每件商品价格(10美元等……)
每件商品折扣价(2美元等……)
总折扣(4美元等……)
信贷或借贷卡

(如果BILL和BILL_ITEM有任何问题请注释.我想修复那部分.这两个表看起来像这样!)

法案
账单 – 没有日期/时间客户ID正常价格折扣价格
B1 15/11/01 C1 $30 $22
B2 15/11/01 C2 $30 $18

BILL_ITEM
bill-no条形码数量每件商品价格每件商品折扣价格总折扣信用卡或借记卡
B1 1111 2 $10 $2 $4借方
B1 2222 4 $20 $1 $4借记卡
B2 3333 5 $10 $2 $10借记卡
B2 4444 2 $20 $1 $2借记卡

基本上我想减少我的账单表的重复.请看一下,告诉我我的方式是正确还是需要改变.如果需要更改,请发表评论.

BILL_ITEM表总是按卖出售…..

谢谢.

最佳答案 使用相同主键的多个表的原因很少 – last_stock_date和stock可以合并或包含键中的日期/时间.

您对此做了什么取决于您的业务规则 – 如图所示,BILL_ITEM数据与sold_item表定义匹配:您不需要2个表.数据分析师会问以下问题:
1)您(或者您是否曾)想要支持客户信用账户?
    如果是这样,bill_no可能在销售时不知道,所以你需要它在sold_item表上允许空值. (您需要生成 – 列作为人工密钥.
   如果没有,您可能需要line_number列(标准主 – 详细构造) – 否则您将缺少唯一标识符.

点赞