Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Kolumna zależna od innej wartości kolumny

Możesz rozwiązać ten problem, dodając tabelę podtypów (wolałbym również tabelę przeglądową niż enum, nawet bardziej, ponieważ chcesz być elastyczny i dodać więcej typów później):

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)

Jeśli chcesz przechowywać inne dane dla innych opcji, możesz dodać EventYI tabela (dla Yes Immediate ), EventNO itp.

Jedynym problemem związanym z tym projektem jest to, że nic nie stoi na przeszkodzie zdarzeniu, które nie jest 'Yes Later' do dodania w EventYL tabeli, więc powinno to być egzekwowane w przeciwnym razie. Gdyby tylko MySQL miał ograniczenia sprawdzające, tabela mogłaby zostać zmieniona na:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Spring Boot JPA MySQL:Nie udało się określić odpowiedniej klasy sterownika

  2. Czy wyliczenie w MySQL musi być NIE NULL?

  3. Powtarzanie wydarzeń w n-ty dzień powszedni każdego miesiąca

  4. Błąd importu MySQLdb i Pythona

  5. Wstawianie obiektu danych PHP nie działa