Εμφάνιση 1-9 από 9
  1. #1
    Customer(CustomerID, FirstName, LastName, Street, Town, PostCode, TelephoneNumber, EMailAddress)
    CustomerOrder(OrderID, Date, Time, *CustomerID*)
    OrderItem(OrderItemID, *OrderID*, *ProductID*, Quantity)
    Product(ProductID, Name, Price, *ProductTypeID*)
    ProductType(ProductTypeID, Description)

    Χρησιμοποιω SQlite και θελω οταν ας πουμε ο χρηστης επιλεγει το ProductType ας πουμε μπλουζες, στο product πινακα επιλεγει τη μπλουζα Νο42 να βγαινει μια λιστα και να διαλεγει μεγεθη και χρωματα για παραδειγμα XL,XXL,M,κοκκκινη,κιτρινη,μπλε απο την οποια λιστα με τιμες να επιλεγει με radio button στο group του μεγεθους οπωσδηποτε ενα μεγεθος και στο group των χρωματων οπωσδηποτε ενα χρωμα ... ωστε να συνεχισει (Πεταγεται μια οθονη επιλεγει αυτα και κλεινει παλι η οθονη). Τα φωτα σας πρεπει να προσθεσω πινακα , καποιο πεδιο σε ηδη υπαρχον πινακα ... πως να το κανω. Χρησιμοποιω το db Browser for sqlite.

  2. #2
    Εγγραφή
    13-11-2011
    Περιοχή
    Χολαργός
    Ηλικία
    37
    Μηνύματα
    1.451
    Downloads
    1
    Uploads
    0
    Τύπος
    VDSL2
    Ταχύτητα
    24000 / 4500
    ISP
    Wind
    DSLAM
    Wind - ΧΟΛΑΡΓΟΣ
    Path Level
    Interleaved
    Καλησπέρα,
    Έτσι όπως το έχεις τώρα, αν το ProductType είναι σκέτο "μπλούζα" τότε θα πρέπει να πας σε λύση με άλλους πίνακες που περιγράφουν τα χαρακτηριστικά που υπάρχουν γενικά και μία σύνδεση με το τι υποστηρίζει το συγκεκριμένο προϊόν και ίσως και κατηγορίες χαρακτηριστικών (πχ μέγεθος, χρώμα).

    Ένα απλό παράδειγμα θα μπορούσε να είναι:
    Sizes (Id, Name)
    Colors (Id, Name)
    ProductSize(ProductId, SizeId)
    ProductColor(ProductId, ColorId)

    Όπου στο ProductSize και ProductColor να βάζεις το τι υποστηρίζει το συγκεκριμένο προϊόν ώστε στο front end να παρούσιάζεις τα αντίστοιχα.

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

  3. #3
    Καλησπερα και ευχαριστω για την απαντηση. Ειμαι τωρα με το κινητο και δεν μπορω να γραφω καλα. Το προβλημα ειναι οτι ο πινακας product type δεν ειναι απαραιτητα ρουχα, μπορει να ειναι για παραδειγμα κατσαρολες που μπορεις να διαλεξεις ξερω γω χαλυβδινη, απο ορειχαλκο κλπ δηλαδη να επιλεγεις απο μια ορισμενη λιστα τιμων για καθε product type....δεν ξερω αν θα επρεπε να φταξω τοσους πολλους πινακες.

    - - - Updated - - -

    Νομιζω σκεφτηακα τη λυση αλλα πρεπει να την επεξεργαστω στο μυαλο μου ενας πινακας list of attributes με producttypeid ξενο κλειδι και ενα πεδιο attributes καθως και να κανω καποιες περαιτερω μετατροπες... Χρειζομαι τον υπολογιστη μου...

    - - - Updated - - -

    Χμ σκεφτηκα στον πινακα ProductType(ProductTypeID, Description) να προσθεσω πεδια Attribute1, Attribute2, Attribute3 .... καμμια 10ρια απο αυτα με τη δυνατοτητα να ειναι Null πως σας φαινεται αυτη η λυση?

    Το προγραμμα μου θα εξεταζει αν ειναι Null και δεν θα βγαζει να επιλεξεις στη συγκεκριμενη.

  4. #4
    Εγγραφή
    13-11-2011
    Περιοχή
    Χολαργός
    Ηλικία
    37
    Μηνύματα
    1.451
    Downloads
    1
    Uploads
    0
    Τύπος
    VDSL2
    Ταχύτητα
    24000 / 4500
    ISP
    Wind
    DSLAM
    Wind - ΧΟΛΑΡΓΟΣ
    Path Level
    Interleaved
    Αφού έχεις πολλά προϊόντα με πολλά χαρακτηριστικά τότε το καλύτερο είναι να φτιάξεις κάτι σαν το ακόλουθο:

    CharacteristicGroup (Id, Description)
    Characteristics (Id, CharacteristicGroupId, Description)
    ProductCharacteristics (ProductId, CharacteristicsId)

    Στο CharacteristicGroup θα βάζεις κατηγορίες χαρακτηριστικών (πχ μέγεθος, χρώμα, υλικό κτλ).
    Στο Characteristics θα βάζεις τιμές στα χαρακτηριστικά (πχ L για το μέγεθος, XL για το μέγεθος, Κόκκινο για το Χρώμα κτλ)
    Στο Product Characteristics θα βάζεις το προϊόν με τα χαρακτηριστικά που έχεις. Έτσι όταν θέλεις να εμφανίσεις ένα προϊόν θα επιστρέφεις όλη τη σύνδεση Product, ProductCharacteristics, Characteristics, CharacteristicGroup και θα τα ομαδοποιείς με βάση το CharacteristicGroupId για να ξέρεις τι επιλογές έχει ο χρήστης για κάθε group.

  5. #5
    Ευχαριστω . Μου αρεσει η λυση σου , δεν ειμαι σιγουρος ποια απο τις δυο θα ακολουθησω , την δικια σου με τους επιπλεον πινακες ή τη δικια μου με τα πολλα πεδια. Δεν ξερω ποια με συμφερει προγραμματιστικα στο προγραμμα που φτιαχνω, μιας και ο σωστος σχεδιασμος της βασης δεδομενων θα με γλυτωσει απο αρκετους μπελαδες. Νομιζω η δικια σου εχει το ατου οτι για μια συγκεκριμενη κατηγορια χαρακτηριστικων με radio button , ο χρηστης δεν μπορει να επιλεξει και κοκκινο και μαυρο για παραδειγμα χωρις πολυ επιπλεον κωδικα , αναγκαστικα θα επιλεξει ενα και οπωσδηποτε ενα. Δεν ειμαι σιγουρος ακομα. Νομιζω θα παω στη δικια σου λυση παρολο που πρεπει να ξαναφτιαξω τη βαση δεδομενων μου μιας και ειναι νωρις ακομα.

  6. #6
    Customer(CustomerID, FirstName, LastName, Street, Town, PostCode, TelephoneNumber, EMailAddress)
    Order(OrderID, Date, Time, *CustomerID*)
    OrderItem(OrderItemID, *OrderID*, *ProductID*, Quantity)
    Product(ProductID, Name, Price, *ProductTypeID*, *CharacteristicsID*)
    ProductType(ProductTypeID, Description)
    Characteristics(CharacteristicsID,*ProductTypeID*,Description)

    Customer(1) --->oo(Order)
    Order(1)--->oo(OrderItem)
    Product(1)--->oo(OrderItem)
    ProductType(1)--->oo(Product)
    ProductType(1)--->oo(Characteristics)

    Πως φαινεται αυτο .... σκεφτηκα οτι ο πινακας ProductCharacteristics αφου εχει μονο ξενα κλειδια στην ουσια μπορει να απορροφηθει ... ολα εχουν σχεση 1 προς πολλα οπως πρεπει .... δεν θυμαμαι και ιδιαιτερα τους κανονες κανονικοποιησης.

  7. #7
    Εγγραφή
    13-11-2011
    Περιοχή
    Χολαργός
    Ηλικία
    37
    Μηνύματα
    1.451
    Downloads
    1
    Uploads
    0
    Τύπος
    VDSL2
    Ταχύτητα
    24000 / 4500
    ISP
    Wind
    DSLAM
    Wind - ΧΟΛΑΡΓΟΣ
    Path Level
    Interleaved
    Δεν μπορείς να το κάνεις έτσι. Πώς θα βάλεις "Μπλέ - XL" σε αυτό; Μπορείς να έχεις μόνο ένα χαρακτηριστικό κάθε φορά.

    Ένα προϊόν έχει πολλά χαρακτηριστικά και ένα χαρακτηριστικό ανήκει σε πολλά προϊόντα. Η σχέση είναι πολλά προς πολλά, οπότε θέλεις άλλο πίνακα για τη σύνδεσή τους.

    - - - Updated - - -

    Και μετά και στο OrderItem αντίστοιχα έχεις πολλά προς πολλά με το characteristics.

    - - - Updated - - -

    Επίσης στο Characteristics δεν έχεις κάπου type με αποτέλεσμα να μην μπορείς να ξεχωρίσεις κάπως τα "μπλε" και "XL".

  8. #8
    Customer(CustomerID, FirstName, LastName, Street, Town, PostCode, TelephoneNumber, EMailAddress)

    Order(OrderID, Date, Time, *CustomerID*)

    OrderItem(OrderItemID, *OrderID*, *ProductID*, Quantity,*CharacteristicGroupID*)

    Product(ProductID, Name, Price, *ProductTypeID*)

    ProductType(ProductTypeID, Description)

    Characteristics(CharacteristicsID,*CharacteristicGroupID*,Description)

    CharacteristicGroup (CharacteristicGroupID, Description)

    ProductCharacteristics ( *ProductID*, *CharacteristicsID**)

    Μπορω να εχω δυο ξενα κλειδια συνδυασμενα σαν primary key στο ProductsCharacteristics? Ακολουθει κειμενο , απλως θελω να βλεπω τι εχω γραψει , φυσικα με διορθωνεται αν κανω λαθος ... τα εχω μπερδεψει λιγο...

    - - - Updated - - -

    Στο CharacteristicGroup εχω (1, χρωμα) , (2, μεγεθος).
    Στο Characteristics εχω (1, 1, κοκκινο), (2, 1, κιτρινο), (3, 2, XL), (4, 2, XXL).
    Στο ProductType εχω (1, T-shirt)
    Στο Product εχω (1, Τυπος42, 30, 1)
    Στο OrderItem εχω (1, 1, 1, 5, ...εδω υπαρχει προβλημα αφου θελω δυο characteristicsgroup ε?
    Στο ProductCharacteristics εχω αυτη τι στιγμη (1, 1) (1, 2) (1, 3) (1, 4) .... πρεπει να συνδυασω αυτο το πινακα με το orderitem πινακα.

    - - - Updated - - -

    Customer(CustomerID, FirstName, LastName, Street, Town, PostCode, TelephoneNumber, EMailAddress)

    Order(OrderID, Date, Time, *CustomerID*)

    OrderItem(OrderItemID, *OrderID*, *ProductID*, Quantity)

    ProductType(ProductTypeID, Description)

    Product(ProductID, Name, Price, *ProductTypeID*)

    ProductOptions(ProductOptionsID,*ProductID*, *OptionID* ,OptionPrice, Description)

    Options(OptionID, *OptionGroupID*, OptionName)

    OptionGroups(OptionGroupID, OptionGroupName)

    https://www.c-sharpcorner.com/articl...tabase-design/


    Αυτο νομιζω ειναι καλο .... να το εξετασω λιγο ακομα...
    Τελευταία επεξεργασία από το μέλος zaranero : 05-07-18 στις 23:39.

  9. #9
    Εγγραφή
    13-11-2011
    Περιοχή
    Χολαργός
    Ηλικία
    37
    Μηνύματα
    1.451
    Downloads
    1
    Uploads
    0
    Τύπος
    VDSL2
    Ταχύτητα
    24000 / 4500
    ISP
    Wind
    DSLAM
    Wind - ΧΟΛΑΡΓΟΣ
    Path Level
    Interleaved
    Πώς ξέρεις αν ο πελάτης αγόρασε την κόκκινη ή μπλε μπλούζα;;;

    Νομίζω ότι καλύτερα θα είναι να αλλάξεις τον OrderItem και να τον κάνεις

    OrderItem(OrderItemID, *OrderID*, *ProductID*, Quantity, *Option1*, *Option2*)

    Έτσι το κρατάς σχετικά απλό και ταυτόχρονα μπορείς να ξέρεις τι συγκεκριμένο αγόρασε ο χρήστης, μέχρι 2 option. Αν θέλεις να πας σε απεριόριστα option τότε θέλει άλλο πίνακα.

Παρόμοια Θέματα

  1. Μηνύματα: 0
    Τελευταίο Μήνυμα: 26-01-18, 14:39
  2. Μηνύματα: 7
    Τελευταίο Μήνυμα: 29-09-17, 12:28
  3. Μηνύματα: 0
    Τελευταίο Μήνυμα: 19-09-17, 18:24
  4. Μηνύματα: 35
    Τελευταίο Μήνυμα: 06-09-17, 01:18
  5. Μηνύματα: 2
    Τελευταίο Μήνυμα: 26-07-17, 23:16

Bookmarks

Bookmarks

Δικαιώματα - Επιλογές

  • Δεν μπορείτε να δημοσιεύσετε νέα θέματα
  • Δεν μπορείτε να δημοσιεύσετε νέα μηνύματα
  • Δεν μπορείτε να αναρτήσετε συνημμένα
  • Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας
  •  
  • Τα BB code είναι σε λειτουργία
  • Τα Smilies είναι σε λειτουργία
  • Το [IMG] είναι σε λειτουργία
  • Το [VIDEO] είναι σε λειτουργία
  • Το HTML είναι εκτός λειτουργίας