如何为POS系统设计出伟大的数据库结构

9

我正在为我的POS系统设计mysql数据库。请允许我尽最大努力解释。请帮助我更成功地设计它!

库存

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

(此表用于存储产品信息,不适用于日常销售过程。这是用于存储产品信息的表。如果要将产品添加到数据库中,请首先存储在该表中。之后STOCK表从该表中获取信息)

公司

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

(这是用于存储产品公司信息的表)

类别

类别ID(主键)
类别名称

(这是用于存储产品类别的表)

股票

id
条形码(主键)
进价
批发售价
零售售价
数量

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

LAST_STOCK_DATE

条形码(主键)
日期/时间
数量

(该表处理每个库存记录。对于卖家查看存货产品和日期的次数非常有用。同时可以计算每年的总数量等...)

BILL

账单号(主键)
日期/时间
客户ID
正常价($100等...)
折扣价格($99等...)

(这是用于存储帐单信息的表。我在这里遇到了主要问题。我无法在那一点上进行创造性的思考。因此,我希望您能设计BILL表和SOLD_ITEM表。那时,我正在考虑另一个表“SOLD_ITEM”以减少数据重复。)

SOLD_ITEM

账单号(主键)
条形码
数量(2等...)
每件物品价格($10等...)
每件商品折扣价($2等...)
总折扣($4等...)
信贷或借记

(如果BILL和BILL_ITEM有任何错误,请发表评论。我想修复那部分。这两个表如此!)


BILL
bill-no  date/time  customer-id  normal-price  discount-price
B1       15/11/01   C1                $30                $22
B2       15/11/01   C2                $30                $18


BILL_ITEM
账单号   条形码  数量     单价     折扣单价    总折扣    借贷
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表总是逐个销售填充.....

谢谢。
1个回答

2
很少有理由拥有具有相同主键的多个表 - last_stock_date 和 stock 可以合并或在主键中包含日期/时间。关于此问题,您需要根据业务规则进行决策 - 如所示,BILL_ITEM 数据与 sold_item 表定义匹配:您不需要这两个表。数据分析师可能会问以下问题:
1)您是否(或将来)想支持客户信用帐户?
如果是,bill_no 在销售时可能不会被知道,因此您需要允许在 sold_item 表上使用 nulls。(您需要一个生成的列作为人工键。)
如果不是,则可能需要一个 line_number 列(标准主-细节构造)- 否则您将缺少唯一标识符。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接