Acta de la Reunión 13 (4/3/2008)
Realizamos una integración de las 3 partes constituyentes el CRMI, a saber: Reclamaciones, Incidencias y Consultas de Información

El diseño de la BBDD realizado es el siguiente
Diseño completo

Las instrucciones SQL para crear dicha BBDD son

CREATE TABLE Acciones (
  idAccion INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  idTipoAccion INTEGER UNSIGNED NOT NULL,
  descripcion TEXT NULL,
  PRIMARY KEY(idAccion),
  INDEX Acciones_FK_TipoAcciones(idTipoAccion)
);
 
INSERT INTO `acciones` (`idAccion`, `idTipoAccion`, `descripcion`) VALUES
(1, 1, 'reponer servicio/equipo'),
(2, 1, 'promocionar cuotas del servicio'),
(3, 2, 'suspender el servicio'),
(4, 2, 'embargar bienes'),
(5, 1, 'proporcionar ayuda de forma presencial con el cliente'),
(6, 1, 'reparar dispositivo'),
(7, 1, 'configurar dispositivo por telefono con la intervención del cliente'),
(8, 1, 'efectuar comprobaciones de funcionamiento'),
(9, 1, 'sustituir dispositivo por uno equivalente'),
(10, 1, 'sustituir dispositivo por uno mejor'),
(11, 1, 'sustituir dispositivo por uno peor'),
(12, 1, 'sustituir dispositivo por uno mas sencillo'),
(13, 1, 'sustituir dispositivo por uno mas complicado');
 
 
CREATE TABLE Clientes (
  idCliente INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  idProfesion INTEGER UNSIGNED NOT NULL,
  idTipoCliente INTEGER UNSIGNED NOT NULL,
  nivelDeComprensión TINYINT UNSIGNED NULL,
  nombre VARCHAR(45) NULL,
  apellidos VARCHAR(45) NULL,
  fechaDeNacimiento DATE NULL,
  PRIMARY KEY(idCliente),
  INDEX Clientes_FK_TipoCliente(idTipoCliente),
  INDEX Clientes_FK_Profesiones(idProfesion)
);
 
INSERT INTO `clientes` (`idCliente`, `idProfesion`, `idTipoCliente`, `nivelDeComprensión`,
            `nombre`, `apellidos`, `fechaDeNacimiento`) VALUES
(1, 5, 3, 1, 'Juan', 'Pérez', '1945-10-12'),
(2, 4, 1, 2, 'María', 'González', '1977-05-02'),
(3, 3, 3, 3, 'Francisco', 'Sánchez', '1985-04-15'),
(4, 2, 2, 1, 'Mercedes', 'Cruz', '1962-04-20'),
(5, 1, 1, 1, 'Roberto', 'Pla', '1955-12-25');
 
 
CREATE TABLE Consultas (
  idConsulta INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  idCliente INTEGER UNSIGNED NOT NULL,
  tipo VARCHAR(45) NOT NULL,
  fecha DATETIME NOT NULL,
  PRIMARY KEY(idConsulta),
  INDEX Consultas_FK_Clientes(idCliente)
);
 
CREATE TABLE HistoricoAcciones (
  idHistoricoAccion INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  idConsulta INTEGER UNSIGNED NOT NULL,
  idReclamacion INTEGER UNSIGNED NOT NULL,
  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_Productos(idProducto),
  INDEX HistoricoAcciones_FK_Acciones(idAccion),
  INDEX HistoricoAcciones_FK_Reclamaciones(idReclamacion),
  INDEX HistoricoAcciones_FK_Incidencias(idIncidencia),
  INDEX HistoricoAcciones_FK_Consultas(idConsulta)
);
 
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)
);
 
INSERT INTO HistoricoDeudas (idHistoricoDeuda, idCliente, deuda,  fecha) VALUES
(NULL, 1,  100 , '2007-1-15'),
(NULL, 2,  10000 , '2007-2-5'),
(NULL, 1,  500 , '2007-4-14'),
(NULL, 2,  20000 , '2007-5-30'),
(NULL, 2,  1000 , '2007-6-8');
 
 
CREATE TABLE HistoricoReacciones (
  idHistoricoReaccion INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  idConsulta INTEGER UNSIGNED NOT NULL,
  idReclamacion INTEGER UNSIGNED NOT NULL,
  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),
  INDEX HistoricoReacciones_FK_Reclamaciones(idReclamacion),
  INDEX HistoricoReacciones_FK_Consultas(idConsulta)
);
 
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)
);
 
INSERT INTO Incidencias (idIncidencia, idCliente, tipo,  fecha) VALUES
(NULL, 1,  'tipo1' , '2007-10-25');
 
 
CREATE TABLE Productos (
  idProducto INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  Nombre VARCHAR(45) NULL,
  Modelo VARCHAR(45) NULL,
  problemasProducto BOOL NULL,
  mesesDeGarantia INTEGER UNSIGNED NULL,
  Caracteristicas TEXT NULL,
  TipoProducto TEXT NULL,
  PRIMARY KEY(idProducto)
);
 
 
INSERT INTO Productos
 (idProducto, problemasProducto, mesesDeGarantia, Caracteristicas,  TipoProducto)
 VALUES (NULL, 1,  12 , 'Con camara de fotos', 'Tipo1');
 
 
CREATE TABLE Profesiones (
  idProfesion INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  nombre VARCHAR(60) NULL,
  comentarios TEXT NULL,
  PRIMARY KEY(idProfesion)
);
 
INSERT INTO `profesiones` (`idProfesion`, `nombre`, `comentarios`) VALUES
(1, 'Fuerzas Armadas', 'Fuerzas Armadas'),
(2, 'Dirección de las Empresas y de las Administraciones Públicas',
    'Dirección de las Empresas y de las Administraciones Públicas'),
(3, 'Técnicos y Profesionales científicos',
    'Técnicos y Profesionales científicos e intelectuales'),
(4, 'Técnicos y Profesionales de Apoyo', 'Técnicos y Profesionales de Apoyo'),
(5, 'Empleados de tipo administrativo', 'Empleados de tipo administrativo'),
(6, 'Trabajadores de los Servicios Sociales',
    'Trabajadores de los Servicios de restauración, personales, protección y vendedores de los comercios'),
(7, 'Trabajadores cualificados en agricultura y pesca',
    'Trabajadores cualificados en la agricultura y en la pesca'),
(8, 'Trabajadores cualificados de las industrias primarias',
    'Artesanos y Trabajadores cualificados de las industrias manofactureras,
     la construcción y la minería, excepto los operadores de instalaciones y maquinaría'),
(9, 'Operadores de instalaciones y maquinaria',
    'Operadores de instalaciones y maquinaria y montadores'),
(10, 'Trabajadores no cualificados', 'Trabajadores no cualificados'),
(11, 'Inactivo o desocupado', 'Inactivo o desocupado');
 
 
CREATE TABLE Reacciones (
  idReaccion INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  idTipoReaccion INTEGER UNSIGNED NOT NULL,
  descripcion TEXT NULL,
  PRIMARY KEY(idReaccion),
  INDEX Reacciones_FK_TipoReacciones(idTipoReaccion)
);
 
CREATE TABLE Reclamaciones (
  idReclamacion INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  idCliente INTEGER UNSIGNED NOT NULL,
  tipo VARCHAR(45) NULL,
  fecha DATETIME NULL,
  PRIMARY KEY(idReclamacion),
  INDEX Reclamaciones_FKIndex1(idCliente)
);
 
INSERT INTO Incidencias
(idIncidencia, idCliente, tipo,  fecha)
VALUES (NULL, 1,  'tipo1' , '2007-10-25');
 
 
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,
  profesión VARCHAR(45) NULL,
  claseSocial VARCHAR(45) NULL,
  tipoCliente VARCHAR(45) NULL,
  estadoUltimaLlamada VARCHAR(45) NULL,
  PRIMARY KEY(idReglas),
  INDEX Reglas_FK_Acciones(idAccion)
);
 
 
INSERT INTO `reglas`
(`idReglas`, `idAccion`, `edad_Min`, `edad_Max`, `profesión`, `claseSocial`,
            `tipoCliente`, `estadoUltimaLlamada`) VALUES
(NULL, 1, 0, 17, NULL, NULL, 'Normal', NULL),
(NULL, 2, 18, 26, 'Ingeniería', NULL, 'Normal', 'conforme'),
(NULL, 1, 18, 26, '', NULL, 'moroso', 'disconforme'),
(NULL, 1, 35, 45, 'Funcionario', NULL, NULL, 'conforme');
 
 
CREATE TABLE TipoAcciones (
  idTipoAccion INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  nombreTipo VARCHAR(45) NULL,
  descripción TEXT NULL,
  clasificación SET('Blanda', 'Dura') NULL,
  PRIMARY KEY(idTipoAccion)
);
 
CREATE TABLE TipoClientes (
  idTipoCliente INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  nombreTipo VARCHAR(45) NULL,
  descripción TEXT NULL,
  PRIMARY KEY(idTipoCliente)
);
 
INSERT INTO `tipoclientes` (`idTipoCliente`, `nombreTipo`, `descripción`) VALUES
(1, 'exigencia baja', 'baja necesidad de tecnologías avanzadas'),
(2, 'exigencia media', 'necesidades tecnológicas medias'),
(3, 'exigencia alta', 'Alta necesidad de usar las ultimas tecnologías.');
 
 
CREATE TABLE TipoReacciones (
  idTipoReaccion INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  nombreTipo VARCHAR(45) NULL,
  descripción TEXT NULL,
  clasificación SET('Blanda', 'Dura') NULL,
  PRIMARY KEY(idTipoReaccion)
);