Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα,
Αυτό το διάστημα πρόκειται να ασχοληθώ με την κατασκευή ενός 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 αντίστοιχα.

Περιμένω διορθώσεις, νέες προτάσεις,προβληματισμούς ή ότι άλλο επιθυμείτε.

Ευχαριστώ!

 

 

 

 

 

 

 

 

Δημοσ.

σίγουρα θα έβαζα σε ένα πίνακα μόνο τους 2 πρώτους με τους users και σε έναν άλλο categories και subcategories μαζί

δε χρειάζεται να είναι ξεχωριστά

Δημοσ.

Δεν μπορώ να σου πω τους πίνακες γιατί ο καθένας το βλέπει με διαφορετική ματιά και κυρίως είναι κάτι δύσκολο το να στήσεις μια σωστή ΒΔ.

Υπάρχει ένα πράγμα που λέγεται "κανονικοποίηση πινάκων" όπου μαζεύεις όλα τα πεδία σε 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  |
|            |                    |
|            |                    |
 
 
 

ΥΓ: η κανονικοποίηση είναι ένα πολύ δύσκολο κομμάτι στο σχεδιασμό των ΒΔ, απαιτεί γνώσεις και χρόνο.

  • Like 3
Δημοσ. (επεξεργασμένο)

σίγουρα θα έβαζα σε ένα πίνακα μόνο τους 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. :P

 

ps. ρίξε εαν θες και μία ματιά σε αυτό το Link.png 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 . Πιάστο από την αρχή, πιστεύω πως θα βρεις ενδιαφέρον και σε κάποια άλλα πράγματα που ίσως να μην τα έχεις υπολογίσει. ;)

Επεξ/σία από Lykos22
  • 2 εβδομάδες αργότερα...
Δημοσ.

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

 

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           |    6

feautures
|     id    |    name                 | subcategory_id
------------------------------------------------
|    1      |   Επεξεργαστές    |     1
|    2      |   Μητρικές             |     1
|    3      |   Μνήμες RAM       |     1
|    4      |   Πληκτρολόγια      |     2
|    5      |   Ποντίκια              |     2
|    6      |   Action                 |     4


attributes

|     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                      | Action



products

|     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


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

 

Ευχαριστώ.

Δημοσ.

Αν το κάνω αυτό θα έχω στον ίδιο πίνακα πολλές φορές για παράδειγμα την κατηγορία Υπολογιστές αφου οι υποκατηγορίες:

|    1      |   Αναβάθμιση      |
|    2      |   Περιφερειακά    |
|    3      |   Δικτυακά           |

 ανήκουν στην κατηγορία Υπολογιστές.

 

|    Υπολογιστές      |   Αναβάθμιση      |
|    Υπολογιστές      |   Περιφερειακά    |
|    Υπολογιστές      |   Δικτυακά           |

Δημοσ.

Σκέψου το έτσι

category_id    |       category           |    parent_id
        1             Υπολογιστές                  0 (θα δώσεις default value από το phpmyadmin)
        2             Φωτο/Καμερες                 0
        3             Περιφερειακά                 1 (Υπολογιστές)
        4             Αναβάθμιση                   1
κλπ κλπ
  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...