Fórum Root.cz
Hlavní témata => Server => Téma založeno: PvvS 08. 12. 2013, 14:42:41
-
Potřebuju v MySQL v podstatě kombinační tabulku :
A B C D ...
A 1 0 1 1
B 0 1 0 2
C 1 0 2 0
D 1 2 0 1
.......
Pro menší počet polí to ujde, ale když se to rozroste trochu víc (cílový počet je okolo 100 sloupec*řádek), tak už mi to připadá trochu monstrózní. Ale nějak mě nenapadá , jak to zjednodušit?
-
Jakým způsobem bude k datům přistupováno? To je zásadní otázka.
Pokud se bude hledat jedna konkrétní hodnota, pak bych to předělal na dvousloupcovou tabulku klíč-hodnota:
AA 1
AB 0
AC 1
AD 1
BA 0
BB 1
…
-
Jde o tabulku, kde se bude hledat zda dotyčný typ lze spojit s jiným typem. U jednoho může být i více možností a hodnota se bude lišit, nebude to binární.
-
Co takhle variace na řešení Ondřeje Caletky -- prostě z prvků matice udělej body grafu a názvy hran použij jako klíče do tabulky. Budeš mít tři sloupce [z, do, kardinalita]. Násobnost daných spojení tím zachytíš. Takže je to ok -- nebo mi něco uniká?
-
Tohle se vždycky řeší tabulkou "řádek, sloupec, hodnota"
U řídkých tabulek, kde se opakuje jedna hodnota (třeba 0) se pak uvedou ty, které mají jinou hodnotu, než výchozí.
Konečně binární tabulka popisující existenci vztahu mezi A a B se řeší jako tabulka A, B. Záznam v tabulce pak označuje hodnotu TRUE, neexistující záznam hodnotu FALSE.
-
V podstatě je to tak.
Číslo řádku i sloupce je id typu. Z toho se pak selektují řádky, kde pro dané ID je nenulová hodnota. Tím získám jak číslo řádku (id typu) tak i hodnotu (počet spojitelných kusů).
Odkaz na základní data je tady (csv, převádím aplikaci z excelu do php) svetmhd.net/kuplovani.csv (http://svetmhd.net/kuplovani.csv)
-
jedna tabulka 3 stlpce.
1. char
2. char
3. int
-
jedna tabulka 3 stlpce.
1. char
2. char
3. int
Nicměně, pokud pokud nemusí v té tabulce hledat pomocí SQL (tedy slouží to jako storage), je možná lepší to uložit jako bitmapu.
-
Hledat v ní musím, je to součást dalších scriptů. Ale padlo tu pár myšlenek, tak je vyzkouším a uvidím.
-
a co takhle jedna tabulka id_A, A druhá id_B, id_A, B, val pak mohu napsat SELECT A,B FROM t_A a, t_B b WHERE a.id_A = b.id_A AND b.val = 2 AND a.id_A = 'X' AND b.id_B = 'Y' a další variace tohoto schématu
-
K tomu co tu uz padlo ... (ono zalezi hodne na tom, kolik toho bude), by se dalo taky pouzit neco jako
a:1023ACS45789
b:10654SFEN789
=> mas 100 zaznamu pro 100 prvku, a nasledne pak znakovy pole (pokud ti staci abeceda ;D), kde co znak to nejaka informace o vztahu (prvni znak pro A, druhej pro B ...) - pripadne by to slo jeste zjednodusit na 0/1 - pokud jde jen o info ze A muze byt s B,D,F ...