NORMALIZAR TABLA-audiencia_intervinientes
Para normalizar las columnas relacionadas con los intervinientes en la tabla audiencia, puedes seguir un proceso similar al que hicimos con los delitos. Vamos a crear una nueva tabla llamada audiencia_intervinientes, donde cada interviniente estará asociado a una audiencia con un tipo que indica qué rol (asistente, víctima, asesor, etc.) desempeña en esa audiencia.
1. Crear la nueva tabla audiencia_intervinientes
Esta tabla contendrá una columna nombre, una columna tipo que identificará el tipo de interviniente, y una clave foránea que haga referencia a la tabla audiencia.
CREATE TABLE audiencia_intervinientes (
id_interviniente INT AUTO_INCREMENT PRIMARY KEY,
id_audiencia INT NOT NULL,
nombre VARCHAR(150) NOT NULL,
tipo VARCHAR(50) NOT NULL,
FOREIGN KEY (id_audiencia) REFERENCES audiencia(id_audiencia) ON DELETE CASCADE
);
2. Insertar los intervinientes antiguos en la nueva tabla
Ahora, vamos a mover los datos de las columnas asistente, victima, asesor, fiscalia, imputado, defensa, aut_penitenciaria, y encargado a la tabla audiencia_intervinientes. Para cada columna, insertaremos un registro en la tabla audiencia_intervinientes con su respectivo tipo.
a) Insertar los intervinientes en la nueva tabla
b) Verificar los datos
Después de ejecutar las consultas, puedes verificar que los datos fueron insertados correctamente en la nueva tabla audiencia_intervinientes:
SELECT * FROM audiencia_intervinientes;
3. Eliminar las columnas antiguas de la tabla audiencia
Una vez que hayas migrado los datos a la nueva tabla, puedes eliminar las columnas relacionadas con los intervinientes de la tabla audiencia.
-- Eliminar las columnas antiguas relacionadas con los intervinientes
ALTER TABLE audiencia
DROP COLUMN asistente,
DROP COLUMN victima,
DROP COLUMN asesor,
DROP COLUMN fiscalia,
DROP COLUMN imputado,
DROP COLUMN defensa,
DROP COLUMN aut_penitenciaria,
DROP COLUMN encargado;
4. Resumen
- Crear la tabla
audiencia_intervinientespara almacenar los intervinientes de cada audiencia. - Mover los datos antiguos de las columnas de intervinientes (
asistente,victima,asesor, etc.) a la nueva tablaaudiencia_intervinientes. - Eliminar las columnas antiguas de la tabla
audienciauna vez que la migración haya sido exitosa.
Ahora tendrás una tabla normalizada, donde cada audiencia puede tener múltiples intervinientes, con un tipo específico, lo que facilita las relaciones de uno a muchos y mantiene una estructura de datos más limpia y eficiente.
Si quieres consultar los intervinientes de la audiencia con id_audiencia = 5, la consulta sería:
SELECT
a.id_audiencia,
a.nombre,
a.distrito,
a.sala,
a.fecha_c,
a.hora,
a.juez,
a.tipoaudiencia,
a.confidencialidad,
a.acto,
a.acto_descripcion,
a.acto_observacion,
i.nombre AS interviniente,
i.tipo AS tipo_interviniente
FROM
audiencia a
LEFT JOIN
audiencia_intervinientes i
ON
a.id_audiencia = i.id_audiencia
WHERE
a.id_audiencia = 5;
Comentarios
Publicar un comentario