|
Îåêßíçóå áðü ôï ìÝëïò parpel. Τελευταία δημοσίευση από το μέλος cap στις 22-12-2008, 12:54. Υπάρχουν 14 απαντήσεις.
-
21-12-2008, 01:00
|
-
parpel
-
-
-
Μέλος από τις 20-12-2008
-
-
Δημοσιεύσεις 2
-
-
|
Καλησπέρα!!! Έχω μία εργασία για την σχολή, στην οποία πρέπει να δημιουργήσω μια βάση δεδομένων με εργασίες. Νομίζω πως οι πίνακες θα πρέπει να είναι ο φοιτητής που αναλαμβάνει την εργασία, ο καθηγητής που την αναθέτει κ η εργασία
κ πως γενικότερα η βαση κανονικοποιημένη θα είναι κάπως έτσι: Φοιτητής(ΑΜ, Όνομα, επώνυμο, Διεύθυνση, Ε-mail, Κωδικός_εργασίας) Καθηγητής(Κωδικός_καθηγητή, Όνομα, επώνυμο, Τηλέφωνο γραφείου, E-mail) Εργασία(Κωδικός_εργασίας, Τίτλος, Έτος, Είδος, Βαθμός, Αρχείο, Περίληψη, ΑΜ_φοιτητη, Κωδικός_καθηγητή)
Έχω δίκιο ή όχι; Νομίζεται πως θα πρέπει να συμπληρώσω ή να διαφοροποιήσω κάτι;;;; Ξέρει μήπως και κανείς ποιά θα είναι τα όρια;;;; Αρχικά νόμιζα πως εννοεί τις απαιτήσεις, αλλα μου τις ζήτησε πρόσθετα...
|
|
-
21-12-2008, 13:23
|
|
Όρια? Τί εννοείς όρια? Υπάρχουν check constraints, υπάρχουν foreign key constraints, αλλά όρια δεν υπάρχουν στις βάσεις. Ας υποθέσουμε όμως ότι ο καθηγητής εννοεί ένα από τα δύο και απλά μετέφρασε π.χ. το constraints σε όρια. Κάτι μου λέει ότι δεν παρακολούθησες το συγκεκριμένο μάθημα κι έτσι δεν ξέρεις τί ακριβώς εννοεί. Από την άλλη, είναι γενικώς σπαστικό να πρέπει να κάνεις αντίστροφη μετάφραση κάθε φορά που κάποιος εφευρίσκει μία νέα μετάφραση ενός όρου που χρησιμοποιείται αυτούσιος παγκοσμίως. Ευτυχώς, μόλις πάρεις πτυχίο δεν θα χρειαστεί να ξαναμαντέψεις τί εννοεί κάποιος όταν γράφει κάτι στα ελληνικά αντί για τα αγγλικά.
Κατά πάσα πιθανότητα εννοεί τα foreign key constraints, δηλαδή ότι ο AM_Φοιτητή στην εργασία συνδέεται με το AM του φοιτητή.
Όσον αφορά το τί πρέπει να αλλάξεις ... σκοπός της εργασίας είναι να τα βρεις εσύ αυτά για να τα μάθεις, όχι να στα πούμε εμείς. Άσε που χωρίς την εκφώνηση της άσκησης, δεν μπορούμε να ξέρουμε τί μπορεί να χρειάζεται επιπλέον. Αν έχει ζητήσει π.χ. ο καθηγητής να βάλεις και τη βιβλιογραφία της εργασίας? Κάθε φοιτητής παίρνει διαφορετικη εργασία ή όλοι πέρνουν την ίδια? Βέβαια, μπορεί ο καθηγητής να άφησε επίτηδες ανοικτή την ερώτηση για να δει τί θα σκεφτεί ο καθένας και πως θα το σχεδιάσει.
Όπως και να έχει, να σε βοηθήσουμε αν υπάρχει κάποια ασάφεια ή όρος δυσνόητος, αλλά δεν μπορούμε να κάνουμε τη δουλειά που σου έχει ανατεθεί.
Παναγιώτης Καναβός, Freelancer Twitter: http://www.twitter.com/pkanavos
|
|
-
21-12-2008, 13:34
|
|
Συνηθίζεται να μην χρησιμοποιούμε Κωδικούς που γνωρίζει ο τελικός χρήστης ως κλειδιά πινάκων ή foreign keys. Οπότε μια πρώτη βελτίωση μπορεί να είναι να προσθέσεις μια στήλη ID τύπου int στους 3 πίνακες. Ως αποτέλεσμα ο πίνακας Εργασία να έχει ID_φοιτητή, ID_καθηγητή αντί για τις 2 τελευταίες στήλες που έχεις. Αυτό γίνεται γιατί οι κωδικοί που γνωρίζει ο χρήστης μπορεί να αλλάξουν κάποια στιγμή ή να επαναχρησιμοποιηθούν. π.χ. κάποιες σχολές ξέρω ότι επαναχρησιμοποιούν τους ΑΜ μετά από χρόνια, οπότε με το σχήμα που έχεις παλιές εργασίες θα φαίνονται ανατεθημένες σε λάθος φοιτητές. Επίσης δεν συνηθίζεται να χρησιμοποιούμε ελληνικά για την ονοματολογία, αλλά σε μια εργασία ίσως δεν πειράζει πολύ. Εξαρτάται μάλλον από τον καθηγητή σου και το τι θέλει να δει στη δουλειά σου.
Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
|
|
-
21-12-2008, 13:43
|
-
21-12-2008, 23:52
|
-
parpel
-
-
-
Μέλος από τις 20-12-2008
-
-
Δημοσιεύσεις 2
-
-
|
Παναγιώτης Καναβός: Αν έχει ζητήσει π.χ. ο καθηγητής να βάλεις και τη βιβλιογραφία της εργασίας? Κάθε φοιτητής παίρνει διαφορετικη εργασία ή όλοι πέρνουν την ίδια? Βέβαια, μπορεί ο καθηγητής να άφησε επίτηδες ανοικτή την ερώτηση για να δει τί θα σκεφτεί ο καθένας και πως θα το σχεδιάσει.
Η βιβλιογραφία δεν θα υπάρχει. Κάθε φοιτητής θα έχει διαφορετική εργασία. Υπαρχει βέβαι η δυνατότητα συνεργασίας 2 ατόμων. Δεν είπα να κάνετε την δουλειά που έχω. Ρωτησα απλά αν αυτό που έχω γράψει σας φαίνεται σωστό ή όχι κ αν ξέρει κανείς τί είναι αυτά τα πημαδιασμένα τα όρια που ανλεφερε ο καθηγητής. Ευχαριστώ πάντως για τον χρόνο ολων...
|
|
-
22-12-2008, 00:19
|
-
cap
-
-

-
Μέλος από τις 14-01-2005
-
Βύρωνας, Αθήνα
-
Δημοσιεύσεις 2.750
-
-
|
parpel:Φοιτητής(ΑΜ, Όνομα, επώνυμο, Διεύθυνση, Ε-mail, Κωδικός_εργασίας) Καθηγητής(Κωδικός_καθηγητή, Όνομα, επώνυμο, Τηλέφωνο γραφείου, E-mail) Εργασία(Κωδικός_εργασίας, Τίτλος, Έτος, Είδος, Βαθμός, Αρχείο, Περίληψη, ΑΜ_φοιτητη, Κωδικός_καθηγητή)
Έχω δίκιο ή όχι;
Εγώ θα έβγαζα το πεδίο κωδικός_εργασίας από τον πίνακα Φοιτητής. Το πεδίο ΑΜ_Φοιτητή στον πίνακα της εργασίας αρκεί για να ορίσει σε ποιόν φοιτητή ανήκει η εργασία. Οχι μόνο αυτό, αλλά αν αφήσεις το πεδίο κωδικός_εργασίας στον πίνακα Φοιτητής τότε έχεις να συντηρείς δύο τιμές για κάθε δίδυμο εργασίας-φοιτητή, στους δύο πίνακες, οι οποίες θα πρέπει να βρίσκονται σε συμφωνία, ενώ ένα foreign key στον ένα από τους δύο πίνακες αρκεί.
Εχε υπόψη σου οτι αν επέλεγες να αφήσεις το πεδίο Κωδικός_εργασίας στον πίνακα Φοιτητής και αφαιρούσες το πεδίο ΑΜ_Φοιτητή από τον πίνακα Εργασία, προεξοφλούσες οτι κάθε φοιτητής θα μπορεί να έχει το πολύ μία εργασία. (null τιμή για καμία εργασία, ή μια τιμή επάνω στο record του φοιτητή για μια εργασία). Από τα στοιχεία του πίνακα Εργασία (έτος, είδος) βγαίνει έμμεσα το συμπέρασμα οτι κάθε φοιτητής μπορεί να έχει παραπάνω από μία εργασίες, ακριβώς όπως κάποιος καθηγητής μπορεί να δίνει παραπάνω από μία εργασίες.
Σοφά επιλέγεται ως κλειδί ο Κωδικός_Εργασίας στον πίνακα Εργασία και όχι το compound AM_Φοιτητή + Κωδικός_καθηγητή, μια και ο συνδυασμός αυτός μπορεί να υπάρξει περισσότερες από μια φορές (ένας φοιτητής μπορεί να έχει περισσότερες από μία εργασίες από τον ίδιο καθηγητή). Ισως, αν υπάρξει η ανάγκη για σύνθετο πρωτεύον κλειδί, να πρέπει να συμπεριληφθούν και άλλα πεδία σε αυτό (έτος+είδος;)
Σωτήρης Φιλιππίδης DotSee Web Services
|
|
-
22-12-2008, 00:45
|
|
Δημήτρη, αυτό που λες δεν ισχύει ακριβώς έτσι. Είναι λάθος να χρησιμοποιεί κανείς πεδία τα οποία έχουν κάποια σημασία για την επιχείρηση ή τη σχολή ως κλειδιά, γιατί αυτή μπορεί να αλλάξει με περίεργους τρόπους. Αυτό όμως δεν σημαίνει ότι μόνο κρυφά πεδία μπορούν να είναι κλειδιά. Ένα πεδίο όπως ο Αριθμός Μητρώου, άνετα μπορεί να χρησιμοποιηθεί γιατί κατά κανόνα .... προέρχεται από κλειδί κάποιας βάσης! Αν το πεδίο έχει περίεργους κανόνες, όπως η επαναχησιμοποίηση που αναφέρεις, δεν πρέπει να χρησιμοποιηθεί. Αν όμως υπάρχει ένα πεδίο το οποίο είναι πάντα μοναδικό και δεν αλλάζει, άνετα μπορεί να χρησιμοποιηθεί ως κλειδί.
Τα κλειδιά τα οποία υπάρχουν ήδη στις οντότητες τις οποίες αποθηκεύουμε στη βάση, και τα οποία γνωρίζει ο τελικός χρήστης, ονομάζονται natural keys. Τα τεχνητά πεδία, τα οποία φτιάχνουμε εμείς αν δεν υπάρχουν κατάλληλα natural keys ονομάζονται artificial keys. Αν υπάρχει ένα natural key το οποίο μας κάνει, δεν υπάρχει λόγος να δημιουργήσουμε ένα artificial key. Για παράδειγμα, το ISBN ενός βιβλίου είναι μοναδικό οπότε δεν υπάρχει λόγος να δημιουργούμε νέο κλειδί απλά και μόνο επειδή το ISBN είναι ορατό στο χρήστη.
Για όσους ενδιαφέρονται, μία καλή περιγραφή των διαφόρων κλειδιών δίνει ο Joe Celko στο άρθρο Keys and History.
Παναγιώτης Καναβός, Freelancer Twitter: http://www.twitter.com/pkanavos
|
|
-
22-12-2008, 01:02
|
|
Παναγιώτης Καναβός:Δημήτρη, αυτό που λες δεν ισχύει ακριβώς έτσι.
Δεν καταλαβαίνω τι είπα διαφορετικό από σένα και λες ότι δεν ισχύει ακριβώς έτσι. Αυτό που είπα είναι ότι "δεν συνηθίζεται". Αυτό που έκανες είναι να περιγράψεις με περισσότερη λεπτομέρεια κάποια πράγματα. Σε ευχαριστούμε.
Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
|
|
-
22-12-2008, 01:21
|
-
22-12-2008, 01:28
|
-
22-12-2008, 01:39
|
-
Markos
-
-

-
Μέλος από τις 26-10-2008
-
Αθήνα
-
Δημοσιεύσεις 874
-
-
|
Τότε οι πίνακες πρέπει να γίνουν τέσσερις. Το assignment της εργασίας δεν πρέπει να γίνεται στον πίνακα των φοιτητών.
parpel:
Φοιτητής(ΑΜ, Όνομα, επώνυμο, Διεύθυνση, Ε-mail, Κωδικός_εργασίας) Καθηγητής(Κωδικός_καθηγητή, Όνομα, επώνυμο, Τηλέφωνο γραφείου, E-mail) Εργασία(Κωδικός_εργασίας, Τίτλος, Έτος, Είδος, Βαθμός, Αρχείο, Περίληψη, ΑΜ_φοιτητη, Κωδικός_καθηγητή)
Συγνώμη, αλλά είναι και η ώρα δύσκολη. Έτσι, όπως είναι, αν παραμείνει το ΑΜ του φοιτητή στον πίνακα της εργασίας, αφού ο κωδικός της εργασίας είναι το PK, ούτως ή αλλιώς δεν μπορεί να ανατεθεί η ίδια εργασία σε άλλο φοιτητή στον πίνακα 'Εργασία'. Συνεπώς, πρέπει να δημιουργηθεί κι άλλος πίνακας π.χ. 'Ανάθεση Εργασιών' με σύνθετο PK (Κωδικός Εργασίας, ΑΜ_Φοιτητή).
Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
|
|
-
22-12-2008, 01:50
|
-
22-12-2008, 01:57
|
-
22-12-2008, 12:48
|
-
manosB
-
-

-
Μέλος από τις 05-10-2005
-
Καπανδρίτι
-
Δημοσιεύσεις 903
-
-
|
Να δώσω και εγώ τον οβολό μου. Γενικά δεν είναι καλή πρακτική να έχεις 2 πίνακες για Φοιτητές - καθηγητές. Μια κοινή πρακτική που γενικά ισχύει σε εμπορικές εφαρμογές είναι ένας και ενιαίος πίνακας των συναλλασσομένων. Δηλαδή εκεί θα κρατάς τα στοιχεία για κάθε πρόσωπο και θα τα δέσεις με ένα πίνακα τύπο συναλλασσομένου που θα κρατάς την ιδιότητα του κάθε προσώπου. Αυτό το σενάριο μπορεί να σου φαίνεται άσκοπο τώρα αλλά είναι σίγουρο πως θα το συναντήσεις σίγουρα σε εμπορικές εφαρμογές και καλό θα ήταν να το τηρήσεις. Σκέψου το σενάριο να έχεις και έναν μεταπτυχιακό που θα επιβλέπει την εργασία. Τι θα κάνεις θα βάλεις και άλλο πίνακα. Ενώ με τον τύπο συναλλασσόμενου καθαρίζεις.
Manos
|
|
-
22-12-2008, 12:54
|
|
|
|