Un approccio sarebbe quello di progettare il tuo database in modo simile a come definiresti una gerarchia di classi, dove definisci le tabelle di base (classi) che forniscono gli attributi comuni, e poi aggiungi tabelle aggiuntive che forniscono attributi specifici da estendere la tabella per i prodotti specifici.
Definisci una tabella di prodotti di base
create table Products_base as
id
item
brand
model
description
size
color
price #more about this later
Definisci tabelle aggiuntive per prodotti che differiscono sostanzialmente
create table pants as
base #foreign key to base product
waist
length
material
style
create table dress as
base #foreign key to base product table
waist
hemlength
bust
material
belt
Un altro approccio sarebbe definire la tabella del prodotto di base, quindi definire una tabella di attributi e fornire gli attributi per ciascun prodotto aggiuntivo,
create table Products_base as
id autoincrement
item
brand
model
description
size
color
price #more about this later
create table attributes as
id autoincrement
name
description
create table product_+attributes as
product_id #product.id
attribute_id #attributes.id
value
Usando i pantaloni come esempio, vorresti aggiungere attributi ai pantaloni (aggiungi alla tabella degli attributi)
"length", "length of item"
"inseam", "length of inseam"
"style", "style of article" #example, "jeans"
#etc
E poi dovresti aggiungere valori per gli attributi
product.id("pants"), attribute.id("inseam"), "32in"
product.id("pants"), attribute.id("waist"), "34in"
product.id("pants"), attribute.id("style"), "jeans"
product.id("dress"), attribute.id("style"), "sundress"
#etc