我有一个装满食谱的数据库,每行一个食谱。我需要为每个配方存储一堆任意“标志”,以标记各种属性,如无Gluton,没有肉,没有红肉,没有猪肉,没有动物,快速,简单,低脂肪,低糖,低卡路里,低钠和低碳水化合物。用户需要通过选中UI中的复选框来搜索包含一个或多个这些标记的食谱。
我正在寻找在食谱表中存储这些属性的最佳方法。到目前为止我的想法:
写入性能不是一个大问题,因为后端进程添加了配方,搜索速度至关重要(最终可能有几十万个配方)。我怀疑我会经常添加新标签,但我希望它至少可以做到没有重大问题。
谢谢!
答案 0 :(得分:4)
我建议你使用标准化设置。从一开始就将其设置为非规范化结构并不是我所建议的。
在不知道他发生了什么的所有细节的情况下,我认为最好的设置是让您的配方表和新属性表以及新的recipe_property表。这允许配方具有0或多个属性并规范化您的数据,使其快速且易于维护和查询数据。
高级别结构将是:
CREATE TABLE recipe(recipe_id);
CREATE TABLE property(property_id);
CREATE TABLE recipe_property(recipe_property_id,recipe_id,property_id);