Avatar
Vojtěch Pavlovský:

Pracuji na systému v PHP a MySQL a potřeboval bych nějak zařídit, aby každý uživatel (pravděpodobně jich bude hodně) měl v databázi uložené informace o svých "followerech". Prostě o lidech, které sleduje. Ovšem nevím jak na to jít, aby to bylo funkční, rychlé a přehledné. Je vhodné mít pro každého uživatele tabulku, nebo mít jednu tabulku s user_id a id toho, koho sleduje? Nebo se to dělá ještě jinak?

Děkuji.

Odpovědět 28.9.2014 15:47
It's not complicated, until you make it that way.
Avatar
Pavel Mareš
Redaktor
Avatar
Pavel Mareš:

"pro každého uživatele tabulku" - Není vhodné, no vlastně je to blbost a vůbec, je to ničemu.
Trochu ti to rozeberu, ačkoliv bych neřekl, že je to obzvlášť těžké, stačí, když se podíváš na obrázek přiložený k mému komentáři, ale také ti to popíši.

Vytvoříš si 2 tabulky, ve kterých budeš mít data - tabulka pro Uživatele a pro "Follow"
(moje tabulky mají předpony tbl, jen pro lepší přehled)

  1. tabulka - tbl_User
    • máš zde základní data o uživateli: ID, jméno, heslo, atd atd
  2. tabulka - tbl_Follow
    • zde si ukládáš všechny údaje o tom kdo koho "sleduje"
      • tzn. ID pro každý řádek, Kdo (uživatel který klikl na tlačítko sledovat) a Koho (jakému uživateli klikl na tlačítko sledovat) atd atd (například kdy na to tlačítko klikl atp)

Snad jsem to napsal dost jasně. Pokud něčemu nerozumíš, nebo chceš pomoct, napiš do PM nebo odpověz na můj komentář, nemusel bych si toho totiž všimnout.

Editováno 28.9.2014 16:06
Akceptované řešení
+20 Zkušeností
Řešení problému
Nahoru Odpovědět  +1 28.9.2014 16:04
Nechci být workoholik. Bohužel někdy musíme být tím, čím nechceme.
Avatar
Martin Konečný (pavelco1998):

Dělat tabulku pro každého uživatele určitě ne. Dle mě nejlepší způsob je udělat tabulku, která bude obsahovat ID uživatelů (kdo sleduje a koho sleduje).
V tabulce může být unikátní klíč složený právě ze sloupců 'ID kdo' a 'ID koho'.

 
Nahoru Odpovědět 28.9.2014 16:21
Avatar
Odpovídá na Pavel Mareš
Vojtěch Pavlovský:

Děkuji moc. Tvoje možnost mě taky napadla, ale nevěděl jsem, jestli to je to správné řešení.

Ještě jedna taková otázka (nechce se mi kvůli tomu otvírat nové vlákno). Dá se to aplikovat třeba i na funkci "Líbí se mi"? Like/Dislike? Aby uživatel nemohl hlasovat hodnotit víckrát atd.

Nahoru Odpovědět 28.9.2014 16:24
It's not complicated, until you make it that way.
Avatar
Pavel Mareš
Redaktor
Avatar
Odpovídá na Vojtěch Pavlovský
Pavel Mareš:

Prakticky ano, ale v nějakých složitějších apkách bych to udělal trochu unikátnějším způsobem. Ale ano, v podstatě stačí nahradit slovo Follow za Like (Like jako název tabulky je špatný nápad kvůli tomu že like je v sql dotazu, ale jen pro ukázku použijeme Like jako název tabulky). V tom případě tam nebude Koho ale Co. Sloupec "Co" bude obsahovat ID likenutého komentáře/příspěvku či čehokoliv. Btw názvy sloupců a tabulek co zde píši jsou zvoleny pro přehlednost, doporučuji si promyslet názvy sloupců, pokud někdy budeš rozšiřovat tabulky atp.

Nahoru Odpovědět 28.9.2014 16:58
Nechci být workoholik. Bohužel někdy musíme být tím, čím nechceme.
Avatar
Odpovídá na Pavel Mareš
Vojtěch Pavlovský:

V PHP a MySQL se už nějaký čas pohybuju a vyznám se v tom, takže nemusíš vše opodstatnit. Jen jsem nikdy nedělal v MySQL žádné velké projekty, pouze nějaké uživatele a tak. Takže mě spíš u tohoto jen zajímala struktura. Nemohl bys mě třeba někam nasměrovat, kde bych se dočetl třeba o tom lajkování, nebo o složitějších strukturách databází?

Nahoru Odpovědět 28.9.2014 17:11
It's not complicated, until you make it that way.
Avatar
Pavel Mareš
Redaktor
Avatar
Odpovídá na Vojtěch Pavlovský
Pavel Mareš:

No nasměrovat je těžký a ukázat na nějaký trochu lepší projekt ti moc nepomůže. Spíše bych si být tebou vymyslel nějaký malý projekt na kterém bys propojil více jak 5 tabulek mezi sebou. Nám ve škole po pár měsících "programování" řekli udělejte databázi CDček. To vypadá tak, že máš album a v tom skladby + jejich časy atp atp. Prostě nejlépe se to naučíš na praxi, na vlastním projektu, prostě cokoliv. Fantazii se meze nekladou. Btw i zde na ITnetwork najdeš pár tutoriálů, což byli dříve i projektu do soutěží.

Nahoru Odpovědět  +2 28.9.2014 17:46
Nechci být workoholik. Bohužel někdy musíme být tím, čím nechceme.
Avatar
Samuel Illo
Redaktor
Avatar
Odpovídá na Vojtěch Pavlovský
Samuel Illo :

Niečo o tvorbe vecí ako ako je práve lajkovanie a "followovanie" je celkom dobre spravené tu: https://www.youtube.com/howcode
Veľa som to nepozeral ale kamoš hovoril, že je to užitočný návod.

Nahoru Odpovědět 28.9.2014 19:15
www.samuelillo.com; lamka02sk(zavináč)samuelillo.com, www.point.samuelillo.com, www.csgorig.eu
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.