Edito:
Encontre la solucion a lo que preguntaba, aqui:
http://dev.mysql.com/tech-resources/articles/hierarchical-data.html
Saludos
-------------------------------------------------------------------------------------
Holas, buen dia.
Hace un tiempo hice una tabla para guardar registros de paises, provincias y partidos. En la misma tabla guardaba todos los datos, es decir podia haber un registro de:
id=1
pais=argentina
provincia=buenos aires
partido=la plata
Si hubiera otro registro que sea un partido de buenos aires ahi estaba repitiendo el dato de pais y provincia, y para eliminar la redundancia(normalizar) se me ocurrieron dos formas:
1 _Las mas "comun" a mi parecer seria hacer una tabla para cada segmento(pais, provincia, partido), en donde el objeto a referenciar siempre se le va a agregar un id de partido, los datos de provincia y pais se buscaran por ascendencia(por ej: en la tabla partido hay un id de provincia, y en la tabla provincia un id del pais)
2_Una tabla de cuatro columnas que serian: id, nombre, tipo(pais, provincia o partido) y un id del padre(referenciando un id en la misma tabla). Por ej:
id=1
nombre=argentina
tipo=pais
id_padre=null (null por no tener padres, es el primer nivel)
otro registro:
id=2
nombre=buenos aires
tipo=provincia
id_padre=1 (esta apuntando al registro pais argentina)
De estas dos maneras de armar las tablas, me interesa mas la segunda. Manejar los datos me parece mas sencillo, incluso, si quisiera hacer un nivel mas bajo (como podria ser localidad) solo tengo que agregar un nuevo tipo(utilizo ENUM para esta columna) y ya lo podria empezar a usar siempre referenciando a un padre partido.
El insertar datos me parece sencillo(siempre verificando que la ascendencia se cumpla bien), el traerlos tambien(si queiro solo un tipo se arregla con un WHERE) pero tengo algunas dudas, nunca hice una tabla asi.
Ustedes como creen que es la mejor manera guardar y manejar este tipo de datos?
Gracias