Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

posted 2014-12-14 16:25:38 +0100

Abych řekl pravdu, připadá mi obtížné najít příklad, ve kterém by se kartézský součin nepoužil - jde o jednu z nejběžnějších operací.

V zadání semestrálky nebo co děláte jste určitě měli i požadavek na nějaký vztah M:N, ne? Každý výběr, který bude chtít údaje z obou entit, použije cross-join. Uvažujte například entity FILM a HEREC a dotaz "Chci všechny herce, kteří se objevili ve filmu X". Nebo CLANEK a OBRAZEK a dotaz "Chci všechny obrázky, které byly zobrazené u článků, které mají v názvu slovo 'FIT' ".

Abych řekl pravdu, připadá mi obtížné najít příklad, ve kterém by se kartézský součin nepoužil - jde o jednu z nejběžnějších operací.

V zadání semestrálky nebo co děláte jste určitě měli i požadavek na nějaký vztah M:N, ne? Každý výběr, který bude chtít údaje z obou entit, použije cross-join. Uvažujte například entity FILM a HEREC a dotaz "Chci všechny herce, kteří se objevili ve filmu X". Nebo CLANEK a OBRAZEK a dotaz "Chci všechny obrázky, které byly zobrazené u článků, které mají v názvu slovo 'FIT' "." (předpokládám něco jako iDNES, kde se jeden ilustrační obrázek dá k libovolnému množství článků). Nebo třeba STUDENT, PREDMET a ZNAMKA a dotaz "Chci průměrnou známku za BI-DBS v roce 2014".

Abych řekl pravdu, připadá mi obtížné najít příklad, ve kterém by se kartézský součin nepoužil - jde o jednu z nejběžnějších operací.

V zadání semestrálky nebo co děláte jste určitě měli i požadavek na nějaký vztah M:N, ne? Každý výběr, který bude chtít údaje z obou entit, použije cross-join. Uvažujte například entity FILM a HEREC a dotaz "Chci všechny herce, kteří se objevili ve filmu X". Nebo CLANEK a OBRAZEK a dotaz "Chci všechny obrázky, které byly zobrazené u článků, které mají v názvu slovo 'FIT' " (předpokládám něco jako iDNES, kde se jeden ilustrační obrázek dá k libovolnému množství článků). Nebo třeba STUDENT, PREDMET a ZNAMKA a dotaz "Chci průměrnou známku za BI-DBS v roce 2014".

EDIT: Možná už chápu, o co vám jde: Kartézský součin se téměř vždy používá s nějakou omezující podmínkou. Čistý kartézský součin bez podmínky moc běžný není. No a ten omezený součin se dá zrovna tak dobře zapsat CROSS JOINem (explicitním nebo implicitním) jako INNER JOINem:

SELECT * FROM tab1, tab2 WHERE tab1.pole1=tab2.pole2;
SELECT * FROM tab1 CROSS JOIN tab2 WHERE tab1.pole1=tab2.pole2;
SELECT * FROM tab1 JOIN tab2 ON tab1.pole1=tab2.pole2;