GIORGARAS Δημοσ. 24 Νοεμβρίου 2003 Δημοσ. 24 Νοεμβρίου 2003 Θα ήθελα να ρωτήσω τα εξής. Πρώτα απ’όλα είναι η πρώτη βάση που φτιάχνω με MySQL. Φτιάχνω μια βάση με προσωπικό μιας εταιρείας (ας πούμε) είναι εργασία για μάθημα . Το μοναδικό κλειδί της βάσης είναι ο αριθμός μητρώου του υπαλλήλου, αφού όλα τα άλλα στοιχεία δεν προσδιορίζουν μοναδικά τον υπάλληλο. Το πρόβλημα μου είναι ότι ένας υπάλληλος έχει 10 γνωρίσματα τα οποία δεν είναι σωστό να τα βάλω όλα σε έναν πίνακα. Βέβαια ικανοποιούνται όλοι οι κανόνες τις κανονικοποίησης και έχω διαβάσει αρκετά για να βρω κάποια λύση, αλλά σκέφτομαι τα γνωρίσματα που σχετίζονται μεταξύ τους σαν έννοιες να τα βάλω σε ξεχωριστούς πίνακες με μια έξτρα στήλη τον αριθμό μητρώου φυσικά ώστε να μπορώ να τους συνδέω. Είναι σωστή η σκέψη μου? Ευχαριστώ πολύ!!
random Δημοσ. 25 Νοεμβρίου 2003 Δημοσ. 25 Νοεμβρίου 2003 Ναι, σωστα πας. Σαν γενικό κανόνα για να πετύχεις το απόλυτο της κανονικοποίησης (αν και επειδή ειναι για μάθημα οι καθηγητες δεν ειναι και τόσο απαιτητικοι), ειναι να φτιαξεις εναν πινακα στο χαρτι, ή σε excel, και να αρχιζεις να καταχωρείς δεδομένα, πχ υπαλλήλους. Οταν παρατηρήσεις οτι έβαλες πάνω απο μιά φορά την ίδια ακριβως πληροφορία σε 2 εγγραφές, φτιάχνεις άλλο πινακα, με το δικό του κλειδί. Εξαιρούνται τα ονόματα μόνο. πχ, μητρώο, όνομα, επωνυμο, πόλη, οδός, τηλ, ΤΚ, τμήμα, οικογ.κατάσταση: Τα (πόλη, ΤΚ, τμήμα, και οικογ.κατάσταση), θα είναι ίδια για πολλούς απο τους υπαλλήλους, άρα το σωστό ειναι για καθε ενα απο αυτα να εχεις πινακα δικο του, οποτε ο πινακας υπαλλήλων γίνεται: μητρώο, όνομα, επωνυμο, κωδ.πόλης, οδός, τηλ, κωδ.ΤΚ, κωδ.τμήμα, κωδ.οικογ.κατάστασης. και συσχετίζεται με τους πίνακες πόλεων, ΤΚ, τμήματων, και οικογ.κατάστασεων με τα κλειδιά. Αν εχεις να καταχωρήσεις 10-20-30 υπαλλήλους ολο αυτο σου φαίνεται αγγαρεία, αλλα αν απλά σκεφτείς οτι μπορεί να ειναι πίνακας πολιτών, στρατευσίμων, ψηφοφόρων, ή επαγελματικού συλλόγου, με χιλιάδες ή εκατομμύρια εγγραφές, αποκτά άλλο νόημα.
GIORGARAS Δημοσ. 25 Νοεμβρίου 2003 Μέλος Δημοσ. 25 Νοεμβρίου 2003 Φίλε πρώτα απ’όλα ευχαριστώ για την απάντησή σου, η βάση είναι για 24 άτομα στρατιωτικών όπου έχω τα εξής γνωρίσματα: Βαθμός, ειδικότητα, ονοματεπώνυμο, αριθμός μητρώου, έτη υπηρεσίας, ημερομηνία τελευταίας προαγωγής, ακαθάριστος μισθός, καθαρός μισθός ,υπερωρίες και τμήμα που δουλεύει. Εγώ λέω να ονομάσω έναν πίνακα προσωπικό που θα βάλω ονοματεπώνυμο και αριθμό μητρώου, έναν άλλον θα ονομάσω προσόντα όπου θα βάλω βαθμό, ειδικότητα, έτη υπηρεσίας, ημερομηνία τελευταίας προαγωγής και αριθμό μητρώου, έναν άλλο πίνακα θα ονομάσω μισθό και θα βάλω ακαθάριστος μισθός, καθαρός μισθός ,υπερωρίες και αριθμό μητρώου και τέλος έναν άλλο θα ονομάσω δουλειά όπου θα βάλω το τμήμα που δουλεύει και τον αριθμό μητρώου. Αυτό είναι σωστό? Αν και όπως μου το είπες νομίζω ότι για το κάθε γνώρισμα πρέπει να φτιάξω έναν πίνακα με τον αριθμό μητρώου. Όσο για τον καθηγητή πίστεψέ με είναι υπερβολικός. Ευχαριστώ πολύ!!
random Δημοσ. 25 Νοεμβρίου 2003 Δημοσ. 25 Νοεμβρίου 2003 1. για 24 ατομα? τι ειναι το 24? ειναι στην περιγραφή της ασκησης οτι η βαση θα εχει 24 ατομα. Δηλαδη αποκλειεται να εχει παραπάνω? τοτε τι βαση θέλει? ας φτιαξουν ενα ascii file με το notepad και να τα βαλουν ολα χυμα μεσα!!! ή μπορεις να τα βαλεις hard coded kiolas τα στοιχεια σε ενα προγραμμα ! (ti lew pali??) κανεις δε στηνει βαση δεδομενων γνωριζονταις εκ των προτερων ποσα records θα έχει. 2. O pinakas "προσόντα όπου θα βάλω βαθμό, ειδικότητα, έτη υπηρεσίας, ημερομηνία τελευταίας προαγωγής και αριθμό μητρώου" σε τι χρησιμεύει? Αφου ο ΣΥΝΔΙΑΣΜΟΣ αυτων των γνωρισματων ειναι μοναδικός για καθε άτομο σε τι οφελει να τα εχεις ξεχωρα, αφου δεν εχεις καμια οικονομια χωρου? Το ιδιο ισχύει και για τον πινακα μισθος. πιστεύω οτι κανενας δεν θα έχει ιδιο συνδιασμο μισθος-υπερωριες με άλλον. Εκτος αν ο μισθος εξαρταται αποκλειστικα απο τον βαθμό, οποτε κανεις ενα πινακα Βαθμοί, οπου βαζεις κωδ.βαθμού, τιτλος βαθμού (λοχιας πχ), μισθος, καθαρος. και στο πινακα προσωπικο βαζεις ονομα,κλπ, κωδ.βαθμού, και υπερωρίες (κανενας δεν θα εχει μαλλον ΙΔΙΟ αριθμο υπερωριων με άλλον), και ετη υπηρεσίας, και τελευταιας προαγωγης. Αν ομως ο μισθός δεν εξαρταται μονο απο το βαθμό, αλλα και απο άλλα (χρονια, τμημα, προαγωγή) τον βαζεις και αυτον στο μαστερ πινακα (προσωπικο). 3. Ο πινακας Δουλεια, ειναι σωστος αλλα με λαθος κλειδί. δουλειες εννοεις τμήμα. Αρα ο Α ειναι στο Πυροβολικο, ο Β στο Υπουργειο, ο Γ στην Εκπαιδευση, κλπ. Ο πινακας δουλεια θα εχει: κωδ. τμηματος, περιγραφη τμηματος (Υπουργειο), και ο πινακας προσωπικο θα εχει κωδ. τμηματος για να σχετιστει με τον Δουλεια. Δηλαδη κοβοντας τον π.προσωπικο σε άλλους, δινουμε σε καθε αλλο πινακα το δικο του κλειδι, και το βαζουμε και στον π.προσωπικου. Δεν βαζουμε το κλειδι του προσωπικου (Μητρωο) σε κανεναν αλλο πινακα. Αν το κανεις εισαι λαθος. Παραδειγμα. Εστω οτι εχεις 1000 στρατιωτικους, και ολο το στρατευμα εχει 100 πιθανες δουλειες/τμηματα. Τα στοιχεια του ατομου πιάνουν 100 bytes, kai ths doyleias 10 bytes. o kodikos atomou 5 bytes, kai kodikos douleias 5 bytes. Αν το κανεις οπως θελεις εσυ, θα εχεις Πινακα προσωπικου με 1000 εγγραφές x (5+100) = 105.000 bytes , και πινακα Δουλεια (κωδ. μητρωου, Δουλεια) με 1000 εγγραφές x (5+10) = 15.000 bytes, Synolo 120.000 bytes. Αν το κανεις οπως λεω, θα εχεις Πινακα προσωπικου με 1000 εγγραφές x (5+100+5) = 110.000 bytes, και πινακα Δουλεια (κωδ. δουλειας, Δουλεια) με 100 εγγραφές x (5+10) = 1.500 bytes. Synolo 111.500 bytes. Ποιο ειναι πιο λογικο/οικονομικο? Αν το αφήσεις όπως είναι (ολα σε ενα πινακα) θα εχεις ΕΝΑ πινακα, με 1000 εγγραφες, (ατομο, δουλεια), Αλλα καμια κανονικοποίηση. 1000 x (5+100+10) = 115.000 bytes. 4. απ οτι βλέπω προσπαθεις να κανεις ενα διαχωρισμο των τμημάτων με βαση την λειτουργικη, το "σε τι χρησιμοποιουνται". δηλ, εβαλες ξεχωρα τους μισθους επειδη θα τους χρησιμοποιει η μισθοδοσία, Αυτο μπορει να το κανετε σε ενα τμημα management ή λογιστικής. Εχω την εντυπωση οτι αναφέρεσαι σε μαθημα πληροφορικής. Απο την σκοπιά του DB Analyst/Προγραμματιστή, δεν μας ενδιαφέρουν σε τι χρησιμεύεουν τα δεδομενα, αλλα μονο πως θα βελτιστοποιησουμε τη χρηση αποθηκευτικό χώρο, την ταχύτητα της βασης, και τον περιορισμό λαθων των χρηστων. (δηλαδη οταν πας να καταχωρησεις νεο ατομο, δεν πρέπει να γράφεις ολογραφος "Υπουργείο" στη δουλειά, γιατι μπορει ενας να το γραψει ολο κεφαλαια, αλλος με λατινικα, αλλος χωρις τόνο, και οταν πας να κανεις μια λιστα ατομων ανα τμημα να βγάλεις πατατες......., αλλα να βάζεις τον κωδικο δουλειας πχ. 1) και ετσι σου απαντώ, Αν ο καθηγητης εχει αλλο σκοπο για την ασκηση, δεν το ξερω, αν θελει να σας μαθει διαχειρηση προσωπικου και οχι σχεδιασμο βασεων.
GIORGARAS Δημοσ. 25 Νοεμβρίου 2003 Μέλος Δημοσ. 25 Νοεμβρίου 2003 φίλε ευχαριστώ για τον χρόνο σου πρέπει να τα διαβάσω όλα αυτά αναλυτικά και θα σου απαντήσω γιατί χάθηκα λίγο. Όσο για το νούμερο των εγγραφών εννοώ ότι έχω τα πραγματικά στοιχεία 24 στρατιωτικών όπου θα βάλω στην βάση. Το αν διαγράψουν ή βάλουν και άλλους είναι θέμα του τελικού χρήστη. Η βάση θα μπει σε υπολογιστή μονάδας και θα την διαχειρίζονται με Access. Ευχαριστώ φίλε θα σου απαντήσω σε λίγο.
GIORGARAS Δημοσ. 25 Νοεμβρίου 2003 Μέλος Δημοσ. 25 Νοεμβρίου 2003 Φίλε 767 φοιτητής είμαι ακόμα εργασία κάνω απλώς. Φίλε και πάλι χίλια ευχαριστώ για τον χρόνο σου. Εγώ σπουδάζω Μαθηματικό και έχω το μάθημα βάσεις δεδομένων ως επιλογής. Η εργασία είναι να βρω κάπου έξω κάποια εταιρεία όπου θα φτιάξω βάση δεδομένων και εγώ βρήκα στον πατέρα μου αφού είναι στρατιωτικός. <<2. O pinakas "προσόντα όπου θα βάλω βαθμό, ειδικότητα, έτη υπηρεσίας, ημερομηνία τελευταίας προαγωγής και αριθμό μητρώου" σε τι χρησιμεύει? Αφου ο ΣΥΝΔΙΑΣΜΟΣ αυτων των γνωρισματων ειναι μοναδικός για καθε άτομο σε τι οφελει να τα εχεις ξεχωρα, αφου δεν εχεις καμια οικονομια χωρου? >> Είναι σωστό να τα έχω όλα αυτά στον αρχικό πίνακα με το προσωπικό? Μόνο ο αριθμός μητρώου κάνει τον συνδυασμό μοναδικό γιατί μπορεί άνετα δύο στρατιωτικοί να έχουν ίδια τα υπόλοιπα στοιχεία. <<Το ιδιο ισχύει και για τον πινακα μισθος. πιστεύω οτι κανενας δεν θα έχει ιδιο συνδιασμο μισθος-υπερωριες με άλλον. Εκτος αν ο μισθος εξαρταται αποκλειστικα απο τον βαθμό, οποτε κανεις ενα πινακα Βαθμοί, οπου βαζεις κωδ.βαθμού, τιτλος βαθμού (λοχιας πχ), μισθος, καθαρος. >> Επίσης γίνεται να έχουν τα ίδια στοιχεία δεν γίνεται να το αποκλείσω αυτό. Αυτό είναι το πρόβλημά μου ότι μοναδικό κλειδί από όλο τον αρχικό πίνακα είναι ο αριθμός μητρώου. <<και στο πινακα προσωπικο βαζεις ονομα,κλπ, κωδ.βαθμού, και υπερωρίες (κανενας δεν θα εχει μαλλον ΙΔΙΟ αριθμο υπερωριων με άλλον), και ετη υπηρεσίας, και τελευταιας προαγωγης.>> Οι υπερωρίες είναι σε χρήματα όχι ώρες. Μήπως είναι καλύτερα να τα βάλω με τον μισθό; Όπως σου είπα τα πάντα μπορεί να είναι ίδια εκτός από τον αριθμό μητρώου, ακόμ ακαι το ονοματεπώνυμο δεν μπορώ να πω ότι είναι διαφορετικό. <<Αν ομως ο μισθός δεν εξαρταται μονο απο το βαθμό, αλλα και απο άλλα (χρονια, τμημα, προαγωγή) τον βαζεις και αυτον στο μαστερ πινακα (προσωπικο).>> Ο μισθός είναι ολόκληρη ιστορία πως βγαίνει δεν εξαρτάται μόνο από τον βαθμό αλλά από πολλά πράγματα και ούτε ξέρω πως ακριβώς βγαίνει. <<3. Ο πινακας Δουλεια, ειναι σωστος αλλα με λαθος κλειδί. δουλειες εννοεις τμήμα. Αρα ο Α ειναι στο Πυροβολικο, ο Β στο Υπουργειο, ο Γ στην Εκπαιδευση, κλπ. Ο πινακας δουλεια θα εχει: κωδ. τμηματος, περιγραφη τμηματος (Υπουργειο), και ο πινακας προσωπικο θα εχει κωδ. τμηματος για να σχετιστει με τον Δουλεια. >> Φίλε μου άψογο δεν το είχα σκεφτεί έτσι, αντί να γράφω για τον κάθε στρατιωτικό το τμήμα που είναι θα βάλω κωδικό για εξοικονόμηση χώρου. Όπως σου είπα είναι η πρώτη μου βάση. <<Δηλαδη κοβοντας τον π.προσωπικο σε άλλους, δινουμε σε καθε αλλο πινακα το δικο του κλειδι, και το βαζουμε και στον π.προσωπικου. Δεν βαζουμε το κλειδι του προσωπικου (Μητρωο) σε κανεναν αλλο πινακα. Αν το κανεις εισαι λαθος. >> Με κάλυψες απολύτως φίλε πάνω σε αυτό το κομμάτι. Και το παράδειγμα σου πολύ καλό. <<4. απ οτι βλέπω προσπαθεις να κανεις ενα διαχωρισμο των τμημάτων με βαση την λειτουργικη, το "σε τι χρησιμοποιουνται". δηλ, εβαλες ξεχωρα τους μισθους επειδη θα τους χρησιμοποιει η μισθοδοσία, ...(δηλαδη οταν πας να καταχωρησεις νεο ατομο, δεν πρέπει να γράφεις ολογραφος "Υπουργείο" στη δουλειά, γιατι μπορει ενας να το γραψει ολο κεφαλαια, αλλος με λατινικα, αλλος χωρις τόνο, και οταν πας να κανεις μια λιστα ατομων ανα τμημα να βγάλεις πατατες......., αλλα να βάζεις τον κωδικο δουλειας πχ. 1)>> Πράγματι αυτό προσπαθούσα να κάνω να χωρίσω τον πίνακα με μια κοινή λογική γιατί δεν ήθελα να έχω έναν πίνακα ολόκληρο. Ευχαριστώ πολύ φίλε με κάλυψες σε όλα τα θέματα, μένει να δω στην πράξη τι θα γίνει. Και πάλι ευχαριστώ!!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.