ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Β. Μεγαλοοικονόμου, Δ. Χριστοδουλάκης Σχεσιακό Μοντέλο ΙΙΙ Ακ.Έτος 2008-09 (μεβάσητιςσημειώσειςτωνsilberchatz, Korth και Sudarshan και του C. Faloutsos CMU)
Επισκπόπηση Ιστορικά στοιχεία Έννοιες Τυπικές γλώσσες ερωτημάτων Σχεσιακή άλγεβρα Σχεσιακός λογισμός πλειάδων Σχεσιακός λογισμός πεδίων
Επισκόπηση σχεσιακό μοντέλο Ιστορικά στοιχεία Έννοιες Τυπικές γλώσσες ερωτημάτων Σχεσιακή άλγεβρα Σχεσιακός λογισμός πλειάδων Σχεσιακός λογισμός πεδίων
Επισκόπηση- αναλυτικά ΣχεσιακόςΛογισμόςΠλειάδων Γιατί μας χρειάζεται; Λεπτομέρειες Παραδείγματα Ισοδυναμία με σχεσιακή άλγεβρα Περισσότερα παραδείγματα, ασφάλεια εκφράσεων ΣχεσιακόςΛογισμόςΠεδίων+ QBE
Ασφάλεια Εκφράσεων ΜΗ ΕΠΙΤΡΕΠΤΗ: { t t ΦΟΙΤΗΤΗΣ} Τα δεδομένα εξόδου είναι μη πεπερασμένα!! Αντί αυτής χρησιμοποιείται { t... t ΚΑΠΟΙΟΣ ΠΙΝΑΚΑΣ}
Ασφάλεια Εκφράσεων Είναι πιθανό να γράψουμε εκφράσεις λογισμού πλειάδων που δημιουργούν μη πεπερασμένες σχέσεις, πχ. η {t t r } δίνει σαν αποτέλεσμα μια μη πεπερασμένη σχέση αν το πεδίο οποιουδήποτε γνωρίσματος της σχέσης r είναι μη πεπερασμένο Για να διασφαλίσουμε πως δεν θα προκύψει τέτοιο πρόβλημα περιορίζουμε το σύνολο των επιτρεπόμενων εκφράσεων σε ασφαλείς εκφράσεις Μια έκφραση {t P (t) } στο σχεσιακό λογισμό πλειάδων είναι ασφαλής αν κάθε συστατικό του t εμφανίζεται σε μία από τις σχέσεις, πλειάδες ή τις σταθερές που εμφανίζονται στο P
Περισσότερα παραδείγματα: η Τράπεζα Υποκατάστημα (όνομα-υποκαταστήματος, πόληυποκαταστήματος, μετοχές) Πελάτης (όνομα-πελάτη, οδός-πελάτη, πόλη-πελάτη) Λογαριασμός (αριθμός-λογαριασμού, όνομαυποκαταστήματος, υπόλοιπο) Δάνειο (αριθμός-δανείου, όνομα-υποκαταστήματος, ποσό) Καταθέτης (όνομα-πελάτη, αριθμός-λογαριασμού) Δανειζόμενος (όνομα-πελάτη, αριθμός-δανείου)
Παράδειγμα Επερωτήσεων Βρες τον αριθμό-δανείου, το όνομα-υποκαταστήματος και το ποσό για δάνεια μεγαλύτερα από 1200 Ευρώ {t t δάνειο t [ποσό] > 1200} Βρες τον αριθμό δανείου για κάθε δάνειο με ποσό μεγαλύτερο από 1200 Ευρώ {t s δάνειο (t [αριθμός-δανείου] = s [αριθμός-δανείου] s [ποσό] > 1200} Σημειώστε ότι η σχέση στο σχήμα [αριθμός-δανείου] ορίζεται έμμεσα από την επερώτηση
Παράδειγμα Επερωτήσεων Βρες τα ονόματα όλων των πελατών που έχουν πάρει δάνειο, που έχουν καταθέσεις ή και τα δύο {t s δανειζόμενος(t[όνομα-πελάτη] = s[όνομα-πελάτη]) u καταθέτης(t[όνομα-πελάτη] = u[όνομα-πελάτη]) Βρες τα ονόματα όλων των πελάτων που έχουν πάρει δάνειο και έχουν και καταθέσεις στην τράπεζα {t s δανειζόμενος(t[όνομα-πελάτη] = s[όνομα-πελάτη]) u καταθέτης(t[όνομα-πελάτη] = u[όνομα-πελάτη])
Παράδειγμα Επερωτήσεων Βρες τα ονόματα όλων των πελατών που έχουν πάρει δάνειο απότουποκατάστηματηςπάτρας {t s δανειζόμενος(t [όνομα-πελάτη] = s[όνομα-πελάτη] u δάνειο(u[όνομα-υποκαταστήματος] = Πάτρα u[αριθμός-δανείου] = s[αριθμός-δανείου]))} Βρες τα ονόματα όλων των πελατών που έχουν πάρει δάνειο από το υποκατάστημα της Πάτρας αλλά δεν έχουν λογαριασμό σε κανένα υποκατάστημα της τράπεζας {t s δανειζόμενοςt[όνομα-πελάτη] = s[όνομα-πελάτη] u δάνειο(u[όνομα-υποκαταστήματος] = Πάτρα u[αριθμός-δανείου] = s[αριθμός-δανείου])) not v καταθέτης (v[όνομα-πελάτη] = t[όνομα-πελάτη]) }
Παράδειγμα Επερωτήσεων Βρες τα ονόματα και τις πόλεις διαμονής όλων των πελατών που έχουν πάρει δάνειο από το υποκατάστημα της Πάτρας {t s δάνειο(s[όνομα-υποκαταστήματος] = Πάτρα u δανειζόμενος (u[αριθμός-δανείου] = s[αριθμός-δανείου] t [όνομα-πελάτη] = u[όνομα-πελάτη]) v πελάτης (u[όνομα-πελάτη] = v[όνομα-πελάτη] t[πόλη-πελάτη] = v[πόλη-πελάτη])))}
Παράδειγμα Επερωτήσεων Βρες τα ονόματα όλων των πελατών που έχουν λογαριασμό σε όλαταυποκαταστήματαπουβρίσκονταιστοβόλο: {t c πελάτης (t[όνομα.πελάτη] = c[όνομα-πελάτη]) s υποκατάστημα(s[πόλη-υποκαταστήματος] = Βόλος u λογαριασμός ( s[όνμα-υποκαταστήματος] = u[όνομα-υποκαταστήματος] s καταθέτης ( t[όνομα-πελάτη] = s[όνομα-πελάτη] s[αριθμός-λογαριασμού] = u[αριθμός-λογαριασμού] )) )}
Επισκπόπηση Ιστορικά στοιχεία Έννοιες Τυπικές γλώσσες ερωτημάτων Σχεσιακή άλγεβρα Σχεσιακός λογισμός πλειάδων Σχεσιακός λογισμός πεδίων
Επισκόπηση- αναλυτικά ΣχεσιακόςΛογισμόςΠλειάδων Ορισμός Λεπτομέρειες Παραδείγματα Ισοδυναμία με σχεσιακή άλγεβρα ΣχεσιακόςΛογισμόςΠεδίων+ QBE
ΣχεσιακόςΛογισμόςΠεδίων Ερ: γιατί; Aπ: ελαφρώς ευκολότερος από το σχεσιακό λογισμό πλειάδων αν και ισοδύναμοι βάση για την QBE Βασική ιδέα: μεταβλητές πεδίου (w/ F.O.L.) Πχ. βρες ΦΟΙΤΗΤΗΣ αρχείο με ΑΜ=123
ΣχεσιακόςΛογισμόςΠεδίων βρες ΦΟΙΤΗΤΗΣ αρχείο με ΑΜ=123 { < ΑΜ, Ο, Δ >< ΑΜ, Ο, Δ > ΦΟΙΤΗΤΗΣ ΑΜ = 123}
Λεπτομέρειες Όπως και στο σχεσιακό λογισμό πλειάδων τα επιτρεπόμενα σύμβολα:,,, >, <, =,,,, (, ), Ποσοδείκτες:,
Λεπτομέρειες όμως: μεταβλητές πεδίου (= στήλη), σε αντίθεση με τις μεταβλητές πλειάδων, πχ. < ΑΜ, Ο, Δ > ΦΟΙΤΗΤΗΣ ΑΜ όνομα διεύθυνση
ΣχεσιακόςΛογισμόςΠεδίων Μια μη-διαδικαστική γλώσσα επερωτήσεων ισοδύναμη με το σχεσιακό λογισμό πλειάδων Κάθε επερώτηση είναι μια έκφραση της μορφής: { < x 1, x 2,, x n > P (x 1, x 2,, x n )} x 1, x 2,, x n αναπαριστούν μεταβλητές πεδίων P αναπαριστά έναν τύπο παρόμοιο με αυτόν του κατηγορικού λογισμού
Παράδειγμα Επερωτήσεων Βρες το όνομα-υποκαταστήματος, τον αριθμό-δανείου, και το ποσό για τα δάνεια που είναι πάνω από 1200 Ευρώ {< δάνειο, υποκ, ποσό > < δάνειο, υποκ, ποσό > δάνειο ποσό > 1200} Βρες τα ονόματα όλων των πελατών που έχουν πάρει δάνειο πάνω από 1200 {< πελ > δάνειο, υποκ, ποσό (< πελ, δάνειο > δανειζόμενος <δάνειο, υποκ, ποσό > δάνειο ποσό > 1200)} Βρες τα ονόματα όλων των πελατών που έχουν πάρει δάνειο από το υποκατάστημα Πάτρας και το ύψος του δανείου: {< πελ, ποσό > l (< πελ, δάνειο> δανειζόμενος υποκ(< δάνειο, υποκ, ποσό > δάνειο υποκ = Πάτρα ))} or {< πελ, ποσό > l (< πελ, δάνειο > δανειζόμενος <δάνειο Πάτρα, ποσό > δάνειο)}
Παράδειγμα Επερωτήσεων Βρες τα ονόματα όλων των πελατών που έχουν πάρει δάνειο, που έχουν καταθέσεις ή και τα δύο στο υποκατάστημα Πάτρας: {< πελ > l ({< πελ, δάνειο > δανειζόμενος υποκ,ποσό (< δάνειο, υποκ, ποσό > δάνειο υποκ = Πάτρα )) λογ (< πελ, λογ > καταθέτης υποκ,όνομα (< λογ, υποκ, όνομα > λογαριασμός υποκ = Πάτρα ))} Βρες τα ονόματα όλων των πελατών που έχουν λογαριασμό σε όλα τα υποκαταστήματα του Βόλου: {< πελ > όνομα (< πελ, οδ, όνομα > πελάτης) x,y,z (< x, y, z > υποκατάστημα y = Βόλος ) λογ,υποκ (< x, y, z > λογαριασμος <πελ,λογ > καταθέτης)}
Θυμηθείτε τη μικρή μας ΒΔ ΦΟΙΤΗΤΗΣ ΑΜ Όνομα Διεύθυνση 123 Σταύρου Αιόλου 234 Αντωνίου Κιλκίς ΜΑΘΗΜΑ Κωδ Όνομα ΔΜ cis331 ΔΒ 2 cis321 C 2 ΠΑΙΡΝΕΙ ΑΜ Κωδ βαθμός 123 cis331 A 234 cis331 B
Παραδείγματα Βρες όλα τα αρχεία φοιτητών { < ΑΜ, ον, δι >< ΑΜ, ον, δι > ΦΟΙΤΗΤΗΣ} Σχεσιακός λογιασμός πλειάδων { t t ΦΟΙΤΗΤΗΣ}
Παραδείγματα (επιλογή) βρες όλα τα αρχεία φοιτητών με ΑΜ=123
Παραδείγματα (επιλογή) βρες όλα τα αρχεία φοιτητών με ΑΜ=123 { < 123, ον, δι >< 123, ον, δι > ΦΟΙΤΗΤΗΣ} ή { < ΑΜ, ον, δι >< ΑΜ, ον, δι > ΦΟΙΤΗΤΗΣ ΑΜ = 123} Σχεσιακός λογιασμός πλειάδων { t t ΦΟΙΤΗΤΗΣ t[ ΑΜ ] = 123}
Παραδείγματα (προβολή) βρες το όνομα του φοιτητή με ΑΜ=123 { < όνομα > < 123, όνομα, διεύθυνση ΦΟΙΤΗΤΗΣ }
Παραδείγματα (προβολή) βρες το όνομα του φοιτητή με ΑΜ=123 { < όνομα > δι( < 123, ον, δι > ΦΟΙΤΗΤΗΣ) } πρέπει να δεσμεύσουμε το δι Σχεσιακός λογιασμός πλειάδων { t s ΦΟΙΤΗΤΗΣ( s[ ΑΜ ] = 123 t[ όνομα] = s[ όνομα])}
Παραδείγματα συνέχεια (ένωση) φέρε τα αρχεία των full-time (FT) και part-time (PT) φοιτητών Σχεσιακός λογιασμός πλειάδων { t t FT _ ΦΟΙΤΗΤΗΣ t PT _ ΦΟΙΤΗΤΗΣ}
Παραδείγματα συνέχεια (ένωση) φέρε τα αρχεία των full-time (FT) και part-time (PT) φοιτητών { < ΑΜ, ον, δι >< ΑΜ, ον, δι > FT _ ΦΟΙΤΗΤΗΣ < ΑΜ, ον, δι > PT _ ΦΟΙΤΗΤΗΣ}
Παραδείγματα διαφορά: βρες τους φοιτητές που δεν είναι μέλη του προσωπικού Σχεσιακός λογιασμός πλειάδων { t t ΦΟΙΤΗΤΗΣ t ΠΡΟΣΩΠΙΚΟ}
Παραδείγματα διαφορά: βρες τους φοιτητές που δεν είναι μέλη του προσωπικού { < ΑΜ, ον, δι >< ΑΜ, ον, δι > ΦΟΙΤΗΤΗΣ < ΑΜ, ον, δι > ΠΡΟΣΩΠΙΚΟ}
Καρτεσιανό Γινόμενο Πχ. Εκτροφείο σκύλων: ΑΡΣΕΝΙΚΑ x ΘΥΛΗΚΑ Δίνει όλα τα πιθανά ζεύγη ΑΡΣΕΝΙΚΑ όνομα Τζακ Φλοξ ΘΥΛΗΚΑ x όνομα Ίρμα = Λίντα A.όνομα Τζακ Τζακ Φλοξ Φλοξ Θ.όνομα Λίντα Ίρμα Λίντα Ίρμα
Καρτεσιανό Γινόμενο Βρες όλα τα ζευγάρια (αρσενικά, θυληκά) Σχεσιακός Λογισμός Πλειάδων { t α ΑΡΣΕΝΙΚΑ θ ΘΥΛΗΚΑ t[ α όνομα] = α[ όνομα] t[ θ όνομα] = θ[ όνομα]}
Καρτεσιανό Γινόμενο Βρες όλα τα ζευγάρια (αρσενικά, θυληκά) ΣχεσιακόςΛογισμόςΠεδίων: { < αρσ, θυλ >< αρσ > ΑΡΣΕΝΙΚΑ < θυλ > ΘΥΛΗΚΑ}
Απόδειξη ισοδυναμίας Σχεσιακή άλγεβρα <-> σχεσιακός λογισμός πεδίων <-> σχεσιακός λογισμός πλειάδων
Επισκόπηση -αναλυτικά ΣχεσιακόςΛογισμόςΠεδίων Γιατί Λεπτομέρειες Παραδείγματα Ισοδυναμία με σχεσιακή άλγεβρα Περισσότερα παραδείγματα, ασφαλείς εκφράσεις
Περισσότερα παραδείγματα Συνένωση: βρες τους φοιτητές του μαθήματος cis351
Θυμηθείτε τη μικρή μας ΒΔ ΦΟΙΤΗΤΗΣ ΑΜ Όνομα Διεύθυνση 123 Σταύρου Αιόλου 234 Αντωνίου Κιλκίς ΜΑΘΗΜΑ Κωδ Όνομα ΔΜ cis331 ΔΒ 2 cis321 C 2 ΠΑΙΡΝΕΙ ΑΜ Κωδ βαθμός 123 cis331 A 234 cis331 B
Περισσότερα παραδείγματα Συνένωση: βρες τους φοιτητές του μαθήματος cis351 σε σχεσιακό λογισμό πλειάδων { t s ΦΟΙΤΗΤΗΣ e ΠΑΙΡΝΕΙ( s[ ΑΜ ] = e[ ΑΜ] t[ όνομα] = s[ όνομα] e[ κωδ ] = cis351)}
Περισσότερα παραδείγματα Συνένωση: βρες τους φοιτητές του μαθήματος cis351 σε σχεσιακό λογισμό πεδίων { < όνομα > ΑΜ δι βαθμ( < ΑΜ, ον, δι > ΦΟΙΤΗΤΗΣ < ΑΜ, cis351, βαθμ > ΠΑΙΡΝΕΙ)}
Προεπισκόπηση στην QBE: { < όνομα > ΑΜ δι βαθμ( < ΑΜ, ον, δι > ΦΟΙΤΗΤΗΣ < ΑΜ, cis351, βαθμ > ΠΑΙΡΝΕΙ)} ΦΟΙΤΗΤΗΣ ΑΜ όνομα διεύθυνση _x P. ΠΑΙΡΝΕΙ ΑΜ κωδ βαθμός _x cis351
Προεπισκόπηση στην QBE: Φιλική προς τον χρήστη Στηρίζεται πολύ στο σχεσιακό λογισμό πεδίων Αρκετά παρόμοια με τη διεπαφή της MS Access ΦΟΙΤΗΤΗΣ ΑΜ όνομα διεύθυνση _x P. ΠΑΙΡΝΕΙ ΑΜ κωδ βαθμός _x cis351
Περισσότερα παραδείγματα Τριπλή συνένωση: βρες τα ονόματα των φοιτητών που έχουν πάρει μάθημα με 2 ΔΜ- σε σχεσιακό λογισμό πλειάδων: { t s ΦΟΙΤΗΤΗΣ e ΠΑΙΡΝΕΙ c ΜΑΘΗΜΑ( s[ ΑΜ ] = e[ ΑΜ] συνένωση e[ κωδ ] = c[ κωδ ] t[ όνομα] = s[ όνομα] προβολή c[ ΔΜ ] = 2)} επιλογή
Θυμηθείτε τη μικρή μας ΒΔ _x.p ΦΟΙΤΗΤΗΣ ΑΜ Όνομα Διεύθυνση 123 Σταύρου Αιόλου 234 Αντωνίου Κιλκίς _y 2 ΜΑΘΗΜΑ Κωδ Όνομα ΔΜ cis331 ΔΒ 2 cis321 C 2 ΠΑΙΡΝΕΙ ΑΜ Κωδ βαθμός 123 cis331 A 234 cis331 B _x _y
Περισσότερα παραδείγματα Τριπλή συνένωση: βρες τα ονόματα των φοιτητών που έχουν πάρει μάθημα με 2 ΔΜ { < όνομα >... < ΑΜ, ον, δι > ΦΟΙΤΗΤΗΣ < ΑΜ, κωδ. μαθ, βαθμ > ΠΑΙΡΝΕΙ < κωδ μαθ, ον. μαθ,2 > ΜΑΘΗΜΑ}
Περισσότερα παραδείγματα Τριπλή συνένωση: βρες τα ονόματα των φοιτητών που έχουν πάρει μάθημα με 2 ΔΜ { < όνομα > ΑΜ, δι, κωδ μαθ, βαθμ, ον. μαθ( < ΑΜ, όν, δι > ΦΟΙΤΗΤΗΣ < ΑΜ, κωδ. μαθ, βαθμ > ΠΑΙΡΝΕΙ < κωδ. μαθ, ον. μαθ,2 > ΜΑΘΗΜΑ )}
Ακόμα Περισσότερα Παραδείγματα self -joins: βρες τους παππούδες του Θωμά ΓΠ Γ-id Μαρία Πέτρος Γιάννης π-id Θωμάς Μαρία Θωμάς ΓΠ Γ-id Μαρία Πέτρος Γιάννης π-id Θωμάς Μαρία Θωμάς
Ακόμα Περισσότερα Παραδείγματα self -joins: βρες τους παππούδες του Θωμά { t p ΓΠ q ΓΠ ( p[ π id] = q[ γ id] p[ γ id] = t[ γ id] q[ π id] = " Θωμάς ")}
Ακόμα Περισσότερα Παραδείγματα self -joins: βρες τους παππούδες του Θωμά { t p ΓΠ q ΓΠ ( p[ π id] = q[ γ id] p[ γ id] = t[ γ id] q[ π id] = " Θωμάς ")} { < παπ > γ ( < παπ, γ > ΓΠ < γ," Θ ωμάς " > ΓΠ)}
Ακόμα Περισσότερα Παραδείγματα self -joins: βρες τους παππούδες του Θωμά { < παπ > γ ( < παπ, γ > ΓΠ < γ," Θ ωμάς " > ΓΠ)}
Δύσκολα Παραδείγματα: ΔΙΑΙΡΕΣΗ Βρες τους προμηθευτές που παρείχαν όλα τα μέρη της AΤΟΜΙΚΗΣ_BOMBΑΣ ΠΡΟΗΜΘΕΙΑ προμηθευτής προϊόν s1 s2 s1 s3 s5 p1 p1 p2 p1 p3 ΑΤ-ΒΟΜΒΑ προϊόν p1 = p2 ΥΠ_ΠΡΟΜ προμηθευτ s1
Δύσκολα Παραδείγματα: ΔΙΑΙΡΕΣΗ Βρες τους προμηθευτές που παρείχαν όλα τα μέρη της AΤΟΜΙΚΗΣ_BOMBΑΣ { t p( p AΤ ΒΟΜΒΑ ( s ΠΡΟΜΗΘΕΙΑ( ts [ #] = ss [ #] sp [ #] = pp [ #])))}
Δύσκολα Παραδείγματα: ΔΙΑΙΡΕΣΗ Βρες τους προμηθευτές που παρείχαν όλα τα μέρη της AΤΟΜΙΚΗΣ_BOMBΑΣ { t p( p AΤ ΒΟΜΑ ( s ΠΡΟΜΗΘΕΙΑ( ts [ #] = ss [ #] sp [ #] = pp [ #])))} { < προμ > πρ( < πρ > AΤ ΒΟΜΒΑ < προμ, πρ > ΠΡΟΜΗΘΕΙΑ)}
Περισσότερα για τη διαίρεση Βρες τους φοιτητές (ΑΜ) που πήραν όλα τα μαθήματα που πήρε ο φοιτητής με ΑΜ =123 (και ίσως περισσότερα) { o t(( t ΠΑΙΡΝΕΙ t[ ΑΜ ] = 123) t1 ΠΑΙΡΝΕΙ( t1[ κωδ ] = t[ κωδ ] t1[ ΑΜ ] = o[ ΑΜ]) )}
Περισσότερα για τη διαίρεση Βρες τους φοιτητές (ΑΜ) που πήραν όλα τα μαθήματα που πήρε ο φοιτητής με ΑΜ =123 (και ίσως περισσότερα) { < ΑΜ > κωδ. μαθ( g( < 123, κωδ, μαθ, βαθμ > ΠΑΙΡΝΕΙ) g '( < ΑΜ, κωδ. μαθ, βαθμ ') ΠΑΙΡΝΕΙ))}
Ασφάλεια Εκφράσεων Παρόμοια με το σχεσιακό λογισμό πλειάδων ΜΗ ΕΠΙΤΡΕΠΤΗ: { < ΑΜ, ον, δι >< ΑΜ, ον, δι > ΦΟΙΤΗΤΗΣ}
Ασφάλεια Εκφράσεων { < x 1, x 2,, x n > P(x 1, x 2,, x n )} Είναι ασφαλής αν ισχύουν όλα τα ακόλουθα: 1. Όλεςοιτιμέςστιςπλειάδεςτηςέκφρασηςείναιμεταβλητέςαπό το dom a(p) (δηλ.οι τιμές εμφανίζονται είτε στο P ήσεμια πλειάδα μιας σχέσης που αναφέρεται στο P ) 2. Για κάθε there exists τύπο της μορφής x (P 1 (x)), ο τύπος αξιολογείται σε true αν και μόνο αν υπάρχει μια τιμή x στο dom (P 1 ) τέτοια ώστε το P 1 (x) να αξιολογείται σε true. 3. Για κάθε for all τύπο της μορφής x (P 1 (x)), ο τύπος αξιολογείται σε true αν και μόνο αν το P 1 (x) αξιολογείται σε true για όλες τις τιμές του x από το dom (P 1 ).
Επισκόπηση -αναλυτικά Σχεσιακός Λογισμός Πεδίων + QBE Ορισμός Λεπτομέρειες Ισοδυναμία με σχεσιακή άλγεβρα