Βάσεις Δεδομένων — Ιανουάριος 2016 (Θέμα 4)¶
Η εκφώνηση προέρχεται από φωτογραφία λυμένου Θέματος 4 (Ιανουάριος 2016)· η 2253.png είναι δεύτερο αντίγραφο της ίδιας λυμένης άσκησης.
SmartSelect_20240625_001851_Samsung_Notes.jpg¶
5.16.6 Θέμα 4- Ιανουάριος 2016¶
Θεωρείστε το σχήμα \(\text{R}(\text{A}, \text{B}, \text{C}, \text{D}, \text{E})\) με τις ακόλουθες συναρτησιακές εξαρτήσεις:
\(\{\text{A}\} \rightarrow \{\text{BE}\}\)
\(\{\text{C}\} \rightarrow \{\text{D}\}\)
Έστω ότι διασπάμε το σχήμα \(\text{R}\) σε \(\text{R}_1(\text{A}, \text{B}, \text{E})\), \(\text{R}_2(\text{A}, \text{C})\), \(\text{R}_3(\text{C}, \text{D})\)
1) Αποδείξτε ότι ο παραπάνω διαχωρισμός είναι χωρίς απώλειες (lossless join)
2) Διατηρεί ο παραπάνω διαχωρισμός τις εξαρτήσεις;
3) Ποια κανονική μορφή ακολουθούν τα σχήματα \(\text{R}_1\), \(\text{R}_2\) και \(\text{R}_3\);
Σημείωση: η φωτογραφία περιέχει χειρόγραφες απαντήσεις φοιτητή.
Επιπλέον πηγές χωρίς μεταγραφή εδώ (λύσεις →
2016-01.solutions.md, ή διπλότυπες φωτογραφίες της ίδιας σελίδας):2253.png
Λύσεις (🟡 community)
Κατάσταση: 🟡 community Πηγή: φωτογραφία λύσεων από το Discord (φοιτητική λύση)
Προσοχή
Στο ερώτημα 2 η λύση γράφει ότι η εξάρτηση A → BE «εκτείνεται σε 2 σχέσεις». Όμως τα A, B, E ανήκουν όλα στο R1(A, B, E), άρα η A → BE διατηρείται ολόκληρη και η C → D διατηρείται στο R3(C, D)· ο διαχωρισμός διατηρεί τις εξαρτήσεις και το συμπέρασμα της λύσης είναι λάθος. Η απάντηση στο ερώτημα 1 (lossless join, R1 ∩ R2 = {A} κλειδί του R1) είναι σωστή.
Λύσεις — Βάσεις Δεδομένων — Ιανουάριος 2016 (Θέμα 4)¶
Φοιτητική λύση του Θέματος 4 (Ιανουάριος 2016), από δύο φωτογραφίες της ίδιας λυμένης άσκησης. Η λύση δεν έχει ελεγχθεί από τον διδάσκοντα.
SmartSelect_20240625_001851_Samsung_Notes.jpg¶
5.16.6 Θέμα 4- Ιανουάριος 2016¶
Θεωρείστε το σχήμα \(\text{R}(\text{A}, \text{B}, \text{C}, \text{D}, \text{E})\) με τις ακόλουθες συναρτησιακές εξαρτήσεις:
\(\{\text{A}\} \rightarrow \{\text{BE}\}\)
\(\{\text{C}\} \rightarrow \{\text{D}\}\)
Έστω ότι διασπάμε το σχήμα \(\text{R}\) σε \(\text{R}_1(\text{A}, \text{B}, \text{E})\), \(\text{R}_2(\text{A}, \text{C})\), \(\text{R}_3(\text{C}, \text{D})\)
1) Αποδείξτε ότι ο παραπάνω διαχωρισμός είναι χωρίς απώλειες (lossless join)
2) Διατηρεί ο παραπάνω διαχωρισμός τις εξαρτήσεις;
3) Ποια κανονική μορφή ακολουθούν τα σχήματα \(\text{R}_1\), \(\text{R}_2\) και \(\text{R}_3\);
Απάντηση
1) Για να είναι διαχωρισμός χωρίς απώλειες συνδέσμου πρέπει να ικανοποιείται ένα από τα ακόλουθα:
-
Το \(\text{R}_1 \cap \text{R}_2 \rightarrow \text{R}_1\) ή \(\text{R}_1 \cap \text{R}_2 \rightarrow \text{R}_2\). Το \(\text{R}_1 \cap \text{R}_2 = \{\text{A}\}\) το οποίο είναι κλειδί στο \(\text{R}_1\). Άρα η \(\text{R}_1 \cap \text{R}_2\) προσδιορίζει συναρτησιακά το \(\text{R}_1\)
-
Το \(\text{R}_2 \cap \text{R}_3 \rightarrow \text{R}_2\) ή \(\text{R}_2 \cap \text{R}_3 \rightarrow \text{R}_3\). Το \(\text{R}_2 \cap \text{R}_3 = \{\text{C}\}\) το οποίο είναι κλειδί στο \(\text{R}_3\). Άρα η \(\text{R}_2 \cap \text{R}_3\) προσδιορίζει συναρτησιακά το \(\text{R}_3\)
-
Άρα είναι lossless join διαχωρισμός
2) Ο παραπάνω διαχωρισμός δεν διατηρεί τις εξαρτήσεις διότι η \(\text{A} \rightarrow \text{BE}\) εκτείνεται σε 2 σχέσεις
2253.png¶
Θεωρείστε το σχήμα \(R(A, B, C, D, E)\) με τις ακόλουθες συναρτησιακές εξαρτήσεις:
\(\{A\} \rightarrow \{BE\}\)
\(\{C\} \rightarrow \{D\}\)
Έστω ότι διασπάμε το σχήμα \(R\) σε \(R_1(A, B, E), R_2(A, C), R_3(C, D)\)
1) Αποδείξτε ότι ο παραπάνω διαχωρισμός είναι χωρίς απώλειες (lossless join)
2) Διατηρεί ο παραπάνω διαχωρισμός τις εξαρτήσεις;
3) Ποια κανονική μορφή ακολουθούν τα σχήματα \(R_1, R_2\) και \(R_3\);
Απάντηση
1) Για να είναι διαχωρισμός χωρίς απώλειες συνδέσμου πρέπει να ικανοποιείται ένα από τα ακόλουθα:
-
Το \(R_1 \cap R_2 \rightarrow R_1\) ή \(R_1 \cap R_2 \rightarrow R_2\). Το \(R_1 \cap R_2 = \{A\}\) το οποίο είναι κλειδί στο \(R_1\). Άρα η \(R_1 \cap R_2\) προσδιορίζει συναρτησιακά το \(R_1\)
-
Το \(R_2 \cap R_3 \rightarrow R_2\) ή \(R_2 \cap R_3 \rightarrow R_3\). Το \(R_2 \cap R_3 = \{C\}\) το οποίο είναι κλειδί στο \(R_3\). Άρα η \(R_2 \cap R_3\) προσδιορίζει συναρτησιακά το \(R_3\)
-
Άρα είναι lossless join διαχωρισμός
2) Ο παραπάνω διαχωρισμός δεν διατηρεί τις εξαρτήσεις διότι η \(A \rightarrow BE\) εκτείνεται σε 2 σχέσεις
3)
-
Στη σχέση \(R_1\) το \(A\) είναι κλειδί άρα είναι σε BCNF
-
Στη σχέση \(R_2\) δεν υπάρχουν εξαρτήσεις, το κλειδί είναι το σύνολο γνωρισμάτων \(A, C\) και είναι σε BCNF
-
Στη σχέση \(R_3\) το γνώρισμα \(C\) είναι κλειδί άρα είναι και αυτή σε BCNF