首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有多个值的数据库单元?

具有多个值的数据库单元?
EN

Stack Overflow用户
提问于 2013-09-18 08:50:36
回答 3查看 9.7K关注 0票数 2

我正在设计一个应用程序,我想在那里寻找基于症状的疾病。我正在尝试使用MySql设计数据库,但作为初学者,我在设计理念上遇到了一些麻烦。

基本上,一种疾病会有多种症状,所以在disease表中,我希望有以下列:

代码语言:javascript
运行
复制
disease_id, disease_name, disease_description, **disease_symptoms** 

问题是,一种疾病不会只有一种症状,将多个值放在一个单元格中违背了我在网上发现的DB设计理念。

因此,到目前为止,我找到的最佳解决方案是创建一个具有多列的表,其中1列用于疾病id,然后类似于名为symptom_0symptom_1symptom_2等的10列。因此,当我执行SQL查询时,它可以返回所有有特定症状的疾病。

我只是想知道是否有更有效的方法来做到这一点。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-18 08:54:38

如果您在疾病和症状之间有M到N的关系(实际上是任何其他实体),那么您需要3个表:第一个用于疾病,例如(disease_id,.),第二个用于症状(symptom_id,.)第三种是链接表(disease_id,symptom_id)。

然后,执行类似于:SELECT * FROM diseases WHERE disease_id IN (SELECT disease_id FROM diseases_vs_symptoms WHERE symptom_id = MY_SYMPTOM);的SQL

UPDATE --我刚刚在谷歌上搜索了一下,发现这个看起来很有希望的问题,你可能会发现这个问题很有用:Relational Database Design Patterns?

票数 8
EN

Stack Overflow用户

发布于 2013-09-18 08:56:12

我不认为创建多列是个好主意,因为有很多可能的症状。我的做法是:用id创建表,用id创建表disease_symptoms,用disease_idsymptom_id创建表disease_symptoms

现在,在表disease_symptoms中,您已经将疾病和症状联系起来,并且可以很容易地找到哪些疾病有一些症状,而哪些疾病则相反。

票数 1
EN

Stack Overflow用户

发布于 2013-09-18 08:57:35

我会再建两张桌子。一种是针对症状的两个字段: symptom_id和symptom_name。第二,把你的疾病和症状联系起来,有两个领域: disease_id和symptom_id。第二个表将有尽可能多的条目,因为有这种疾病的症状。

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

https://stackoverflow.com/questions/18867738

复制
相关文章

相似问题

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