Mysql
 sql >> база данни >  >> RDS >> Mysql

Много към много на една маса

Ако връзката, която описвате, е симетрична, както в „Боб е приятел на Джо“ означава „Джо също е приятел на Боб“, тогава можете да се уверите в кода си, че по-малкият от 2-те потребителски идентификатори отива на първа колона, а по-голямата отива във втората колона. Това ограничение до голяма степен гарантира, че записите във вашата справочна таблица ще бъдат уникални. Това също така означава, че когато извършвате търсене, обикновено трябва да търсите и в двете колони.

Например, ако се опитвате да получите всички приятели на Боб, ще трябва да потърсите записи, които имат идентификатора на Боб в която и да е колона. Това води до малко повече код и вероятно влияние върху производителността.

Ако връзката може да бъде асиметрична, както в „Боб е приятел на Джо“ не означава непременно „Джо също е приятел на Боб“, тогава имате нужда от 2 записа за всяка двойка потребители:Боб – Джо и Джо – Боб. Това означава, че вашата таблица за търсене ще съдържа два пъти повече записи и също така, че вашият сайт е много удобен за преследване :D Разбира се, все още можете да изберете да приложите тази система, въпреки че връзката ви е симетрична.

Използвайки този метод, ако искате да получите всички приятели на Боб, просто трябва да изберете записите с идентификатора на Боб в първата колона. Възможно е това да означава по-бързо търсене и по-малко код за писане, но отново означава, че заемате повече място във вашата база данни.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вземете най-добрия(и) голмайстор(и) в MySQL

  2. Мога ли да използвам ON DUPLICATE KEY UPDATE със заявка INSERT, използвайки опцията SET?

  3. TIMESTAMP означава?

  4. Експортиране на данни от mysql в xml с помощта на php

  5. Тествайте за NULL в множество колони в MySQL