Prodej multi-eshopu DomaciCentrum.cz - čistá marže 750 000 Kč / rok
Zobrazují se odpovědi 1 až 11 z 11

Návrh databáze...

  1. Dělám na jednom projektu a potřeboval bych poradit s návrhem databáze. V rámci zachování výrobního tajemství (nápadu), uvedu obecný příklad: 2 tabulky - Uživatelé a Záznamy, webová aplikace by měla umožnit uživatelům hlasovat pro jednotlivé záznamy a u každého vypisovat seznam uživatelů, kteří pro něj hlasovali. Podobně jako zde, viz. seznam uživatelů, kteří "Linkovali". Jak navrhnout databázi tak, aby šli konkrétní uživatelé od každého Záznamu mazat a zase přidávat. Nějaké elegantní a rychlé řešení? Díky.

    btw.: nejedná se o další linkovací portál ani nic podobného, prosím zdržte se OT

  2. pridas jeste tabulku hlasovani, jenom s polozkama
    (id)
    uzivatel_id
    zaznam_id

    chápu to správně ?

  3. Citace Původně odeslal Pacek Zobrazit příspěvek
    Dělám na jednom projektu a potřeboval bych poradit s návrhem databáze. V rámci zachování výrobního tajemství (nápadu), uvedu obecný příklad: 2 tabulky - Uživatelé a Záznamy, webová aplikace by měla umožnit uživatelům hlasovat pro jednotlivé záznamy a u každého vypisovat seznam uživatelů, kteří pro něj hlasovali. Podobně jako zde, viz. seznam uživatelů, kteří "Linkovali". Jak navrhnout databázi tak, aby šli konkrétní uživatelé od každého Záznamu mazat a zase přidávat. Nějaké elegantní a rychlé řešení? Díky.

    btw.: nejedná se o další linkovací portál ani nic podobného, prosím zdržte se OT
    Já osobně bych ty uživatele všechny přidával do nějakého sloupce, třeba hlasy. Select bude rychlý - výpis uživatelů bude vlastně rozdělení řetězce nějakým znakem (například mezerou). Obsah řádku ve sloupci hlasy tedy bude vypadat třeba "zdenek jirka pavel".

    Tabulka Záznamy pak bude mít dva sloupce - událost (záznam) a hlasy, při selectu vybereš obě a nic dalšího nepotřebuješ dělat - jednoduché a rychlé.

    No a přidávat a zamaz uživatele půjde jednoduše - jde o práci s jednoduchým řetězcem - přidání uživatele - zápis na konec řetězce, smazání uživatele - smazání pořetězce uživatele, přičemž jeho jméno obklopují mezery...

  4. hh, jo takhle to dělají začátečníci, kteří nezvládají složitější sql dotazy. Vtipné pak bude když při výpisu co všechno uživatel linkoval bude databáze fultextem prohledávat všechny záznamy a nedejbože bys chtěl umožnit uživatelům měnit přezdívku...a na indexy můžeš rovnou zapomenout.

  5. Citace Původně odeslal toshi Zobrazit příspěvek
    hh, jo takhle to dělají začátečníci, kteří nezvládají složitější sql dotazy. Vtipné pak bude když při výpisu co všechno uživatel linkoval bude databáze fultextem prohledávat všechny záznamy a nedejbože bys chtěl umožnit uživatelům měnit přezdívku...a na indexy můžeš rovnou zapomenout.
    Mezerou by asi odděloval jejich ID. Ono to není až tak špatné řešení, pokud by to byl spíš kešovací řádek hodnot, protože by počet čtení vysoce převažoval počet zápisů
    Naposledy upravil Souki : 17.11.2007 v 16:51

  6. Prosím vás zapomeňte na ta řešení se sloupcem hlasování a nějakejma mezerama :rolleyes: Jediné správné řešení je další tabulka jak psal toshi

  7. Toshi správně, ostatním doporučuji nastudovat pojem "první normální forma".

  8. Díky za názory, využiju toshiho variantu.

  9. A v případě, že bude poměr čtení zápis 1000:1? Opravdu je efektivnější při každém čtení složit z tabulky řádek? Pokud by se tento řádek sestavoval nějak inteligentně a fungoval pouze jako cache, tak by to asi nebylo úplně marné

  10. Cachování řeš na jiné úrovni než ve struktuře DB.

  11. Citace Původně odeslal Souki Zobrazit příspěvek
    A v případě, že bude poměr čtení zápis 1000:1? Opravdu je efektivnější při každém čtení složit z tabulky řádek? Pokud by se tento řádek sestavoval nějak inteligentně a fungoval pouze jako cache, tak by to asi nebylo úplně marné
    Na čtení a hledání v textu při velkém množství záznamů rovnou zapomeň. Toshiho řešení je jediná správná volba. I kdyby byl poměr 1000000:1 tak bude propojení tabulek přes 1:N rychlejší než procházení textu a to v několika řádech. Stačí správné rozložení indexů. Doporučuju nastudovat základy relačních databází.

Podobná témata

  1. Návrh rozsáhlé databáze + indexy
    By Martin Korálek in forum PHP
    Odpovědí: 3
    Poslední příspěvek: 29.10.2007, 14:19
  2. Odpovědí: 10
    Poslední příspěvek: 07.10.2007, 12:53
  3. Návrh databáze - program
    By jirin in forum PHP
    Odpovědí: 6
    Poslední příspěvek: 06.10.2007, 00:50
Hostujeme u Server powered by TELE3