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

Posted

技术标签:

【中文标题】如何为 POS 系统设计出色的数据库结构【英文标题】:How to design great database structure for POS system 【发布时间】:2016-03-03 19:26:36 【问题描述】:

我正在为我的 POS 系统设计 mysql 数据库。我会尽力解释。请帮我设计得更成功!

库存

身份证 条码(主键) 产品名称 公司编号 类别 ID

(此表用于存储产品信息。这对于日常销售过程没有用。用于存储产品信息。如果产品添加到数据库,首先存储在该表中。之后从 STOCK 表获取信息这张表)

公司

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

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

类别

类别 ID(主键) 类别名称

(这是商店产品类别)

库存

身份证 条码(主键) 获取价格 批量销售价格 售价零售 数量

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

LAST_STOCK_DATE

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

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

账单

账单号(主键) 日期/时间 客户编号 正常价格(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 账单编号 条形码 数量 每件价格 每件折扣价格 总折扣 贷方或借方 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】:

很少有理由让多个表具有相同的主键 - last_stock_date 和 stock 可以合并或在键中包含日期/时间。

您对此执行的操作取决于您的业务规则 - 如图所示,BILL_ITEM 数据与 sold_item 表定义相匹配:您不需要 2 个表。数据分析师会提出以下问题: 1) 您(或将来)想要支持客户信用账户吗? 如果是这样,在销售时可能不会知道 bill_no,因此您需要它以允许在 sold_item 表上出现空值。 (您需要一个生成的 - 列作为人工键。 如果没有,您可能需要一个 line_number 列(标准主从构造) - 否则您会丢失一个唯一标识符。

【讨论】:

以上是关于如何为 POS 系统设计出色的数据库结构的主要内容,如果未能解决你的问题,请参考以下文章

如何为两个不同实体之间的复杂消息系统设计表?

如何为技术博客设计一个推荐系统(中):基于 Google 搜索的半自动推荐

[iPhone]你将如何为下面给出的结构设计核心数据对象模型

如何为 PostgreSQL 中的自链接记录设计最佳实践数据结构?

如何为访问控制和跟踪创建数据库设计?

如何为图形或树结构编写 GUI 编辑器