Jeg ville nok gøre noget i stil med:
------------------------------------
CREATE TABLE category (
id int(10) unsigned NOT NULL auto_increment,
name char(100) NOT NULL default '',
parent_id int(10) unsigned NOT NULL default '0',
sort smallint(5) unsigned NOT NULL default '100',
PRIMARY KEY (id)
) TYPE=MyISAM;
CREATE TABLE category_product (
product_id int(10) unsigned NOT NULL default '0',
category_id int(10) unsigned NOT NULL default '0',
PRIMARY KEY (category_id,product_id)
) TYPE=MyISAM;
CREATE TABLE product (
id int(10) unsigned NOT NULL auto_increment,
name char(200) NOT NULL default '',
changed_time timestamp(14) NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;
CREATE TABLE product_extra (
product_id int(11) NOT NULL default '0',
name char(100) NOT NULL default '',
value char(100) NOT NULL default '',
sort smallint(5) unsigned NOT NULL default '200',
PRIMARY KEY (product_id,name)
) TYPE=MyISAM;
------------------------------------
Category lavet som "simpe hierarki". Se:
Se
http://www.sitepoint.com/article/hierarchical-data-databasecategory_product: Lavet så et produkt kan ligge i flere kategorier.
Man kan ventuelt i stedet for dette table lægge category_id direkte i product-tabellen.
product: stam-data for produktet. bør udvides med de felter, som findes for alle produkter - f.eks. pris og lignende.
product_extra: Her ville jeg ligge alle produkt-specifikke data som "name"/"value" par. "sort" ville jeg bruge til at kunne prioritere rækkefølgen, som de vises i. Man kunne eventuelt lave primary key om til en "id integer unsigned auto_increment", i stedet for kombinationen af "id" og "name".