Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Foreign key con posible valor nulo

Estas en el tema de Foreign key con posible valor nulo en el foro de Mysql en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 01/08/2012, 04:07
 
Fecha de Ingreso: mayo-2008
Mensajes: 117
Antigüedad: 16 años, 7 meses
Puntos: 8
Foreign key con posible valor nulo

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
  #2 (permalink)  
Antiguo 01/08/2012, 04:57
Usuario no validado
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 16 años, 8 meses
Puntos: 16
Respuesta: Foreign key con posible valor nulo

Hace un rato puse esto en el foro: [URL="http://www.forosdelweb.com/f86/consulta-iterativa-1006319/#post4242890"]http://www.forosdelweb.com/f86/consulta-iterativa-1006319/#post4242890[/URL]

Puede que te sirva, aunque si la clasificación es a dos niveles sobran campos por todos lados.

Yo te diría que pongas en una sola tabla los grupos y subgrupos (por si acaso algún día necesitas el tercer o enésimo nivel) y en otra los productos haciendo que los productos hagan referencia a la tabla de grupos.

Cita:
o hay alguna forma de hacer una especie de foreign key con posible valor null?
Es válido crear un foreign key que haga referencia a la misma tabla.
Es válido hacer que el campo que hace la referencia tenga valor nulo.
Lo impensable es hacer que el campo que hace la referencia lo intente hacia un registro no existente.
  #3 (permalink)  
Antiguo 01/08/2012, 06:50
 
Fecha de Ingreso: mayo-2008
Mensajes: 117
Antigüedad: 16 años, 7 meses
Puntos: 8
Respuesta: Foreign key con posible valor nulo

Vaya!

Es válido hacer que el campo que hace la referencia tenga valor nulo.

Pues no savia esto... en principio si que se puede hacer como lo tenia planeado... la idea era tenerlo preparado por si cuando empiezo a llenar grupos y subgrupos necesito agregar mas niveles...

Gracias pcid!
  #4 (permalink)  
Antiguo 01/08/2012, 10:40
Usuario no validado
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 16 años, 8 meses
Puntos: 16
Respuesta: Foreign key con posible valor nulo

Por nada...

Etiquetas: key, nulo, posible, tabla, foreignkey
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:31.