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

Merancang database resep yang perlu menyertakan bahan serta sub-resep

Sepertinya Anda memerlukan model database yang mirip dengan ini:

Model ini memiliki properti berikut:

  • Pada dasarnya, setiap resep adalah serangkaian langkah.
  • Setiap langkah memiliki urutannya relatif terhadap langkah lain dari resep yang sama (STEP_NO), satuan (massa, volume, hitungan...), besaran dalam satuan itu, dll.
  • Langkah tertentu terhubung ke bahan (bila INGREDIENT_ID bukan NULL) atau ke resep lain (bila SUBRECIPE_ID bukan NULL).
  • Selain itu, STEP adalah tabel persimpangan yang cukup standar yang menerapkan hubungan banyak ke banyak, yang berarti bahan yang sama dapat digunakan dalam beberapa resep (atau bahkan beberapa langkah dari resep yang sama) dan juga resep dapat "sub-resep" dari beberapa resep lainnya.
  • Ini pada dasarnya adalah grafik berarah. Model data itu sendiri tidak akan mencegah siklus - siklus tersebut harus dihindari pada tingkat kode klien dan mungkin dideteksi oleh pemicu.

Jika MySQL mendukung batasan CHECK (yang tidak ), Anda dapat memastikan bahwa salah satu (tetapi tidak keduanya) bukan NULL seperti ini:

CHECK (
    (INGREDIENT_ID IS NULL AND SUBRECIPE_ID IS NOT NULL)
    OR (INGREDIENT_ID IS NOT NULL AND SUBRECIPE_ID IS NULL)
)

Sepertinya, Anda memerlukan pemicu untuk itu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PERIOD_DIFF() Contoh – MySQL

  2. Apakah SET CHARACTER SET utf8 diperlukan?

  3. Kesalahan rel saat menginstal mysql2 (mysql2-0,3.20)

  4. mysql mengubah beberapa baris menjadi kolom dalam satu baris

  5. bagaimana cara mengabaikan backtick di codeigniter saat menggunakan catatan aktif? saya perlu memesan berdasarkan kasus