Mysql
 sql >> база данни >  >> RDS >> Mysql

Колона зависи от друга стойност на колоната

Можете да разрешите това, като добавите таблица на подтипове (аз също бих предпочел таблица за справка пред enum, още повече, защото искате да сте гъвкави и да добавите още типове по-късно):

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)

Ако искате да се съхраняват различни данни за другите опции, тогава можете да добавите EventYI таблица (за Yes Immediate ), EventNO и др.

Единственият проблем с този дизайн е, че нищо не пречи на събитие, което не е 'Yes Later' за добавяне в EventYL таблица, така че това трябва да бъде наложено в противен случай. Ако само MySQL имаше ограничения за проверка, таблицата можеше да се промени в:

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. MySQL получава всички уникални стойности между две колони

  2. не може да се свърже с mysql docker от локално

  3. Тип данни за оценка на MySQL 5 звезди?

  4. Как да попълним дупките в полетата за автоматично увеличение?

  5. Как трябва да напиша sql израз с условно умножение?