有关的四个表,PatientDetails,Symptoms,Medicine和Follow up

时间:2016-04-23 17:05:21

标签: mysql

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)
);

此引用是否适用于以下内容?

  1. 一名患者可能有多种症状。
  2. 对于一种症状,可以给予多种药物。
  3. 对于多种症状,可以给予一种药物。
  4. 一名患者可以进行多次随访。
  5. 当选择特定的跟进时,系统应显示患者的详细信息以及患者正在服用的药物,以了解他/她患有哪种症状。
  6. 我非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

我将假设pt_id来自其他系统,否则@drew评论是更好的选择。后续表应该具有自动增加int id,因为您的系统会创建它们,并且自动创建唯一键更好。

1是正确的,因为4是正确的 - 您的模式允许每位患者进行多次随访,每次随访都是针对该患者的一种症状和一种药物。

2是正确的,因为可能存在多个具有相同症状的药物行

3是正确的,因为可能存在多个具有不同症状的药物行

5将起作用,因此将选择患者ID并显示该患者的所有随访。

所以,总的来说,这是一个好的开始,但考虑关键的建议。您可能会找到一些方法来改进。