aris2134 Δημοσ. 30 Αυγούστου 2013 Δημοσ. 30 Αυγούστου 2013 Καλησπέρα,Αυτό το διάστημα πρόκειται να ασχοληθώ με την κατασκευή ενός eshop, όχι στην πιο απλή μορφή του αλλα αυτό δεν μας ενδιαφέρει ακόμα, χρησιμοποιώντας php mysql. Έτσι λοιπόν ξεκίνησα να κάνω μια έρευνα σχετικά με τη δομή της βάσης δεδομένων(πίνακες, πεδία κτλ) που θα έχει το eshop. Αποφάσισα λοιπόν να ανοίξω ένα θέμα σχετικά με αυτό το ζήτημα παρόλο που υπάρχουν σχετικά post προκειμένου να το συζητήσουμε αφού θα γραφτούν διάφορες απόψεις. Με μια πολύ πρόχειρη ματιά έχω σχεδιάσει τα εξής: admins(id,name,surname,username,password,level,email,phone,mobile,active,last_seen)users(user_id,first_name,last_name,username,password,email,landphone,mobile,address,address_number,country,city,active,last_seen,created,level,has_images)user_images(user_id,type,size) Το δύκολο κομμάτι όπως γνωρίζουμε όλοι είναι η σχεδίαση των πινάκων που αφορούν τα προιόντα.. Με μια ακόμα πιο πρόχειρη σκέψη σχετικά με τους πίνακες για τα προιόντα έφτιαξα τα παρακάτω: categories(cat_id,cat_title,cat_description)subcategories(id,categorie_id,title,description)feautures(id,name,subcategory_id,description)products(id,feauture_id,name,description,brand,price,has_rating,has_images,quantity,active,created,modified)attributes(id,attribute)attributes_to_products(id,attr_id,product_id,value) Ο πίνακας categories πχ θα περιέχει τις κατηγορίες Υπολογιστών και κινητών τηλεφώνων. Ο πίνακας subcategories αν πρόκειται για προιόντα αναβάθμισης περιφεριακών κτλ Ο πίνακας feautures τον τύπο του προιόντος πχ CPU RAM VGA και σε ποια υποκατηγορία ανήκει δηλαδή όλα αυτά ανήκουν στην υποκατηγορία Αναβάθμιση και όχι στα αξεσουάρ. Ο πίνακας products θα περιέχει τα προιόντα πχ Μνήμη RAM Corsair κτλ κτλ Ο πίνακας attributes θα περιέχει τα χαρακτηριστικα των προιόντων πχ Μοντέλο Μέγεθος Μνήμης Channel κτλ κτλ Ο πίνακας attributes_to_products θα συσχετίζει τους πίνακες attributes και products και θα περιέχει τις τιμές των χαρακτηριστικών πχ για το μοντέλο θα έχει JM1333KLU-1G , για το μέγεθος μνήμης 1 GB και για το κανάλι Single αντίστοιχα. Περιμένω διορθώσεις, νέες προτάσεις,προβληματισμούς ή ότι άλλο επιθυμείτε. Ευχαριστώ!
warlock9_0 Δημοσ. 30 Αυγούστου 2013 Δημοσ. 30 Αυγούστου 2013 σίγουρα θα έβαζα σε ένα πίνακα μόνο τους 2 πρώτους με τους users και σε έναν άλλο categories και subcategories μαζί δε χρειάζεται να είναι ξεχωριστά
sonyxp Δημοσ. 31 Αυγούστου 2013 Δημοσ. 31 Αυγούστου 2013 Δεν μπορώ να σου πω τους πίνακες γιατί ο καθένας το βλέπει με διαφορετική ματιά και κυρίως είναι κάτι δύσκολο το να στήσεις μια σωστή ΒΔ. Υπάρχει ένα πράγμα που λέγεται "κανονικοποίηση πινάκων" όπου μαζεύεις όλα τα πεδία σε 1 πίνακα, τα βάζεις όλα χύμα δηλαδή και απο εκεί προσπαθείς να βγάλεις πίνακες, <- αυτό να κάνεις. δηλαδή από αυτό Πίνακας 1 | User | Pwd | PID | Name | Price | Link | -------------------------------------------------------------------------------- | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | προκύπτουν 2 ή 3 πίνακες -> (Users και Products <- αν αποφασίσεις να βάλεις την εικόνα στον πίνακα Product) ή (Users, Product και PImages) Επειδή θα έχουμε περισσότερες από 1 εικόνες για κάθε προιον, καλό θα ήταν να έχουμε άλλον πίνακα και να μην τα βάζαμε στον πίνακα Product. Users | User | Pwd | ---------------------------- | Admin | 123456 | | | | | | | Product | PID | Name | Price | ----------------------------------------- | 100 | Apple | 1.00 | | | | | | | | | | | | | PImages (Product Images) (Το PID στον πίνακα PImages είναι foreign key, δείχνει στο PID του πίνακα Product. | PID | Link | ------------------------------------ | 100 | .../image1.jpg | | 100 | .../image2.jpg | | 100 | .../image3.jpg | | | | | | | ΥΓ: η κανονικοποίηση είναι ένα πολύ δύσκολο κομμάτι στο σχεδιασμό των ΒΔ, απαιτεί γνώσεις και χρόνο. 3
Lykos22 Δημοσ. 5 Σεπτεμβρίου 2013 Δημοσ. 5 Σεπτεμβρίου 2013 (επεξεργασμένο) σίγουρα θα έβαζα σε ένα πίνακα μόνο τους 2 πρώτους με τους users και σε έναν άλλο categories και subcategories μαζί δε χρειάζεται να είναι ξεχωριστά Στις κατηγορίες και εγώ το ίδιο θα έκανα, κάτι τέτοιο πχ category_id category_name category_description parent_id όπου parent_id θα είναι το category_id της κατηγορίας-γονιού (Υπολογιστές, κινητά τηλεφώνα κλπ). Τώρα σε σχ'εση με τους χρήστες και εγώ μάλλον θα έβαζα ξεχωριστά customers - administrators, αλλά δεν και σίγουρος αν είναι ο καλύτερος τρόπος αυτός. Παρατήρησα επίσης ότι στον πίνακα products έχεις βάλει ένα feature_id. Μάλλον θα πρέπει να κάνεις κάτι αντίστοιχο όπως έκανες και με τα attributes, δηλ ένα pivot πίνακα product_features που θα έχει product_id & feature_id και feature_value, εκτός και αν είσαι τόσο σίγουρος ότι θα έχει μόνο ένα feature. ps. ρίξε εαν θες και μία ματιά σε αυτό το Site: http://www.insomnia.gr/topic/355706-%CE%B4%CE%BF%CE%BC%CE%B7-%CE%B2%CE%B1%CF%83%CE%B7%CF%82-%CE%B4%CE%B5%CE%B4%CE%BF%CE%BC%CE%B5%CE%BD%CF%89%CE%BD-%CE%B3%CE%B9%CE%B1-e-shop/page-2#entry52520188">topic . Πιάστο από την αρχή, πιστεύω πως θα βρεις ενδιαφέρον και σε κάποια άλλα πράγματα που ίσως να μην τα έχεις υπολογίσει. Επεξ/σία 5 Σεπτεμβρίου 2013 από Lykos22
aris2134 Δημοσ. 13 Σεπτεμβρίου 2013 Μέλος Δημοσ. 13 Σεπτεμβρίου 2013 Ευχαριστώ πολύ για το ενδιαφέρον σας και συγνώμη για την καθυστερημένη απάντηση. Συνοψίζοντας τα προηγούμενα, η δομή που σας παρουσίασα είναι η παρακάτω σε μια πιο κατανοητή μορφή: Categories| id | title | description----------------------------------------| 1 | Υπολογιστές || 2 | Παιχνίδια || 3 | Κινητά τηλέφωνα |Subcategories| id | title | description----------------------------------------| 1 | Αναβάθμιση || 2 | Περιφερειακά || 3 | Δικτυακά || 4 | PC games || 5 | Αξεσουάρ κινητών|| 6 | Φορτιστές |Categories_to_Subcategories| id | category_id | subcategory_id----------------------------------------| 1 | 1 | 1| 2 | 1 | 2| 3 | 1 | 3| 3 | 2 | 4| 3 | 3 | 5| 3 | 3 | 6feautures| id | name | subcategory_id------------------------------------------------| 1 | Επεξεργαστές | 1| 2 | Μητρικές | 1| 3 | Μνήμες RAM | 1| 4 | Πληκτρολόγια | 2| 5 | Ποντίκια | 2| 6 | Action | 4attributes| id | attribute |---------------------------------| 1 | Μνήμη || 2 | Channel || 3 | Τεχνολογία || 4 | Μέγεθος Μνήμης || 5 | Bandwidth || 6 | Timings || 7 | Είδος παιχνιδιού|attributes_to_products| id | attribute_id | product_id | value--------------------------------------------------------| 1 | 1 | 1 | 512 MB, 64-bit DDR3| 2 | 2 | 2 | Single| 3 | 3 | 3 | DDR3| 4 | 4 | 4 | 4 GB| 5 | 5 | 5 | 1333 MHz | 6 | 6 | 6 | 9-9-9-18 | 7 | 7 | 6 | Actionproducts| id | feauture_id | name description price quantity active------------------------------------------------------------------------------------------------| 1 | 3 | Transcend 1GB | | 32.5 | 5 | yes| 2 | 3 | Corsair RAM | | 89.5 | 500 | yes| 3 | 3 | Crucial DDR3 | | 16.0 | 40 | yes| 4 | 6 | EA Crysis 2 | | 90.1 | 80 | yesΈχω λάβει υπόψη μου όλες τις παραπάνω προτάσεις σας και ήδη το μελετάω το θέμα. Ωστόσο σας ξαναδείχνω τους πίνακες με τη μορφή πινάκων με δεδομένα αυτή τη φορά για να μπορέσετε να κατανοήσετε καλύτερα τι θα περιέχει κάθε πίνακας και να μου πείτε την τελική γνώμη σας. Ευχαριστώ.
Uberalles_gr Δημοσ. 13 Σεπτεμβρίου 2013 Δημοσ. 13 Σεπτεμβρίου 2013 Categories, Subcategories και Categories_to_Subcategories σε έναν πίνακα.
aris2134 Δημοσ. 13 Σεπτεμβρίου 2013 Μέλος Δημοσ. 13 Σεπτεμβρίου 2013 Αν το κάνω αυτό θα έχω στον ίδιο πίνακα πολλές φορές για παράδειγμα την κατηγορία Υπολογιστές αφου οι υποκατηγορίες: | 1 | Αναβάθμιση || 2 | Περιφερειακά || 3 | Δικτυακά | ανήκουν στην κατηγορία Υπολογιστές. | Υπολογιστές | Αναβάθμιση || Υπολογιστές | Περιφερειακά || Υπολογιστές | Δικτυακά |
Lykos22 Δημοσ. 13 Σεπτεμβρίου 2013 Δημοσ. 13 Σεπτεμβρίου 2013 Σκέψου το έτσι category_id | category | parent_id 1 Υπολογιστές 0 (θα δώσεις default value από το phpmyadmin) 2 Φωτο/Καμερες 0 3 Περιφερειακά 1 (Υπολογιστές) 4 Αναβάθμιση 1 κλπ κλπ 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα