Σχεδίαση db για eshop

Γενικές συζητήσεις για SQL και SQL Servers (RDBMS)

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
markos_gr
Δημοσιεύσεις: 3
Εγγραφή: 09 Σεπ 2005 13:19

Σχεδίαση db για eshop

Δημοσίευση από markos_gr » 05 Μαρ 2009 11:36

Αγαπητοί φίλοι γεια σας.

Το θέμα έχει να κάνει με την δομή της db για εφαρμογή ηλεκτρονικού εμπορίου σε php/mysql (αν και αυτό δεν έχει ιδιαίτερη σημασία) . Οι λόγοι που δεν χρησιμοποιώ μία έτοιμη εφαρμογή δεν είναι του παρόντος και δεν θα ήθελα να τους συζητήσουμε.
Η δομή της db μιας τέτοιας εφαρμογής είναι μάλλον μεγάλη και περίπλοκη.
Με προβληματίζει ένα μεμονωμένο θέμα προς το παρόν σχετικά με τους πίνακες κατηγοριών και προϊόντων. Ένα eshop μπορεί να έχει πολλά προϊόντα με διαφορετικά χαρακτηριστικά και προδιαγραφές.
Υποθετικά λοιπόν όλα τα προϊόντα έχουν κάποια κοινά χαρακτηριστικά όπως π.χ.:
  • κωδικό
    τίτλο
    περιγραφή
    βάρος
    τιμή
Ανάλογα το προϊόν όμως μπορεί να υπάρχουν και άλλα χαρακτηριστικά όπως π.χ.:
  • διαστάσεις
    κατασκευαστής
    χωρητικότητα
    τρόπος σύνδεσης
    τύπος
    κ.α.
Για να γίνει πιο κατανοητό το θέμα θα αναφέρω το παρακάτω παράδειγμα:
Ο διαχειριστής δημιουργεί μία κατηγορία προϊόντων ¨Οθόνες" και μία δεύτερη "Εξ. Σκληροί δίσκοι". Ο πίνακας προϊόντων για τις εγγραφές της κατηγορίας "Οθόνες" δεν μπορεί να έχει τα ίδια πεδία με τις εγγραφές της κατηγορίας " Εξ. Σκληροί δίσκοι". Πέρα από τα κοινά πεδία (τίτλος, περιγραφή, τιμή, βάρος, κ.α.), τα προϊόντα της κατηγορίας "Οθόνες" πρέπει να έχουν και πεδία όπως διαγώνιος, απεικόνιση, μεγ. ανάλυση, χρόνος απόκρισης, κ.α. Τα πεδία αυτά αφορούν μόνο τις εγγραφές της συγκεκριμένης κατηγορίας και όχι της κατηγορίας "Εξ. Σκληροί δίσκοι" που με την σειρά τους απαιτούν άλλα πεδία όπως ταχ. περιστροφής, τρόπος σύνδεσης, κ.α.

Το μέγα θέμα λοιπόν είναι ότι ο πίνακας προϊόντων, δεν αναφέρεται σε ομοειδής εγγραφές.

Μία λύση που στριφογυρίζω στο μυαλό μου, είναι:
  • 1. ένας ενιαίος πίνακας προϊόντων που να καταχωρούνται όλα τα προϊόντα (ανεξάρτητα κατηγορίας) με τιμές στα κοινά πεδία (π.χ. κωδικός, τίτλος, περιγραφή, τιμή, διαθεσιμότητα κ.λ.π).
    2. για κάθε κατηγορία που έχει απαίτηση για επιπλέον πεδία να δημιουργείται συμπληρωματικός πίνακας που θα περιέχει τον κωδικό του προϊόντος και τις τιμές των επιπλέον πεδίων της συγκεκριμένης κατηγορίας. Η σύνδεση με τον πίνακα προϊόντων θα είναι 1 προς 1 μιας και για κάθε προϊόν θα υπάρχει 1 εγγραφή στον πίνακα προϊόντων και 1 εγγραφή στον συμπληρωματικό με τα πεδία της κατηγορίας.
Η παραπάνω δομή θα έχει όλα προϊόντα σε ένα πίνακα, πράγμα που θα εξυπηρετήσει στη ταξινόμηση και αναζήτηση σε όλα τα είδη κ.λ.π.

Εάν κάποιος έχει σχετική εμπειρία ή κάποια ιδέα παρακαλώ ας κάνει κανένα post.

Ευχαριστώ προκαταβολικά για το χρόνο σας.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Σχεδίαση db για eshop

Δημοσίευση από korgr » 05 Μαρ 2009 12:40

Πιστευω πως ο καθενας θα εχει και διαφορετικη αποψη για το θεμα.
Τι κανω εγω..
Προσπαθω να ελαχιστοποιησω τα πεδια. Αν δεν υπαρχουν αναγκες για πολυ εξειδικευμενες αναζητησεις, τοτε θα μπορουσαν πολλα απο αυτα που ανεφερες να καλυφθουν σε ενα πεδιο "description". Και εγω χωριζω τα πεδια των προϊοντων σε δυο κατηγοριες αλλα οχι με κριτηρια αυτα που ανεφερες. Για μενα οι κυριες κατηγοριες χωριζονται σε language sensitive και σε neutral fields.
Παραδειγμα, το πεδιο κωδικος ειναι κοινο σε ολες τις γλωσσες του site ενω το πεδιο title or description πρεπει να αποθηκευτει σε αλλον πινακα με αναφορα στο language id (αγγλικα, ελληνικα κλπ).

Στο προβλημα σου τωρα:
Εγω θα συγκεντρωνα ολα τα πιθανα πεδια που θα χρειαζομουν για ΟΛΑ τα προϊοντα και απλα σε καποια προϊοντα που δεν τα χρειαζονται θα τα αφηνα κενα. Μετα κατα την παρουσιαση ελεγχεις αν εχουν περιεχομενα και αναλογα τα εμφανιζεις με τα σχετικα τιτλακια ή τα αποκρυπτεις...

markos_gr
Δημοσιεύσεις: 3
Εγγραφή: 09 Σεπ 2005 13:19

Σχεδίαση db για eshop

Δημοσίευση από markos_gr » 05 Μαρ 2009 18:04

Φίλε korgr
Το θέμα όπως καταλαβαίνεις, είναι ότι ένα σωστό eshop application πρέπει να δίνει τη δυνατότητα στον διαχειριστή του, να δημιουργεί νέες κατηγορίες προϊόντων. Οπότε σε αυτή την περίπτωση το σύνολο των πεδίων δεν είναι fix. Δεν μπορεί να προβλεφθεί η δημιουργία πίνακα που να περιλαμβάνει όλα τα πεδία για όλες τις κατηγορίες προϊόντων που θα εισαχθούν.
Σε λίγο καιρό ο χρήστης θα πουλάει και palmtop, θα δημιουργήσει την κατηγορία, θα ορίσει νέα εξειδικευμένα πεδία που αφορούν τα συγκεκριμένα προϊόντα.
Ένα είναι αυτό και 2ον εάν ο πίνακας περιέχει και πεδία άσχετα προς ένα προϊόν θα υπάρχουν μια σειρά από δυσκολίες όπως π.χ. οι φόρμες εισαγωγής προϊόντων και οι φόρμες διόρθωσης, ποια πεδία πρέπει να συμπεριλάβουν στην οθόνη εισαγωγής μιας οθόνης στο κατάστημα ας πούμε.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Σχεδίαση db για eshop

Δημοσίευση από korgr » 05 Μαρ 2009 21:47

Φιλε Μαρκο, μαλλον δεν διαβασες με αρκετη προσοχη οσα εγραψα και επιμενεις στην ουτοπια πως καθε κατηγορια προϊοντων πρεπει να εχει αλλη δομη!
Δες σε παρακαλω τα δυο ακολουθα links:
http://www.e-shop.gr/show_per.phtml?id=PER.168046
http://www.e-shop.gr/show_per.phtml?id=PER.301743

Ελπίζω να θεωρεις το e-shop μια σοβαρη εφαρμογη ηλ. καταστηματος και να σε καλυψουν τα δυο παραδειγματα (οθονη & σκληρος δισκος) ωστε να δεις πως η δομη ειναι ΑΠΟΛΥΤΩΣ ιδια!

Να θυμασαι πως καθε χαρακτηριστικο ενος προϊοντος δεν ειναι και ενα ξεχωριστο πεδιο στη βαση. Αν ηταν ετσι.... φωτια στα μπατζακια μας! :lol:

markos_gr
Δημοσιεύσεις: 3
Εγγραφή: 09 Σεπ 2005 13:19

Σχεδίαση db για eshop

Δημοσίευση από markos_gr » 06 Μαρ 2009 15:18

Παρατηρώ στα παραδείγματα που έστειλες ότι όλα τα επιμέρους χαρακτηριστικά των προϊόντων περιλαμβάνονται με ένα πεδίο π.χ. (περιγραφή), έχεις δίκιο σε αυτό.
Όμως υπάρχουν πιο αποτελεσματικές εφαρμογές eshop με καλύτερη οργάνωση από αυτή του www.eshop.gr π.χ.


http://www.plaisio.gr/productlist.aspx? ... 4C99C82545

http://www.plaisio.gr/productlist.aspx? ... C5278E7643


http://www.you.gr/b2c_iqshop/catalog/ca ... B665A6D6BD

http://www.you.gr/b2c_iqshop/catalog/ca ... 8F59D45730


στα παραπάνω παραδείγματα είναι σαφές ότι κάθε είδος έχει ιδιαίτερα πεδία που αφορούν μόνο αυτό και όσα άλλα ανήκουν στην ίδια κατηγορία. Τόσο στο www.you.gr όσο και στο www.plaisio.gr (στα παραπάνω παραδείγματα) υπάρχουν combos που δίνουν την δυνατότητα filtering.
Άρα κατά την καταχώριση των προϊόντων, τα ιδιαίτερα χαρακτηριστικά έχουν εισαχθεί σε διαφορετικά πεδία, που φυσικά είναι διαφορετικά σε κάθε κατηγορία.

Με εκτίμηση

ksamole
Δημοσιεύσεις: 92
Εγγραφή: 08 Οκτ 2006 04:43

Σχεδίαση db για eshop

Δημοσίευση από ksamole » 09 Μαρ 2009 10:36

αρχικα για απλοποιηση υποθετουμε 1 γλωσσα μετα θα βαλουμε πολλες....

μια αλλη υποθεση ειναι οτι το σχημα της βασης ΔΕΝ πρεπει να αλλαζει αλλιως ειναι λαθος

η μοντελοποιηση που αναφερετε παραπανω ειναι μια IS-A σχεση αλλα αμα εχεις για καθε
κατηγορια προιοντων και 1 table παλι λαθος ειναι...

οποτε η τα βαζεις ολα σε 1 table η κανεις αλλο κολπο(τις στηλες γραμμες ??? το εχω δει στην db του wordpress αμα θυμαμε καλα)...

δλδ:
meta_products
------------------------------------
key value
diagonios xxx
baros xxx
ktlp ???

etsi kathe proion tha perigrafete apo polles grames kai exeis thn dynatotita na kaneis oti thes alla tha exeis meiosh apodoshs kai poliplokotero kodika????
mia idea eipa .....
ama deis to wordpress exei ena poly mikro sxima alla einai fovera euelikto tetoia kolpa kanei...
και για τις κατηγοριες δες αυτο ειναι must
http://dev.mysql.com/tech-resources/art ... -data.html


CREATE TABLE categories (
category_id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(100) NOT NULL,
description VARCHAR(255) NOT NULL,
lft INT NOT NULL,
rgt INT NOT NULL
);

CREATE TABLE products (
product_id INT AUTO_INCREMENT PRIMARY KEY,
category_id INT, #(anaferete sto categories(category_id))
title VARCHAR(100) NOT NULL,
description VARCHAR(255) NOT NULL,
.....kai oti alla koina pedia exoune
);
CREATE TABLE meta_products (
product_id INT, #(anaferete sto products(product_id))
meta_key VARCHAR(100) NOT NULL,
meta_value VARCHAR(255) NOT NULL,
.....
);


To pan einai na piaseis ton oro META
ti sigekrimeni patenta tin eida sta tables tou wordpress users,usersmeta
pou simenei oti einai dokimasmeni kai douleuei.....

Απάντηση

Επιστροφή στο “Βάσεις Δεδομένων και SQL - γενικά”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες