使用 json_encode 数据而不是创建新的 table 是不是糟糕的设计?
Is it bad design to use json_encode data instead of creating new table?
我有一个订单,每个订单都有一些相关的产品。我想保存每个产品的名称、价格和简短描述。
我知道通常的方法是创建两个 table,orders
和 products
,但是 如果我不需要专门查询产品怎么办? 是否可以在 PHP 的订单对象上 json_encode
产品并将其保存为 orders
table 中的列 mysql ?
正如您所说 "do not need to query for product",您可以 serialize()
您的数据并 unserialize()
它被读取,这是非常常见的用法和完全有效的做法。它不会是 JSON,但您可以在 unserialize()
.
之后轻松将其转换为 JSON
如果数据结构一致(听起来确实如此),您应该创建一个 table。
JSON 或其他序列化格式适用于不一致的数据。
直接在订单上存储产品信息很方便(这是 NoSQL 数据库的一部分吸引力),但除非产品之间的数据结构不同,否则最好遵循创建数据的标准一种关系方式。
JSON 有用的用例:
假设您正在跟踪一个事件流,其中包含有关结帐前事件的信息。您可能想要存储存储不一致的数据。您可以将以下内容存储到 orders
table 上的 order_analytics
列。
{
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"
}
}
我有一个订单,每个订单都有一些相关的产品。我想保存每个产品的名称、价格和简短描述。
我知道通常的方法是创建两个 table,orders
和 products
,但是 如果我不需要专门查询产品怎么办? 是否可以在 PHP 的订单对象上 json_encode
产品并将其保存为 orders
table 中的列 mysql ?
正如您所说 "do not need to query for product",您可以 serialize()
您的数据并 unserialize()
它被读取,这是非常常见的用法和完全有效的做法。它不会是 JSON,但您可以在 unserialize()
.
如果数据结构一致(听起来确实如此),您应该创建一个 table。
JSON 或其他序列化格式适用于不一致的数据。
直接在订单上存储产品信息很方便(这是 NoSQL 数据库的一部分吸引力),但除非产品之间的数据结构不同,否则最好遵循创建数据的标准一种关系方式。
JSON 有用的用例:
假设您正在跟踪一个事件流,其中包含有关结帐前事件的信息。您可能想要存储存储不一致的数据。您可以将以下内容存储到 orders
table 上的 order_analytics
列。
{
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"
}
}