Autor | Zpráva | ||
---|---|---|---|
JKlena Profil |
#1 · Zasláno: 30. 5. 2013, 22:50:51
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 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 | 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 | 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 |
#2 · Zasláno: 30. 5. 2013, 23:02:42
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 |
#4 · Zasláno: 31. 5. 2013, 09:57:48
Ď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. |
||
Časová prodleva: 11 let
|
0