Μετάβαση στο περιεχόμενο

Βάσεις Δεδομένων — Ιανουάριος 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

✔ Επιβεβαίωσε · ✖ Βρήκα λάθος


✖ Βρήκα λάθος στη μεταγραφή