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

Menyimpan kunci asing yang berlebihan untuk menghindari bergabung

Bergabung adalah cara kerja DBMS relasional. Pelajari dan gunakan normalisasi.

Jika ini berlaku untuk setiap layanan, maka basis data Anda tunduk pada batasan. Itu adalah (select service from Service_has_transaction join Transaction_has_wallet) adalah bagian dari (select service from Service_has_transaction join Transaction_has_wallet join Wallet_has_bonus) .

Sebagian besar DBMS SQL tidak mengizinkan Anda mengungkapkan batasan itu secara deklaratif dan tidak tahu cara mengoptimalkan penerapannya. Namun ada idiom SQL yang dapat kita gunakan untuk mengekspresikan &menegakkannya secara deklaratif. (Tebak definisi tabel Anda :) Pertama tambahkan bonus kolom ke Transaction_has_wallet dan kunci asing dari Transaction_has_wallet (wallet, bonus) ke Wallet_has_bonus . Kemudian tambahkan kolom dompet &bonus ke Service_has_transaction dan kunci asing dari Service_has_transaction (transaction, wallet, bonus) ke Transaction . Ini menambahkan kolom yang berlebihan tetapi tetap membatasi database ke status yang valid karena batasan kunci asing mencegah nilai yang berlebihan menjadi salah. (Semoga ini adalah contoh motivasi untuk belajar mengekspresikan batasan sewenang-wenang melalui pemicu.)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Periksa apakah PHP telah dikompilasi --with-mysql

  2. fungsi php mysql dengan parameter opsional

  3. Pencarian JSON di laravel fasih

  4. Cara membuat menu navigasi multi-level berbasis database menggunakan Laravel

  5. Simpan Aksen di Database MySQL