不确定字段,不确定用户的这种情形(如商城有ABCD商家,他们的后台除基础字段要求可随意自定义字段), 财富值14

2016-10-28 08:22发布

最终目的:多用户系统里每个用户都可以对模型按需设置自定义字段,且互不影响.
使用例子:某商城有商户ABCD,每个人的商店设置,产品发布等等都可以随意自定义字段,且有些字段需要检索查询.

比如:发布商品基本字段:名称,介绍.

A商户发布界面:名称,介绍,他自己添加的**123**字段. B商户发布界面:名称,介绍,他自己添加的**456**字段. 

再比如:商店配置基本字段:店铺名,域名.

A商户设置界面:店铺名,域名.他自己添加的**a**字段. B商户设置界面:店铺名,域名.他自己添加的**b**字段. 

我最初的思路:每个商户独立创建一个系列表,按照ID分为多表,这样互不干扰.
比如

shop_1_config(name,desc,1自己添加的字段). shop_2_config(name,desc,2自己添加的字段) 

缺点也显而易见,不方便维护,而且用户数量多的时候,表也是非常多,比如一个用户10张表,那1000个商户就是1W张表了...

这个问题的核心在于每个商户在同一个模型(如商品)下,随意自定义字段,且这些字段必须可与普通数据库字段一样可检索可快速查询,还要各自互不影响,字段数量不限.

讲的比较啰嗦,请大神讲解一下,谢谢

付费偷看设置
发送
8条回答

你的问题我觉得可以用三张表来描述清楚这个问题:

主键id 可以区分是哪个描述,根据外键hid(Table:id)可以确定是哪个商品的描述

主键 id 可以用来区分指定商品。在增加一个商户uid(外键),能确定该商品是哪个商户上传的。

这种情况别用关系型数据库啦,用mongodb等schema free的数据库,天生为了解决这种问题而生

不要让用户增加字段, 这不合理, 你可以建立一个类似于 map 型的表, 也就是

外键mid确定是什么描述的数据

mishen - whatsns产品经理
7楼-- · 2016-10-28 08:30

账户创建的字段当作 key 写到 k 字段, 值放在 v 字段, 然后那关系来关联这张表即可. k 的值可由你去约定或者完全交给用户自己操作, 然后查询出来即可

mishen - whatsns产品经理
8楼-- · 2016-10-28 08:27

这样的结构应该可以满足你的要求

一周热门 更多>