所以我有一个应用程序和一个非常烦人的客户端改变了他们的想法很多,所以我决定将一些数据存储为JSON对象。
我有一个匹配系统,我将存储为匹配注册的用户作为其用户ID数组的JSON对象版本。
我希望显示用户已注册的所有匹配项作为我的过滤器选项之一,因此我基本上需要查看该用户的id是否存储在文本类型数据对象中。
我能想到的两种方式是:
查询每个匹配项并对对象进行JSON解码,然后使用in_array
查看它们是否在匹配中(我没有这样做)。
只需使用LIKE
查询在JSON文本中搜索“[userid]”(这就是我所做的)。
有没有更好的方法来做这样的事情?就像MySQL有更好的内置函数吗?
答案 0 :(得分:4)
尝试将用户数据存储在关系数据库(例如MySQL)中的JSON对象中是错误的。您的数据库不是面向对象的,而是关系型的。遵循关系数据库的规则将很好地为您服务。您最好建立一个良好的数据库(DB)结构并进行准确的MySQL查询。
如果您的数据库至少保持在third normal form,您会发现当客户改变主意时可以添加和更改用户属性(再次......再次......) 。)因为较少的数据将保存在给定的表中,因此您可以添加和更改小表而不会产生巨大的系统范围的影响。
DB中的另一个选项是创建一个具有id,name和value的各种属性的表。