繁体   English   中英

有没有办法使用 SQL 定义使用 2 个非唯一列的 2 个表之间的关系

[英]Is there a way to define the relationship between 2 tables using 2 non-unique columns columns using SQL

在数据库的实际面试练习中,我在 CSV 中获得了 2 个文件,其中一个用于药物分配,显示患者的独特实例(患者 ID 列是唯一的)通过以下项目访问药物

drug_dispensation (facility_code,patient_id,weight,date,DOB)

另一个 CSV 文件设施详细信息显示了每个患者获得药物的设施的独特实例

设施详情(设施名称、设施代码、地区)

这个想法是设计一个包含 2 个表的数据库并在两者之间建立关系。 查看 2 个文件的结构,常见的列是 facility_code 列。 但是,facility_details 中的条目并非都是唯一的,因为 2 个保健中心共享相同的代码“MON”。

由于我们必须在创建关系后导入数据,因此外键约束出现错误,指出两个表无法关联,因为 facility_details 中没有唯一引用列。

ALTER TABLE drug_dispensation
ADD CONSTRAINT FOREIGN KEY (facility_code) REFERENCES facility_details(facility_code)

错误:被引用的表 facility_details 中没有与引用列列表匹配的主键或候选键

有没有办法可以在两个表之间建立关系?

结构和设置听起来大多是合理的,所以你被评估的部分内容大概是你如何处理无效数据。

您已经完成了所有正确的事情来识别导致您失败的重复项,现在您需要就如何处理它进行调用。

例如,删除其中一个,或者如果它应该是明显的,则修改设施代码 - 并确保记录您所做的任何更改。

您可以在加载数据之前删除约束,然后对其进行修改,然后添加约束......或者您可以按原样加载到临时表,在那里修改数据,然后加载到目标表。

我想说的是,你说 patient_id 列在 drug_dispensation 中是唯一的,但它看起来设置为允许每位患者有多个记录(例如,在不同的日期和/或在不同的设施)。 我认为拥有三个表最有意义 - Patient_details(患者 ID、出生日期...等)、Facility_details(设施名称、设施代码、地区)和药物分配(设施代码、患者 ID、日期)。 重量可以是患者详细信息或药物分配中的 go,具体取决于分配时的重量还是该患者的固定值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM