【发布时间】:2021-04-23 23:58:14
【问题描述】:
我正在做一个项目,将患者的医疗记录存储在医院预约系统中,但我被困在过敏列上。每个患者可能有或可能没有一种或多种过敏症。这方面的数据类型是“预定义的”,因此肯定有很多类型的过敏,但数量最终是有限的。
我很清楚没有办法将一系列项目存储在单个列中:关系数据库本质上每个行/列组合存储一个值,但我已经看到了一些解决方法,我会想问什么是最好的方法。
我不能使用 Set 数据类型,因为肯定有超过 64 种过敏。
我可以使用以下列完全针对过敏创建另一个表:
allergy(patient_id,seq_no,allergies),其中主键是前两列的组合。
虽然这种方法可以让我查询特定患者
select allergies from allergy where id = patient_id; 我不知道如何将每个新患者的 seq_no 的自动增量值重置为 0。
我可以将这种类型的数据存储在 JSON 数据类型中,但在我看来这是一个非常奇怪的解决方案,我从未见过有人使用这种数据类型,我认为这种数据类型很少见。
最终我可以只将数据类型存储在标准 Varchar 字段中,但这需要在后端进行额外的工作以检索个人过敏症,不允许我查询,坦率地说是不太优雅的解决方案。
【问题讨论】:
-
这是many-to-many 关系的教科书示例
-
仅供参考,Stack Overflow 有一个用于数据库问题的兄弟站点:DBA.StackExchange.com
标签: mysql database-design