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

 

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

Απ: Kανονικοποίηση Βάσης Προϊόντων

  •  03-06-2006, 23:21

    Απ: Kανονικοποίηση Βάσης Προϊόντων

    Συνημμένα: acme2.zip

    Μέχρι ο Μάνος να φτιάξει μια βάση ακριβώς για την περιπτωσή σου, σου παραθέτω μία παρόμοια που έχω πρόχειρη.

    ACME2

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

    ACME2 Database Model Diagram

    Το πρόβλημα που προσπαθεί να λύσει, είναι παρόμοιο με το πρόβλημα ενός ηλεκτρονικού καταστήματος που πουλάει πολλά είδη προϊόντων. Στην συγκεκριμένη περίπτωση δεν έχουμε προϊόντα, αλλά μπαχαρικά. Κάθε μπαχαρικό (πίνακας agr_articles) – ρίγανη, βασιλικός, χαμομήλι – έχει ιδιότητες που τις έχουμε χωρίσει σε δυο κατηγορίες – τις δυναμικές και τις στατικές.

    Για την ευκολία μας έχουμε καθορίσει ότι κάθε μπαχαρικό μπορεί να έχει 10 δυναμικές ιδιότητες και ν στατικές. Η διαφορά μεταξύ των δυναμικών και των στατικών ιδιοτήτων, είναι ότι οι στατικές είναι εισαγωγή ελεύθερου κειμένου και ορίζονται σε ένα μπαχαρικό, και αυτόματα περνάνε σε κάθε προϊόν που βασίζεται σε αυτό. Αντίθετα οι δυναμικές είναι επιλογές μέσα από μια προκαθορισμένη λίστα τιμών, και ορίζονται μεν ποιες αντιστοιχούν σε κάθε μπαχαρικό και παίρνουν διαφορετικές τιμές δε σε κάθε προϊόν. Ο συνδυασμός των στατικών και την δυναμικών ιδιοτήτων και ενός μπαχαρικού, μας καθορίζει ένα προϊόν με μοναδικό SKU (πίνακας agr_article_product) που είναι και το τελικό προϊόν μας προς πώληση.

    Να ξεκινήσω την εξήγηση της βάσης από τα εύκολα, τις στατικές ιδιότητες. Κάθε μπαχαρικό έχει ν στατικές ιδιότητες που καθορίζονται μέσα στον πίνακα agr_attributes. Για κάθε μπαχαρικό που απαιτεί να έχει τιμή σε μία από τις ιδιότητες, στον πίνακα agr_article_attributes υπάρχουν εγγραφές που ορίζουν τιμή (attrib_value) για την συγκεκριμένη ιδιότητα (attrib_id) και το συγκεκριμένο μπαχαρικό (article_id).

    Τις δυναμικές ιδιότητες τις ορίζουμε ως εξής: Για κάθε μπαχαρικό, «γεμίζουμε» όσες από τις 10 «θέσεις» για τις δυναμικές ιδιότητες θέλουμε. Έτσι σε κάθε μία από τις «θέσεις» μπορούμε να ορίσουμε να αντιστοιχεί μια κατηγορία – class. Αυτές οι αντιστοιχίες αποθηκεύονται μέσα σε κάθε εγγραφή μπαχαρικού στο πίνακα agr_articles στις θέσεις article_class_00, article_class_01article_class_09. Στον ορισμό κάθε προϊόντος, η τιμή της κάθε ορισμένης κατηγορίας επιλέγεται από τον τιμές που επιστρέφονται από τον συνδυασμό agr_articles.article_class_xx = agr_classificationvalues.class_id, και αποθηκεύεται στο agr_article_product. article_class_xx.

    Τέλος κάθε προϊόν έχει μοναδικό sku, όπου είναι αυτό που ξέρει ο πελάτης και ο πωλητής για να αναφέρονται στο ίδιο προϊόν. Η βάση δεν είναι πλήρως υλοποιημένη – δεν υπάρχουν πεδία για την τιμή προϊόντος ή αν το προϊόν είναι διαθέσιμο, μιας και είχε φτιαχτεί για λόγους επίδειξης, αλλά πιστεύω ότι εύκολα κάποιος αφού καταλάβει την δομή της βάσης μπορεί να τα προσθέσει.

    Συνημμένο στο μήνυμα είναι ένα αρχείο που περιέχει την βάση σε MS Access, το database model σε Visio και ένα Word document με τα παραπάνω.

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
Δείτε όλες τις δημοσιεύσεις της Θεματική Ενότητας
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems