Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 对依赖于引用表中的一组值的表进行建模,这些值可以同时存在,也可以不同时存在_Sql_Database_Database Design - Fatal编程技术网

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如果你想我可以删除这个答案谢谢你的回答,这里的问题是我不知道如何建模这样的表。。。