Ahogy áruház (mysql)
Van egy lista, például, a felhasználók, amelyek a táblázatban tárolt: users.id = 1, users.id = 2. users.id = 193
Tegyük fel, hogy a felhasználó, hogy barátai - a többi felhasználó, azaz a id = 1 barátságos 2, 8, 39, 43.
Nem tudom eldönteni, hogyan lehet a legjobban tárolni ezeket a kapcsolatokat?
Az első dolog, ami eszébe jut -, hogy hozzon létre egy táblázatot az M-to-M, users_friends és tárolja
u_id - F_ID írja
1 - 2
1-8
1-39
1-43
De aztán kiderül, hogy száz barátkozni száz volt, 100 * 100 INSERTov, majd frissítse - minden cső, úgy tűnik.
Második - ez tárolja a felhasználó sorban a barátok, és mentse el egy listát id1.friends = (2,8,39,43).
De aztán, hogy megtudja, a Covo, vagy hogy a felhasználónak kell választani a barátaim segítségével, mint a, ha jól értem? De ne a 12 LIKE LIKE nem döntött 123 mellé a szeparátor?
Azonnali, mint általában tennie, hogy megoldja ezt a problémát.
Bocs, ha tuplyu.
UPD. Kedves, sajnálom, hogy nem egy személyes választ minden - de köszönöm minden szépen megértette, én jár a törvény szerint. Köszönjük!
Ezt megteheti: tartsa barátok id elosztjuk «|». Ezután például egy kérelem «SELECT * FROM felhasználók WHERE freinds LIKE '% | 123 |%'» kiválasztja csak azok, akik barátai a felhasználó id = 123.
Ez már csak így rossz, hogy a szép szerkesztés és / vagy törlése nem fog működni.
El tudod képzelni, mi fog fordulni a keresést barátja szerver? Meg fog halni minden egyes alkalommal, ha Membury lesz legalább néhány ezer
Hmm. Ez, kedves nem tanácsolom.
Ha van egy vonal _1,2,3,4_ majd FIND_IN_SET prorulit csodálatos.
De ha ez oochen szeretne használni egy ilyen mtod.
A MySQL a típus SET adatokat. Azt hiszem, ez alkalmas egy ilyen feladat, ha a barátok száma - nem több, mint 64.
Ellenkező esetben, ha kész van adat, hogy a barátok 100km 100 felhasználó - ez nem 10.000 vonalak és 5.000. Ha a környezet minden felhasználó yavyadetsya barátodnak többnyire ostaltnyh felhasználók, akkor feltételezhető, hogy alapesetben mindegyik barátaim, és tárolják az információkat, nem Frendo.
Ha a mátrix van töltve barát nem sok, azaz minden felhasználó Freund nem több mint 10% -a az összes felhasználó, akkor próbálja használni a algoritmusokat ritka mátrixok.
Kíváncsi vagyok, hány más módon megoldani ezt a problémát „a szamár” fognak kapni?
A feladatra - az első lehetőség (a kulcs u_id, estesstvenno) és semmi mást. adatváltozás művelet egy ilyen tábla kerül sor azonnal.