Hola, claro lo que tu tiene es una relacion de 1 a n entre categorias y subcategorias, es decir que una categoria puede tener mas de una subcategoria:
Las tablas quedarian:
Código:
CREATE TABLE IF NOT EXISTS `categoria` (
`id_categoria` INT NOT NULL AUTO_INCREMENT ,
`nombre` VARCHAR(45) NULL ,
PRIMARY KEY (`id_categoria`) )
ENGINE = InnoDB
CREATE TABLE IF NOT EXISTS `subcategoria` (
`id_subcategoria` INT NOT NULL AUTO_INCREMENT ,
`nombre` VARCHAR(45) NOT NULL ,
`id_categoria` INT NOT NULL ,
PRIMARY KEY (`id_subcategoria`) ,
INDEX `fk_subcategoria_categoria` (`id_categoria` ASC) ,
CONSTRAINT `fk_subcategoria_categoria`
FOREIGN KEY (`id_categoria` )
REFERENCES `categoria` (`id_categoria` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
Por ejemplo:
Tabla categoria:
id_categoria 1
id_categoria 2
Tabla subcategoria quedaria asi:
id_subcategoria1 , id_categoria 1, nombre_subcategoria
id_subcategoria2 , id_categoria 1, nombre_subcategoria
id_subcategoria3 , id_categoria 2, nombre_subcategoria
Esto implica que la categoria 1 tiene las subcategorias 1 y 2.
Y la categoria 2 tiene la subcategoria 3.
Espero que te sirva.
Saludos