Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Lưu trữ các khóa ngoại dư thừa để tránh tham gia

Các phép nối là cách hoạt động của các DBMS quan hệ. Tìm hiểu về và sử dụng chuẩn hóa.

Nếu điều này đúng với mọi dịch vụ thì cơ sở dữ liệu của bạn phải chịu một hạn chế. Đó là (select service from Service_has_transaction join Transaction_has_wallet) là một tập hợp con của (select service from Service_has_transaction join Transaction_has_wallet join Wallet_has_bonus) .

Hầu hết các DBMS SQL không cho phép bạn thể hiện ràng buộc đó một cách khai báo và không biết cách tối ưu hóa việc thực thi nó. Tuy nhiên, có một thành ngữ SQL mà chúng ta có thể sử dụng để diễn đạt và thực thi nó một cách khai báo. (Đoán định nghĩa bảng của bạn :) Đầu tiên hãy thêm bonus cột thành Transaction_has_wallet và khóa ngoại từ Transaction_has_wallet (wallet, bonus) tới Wallet_has_bonus . Sau đó, thêm các cột ví và tiền thưởng vào Service_has_transaction và khóa ngoại từ Service_has_transaction (transaction, wallet, bonus) đến Transaction . Điều này thêm các cột dư thừa nhưng vẫn giới hạn cơ sở dữ liệu ở các trạng thái hợp lệ vì các ràng buộc khóa ngoại ngăn các giá trị thừa không bị sai. (Hy vọng rằng đây là một ví dụ khuyến khích để học về cách thể hiện các ràng buộc tùy ý thông qua trình kích hoạt.)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách sử dụng python mysqldb để chèn nhiều hàng cùng một lúc

  2. nếu không tồn tại, chèn trong MySql

  3. Làm cách nào để dễ dàng nhập nhiều tệp sql vào cơ sở dữ liệu MySQL?

  4. Ngăn chặn khai thác nút quay lại? PHP

  5. Với PDO, làm cách nào tôi có thể đảm bảo rằng một câu lệnh CẬP NHẬT đã thành công?