如何记录客户的购买?

How to record customer purchases?

我正在创建一个数据库来跟踪客户、物品、交易等。我在描述 CustomersItems 之间的关系时遇到了问题,后者由 buys 表示。关系 buys 表示 Customer 在收银台购买 Items。交易,buys,可能包括一件商品,多件商品,and/or同一件商品在一次交易中多次;此外,多个 Customers 可能会在不同的场合购买同一件商品。

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

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

这种关系可以这样描述:

看起来确实可以满足所有规定,但似乎有点麻烦。

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

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

编辑:

This answer from another post could answer this question.

我正在使用 MariaDB 和 python。

让你的模型变大总是要警惕的,但在这种情况下你可能会遗漏一个概念:order lines.

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

我还建议阅读本文的任何人始终关注流行的开源项目他们是如何做到的如果你有极小的机会正在做某事这在撞墙之前就已经完成了(也许之前,但永远不要停止思考如何让它变得更简单!)!

这不仅是了解人们通常如何建模和使用 shared/common 语言的好方法,而且您可能会发现一些您可能 运行 陷入的陷阱和问题。