Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wiele do wielu na tym samym stole

Jeśli relacja, którą opisujesz, jest symetryczna, na przykład „Bob jest przyjacielem Joe” oznacza „Joe jest także przyjacielem Boba”, możesz upewnić się w swoim kodzie, że mniejszy z dwóch identyfikatorów użytkownika zostanie umieszczony w pierwsza kolumna, a większa idzie na drugą kolumnę. To ograniczenie w dużej mierze zapewnia, że ​​rekordy w tabeli przeglądowej będą unikatowe. Oznacza to również, że podczas wyszukiwania zwykle musisz przeszukiwać obie kolumny.

Na przykład, jeśli chcesz zdobyć wszystkich znajomych Boba, musisz zapytać o rekordy, które mają identyfikator Boba w dowolnej kolumnie. Prowadzi to do nieco większej ilości kodu i prawdopodobnie wpływa na wydajność.

Jeśli związek może być asymetryczny, ponieważ „Bob jest przyjacielem Joe” niekoniecznie oznacza „Joe jest także przyjacielem Boba”, wtedy potrzebne są 2 wpisy dla każdej pary użytkowników:Bob – Joe i Joe – Bob. Oznacza to, że Twoja tabela będzie zawierać dwa razy więcej wpisów, a także, że Twoja witryna jest bardzo przyjazna prześladowcom :D Oczywiście nadal możesz zastosować ten system, nawet jeśli Twoja relacja jest symetryczna.

Używając tej metody, jeśli chcesz uzyskać wszystkich znajomych Boba, wystarczy wybrać rekordy z identyfikatorem Boba w pierwszej kolumnie. Możliwe, że może to oznaczać szybsze wyszukiwanie i mniej kodu do napisania, ale znowu oznacza to, że zajmujesz więcej miejsca w bazie danych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP Dodaj przycisk, aby wyświetlić całą zawartość całego rekordu MySQL

  2. Zakłopotany wyjątek SQL dla JDBC

  3. Solr - DIH definiuje i importuje pola wiele do wielu

  4. Czy można wybrać z aliasu w mysql?

  5. Kopiowanie baz danych mysql z jednego komputera na drugi