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

Nhiều-nhiều trên cùng một bảng

Nếu mối quan hệ bạn đang mô tả là đối xứng, như trong "Bob là bạn của Joe" có nghĩa là "Joe cũng là bạn của Bob", thì bạn có thể đảm bảo trong mã của mình rằng càng nhỏ hơn trong số 2 ID người dùng thì cột đầu tiên và cột lớn hơn ở cột thứ hai. Ràng buộc này đảm bảo rằng các bản ghi trong bảng tra cứu của bạn sẽ là duy nhất. Điều đó cũng có nghĩa là khi thực hiện tra cứu, bạn thường phải tìm kiếm cả hai cột.

Ví dụ:nếu bạn đang cố gắng để có được tất cả bạn bè của Bob, bạn sẽ phải truy vấn các bản ghi có ID của Bob trong một trong hai cột. Điều này dẫn đến nhiều mã hơn một chút và có thể ảnh hưởng đến hiệu suất.

Nếu mối quan hệ có thể không đối xứng, như trong "Bob là bạn của Joe" không nhất thiết có nghĩa là "Joe cũng là bạn của Bob", thì bạn cần có 2 mục nhập cho mỗi cặp người dùng:Bob - Joe và Joe - Bob. Điều này có nghĩa là bảng tra cứu của bạn sẽ chứa số lượng mục nhập nhiều gấp đôi và trang web của bạn cũng rất thân thiện với người theo dõi:D Tất nhiên, bạn vẫn có thể chọn áp dụng hệ thống này mặc dù mối quan hệ của bạn là đối xứng.

Sử dụng phương pháp này, nếu bạn muốn có tất cả bạn bè của Bob, bạn chỉ cần chọn các bản ghi có ID của Bob trong cột đầu tiên. Có thể điều này có nghĩa là tra cứu nhanh hơn và ít mã hơn để bạn viết, nhưng một lần nữa, điều đó có nghĩa là bạn đang chiếm nhiều chỗ hơn trong cơ sở dữ liệu của mình.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xác thực và chèn PHP-Form bằng MySql

  2. Tính tổng kích thước dữ liệu của cột BLOB trong bảng

  3. Vấn đề với Tomcat gộp chung với Hibernate. Thời gian chờ của MySQL

  4. 12 Phương pháp Tốt nhất về Bảo mật MySQL / MariaDB cho Linux

  5. Lỗi lệnh ngoài đồng bộ hóa PHP