【发布时间】:2015-01-21 12:13:51
【问题描述】:
所以我有一些信息要存储,让我们把它简化为食物来创建一个例子。 一个食谱包含一种或多种成分,每种成分也有一个数量。
所以一个菜谱(一个叫做菜谱的表中的一行)可以包含:
id : 0
name : something disgusting
ingredientid1 : 0
ingredientamount1 : 20
ingredientid2 : 1
ingredientamount2: 6
..etc
到目前为止我只对mysql有经验,但我愿意学习。本质上,我可以将成分序列化为一个字符串并存储该字符串,然后使用 LIKE 运算符查找所有具有特定成分的食谱......但我会对这样的解决方案感到厌恶。
目标是让最终用户能够向服务器提供一份成分列表,以获取返回的食谱列表,这些食谱可以使用这些成分制作。
如果不使用 LIKE 运算符,我将如何做这样的事情?
【问题讨论】:
-
数组可能不是建模这种关系的正确方法。我会将其标准化为
food表、ingredient表和food_ingredient_map表。 -
你可以试试nosql
-
@Brandon
food_ingredient_map听起来很有趣,但你能详细说明一下吗? -
@RajibGhosh:或使用带有键/值存储 (
hstore) 或json的 Postgres。 Postgres 开始成为 NoSQL 群体的有力竞争者(因为您可以两全其美)。但是这个问题也可以很容易(有效地)存储在关系模型中。 -
@StephanBijzitter,
food_ingredient_map正是,RecIngr在我的回答中是什么意思 :)