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' ".
2 | No.2 Revision |
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".
3 | No.3 Revision |
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;