4. Σχεδίαση Σχεσιακών ΒΔ

4. Σχεδίαση Σχεσιακών ΒΔ
!  4.1. Εννοιολογικός σχεδιασμός
!  το Μοντέλο Οντοτήτων-Συσχετίσεων (ER)
!  Από τα διαγράμματα ER στο Σχεσιακό Μοντέλο
!  4.2. Θεωρία Κανονικοποίησης
!  Αποσύνθεση – Συναρτησιακές εξαρτήσεις – Boyce-Codd
Κανονική Μορφή
!  Καθολική διαδικασία σχεδίασης ΒΔ
InfoLab | Τμήμα Πληροφορικής | Πανεπιστήμιο Πειραιώς (http://infolab.cs.unipi.gr/)
έκδοση: 2015.02
Βασική πηγή διαφανειών: Silberschatz et al., “Database System Concepts”, 6/e
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
1
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
4.1. Εννοιολογικός Σχεδιασμός
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
2
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Διαδικασία σχεδίασης ΒΔ
!  Σχεδιασμός ΒΔ είναι η διαδικασία δημιουργίας του σχεσιακού
σχήματος (relational schema) της ΒΔ
!  Υπάρχουν 2 «σχολές» σχεδίασης σχεσιακών ΒΔ
1.  Μέσω του Εννοιολογικού Σχεδιασμού. Βήματα:
!  Διατύπωση ενός εννοιολογικού μοντέλου δεδομένων (Conceptual
Data Model) σε μορφή Διαγράμματος Οντοτήτων – Συσχετίσεων
(Entity-Relationship diagram)
!  Μετατροπή του διαγράμματος ER σε Σχεσιακό Σχήμα
2.  Με χρήση Κανονικών Μορφών (Normal Forms) και εφαρμογή
της Θεωρίας Κανονικοποίησης (Normalization theory)
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
3
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Εννοιολογικός Σχεδιασμός
(conceptual design)
!  Προσπάθεια για ξεκαθάρισμα των εννοιών
!  Εύρεση και καταγραφή των Οντοτήτων της ΒΔ, των μεταξύ
τους Συσχετίσεων καθώς και της σημασιολογίας που τα
συνοδεύει
!  ΣΤΟΧΟΣ:
!  Μια αφαιρετική, αλλά πλήρης περιγραφή του τμήματος του
μικρόκοσμού που θα αναπαρασταθεί στην βάση δεδομένων.
!  Αυτή η περιγραφή γίνεται με τη χρήση μιας ημι-τυπικής
σημειογραφίας / συμβολισμού.
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
4
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Παράδειγμα εννοιολογικού σχεδιασμού
instructor
ID
name
salary
department
member
dept_name
building
budget
!  Μοντέλο οντοτήτων-συσχετίσεων (Entity-Relationship model –
ER), π.χ.
!  Ένας Διδάσκων χαρακτηρίζεται από έναν κωδικό και άλλες
πληροφορίες που καταγράφονται είναι το όνομα και ο μισθός του
!  Ένα Τμήμα χαρακτηρίζεται από το όνομά του και άλλες
πληροφορίες που καταγράφονται είναι το κτήριο στο οποίο
βρίσκεται και ο προϋπολογισμός του
!  Ένας Διδάσκων είναι μέλος ενός Τμήματος
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
5
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Συστατικά του E-R Μοντέλου (1)
!  Υπάρχουν δυο βασικές εννοιολογικές έννοιες:
!  Οντότητες (entities)
!  Συγκεκριμένα αντικείμενα που υπάρχουν (ή πιστεύεται ότι
υπάρχουν) και μπορούν να αναπαρασταθούν στην ΒΔ
!  π.χ., ο τάδε ΔΙΔΑΣΚΩΝ, ο τάδε ΦΟΙΤΗΤΗΣ, το τάδε ΜΑΘΗΜΑ
!  Για κάθε οντότητα καταγράφουμε ορισμένα χαρακτηριστικά
(attributes)
!  Συσχετίσεις (relationships)
!  Είναι επίσης (ειδικά) αντικείμενα που αντιστοιχούν δύο ή
περισσότερες ξεχωριστές οντότητες με ένα συγκεκριμένο νόημα
(τυπικά, μια Συσχέτιση είναι ένα διατεταγμένο σύνολο οντοτήτων)
!  π.χ. ο φοιτητής Χ έχει πάρει το μάθημα Υ, ο καθηγητής Χ διδάσκει
το μάθημα Υ, ο καθηγητής Χ είναι επιβλέπων του φοιτητή Υ, κοκ.
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
6
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Οντότητες
!  Κάθε οντότητα έχει χαρακτηριστικά που την προσδιορίζουν
instructor_ID instructor_name
student-ID student_name
76766 Crick
98988
Tanaka
45565 Katz
12345
Shankar
10101 Srinivasan
00128
Zhang
98345 Kim
76543
Brown
76543 Singh
76653
Aoi
22222 Einstein
23121
Chavez
44553
Peltier
instructor
student
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
7
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Συσχετίσεις (1)
76766 Crick
98988 Tanaka
45565 Katz
12345 Shankar
10101 Srinivasan
00128 Zhang
98345 Kim
76543 Brown
76543 Singh
76653 Aoi
22222 Einstein
23121 Chavez
44553 Peltier
instructor
student
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
8
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Συσχετίσεις (2)
!  Μια συσχέτιση μπορεί να έχει δικά της χαρακτηριστικά
98988 Tanaka
76766 Crick
45565 Katz
10101 Srinivasan
3 May 2008
10 June 2007
12 June 2006
12345 Shankar
00128 Zhang
98345 Kim
6 June 2009
76543 Brown
76543 Singh
30 June 2007
76653 Aoi
22222 Einstein
31 May 2007
4 May 2006
instructor
23121 Chavez
44553 Peltier
student
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
9
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Συστατικά του E-R Μοντέλου (3)
!  Είδη χαρακτηριστικών
!  Απλά (simple): μια οντότητα έχει ατομική τιμή για αυτό
!  π.χ., μισθός καθηγητή
!  Σύνθετα (composite): το χαρακτηριστικό αποτελείται από 2 ή
περισσότερα τμήματα
!  π.χ., διεύθυνση = {Δρόμος, Αριθμός, ΤΚ, Πόλη, Χώρα}
!  Πλειότιμα (multi-valued): το χαρακτηριστικό έχει πολλαπλές τιμές
!  π.χ., τηλέφωνο(-α) ενός καθηγητή
!  Εξαρτημένα (derived): η τιμή του χαρακτηριστικού προκύπτει από
τις τιμές άλλων χαρακτηριστικών
!  π.χ., ηλικία φοιτητή, μ.ο. βαθμολογίας του
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
10
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Διάγραμμα Οντοτήτων-Συσχετίσεων (E-R)
student
instructor
ID
name
salary
ID
name
tot_cred
advisor
!  Ορθογώνια: οντότητες
! 
Τα χαρακτηριστικά παρουσιάζονται ως λίστα
! 
Τα υπογραμμισμένα χαρακτηριστικά είναι τα πρωτεύοντα κλειδιά
!  Ρόμβοι: συσχετίσεις
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
11
Ιδιότητες τύπων συσχετίσεων: βαθμός
student
instructor
ID
name
salary
ID
name
tot_cred
advisor
!  Συσχέτιση μεταξύ 2 συνόλων οντοτήτων " διμερής
!  Συσχέτιση μεταξύ 3 συνόλων οντοτήτων " τριμερής
!  κοκ.
project
...
student
instructor
proj_ guide
ID
name
salary
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
12
ID
name
tot_cred
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Ιδιότητες τύπων συσχετίσεων: πληθικότητα
student
instructor
ID
name
salary
advisor
ID
name
tot_cred
!  Η πληθικότητα (cardinality) ενός τύπου συσχέτισης ορίζει
το πόσες οντότητες από το πρώτο σύνολο οντοτήτων στην
συσχέτιση μπορούν να συνδεθούν με πόσες οντότητες από
το δεύτερο σύνολο οντοτήτων
!  π.χ. ο τύπος συσχέτισης instructor-student είναι 1:N (έναπρος-πολλά)
!  ένας καθηγητής μπορεί να επιβλέπει πολλούς φοιτητές
!  ένας φοιτητής μπορεί να επιβλέπεται από έναν μόνο
καθηγητή
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
13
Πληθικότητα συσχέτισης (4 περιπτώσεις)
1:1
instructor
ID
name
salary
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
1:Ν
instructor
student
advisor
ID
name
salary
ID
name
tot_cred
14
student
advisor
ID
name
tot_cred
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Πληθικότητα συσχέτισης (4 περιπτώσεις)
Μ:Ν
Ν:1
instructor
instructor
student
ID
name
salary
advisor
ID
name
tot_cred
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
student
ID
name
salary
advisor
ID
name
tot_cred
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
15
Ιδιότητες τύπων συσχετίσεων: συμμετοχή
!  Η συμμετοχή μιας οντότητας σε μια συσχέτιση μπορεί να είναι
ολική (total) ή μερική (partial)
!  Παράδειγμα: όλοι οι φοιτητές πρέπει να έχουν επιβλέποντα
καθηγητή, αυτό όμως δεν είναι απαραίτητο για τους καθηγητές
instructor
ID
name
salary
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
student
0.. *
advisor
16
1..1
ID
name
tot_cred
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Αδύναμα σύνολα οντοτήτων
!  Σύνολα οντοτήτων των οποίων η ύπαρξη εξαρτάται από την
ύπαρξη μιας άλλης (ισχυρής) οντότητας
!  Η (αδύναμη) συσχέτιση που προκύπτει έχει πληθικότητα 1:Ν
πάντα (γιατί;)
course
course_id
title
credits
sec_course
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
17
section
sec_id
semester
year
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Η έννοια του κλειδιού
!  Ένα χαρακτηριστικό (ή σύνολο χαρακτηριστικών) ενός τύπου
οντοτήτων / συσχετίσεων για τον οποίο κάθε οντότητα /
συσχέτιση στο σύνολο πρέπει να έχει μοναδική τιμή
ονομάζεται κλειδί (key).
!  π.χ. ΑΦΜ του ΥΠΑΛΛΗΛΟΥ, {ΑΦΜ, ΟΝΟΜΑ} του ΥΠΑΛΛΗΛΟΥ, κλπ.
!  υποψήφιο κλειδί (candidate key) ονομάζεται ένα ελάχιστο
(minimal) κλειδί (δηλαδή, κανένα υποσύνολο των
χαρακτηριστικών του δεν είναι κλειδί)
!  π.χ. ΑΦΜ είναι Υποψήφιο Κλειδί για τον ΥΠΑΛΛΗΛΟ, αλλά ο
συνδυασμός {ΑΦΜ, ΟΝΟΜΑ} δεν είναι.
!  Το πρωτεύον κλειδί (primary key) είναι ένα από τα υποψήφια
κλειδιά που ορίζεται σαν αναγνωριστής (identifier) για τον τύπο
οντοτήτων / συσχετίσεων
!  π.χ. ΑΦΜ είναι μια καλή επιλογή Κυρίου Κλειδιού στον τύπο
οντοτήτων ΥΠΑΛΛΗΛΟΣ
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
18
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Η έννοια του ρόλου
!  Οι οντότητες που συσχετίζονται μέσω μιας συσχέτισης δε χρειάζεται
να είναι διακριτές
!  Οι ρόλοι εμφανίζονται στα διαγράμματα E-R με ετικέτες πάνω στις
γραμμές που συνδέουν ρόμβους με ορθογώνια.
!  Οι ετικέτες ρόλων είναι προαιρετικές (ξεκαθαρίζουν τη σημασιολογία
της συσχέτισης)
course
course_id
course_id
title
credits
prereq_id
prereq
!  Παράδειγμα: Οι ετικέτες “course_id” and “prereq_id” δείχνουν πώς τα
μαθήματα αλληλεπιδρούν μέσω της συσχέτισης prereq
(προαπαιτούμενα)
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
19
Εξειδίκευση (Specialization)
person
!  Μια οντότητα (π.χ. person) εξειδικεύεται περαιτέρω σε άλλες οντότητες (π.χ. employee ή student)
ID
name
address
!  Περιπτώσεις εξειδίκευσης:
!  Πλήρης (total) ή μερική (partial)
!  Διακριτή (disjoint) ή επικαλυπτόμενη (overlapping)
salary
instructor
tot_credits
secretary
hours_per_week
rank
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
student
employee
20
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Συσσώρευση (Aggregation)
!  Αποτελεί ειδική περίπτωση συσχέτισης και επιτρέπει συσχέτιση μεταξύ συνόλου οντοτήτων και συνόλου
συσχετίσεων
project
instructor
student
proj_ guide
eval_ for
!  Στην περίπτωση αυτή, το
εμπλεκόμενο σύνολο
συσχετίσεων θεωρείται (καταχρηστικά) ως σύνολο
οντοτήτων
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
evaluation
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
21
Συμβολισμοί στο μοντέλο E-R (1)
E
E
entity set
A1
A2
A2.1
R
A2.2
relationship set
{A3}
R
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
A4()
identifying
relationship set
for weak entity set
R
E
a!ributes:
simple (A1),
composite (A2) and
multivalued (A3)
derived (A4)
E
A1
total participation
of entity set in
relationship
E
A1
22
primary key
discriminating
a!ribute of
weak entity set
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Συμβολισμοί στο μοντέλο E-R (2)
R
R
many-to-many
relationship
R
one-to-one
relationship
rolename
R
l..h
E
E1
total
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
E
cardinality
limits
E1
role indicator
E2
E2
many-to-one
relationship
R
E3
E1
total (disjoint)
generalization
E3
E2
ISA: generalization
or specialization
disjoint
generalization
E3
23
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Μετατροπή σχήματος E-R σε σχεσιακό σχήμα
!  Τα πρωτεύοντα κλειδιά επιτρέπουν να εκφραστούν τα σύνολα
οντοτήτων και τα σύνολα συσχετίσεων ως πίνακες που
αναπαριστούν τα περιεχόμενα μιας βάσης δεδομένων
!  Μια βάση δεδομένων συμβατή με ένα διάγραμμα E-R μπορεί να
αναπαρασταθεί με μια συλλογή πινάκων
!  Η μετατροπή ενός διαγράμματος E-R σε συλλογή πινάκων
αποτελεί την αφετηρία για να προκύψει μια σχεσιακή βάση
δεδομένων από μια εννοιολογική σχεδίαση στο μοντέλο E-R
!  Βασικοί κανόνες μετατροπής E-R σε σχεσιακό ...
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
24
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Αναπαράσταση οντοτήτων & συσχετίσεων
1.  Ένα (ισχυρό) σύνολο οντοτήτων μετατρέπεται σε πίνακα (με
τα ίδια χαρακτηριστικά)
2.  Ένα σύνολο συσχετίσεων Μ:Ν αναπαρίσταται ως πίνακας με
στήλες για τα πρωτεύοντα κλειδιά των οντοτήτων που
συμμετέχουν, και επιπλέον όλα τα χαρακτηριστικά του
συνόλου συσχετίσεων
3.  Οι συσχετίσεις Ν:1 και 1:Ν μπορούν να αναπαρασταθούν απλά
με προσθήκη ενός επιπλέον χαρακτηριστικού στην πλευρά ‘Ν’,
με το πρωτεύον κλειδί της πλευράς ‘1’
!  Εάν η συμμετοχή στην πλευρά ‘Ν’ είναι μερική, μπορεί να προκύψει
η περίπτωση μια στήλη του πίνακα να έχει πολλές κενές τιμές.
Οπότε ίσως θα συνέφερε η δημιουργία νέου πίνακα (όπως κάνουμε
στην περίπτωση Μ:Ν)
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
25
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Αναπαράσταση οντοτήτων & συσχετίσεων
4.  Για τις συσχετίσεις 1:1 έχουμε 3 εναλλακτικές προσεγγίσεις:
!  είτε να προσθέσουμε το πρωτεύον κλειδί της μιας πλευράς ως
επιπλέον χαρακτηριστικό στον πίνακα της άλλης πλευράς
!  και αυτό να γίνει για τον ένα ή και τους δύο πίνακες (στη
δεύτερη περίπτωση, υπάρχει πλεονασμός πληροφορίας)
!  είτε να δημιουργηθεί νέος πίνακας (όπως στην περίπτωση Μ:Ν)
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
26
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Αναπαράσταση σύνθετων / πλειότιμων
χαρακτηριστικών
5.  Τα σύνθετα χαρακτηριστικά μετατρέπονται σε ένα σύνολο
απλών
!  Παράδειγμα: έστω το σύνθετο χαρακτηριστικό name με συστατικά
first-name και last-name. Ο πίνακας που προκύπτει θα έχει, μεταξύ
άλλων, δύο χαρακτηριστικά name.first-name και name.last-name
6.  Από ένα πλειότιμο χαρακτηριστικό ενός συνόλου οντοτήτων
προκύπτει νέος πίνακας !
!  Ο πίνακας έχει ως στήλες το πρωτεύον κλειδί του συνόλου
οντοτήτων και μια ακόμη που αντιστοιχεί στο πλειότιμο
χαρακτηριστικό
!  Παράδειγμα: έστω το πλειότιμο χαρακτηριστικό phone του
συνόλου οντοτήτων instructor (με πρωτεύον κλειδί ID). Προκύπτει
ένας νέος πίνακας instructor-phones (ID, phone)
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
27
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Αναπαράσταση εξειδίκευσης &
συσσώρευσης
7.  Αναπαράσταση εξειδίκευσης, 2 εναλλακτικές:
!  1η μέθοδος: Προκύπτει ένας πίνακας για κάθε εμπλεκόμενο σύνολο
οντοτήτων, όπου καθένας από τους πίνακες εξειδίκευσης
συμπεριλαμβάνει ως στήλη το πρωτεύον κλειδί του πίνακα γενίκευσης
!  2η μέθοδος: Προκύπτει ένας πίνακας για κάθε εμπλεκόμενο σύνολο
οντοτήτων, όπου καθένας από τους πίνακες εξειδίκευσης
συμπεριλαμβάνει ως στήλες όλα τα χαρακτηριστικά του συνόλου
οντοτήτων ανώτερου επιπέδου (γενίκευσης)
!  Εάν η εξειδίκευση είναι πλήρης, δεν απαιτείται ο πίνακας γενίκευσης
8.  Αναπαράσταση συσσώρευσης: προκύπτει πίνακας με στήλες το
πρωτεύον κλειδί της εμπλεκόμενης συσχέτισης, το πρωτεύον
κλειδί του εμπλεκόμενου συνόλου οντοτήτων και τυχόν
επιπλέον χαρακτηριστικά της συσσώρευσης
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
28
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Παράδειγμα διαγράμματος E-R (Παν/μιο)
department
course_dept
dept_name
building
budget
!  7 οντότητες
stud_dept
inst_dept
!  10 συσχετίσεις (3 τύπου Μ:Ν και 7 τύπου Ν:1)
instructor
student
takes
teaches
section
course
course_id
title
credits
course_id
prereq
ID
name
tot_cred
advisor
ID
name
salary
sec_course
prereq_id
sec_id
semester
year
grade
time_slot
sec_time_slot
time_slot_id
{ day
start_time
end_time
}
sec_class
classroom
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
29
building
room_number
capacity
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Παράδειγμα σχεσιακού σχήματος (Παν/μιο)
!  11 πίνακες
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
30
!  Αιτιολογήστε γιατί
είναι 11 ...
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
4.2. Θεωρία Κανονικοποίησης
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
31
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Θεωρία κανονικοποίησης - το πρόβλημα ...
#  Γιατί αυτοί οι 11 πίνακες και όχι κάποιοι άλλοι (περισσότεροι ή
λιγότεροι, με διαφορετικό μοίρασμα χαρακτηριστικών);
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
32
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Παράδειγμα «προβληματικού» σχήματος
!  Έστω ο πίνακας Inst_Dept (αντί των Instructor, Department):
!  Τι προβλήματα βλέπετε;
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
33
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Παράδειγμα «προβληματικού» σχήματος
!  Προβλήματα:
!  Πλεονασμός – επανάληψη δεδομένων
!  Πιθανή ανάγκη για τιμές null
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
34
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Στόχοι στη σχεδίαση σχεσιακών ΒΔ
!  Στόχος της σχεδίασης σχεσιακών ΒΔ είναι να βρούμε μια
συλλογή »σωστά" σχεδιασμένων τύπων σχέσεων.
!  Σχεδιαστικοί στόχοι:
!  Αποφυγή πλεονασμού στα δεδομένα
!  Εξασφάλιση ότι αναπαριστώνται όλες οι συσχετίσεις μεταξύ των
οντοτήτων
!  Αποσύνθεση χωρίς απώλεια πληροφορίας
!  Το «εργαλείο»: κανονικοποίηση ΒΔ
!  Υπακοή σε κάποια κανονική μορφή. Έχουν οριστεί 5 κανονικές
μορφές (normal forms - NF) που η επόμενη είναι πιο αυστηρή από
την προηγούμενη.
!  Μεταξύ 3NF και 4NF έχει οριστεί η κανονική μορφή Boyce-Codd
(BCNF) που πρακτικά αποτελεί το ‘στόχο’ της διαδικασίας
σχεδίασης ΒΔ
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
35
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Αποσύνθεση (decomposition)
!  Για παράδειγμα, αποσύνθεση του
«προβληματικού» πίνακα Inst_Dept στους «σωστούς» Instructor, Department
!  Αποσύνθεση χωρίς απώλεια
πληροφορίας (lossless
decomposition)
1.  Όλα τα χαρακτηριστικά του αρχικού τύπου σχέσης R πρέπει να διατηρούνται στην αποσύνθεση R 1, R 2
R = R1 ∪ R2
2.  Όλες οι πλειάδες της αρχικής σχέσης
r πρέπει να προκύπτουν με κατάλληλη
σύνδεση των σχέσεων στις οποίες
αυτή έχει αποσυντεθεί:
r = ∏R1 (r) ! ∏R2 (r)
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
36
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Παράδειγμα αποσύνθεσης με απώλεια
πληροφορίας
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
37
Παράδειγμα αποσύνθεσης χωρίς απώλεια
πληροφορίας
!  Αποσύνθεση του τύπου σχέσης R = (A, B, C)
σε R1 = (A, B), R2 = (B, C)
A B C
α
β
∏A (r)
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
A B
B
C
1
2
1
2
A
B
1 A
2 B
α
β
r
∏A,B(r)
∏B (r)
A
B C
α
β
1 A
2 B
38
∏B,C(r)
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Συναρτησιακές Εξαρτήσεις
!  Περιορισμοί πάνω στο σύνολο των έγκυρων σχέσεων
!  Απαιτούν η τιμή ορισμένων χαρακτηριστικών να προσδιορίζει
μοναδικά την τιμή άλλων χαρακτηριστικών
!  Παραδείγματα:
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
ID → name, dept_name, salary
dept_name → building, budget
39
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Συναρτησιακές Εξαρτήσεις (συν.)
!  Ορισμός: Έστω R ένας τύπος σχέσης, με α ⊆ R and β ⊆ R. Η συναρτησιακή εξάρτηση (functional dependence - FD) α → β ισχύει πάνω στον R εάν και μόνο εάν
t1[α] = t2 [α] ⇒ t1[β ] = t2 [β ]
!  Γενίκευση της έννοιας του κλειδιού
!  Επιπλέον ορισμοί, σχετικοί με τα κλεδιά:
!  Ορισμός: Το σύνολο χαρακτηριστικών K αποτελεί υπερκλειδί
(superkey) για τον τύπο σχέσης R εάν και μόνο εάν K → R
!  Ορισμός: Το K αποτελεί υποψήφιο κλειδί (candidate key) για τον
R εάν και μόνο εάν: K → R και δεν υπάρχει α ⊂ K, α → R
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
40
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Συναρτησιακές Εξαρτήσεις (συν.)
!  Χρησιμοποιούμε συναρτησιακές εξαρτήσεις για να:
!  Ελέγξουμε την εγκυρότητα μιας σχέσης r σύμφωνα με ένα
δοθέν σύνολο συναρτησιακών εξαρτήσεων FD (οπότε λέμε ότι η
r ικανοποιεί την FDi).
!  Προδιαγράψουμε περιορισμούς FD πάνω σε έναν τύπο σχέσης R
(οπότε λέμε ότι η FDi ισχύει για τον R)
!  Μια συναρτησιακή εξάρτηση καλείται τετριμμένη εάν
ικανοποιείται οπωσδήποτε σε κάθε στιγμιότυπο ενός τύπου
σχέσης. π.χ.
!  ID, name → ID
!  name → name
!  Γενικά, α → β αποτελεί τετριμμένη FD εάν β ⊆ α
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
41
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Κανονικοποίηση με χρήση συναρτησιακών
εξαρτήσεων
Όταν αποσυνθέτουμε ένα τύπο σχέσης R με ένα σύνολο
συναρτησιακών εξαρτήσεων FD στους τύπους σχέσεων R1, R2,..,
Rn έχουμε τριπλό στόχο:
!  Στόχος 1: όχι απώλεια πληροφορίας
!  η αποσύνθεση πρέπει να είναι χωρίς απώλεια πληροφορίας
(lossless decomposition)
!  Στόχος 2: όχι πλεονασμός πληροφορίας
!  Οι τύποι σχέσεων Ri που προκύπτουν από την αποσύνθεση να
είναι σε Boyce-Codd ΚΜ ή τουλάχιστον 3η ΚΜ (θα τις ορίσουμε σε
λίγο ...)
!  Στόχος 3: διατήρηση εξαρτήσεων
!  Έστω FDi μια εξάρτηση που περιέχει μόνο χαρακτηριστικά του Ri.
Η αποσύνθεση επιθυμούμε να διατηρεί (άμεσα ή έμμεσα) την
εξάρτηση.
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
42
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Boyce-Codd Κανονική Μορφή
!  Ένας τύπος σχέσης R είναι σε Boyce-Codd Κανονική Μορφή
(Boyce-Codd Normal Form - BCNF) εάν για όλες τις
συναρτησιακές εξαρτήσεις α → β που ισχύουν στον R, το α
αποτελεί υποψήφιο κλειδί της R
!  Φορμαλιστικά:
∃ (a " b) in FD: a ≠ K
!  Παράδειγμα:
!  Έστω R = (A, B, C), ισχύουν οι συναρτησιακές εξαρτήσεις F =
{A→B, B→C} και {A} είναι το κλειδί ⇒ ο R δεν είναι σε BCNF
!  Έστω ότι γίνεται η αποσύνθεση του R σε R1 = (A,B), R2 = (B,C) ⇒ οι R1 και R2 είναι σε BCNF
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
43
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Boyce-Codd Κανονική Μορφή (συν.)
!  Πώς γίνεται αποσύνθεση σε BCNF:
!  Κάθε συναρτησιακή εξάρτηση σχηματίζει ένα νέο τύπο σχέσης.
!  Για παράδειγμα:
!  Inst_Dept = (ID, name, salary, dept_name, building, budget)
!  FD1: ID → name, dept_name, salary
!  FD2: dept_name → building, budget
!  υποψήφιο κλειδί: {ID}
!  Αποσύνθεση σε:
!  Instructor = (ID, name, salary, dept_name)
!  Department = (dept_name, building, budget)
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
44
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
BCNF και Διατήρηση Εξαρτήσεων
!  «πρόβλημα»: δεν είναι πάντοτε δυνατό να πάρουμε μια
αποσύνθεση BCNF που να διατηρεί τις εξαρτήσεις !!
!  Για παράδειγμα:
!  R = (J, K, L)
!  FD1: JK → L; FD2: L → K
!  2 υποψήφια κλειδιά: {J, K}, {J, L}
!  Όποια αποσύνθεση του R επιχειρήσουμε δεν θα μπορέσουμε να
να διατηρήσουμε την εξάρτηση JK → L
!  Tότε καταφεύγουμε στη λύση της 3NF(*) που είναι πιο «χαλαρή»
από την BCNF («χαλαρή» με την έννοια ότι αν ένας τύπος
σχέσης R είναι σε BCNF τότε σίγουρα είναι και σε 3NF)
!  Εισάγει πλεονασμό πληροφορίας
(*) Δεν θα ασχοληθούμε περαιτέρω με την 3NF
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
45
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Καθολική διαδικασία σχεδίασης ΒΔ
!  Οι στόχοι στη σχεδίαση σχεσιακών ΒΔ είναι:
!  Όλοι οι τύποι σχέσεων να είναι σε BCNF
!  Να γίνεται σύνδεση χωρίς απώλεια πληροφορίας
!  Να διατηρούνται όλες οι εξαρτήσεις
!  Αν δεν μπορούμε να πετύχουμε όλα τα παραπάνω, κάνουμε
υποχωρήσεις:
!  π.χ. καταργούμε κάποιες εξαρτήσεις
!  υποχωρούμε σε 3NF αντί BCNF
!  Ας σημειωθεί ότι η SQL δεν παρέχει κάποιον άμεσο τρόπο
υποστήριξης των συναρτησιακών εξαρτήσεων, πέρα από τους
περιορισμούς του κλειδιού.
!  Μπορούν να προδιαγραφούν με assertions, αλλά ο έλεγχός τους
κοστίζει
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
46
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Η προσέγγιση της καθολικής σχέσης (1)
!  Σε ένα σχήμα ΒΔ το οποίο αποτελείται από n τύπους σχέσεων,
R1, R2, ..., Rn, η σχέση r(U) = r1(R1) r2(R2) … rn(Rn)
ονομάζεται καθολική σχέση (universal relation) καθώς εμπλέκει
όλα τα χαρακτηριστικά της ΒΔ όπως ορίζονται από τον τύπο
σχέσης U = R1 ∪ R2 ∪ … ∪ Rn
!  Παράδειγμα: Έστω σε εννοιολογικό επίπεδο (π.χ. μοντέλο E-R)
έχουν καταγραφεί τα εξής:
!  Οντότητες: Instructor (ID, name, salary, dept_name), Department
(dept_name, building, budget)
!  Συσχέτιση: Instructor $" Department (τύπου N:1)
!  Το σχήμα καθολικής σχέσης που προκύπτει είναι:
!  U = (ID, name, salary, dept_name, building, budget)
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
47
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Η προσέγγιση της καθολικής σχέσης (2)
!  Μεθοδολογία αποσύνθεσης της
καθολικής σχέσης:
!  Αρχικά, καταγράφουμε τις
συναρτησιακές εξαρτήσεις
!  Κατόπιν, αποσυνθέτουμε με
στόχο την BCNF
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
48
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης
Τέλος Ενότητας 4
ΒΔ: [4] Σχεδίαση Σχεσιακών ΒΔ
49
ΠΑ.ΠΕΙ. – Γιάννης Θεοδωρίδης