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

Tabela znajomych MySQL

Zakładając, że wszyscy twoi znajomi są również w tabeli użytkowników, będziesz potrzebować tabeli znajomych, która definiuje prostą relację jeden-do-wielu - łącząc tabelę użytkowników z nią samą. Więc

User Table
UserID int identity not null
[other attribute fields]

Friends Table
UserIDLink1 int
UserIDLink2 int 
[other attribute field]

Gdzie oba UserIDLink1 i UserIDLink2 są kluczami obcymi w tabeli Użytkownicy.

Na przykład, jeśli mam trzech użytkowników

1 Joe
2 Bill
3 Jane

a Joe i Jane są przyjaciółmi, wtedy tabela Przyjaciele zawierałaby jeden wiersz

1 3

Powyższe domyślnie zakłada, że ​​jeśli A jest przyjacielem B, to B jest przyjacielem A — jeśli tak nie jest, prawdopodobnie chcesz zmienić nazwy UserIDLink1 i UserIDLink2 na UserID i FriendID lub podobne — w takim przypadku mają też nawet podwojenie rekordów.

Również w przypadku konfiguracji dwukierunkowej (A jest przyjacielem B, jeśli B jest przyjacielem A) należy ustawić indeksy w tabeli Znajomi dla (UserIDLink1,UserIDLink2) i (UserIDLink2,UserIDLink1), aby zapewnić, że dostęp jest zawsze wydajny, jeśli szukaliśmy przyjaciół joe lub przyjaciół jane (jeśli nie ustawiłeś drugiego indeksu, to pierwsze zapytanie będzie skutecznym wyszukiwaniem indeksu, ale drugie wymagałoby pełnego skanowania tabeli).

Jeśli twoje linki nie byłyby dwukierunkowe, nie byłoby to konieczne, aby dowiedzieć się, kim są znajomi A, ale prawdopodobnie najbardziej tego potrzebujesz, ponieważ prawdopodobnie będziesz musiał również dowiedzieć się, z kim B jest przyjacielem.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nieznany problem z kolumną z aliasem mysql

  2. Jak skonfigurować bazę danych MySQL WordPress w chmurze

  3. php:sesje a baza danych

  4. Czy mogę użyć przygotowanej instrukcji PDO do powiązania identyfikatora (nazwy tabeli lub pola) lub słowa kluczowego składni?

  5. MySql wybierający wartość domyślną, jeśli nie ma wyników?