Saturday, February 8, 2014

Όπως καταλαβαίνεις είναι αρκετά μεγάλο θέμα. Πολύ χοντρικά, vpci μπορείς να κάνεις το εξής: 3 πίνακε


Γεια σας και πάλι... Λοιπον ... θα ηθελα διαφορες γνωμες για την παρακάτω ερωτηση .... Φτιαχνω ενα e-shop οχι για επαγγελματικους σκοπους ακομα αλλα για εκπαιδευτικους , σε asp.Net και C#.. Και ειμαι στην φάση του να τραβηξω δεδομενα απο την βαση σε formviews για να εμφανιζονται τα details των προιοντων μου... Δηλδη εχω για προιοντα ας πουμε (Υπολογιστες , επεξεργαστες , μνημες Ram , Βιβλια και ταινιες )... Καθε κατηγορια απο τις παραπανω εχει και δικα της διαφορετικα details.... Πως ειναι ο πιο σωστος τροπος για να φτιαξω την βαση μου(Sql vpci Server vpci )(Δηλαδη την δομη.Τι tables να εισάγω) *Εχω φτιαξει ως τωρα τους συγκεκριμενους πινακες Product(ολα τα κοινα πεδια που μπορουν να εχουν ολες οι κατηγοριες,με ενα κλειδι) Ολοι οι αλλοι πινακες συνδεονται με τον Product μεσω του παιδιου του ονοματος του προιοντος αφου ειναι μοναδικο DesktopDetails(χωρις κλειδι) MemoryDetail (χωρις κλειδι) κ.ο.κ για τις αλλες κατηγοριες... Το κανω θεμα γιατι δεν ειμαι σιγουρος αν ειναι σωστη η δομη αυτη ... Και επιση γιατι με τετοια δομη δεν βρισκω τροπο για να αποφυγω την δημιουργια διαφορετικων σελιδων για την εμφανιση των αντικειμενων (δηλ 10 κατηγοριες ? και 10 διαφορετικες aspx σελιδες που μου φενεται πολυ κουραστικο και περιττο)
Όπως καταλαβαίνεις είναι αρκετά μεγάλο θέμα. Πολύ χοντρικά, vpci μπορείς να κάνεις το εξής: 3 πίνακες, products, attributes και attributes_to_products. Ο τελευταίος θα έχει τις στήλες id, product_id, attribute_id και value. Οπότε αν έχει το προϊόν iPhone και το attribute Μέγεθος vpci δίσκου, τα συνδέει μέσω του τρίτου πίνακα και βάζεις value 32GB. Το μεγαλύτερο πρόβλημα που είχα αντιμετωπίσει εγώ όταν είχα φτιάξει ένα e-shop για ένα πελάτη, ήταν τι γίνεται με προϊόντα που έχουν άλλη τιμή ανάλογα με τα χαρακτηριστικά τους. Δηλαδή στο παραπάνω παράδειγμα, άλλη τιμή έχει το 32gb iPhone vpci και άλλη το 16gb. Πολλά open source e-shop, απλά εισάγουν άλλο προϊόν και αυτό σου προτείνω κι εσένα (δηλαδή να έχεις 2 iPhone στον πίνακα products)
Βασικά εγω δεν εχω προβλημα να εισάγω δυο φορες ενα αντικειμενο ιδιας μαρκας και ιδιας κατηγοριας με την προυποθεση οτι καποιο απο τα attr ειναι διαφορετικο .... Οντως ενας τριτος πινακας με τα ξενα κλειδια βοηθαει πολυ και για αλλα ερωτηματα που θελω να κανω ...... Ερωτηση τωρα θα ηταν χαζομαρα ; Να γεμισω την σελιδα με πολλα formview οπου αυτα θα ειναι ολα visible = false και enable = false και αναλογα με το ερωτημα στο querystring να κανει ορατο καποιο formview; Οταν κάποιο αντικείμενο ειναι enable = false αυτο φορτωνει;
Όταν ένα προϊόν υπάρχει σε δύο ή περισσότερες διαφορετικές εκδόσεις (στο παράδειγμά σου το iPhone με 16, 32GB) τότε η λύση είναι η χρήση δύο πινάκων, products, productVersions. Στον products αποθηκεύουμε κωδικό προϊόντος, όνομα, ΓΕΝΙΚΗ περιγραφή, μάρκα, γενικά χαρακτηριστικά κλπ και στον productVersions το barcode του κάθε προϊόντος (άλλο barcode έχει το 16άρι και άλλο το 32άρι), την τιμή, την ΕΙΔΙΚΗ περιγραφή (που διαχωρίζει το ένα από το άλλο) και ότι άλλο μας χρειάζεται (πχ stock, τιμή προσφοράς κλπ). Στη σελίδα του προϊόντος γράφεις ένα query με join και έχεις για κάθε προϊόν, όλες τις διαθέσιμες εκδόσεις, παραλλαγές κλπ.
Όταν ένα προϊόν υπάρχει σε δύο ή περισσότερες διαφορετικές εκδόσεις (στο παράδειγμά σου το iPhone με 16, 32GB) τότε η λύση είναι η χρήση δύο πινάκων, products, productVersions. Στον products αποθηκεύουμε κωδικό προϊόντος, όνομα, ΓΕΝΙΚΗ περιγραφή, μάρκα, γενικά χαρακτηριστικά κλπ και στον productVersions το barcode του κάθε προϊόντος (άλλο barcode έχει το 16άρι και άλλο το 32άρι), την τιμή, την ΕΙΔΙΚΗ περιγραφή (που διαχωρίζει το ένα από το άλλο) και ότι άλλο μας χρειάζεται vpci (πχ stock, τιμή προσφοράς κλπ). Στη σελίδα του προϊόντος γράφεις vpci ένα query με join και έχεις για κάθε προϊόν, όλες τις διαθέσιμες εκδόσεις, παραλλαγές κλπ. Σωστο το ολο αυτο (και ναι θα το κανω) αλλα αυτο που θέλω να μαθω ειναι το εξης ... Κοιτα τωρα τι σκεφτηκα μηπως θα ηταν καλυτερα να κανω εναν πινακα για καθε attr και με ενα ξενο κλειδι που θα οδηγει στο προιον . Το μονο προβλημα θα ειναι αυτην την φορα ο υπερβολικα μεγαλος ογκος πινακων στην βαση δεδομενων (που αν και δεν εχω σχετικη εμπειρια νομιζω οτι θα ριξει την αποδοση της βασης ). Το παραπανω δεν θα ειναι εφικτο στο να μου εμφανιζει τα δεδομενα μ σε μια και μονο σελιδα ? Συγγνωμη αν ζηταω πολλα αλλα θέλω κατι ξεκαθαρο για να μπορω να συνεχισω και να βασιζομαι πανω σε μια δομη για κατι μελλοντικο...Τι ειναι καλυτερο πολλες σελιδες για την απεικονιση διαφορετικων κατηγοριων η μια τρελα πολυπλοκη βαση δεδομένων? Το e-shop.gr πως δουλευει ?(Νομιζω με διαφορετικη σελιδα ανα κατηγορια) και παλι sorry αν γινομαι κουραστικος......
5-6 vpci πίνακες είναι υπερβολικά μεγάλος όγκος? Για το παραπάνω vpci δεν εννουσα 5-6 πινακες αλλα αμα εχω cpu που εχει ενα σωρο attr (χρονισμους , τυπους , και αλλα) καρτες γραφικων με attr ( chipsets , μνημες ,τυπος μνήμης , κ.α) και διαφορες αλλες κατηγοριες και αν κανω ξεχωριστους πινακες για καθε attr θα βγουν αρκετοι. Αν καταλαβες το προβλημα μ ... δεν ειναι η βαση ακριβως

No comments:

Post a Comment