| Autor | Zpráva | ||
|---|---|---|---|
| Tazzy Profil * |
#1 · Zasláno: 5. 1. 2010, 15:31:33
Zdravím všechny vespolek,
mám takový prozaický dotaz. Lámu si hlavu nad otázkou, zda je lepší v některých případech použít jednu tabulku s velkým počtem sloupců, nebo takovou tabulku rozdělit na více menších. Uvedu příklad, který (snad) mluví za vše: Dejme tomu, že budu mít tabulku s uživateli. V ní budou uloženy jak důležité údaje (ID, login, heslo, .....), tak údaje doplňkové (osobní text, oblíbené jídlo, barva spodního prádla, ...) a teď je otázka, jestli mít jednu monstrózní tabulku, nebo dvě menší. Zajímalo by mě, jestli pak případné vyhledávání a vůbec operace s "menší tabulkou s důležitými údaji" bude efektivnější a doplňkové informace se budou joinovat jen v případě potřeby. S tabulkou uživatelů se bude pracovat v podstatě nepřetržitě, ale zobrazovat doplňující údaje již bude třeba méně často. Také bych dodal, že pro každého uživatele by byl právě jeden řádek v tabulce s doplňujícími údaji, tedy počet uživatelů a počet záznamů s doplňujícími údaji by byl roven. Taky dodávám, že doplňujících údajů může být poměrně mnoho... Je to jen teoretický příklad, nijak se neopírá o skutočnost, ale zajímalo by mě, co je lepší? Díky za každý postřeh |
||
| t4nn3r Profil * |
#2 · Zasláno: 5. 1. 2010, 16:29:19
no pokud ty doplňkové údaje bedete používat občas, je podle mě rozhodně lepší udělat tu tabulku se základními údaji a pak vytvořit relační pro zbytek - 3 soupce IDUZIVATELE, PROMENNA,HODNOTA no a pak tam vkladat 3,oblibene jidlo, guláš.
|
||
| tiso Profil |
#3 · Zasláno: 5. 1. 2010, 16:40:53
Záleží od situácie:
- podľa čoho vyberáš záznamy (where sekcia, pre zrýchlenie treba použíť indexy) - aké údaje vyberáš - koľko tých údajov (= stĺpcov) bude - koľko % v stĺpci je zaplnených. Je zbytočné mať celý stĺpec a tam 2% užitočných údajov - ako často chceš pridávať nové typy údajov V tomto modelovom príklade si neuvažoval tretiu možnosť: 1. základná tabuľka s užívateľmi users(id, login, password, ...) 2. tabuľka s názvami doplnkových údajov user_info_keys(id, name) 3. tabuľka s hodnotami doplnkových údajov k jednotlivým užívateľom user_info_values(user_id, key_id, value) Nevýhoda tohto riešenia je ukladanie len jedného dátového typu. Tvoje modelové riešenia by sa dali použiť iba na nemenné počty údajov (=stĺpcov): -veľkú tabuľku by som použil výnimočne, a iba ak väčšina údajov bude vždy vyplnená a aj vyžadovaná. -dve tabuľky rozdelené podľa povinných/nepovinných položiek, ak by sa na väčšinu dotazov použila iba prvá tabuľka a len v zlomku prípadov druhá. |
||
| ninja Profil |
#4 · Zasláno: 5. 1. 2010, 16:49:07
Jakou databázi a případně typ tabulek budete používat?
|
||
| Tazzy Profil * |
#5 · Zasláno: 5. 1. 2010, 18:29:59
t4nn3r:
Díky, ale tohle nebyla otázka jak spojovat tabulky... tiso: S tabulkou uživatelů - tedy důležité, či povinné údaje by se prováděly klasické operace jako přihlašování, výpisy (celkové, online, ajánevímco), přiřazování jmen k publikovaným informacím... A tak podobně. Indexy jsou samozřejmostí, ale znovu připomínám, že tohle je čistě teoretická záležitost, nejde o nic konkrétního a tedy i počet sloupců je irelevantní - dejme tomu, že sloupců může být klidně i 50+. Co se týče zaplnění, tak povinné údaje (důležité) budou vyplněny 100%, zbytek už je na samotných uživatelích, takže dejme tomu 40% - 60% (střízlivým odhadem). Pokud myslíš rozšiřování tabulky, pak by to asi nebylo nijak časté. Dejme tomu, že by se tabulka upravovala maximálně 1 až 2 ročně. Třetí možnost mi do toho moc nezapadá právě kvůli omezenosti na jeden datový typ, kterých v totmo případě bude asi víc: může tam být například datum narození, osobní text, podpis do fóra, ... pak cizí klíče z jiných tabulek, ... Uvažujme, že lze využít celé spektrum datových typů, minimálně budou zcela jistě využito datum, text a čísla (konkrétní datové typy teď neřešme). Myslím, že by nebyl problém použít tento model i v případě, že by jednou za čas ke změně údajů došlo. Upravit pár dotazů není až zas tak velký problém a taková změna by zcela jistě změny vyžadovala i na jiných úrovních, než jen v DB. ninja: Zapomněl jsem napsat, omlouvám se. Řeším php a MySQL. Typ tabulek bych asi nechal klasické MyISAM. |
||
|
Časová prodleva: 16 let
|
|||
0