Respuesta: como unir dos tablas en mysql En realidad, en todo el problema pueden manejarse dos o tres tablas, dependiendo de algunos factores, y en ningún momento se necesita separar en tablas a los jovenes de los adultos, sino manejarlo en función de lógica:
Alumno(idAlumno, nombre, apellido, documento,fechaNacimiento, ... otros datos)
ResponsableAlumno(idResponsable, idAlumno, nombre, apellido, FechaAlta, FechaBaja, otros datos)
PermisosAlumno(idAlumno, idResponsable, idPermiso, FechaPermiso, BajaPermiso)
Permisos(idPermisos, NombrePermiso, DescripcionPermiso, Obligatorio, tiempoVigencia, ortos datos)
Un esquema como este permite administrar sin mayores problemas algo como lo que dices.
- Para permitir un alta en ResponsableAlumno, tu sistema debe verificar que el alumno que se indicará en ese caso es menor de edad.
- Para permitir completar el alta de un Alumno menor de edad, deberá ingresar obligatoriamente un Responsable, y los permisos que sean obligatorios.
- Si se cambia un responsable, se pone la fecha de baja, y se pone fecha de baja a todos los permisos en que ambos estén relacionados.
- Si la existencia de un Responsable es necesaria, no se podrá dar de baja a menos que sea por una gestión de alta de un nuevo responsable.
- otras cosas más que se pueden deducir o establecer por análisis.
Todo este tipo de esquemas se soporta en la base de datos, pero no se deben derivar las validaciones a la base, son obligaciones de la aplicación, no de la base. Esas reglas pueden estar parametrizadas en la base, pero cuando los datos llegan a la base ya deben estar verificados.
Es muy común en los programadores que se inician pensar que todo lo que sea datos es tema de bases de datos, y eso no es cierto.
La base debe proteger la integridad y consistencia, pero no puedes poner todas las reglas y restricciones de la lógica de negocio en ella. Eso implicaría un exceso de acoplamiento, que a la larga es pernicioso. Esas pertenecen a la aplicación (lo se por experiencia, trabajo en un sistema de altísima complejidad, que tiene centenares de niveles de validación, los cuales toman parámetros de base, pero validan en aplicación).
Hay razone s de peso de por qué se programa de esa forma, pero es mejor hacer las cosa bien de entrada, y no meter errores que luego requerirán rehacer todo para hacerlo bien.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |