Autor Zpráva
JKlena
Profil
Ahoj,
chcem na stránku vytvoriť pre užívateľov možnosť pridať si iných užívateľov do "friend listu" (zoznamu priateľov).
Nemám problém vytvoriť všetky potrebné funkcie a tak ale hľadám najvhodnejší spôsob zápisu do databázi.
Napadlo ma niekoľko spôsobov:
1)
Do 1 stĺpca v tabuľke užívateľov v tvare
ID_1.kamaráta,ID_2.kamaráta,ID_3.kamaráta,ID_4.kamaráta
-vidím tu veľkú nevýhodu v práci s takýmto zápisom, a to hlavne pri vymazávaní niekoho zo zoznamu.

2)
Vytvoriť zvlásť tabulku na zoznamy a priradiť užívateľovi len id niektorého riadku tejto tabuľky.
Samotná tabuľka by potom bola v tvare:
ID | ID_1.kamaráta | ID_2.kamaráta | ID_3.kamaráta | ID_4.kamaráta |
Táto možnosť vyžaduje ale veľa stĺpcov a bola by takisto nepraktická.

3)
Vytvoriť zvlášť tabulku ako v predchádzajúcom prípade ale s opačným zoradením.
ID | užívateľ_1 | užívateľ_2 | užívateľ_3 | užívateľ_4 |
V riadkoch by potom boli pre každého užívateľa postupne zapísané ID kamarátov.
Rovnaká nevýhoda ako v minulom prípade.

Žiadna z týchto možností sa mi veľmi nepáči preto sa ako nováčik pýtam:
Je tu nejaká štandartizovaná forma ako sa to robí?
Nejaká možnosť ktorá ma nenapadla a je ďaleko praktickejšia?
Prosím poraďte ako by bolo podľa Vás najvhodnejšie tieto dáta ukladať.
Str4wberry
Profil
To vypadá na špatný návrh. Dělá se to většinou tak, že se kromě tabulky „uživatelé“ vytvoří tabulka „kamarádi“ a tam je ID jednoho uživatele a ID druhého uživatele (plus třeba nějaké doplňkové informace jako datum skamarádění apod.).
Joker
Profil
JKlena:
Nejdřív lehce mimo téma:
Je tu nejaká štandartizovaná forma ako sa to robí?
Nejaká možnosť ktorá ma nenapadla a je ďaleko praktickejšia?
To jsou výborné otázky.
Věty: „Tohle řešení je divné, neexistuje lepší?“ a „Vypadá to jako běžný problém, určitě ho už řešil někdo jiný…“ jsou dvě základní úvahy, které následně ušetří spoustu potíží. A překvapivě mnoho lidí je ignoruje, proto tohle píšu.

K tématu, všechna ta tři řešení jsou špatně, správné popisuje Str4wberry v [#2].

Dodám ještě další nevýhody těch uvedených:
U všech tří je problematické vyhledávání a vůbec práce s tím daným údajem. Představte si třeba hledat, jestli dva uživatelé jsou přáteli. U 1) by bylo nutné procházet ten řetězec, u 2) a 3) zkontrolovat každý z těch sloupců.
Druhé a třetí řešení mají pevně daný maximální počet přátel. Pro jeho zvýšení by bylo nutné přidat sloupec a předělat celou aplikaci, aby s tím sloupcem navíc počítala. Při větším počtu přátel by to zpracovávání bylo šílené, navíc ani databázová tabulka nemůže mít neomezeně mnoho sloupců.
JKlena
Profil
Ďakujem za odpovede,
systém zvlášť tabuľky len s 2 údajmi ID_užívateľa a ID_druhého_užívateľa používam pri posielaní pošty.
Neviem prečo ma to nenapadlo. Tak či onak ďakujem za obe odpovede.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: