Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kolom tergantung pada nilai kolom lainnya

Anda dapat menyelesaikan ini dengan menambahkan tabel subtipe (saya juga lebih suka tabel pencarian daripada enum, terlebih lagi karena Anda ingin fleksibel dan menambahkan lebih banyak tipe nanti):

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)

Jika Anda ingin data yang berbeda disimpan untuk pilihan lain, maka Anda dapat menambahkan EventYI tabel (untuk Yes Immediate ), sebuah EventNO , dll.

Satu-satunya masalah dengan desain ini, adalah tidak ada yang mencegah peristiwa yang bukan 'Yes Later' untuk ditambahkan di EventYL tabel, jadi ini harus diberlakukan sebaliknya. Jika saja MySQL memiliki batasan pemeriksaan, tabel dapat diubah menjadi:

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. meledakkan array menjadi string yang dipisahkan koma dari kueri mysql

  2. Permintaan MySQL tidak berfungsi saat menggunakan variabel php di mana klausa

  3. kategori php, sub kategori pohon

  4. Contoh WAKTU LOKAL – MySQL

  5. Fungsi rekursif PHP untuk menghapus semua node anak menyebabkan stackoverflow