2014-01-31 64 views
0

我有兩個表,病人和醫生:病人表數據庫設計

CREATE TABLE "PATIENT" ( 
    "PATIENT_ID" NUMBER NOT NULL ENABLE, 
    "PATIENT_NAME" VARCHAR2(40), 
    "AGE" NUMBER, 
    "SEX" VARCHAR2(12), 
    "PLACE" VARCHAR2(40), 
    "PHONE_NUMBER" NUMBER, 
    "DOCTOR_ID" NUMBER, 
    "REGISTRATION_DATE" DATE, 
    CONSTRAINT "PATIENT_PK" PRIMARY KEY ("PATIENT_ID") ENABLE, 
    CONSTRAINT "DOCTOR_ID" FOREIGN KEY ("DOCTOR_ID") 
    REFERENCES "DOCTOR" ("DOCTOR_ID") ENABLE 

CREATE TABLE "DOCTOR" ( 
    "DOCTOR_ID" NUMBER NOT NULL ENABLE, 
    "DOCTOR_NAME" VARCHAR2(40) NOT NULL ENABLE, 
    "PLACE" VARCHAR2(40), 
    "PHONE_NUMBER" NUMBER, 
    CONSTRAINT "DOCTOR_PK" PRIMARY KEY ("DOCTOR_ID") ENABLE 
) 

患者可以去看醫生幾次(不同的醫生也可以),所以我必須插入一個鍵上的值。這裏PATIENT_ID是主鍵,所以它不能接受該鍵上的多個值。

我該如何識別唯一記錄患者所有醫生就診的記錄?我將如何創建一個符合我要求的耐心桌子?

+0

如果病人蔘觀訪問不同的不同的醫生,將她的ID變化? – Miller

回答

1

用於記錄訪問創建一個額外的表:

CREATE TABLE DOCTOR_VISITS (
DOCTOR_ID int references DOCTOR(DOCTOR_ID) 
PATIENT_ID int references PATIENT(PATIENT_ID) 
VISIT_DATE DATE, 
) 

這將允許您跟蹤任何患者來訪任何醫生,並記錄訪問的日期。

+0

如何管理的日期屬性,可以在每次訪問日期將改變 – techLearner

+0

我添加了一個VISIT_DATE領域上表。 –

+0

現在是否有必要將患者檢查表的doctor_id作爲外鍵 – techLearner

1

如果醫生可以訪問患者不止一次創建一個額外的表像

CREATE TABLE DOCTOR_VISITS (
DOCTOR_ID int references DOCTOR(DOCTOR_ID) 
PATIENT_ID int references PATIENT(PATIENT_ID) 
VISIT_DATE date 
CONSTRAINT visit_pk PRIMARY KEY (DOCTOR_ID,PATIENT_ID,VISIT_DATE) 
) 

這將使每天1次訪問。如果您需要更多,我會添加時間到該日期字段。

+0

現在需要患者表將doctor_id作爲外鍵 – techLearner

+0

@techLearner:不再有。 – kta

1

我想建立在Tommo1977的答案。 我絕對同意交匯表是正確的方法。 但是,請記住,諸如[DOCTOR_ID,PATIENT_ID,VISIT_DATE(有或沒有時間分量)的複合主鍵經常通過許多其他表(通過外鍵)複製。因此,我建議如下:

CREATE TABLE DOCTOR_VISITS (
VISIT_ID int 
DOCTOR_ID int references DOCTOR(DOCTOR_ID) 
PATIENT_ID int references PATIENT(PATIENT_ID) 
VISIT_DATE date 
CONSTRAINT visit_pk PRIMARY KEY (VISIT_ID) 
)