有关具有不同/动态字段数的DB的DB设计的建议

时间:2017-03-03 18:12:41

标签: php mysql

我正在使用PHP / MySQL构建药物信息Web应用程序。我不知道如何处理不同数量的字段的需要。例如,副作用。一种药物可能有三种副作用,另外30种。我想到了两种可能的解决方案,两者看起来都很糟糕:

  1. 有30列,例如side_effect_1,side_effect_2等,并且在大多数药物的这些列中都有很多空值。

  2. 列出一列中的所有副作用,以逗号分隔,然后弄清楚如何处理它(我猜是某种嵌套数组?不会最终成为一个数组内的数组PHP发送的任何查询的数组?)

  3. 我是新手,但我发誓,我花了好几个小时试图在线寻找解决方案,但无济于事。似乎有一种观点认为NoSQL数据库可以最好地处理这个问题(动态字段数)。虽然我的大部分领域都有良好,整洁,一对一的关系,但有一些(副作用,适应症,禁忌症)的数量会有很大差异。任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:2)

您在这里处理两种不同的数据。一方面你有药物,另一方面有副作用。这直接为您提供了问题的答案:您需要两个表格。现在要连接这两个,你需要另一个负责这样做。

┌───────┐    ┌───────────────────┐    ┌──────────────┐
│ drugs │    │ drug_side_effects │    │ side_effects │
├───────┤    ├───────────────────┤    ├──────────────┤
│ id    │    │ drug_id           │    │ id           │
│ name  │    │ side_effect_id    │    │ name         │
└───────┘    └───────────────────┘    └──────────────┘

现在,每种药物不仅可以产生 n 副作用,还可以确保参照完整性并避免存储中的重复(或更多)。