首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于存储也支持自动补全的文本输入的数据库设计

用于存储也支持自动补全的文本输入的数据库设计
EN

Stack Overflow用户
提问于 2016-06-11 00:23:34
回答 1查看 90关注 0票数 0

我正在设计一个系统,允许用户指定他们对其过敏的物品。当他们开始将每个过敏原绑定到文本字段中时,我打算提供自动完成样式的建议,以便他们可以从其中一个建议中进行选择,或者自己完成过敏原的键入。建议列表将来自查询表,该查询表将仅包括最常见的过敏原。

我从查找表中提供建议没有问题,但我正在尝试找出在数据库中保存相关过敏原的最佳方法,其中这些过敏原可以是已经存在于查找表中的东西,也可以是用户自定义的东西(并且不会添加到查找表中)。我能想到两种可能的解决方案,但它们似乎都不完美。

选项1将每个用户过敏原存储为文本,如下所示:

用户: id,名称

allergen_lookup:名称

user_allergies: user_id,过敏原

在本例中,allergen_lookup和user_allergies表之间没有关系,user_allergies.allergen是一个文本字段。这个问题本质上归结为(缺乏)规范化,但至少它支持自定义过敏原,而不需要额外的表。

选项2使用额外的表来存储自定义过敏原,如下所示:

用户: id,名称

allergen_lookup: id,名称

user_allergies: user_id,allergen_id

user_custom_allergies: user_id,custom_allergy

在本例中,user_allergies.allergen_id链接到allergen_lookup.id。user_allergens表用于存储用户与已知过敏原(来自查找表)之间的关联,user_custom_allergies表用于跟踪未知过敏原(不在查找表中的过敏原)。这样做的问题是使用两个表来跟踪相同类型的信息(用户过敏原)。

所以,我为冗长的描述道歉,但是对于如何最好地存储它有什么建议吗?

提亚

EN

回答 1

Stack Overflow用户

发布于 2016-06-11 00:39:16

你可能把问题复杂化了,但如果我没有问到问题,请告诉我。

我将如何处理这个问题:

我会有一个用户,userAllergies和过敏表- userAllergies是交叉表。

这将允许您在用户键入时向用户显示数据库当前存储的所有过敏症。这也将允许您拥有一个规范化的数据库,其中的数据不会重复。这是因为交叉表将允许您将过敏症与用户关联,而不会干扰过敏性表。

只是一些对未来的建议。使用范式过程来解决您的数据库问题。它将帮助您确定数据库的结构和采取的最佳方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37752989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档