1

私は現在3つのテーブルを持っています:

Drug
  id
  name

DrugAlias
  drug_id
  name

Patient
  first_name
  last_name
  drug_alias_id

ドラッグは学名(例:アセトアミノフェン)を追跡し、ドラッグの子であるドラッグエイリアスは他の可能な名前(例:アスピリン、アセフェン、アセタ、パラセタモールなど)を追跡します。

患者は1つの薬を服用できますが、患者が特定の薬と呼ぶのが好きなものを思い出せるようにしたいので、DrugではなくPatientテーブル内のDrugAliasを追跡しています。言い換えれば、患者がアセトアミノフェンアスピリンを呼んでいることを覚えておきたいと思います。

問題は、Drugを作成するたびにDrugと同じ名前のDrugAliasを作成するようなことをしない限り、患者がアセトアミノフェンをアセトアミノフェンと呼ぶことができないことです。これにより、重複が生じます。

他の誰かがこの問題に対する他の解決策を持っているかどうか疑問に思いましたか?

ありがとうございました!

4

2 に答える 2

0

率直に言って、本名をエイリアスとして保存するというアイデアは素晴らしいアイデアだと思います。

それは論理を単純化し、現実を反映します-薬はエイリアステーブルで何とでも呼ぶことができます。

親テーブルはレポート用で、子テーブルは検索用です。それは私には完全に理にかなっています。

したがって、データの重複が少しある場合はどうでしょうか。重複を取り除くことは、実質的に利益がないために多くの複雑さをもたらします。また、科学名は変更されないため、科学名をエイリアスと同じ名前と同期させておくデータ保守の問題はありません。

于 2012-11-22T20:50:46.517 に答える
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

あなたの問題は構造とデザインの1つです。ボヘミアンは一文でそれをうまく言いました。

これは、リレーショナルDB環境を持つ設計用です。適切なキー、適切な結合、および1つの適切なクエリを使用して、必要なすべてを実現できます。

于 2012-11-22T21:05:14.187 に答える