我正在尝试以各种方式评估构建我的数据模型的利弊,我想知道我是否会通过将相当复杂的嵌套数据类型填充到 SQL 表的各个列中来打击自己.
例如,假设我想序列化一个结构数组(或者更糟糕的是,哈希数组)并将其保存在单个列中。它很可能是一个有点嵌套的 JSON 字典。就像是:
user_id | user_related_data_blob
---------------------------
1 | { .... }
我可以立即看到的明显缺点是数据耦合,以防某些数据与用户的关系不是很紧密。还有每个检索到的行的大小,这可能会使从 Web 获取相当慢,尤其是在大多数数据甚至不是客户端立即需要的情况下。通过这些列执行 SQL 也变得相当复杂(并且可能不可索引),除非有特殊的技术来支持它。
几乎唯一的好处是,如果您不想创建复杂的模式并花费大量时间确保所有约束都是合理的并且您拥有的约束更少移动部件。对于像快速原型这样的东西,它甚至可能是有意义的。
我在这里错过了什么吗?SQL 世界中是否有一条经验法则规定您永远不应将数据嵌套在单个列中?有什么好的指导方针吗?