2012-08-17 56 views
1

我有一個關於數據庫表結構的查詢。 在SQL Server我的病人詳細信息表2008數據庫看起來是這樣的:如何連接來回數據庫行?

--PatientId(PK) - --PatientType-- --DoctorId(FK) - --DateOfVisit-- --PrescriptionId (FK) -

每位患者可以多次訪問醫院。我需要鏈接患者的所有訪問並以鏈接的方式顯示他們,管理員可以瀏覽上一次和下一次訪問..

因此,我認爲我只能通過爲每次訪問記錄一個VisitId。

我需要小心數據庫不應該加載不必要的字段。它也不應該嚴重影響獲取時間。

我認爲這些是可用的方法。如果有任何可用,建議我。

--PatientId(PK) - --PatientType-- --DoctorId(FK) - --DateOfVisit-- --PrescriptionId(FK) - --VisitId-- --PrevVisitId-- NextVisitId--

具有用於訪問一個單獨的表作爲

--VisitId(PK) - -PrevVisitId(FK) - --NextVisitId(FK) -

道歉,如果我的文章是重複的。糾正我,重定向我無論何時/何時需要。

+0

你正在試圖建立的東西,看起來像一個'醫院管理系統',並且有超過'100'分析圖/項目/ casestudies在谷歌這個。 – Yasser 2012-08-17 06:51:02

+0

@亞瑟是的,它是一個HMS。但抱歉,我找不到資源。如果你能幫助我一個鏈接,會很好。 – 2012-08-17 06:58:35

+0

@Catcall對不起,我需要15個聲望。我現在會研究它。謝謝你指導我。 – 2012-08-18 12:00:48

回答

1

所以我認爲我只能通過爲每次訪問創建一個帶有 VisitId的記錄來實現。

您需要每行訪問一行。每行需要一個密鑰。該密鑰不需要是單個身份號碼。我認爲最起碼你需要記錄每個訪問是

create table visits (
    patient_id integer not null, -- references patients (patient_id), not shown 
    doctor_id integer not null, -- references doctors (doctor_id), not shown 
    office_visit_start timestamp not null default current_timestamp, 
    primary key (patient_id, office_visit_start) 
); 

insert into visits values (1, 1, '2012-02-01 08:00'); 
insert into visits values (1, 1, '2012-02-01 15:00'); 
insert into visits values (1, 1, '2012-03-01 09:33'); 
insert into visits values (2, 1, '2012-02-01 09:00'); 

您可以找到相當簡單的查詢,上一頁和下一頁瀏覽次數(確切語法取決於您的DBMS平臺的不同而不同。) - 「office_visit_start」將給你是病人訪問的順序。

示例查詢。 。 。

-- Previous visit for patient # 1 (before 2012-02-01 15:00) 
select patient_id, max(office_visit_start) 
from visits 
where patient_id = 1 
    and office_visit_start < '2012-02-01 15:00' 
group by patient_id 

-- Next visit for patient # 1 (after 2012-02-01 15:00) 
select patient_id, min(office_visit_start) 
from visits 
where patient_id = 1 
    and office_visit_start > '2012-02-01 15:00' 
group by patient_id 
+0

謝謝。你非常幫助我。但抱歉,我無法獲得這個主鍵(patient_id,office_visit_start)' 我們可以在同一個表中有兩個主鍵嗎? – 2012-08-18 06:18:38

+0

一個主鍵,由兩列組成。我相信你的數據庫可以管理它;雖然你的框架可能不會。 – 2012-08-18 11:26:06

+0

另一個查詢請..如果我將患者詳細信息表作爲「--PatientId-- --PatientType-- - DoctorId(FK) - --Office_Visit_Start-- --PrescriptionId(FK) - 」(PatientId,Office_Visit_Start)作爲主鍵。?通過這個我可以避免創建一個新的訪問表。這會比創建新的訪問表有多高效?謝謝。 – 2012-08-20 05:44:04