最终目的:多用户系统里每个用户都可以对模型按需设置自定义字段,且互不影响.
使用例子:某商城有商户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张表了...
这个问题的核心在于每个商户在同一个模型(如商品)下,随意自定义字段,且这些字段必须可与普通数据库字段一样可检索可快速查询,还要各自互不影响,字段数量不限.
讲的比较啰嗦,请大神讲解一下,谢谢
付费偷看金额在0.1-10元之间
你的问题我觉得可以用三张表来描述清楚这个问题:
主键id 可以区分是哪个描述,根据外键hid(Table:id)可以确定是哪个商品的描述
主键 id 可以用来区分指定商品。在增加一个商户uid(外键),能确定该商品是哪个商户上传的。
这种情况别用关系型数据库啦,用mongodb等schema free的数据库,天生为了解决这种问题而生
不要让用户增加字段, 这不合理, 你可以建立一个类似于 map 型的表, 也就是
外键mid确定是什么描述的数据
账户创建的字段当作 key 写到 k 字段, 值放在 v 字段, 然后那关系来关联这张表即可. k 的值可由你去约定或者完全交给用户自己操作, 然后查询出来即可
这样的结构应该可以满足你的要求
一周热门 更多>