2011-10-24 8 views
2

私は医者のオフィスと薬局のデータベースモデルを設計しており、顧客はの顧客の患者に関するデータを保存するよう頼んでいます。顧客は薬局で購入した患者であり、同じ時間に、そして逆に患者になる。この状況をどう管理するか?私がそれぞれのエンティティに対して1つのエンティティを作成すると、ある人が両方のテーブルにいる可能性があります。助言がありますか?MySQLで共通の属性を持つ2つのエンティティを実装する方法は?

答えて

2

二つの方法:

  1. 一つのテーブルと呼ばれる人のテーブルには、ファイル「is_customer」と本当のことができ「is_patient」/偽

  2. 3つのテーブルのすべてを保存する人々のための1つを持っていますユニークなIDを持つ関連データ(名前、住所、電話番号など)、ユニークなIDのテーブルと人物テーブルへの参照である患者のための1つのテーブル、およびユニークなIDの単なるテーブルである顧客のための1つのテーブルおよびpeopleテーブルへの参照。顧客と患者のためのデータがまったく同じである場合

+0

オプション1ですが、インジケータ列が必要であることはわかりません。これらの値は、関連するテーブルの 'person_id'/etcの存在に基づいて作成できます。 –

+0

ええ、それはオプション2のことです。関連するテーブルの作成は最初のものを参照します:)。 – Whetstone

2

は、あなたが個人情報を持つ単一のテーブルやビットまたは整数かもしれないいずれかtype列を持つことができます。このtype列は、レコードが患者か顧客かを示します。患者が顧客でもある場合の繰り返し記録は見当たりませんが、このような状況を回避したい場合は、リンクテーブルを作成する必要があります。以下のような何か:

person 
(id, name, address, ...) 

そして

person_type(person_id, type_id) 

顧客と患者の両方だ人が、このテーブル内の2つのエントリを持つことになります。 type(顧客/患者)ごとに1つ

関連する問題