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

Yan*_* P. 1 mysql database algorithm

我正在设计一个应用程序,我想根据症状搜索疾病.我正在尝试使用MySql设计数据库,但作为初学者,我遇到了一些设计理念的麻烦.

基本上疾病会有多种症状,所以在disease桌子上我想要这些列:

disease_id, disease_name, disease_description, **disease_symptoms** 
Run Code Online (Sandbox Code Playgroud)

问题是,一种疾病不会只有一种症状,并且在一个单元格中放置多个值与我在网上发现的数据库设计理念背道而驰.

于是,我找到了最好的解决办法,到目前为止是使一表多列,1对疾病的id,然后像10列,分别为:symptom_0,symptom_1,symptom_2,等.因此,当我进行SQL查询时,它可以返回所有具有特定症状的疾病.

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

Vic*_*kin 7

如果您在疾病和症状(或实际上是任何其他实体)之间存在M-to-N关系,则需要3个表:首先是疾病,如(disease_id,...),第二个是症状(symptom_id,......)和第三个,链接表,(disease_id,symptom_id).

然后,您执行SQL,如: SELECT * FROM diseases WHERE disease_id IN (SELECT disease_id FROM diseases_vs_symptoms WHERE symptom_id = MY_SYMPTOM);

更新我刚刚google了一下,发现这个看起来很有希望的问题,你可能会觉得有用:关系数据库设计模式?