数据库表设计问题。有哪位可以提出一些方案

表1产品表 表2 表3
product sku item

product和sku是多对多关系,一个sku可以绑定多个product,1个product可以被多个sku绑定。面向用户的是sku。
sku和item也是多对多的关系。

用户下单的时候购买的是sku。请问,订单表可子订单表应该怎么设计才能较好的记录用户买了哪些sku,哪些product

阅读 3.3k
2 个回答

建两张关联表即可啊,一个是productsku的关联表,一个是skuitem之间的关联表,至于你怎么获取数据那是你后台API代码的事情

product-sku

Field Type Null Key Default Extra
id bigint(10) NO PRI NULL auto_increment
productid bigint(10) NO MUL NULL
skuid bigint(10) NO MUL NULL

sku-item

Field Type Null Key Default Extra
id bigint(10) NO PRI NULL auto_increment
skuid bigint(10) NO MUL NULL
itemid bigint(10) NO MUL NULL

根据领域驱动设计,sku可以称为聚合根,不管是item还是product,用户都应该先获取到sku的引用,再调用sku的方法获取到其他关联的对象,这样不会导致混乱。
下单购买sku的话,订单应该保存sku的id。但这里涉及到sku会不会更改,以及更改后要求获取到的sku是下单时的sku还是最新的sku。如果要求是下单时的sku,应该新建个表保存sku的快照,那订单应该关联sku的快照,具体要看业务。

推荐问题