2016-09-25 3 views
0

Ich habe ein Formular, das (unter anderem) fragt, ob ein Patient bestimmte medizinische Bedingungen hat und ob einer seiner Eltern bestimmte Erkrankungen hatte/hatte. Was ist der beste Weg, diese Informationen in einer relationalen Datenbank zu speichern?klinischer Fragebogen relationale db

Im Interesse der Diskussionen betrachten wir einen einzigen medizinischen Zustand, Diabetes. Bitte beachten Sie, dass ich mindestens 25 Bedingungen für die Aufnahme habe.

Ich habe zwei mögliche Lösungen in Betracht gezogen, aber ich bin auch nicht zufrieden mit.

1. Verwenden Sie einen Untersuchungstisch mit den folgenden Feldern:

PatientId  -- integer 
Diabetes  -- boolean 
DiabetesFather -- boolean 
DiabetesMother -- boolean 

Das Problem hierbei ist, dass die Anzahl der Felder explodierte; Für jede Bedingung habe ich 3 Felder.

2. Verwenden Sie einen Bedingungen Tabelle mit den folgenden Feldern

PatientOrPatientParentId -- integer 
Diabetes     -- boolean 

In diesem Fall sind die Eltern der Patienten haben in der DB als pseudo-Patienten eingeführt werden.

Antwort

1

Es gibt viele mögliche Lösungen, und eine Alternative zu den in der Frage aufgelisteten wäre es zu modellieren drei Tabellen, wie folgt aus:

Patients (PatientId (PK), PatientName, ...) 
-- example: 1, "Patient1" 
Conditions (ConditionID (PK), ConditionName, ...) 
-- example: 1, "Diabetes" 
PatientCond (PatientID (FK), ConditionID (FK), PatientStatus, FatherStatus, MotherStatus) 
-- example: 1, 1, true, false, true 

eine Verknüpfungstabelle zu verwenden ist eine gemeinsame Lösung für viele Modellierung zu vielen Beziehungen.