Ας υποθέσουμε, τώρα, ότι θέλουμε με κάποιο τρόπο να εμφανίζονται τα μαθήματα που παίρνει ο κάθε μαθητής.
Αρχικά, μιλάμε για μια νέα οντότητα, τα μαθήματα, οπότε απαραίτητα θα δημιουργηθεί ένας νέος Πίνακας Μαθήματα. Τα πεδία του θα είναι Κ_ΜΑΘΗΜΑΤΟΣ (δηλ. Κωδικός Μαθήματος) και ΟΝΟΜΑ.
Προσέξτε, όμως, ότι ο ένας μαθητής παίρνει πολλά μαθήματα, αλλά και κάθε μάθημα το έχουν πάρει πολλοί μαθητές!!!
Πρόκειται για μία Σχέση Πολλά προς Πολλά.
Τέτοια σχέση δεν υπάρχει σε πίνακες σε Βάσεις Δεδομένων, διότι δημιουργεί τεράστια έλλειψη ευελιξίας, πλεονασμό (redundancy)και αυξάνει την πιθανότητα για ασυνέπεια (inconsistency).
Η λύση δίνεται με το να δημιουργηθεί ένας νέος ενδιάμεσος πίνακας που θα έχει το πρωτεύον κλειδί και των δύο. Έστω, λοιπόν, ότι τον λέμε ΜΑΘ_ΜΑΘ (δηλ. μαθητής_μάθημα), με στήλες το Α_Μ από τον Πίνακα Μαθητή και τον Κ_Μαθήματος από το Μάθημα.
Τώρα τόσο ο Πίνακας Μαθητής, όσο και ο Πίνακας Μάθημα έχουν ο καθένας μία σχέση ένα προς πολλά με τον ΜΑΘ_ΜΑΘ.
Οπότε επανερχόμαστε σε αυτά που είναι ήδη γνωστά.
Αφού δημιουργήσετε τους πίνακες και τις σχέσει, όπως ήδη γνωρίζετε,
η εικόνα των Σχέσεων στη Βάση Δεδομένων σας, θα είναι κάπως έτσι:
Στη συνέχεια, δημιουργήστε ερωτήματα που να δείχνουν:
1. Το ονοματεπώνυμο του κάθε μαθητή με όλα τα μαθήματα που έχει πάρει.
2. Το ονοματεπώνυμο και το πλήθος των μαθημάτων που πήρε ο κάθε μαθητής
3. Το ονοματεπώνυμο και το πλήθος των μαθημάτων που πήρε όποιος εξετάζεται προφορικά.
4. Το ονοματεπώνυμο και το πλήθος των μαθημάτων που έχει ο κάθε μαθητής της Α Τάξης.
5. Το πλήθος των μαθημάτων ανά Τάξη
6. Το όνομα των μαθημάτων του BΠ (τι παρατηρείτε;)
Αρχικά, μιλάμε για μια νέα οντότητα, τα μαθήματα, οπότε απαραίτητα θα δημιουργηθεί ένας νέος Πίνακας Μαθήματα. Τα πεδία του θα είναι Κ_ΜΑΘΗΜΑΤΟΣ (δηλ. Κωδικός Μαθήματος) και ΟΝΟΜΑ.
Προσέξτε, όμως, ότι ο ένας μαθητής παίρνει πολλά μαθήματα, αλλά και κάθε μάθημα το έχουν πάρει πολλοί μαθητές!!!
Πρόκειται για μία Σχέση Πολλά προς Πολλά.
Τέτοια σχέση δεν υπάρχει σε πίνακες σε Βάσεις Δεδομένων, διότι δημιουργεί τεράστια έλλειψη ευελιξίας, πλεονασμό (redundancy)και αυξάνει την πιθανότητα για ασυνέπεια (inconsistency).
Η λύση δίνεται με το να δημιουργηθεί ένας νέος ενδιάμεσος πίνακας που θα έχει το πρωτεύον κλειδί και των δύο. Έστω, λοιπόν, ότι τον λέμε ΜΑΘ_ΜΑΘ (δηλ. μαθητής_μάθημα), με στήλες το Α_Μ από τον Πίνακα Μαθητή και τον Κ_Μαθήματος από το Μάθημα.
Τώρα τόσο ο Πίνακας Μαθητής, όσο και ο Πίνακας Μάθημα έχουν ο καθένας μία σχέση ένα προς πολλά με τον ΜΑΘ_ΜΑΘ.
Οπότε επανερχόμαστε σε αυτά που είναι ήδη γνωστά.
Αφού δημιουργήσετε τους πίνακες και τις σχέσει, όπως ήδη γνωρίζετε,
η εικόνα των Σχέσεων στη Βάση Δεδομένων σας, θα είναι κάπως έτσι:
Στη συνέχεια, δημιουργήστε ερωτήματα που να δείχνουν:
1. Το ονοματεπώνυμο του κάθε μαθητή με όλα τα μαθήματα που έχει πάρει.
2. Το ονοματεπώνυμο και το πλήθος των μαθημάτων που πήρε ο κάθε μαθητής
3. Το ονοματεπώνυμο και το πλήθος των μαθημάτων που πήρε όποιος εξετάζεται προφορικά.
4. Το ονοματεπώνυμο και το πλήθος των μαθημάτων που έχει ο κάθε μαθητής της Α Τάξης.
5. Το πλήθος των μαθημάτων ανά Τάξη
6. Το όνομα των μαθημάτων του BΠ (τι παρατηρείτε;)
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου
Σημείωση: Μόνο ένα μέλος αυτού του ιστολογίου μπορεί να αναρτήσει σχόλιο.