sql >> Database >  >> RDS >> Mysql

Kolom afhankelijk van andere kolomwaarde

Je zou dit kunnen oplossen door een subtypetabel toe te voegen (ik heb ook liever een opzoektabel dan een opsomming, vooral omdat je flexibel wilt zijn en later meer typen wilt toevoegen):

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)

Als je andere gegevens wilt opslaan voor de andere keuzes, dan kun je een EventYI . toevoegen tabel (voor Yes Immediate ), een EventNO , enz.

Het enige probleem met dit ontwerp is dat niets een gebeurtenis verhindert die niet 'Yes Later' . is toe te voegen in de EventYL tabel, dus dit moet anders worden afgedwongen. Als alleen MySQL controlebeperkingen had, zou de tabel kunnen worden gewijzigd in:

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



  1. Mysql-query om alle rijen te vinden die dezelfde waarden hebben als een andere rij

  2. Hoe kan ik een MySQL TIMEDIFF formatteren zonder seconden?

  3. MySQL SELECT MIN voor altijd, maar keer alleen terug als TUSSEN datums

  4. Voorkomen dat de gebruiker hetzelfde record bewerkt