sql >> Databáze >  >> RDS >> Mysql

Tabulka přátel MySQL

Za předpokladu, že všichni vaši přátelé jsou také v tabulce uživatelů, budete potřebovat tabulku přátel, která definuje jednoduchý vztah jeden k mnoha – propojuje tabulku uživatelů zpět k sobě. Takže

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

Friends Table
UserIDLink1 int
UserIDLink2 int 
[other attribute field]

Kde UserIDLink1 a UserIDLink2 jsou cizí klíče v tabulce Users.

Takže například když mám tři uživatele

1 Joe
2 Bill
3 Jane

a Joe a Jane jsou přátelé, pak by tabulka Přátel obsahovala jeden řádek

1 3

Výše uvedené implicitně předpokládá, že pokud je A přítel B, pak B je přítelem A – pokud tomu tak není, pravděpodobně budete chtít přejmenovat UserIDLink1 a UserIDLink2 na UserID a FriendID nebo podobné – v takovém případě byste mít také až dvojnásobek záznamů.

Také pro obousměrnou konfiguraci (A je přítel B, pokud B je přítel A) byste měli nastavit indexy v tabulce Přátelé pro (UserIDLink1,UserIDLink2) a (UserIDLink2,UserIDLink1), abyste zajistili, že přístup bude vždy efektivní, pokud hledali jsme buď přátele joe nebo přátele jane (pokud jste nenastavili druhý index, první dotaz by byl efektivním vyhledáváním indexu, ale druhý by vyžadoval úplné prohledání tabulky).

Pokud by vaše odkazy nebyly obousměrné, nebylo by to nutné ke zjištění, kdo jsou přátelé A, ale stále byste to pravděpodobně nejvíce vyžadovali, protože pravděpodobně také budete muset zjistit, kdo je přítel B.



  1. Příklady ACOS() v SQL Server

  2. Jak zajistit, aby MySQL správně zvládalo UTF-8

  3. Jak najít největší tabulku v databázi MySQL?

  4. Jak spojit tabulky dohromady - SQL