/ / Dotaz na relačnú algebru bez použitia súhrnných funkcií - databáza, agregované funkcie, relačná algebra

Dotaz na relačnú algebru bez použitia súhrnných funkcií - databáza, súhrnné funkcie, relačná algebra

Úloha zo skúšky predmetu Databázové systémy:

Mám nasledujúce schéma:

Excavator(EID, Type) - EID is a key
Company(Name, HQLocation) - Name is a key
Work(Name, EID, Site, Date) - All collumns together form a key

Musím napísať tento dotaz v relačnej algebri:

"Which company was digging on exactly one site on 1st of May?"

Neviem, ako to vyjadriť bez súhrnných funkcií (počet) Viem, že ľudia pridávajú tieto funkcie do relačnej algebry, ale počas tejto skúšky nás to zakázalo.

Môžete použiť štandardné nastavenie operácií, rozdelenie, premietanie, výber, pripojenie, kartézsky produkt.

odpovede:

4 pre odpoveď č. 1

Zabudol som správnu syntaktickú syntaktickú algebru, ale môžete to urobiť

       (Worked on >= 1 site on 1st May)
minus  (Worked on > 1 site on 1st May)
--------------------------------------
equals (Worked on 1 site on 1st May)

Riešenie SQL používajúce iba operátorov uvedených v komentároch (za predpokladu, že rename) je nižšie.

SELECT Name
FROM   Work
WHERE  Date = "1st May" /*Worked on at least one site on 1st May */

EXCEPT

SELECT W1.Name /*Worked more than one site on 1st May */
FROM   Work W1
CROSS JOIN Work W2
WHERE  W1.Name = W2.Name
AND W1.Date = "1st May"
AND W2.Date = "1st May"
AND W2.Site <> W2.Site

Predpokladám, že to bude relatívne jednoduché na preklad