Acta de la Reunión 12 (23/1/2008)
Presentamos los diseños preliminares de la base de datos al profesor. Sin entrar en los detalles propios del diseño, para las siguientes reuniones empezaremos a implementar la BBDD. Como comentamos en reuniones pasadas, utilizaremos MySQL para gestionar la base de datos del proyecto. Para poder realizar pruebas en los laboratorios se solicitó acceso a MySQL.

Comprobado que se carga la base de datos en los laboratorios. Se ha modificado el archivo generado para la pasada reunión que se adjunta a continuación.
2.SQL

CREATE TABLE Acciones (
  idAccion INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  idTipoAccion INTEGER UNSIGNED NOT NULL,
  descripcion TEXT NULL,
  PRIMARY KEY(idAccion),
  INDEX Acciones_TipoAccion(idTipoAccion)
);
 
/****************************************************/
 
CREATE TABLE Clientes (
  idCliente INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  idTipoCliente INTEGER UNSIGNED NOT NULL,
  nivelDeComprensin TINYINT UNSIGNED NULL,
  nombre VARCHAR(45) NULL,
  apellidos VARCHAR(45) NULL,
  fechaDeNacimiento DATE NULL,
  profesin VARCHAR(45) NULL,
  PRIMARY KEY(idCliente),
  INDEX Clientes_FK_TipoCliente(idTipoCliente)
);
/****************************************************/
 
 
CREATE TABLE HistoricoAcciones (
  idHistoricoAccion INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  idAccion INTEGER UNSIGNED NOT NULL,
  idProducto INTEGER UNSIGNED NOT NULL,
  idIncidencia INTEGER UNSIGNED NOT NULL,
  detalles TEXT NULL,
  numLlamada INTEGER UNSIGNED NULL,
  fecha DATETIME NULL,
  PRIMARY KEY(idHistoricoAccion),
  INDEX HistoricoAcciones_FK_Incidencias(idIncidencia),
  INDEX HistoricoAcciones_FK_Productos(idProducto),
  INDEX HistoricoAcciones_FKAcciones(idAccion)
);
/****************************************************/
 
 
CREATE TABLE HistoricoDeudas (
  idHistoricoDeuda INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  idCliente INTEGER UNSIGNED NOT NULL,
  deuda FLOAT NULL,
  fecha DATE NULL,
  PRIMARY KEY(idHistoricoDeuda),
  INDEX HistoricoDeudas_FK_Clientes(idCliente)
);
/****************************************************/
 
 
CREATE TABLE HistoricoReacciones (
  idHistoricoReaccion INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  idProducto INTEGER UNSIGNED NOT NULL,
  idIncidencia INTEGER UNSIGNED NOT NULL,
  idReaccion INTEGER UNSIGNED NOT NULL,
  detalles TEXT NULL,
  numLlamada INTEGER UNSIGNED NULL,
  fecha DATETIME NULL,
  PRIMARY KEY(idHistoricoReaccion),
  INDEX HistoricoReacciones_FK_Reacciones(idReaccion),
  INDEX HistoricoReacciones_FK_Incidencias(idIncidencia),
  INDEX HistoricoReacciones_FK_Productos(idProducto)
);
/****************************************************/
 
 
CREATE TABLE Incidencias (
  idIncidencia INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  idCliente INTEGER UNSIGNED NOT NULL,
  tipo VARCHAR(45) NULL,
  fecha DATETIME NULL,
  PRIMARY KEY(idIncidencia),
  INDEX Incidencias_FK_Clientes(idCliente)
);
/****************************************************/
 
 
CREATE TABLE Productos (
  idProducto INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  problemasProducto BOOL NULL,
  mesesDeGarantia INTEGER UNSIGNED NULL,
  Caracteristicas TEXT NULL,
  TipoProducto TEXT NULL,
  PRIMARY KEY(idProducto)
);
/****************************************************/
 
 
CREATE TABLE Reacciones (
  idReaccion INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  idTipoReaccion INTEGER UNSIGNED NOT NULL,
  descripcion TEXT NULL,
  PRIMARY KEY(idReaccion),
  INDEX Reacciones_FK_TipoReaccion(idTipoReaccion)
);
/****************************************************/
 
 
CREATE TABLE Reglas (
  idReglas INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  idAccion INTEGER UNSIGNED NOT NULL,
  edad_Min TINYINT UNSIGNED NULL,
  edad_Max TINYINT UNSIGNED NULL,
  profesin VARCHAR(45) NULL,
  claseSocial VARCHAR(45) NULL,
  tipoCliente VARCHAR(45) NULL,
  estadoUltimaLlamada VARCHAR(45) NULL,
  PRIMARY KEY(idReglas),
  INDEX Reglas_FK_Acciones(idAccion)
);
/****************************************************/
 
 
CREATE TABLE TipoAcciones (
  idTipoAccion INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  nombreTipo VARCHAR(45) NULL,
  descripcin TEXT NULL,
  clasificacin SET("Blanda", "Dura") NULL,
  PRIMARY KEY(idTipoAccion)
);
/****************************************************/
 
 
CREATE TABLE TipoClientes (
  idTipoCliente INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  nombreTipo VARCHAR(45) NULL,
  descripcin TEXT NULL,
  PRIMARY KEY(idTipoCliente)
);
/****************************************************/
 
 
CREATE TABLE TipoReacciones (
  idTipoReaccion INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  nombreTipo VARCHAR(45) NULL,
  descripcin TEXT NULL,
  clasificacin SET("Blanda", "Dura") NULL,
  PRIMARY KEY(idTipoReaccion)
);
/****************************************************/
 
 
INSERT INTO `acciones` (`idAccion`, `idTipoAccion`, `descripcion`) VALUES
(1, 1, 'Se proveer al cliente del servicio de la forma ms rápida posible.
Aumentando la prioridad de sus incidencias, o incluso saltándose la cola de casos pendientes.'),
(2, 1, 'Debido al perfil de cliente se tardar ms de lo normal en proveer el servicio.
Pudiéndose retrasar hasta el doble de lo establecido en el cdigo de buenas prácticas
o hasta que el cliente cumpla un determinado criterio, normalmente económico.'),
(3, 2, 'Se le proporcionar una reparación rápida y sin coste para el cliente.'),
(4, 2, 'Se le reparar el dispositivo asumiendo el cliente el 100% del coste de la reparación.');
/****************************************************/
 
 
INSERT INTO Clientes (idCliente, nivelDeComprensin, nombre, apellidos, fechaDeNacimiento) VALUES
        (NULL, 1, 'Juan', 'Prez' , '1945-10-12');
INSERT INTO Clientes (idCliente, nivelDeComprensin, nombre, apellidos, fechaDeNacimiento) VALUES
        (NULL, 2, 'Mara', 'Gonzlez' , '1977-05-02');
INSERT INTO Clientes (idCliente, nivelDeComprensin, nombre, apellidos, fechaDeNacimiento) VALUES
        (NULL, 3, 'Francisco', 'Snchez' , '1985-04-15');
INSERT INTO Clientes (idCliente, nivelDeComprensin, nombre, apellidos, fechaDeNacimiento) VALUES
        (NULL, 1, 'Mercedes', 'Cruz' , '1962-04-20');
INSERT INTO Clientes (idCliente, nivelDeComprensin, nombre, apellidos, fechaDeNacimiento) VALUES
        (NULL, 1, 'Roberto', 'Pla' , '1955-12-25');
/****************************************************/
 
 
INSERT INTO HistoricoDeudas (idHistoricoDeuda, idCliente, deuda,  fecha) VALUES
        (NULL, 1,  100 ,     '2007-1-15');
INSERT INTO HistoricoDeudas (idHistoricoDeuda, idCliente, deuda,  fecha) VALUES
        (NULL, 2,  10000 , '2007-2-5');
INSERT INTO HistoricoDeudas (idHistoricoDeuda, idCliente, deuda,  fecha) VALUES
        (NULL, 1,  500 ,     '2007-4-14');
INSERT INTO HistoricoDeudas (idHistoricoDeuda, idCliente, deuda,  fecha) VALUES
        (NULL, 2,  20000 , '2007-5-30');
INSERT INTO HistoricoDeudas (idHistoricoDeuda, idCliente, deuda,  fecha) VALUES
        (NULL, 2,  1000 ,   '2007-6-8');
/****************************************************/
 
 
INSERT INTO Incidencias (idIncidencia, idCliente, tipo,  fecha) VALUES
        (NULL, 1,  'tipo1' , '2007-10-25');
/****************************************************/
 
INSERT INTO Productos (idProducto, problemasProducto, mesesDeGarantia, Caracteristicas,  TipoProducto)
        VALUES (NULL, 1,  12 , 'Con camara de fotos', 'Tipo1');
/****************************************************/
 
 
INSERT INTO `reglas` (`idReglas`, `idAccion`, `edad_Min`, `edad_Max`, `profesin`,
 `claseSocial`, `tipoCliente`, `estadoUltimaLlamada`) VALUES
        (NULL, 1, 0, 17, NULL, NULL, 'Normal', NULL),
        (NULL, 2, 18, 26, 'Ingeniera', NULL, 'Normal', 'conforme'),
        (NULL, 1, 18, 26, '', NULL, 'moroso', 'disconforme'),
        (NULL, 1, 35, 45, 'Funcionario', NULL, NULL, 'conforme');
/****************************************************/
 
 
INSERT INTO `tipoacciones` (`idTipoAccion`, `nombreTipo`, `descripcin`, `clasificacin`) VALUES
(1, 'Provisin Servicio', NULL, 'Blanda'),
(2, 'Reparacin dispositivo', NULL, 'Blanda');