jjzjj

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

coder 2023-10-06 原文

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

库存

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

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

公司

公司编号(主键)
公司名称
电话

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

类别

类别ID(主键)
类别名称

(这是商店产品类别)

股票

编号
条形码(主键)
获取价格
批量销售价格
零售价
数量

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

LAST_STOCK_DATE

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

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

比尔

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

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

已售出_ITEM

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

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


比尔
bill-no 日期/时间 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 表总是一个接一个地填写......

谢谢。

最佳答案

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

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

关于mysql - 如何为POS系统设计出色的数据库结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33993880/

有关mysql - 如何为POS系统设计出色的数据库结构的更多相关文章

  1. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby - 如何为 emacs 安装 ruby​​-mode - 2

    我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby​​提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs

  4. ruby-on-rails - 使用 rails 4 设计而不更新用户 - 2

    我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它​​不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数

  5. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  6. ruby - 我如何添加二进制数据来遏制 POST - 2

    我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_

  7. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  8. 电脑0x0000001A蓝屏错误怎么U盘重装系统教学 - 2

      电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。  准备工作:  1、U盘一个(尽量使用8G以上的U盘)。  2、一台正常联网可使用的电脑。  3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。  4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。  U盘启动盘制作步骤:  注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注

  9. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  10. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

随机推荐