mysql - 四个相关表,PatientDetails、Symptoms、Medicine 和 Follow up

标签 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. 当选择特定的跟进编号时,系统应显示患者的详细信息以及患者正在服用什么药物来治疗他/她所遭受的症状。

如果有任何帮助,我将不胜感激

最佳答案

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

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

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

3 是正确的,因为可以有多个不同症状的药物行

5 将起作用,因此将选择一个患者 ID 并显示该患者的所有跟进情况。

因此,总的来说,这是一个好的开始,但请考虑 key 的建议。您可能会找到一些改进的方法。

关于mysql - 四个相关表,PatientDetails、Symptoms、Medicine 和 Follow up,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36813864/

相关文章:

mysql - select * from table rand() 如何工作?

mysql - 使用 VB.NET 将数据插入 MySQL 表

mysql - 列 QuerySet API (Django) 的最后一个值

php - MYSQL 表中的时间戳与 PHP 变量不工作之间的比较 - PHP MYSQL

mysql查询显示为名为department的列创建的所有枚举值?

mysql - 一天的摘要或运行查询并对结果求和?

Mysql:插入时备份?

mysql - 在 MySQL 中查询带有对象数组的 JSON 列

mysql排名和计数减法

MySQL MEMORY 引擎性能 - 并发插入与更新