我有一个订单,每个订单都有一些与之相关的产品。我想保存每种产品的名称,价格和简短描述。
我知道正常方法是创建两个表orders
和products
,但是如果我不需要专门查询产品会怎么样?是否可以带有PHP的订单对象上的json_encode
个产品,并将其保存为mysql中orders
表的一列?
答案 0 :(得分:1)
如果数据结构一致(听起来像是这样),你应该创建一个表。
JSON或其他序列化格式适用于不一致的数据。
将产品信息存储在订单上是很方便的(这是NoSQL数据库的吸引力的一部分),但除非产品之间的数据结构不同,否则最好遵循在关系中创建数据的标准方式。
JSON有用的用例:
假设您在结帐前跟踪的事件流中包含有关事件的信息。您可能希望存储未一致存储的数据。您可以将以下内容存储在order_analytics
表的orders
列中。
{
type: "page_visited",
data: {
url: "/example/1",
title: "Example Page"
}
},
{
type: "added_to_cart",
data: {
product_id: 4,
product_name: "Example Product"
}
},
{
type: "removed_from_cart",
data: {
product_id: 4,
product_name: "Example Product"
}
}
答案 1 :(得分:-3)
当您声明“您不需要查询产品”时,您可以serialize()
您的数据并unserialize()
阅读它,这是非常常见的用法和完全有效的做法。它不是JSON,但您可以在unserialize()
之后轻松将其转换为JSON。