For all values of my saying "I wouldn't do it that way" equalling "brave", I suppose.
Mine's about 3 years old; it's simple and it actually works, and now one client wants to implement coupons/discount codes. I'm still trying to figure out how to deal with that on an order that mixes taxable and non-taxable items.
I list each size individually; although drop-downs definitely work better for clothing, the client also sells fishing gear of different weights, etc. where a customer might want to order several different sizes. I suppose I coulda made a flag to display one way or the other, but too much hassle at the time.
Yes and no. Yes, there's a master SKU, but I call it a "Product" record. The product record basically defines:
1) Brand (obvious)
2) Model Number (obvious)
3) Base price
4) Scale code (relates to a separate table with available sizes)
5) Pricing Scalability (yes/no)
6) Taxablity (yes/no)
7) Stocked or non-stocked (for inventory control only)
8) Features, description, MSRP, pictures, etc.
..with the primary key being Brand Name + Model Number
The actual Stock record (SKU)
1) Brand Name + Model Number (to point back to parent)
4) Price (which usually = product base price, but can be adjusted for smaller or larger weights/sizes)
5) Quantity-on-hand (which is ignored for product records that are "non-stocked")
6) Item Weight (I have to pay attention to this for shipping purposes)
...with the primary key being Brand name + model Number + color code + scale code (from product record) + size. That's what gets put into the first shopping cart array.
Basically, each Stock record is an individual color/size combo that points back to the parent record where it gets the rest of its info.
Shopping carts are scary, but not nearly as scary as a series of input forms designed to calculate/compare costs of disposing of hospital-grade liquid medical waste. Icky stuff, that.
But if the shopping cart thing gets to really kicking your butt too much and ya wanna try something more database-driven (as opposed to array-tracked), send along an email (the address in my profile goes straight to me) and I'll provide ya some more details (SQL table templates, code snippets) to help ya along - it'll definitely get way too complicated to post back-n-forth in this forum.