Diseño Base de Datos

Deseo crear una base de datos con Access 2000 para el mantenimiento de una Yeguada.
Mi mayor problema es a la hora de planificar el diseño de la base de datos, concretamente cómo debería estructurarla para visualizar después la genealogía de los caballos: padre, madre, abuelos, tatarabuelos, ...
1

1 Respuesta

29.725 pts.
Para llevar a cabo esto, a nivel de diseño de la base de datos lo que tienes que recoges para cada caballo/yegua es los datos de su padre y de su madre.
A partir de estos puedes ir obteniendo todo su árbol genealógico, ya que si sabes el padre y madre de cualquier caballo/yegua cuando accedas a estos tendrás su padre y madre, y así sucesivamente.
En definitiva, si de cada uno sabes su padre y madre, podrás ir obteniendo todo el árbol genealógico, sin necidad de incluir por cada uno datos como abuelos, bisabuelos etc. Ya que el abuelo es el padre de tu padre/madre.
Un saludo
Salvador Ramos
www.helpdna.net
Saludos otra vez:
El diseño que me propones es el lógico y el que yo había pensado, pero por ejemplo si yo quiero hacer un informe en el que me salga el árbol genealógico de tres generaciones ¿cómo tendría que hacerlo a partir del diseño comentado?
En estos casos tienes que utilizar la recursividad. Es decir, una función que se llama a sí misma tantas veces como sea necesario. Si has estudiado informática, éste tema se ve con detalle. Si no tienes claro lo que es la recursividad, te deberías hacer procedimientos específicos para hacer varias select e ir obteniendo por separado los elementos de cada generación. Algo así:
SELECT * FROM TuTabla WHERE Cod = 'xxx'
De esta obtienes los padres, y haces:
SELECT * FROM TuTabla WHERE Cod = padre OR Cod = madre
De esta obtienes los abuelos, y haces:
SELEC * FROM TuTabla WHERE Cod = Abuelo1 OR Cod = Abuelo2 OR
Cod = Abuela1 OR Cod = Abuela2
Y así sucesivamente.
Aunque como te he dicho antes la solución más eficaz y potente es usando recursividad. Esta segunda opción sólo es una forma de salir adelante escribiendo mucho más código y haciendo muchas SELECT.
Hace tiempo hice un caso parecido en el que tenía que hacer un foro de discusión. Por cada pregunta tenía que mostrar todas sus respuestas, las respuestas a estas respuestas, y así sucesivamente. Tenía una tabla similar a la que te comenté, en la que en cada pregunta/respuesta se indicaba cual era la pregunta/respuesta padre.
Siento no poder darte la solución, porque hace tiempo y lo hice en una empresa en la que ya no trabajo, y no dispongo de la información para ponerte un ejemplo.
Un saludo
Salvador Ramos
www.helpdna.net

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas