sql >> Database teknologi >  >> RDS >> Mysql

Kolonne afhængig af anden kolonneværdi

Du kan løse dette ved at tilføje en undertypetabel (jeg ville også foretrække en opslagstabel frem for enum, endnu mere, fordi du vil være fleksibel og tilføje flere typer senere):

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)

Hvis du vil have andre data gemt for de andre valg, så kan du tilføje en EventYI tabel (for Yes Immediate ), en EventNO osv.

Det eneste problem med dette design er, at intet forhindrer en begivenhed, der ikke er 'Yes Later' skal tilføjes i EventYL tabel, så dette bør håndhæves ellers. Hvis kun MySQL havde check-begrænsninger, kunne tabellen ændres til:

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



  1. Uordnede resultater i SQL

  2. Sådan indstilles databasens tidszone i application.ini

  3. Sammenføj to tabeller, der matcher en kolonne med flere værdier

  4. Ikke i stand til at hente Unicode-data på hindi fra PHP og MySQL