Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Σχεσιακές βάσεις χωρίς... σχέσεις;

Îåêßíçóå áðü ôï ìÝëïò Dimitris Papadimitriou. Τελευταία δημοσίευση από το μέλος Panagiotis Kefalidis στις 12-02-2010, 14:13. Υπάρχουν 7 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  12-02-2010, 10:33 57095

    Σχεσιακές βάσεις χωρίς... σχέσεις;

    Ξεκίνησε μια ζεστή (για να μην πω καυτή και τσουρουφλιστή) συζήτηση σε άλλο thread σχετικά με την σχεδίαση σχεσιακών βάσεων (κλασικών βάσεων δηλαδή σε sql server, oracle, mysql, access κλπ) που δεν έχουν relationships. Μάλιστα αναφέρθηκε ότι υπάρχουν τέτοια συστήματα από έμπειρους προγραμματιστές. Επίσης αναφέρθηκε από άλλους διαφωνούντες ότι κάτι τέτοιο είναι επικίνδυνο. Να πω 1-2 πράγματα αν μου επιτρέπετε, έστω κι αν είναι προφανή και χωρίς να θέλω να προσθέσω κάτι στα λεγόμενα των υπολοίπων του προηγούμενου thread.
    1. (ΠΡΟΣΟΧΗ! Μην μείνετε μόνο στο 1 - διαβάστε και το 2) Ναι, υπάρχουν βάσεις δεδομένων χωρίς relationships. Ίσως πολλές φορές τμήματα αυτών. Όπως υπάρχουν και βάσεις (ή τμήματα βάσεων) χωρίς primary keys, indexes, βάσεις μη κανονικοποιημένες κλπ. Όλα αυτά γίνονται για διάφορους ειδικούς λόγους όπως ευελιξία στο migration δεδομένων, ταχύτητα στην καταχώρηση, διατήρηση ιστορικών δεδομένων, ευκολότερο reporting κλπ. Επίσης τέτοιες βάσεις δεν είναι απαραίτητα transactional. Δεν είναι δηλαδή οι βάσεις που χρησιμοποιούν οι τυπικές εφαρμογές χρηστών που καταχωρούν δεδομένα. Ίσως είναι βάσεις για MIS, Reporting κλπ.
    2. Κατά αντιστοιχία, υπάρχουν και μηχανές χωρίς φρένα, αυτοκίνητα με 500hp χωρίς ESP κλπ κλπ. Μόνο που αυτά τα οχήματα τα οδηγεί ο Stig και δεν τα αφήνει στον Captain Slow (συνήθως). Επίσης πολλές φορές απαγορεύεται από τον ΚΟΚ να βγουν στους δρόμους (βλ. μηχανές χωρίς φρένα), οπότε ακόμα και ο Stig τα οδηγάει σε ειδικές πίστες. Αυτό που θέλω να πω είναι ότι 95-99% των περιπτώσεων μια βάση και ένας προγραμματιστής (άσχετα με το πόσο έμπειρος είναι) χρειάζεται και τα foreign keys και τα primary keys και τα indexes και την κανονικοποίηση. Δεν είναι η εμπειρία που τα κάνει να μην χρειάζονται. Είναι η εφαρμογή.


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  12-02-2010, 11:35 57099 σε απάντηση της 57095

    Απ: Σχεσιακές βάσεις χωρίς... σχέσεις;

    Σωστά όλα τα παραπάνω, και πολλές φορές σε reporting είναι μονόδρομος. Και συνήθως κάποια crucial/mandatory Keys και constraints εξακολουθούν να υπάρχουν (ώστε να μην μπορείς να τα κάνεις εντελώς κολουβάχατα) αλλά αυτό που πάει περίπατο σχεδόν σίγουρα είναι η κανονικοποίηση.

    Πάντως ήταν είναι ένα σενάριο που δεν το είχαμε αναφέρει και έπρεπε να ακουστεί.


    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  12-02-2010, 11:51 57100 σε απάντηση της 57099

    Απ: Σχεσιακές βάσεις χωρίς... σχέσεις;

    Φοβερό το άλλο thread, δυστυχώς αυτές τις μέρες είμαι χωρίς τηλέφωνο και Internet στο σπίτι γιατί κάποιος φοβέρος έκοψε γραμμή και δεν μπορώ να βλέπω αυτά που θέλω από το σπίτι.

    Αλλά ένα θα πω αυτό που έχει πει ένας από του 7 Σοφούς της αρχαιότητας ο Κλεόβουλος από την Λίνδο της Ρόδου.

    Ὀψιμανθῆ εἶναι μᾶλλον ἢ ἀμαθῆ.

    Αυτό και τίποτα παραπάνω.

     


    Antonios Chatzipavlis

  •  12-02-2010, 12:15 57101 σε απάντηση της 57095

    Απ: Σχεσιακές βάσεις χωρίς... σχέσεις;

    Dimitris Papadimitriou:

    ................. Ναι, υπάρχουν βάσεις δεδομένων χωρίς relationships. Ίσως πολλές φορές τμήματα αυτών. Όπως υπάρχουν και βάσεις (ή τμήματα βάσεων) χωρίς primary keys, indexes, βάσεις μη κανονικοποιημένες κλπ. Όλα αυτά γίνονται για διάφορους ειδικούς λόγους όπως ευελιξία στο migration δεδομένων, ταχύτητα στην καταχώρηση, διατήρηση ιστορικών δεδομένων, ευκολότερο reporting κλπ. Επίσης τέτοιες βάσεις δεν είναι απαραίτητα transactional. Δεν είναι δηλαδή οι βάσεις που χρησιμοποιούν οι τυπικές εφαρμογές χρηστών που καταχωρούν δεδομένα. Ίσως είναι βάσεις για MIS, Reporting κλπ.

    ...........Δεν είναι η εμπειρία που τα κάνει να μην χρειάζονται. Είναι η εφαρμογή.


    +++10000


    This Business Is Binary. You are a 1 or a 0. Alive or Dead.-
  •  12-02-2010, 12:26 57104 σε απάντηση της 57099

    Απ: Σχεσιακές βάσεις χωρίς... σχέσεις;

    Θα διαφωνίσω όσον αφορά τα MIS και το reporting, και εγώ που φτιάχνω τώρα ένα data warehouse και ο συνάδελφος στο διπλανό γραφείο που φτιάχνει τα reports στο Cognos. Τα Foreign Key constraints τα θες και στις reporting databases ως reference για όποιον άλλο δουλέψει με τη βάση, αλλά και επειδή τα εργαλεία reporting τα χρησιμοποιούν στο σχεδιασμό των μοντέλων τους.
    Τέλος, τα θες και για τον πρωταρχικό τους στόχο: τον έλεγχο των δεδομένων. Μία reporting database ή ένα data warehouse πρέπει να περιέχει καθαρή πληροφορία, χωρίς τα λάθη και τις παραλείψεις του OLTP. Ένας τρόπος να το ελέγξεις αυτό είναι με τα Foreign key constraints.

    Ο μόνος λόγος να τα αποφύγεις είναι επειδή καθυστερούν πολύ το φόρτωμα των δεδομένων. Γι αυτό και όταν φορτώνεις τα data είτε τα ρίχνεις είτε τα απενεργοποιείς (ανάλογα με τις δυνατότητες της βάσης) και τα επανενεργοποιείς όταν τελειώσει το φόρτωμα. Ο ευκολότερος τρόπος να το κάνεις αυτό είναι με ένα stored procedure.

    Εκεί που συνήθως δεν θα βρεις  constraints είναι στη staging βάση που χρησιμοποιείς για να φορτώσεις τα αρχικά δεδομένα για "σουλούπωμα", όπου πρέπει να μπούν όλα τα δεδομένα από τις πηγές σου ασχέτως μορφής και κατάστασης, πριν τα συμμαζέψεις.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  12-02-2010, 13:01 57106 σε απάντηση της 57104

    Απ: Σχεσιακές βάσεις χωρίς... σχέσεις;

    Καλά τα λες. Κι εγώ δεν γράφω πουθενά ότι δεν χρειάζεσαι foreign keys σε βάση που προορίζεται για reporting. Γενικά λέω ότι κάποιοι κανόνες χαλαρώνουν ανάλογα με τη χρήση της βάσης. Συγκεκριμένα για reporting μερικές φορές χαλαρώνει ο κανόνας της κανονικοποιίησης.
    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  12-02-2010, 13:33 57108 σε απάντηση της 57106

    Απ: Σχεσιακές βάσεις χωρίς... σχέσεις;

    Βασικά, στον Κεφαλλίδη απευθυνόμουν, που χθες ήταν εδώ και μας άκουγε αλλά φαινεται δεν εννοούσε Stick out tongue Όσο για την κανονικοποίηση, στις reporting βάσεις και κυρίως στο data warehouse πάει περίπατο, απλά γιατί οι απαιτήσεις και οι κανόνες είναι άλλοι. Η κανονικοποίηση απαιτείται σε εφαρμογές OLTP, όπου θέλεις να γράφεις/αλλάζεις εύκολα δεδομένα με περίπλοκες σχέσεις μεταξύ τους και η πρόσβαση σε αυτά μπορεί να γίνει με οποιοδήποτε τρόπο.

    Στο reporting αντίθετα τα δεδομένα αλλάζουν σπάνια, αλλά διαβάζονται συχνά, οι σχέσεις μεταξύ τους είναι δεδομένες και ο τρόπος πρόσβασης προκαθορισμένος.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  12-02-2010, 14:13 57109 σε απάντηση της 57108

    Απ: Σχεσιακές βάσεις χωρίς... σχέσεις;

    Καταρχήν για μια φορά στην ζωή σου γράψε σωστά το επίθετό μου.. Stick out tongue Κατα δεύτερον το ίδιο με εσάς λέω κακιασμένε. Εγώ εχθές σκεφτόμουν το φαγητό, όχι τι έλεγες εσύ στον oracla ή τον Πάρη Stick out tongue Για τιμωρία δεν θα σου φέρω τσουρέκι!


    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems