Documentos de Académico
Documentos de Profesional
Documentos de Cultura
AC T I V I DA D E VA L UA B L E 2
1ER TRIMESTRE
- BASE DE DATOS -
1º DAW
C a r l e s Tu r C a r d o n a
politico (dni, nom_comp {nombre, apellidos}, {telefono}n, correo_elec, sueldo, dir_comp {dir_postal, cod_postal, localidad, provincia} , matricula)
CP: dni
CAj: matricula → coche_o cial (matricula)
VNN: matricula
VNN: sueldo
Restricciones:
Observaciones:
En las observaciones del ejercicio se nos indica lo descrito en las siguientes imágenes, por ende entendemos que se necesita re ejar en desglose
qué politico esta cobrando esa dieta, ya que sino hay un problema a la hora de introducir los datos que nos piden (las lineas de cada politico
empiezan por 1, luego 2… etc. Por ello al ser una clave principal la clave ‘linea’, no deja repetir los datos en ella y no podemos introducir los datos
en la tabla, además que se pierde la información de qué politico cobra qué dieta. Por todo esto justi camos la introducción de la clave principal ‘dni’
dentro de la tabla desglose además de ser parte de la clave principal compuesta (linea, concepto, dni).
1 . 2 - Tr a n s f o r m a c i ó n a 3 F N
politico (dni, nombre, apellidos, correo_elec, sueldo, dir_postal, cod_postal, localidad, provincia, matricula)
CP: dni
CAj: matricula → coche_o cial (matricula)
VNN: matricula
VNN: sueldo
Ahora ya esta todo dejado en 1FN al no haber ningún atributo compuesto, multievaluado ni derivado dentro de ninguna tabla.
politico (dni, nombre, apellidos, correo_elec, sueldo, dir_postal, cod_postal, localidad, provincia, matricula)
CP: dni
CAj: matricula → coche_o cial (matricula)
VNN: matricula
VNN: sueldo
La única tabla que tiene atributos principales compuestos y al mismo tiempo otros atributos es desglose:
linea
cantidad
concepto
importe
dni
Se puede observar que los atributos que no son clave principal dependen del conjunto entero, así que podemos a rmar que ya esta en 2FN y no
hace falta hacer más cambios.
Para realizar la transformación a 3FN eliminamos la única relación transitiva que existe dentro de la tabla político:
Restricciones:
oposicion_sn VARCHAR(40),
comp_sillon INT,
CONSTRAINT con_dni_fk FOREIGN KEY (dni) REFERENCES politico (dni)
);
· Operación 2.- Cambiar la participación de la entidad POLÍTICO en la relación DISPONER de (1,1) a (0,1):
// Para realizar esta operación modi camos la columna matrícula dentro de la tabla politico ya que antes al ser una relación
(1,1) indicaba que siempre tenia un coche asociado como mínimo, esto se re ejaba como una restricción de integridad
indicando que el valor matricula (ya que es la clave ajena en politico que se relaciona con la tabla coche_o cial) no podía
ser nulo. Ahora al cambiar la relación a (0,1) esta restricción no existe por lo que hay que eliminarla de esa columna. Para
ello modi camos la columna matricula porque según hemos formulado el codigo anteriormente no es una CONSTRAINT
externa, sino que la restricción forma parte directamente de la columna. Al modi carla la dejamos igual pero sin añadir el
valor NOT NULL, quitándole así esta restricción:
· Operación 3.- Permitir que se pueda modi car el concepto de la tabla DIETA, propagando este cambio
Tabla cobrar:
ALTER TABLE cobrar DROP FOREIGN KEY cob_con_fk;
ALTER TABLE cobrar ADD CONSTRAINT cob_con_fk FOREIGN KEY (concepto) REFERENCES dieta (concepto) ON
UPDATE CASCADE;
Tabla desglose:
Al no indicarse nada de lo contrario se mantiene la restricción de ON DELETE CASCADE de la propia tabla, sólo añadimos
la restricción de UPDATE.
· Operación 4.- Modi car la tabla REUNIÓN para que por defecto la fecha de celebración sea la fecha del sistema:
// Para realizar esta operación modi camos la columna f_celebracion dentro de la tabla reunion:
// Para llenar las tablas con los datos pedidos usamos el siguiente código:
INSERT INTO politico (dni, nombre, apellidos, correo_elec, sueldo, matricula) VALUES
('11111111A', 'Paco', 'Butxaca', 'pacobutxaca@corrupto.com', 8000, '1111AAA'),
('22222222B', 'Pepe', 'Meloquedo', 'pepemeloquedo@corrupto.com', 6000, '2222AAB'),
('33333333C', 'Armando', 'Nopuedo', 'armandonopuedo@corrupto.com', 3000, '3333AAC');
// Para re ejar esto debemos usar el siguiente código dentro de la tabla asesor modi cando el parámetro
‘supervisado_por_asesor’:
· Operación 3.- El Ayuntamiento celebra una REUNIÓN (pleno) con fecha 1/12/2023:
// Para re ejar la reunion debemos modi car la fecha que se va a dar de alta como la fecha del sistema, ademas de
introducir los valores que se nos indican:
UPDATE reunion SET f_celebracion = STR_TO_DATE('2023-12-01 09:30:00', '%Y-%m-%d %H:%i:%s') WHERE codigo =
'PLE001';
· Operación 4.- El Ayuntamiento celebra una REUNIÓN (comisión para subir impuestos) con fecha 2/12/2023:
// De nuevo debemos modi car la fecha de la reunión en concreto y llenar las tablas correspondientes con los datos que
nos proporcionan, el codigo sería el siguiente:
UPDATE reunion SET f_celebracion = STR_TO_DATE('2023-12-02 10:15:00', '%Y-%m-%d %H:%i:%s') WHERE codigo =
'COM001';
// De nuevo debemos modi car la fecha de la reunión en concreto según el siguiente código:
UPDATE reunion SET f_celebracion = STR_TO_DATE('2023-12-05 10:30:00', '%Y-%m-%d %H:%i:%s') WHERE codigo =
'PLE001';
// Para eliminar al político Armando debemos usar el codigo DELETE FROM de la siguiente manera en todas tablas donde
aparece Armando usando el dni com identi cador: