【发布时间】:2014-12-08 12:23:00
【问题描述】:
我正在构建一个复杂的订购系统,我正在纠结是否应该将一些更详细的信息作为 JSON 存储在单个列中,或者是否应该创建多个表和逻辑以将 JSON 排除在图片之外。
由于每个订单都有多个必需的日期、发货日期、零件、套件(零件集合)等。将其存储为单个“订单”行的 JSON 似乎更容易。
这样做有什么主要的缺点吗?
【问题讨论】:
-
为什么不为您的订单设置关系模式,即。 kits 是零件的集合,因此表 'kits' 有一个 1 到 M 和 'parts','orders' 引用来自 'kits' 的套件,依此类推...
-
首先要绑定的是可搜索性。您将无法使用
WHERE子句搜索数据。至少不容易。此外,您将无法JOIN处理 JSON 对象内的任何数据。就能够为它可能拥有的任何数字数据添加列INDEX而言,数据变得毫无用处。它违背了使用关系数据库的目的。如果这是您希望采用的方法,请查看像 MongoDB 这样的 NoSQL 数据库。该数据库中的信息实际上存储在以 JavaScript 语法格式化的对象中(即,正是您想要的)。 -
@War10ck 我同意 MongoDB,不幸的是,在这个场景中,一个新的数据库不是一个选项。至于搜索能力,我不关心。这是正确的过程吗,可能不是。
-
@ElGavilan 我明白你在说什么,这是我的另一个选择。有更多的变量在起作用,这使得它成为一个复杂的关系数据库。无论如何,这是我觉得我需要采取的方法。
标签: mysql json database laravel-4