sql >> Databasteknik >  >> RDS >> Mysql

Kolumn beroende av annat kolumnvärde

Du kan lösa detta genom att lägga till en undertypstabell (jag skulle också föredra en uppslagstabell framför enum, ännu mer eftersom du vill vara flexibel och lägga till fler typer senare):

ChoiceType
----------            --- the lookup table
Choice      
Desciption
PRIMARY KEY(Choice)

Event
-----                 --- your table
EventId 
Choice 
... other stuff for all events
PRIMARY KEY(EventId)
FOREIGN KEY (Choice)
  REFERENCES ChoiceType(Choice)

EventYL 
-------               --- the YesLater table
EventId 
EventDate
... other stuff for YesLater events only
PRIMARY KEY(EventId)
FOREIGN KEY (EventId)
  REFERENCES Event(EventId)

Om du vill ha annan data lagrad för de andra valen kan du lägga till en EventYI tabell (för Yes Immediate ), ett EventNO , etc.

Det enda problemet med den här designen är att ingenting hindrar en händelse som inte är 'Yes Later' som ska läggas till i EventYL tabell, så detta bör tillämpas på annat sätt. Om bara MySQL hade kontrollbegränsningar, kunde tabellen ändras till:

EventYL 
-------                --- YesLater version 2
EventId 
Choice
EventDate
PRIMARY KEY(EventId, Choice)
FOREIGN KEY (EventId, Choice)
  REFERENCES Event(EventId, Choice)
CHECK (Choice = 'YL')



  1. INFOGA I ... VÄLJ FRÅN ... PÅ DUPLIKATNYCKELUPPDATERING

  2. RADERA alla dubbletter av ämnen med få villkor

  3. Hur kan jag undvika hakparenteser i en LIKE-sats?

  4. MySQL INSERT eller REPLACE kommandon