Esiste un operatore DISTINCT in SQL. Tuttavia, ho un incarico nel quale ho bisogno di ottenere alcuni valori distinti da una tabella, e posso usare solo l'algebra relazionale. C'è un modo?Selezione di righe DISTINCT nell'algebra relazionale
risposta
Le proiezioni relazionali restituiscono sempre tup distinte in modo che DISTINCT non sia mai necessario. Le tuple duplicate non sono consentite nell'array RA - questa è una delle principali differenze tra il modello relazionale e il modello SQL.
So che questa è una vecchia domanda ma devo obiettare, c'è un operatore distinto come l'algebra relazionale, nella mia edizione di Ullmans Database Systems Il libro completo è nel seguente capitolo: ,, 5.2.1 Eliminazione duplicata ". Sì, certo, i duplicati non sono consentiti nei set normali, ma ci sono i multiset, che li permettono. –
Ciao DDavid, penso che potresti perdere il punto sollevato da Molina, Ullman, Widom (ottimo libro tra l'altro e uno spesso fare riferimento a.) Citazione dalla sezione 5.2: "Quando i DBMS che utilizzavano il modello relazionale venivano sviluppati per la prima volta, i loro linguaggi di query implementavano in gran parte l'algebra relazionale. Tuttavia ... questi sistemi consideravano le relazioni come * borse *, non insiemi. "(Mia enfasi) Continuano a sottolineare che le operazioni di borsa sono diverse dalle operazioni impostate supportate da RA. L'operatore" DISTINCT "di SQL prende una borsa tuple ed elimina i duplicati RA si occupa esclusivamente di set di tuple. – sqlvogel
L'algebra relazionale si basa sulla teoria degli insiemi. SQL è un'implementazione della teoria dei multi-set. Set ha sempre elementi distinti. Quindi le tuple sono distinte di default in Algebra relazionale.
Forse è possibile utilizzare l'operatore di divisione Rel1 ÷ Rel1! –