-1

我有一个表'medical_observations',在一个字段中引用了另一个表'sypstoms_at_arriving',它描述了可能的症状列表。

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

我的疑问是当患者有多种症状时如何建模或存储病例……而不仅仅是一种。如果是这样的话,症状的名称就足够了......

但如果患者同时表现出多种症状呢?

更新

我做了一个sqlfiddle,我想添加一种表,用 1 和 0 表示患者是否表现出某种症状……那对吗?

4

1 回答 1

1

您必须在外键中建立连接

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

);

于 2013-03-03T01:04:46.467 回答