2016-04-23 4 views
1
CREATE TABLE if not exists PatientDetails 
(pt_id varchar(15) not null, 
    pt_name varchar(20) not null, 
    pt_sname varchar(20) not null, 
    pt_age numeric, 
    primary key(pt_id)); 

create table if not exists who_staging.Symptom (
sypt_id varchar(12) not null, 
symptom varchar(20) not null, 
primary key(sypt_id) 
); 

create table if not exists Medicine(
medi_id varchar(12) not null, 
medi_name varchar(20) not null, 
sypt_id varchar(12), 
foreign key(sypt_id) references who_staging.symptom(sypt_id), 
primary key(medi_id) 
); 

create table if not exists who_staging.FollowUp(
F_id varchar(10) not null, 
pt_id varchar(15), 
sypt_id varchar(12), 
medi_id varchar(12), 
foreign key(pt_id) references who_staging.PatientDetails(pt_id), 
foreign key(sypt_id) references who_staging.symptom(sypt_id), 
foreign key(medi_id) references who_staging.Medicine(medi_id), 
primary key(F_id) 
); 

この参照は以下の点で正しいですか?関連する4つのテーブル、患者の詳細、症状、医学およびフォローアップ

  1. 1人の患者が複数の症状を示すことがあります。
  2. 1つの症状に対して複数の薬を与えることができます。
  3. 複数の症状の場合、1つの薬を投与することができます。
  4. 1人の患者が複数のフォローアップを持つことができます。
  5. 特定のフォローアップ・ナンバーが選択されている場合、システムは、患者の詳細と、患者がどの症状のために服用しているかを表示する必要があります。

私は大いに

+1

pt_idはあまり熱くありません。なぜauto_inc int idのために撮影しないのですか?とにかくその患者のIDを誰が割り当てているのでしょうか? – Drew

答えて

0

私はそのPT_IDを仮定するつもりですが、そうでない場合@drewコメントがより良い選択であるいくつかの他のシステムから来ている任意の助けをいただければ幸いです。追加テーブルに自動インクリメントint idが必要です。これは、システムが自動的にインクリメントするためです。

1は正しいです - あなたのスキーマは患者ごとに複数のフォローアップを許可し、各フォローアップは1つの症状と1つの薬についてその患者のために行います。

2同じ症状

3と複数薬行が存在することができるので、正しいされるように動作します異なる症状

5で複数の薬剤の行が存在し得るため正しい患者IDを選択し、その患者のすべてのフォローアップを表示します。

全体として、これは良いスタートですが、キーの提案を検討してください。あなたは、あなたが行くにつれて改善するいくつかの方法を見つけるでしょう。

関連する問題