Linux就该这么学
sp朱盼的gravatar头像
sp朱盼2018-08-27 14:11:34

数据库表结构设计

各位大神,请问一下,现在有一张用户表,有一张商品表,现在业务需要方便查询同时购买某几种商品的用户有哪些?请问订单表应该如何设计?或者说还需要增加一些什么表来满足这个业务需求?万分感激!

所有回答列表(4)
sweets_wn的gravatar头像
sweets_wn LV48月29日

通过订单表(订单ID<key>,用户ID,商品ID,...),是可以实现这个需求的,只是sql稍微复杂点。

如果想查询方便,建议新增一张用户商品表(用户ID<key>,商品IDs),user_sp(user_id,sp_ids),数据格式如:user01,sp01|sp02|sp03|,(注意:每个商品ID后面都跟一个|分割符,以便查询)

以Oracle数据库为例,查询同时购买商品01、商品02的用户,对应sql如下:

select distinct user_id from user_sp where instr(sp_ids,'sp01|')>0 and instr(sp_ids,'sp02|')>0;

 

评论(1)最佳答案
sayHelloWorld的gravatar头像
sayHelloWorld LV228月28日

新建一张用户商品表,记录用户购买的商品信息

栈道小生的gravatar头像
栈道小生 LV58月28日

首先用户表 要有 id name  用户状态  商品id  这个一对多关系 ,商品表需要 商品状态 商品类型 商品名称 ,可以做平行关系 ,也可以做一个中间表 只有 用户id 和商品id ,这样查询很方便

oliver1234的gravatar头像
oliver1234 LV39月6日

首先数据表的设计要遵循几个重要的范式,表中不可出现与主键无关的字段,字段尽量做到不可拆分。用户表除了记录用户基本信息外,还要考虑逻辑和状态字段,商品表当然包括商品信息以及用户id以确保多对一的关系,其次还要建立分类表,中间表确定多对多的关系,好处是好维护,查询快,而且很多框架都支持这种关联模型。

顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友