Kombinační tabulka v MySQL

PvvS

Kombinační tabulka v MySQL
« kdy: 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?
« Poslední změna: 09. 12. 2013, 14:07:54 od Petr Krčmář »


Re:Kombinační tabulka
« Odpověď #1 kdy: 08. 12. 2013, 15:43:25 »
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

PvvS

Re:Kombinační tabulka
« Odpověď #2 kdy: 08. 12. 2013, 15:54:07 »
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í.

Petr H.

Re:Kombinační tabulka
« Odpověď #3 kdy: 08. 12. 2013, 17:08:25 »
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á?

Re:Kombinační tabulka
« Odpověď #4 kdy: 08. 12. 2013, 17:12:37 »
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.


PvvS

Re:Kombinační tabulka
« Odpověď #5 kdy: 08. 12. 2013, 17:35:50 »
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

e3k

Re:Kombinační tabulka
« Odpověď #6 kdy: 08. 12. 2013, 21:54:49 »
jedna tabulka 3 stlpce.
1. char
2. char
3. int

Re:Kombinační tabulka
« Odpověď #7 kdy: 08. 12. 2013, 22:28:01 »
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.

PvvS

Re:Kombinační tabulka v MySQL
« Odpověď #8 kdy: 09. 12. 2013, 15:12:44 »
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.

PB

Re:Kombinační tabulka v MySQL
« Odpověď #9 kdy: 09. 12. 2013, 16:45:14 »
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

j

Re:Kombinační tabulka v MySQL
« Odpověď #10 kdy: 09. 12. 2013, 17:08:09 »
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 ...