Autor | Zpráva | ||
---|---|---|---|
Musilda Profil |
#1 · Zasláno: 21. 4. 2014, 08:28:33
Chci se zeptat na váš názor, na počet sloupců v tabulce.
Dostal jsem se do situace, kdy mám v jedné tabulce již 48 sloupců a potřebuji přidat další. Prakticky nemám důvod, proč to dělit do více tabulek, údaje se vztahují vždy k jednomu záznamu a potřebuji všechna data. Takže mi vyhovuje jednoduchý dotaz a hotovo. Ptám se spíše po stránce správného návrhu. Nikde jsem nenašel přímou odpověď. Mám přidat do tabulky dalších dvacet sloupců, nebo vytvořit novou tabulku? |
||
juriad Profil |
#2 · Zasláno: 21. 4. 2014, 09:27:29
Nepotřebuješ, doufám, přidat další sloupce pojmenované sloupec49, sloupec50, ... sloupec68.
Opravdu jsou všechny sloupce vždy vyplněné? Není to třeba tak, že podle typu záznamu je jich relevantních třeba jen pár? Pokud jsou opravdu většinou vyplněné všechny, pak prostě přidej další sloupce. Zajímají tě téměř vždy v dotazu všechny údaje? Pokud lze rozlišit hlavní a rozšiřující údaje, pak dává smysl ty rozšiřující vyhodit do jiné tabulky. Kdybys ukázal příklad tabulky, mohli bychom se bavit konkrétně. Třeba máš něco špatně navržené a tento dotaz je jen pokusem o řešení. Bez kontextu bychom mohli dojít k nesprávnému závěru. |
||
Musilda Profil |
#3 · Zasláno: 21. 4. 2014, 09:41:50
juriad:
Nepotřebuješ, doufám, přidat další sloupce pojmenované sloupec49, sloupec50, ... sloupec68. Jak jsi k tomu došel? Opravdu jsou všechny sloupce vždy vyplněné? Psal jsem, že potřebuji všechna data, takže každý má nějakou hodnotu. Není to třeba tak, že podle typu záznamu je jich relevantních třeba jen pár? Není, psal jsem, že potřebuji všechna data. Zajímají tě téměř vždy v dotazu všechny údaje? Ano Mě by zajímalo, zda to bude mít vliv na výkon, nebo se to prostě dělá jinak. Jak jsem psal v příspěvku, není důvod, proč ten záznam dělit do více tabulek, všechna data se vytvářejí a editují v jednom kroku a vztahují se k tomu jednomu záznamu. |
||
juriad Profil |
#4 · Zasláno: 21. 4. 2014, 10:00:59
Musilda:
Občas chtějí lidé s databází pracovat jako s excelem. Tedy nejen přidávat číslované řádky, ale přidávat i číslované sloupce. Tak tedy ty sloupce do té tabulky přidej. Je to určitě o hodně levnější, než při každém dotazu provádět JOIN. Mimochodem, po přečtení článku http://www.mysqlperformanceblog.com/2013/04/08/understanding-the-maximum-number-of-columns-in-a-mysql-table/ zkus zauvažovat, zda používáš vhodné datové typy; pokud tabulka obsahuje VARCHARy (sloupce s dynamickou velikostí), vyhledávání (bez indexu) v tabulce je pomalejší. |
||
Musilda Profil |
#5 · Zasláno: 21. 4. 2014, 10:06:34
Díky za odpověď, jde mi především o best practice.
V tabulce textové typy mám, ale pro vyhledávání používám sloupce s int a indexem. |
||
karel_ Profil * |
#6 · Zasláno: 21. 4. 2014, 16:33:48
Musilda:
Taková kvantum sloupců u mě pořádně smrdí špatným návrhem databáze. Není tajné, o jakou tabulku jde a jaké sloupce obsahuje? Obecně lze radit jen těžko, nebo spíše vůbec. |
||
Musilda Profil |
karel:
Tabulku sem vkládat nebudu. Tak jak to mám, to funguje, takže mi jde o názor, ne o radu. To že něco funguje, neznamená, že to je dobré. Zkusím to trochu rozvést. Máš množinu, ve které je určitý počet unikátních prvků. Každý z těch prvků má určitý počet vlastností, který se mění v závislosti na každém prvku. Vždy budeš vypisovat celou množinu vlastností prvků, nikdy nebudeš přistupovat k jednotlivému prvku. Otázka je, zda vytvořit několik tabulek : Množiny Prvky Vlastnosti a při výpisu je spojovat, nebo vytvořit tabulku s větším počtem sloupců, například: množina, prvek_a_vlastnost_1,prvek_a_vlastnost_2,prvek_a_vlastnost_3,prvek_b_vlastnost_1,prvek_b_vlastnost_2,prvek_c_vlastnost_1.... přistoupíš k jednomu řádku tabulky a vypíšeš všechny hodnoty. Nebo propojíš tři tabulky a vypíšeš opět všechna data. Znovu to napíšu, aby to nezapadlo, všechny vlastnosti prvků jsou nenulové a mají vždy nějakou hodnotu. Díky za odpověď |
||
joe Profil |
#8 · Zasláno: 21. 4. 2014, 17:28:35
Musilda:
„Nepotřebuješ, doufám, přidat další sloupce pojmenované sloupec49, sloupec50, ... sloupec68.“ od juriad: Řekl bych, že máš špatný návrh databáze, protože něco takového tu teď nastiňuješ, ale nelze to takto moc obecně napsat, pokud neukážeš konkrétní údaje. Je počet vlastností konstantní? Není, protože v prvním příspěvku píšeš, že chceš přidat další. Spíše bych to tedy viděl tak, že by měla být tabulka prvků a tabulka vlastnosti. |
||
Musilda Profil |
joe:
Řekl bych, že máš špatný návrh databáze A proč? To je ta otázka. Já bych rád, kdyby někdo řekl proč je to špatně. Výkon? Bez jasné odpovědi se točíme v kruhu. Počet vlastností pro prvek je konstantní, u různých prvků jich je různý počet. |
||
joe Profil |
Musilda:
„Počet vlastností pro prvek je konstantní, u různých prvků jich je různý počet.“ Tomu nerozumím, pokud jsem tě dobře pochopil, myslel jsem, že všechny prvky mají stejné vlastnosti, teď píšeš, že různé prvky mají různé vlastnosti a z toho mi vyplývá, že některé vlastnosti musí být NULL .
„A proč?“ Protože to souvisí s návrhem databází, konkrétně s normalizací databáze. Boty si můžeš taky nandat obráceně, ale nebude to pohodlné... |
||
Časová prodleva: 11 let
|
0