2010-01-15 10 views
6

Sì, questa è una domanda sui compiti a casa ma i nomi sono stati modificati per proteggere gli innocenti. Significa che non sto facendo la domanda a casa, ma piuttosto una piccola parte di essa, così posso capire il tutto.Algebra relazionale: qual è il modo corretto di rappresentare una clausola di 'avere'?

Diciamo che si dispone di una query SQL come questo:

--La interrogazione sarebbe elencare i prezzi delle auto che si verificano più di una volta.

select car_price from cars 
group by car_price 
having count (car_price) > 1; 

La forma generale di questo in algebra relazionale è Y (gl, al) R dove y è il simbolo greco, GL è la lista di attributi per gruppo, AL è la lista delle aggregazioni

Così il l'algebra relazionale sarebbe:

Y (count(car_price)) cars 

Quindi, come è scritta la clausola "avere" in tale affermazione? C'è una stenografia? Se no, devo solo selezionare da quella relazione? Forse qualcosa del genere?

Ho cercato su Internet per ore e non ho trovato esempi di conversione da HAVING a algebra relazionale. Grazie per l'aiuto!

+2

+1 per essere onesti su compiti a casa. – hobodave

+1

Heh, penso che qualsiasi cosa con "algebra relazionale" nel titolo sia per impostazione predefinita. –

+0

Non so nulla dell'algebra relazionale, ma "avere" è lo stesso di "dove" eccetto che può essere applicato ad un aggregato di un insieme. C'è qualche ragione per cui l'algebra relazionale sarebbe diversa? – BobMcGee

risposta

3

selezionare il conteggio (*) da (selezionare * da automobili con prezzo> 1) come auto;

noto anche come chiusura relazionale.

0

Per una risposta più o meno precisa all'effettiva domanda, "Algebra relazionale - qual è il modo corretto per rappresentare una clausola 'avere'?", È necessario prima dichiarare che la domanda stessa sembra suggerire, o presume, che esiste qualcosa come "THE" algebra relazionale, ma quella presunzione è semplicemente falsa!

Un'algebra è un insieme di operatori, e chiunque può definire qualsiasi gruppo di operatori che gli piace, il che significa che chiunque può definire qualsiasi algebra che gli piace! Nella sua pubblicazione più recente, Hugh Darwen afferma che RESTRICT non è un operatore fondamentale dell'algebra, anche se molti altri la considerano come tale.

Soprattutto per quanto riguarda le aggregazioni e i riepiloghi, vi è poco consenso su come questi dovrebbero essere incorporati in un'algebra relazionale. Definire operatori come COUNT() (che prende una relazione come valore di argomento e restituisce un intero) come parte dell'algebra, potrebbe essere problematico rispetto alla proprietà di chiusura dell'algebra, proprio perché tali operatori non restituiscono una relazione ...

Così la dispiace, ma comunque più appropriato, rispondere qui sembra essere che una risposta definitiva a questa domanda è quasi impossibile dare ...

Problemi correlati