2016-07-09 16 views
0

Zum Beispiel habe ich ein Modell, das ein 'inDate' und 'outDate' hat. Das Modell ist "aktiv", während das, was wir verfolgen, "in" ist und inaktiv wird, wenn es "out" ist.Was ist besser im DB Design? Haben Sie einen expliziten Wert oder leiten Sie diesen Wert von anderen im Modell ab?

Ist es besser, eine "aktive" Eigenschaft zu haben oder einfach den aktiven Zustand abzuleiten, indem Sie prüfen, ob das outDate existiert oder nicht?

Ich finde den aktiven Zustand ein wenig redundant, weil es nicht aktiv sein kann, wenn es ein 'outDate' hat, und es kann nicht inaktiv sein, wenn es keinen hat.

Antwort

1

Es hängt davon ab, wie Sie die Tabelle verwenden und wie viele Daten im schlimmsten Fall da sein werden. Also müssen Sie die Antworten für diese herausfinden.

Ich würde es so machen. Eine Nachschlagetabelle, die alle gültigen Zustände enthält, und eine Aktivitätstabelle, um Zeitstempel für jede Zustandsänderung aufzuzeichnen.

State_ID Description 
0   IN 
1   OUT 
... 
... 
... 


State Activity 

State  State_Date 
0    t1 
1    t2 
... 
... 
... 
+0

Oh, das ist perfekt. Ich habe bereits etwas Ähnliches angewendet, um eine Geschichte von Ereignissen für andere Modelle zu erhalten, aber es trifft auch hier perfekt zu! Vielen Dank! – fmtoffolo

+0

@fmtoffolo Sie sind sehr willkommen. – objectNotFound