如何处理具有别名表作为别名的表?

时间:2012-11-22 20:42:50

标签: database relational-database alias duplication

我目前有3张桌子:

Drug
  id
  name

DrugAlias
  drug_id
  name

Patient
  first_name
  last_name
  drug_alias_id

药物追踪科学名称(例如:对乙酰氨基酚)和DrugAlias,它是药物的孩子,跟踪其他可能的名称(例如:阿司匹林,acephen,aceta,扑热息痛等)。 / p>

患者可以服用一种药物,但是我在患者餐桌而不是药物中跟踪药物治疗,因为我希望能够记住患者喜欢称之为特定药物的药物。 。换句话说,我想记住患者给予对乙酰氨基酚阿司匹林。

问题在于,这并不允许患者给予对乙酰氨基酚对乙酰氨基酚,除非我每次创造药物时都要像药物一样创造一个名为DrugAlias的药物,这会造成一些重复。

我想知道是否有其他人对这个问题有任何其他解决方案?

谢谢!

2 个答案:

答案 0 :(得分:0)

坦率地说,我认为将真实姓名存储为别名的想法是一个很好的主意。

它简化了逻辑并反映了现实 - 药物可以在别名表中被称为任何东西。

父表用于报告,子表用于搜索。这对我来说很有意义。

那么如果有一点点数据重复会怎么样呢。删除重复会带来很多复杂性,几乎没有任何好处。此外,没有数据维护问题,保持科学名称与别名同名,因为科学名称永远不会改变。

答案 1 :(得分:0)

Drug
  dr_id    PK
  dr_name  FK

DrugAlias
  dra_id    PK one to one with dr_id
  dra_name  
  dr_name   - from the Drug table

Patient
  pat_id    PK
  first_name
  last_name
  dra_id    FK
  dra_name  FK

您的问题是结构和设计问题。波西米亚人用一句话说得很好。

这适用于具有关系数据库环境的设计。 您可以使用正确的密钥,正确的连接和一个好的查询来实现您想要的一切。

相关问题