Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/06/2012, 22:18
RabidFish
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 15 años, 9 meses
Puntos: 26
¿Cómo resolverían ustedes esto?

Hola gente, ¿cómo están?

Estoy con una duda que no puedo resolver de forma que me parezca elegante... El tema es así: estoy haciendo una web relacionada con las mascotas, donde obviamente tengo las tablas "mascotas", "razas" y "especies".
Cada registro de la tabla mascotas tiene una clave foránea que apunta a la raza, en caso de ser un animal mestizo ("de ninguna raza") actualmente dejo el campo en nulo. Cada una de esas razas tiene una llave que apunta a la especie a la que pertenece, ya que necesito cargar un <select> con las razas de la especie seleccionada.



Ahora, ¿qué pasa si el animal es mestizo? ¿cómo sé a qué especie pertenece? Las soluciones que se me ocurren son:
1. Agregar un campo id_especie a la mascota, colocando dos veces el mismo dato en dos tablas, lo cual es reiterativo (en la tabla razas y en mascotas estaría el id_especie). Esta es la opción que elegí de momento.
2. Hacer una "raza" en la tabla razas que sea "Mestizo canino", otra "Mestizo felino" y así, lo cual no me gusta porque no me interesa seleccionar esas opciones desde el mismo <select> donde están todas las razas, estaría mezclando cosas diferentes. Prefiero que primero se elija si es mestizo o de raza, y si es de raza ahí recién muestro las razas de esa especie.
3. Como de momento tengo sólo dos especies (canina y felina) podría hacer que si id_raza es NULL entonces es un mestizo de raza canina, y si es 0 entonces es mestizo de raza canina, los valores del 1 en adelante serían alguna raza en particular. El problema acá es: ¿qué pasa si luego agrego otra raza?
4. Agregar una columna con valor booleano en "mascotas" que sea "es_mestizo", pero no le veo mucho sentido tampoco ya que podría saber si es mestizo o no al ver que no tiene ningún valor en id_raza.

Espero sus respuestas y desde ya muchas gracias. Un saludo.

Última edición por RabidFish; 19/06/2012 a las 22:31