我正在创建一个数据库来跟踪客户、商品、交易等。我无法描述由 Customers
表示的 Items
和 buys
之间的关系。关系 buys
表示在收银处购买 Customer
的 Items
。交易 buys
可能包括一个项目、多个项目和/或在单个交易中多次使用同一项目;此外,多个 Customers
可能会在不同的场合购买同一件商品。
关系buys
需要哪些属性来跟踪所有购买的商品?
目前,我提出了一个属性 buys.id
;然而,似乎复合键是必要的。键可以 (buys.id
, Customer.id
, Items.id
),但是如果客户要添加相同的项目两次,那么这些规则就会失效。我还将包含一个 date
属性。此外,可以将 quantity
属性添加到关系中。
看起来确实可以满足所有规定的规则,但似乎有点麻烦。
有没有办法改进这种设计?
(如果有人知道一本好书或视频,我需要复习一下这些东西)
编辑:
This answer from another post could answer this question.
我正在使用 MariaDB 和 python。
答案 0 :(得分:2)
让您的模型变大总是需要警惕的,但在这种情况下,您可能会遗漏一个概念:order lines。
由于您没有在问题中指定堆栈,我将插入一个比较受欢迎的项目中的 this python class。
我还会建议任何阅读本文的人始终关注流行的开源项目他们是如何做到的,如果您正在从事以前做过的事情的可能性很小撞墙时(也许以前,但永远不要停止思考如何让它更简单!)!
这不仅是了解人们通常如何建模和使用共享/通用语言的好方法,而且您可能会了解到一些可能遇到的陷阱和问题。