代码之家  ›  专栏  ›  技术社区  ›  SeanCannon

模糊文本搜索与连接

  •  -1
  • SeanCannon  · 技术社区  · 15 年前

    我被指派为公司构建问答小部件。公司的许多不同部门都希望在不同的网站上使用这个小部件,他们希望根据特定和唯一的标准筛选问题。

    这里的战斗是可伸缩性和效率。

    我应该:

    table questions (q_id,q_question,q_details,q_poster...)
    table questions_criteria_a (q_id,criteria_a.id)
    table questions_criteria_b (q_id,criteria_b.id)
    table questions_criteria_c (q_id,criteria_c.id)
    

    这将允许我从问题中选择*q LEFT JOIN questions_criteria_a qca ON q.q_id=qca.q_id LEFT JOIN。。。。等。。。

    我的问题是,我不知道每个部门的要求标准实际上是什么,或者将来可能是什么——这意味着每次提出新标准时,我都需要添加一个新表。标准的示例可以是state、city、subject、vendor key等,它们希望显示与供应商相关的所有问题,例如与CA的San Jose相关的问题。每个查询都需要任何、所有或不需要任何条件—这将取决于各部门对自己的数据获取逻辑进行编码。

    B) 让每个部门提供标准标记逻辑,这些逻辑将作为json字符串或序列化数据存储在问题表中。例如:

    table questions (q_id,question,q_details,q_poster,q_criteria...)
    -- the criteria would look like {'state':'CA','city':'San Jose','vendor_key':'13144'}
    

    思想?思想?反馈?

    如果你有一个更好的解决方案,上面没有介绍,我很乐意考虑。

    2 回复  |  直到 15 年前
        1
  •  2
  •   OMG Ponies    15 年前

    我定义了三张桌子-

    问题

    标准

    • 标准id(主键,自动递增)

    问题标准

    • 问题id(pk,问题外键。问题id)
    • 标准id(主键,标准的外键。标准id)

        2
  •  1
  •   Steve-O-Rama    15 年前

    我认为您可能正在寻找一些多对多关系,这样您就可以从它们所属的条件中抽象出数据类型,而不必创建所有额外的表。

    类似于“criteria-to-question”表,您可以在其中将多个条件映射到一个问题,这样可以保持数据库的干净和可伸缩性。

    推荐文章