【问题标题】:How to record customer purchases?如何记录客户购买?
【发布时间】:2021-07-18 20:27:15
【问题描述】:

我正在创建一个跟踪客户、商品、交易等的数据库。我无法描述CustomersItems 之间的关系,它由buys 表示。关系buys 表示Customer 在收银台购买Items。事务buys 可以在单个事务中多次包括一个项目、多个项目和/或同一个项目;此外,多个Customers 可以在不同的场合购买同一物品。

关系buys 需要哪些属性才能跟踪所有购买的商品?

目前,我提出一个属性buys.id;但是,似乎需要一个复合键。密钥可以(buys.idCustomer.idItems.id),但是如果客户要添加相同的项目两次,那么这些规则就会被打破。我还将包括一个date 属性。此外,quantity 属性可以添加到关系中。

这种关系可以这样描述:

这似乎可以满足所有规定的规则,但似乎有点麻烦。

有没有办法改进这个设计?

(如果有人知道一本好书或视频,我需要复习一下这些东西)

编辑:

This answer from another post could answer this question.

我正在使用 MariaDB 和 python。

【问题讨论】:

    标签: entity-relationship erd


    【解决方案1】:

    让你的模型变大应该始终保持警惕,但在这种情况下,你可能会遗漏一个概念:order lines

    由于您没有在问题中指定堆栈,因此我将插入一个颇受欢迎的项目中的 this python class

    我还建议任何阅读本文的人始终,始终关注流行的开源项目他们是如何做到的,如果你有一个很小的机会正在从事以前做过的事情撞墙时(也许是以前,但永远不要停止思考如何让它变得更简单!)!

    这不仅是了解人们通常如何建模和使用共享/通用语言的好方法,而且您可能会了解一些可能遇到的陷阱和问题。

    【讨论】:

    • 顺便说一句,在现实世界中,这变得异常复杂。说,你如何处理限时的东西?有优惠券吗?计量?欺诈罪?只要账单存在,人们就会互相残杀以试图让它发挥作用,账单就是这样一个中心话题。我们会到达那里的 :D,
    • 这就是为什么我花了几个小时阅读有关存储电话号码的各种方法以及将国家代码、区号和电话号码分开的利弊。存储地址的正确方法是什么?据我所知,没有合适的方法,因为不同的国家可能有不同的标准。 USPS 制定了美国地址的标准,但这不一定是通用的。
    • 对吗?全球商业是一个很难的话题。顺便说一句,我对我的回答很友好,因为由于各个国家/地区的各种合同法,这很容易达到约 200 张桌子,只是为了存储您与为特定服务付费的人的关系。
    猜你喜欢
    • 2018-02-24
    • 1970-01-01
    • 2018-09-03
    • 2011-06-08
    • 2017-10-03
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    相关资源
    最近更新 更多