Ver Mensaje Individual
  #5 (permalink)  
Antiguo 21/01/2013, 05:06
harvey
 
Fecha de Ingreso: mayo-2007
Mensajes: 256
Antigüedad: 17 años, 9 meses
Puntos: 3
Respuesta: Diseño optimo de la base de datos

La base de datos con la que estoy es algo asi como un arbol genealógico y creo que de categoría y tipo solo necestaria una de ellas. El modelo que me presentas es parecido a uno mas reducido que tuve en cuenta que era así como:

id_miembro
nombre
apellido

id_relacion
miembro (relacionado con id_miembro)
pariente (relacionado con id_miembro)
tipo

De tal manera que para una familia compuesta asi:

01 Miguel Martínez Martin (padre)
02 Lucas Martínez Pérez (hijo)
03 Marta Martínez Pérez (hijo)
04 Juan Martínez Pérez (hijo)
05 María Pérez Ponce (madre)

los datos en la tabla de relaciones quedaba mas o menos asi:

01 1 2 padre
02 1 3 padre
03 1 4 padre
04 1 5 conyuge
05 2 1 hijo
06 2 3 hermano
07 2 4 hermano
08 2 5 hijo

La cosa que yo le veia a este modelo es que me obligaba a decir no solo que, por ejemplo, Lucas es hijo de Miguel y María sino tambien hermano de Marta y de Juan. A su vez esas entradas se repetirian con cada miembro: la relacion de hermanos se volveria a indicar cuando los registros correspondan a Marta y a Juan. Por si fuera poco de Juan y Marta vamos a indicar a su vez que son hijos de los mismos padres (Miguel y Maria) y de Miguel y María vamos a decir que son padres de cada uno de los tres. Una gran redundancia de datos tal como yo lo veo.

Con el modelo que estoy usando (sea el de dos o el de tres) el hecho de que Lucas sea hijo de Miguel y María hace que auntomáticamente cualquier otro hijo de ambos quede definido como hermano (en una consulta para saber los hermanos de Lucas solo tengo que buscar aquellos miembros que tienen los mismos padres). Es más, con las consultas adecuadas puedo establecer relaciones de hermanastros en funcion de si solo tienen uno de los padres en común.

En cuanto a lo de que no necesito una ID cuando las relaciones son únicas efectivamente tienes razón pero me he acostumbrado a trabajar dandole un número id a cada tabla, me resulta mas fácil de ver. Supongo que es una manía mia.