παπι Δημοσ. 24 Ιανουαρίου 2021 Δημοσ. 24 Ιανουαρίου 2021 Λοιπον εχουμε CatalogItem το οποιο εχει καποια (ή καθολου) επιπροσθετα aka CatalogItemAttributes. Και με ενα join SELECT ci.name, ci.price, cia.name, cia.price FROM catalog_items ci LEFT JOIN catalog_item_attrs cia ON ci.id = cia.catalog_item_id εχουμε τα προιοντα με τα επιπροσθετα τους # name, price, name, price 'Μεσαια μανιταρια τυρι', '9.7', 'Μανιτάρια', '0' 'Μεσαια μανιταρια τυρι', '9.7', 'Τυρί', '0' 'Μεσαια μανιταρια τυρι', '9.7', 'Ζαμπον', '0.5' 'Μικρη μανιταρια τυρι', '6.3', 'Μανιτάρια', '0' 'Μικρη μανιταρια τυρι', '6.3', 'Τυρί', '0' 'Μικρη μανιταρια τυρι', '6.3', 'Ζαμπον', '1.1' 'Μεγαλη μανιταρια τυρι', '14.2', 'Μανιτάρια', '0' 'Μεγαλη μανιταρια τυρι', '14.2', 'Τυρί', '0' 'Μεγαλη μανιταρια τυρι', '14.2', 'Ζαμπον', '1.5' και εδω ειναι η σπαζοκεφαλια. Απο τη μια η μικρη η μεσαια και η μεγαλη ειναι η καθε μια μοναδικη οντοτητα. Απο την αλλη η "μανιταρια τυρι" ειναι μια μοναδικη οντοτητα. Και το προβλημα ειναι οτι θελουμε και τις δυο οπτικες. Εαν πουμε οτι η "μανιταρια τυρι" ειναι μοναδικη οντοτητα τοτε ??? βαζουμε επιπλεον πινακα με μεγεθη το οποιο ανεβαζει την πολυπλοκοτητα εφοσον τα επιπροσθετα πρεπει να συνδεθουν με το προιον και το μεγεθος. Τεσπα εχω δοκιμασει διαφορες τεχνικες, με τη τελευταια που δουλευω να ειναι ενας πινακας CatalogItemSize SELECT ci.name, cis.name, ci_rep.name FROM catalog_item_sizes cis LEFT JOIN catalog_items ci ON ci.id = cis.catalog_item_id LEFT JOIN catalog_items ci_rep ON ci_rep.id = cis.catalog_item_replace_id ORDER BY (ci.id) name name name Μεσαια μανιταρια τυρι Μικρη Μικρη μανιταρια τυρι Μεσαια μανιταρια τυρι Μεσαια Μεσαια μανιταρια τυρι Μεσαια μανιταρια τυρι Μεγαλη Μεγαλη μανιταρια τυρι Μικρη μανιταρια τυρι Μικρη Μικρη μανιταρια τυρι Μικρη μανιταρια τυρι Μεσαια Μεσαια μανιταρια τυρι Μικρη μανιταρια τυρι Μεγαλη Μεγαλη μανιταρια τυρι Μεγαλη μανιταρια τυρι Μικρη Μικρη μανιταρια τυρι Μεγαλη μανιταρια τυρι Μεσαια Μεσαια μανιταρια τυρι Μεγαλη μανιταρια τυρι Μεγαλη Μεγαλη μανιταρια τυρι Που ουσιαστικα αντι να αλλαζω μεγεθος σα μια ιδιωτητα, αλλαζω το προιον. πχ αν στο καλαθι εχω μια "μεσαια μανιταρια τυρι", στον πινκα CatalogItemSize βλεπω οτι εχω 3 επιλογες να αλλαχτει. Το οποιο για να υλοποιηθει δεν θελει καποια σοβαρη πολυπλοκοτητα.
k33theod Δημοσ. 26 Ιανουαρίου 2021 Δημοσ. 26 Ιανουαρίου 2021 (επεξεργασμένο) Εφόσον μια πίτσα μπορεί να έχει διαφορετικά μεγέθη πχ μικρή μεσαία μέτρια μεγάλη γιγας κλπ. και κάθε μέγεθος μπορεί να αναφέρεται σε παραπάνω πιτσες παραδοσιακή μεξικάνα αμερικάνα κλπ. πρέπει να κάνεις ξεχωριστό πίνακα 'πιτσα_μεγεθος'. Και εκεί θα μπουν και οι τιμές. Τα στανταρ υλικά κάθε πίτσας πάνε στην περιγραφή. Τα έξτρα υλικά δεν έχουν να κάνουν με την πιτσα. Μπορεί ο καθένας να τα βάλει σε όποια πίτσα θέλει οπότε δεν πρεπει να συνδέονται με τισ πιτσες Επεξ/σία 26 Ιανουαρίου 2021 από k33theod
masteripper Δημοσ. 26 Ιανουαρίου 2021 Δημοσ. 26 Ιανουαρίου 2021 (επεξεργασμένο) Θα χρησιμοποιήσεις σχέση πολλά - πολλά και θα έχεις 1 πίνακα με βασικώς 2 κλειδιά 1 --> PK (Η οντότητα της πίτσα) 2 --> PK Το μέγεθος π.χ οντότητα πίτσας 17 --> Πίτσα με αντζούγιες μέγεθος 4 -- > Extra Large Ο πίνακας PK1 PK2 Τιμή 17 4 0.0 (Με αντζούγιες δεν πρόκειται να την πάρει κανένας) Επεξ/σία 26 Ιανουαρίου 2021 από masteripper
παπι Δημοσ. 26 Ιανουαρίου 2021 Μέλος Δημοσ. 26 Ιανουαρίου 2021 Το να βαλω δυο κλειδια, ειναι το πρωτο που εκανα. Αλλα ανεβηκε η πολυπλοκοτητα επειδη πολυ απλα, το μεγεθος ειναι προαιρετικο, με αποτελεσμα να προσπαθω να βαλω μεγεθος σε προιοντα που δεν εχουν μεγεθςο. Αν τα στανταρ υλικα ηταν μονο στη περιγραφη, πως θα ηξερα οτι η πιτσα "μανιταρια και τυρι" εχει οντως μανιταρια και τυρι;
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα