Sql 对依赖于引用表中的一组值的表进行建模,这些值可以同时存在,也可以不同时存在
我有一个表“医疗观察”,其中一个字段引用了另一个表“到达时的系统”,该表描述了可能的症状列表Sql 对依赖于引用表中的一组值的表进行建模,这些值可以同时存在,也可以不同时存在,sql,database,database-design,Sql,Database,Database Design,我有一个表“医疗观察”,其中一个字段引用了另一个表“到达时的系统”,该表描述了可能的症状列表 CREATE TABLE `patients`( id_patient INTEGER NOT NULL PRIMARY KEY, name VARCHAR(25) , address VARCHAR(50) , CONSTRAINT `uc_Info_Patient` UNIQUE (`id_patient`)
CREATE TABLE `patients`(
id_patient INTEGER NOT NULL PRIMARY KEY,
name VARCHAR(25) ,
address VARCHAR(50) ,
CONSTRAINT `uc_Info_Patient` UNIQUE (`id_patient`)
);
INSERT INTO `patients` values (1,'joe','joe´s address');
INSERT INTO `patients` values (2,'moe','moe´s address');
INSERT INTO `patients` values (3,'karl','karle´s address');
INSERT INTO `patients` values (4,'lenny','lenny´s address');
CREATE TABLE `symptoms_at_arrival` (
symptom_at_arrival varchar(30) primary key
);
INSERT INTO `symptoms_at_arrival` values ('vomit');
INSERT INTO `symptoms_at_arrival` values ('urine');
INSERT INTO `symptoms_at_arrival` values ('dizziness');
INSERT INTO `symptoms_at_arrival` values ('convulsion');
CREATE TABLE `medical_observations`(
id_medical_observation INTEGER NOT NULL PRIMARY KEY,
id_patient INTEGER NOT NULL,
symptom_at_arrival VARCHAR(30),
FOREIGN KEY (id_patient) references `patients` (id_patient),
FOREIGN KEY (symptom_at_arrival) references `symptoms_at_arrival` (symptom_at_arrival ),
CONSTRAINT `uc_Info_medical_Observation` UNIQUE (`id_medical_observation`,`id_patient`)
);
我的疑问是,当患者出现多种症状时,如何建模或存储该病例。。。不仅仅是一个。
如果是这样的话,症状的名称就足够了
但如果患者同时出现多个症状 更新
我做了一个,我在考虑添加一个表,用1和0表示患者是否出现某些症状。。。这是正确的吗?您必须在外键中建立连接
|patient| |medical_observations| |symptoms_at_arriving|
--------- ---------------------- ----------------------
**id** 1 ----| **id_medical_observation** |-----1 **id**
name |-M **id_patient** | symptom_at_arrival
**symptom_at_arrival** M---|
试试这个,这里没有mysql测试,使得表多主键同时支持多个症状
CREATE TABLE `symptoms_at_arriving` (
id integer not null primary key autoincrement,
symptom_at_arrival varchar(30)
);
INSERT INTO `symptom_at_arrival' values ('vomit');
INSERT INTO `symptom_at_arrival` values ('urine');
INSERT INTO `symptom_at_arrival` values ('dizziness');
INSERT INTO `symptom_at_arrival` values ('convulsion');
CREATE TABLE `medical_observations`(
id_medical_observation INTEGER NOT NULL,
id_patient INTEGER NOT NULL,
symptom_at_arrival integer not null,
FOREIGN KEY (id_patient) references `patients` (id_patient),
FOREIGN KEY (symptom_at_arrival) references `symptoms_at_arriving` (symptom_at_arrival,
PRIMARY KEY (id_medical_observation, id_patient, symptom_at_arrival)
)) “但如果患者同时出现多个症状”-可能会变成僵尸。顺便说一句,你的头衔似乎与你所问的问题无关。我假设你也有一张病床。患者和医学观察之间的关系应为1对多(或多对多,如果每个患者有多个观察)。您的症状表应该有症状id字段。我做了一个SQLFIDLE,但是为什么添加症状id字段很重要?我想添加一种表,用1和0表示患者是否显示某些症状。。。这是否正确?请发布您希望从这些表格中生成的报告(结果)类型。我希望获得观察和患者的所有信息,如果患者出现任何类型的症状。。。比如姓名、地址、症状列表(如果有的话)……有没有办法选择患者出现的症状?这是一个糟糕的非标准解决方案。这也是错误的!不是我的反对票。是的,使用内部连接,像我说的病人内部连接(医学观察-到达时的内部连接症状),不能测试它或者没有正确理解问题@cMinor如果你想我可以删除这个答案谢谢你的回答,这里的问题是我不知道如何建模这样的表。。。