Buenos dias; tengo en mente hacer un catalogo de productos,
Este catalogo consta de familia, grupo, subgrupo y producto...
La idea es poder poner en la misma tabla los grupos y los subgrupos, por que los subgrupos van a ser lo mismo que los grupos, oseaser que los productos de los subgrupos, también son productos de los grupos...
Un ejemplo mas ilustrativo...
-bicicletas (familia)
+carretera (grupo)
.bici1 (prod)
.bici2 (prod)
+montaña (grupo)
.bici3 (prod)
.bici4 (prod)
-complementos (familia)
+mallots (grupo)
+nutrición (grupo)
#barritas energéticas (subgrupo)
.barrita1 (prod)
.barrita2 (prod)
#bebidas isotónicas (subgrupo)
.isotonica1 (prod)
.isotonica2 (prod)
Actualmente, el planteamiento que tengo de la tabla grupos es este:
Código:
CREATE TABLE `grupos` (
`id_grupo` int(10) NOT NULL AUTO_INCREMENT,
`nombre` varchar(45) NOT NULL,
`referencia_id_gupo` int(10) unsigned DEFAULT NULL,
`familia` integer NOT NULL,
PRIMARY KEY (`id_grupo`),
CONSTRAINT `FK_grupos_familias` FOREIGN KEY (`familia`) REFERENCES `familias` (`id_familia`),
) ENGINE=InnoDB
Y bueno así aparentemente funciona bien...
yo ahora puedo guardar :
Código:
Insert into grupos (nombre,referencia,familia) values (nutrición,null,1);
Insert into grupos (nombre,referencia,familia) values (barritasenergeticas,id_nutricion,1);
De este modo las tengo referenciadas,con el consiguiente peligro de que se puede guardar un subgrupo con un id_grupo inexistente.
me gustaría hacerlo de una forma mas controlada... referencia_id_grupo tendría que ser foreign key sobre id_grupo.... pero si hago esto no voy a poder poner "grupos", con referencia_id_grupo= null, por que va a necesitar un id_grupo ...
Y la pregunta es... seria conveniente, crear una tabla para los subgrupos y otra para los grupos? o hay alguna forma de hacer una especie de foreign key con posible valor null?
Gracias por el interés
Un saludo