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

MySql Schema καμια προταση


παπι

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

Λοιπον εχουμε CatalogItem το οποιο εχει καποια (ή καθολου) επιπροσθετα aka CatalogItemAttributes. 

image.png.35ffc5ef82e5af362dec102898bbc3e2.png

Και με ενα 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

image.png.ce19197189b3a88c3ad94a0fbd9ac2b6.png

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
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

Θα χρησιμοποιήσεις σχέση πολλά - πολλά και θα έχεις 1 πίνακα με βασικώς 2 κλειδιά

1 --> PK (Η οντότητα της πίτσα)

2 --> PK Το μέγεθος

π.χ

οντότητα πίτσας

17 --> Πίτσα με  αντζούγιες

μέγεθος 

4 -- > Extra Large

Ο πίνακας

PK1            PK2       Τιμή

17               4             0.0 (Με αντζούγιες δεν πρόκειται να την πάρει κανένας)

Επεξ/σία από masteripper
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το να βαλω δυο κλειδια, ειναι το πρωτο που εκανα. Αλλα ανεβηκε η πολυπλοκοτητα επειδη πολυ απλα, το μεγεθος ειναι προαιρετικο, με αποτελεσμα να προσπαθω να βαλω μεγεθος σε προιοντα που δεν εχουν μεγεθςο.

 

Αν τα στανταρ υλικα ηταν μονο στη περιγραφη, πως θα ηξερα οτι η πιτσα "μανιταρια και τυρι" εχει οντως μανιταρια και τυρι;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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

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

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

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

Σύνδεση

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

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