Sunteți pe pagina 1din 127

Universidad de A Corua Mster en Ingeniera de Sistemas Informticos

Prctic de Bses de Dtos 2 2009/2010. Entreg 2.

Guzmn Romero, Jos Antonio D0238764 - jose.guzman - jose.guzman@udc.es - 670646872 Palma Fraga, John Ander - 48112156C - john.palma - john.palma@udc.es - 663039811

Directorio de entrega: /PRACTICAS/MIN/BD/P2/john.palma/ A Corua, Mayo de 2010

ndice

ndice ................................................................................................................................................ 2 ndice de tablas ................................................................................................................................ 4 ndice de ilustraciones ..................................................................................................................... 4 1 2 Introduccin ................................................................................................................................. 5 Diseo lgico y fsico de la Base de datos .................................................................................... 6 2.1 Diseo Lgico......................................................................................................................... 6 Revisin del modelo conceptual .................................................................................... 7

2.1.1 2.2

Diseo EER en PowerDesigner .............................................................................................. 8 Modelo Lgico ................................................................................................................ 9

2.2.1 2.3

Implementacin en Oracle .................................................................................................. 40 Sentencias INSERT de SQL ............................................................................................ 43 Ficheros de control de datos de SQL *Loader ............................................................. 46 Sentencias SQL para la creacin de las tablas ............................................................. 60 Creacin de ndices ...................................................................................................... 71 Secuencias .................................................................................................................... 74 Descripcin de las tablas (DESCRIBE) ........................................................................... 75 Obtener las filas de las tablas (SELECT *) ..................................................................... 80

2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 3

SQL y aplicacin de acceso ......................................................................................................... 89 3.1 SQL ampliado ....................................................................................................................... 89

3.1.1 Una consulta que proporcione informacin sobre las plizas que posee un cliente segn su DNI. (empresa aseguradora, elemento asegurado, categora elemento asegurado). 89 3.1.2 Obtener todas las plizas que tienen como fecha de vencimiento menor a dos meses a la fecha actual. ........................................................................................................................ 90 3.1.3 Una consulta que diga cuales son, segn una lista de coberturas, las empresas que las ofrecen a mayores o si se encuentran en algn paquete. (empresa, nombre cobertura-en la empresa, paquete) ................................................................................................................. 90 3.1.4 Obtener todos los paquetes ofrecidos por una determinada empresa aseguradora, especficamente GALESEG. ...................................................................................................... 91 3.1.5 Una consulta que calcule las cuentas por cobrar (pagos vencidos de plizas vigentes) por cliente. (cliente, pliza, saldo vencido). .............................................................................. 92

3.1.6 Plizas que pertenecen a una categora de elemento asegurado que nos d un porcentaje de ganancia superior al promedio de los porcentajes de ganancias. ..................... 93 3.1.7 Saber el nmero de partes que han tenido las plizas ordenados por nmero de partes descendentemente. (pliza, partes) ............................................................................... 93 3.1.8 Saber cuntas plizas se contrataron por mes de cada ao. ...................................... 93

3.1.9 Plizas mal armadas. Plizas que poseen coberturas repetidas (dentro de un paquete y a mayores) (pliza, categoras repetidas). .............................................................................. 94 3.1.10 Obtener todas las plizas que se contrataron este mes.............................................. 95 3.1.11 Obtener la antigedad del cliente, segn el elemento asegurado. ............................ 95 3.1.12 Cuales plizas poseen paquetes que pertenecen a distintas empresas. .................... 95 3.1.13 Obtener los das de cobertura que le quedan a las plizas activas. ............................ 96 3.1.14 Anlisis de Categoras problemticas. Seleccin de las categoras, de sus porcentaje de ganancia y del nmero de partes.......................................................................................... 96 3.1.15 Las ganancias de los pagos realizados este ao. ......................................................... 97 3.1.16 Clientes con plizas vencidas no renovadas. ............................................................... 97 3.1.17 Una lista de los clientes que nos indique cuantas plizas ACTIVAS tiene contratadas un cliente y que nos diga qu tipo de cliente es y cul es el promedio de ganancia que nos da cada uno. .................................................................................................................................... 98 3.1.18 Las categoras sobre las que no tenemos ninguna pliza............................................ 99 3.1.19 Todas las coberturas que nos ofrece una empresa aseguradora. ............................... 99 3.1.20 Segn el tipo de elemento asegurado saber cuntas plizas hay sobre ellos........... 100 3.2 Aplicacin de acceso ......................................................................................................... 100 En el paquete BO:....................................................................................................... 101 En el paquete DAO: .................................................................................................... 111 En el Paquete BD: ....................................................................................................... 123 Paquete Base:............................................................................................................. 126

3.2.1 3.2.2 3.2.3 3.2.4

ndice de tablas
Tabla 1. Nomenclatura utilizada. ......................................................................................................... 9 Tabla 2. Dominios............................................................................................................................... 10 Tabla 3. Restricciones......................................................................................................................... 37

ndice de ilustraciones
Ilustracin 1. Diseo lgico. ................................................................................................................. 6 Ilustracin 2. Diseo EER en PowerDesigner. ...................................................................................... 8

1 Introduccin
El caso de estudio, se trata de una corredura de seguros que necesita la implementacin de un sistema, que gestione el negocio de manera ntegra y eficiente. Para ello se requiere la realizacin de una base de datos relacional, que mantenga una debida consistencia en los datos. Para el desarrollo de esta prctica fue utilizado: Herramienta Case de desarrollo: NetBeans IDE 6.8. Herramienta de modelado: PowerDesigner Studio Enterprise V.15.2.0 Las pruebas se realizaron en el siguiente entorno: JRM: java versin "1.6.0_18" Para manejador de Base de Datos se us versin Oracle Database 10g Express Edition XE Release 10.2.0.1.0. JDBC: classes12_g.jar

Durante la pruebas de acceso a las tablas surgi una incompatibilidad entre la versin del Manejador y la de JDBC. Existe un problema con el uso de variables tipo date. Reportado en:
http://forums.oracle.com/forums/thread.jspa?threadID=1035716&tstart=78&messageID=4142158

La solucin alterna que se emple fue evitar el uso de los mtodos getDate() y setDate() de la clase Resultset y PrepareStatement respectivamente. En su lugar se emple la funcin TO_DATE(?,'yyyy/mm/dd:HH24:mi:ss') en reemplazo de setDate() y la funcin TO_CHAR(SYSDATE,'yyyy/mm/dd:HH24:mi:ss') en reemplazo de getDate().

2 Diseo lgico y fsico de la Base de datos


2.1 Diseo Lgico

Ilustracin 1. Diseo lgico.

2.1.1 Revisin del modelo conceptual

Las modificaciones realizadas al modelo son las siguientes: Eliminar los atributos tvi y tvf en la entidad Cliente, pues no es relevante para el modelo de negocio que para mantener el historial de los nmeros telefnicos de los clientes, se deban realizar nuevas tuplas para el cambio en la relacin entre Pliza y Cliente, Pliza y Cobertura, Cobertura y Paquetes Eliminar los atributos tvi y tvf de la entidad Empresa Aseguradora, ya que mantener estos campos obligara que al realizar una modificacin, se crearan nuevas tuplas en la relacin entre Empresa Aseguradora y Cobertura Empresa, Empresa Aseguradora y Paquete. Este costo no se justifica para mantener un historial de nmeros telefnicos. Se cambi la notacin de expresin de la cardinalidad, pues por confusin con otras asignaturas, fue utilizado el estndar de diagramas UML 1..1 / 1..n, en lugar del adecuado para bases de datos (1,1) / (1,n). Se eliminaron las relaciones pertenece entre Categora Elemento Asegurado y Cobertura y Paquete. Se modific la relacin pertenece entre Categora Elemento Asegurado y Elemento Asegurado para que ahora sea entre Categora Elemento Asegurado y Pliza. Se modific la relacin cubre entre Pliza y Cobertura para que ahora quede entre pliza y Cobertura Empresa, esto debido a que es en esta table donde se almacena el precio. Se agreg como identificador la columna tvi a la entidad Cobertura Empresa. Se agreg como identificador la columna tvi a la entidad Paquete. Se elimin como identificador la columna id_persona de la entidad Persona. Se elimin como identificador la columna cif de la entidad Empresa.

2.2 Diseo EER en PowerDesigner

Ilustracin 2. Diseo EER en PowerDesigner.

2.2.1 Modelo Lgico

Nomenclatura utilizada

Para que el pase del modelo EER al modelo relacional sea uniforme y los ms acertado posible, debemos emplear reglas basadas en estndares y que se adecuen a nuestras necesidades de caso de estudio. Por restriccin de longitud de nombre se utiliz una tabla de abreviaturas para los conceptos que usa el modelo de negocio, esto a fin de ser consistente al referirse a un mismo objeto y llamarlo as por el mismo nombre.
Palabra Elemento Asegurado Motocicleta Categora Paquete/s Pliza Cobertura Empresa Aseguradora Salidas Emergencia Centro Comercial Nacimiento Primer Segundo Direccin Habitacin Porcentaje Ganancia Abreviatura Elmnto Asgurado Moto Cat Pkg/s pol cob Emp Asgrdra Slds Emerg CC Nac Primr Segndo Dir hab Prcntje GNNCIA

Tabla 1. Nomenclatura utilizada.

Para el nombramiento de las tablas se us: Si la tabla deriva de una entidad, se usan las abreviaturas de cada palabra o la palabra (segn la longitud) separadas por guion bajo _. As, la tabla que representa la entidad Categora de Elemento Asegurado se nombr CAT_ELMNTO_ASGRDO. Si la tabla deriva de una relacin, se usan los nombres de las entidades relacionadas. As, la tabla que deriva de Pliza y Coberturas se nombr POLIZA_COBERTURA. Todos los nombres se usaron en mayscula.

Las secuencias se nombraron, usando el prefijo SEQ_ y si se empleaban para un identificador se colocaba luego un ID_ y luego el nombre de la tabla que usar esa secuencia. Por ejemplo, la secuencia que maneja el identificador de la tabla Clientes se nombr SEQ_ID_CLIENTES. Las claves primarias sustitutas se nombraron usando el prefijo ID_ unido al nombre de la tabla. Para las vistas se us el prefijo VIEW_ y el nombre de la vista. Los nombres de los Dominios tienen el prefijo D_. Para los nombres de los ndices de claves forneas se utiliz el nombre de la tabla padre unido con _ON_ unido con el nombre de la tabla hija unido con _FK

Dominios

Nombre D_BOOLEAN D_BREVE_DESCRIPCION D_CIF D_DESCRIPCION D_DIRECCION D_DNI D_ELEMENTOS D_FECHA D_ID_CAT_ELEMENT D_ID_CLIENTE D_ID_COBERTURA D_ID_ELEMENT_ASEGURADO D_ID_EMP_ASEGURADORA D_ID_PAGO D_ID_PAQUETE D_ID_PARTE D_ID_POLIZA D_MATRICULA D_METRAJE D_MONTO D_NOMBRE D_NSS D_PORCENTAJE D_TELEFONO

Tipo de Dato Longitud Presicion 1 Number(1) Variable characters (50) 50 Variable characters (10) 10 Variable characters (250) 250 Variable characters (100) 100 Variable characters (9) 9 Number (2) 2 Date & Time Number (6) 6 Number (6) 6 Number (10) 10 Number (10) 10 Number (10) 10 Number (6) 6 Number (8) 8 Number (6) 6 Number (6) 6 Variable characters (7) 7 Number (6,2) 6 2 Number (8,2) 8 2 Variable characters (50) 50 Variable characters (13) 13 Number (4,2) 4 2 Variable characters (14) 14
Tabla 2. Dominios.

Relaciones, Claves, Atributos y Comportamiento

2.2.1.1.1 Camin (CAMION) Descripcin: Tipo de vehculo asegurable que tiene grandes dimensiones. Motivacin: Deriva directamente de un tipo de entidad. Clave Primaria: { ID_ELMNTO_ASGRADO } Claves Candidatas: { ID_ELMNTO_ASGRADO } Claves Forneas: { ID_ELMNTO_ASGRADO (VEHICULOS) } Atributos: ID_ELMNTO_ASGRADO: D_ID_ELEMENT_ASEGURADO N_EJES: D_ELEMENTOS TARA: D_ELEMENTOS

Comportamiento: Ninguno de los campos puede ser nulo y no tienen un valor por defecto.

2.2.1.1.2 Categora Camin (CAT_CAMION) Descripcin: Categora donde se listan los diferentes tipos de camiones. Motivacin: Deriva directamente de un tipo de entidad. Clave Primaria: { ID_CATEGORIA, TVI_CAT_ELE } Claves Candidatas: { ID_CATEGORIA, TVI_CAT_ELE } Claves Forneas: { ID_CATEGORIA, TVI_CAT_ELE (CAT_VEHICULOS) } Atributos: ID_CATEGORIA: D_ID_CAT_ELEMENT TVI_CAT_ELE: D_FECHA POSEE_REFRGRCION: D_BOOLEAN

Comportamiento: Ninguno de los campos puede ser nulo y no tienen un valor por defecto.

2.2.1.1.3 Categora de Coches (CAT_COCHE) Descripcin: Categora donde se listan los diferentes tipos de coches. Motivacin: Deriva directamente de una entidad. Clave Primaria: { ID_CATEGORIA, TVI_CAT_ELE } Claves Candidatas: { ID_CATEGORIA, TVI_CAT_ELE } Claves Forneas: { ID_CATEGORIA, TVI_CAT_ELE (CAT_VEHICULOS) } Atributos: ID_CATEGORIA: D_ID_CAT_ELEMENT TVI_CAT_ELE: D_FECHA GARAGE_PROPIO: D_BOOLEAN USO_COCHE: D_BREVE_DESCRIPCION

Comportamiento: Ninguno de los campos puede ser nulo y no tienen un valor por defecto.

2.2.1.1.4 Categora Elemento Asegurado (CAT_ELMNTO_ASGURADO) Descripcin: Categora donde se listan los diferentes tipos de elementos asegurables, posee un precio en porcentaje o cantidad fija, que se le da a un riesgo, en funcin de la experiencia y la siniestralidad que sobre l tiene la aseguradora. Motivacin: Deriva directamente de un tipo de entidad. Clave Primaria: { ID_CATEGORIA, TVI_CAT_ELE } Claves Candidatas: { ID_CATEGORIA, TVI_CAT_ELE } Claves Forneas: No. Atributos: ID_CATEGORIA: D_ID_CAT_ELEMENT TVI_CAT_ELE: D_FECHA PRCNTJE_GNNCIA: D_PORCENTAJE NOMBRE: D_NOMBRE TVF: D_FECHA

Comportamiento: TVF es el nico campo que puede ser nulo y no tiene valores por defecto.

2.2.1.1.5 Categora de Inmuebles (CAT_INMUEBLES) Descripcin: Categora en donde se listan los diferentes tipos de inmuebles. Motivacin: Acta como filtro. Clave Primaria: { ID_CATEGORIA, TVI_CAT_ELE } Claves Candidatas: { ID_CATEGORIA, TVI_CAT_ELE } Claves Forneas: { ID_CATEGORIA, TVI_CAT_ELE (CAT_VEHICULOS) } Atributos: ID_CATEGORIA: D_ID_CAT_ELEMENT TVI_CAT_ELE: D_FECHA

Comportamiento: Ninguno de los campos puede ser nulo y no tienen un valor por defecto.

2.2.1.1.6 Categora de Locales Comerciales (CAT_LOCAL_COMERCIAL) Descripcin: Categora donde se listan los diferentes tipos de locales comerciales. Motivacin: Deriva directamente de un tipo de entidad. Clave Primaria: { ID_CATEGORIA, TVI_CAT_ELE } Claves Candidatas: { ID_CATEGORIA, TVI_CAT_ELE } Claves Forneas: { ID_CATEGORIA, TVI_CAT_ELE (CAT_VEHICULOS) } Atributos: ID_CATEGORIA: D_ID_CAT_ELEMENT TVI_CAT_ELE: D_FECHA UBICADO_EN_CC: D_BOOLEAN POSEE_SLDS_EMERG: D_BOOLEAN

Comportamiento: Ninguno de los campos puede ser nulo y no tienen un valor por defecto.

2.2.1.1.7 Categora de Motocicleta (CAT_MOTO) Descripcin: Categora donde se listan los diferentes tipos moto. Motivacin: Deriva directamente de un tipo de entidad. Clave Primaria: { ID_CATEGORIA, TVI_CAT_ELE } Claves Candidatas: { ID_CATEGORIA, TVI_CAT_ELE } Claves Forneas: { ID_CATEGORIA, TVI_CAT_ELE (CAT_VEHICULOS) } Atributos: ID_CATEGORIA: D_ID_CAT_ELEMENT TVI_CAT_ELE: D_FECHA USO_MOTO: D_BREVE_DESCRIPCION USA_CADENA: D_BOOLEAN

Comportamiento: Ninguno de los campos puede ser nulo y el campo USO_MOTO tiene los siguientes valores por defecto: Comercial, Competicin, Uso espordico, Uso diario.

2.2.1.1.8 Categora de Vehculos (CAT_VEHICULOS) Descripcin: Categora donde se listan los diferentes tipos de vehculo. Motivacin: Acta como filtro. Clave Primaria: { ID_CATEGORIA, TVI_CAT_ELE } Claves Candidatas: { ID_CATEGORIA, TVI_CAT_ELE } Claves Forneas: { ID_CATEGORIA, TVI_CAT_ELE (CAT_ELMNTO_ASGURADO) } Atributos: ID_CATEGORIA: D_ID_CAT_ELEMENT TVI_CAT_ELE: D_FECHA

Comportamiento: Ninguno de los campos puede ser nulo y no tienen un valor por defecto.

2.2.1.1.9 Categora de Vivienda (CAT_VIVIENDA) Descripcin: Categora donde se listan los diferentes tipos de vivienda. Motivacin: Deriva directamente de un tipo de entidad. Clave Primaria: { ID_CATEGORIA, TVI_CAT_ELE } Claves Candidatas: { ID_CATEGORIA, TVI_CAT_ELE } Claves Forneas: { ID_CATEGORIA, TVI_CAT_ELE (CAT_INMUEBLES) } Atributos: ID_CATEGORIA: D_ID_CAT_ELEMENT TVI_CAT_ELE: D_FECHA USO_VIVIENDA: D_BREVE_DESCRIPCION MAS_DE_20_ANOS: D_BOOLEAN

Comportamiento: Ninguno de los campos puede ser nulo y el campo USO_VIVIENDA tiene los siguientes valores por defecto: de alquiler, vacacional, vivienda principal.

2.2.1.1.10 Clientes (CLIENTES) Descripcin: Es la persona fsica que paga la prima de seguros y que percibe un seguro a cambio. Motivacin: Deriva de la unin de Persona y Cliente. Clave Primaria: { ID_CLIENTE } Claves Candidatas: { ID_CLIENTE } Claves Forneas: No. Atributos: ID_CLIENTE: D_ID_CLIENTE TELEFONO: D_TELEFONO DIRECCION: D_DIRECCION

Comportamiento: Ninguno de los campos puede ser nulo y no tienen un valor por defecto.

2.2.1.1.11 Cobertura (COBERTURA) Descripcin: Son las protecciones que otorga la aseguradora en la pliza. Motivacin: Deriva directamente de un tipo de entidad. Clave Primaria: { ID_COBERTURA } Claves Candidatas: { ID_COBERTURA } Claves Forneas: No. Atributos: ID_COBERTURA: D_ID_COBERTURA NOMBRE: D_NOMBRE

Comportamiento: Ninguno de los campos puede ser nulo y no tienen un valor por defecto.

2.2.1.1.12 Cobertura Empresa (COBERTURA_EMPRESA). Descripcin: Son las coberturas ofrecidas por una determinada empresa reaseguradora. Motivacin: Deriva directamente de un tipo de entidad. Clave Primaria: { CIF_EMP_ASGRDRA, ID_COBERTURA, TVI_C } Claves Candidatas: { CIF_EMP_ASGRDRA, ID_COBERTURA, TVI_C } Claves Forneas: { CIF_EMP_ASGRDRA, ID_COBERTURA, TVI_C (EMPRESA_ASEGURADORA, COBERTURA) } Atributos: CIF_EMP_ASGRDRA: D_ID_EMP_ASEGURADORA ID_COBERTURA: D_ID_COBERTURA TVI_C: D_FECHA PRECIO: D_MONTO NOMBRE: D_NOMBRE TVF : D_FECHA

Comportamiento: Slo el campo TVF puede ser nulo y ninguno tiene un valor por defecto.

2.2.1.1.13 Coberturas de Paquete (COBERTURA_PAQUETE). Descripcin: Son las coberturas que posee un determinado paquete. Motivacin: Deriva directamente de un tipo de entidad. Clave Primaria: { ID_COBERTURA, ID_PAQUETE, TVI_PAQUETE } Claves Candidatas: { ID_COBERTURA, ID_PAQUETE, TVI_PAQUETE } Claves Forneas: { ID_COBERTURA, ID_PAQUETE, TVI_PAQUETE (COBERTURA, PAQUETE} Atributos: ID_COBERTURA: D_ID_COBERTURA ID_PAQUETE: D_ID_PAQUETE TVI_PAQUETE: D_FECHA

Comportamiento: Ninguno de los campos puede ser nulo y no tienen un valor por defecto.

2.2.1.1.14 Coberturas de Pliza (COBERTURA_POLIZA) Descripcin: Son las coberturas a mayores que puede tener una pliza Motivacin: Deriva directamente de un tipo de entidad. Clave Primaria: { CIF_EMP_ASGRDRA, ID_COBERTURA, ID_POLIZA, TVI_C } Claves Candidatas: { CIF_EMP_ASGRDRA, ID_COBERTURA, ID_POLIZA, TVI_C } Claves Forneas: { CIF_EMP_ASGRDRA, ID_COBERTURA, ID_POLIZA, TVI_C (COBERTURA_EMPRESA, POLIZA) } Atributos: CIF_EMP_ASGRDRA: D_ID_EMP_ASEGURADORA ID_COBERTURA: D_ID_COBERTURA ID_POLIZA: D_ID_POLIZA TVI_C: D_FECHA

Comportamiento: Ninguno de los campos puede ser nulo y no tienen un valor por defecto.

2.2.1.1.15 Coche (COCHE) Descripcin: Tipo de vehculo asegurable con caractersticas normales. Motivacin: Deriva directamente de un tipo de entidad. Clave Primaria: { ID_ELMNTO_ASGRADO } Claves Candidatas: { ID_ELMNTO_ASGRADO } Claves Forneas: { ID_ELMNTO_ASGRADO (CAT_VEHICULOS) } Atributos: ID_ELMNTO_ASGRADO: D_ID_ELEMENT_ASEGURADO NUMRO_PUERTAS: D_ELEMENTOS COLOR: D_BREVE_DESCRIPCION

Comportamiento: Ninguno de los campos puede ser nulo y no tienen un valor por defecto.

2.2.1.1.16 Elemento Asegurado (ELMNTO_ASGURADO) Descripcin: Es el elemento que se desea asegurar. Motivacin: Deriva directamente de un tipo de entidad. Clave Primaria: { ID_ELMNTO_ASGRADO } Claves Candidatas: { ID_ELMNTO_ASGRADO } Claves Forneas: No. Atributos: ID_ELMNTO_ASGRADO: D_ID_ELEMENT_ASEGURADO

Comportamiento: Ninguno de los campos puede ser nulo y no tienen un valor por defecto.

2.2.1.1.17 Empresa (EMPRESA) Descripcin: Sujeto jurdico que puede realizar contratacin de plizas. Motivacin: Deriva directamente de un tipo de entidad. Clave Primaria: { ID_CLIENTE } Claves Candidatas: { ID_CLIENTE } Claves Forneas: No. Atributos: ID_CLIENTE: D_ID_CLIENTE CIF: D_CIF NOMBRE: D_NOMBRE

Comportamiento: Ninguno de los campos puede ser nulo y no tienen un valor por defecto.

2.2.1.1.18 Empresa Aseguradoras (EMPRESA_ASEGURADORA) Descripcin: Representa las empresas aseguradoras. Son las empresas sobre las que revendemos coberturas. Motivacin: Deriva directamente de un tipo de entidad. Clave Primaria: { CIF_EMP_ASGRDRA } Claves Candidatas: { CIF_EMP_ASGRDRA } Claves Forneas: No. Atributos: CIF_EMP_ASGRDRA: D_CIF NOMBRE: D_NOMBRE DIRECCION: D_DIRECCION TELEFONO: D_TELEFONO

Comportamiento: Ninguno de los campos puede ser nulo y no tienen un valor por defecto.

2.2.1.1.19 Inmuebles (INMUEBLES) Descripcin: Los inmuebles que se aseguran a travs de una pliza. Motivacin: Deriva directamente de un tipo de entidad. Clave Primaria: { ID_ELMNTO_ASGRADO } Claves Candidatas: { ID_ELMNTO_ASGRADO } Claves Forneas: { ID_ELMNTO_ASGRADO (ELMNTO_ASGURADO) } Atributos: ID_ELMNTO_ASGRADO: D_ID_ELEMENT_ASEGURADO METROS_2: D_METRAJE DIRECCION: D_DIRECCION

Comportamiento: Ninguno de los campos puede ser nulo y no tienen un valor por defecto.

2.2.1.1.20 Local (LOCAL) Descripcin: Describe los locales asegurados. Motivacin: Deriva directamente de un tipo de entidad. Clave Primaria: { ID_ELMNTO_ASGRADO } Claves Candidatas: { ID_ELMNTO_ASGRADO } Claves Forneas: { ID_ELMNTO_ASGRADO (INMUEBLES) } Atributos: ID_ELMNTO_ASGRADO: D_ID_ELEMENT_ASEGURADO NMBRE_CMRCIAL: D_NOMBRE

Comportamiento: Ninguno de los campos puede ser nulo y no tienen un valor por defecto.

2.2.1.1.21 Moto (MOTO) Descripcin: Las motos que se aseguran. Motivacin: Deriva directamente de un tipo de entidad. Clave Primaria: { ID_ELMNTO_ASGRADO } Claves Candidatas: { ID_ELMNTO_ASGRADO } Claves Forneas: { ID_ELMNTO_ASGRADO (VEHICULOS) } Atributos: ID_ELMNTO_ASGRADO: D_ID_ELEMENT_ASEGURADO CILINDRADA: D_BREVE_DESCRIPCION

Comportamiento: Ninguno de los campos puede ser nulo y no tienen un valor por defecto.

2.2.1.1.22 Pagos (PAGOS) Descripcin: Es el importe que determina la aseguradora, como contraprestacin o pago, por la proteccin que otorga en los trminos del contrato de seguros pliza. Motivacin: Deriva directamente de un tipo de entidad. Clave Primaria: {ID_PAGO} Claves Candidatas: {ID_PAGO} Claves Forneas: { ID_POLIZA (POLIZA) } Atributos: ID_PAGO: D_ID_PAGO ID_POLIZA: D_ID_POLIZA FECHA_EMISION: D_FECHA FECHA_PAGO: D_FECHA IMPORTE: D_MONTO FORMA_DE_PAGO: D_BREVE_DESCRIPCION

Comportamiento: Ninguno de los campos puede ser nulo y no tienen un valor por defecto.

2.2.1.1.23 Paquete (PAQUETE) Descripcin: Son los paquetes que nos ofrecen las empresas aseguradoras para revender. Motivacin: Deriva directamente de un tipo de entidad. Clave Primaria: { TVI_PAQUETE, ID_PAQUETE } Claves Candidatas: { TVI_PAQUETE, ID_PAQUETE } Claves Forneas: { CIF_EMP_ASGRDRA (EMPRESA_ASEGURADORA) } Atributos: NOMBRE: D_NOMBRE PRECIO: D_MONTO TVF: D_FECHA TVI_PAQUETE: D_FECHA ID_PAQUETE: D_ID_PAQUETE CIF_EMP_ASGRDRA: D_CIF

Comportamiento: Ninguno de los campos puede ser nulo y no tienen un valor por defecto.

2.2.1.1.24 Paquetes de Pliza (PAQUETES_POLIZA) Descripcin: Los paquetes que posee una pliza. Motivacin: Deriva directamente de un tipo de entidad dbil. Clave Primaria:{ ID_POLIZA, ID_PAQUETE, TVI_PAQUETE } Claves Candidatas: { ID_POLIZA, ID_PAQUETE, TVI_PAQUETE } Claves Forneas: { ID_POLIZA (PLIZA) } { ID_PAQUETE (PAQUETE) } { TVI_PAQUETE (PAQUETE) }

Atributos: ID_POLIZA: D_ID_POLIZA ID_PAQUETE: D_ID_PAQUETE

TVI_PAQUETE: D_FECHA

Comportamiento: Ninguno de los campos puede ser nulo y no tienen un valor por defecto.

2.2.1.1.25 Partes (PARTES) Descripcin: Es el acontecimiento o hecho previsto en el contrato, cuyo acaecimiento genera la obligacin de indemnizar al asegurado. Motivacin: Deriva directamente de un tipo de entidad. Clave Primaria: { ID_PARTE } Claves Candidatas: { ID_PARTE } Claves Forneas: { ID_POLIZA (PLIZA) } Atributos: ID_PARTE: D_ID_PARTES ID_POLIZA: D_ID_POLIZA FECHA: D_FECHA DESCRIPCION: D_DESCRIPCION DANOS: D_DESCRIPCION

Comportamiento: Ninguno de los campos puede ser nulo y no tienen un valor por defecto.

2.2.1.1.26 Persona (PERSONA) Descripcin: Sujeto fsico que lleva a cabo la contratacin de una pliza. Motivacin: Deriva directamente de un tipo de entidad. Clave Primaria: { ID_CLIENTE } Claves Candidatas: { ID_CLIENTE, DNI } Claves Forneas: { ID_CLIENTE (CLIENTES) } Atributos: ID_CLIENTE: D_ ID_CLIENTE DNI: D_DNI FECHA_NAC: D_FECHA PRIMR_APELLIDO: D_NOMBRE SEGNDO_APELLIDO: D_NOMBRE NOMBRE: D_NOMBRE

Comportamiento: Ninguno de los campos puede ser nulo y no tienen un valor por defecto.

2.2.1.1.27 Pliza (POLIZA) Descripcin: Es la evidencia escrita y vlida entre el asegurado y la aseguradora. Se le denomina tambin como contrato de seguros. Motivacin: Deriva directamente de un tipo de entidad. Clave Primaria: { ID_POLIZA } Claves Candidatas: { ID_POLIZA } Claves Forneas: { ID_ELMNTO_ASGRADO (ELMNTO_ASGURADO) } { ID_CLIENTE (CLIENTES) } { ID_CATEGORIA (CAT_ELMNTO_ASGURADO) } { TVI_CAT_ELE (CAT_ELMNTO_ASGURADO) }

Atributos: ID_POLIZA: D_ ID_POLIZA ID_ELMNTO_ASGRADO: D_ID_ELMNTO_ASGRADO ID_CLIENTE: D_ ID_CLIENTE FECHA_CONTRATACION: D_FECHA FECHA_FINALIZACION: D_FECHA ID_CATEGORIA: D_ ID_CATEGORIA TVI_CAT_ELE: D_FECHA

Comportamiento: Ninguno de los campos puede ser nulo y no tienen un valor por defecto.

2.2.1.1.28 Vehculo (VEHICULOS) Descripcin: Los vehculos que se aseguran. Motivacin: Deriva directamente de un tipo de entidad. Clave Primaria: { ID_ELMNTO_ASGRADO } Claves Candidatas: { ID_ELMNTO_ASGRADO, MATRICULA } Claves Forneas: { ID_ELMNTO_ASGRADO (ELMNTO_ASGURADO) } Atributos: ID_ELMNTO_ASGRADO: D_ ID_ELMNTO_ASGRADO MATRICULA: D_MATRICULA MARCA: D_BREVE_DESCRIPCION MODELO: D_BREVE_DESCRIPCION

Comportamiento: Ninguno de los campos puede ser nulo y no tienen un valor por defecto.

2.2.1.1.29 Vivienda (VIVIENDA) Descripcin: Viviendas que se aseguran. Motivacin: Deriva directamente de un tipo de entidad. Clave Primaria: { ID_ELMNTO_ASGRADO } Claves Candidatas: { ID_ELMNTO_ASGRADO } Claves Forneas: { ID_ELMNTO_ASGRADO (INMUEBLES) } Atributos: ID_ELMNTO_ASGRADO: D_ID_ELMNTO_ASGRADO POSEE_ASCNSR: D_BOOLEAN HABITACIONES: D_ELEMENTOS ASEOS: D_ELEMENTOS

Comportamiento: Ninguno de los campos puede ser nulo y no tienen un valor por defecto.

Restricciones A travs de la siguiente consulta, podemos obtener los campos ms relevantes de todas las restricciones creadas, las columnas que afecta, la tabla a la que pertenecen, referencias, etc. SELECT a.CONSTRAINT_NAME, CONSTRAINT_TYPE, a.TABLE_NAME, SEARCH_CONDITION, R_CONSTRAINT_NAME, b.COLUMN_NAME user_constraints a JOIN USER_CONS_COLUMNS b a.CONSTRAINT_NAME = b.CONSTRAINT_NAME USER_CONS_COLUMNS c a.R_CONSTRAINT_NAME = c.CONSTRAINT_NAME a.OWNER = 'SEGUROS' a.TABLE_NAME, a.CONSTRAINT_NAME;

FROM ON LEFT JOIN ON WHERE ORDER BY Obteniendo:

CONSTRAINT_NAM E FK_CAMION_INHERI TAN_VEHICULO PK_CAMION SYS_C006579

CONSTRA TABLE_NAM INT_TYPE E R CAMION P C CAMION CAMION

SEARCH_COND ITION

R_CONSTRAIN T_NAME PK_VEHICULOS

SYS_C006580 SYS_C006581 FK_CAT_CAMI_INHE RITAN_CAT_VEHI FK_CAT_CAMI_INHE RITAN_CAT_VEHI FK_CAT_CAMI_INHE RITAN_CAT_VEHI FK_CAT_CAMI_INHE RITAN_CAT_VEHI PK_CAT_CAMION PK_CAT_CAMION SYS_C006593 SYS_C006594

C C R R R R P P C C

CAMION CAMION CAT_CAMIO N CAT_CAMIO N CAT_CAMIO N CAT_CAMIO N CAT_CAMIO N CAT_CAMIO N CAT_CAMIO N CAT_CAMIO N

ID_ELMNTO_A SGRADO IS NOT NULL N_EJES IS NOT NULL TARA IS NOT NULL PK_CAT_VEHIC ULOS PK_CAT_VEHIC ULOS PK_CAT_VEHIC ULOS PK_CAT_VEHIC ULOS

COLUMN_ NAME ID_ELMNTO _ASGRADO ID_ELMNTO _ASGRADO ID_ELMNTO _ASGRADO N_EJES TARA ID_CATEGO RIA TVI_CAT_EL E TVI_CAT_EL E ID_CATEGO RIA ID_CATEGO RIA TVI_CAT_EL E ID_CATEGO RIA TVI_CAT_EL E

ID_CATEGORIA IS NOT NULL TVI_CAT_ELE IS NOT NULL

SYS_C006595

CAT_CAMIO N CAT_COCHE CAT_COCHE CAT_COCHE CAT_COCHE CAT_COCHE CAT_COCHE CAT_COCHE CAT_COCHE CAT_COCHE CAT_COCHE CAT_ELMNT O_ASGURAD O CAT_ELMNT O_ASGURAD O CAT_ELMNT O_ASGURAD O CAT_ELMNT O_ASGURAD O CAT_ELMNT O_ASGURAD O CAT_ELMNT O_ASGURAD O CAT_INMUE BLES CAT_INMUE BLES CAT_INMUE

POSEE_REFRGR CION IS NOT NULL PK_CAT_VEHIC ULOS PK_CAT_VEHIC ULOS PK_CAT_VEHIC ULOS PK_CAT_VEHIC ULOS

POSEE_REF RGRCION TVI_CAT_EL E TVI_CAT_EL E ID_CATEGO RIA ID_CATEGO RIA ID_CATEGO RIA TVI_CAT_EL E ID_CATEGO RIA TVI_CAT_EL E GARAGE_P ROPIO USO_COCH E ID_CATEGO RIA TVI_CAT_EL E

FK_CAT_COCH_INH ERITAN_CAT_VEHI FK_CAT_COCH_INH ERITAN_CAT_VEHI FK_CAT_COCH_INH ERITAN_CAT_VEHI FK_CAT_COCH_INH ERITAN_CAT_VEHI PK_CAT_COCHE PK_CAT_COCHE SYS_C006598 SYS_C006599 SYS_C006600 SYS_C006601 PK_CAT_ELMNTO_A SGURADO PK_CAT_ELMNTO_A SGURADO SYS_C006584

R R R R P P C C C C P

ID_CATEGORIA IS NOT NULL TVI_CAT_ELE IS NOT NULL GARAGE_PROP IO IS NOT NULL USO_COCHE IS NOT NULL

SYS_C006585

PRCNTJE_GNN CIA IS NOT NULL ID_CATEGORIA IS NOT NULL NOMBRE NOT NULL IS

PRCNTJE_G NNCIA ID_CATEGO RIA NOMBRE

SYS_C006586

SYS_C006587

TVI_CAT_ELE IS NOT NULL PK_CAT_ELMN TO_ASGURAD O PK_CAT_ELMN TO_ASGURAD O PK_CAT_ELMN

TVI_CAT_EL E ID_CATEGO RIA TVI_CAT_EL E TVI_CAT_EL

FK_CAT_INMU_INH ERITAN_CAT_ELMN FK_CAT_INMU_INH ERITAN_CAT_ELMN FK_CAT_INMU_INH

ERITAN_CAT_ELMN FK_CAT_INMU_INH ERITAN_CAT_ELMN PK_CAT_INMUEBLE S PK_CAT_INMUEBLE S SYS_C006604 SYS_C006605 FK_CAT_LOCA_INHE RITAN_CAT_INMU FK_CAT_LOCA_INHE RITAN_CAT_INMU FK_CAT_LOCA_INHE RITAN_CAT_INMU FK_CAT_LOCA_INHE RITAN_CAT_INMU PK_CAT_LOCAL_CO MERCIAL PK_CAT_LOCAL_CO MERCIAL SYS_C006608 SYS_C006609 SYS_C006610 SYS_C006611 R

BLES CAT_INMUE BLES CAT_INMUE BLES CAT_INMUE BLES CAT_INMUE BLES CAT_INMUE BLES CAT_LOCAL_ COMERCIAL CAT_LOCAL_ COMERCIAL CAT_LOCAL_ COMERCIAL CAT_LOCAL_ COMERCIAL CAT_LOCAL_ COMERCIAL CAT_LOCAL_ COMERCIAL CAT_LOCAL_ COMERCIAL CAT_LOCAL_ COMERCIAL CAT_LOCAL_ COMERCIAL CAT_LOCAL_ COMERCIAL CAT_MOTO

TO_ASGURAD O PK_CAT_ELMN TO_ASGURAD O

E ID_CATEGO RIA ID_CATEGO RIA TVI_CAT_EL E ID_CATEGO RIA TVI_CAT_EL E ID_CATEGO RIA ID_CATEGO RIA TVI_CAT_EL E TVI_CAT_EL E ID_CATEGO RIA TVI_CAT_EL E ID_CATEGO RIA TVI_CAT_EL E UBICADO_E N_CC POSEE_SLD S_EMERG USO_MOTO

P P C C R R R R P P C C C C

ID_CATEGORIA IS NOT NULL TVI_CAT_ELE IS NOT NULL PK_CAT_INMU EBLES PK_CAT_INMU EBLES PK_CAT_INMU EBLES PK_CAT_INMU EBLES

CKC_USO_MOTO_C AT_MOTO

ID_CATEGORIA IS NOT NULL TVI_CAT_ELE IS NOT NULL UBICADO_EN_ CC IS NOT NULL POSEE_SLDS_E MERG IS NOT NULL USO_MOTO in ('Comercial','Co mpeticion','Uso esporadico','Us o diario') PK_CAT_VEHIC ULOS PK_CAT_VEHIC ULOS PK_CAT_VEHIC ULOS PK_CAT_VEHIC ULOS

FK_CAT_MOTO_INH ERITAN_CAT_VEHI FK_CAT_MOTO_INH ERITAN_CAT_VEHI FK_CAT_MOTO_INH ERITAN_CAT_VEHI FK_CAT_MOTO_INH ERITAN_CAT_VEHI PK_CAT_MOTO

R R R R P

CAT_MOTO CAT_MOTO CAT_MOTO CAT_MOTO CAT_MOTO

TVI_CAT_EL E ID_CATEGO RIA ID_CATEGO RIA TVI_CAT_EL E ID_CATEGO

PK_CAT_MOTO SYS_C006614 SYS_C006615 SYS_C006616 SYS_C006617 FK_CAT_VEHI_INHE RITAN_CAT_ELMN FK_CAT_VEHI_INHE RITAN_CAT_ELMN FK_CAT_VEHI_INHE RITAN_CAT_ELMN FK_CAT_VEHI_INHE RITAN_CAT_ELMN PK_CAT_VEHICULOS PK_CAT_VEHICULOS SYS_C006589 SYS_C006590 CKC_USO_VIVIENDA _CAT_VIVI

P C C C C R

CAT_MOTO CAT_MOTO CAT_MOTO CAT_MOTO CAT_MOTO CAT_VEHICU LOS CAT_VEHICU LOS CAT_VEHICU LOS CAT_VEHICU LOS CAT_VEHICU LOS CAT_VEHICU LOS CAT_VEHICU LOS CAT_VEHICU LOS CAT_VIVIEND A ID_CATEGORIA IS NOT NULL TVI_CAT_ELE IS NOT NULL USO_MOTO IS NOT NULL USA_CADENA IS NOT NULL PK_CAT_ELMN TO_ASGURAD O PK_CAT_ELMN TO_ASGURAD O PK_CAT_ELMN TO_ASGURAD O PK_CAT_ELMN TO_ASGURAD O

RIA TVI_CAT_EL E ID_CATEGO RIA TVI_CAT_EL E USO_MOTO USA_CADE NA TVI_CAT_EL E TVI_CAT_EL E ID_CATEGO RIA ID_CATEGO RIA TVI_CAT_EL E ID_CATEGO RIA ID_CATEGO RIA TVI_CAT_EL E USO_VIVIE NDA

P P C C C

ID_CATEGORIA IS NOT NULL TVI_CAT_ELE IS NOT NULL USO_VIVIENDA in ('de alquiler','vacaci onal','vivienda principal') PK_CAT_INMU EBLES PK_CAT_INMU EBLES PK_CAT_INMU EBLES PK_CAT_INMU EBLES

FK_CAT_VIVI_INHER ITAN_CAT_INMU FK_CAT_VIVI_INHER ITAN_CAT_INMU FK_CAT_VIVI_INHER ITAN_CAT_INMU FK_CAT_VIVI_INHER ITAN_CAT_INMU PK_CAT_VIVIENDA PK_CAT_VIVIENDA

R R R R P P

CAT_VIVIEND A CAT_VIVIEND A CAT_VIVIEND A CAT_VIVIEND A CAT_VIVIEND A CAT_VIVIEND A

TVI_CAT_EL E TVI_CAT_EL E ID_CATEGO RIA ID_CATEGO RIA TVI_CAT_EL E ID_CATEGO RIA

SYS_C006621 SYS_C006622 SYS_C006623 SYS_C006624

C C C C

CAT_VIVIEND A CAT_VIVIEND A CAT_VIVIEND A CAT_VIVIEND A CLIENTES CLIENTES CLIENTES CLIENTES COBERTURA COBERTURA COBERTURA COBERTURA _EMPRESA COBERTURA _EMPRESA COBERTURA _EMPRESA COBERTURA _EMPRESA COBERTURA _EMPRESA COBERTURA _EMPRESA COBERTURA _EMPRESA COBERTURA _EMPRESA COBERTURA _EMPRESA COBERTURA _EMPRESA COBERTURA _PAQUETE

ID_CATEGORIA IS NOT NULL TVI_CAT_ELE IS NOT NULL USO_VIVIENDA IS NOT NULL MAS_DE_20_A NOS IS NOT NULL ID_CLIENTE NOT NULL TELEFONO NOT NULL DIRECCION NOT NULL IS IS IS

ID_CATEGO RIA TVI_CAT_EL E USO_VIVIE NDA MAS_DE_2 0_ANOS ID_CLIENTE ID_CLIENTE TELEFONO DIRECCION ID_COBERT URA ID_COBERT URA NOMBRE PK_COBERTUR A PK_EMPRESA_ ASEGURADOR A ID_COBERT URA CIF_EMP_A SGRDRA TVI_C ID_COBERT URA CIF_EMP_A SGRDRA CIF_EMP_A SGRDRA ID_COBERT URA TVI_C PRECIO NOMBRE PK_COBERTUR A ID_COBERT URA

PK_CLIENTES SYS_C006628 SYS_C006629 SYS_C006630 PK_COBERTURA SYS_C006632 SYS_C006633 FK_COBERTUR_COB _ON_CO_COBERTU R FK_COBERTUR_EMP _ASGRD_EMPRESA_ PK_COBERTURA_EM PRESA PK_COBERTURA_EM PRESA PK_COBERTURA_EM PRESA SYS_C006640

P C C C P C C R

ID_COBERTURA IS NOT NULL NOMBRE IS NOT NULL

P P P C

SYS_C006641 SYS_C006642 SYS_C006643 SYS_C006644 FK_COBERTUR_COB _ON_PK_COBERTUR

C C C C R

CIF_EMP_ASGR DRA IS NOT NULL ID_COBERTURA IS NOT NULL TVI_C IS NOT NULL PRECIO IS NOT NULL NOMBRE IS NOT NULL

FK_COBERTUR_PKG S_ON_C_PAQUETE FK_COBERTUR_PKG S_ON_C_PAQUETE FK_COBERTUR_PKG S_ON_C_PAQUETE FK_COBERTUR_PKG S_ON_C_PAQUETE PK_COBERTURA_PA QUETE PK_COBERTURA_PA QUETE PK_COBERTURA_PA QUETE SYS_C006655 SYS_C006656 SYS_C006657 FK_COBERTUR_COB _EMP_O_COBERTU R FK_COBERTUR_COB _EMP_O_COBERTU R FK_COBERTUR_COB _EMP_O_COBERTU R FK_COBERTUR_COB _EMP_O_COBERTU R FK_COBERTUR_COB _EMP_O_COBERTU R FK_COBERTUR_COB _EMP_O_COBERTU R FK_COBERTUR_COB _EMP_O_COBERTU R FK_COBERTUR_COB _EMP_O_COBERTU R FK_COBERTUR_COB _EMP_O_COBERTU R

R R R R P P P C C C R

COBERTURA _PAQUETE COBERTURA _PAQUETE COBERTURA _PAQUETE COBERTURA _PAQUETE COBERTURA _PAQUETE COBERTURA _PAQUETE COBERTURA _PAQUETE COBERTURA _PAQUETE COBERTURA _PAQUETE COBERTURA _PAQUETE COBERTURA _POLIZA COBERTURA _POLIZA COBERTURA _POLIZA COBERTURA _POLIZA COBERTURA _POLIZA COBERTURA _POLIZA COBERTURA _POLIZA COBERTURA _POLIZA COBERTURA _POLIZA

PK_PAQUETE PK_PAQUETE PK_PAQUETE PK_PAQUETE

ID_COBERTURA IS NOT NULL ID_PAQUETE IS NOT NULL TVI_PAQUETE IS NOT NULL PK_COBERTUR A_EMPRESA PK_COBERTUR A_EMPRESA PK_COBERTUR A_EMPRESA PK_COBERTUR A_EMPRESA PK_COBERTUR A_EMPRESA PK_COBERTUR A_EMPRESA PK_COBERTUR A_EMPRESA PK_COBERTUR A_EMPRESA PK_COBERTUR A_EMPRESA

TVI_PAQUE TE ID_PAQUET E TVI_PAQUE TE ID_PAQUET E TVI_PAQUE TE ID_COBERT URA ID_PAQUET E ID_COBERT URA ID_PAQUET E TVI_PAQUE TE CIF_EMP_A SGRDRA TVI_C

TVI_C

TVI_C

ID_COBERT URA ID_COBERT URA ID_COBERT URA CIF_EMP_A SGRDRA CIF_EMP_A SGRDRA

FK_COBERTUR_POL _ON_CO_POLIZA PK_COBERTURA_PO LIZA PK_COBERTURA_PO LIZA PK_COBERTURA_PO LIZA PK_COBERTURA_PO LIZA SYS_C006672 SYS_C006673

R P P P P C C

COBERTURA _POLIZA COBERTURA _POLIZA COBERTURA _POLIZA COBERTURA _POLIZA COBERTURA _POLIZA COBERTURA _POLIZA COBERTURA _POLIZA COBERTURA _POLIZA COBERTURA _POLIZA COCHE COCHE COCHE

PK_POLIZA

ID_POLIZA ID_POLIZA CIF_EMP_A SGRDRA ID_COBERT URA TVI_C

SYS_C006674 SYS_C006675 FK_COCHE_INHERIT AN_VEHICULO PK_COCHE SYS_C006679

C C R P C

ID_POLIZA IS NOT NULL CIF_EMP_ASGR DRA IS NOT NULL ID_COBERTURA IS NOT NULL TVI_C IS NOT NULL PK_VEHICULOS

ID_POLIZA CIF_EMP_A SGRDRA ID_COBERT URA TVI_C ID_ELMNTO _ASGRADO ID_ELMNTO _ASGRADO ID_ELMNTO _ASGRADO NUMRO_P UERTAS COLOR ID_ELMNTO _ASGRADO ID_ELMNTO _ASGRADO PK_CLIENTES ID_CLIENTE ID_CLIENTE ID_CLIENTE CIF NOMBRE_E MPRESA CIF_EMP_A SGRDRA

SYS_C006680

COCHE

SYS_C006681 PK_ELMNTO_ASGU RADO SYS_C006571

C P C

COCHE ELMNTO_AS GURADO ELMNTO_AS GURADO EMPRESA EMPRESA EMPRESA EMPRESA EMPRESA

ID_ELMNTO_A SGRADO IS NOT NULL NUMRO_PUER TAS IS NOT NULL COLOR IS NOT NULL

ID_ELMNTO_A SGRADO IS NOT NULL

FK_EMPRESA_INHE RITAN_CLIENTES PK_EMPRESA SYS_C006684 SYS_C006685 SYS_C006686

R P C C C

ID_CLIENTE IS NOT NULL CIF IS NOT NULL NOMBRE_EMP RESA IS NOT NULL

PK_EMPRESA_ASEG URADORA

EMPRESA_AS EGURADORA

SYS_C006635

SYS_C006636 SYS_C006637 SYS_C006638 FK_INMUEBLE_INHE RITAN_ELMNTO_A PK_INMUEBLES SYS_C006689

C C C R P C

EMPRESA_AS CIF_EMP_ASGR EGURADORA DRA IS NOT NULL EMPRESA_AS NOMBRE IS EGURADORA NOT NULL EMPRESA_AS DIRECCION IS EGURADORA NOT NULL EMPRESA_AS TELEFONO IS EGURADORA NOT NULL INMUEBLES PK_ELMNTO_A SGURADO INMUEBLES INMUEBLES ID_ELMNTO_A SGRADO IS NOT NULL METROS_2 IS NOT NULL DIRECCION IS NOT NULL PK_INMUEBLE S

CIF_EMP_A SGRDRA NOMBRE DIRECCION TELEFONO ID_ELMNTO _ASGRADO ID_ELMNTO _ASGRADO ID_ELMNTO _ASGRADO METROS_2 DIRECCION ID_ELMNTO _ASGRADO ID_ELMNTO _ASGRADO ID_ELMNTO _ASGRADO NMBRE_CM RCIAL ID_ELMNTO _ASGRADO ID_ELMNTO _ASGRADO ID_ELMNTO _ASGRADO CILINDRAD A FORMA_DE _PAGO

SYS_C006690 SYS_C006691 FK_LOCAL_INHERIT AN_INMUEBLE PK_LOCAL SYS_C006694

C C R P C

INMUEBLES INMUEBLES LOCAL LOCAL LOCAL

SYS_C006695 FK_MOTO_INHERIT AN_VEHICULO PK_MOTO SYS_C006698

C R P C

LOCAL MOTO MOTO MOTO

ID_ELMNTO_A SGRADO IS NOT NULL NMBRE_CMRCI AL IS NOT NULL PK_VEHICULOS

SYS_C006699

MOTO PAGOS

CKC_FORMA_DE_PA C GO_PAGOS

ID_ELMNTO_A SGRADO IS NOT NULL CILINDRADA IS NOT NULL FORMA_DE_PA GO in ('Efectivo','Tarj eta de Credito','Chequ e') PK_POLIZA

FK_PAGOS_POL_ON _PA_POLIZA PK_PAGOS SYS_C006702

R P C

PAGOS PAGOS PAGOS

ID_POLIZA ID_PAGO ID_PAGO

ID_PAGO

IS

SYS_C006703 SYS_C006704 SYS_C006705 SYS_C006706 SYS_C006707

C C C C C

PAGOS PAGOS PAGOS PAGOS PAGOS

NOT NULL ID_POLIZA IS NOT NULL FECHA_EMISIO N IS NOT NULL FECHA_PAGO IS NOT NULL IMPORTE IS NOT NULL FORMA_DE_PA GO IS NOT NULL PK_EMPRESA_ ASEGURADOR A

ID_POLIZA FECHA_EMI SION FECHA_PAG O IMPORTE FORMA_DE _PAGO CIF_EMP_A SGRDRA ID_PAQUET E TVI_PAQUE TE NOMBRE PRECIO TVI_PAQUE TE ID_PAQUET E CIF_EMP_A SGRDRA PK_PAQUETE PK_PAQUETE PK_PAQUETE PK_PAQUETE PK_POLIZA ID_PAQUET E ID_PAQUET E TVI_PAQUE TE TVI_PAQUE TE ID_POLIZA ID_POLIZA ID_PAQUET E TVI_PAQUE TE ID_POLIZA

FK_PAQUETE_EMP_ ASGRD_EMPRESA_ PK_PAQUETE PK_PAQUETE SYS_C006648 SYS_C006649 SYS_C006650 SYS_C006651 SYS_C006652

PAQUETE

P P C C C C C

PAQUETE PAQUETE PAQUETE PAQUETE PAQUETE PAQUETE PAQUETE NOMBRE IS NOT NULL PRECIO IS NOT NULL TVI_PAQUETE IS NOT NULL ID_PAQUETE IS NOT NULL CIF_EMP_ASGR DRA IS NOT NULL

FK_PAQUETES_PKG S_ON_P_PAQUETE FK_PAQUETES_PKG S_ON_P_PAQUETE FK_PAQUETES_PKG S_ON_P_PAQUETE FK_PAQUETES_PKG S_ON_P_PAQUETE FK_PAQUETES_POL_ ON_PA_POLIZA PK_PAQUETES_POLI ZA PK_PAQUETES_POLI ZA PK_PAQUETES_POLI ZA SYS_C006711

R R R R R P P P C

PAQUETES_P OLIZA PAQUETES_P OLIZA PAQUETES_P OLIZA PAQUETES_P OLIZA PAQUETES_P OLIZA PAQUETES_P OLIZA PAQUETES_P OLIZA PAQUETES_P OLIZA PAQUETES_P OLIZA

ID_POLIZA NOT NULL

IS

SYS_C006712 SYS_C006713 FK_PARTES_POL_O N_PA_POLIZA PK_PARTES SYS_C006717 SYS_C006718 SYS_C006719 SYS_C006720 SYS_C006721

C C R P C C C C C

PAQUETES_P OLIZA PAQUETES_P OLIZA PARTES PARTES PARTES PARTES PARTES PARTES PARTES PERSONA PERSONA PERSONA PERSONA PERSONA PERSONA

ID_PAQUETE IS NOT NULL TVI_PAQUETE IS NOT NULL PK_POLIZA

ID_PAQUET E TVI_PAQUE TE ID_POLIZA ID_PARTE ID_PARTE ID_POLIZA FECHA DESCRIPCIO N DANOS

ID_PARTE IS NOT NULL ID_POLIZA IS NOT NULL FECHA IS NOT NULL DESCRIPCION IS NOT NULL DANOS IS NOT NULL PK_CLIENTES

FK_PERSONA_INHER R ITAN_CLIENTES PK_PERSONA P SYS_C006724 C SYS_C006725 SYS_C006726 SYS_C006727 C C C

ID_CLIENTE ID_CLIENTE ID_CLIENTE DNI FECHA_NAC PRIMR_APE LLIDO NOMBRE

SYS_C006728 FK_POLIZA_CAT_EM NTO_CAT_ELMN FK_POLIZA_CAT_EM NTO_CAT_ELMN FK_POLIZA_CAT_EM NTO_CAT_ELMN FK_POLIZA_CAT_EM NTO_CAT_ELMN FK_POLIZA_CLIENTE _O_CLIENTES FK_POLIZA_ELMNT O_AS_ELMNTO_A PK_POLIZA

C R

PERSONA POLIZA

ID_CLIENTE IS NOT NULL DNI IS NOT NULL FECHA_NAC IS NOT NULL PRIMR_APELLI DO IS NOT NULL NOMBRE IS NOT NULL PK_CAT_ELMN TO_ASGURAD O PK_CAT_ELMN TO_ASGURAD O PK_CAT_ELMN TO_ASGURAD O PK_CAT_ELMN TO_ASGURAD O PK_CLIENTES PK_ELMNTO_A SGURADO

TVI_CAT_EL E ID_CATEGO RIA ID_CATEGO RIA TVI_CAT_EL E ID_CLIENTE ID_ELMNTO _ASGRADO ID_POLIZA

POLIZA

POLIZA

POLIZA

R R P

POLIZA POLIZA POLIZA

SYS_C006661 SYS_C006662

C C

POLIZA POLIZA

SYS_C006663 SYS_C006664 SYS_C006665 SYS_C006666

C C C C

POLIZA POLIZA POLIZA POLIZA

SYS_C006667

POLIZA

ID_POLIZA IS NOT NULL ID_ELMNTO_A SGRADO IS NOT NULL ID_CLIENTE IS NOT NULL ID_CATEGORIA IS NOT NULL TVI_CAT_ELE IS NOT NULL FECHA_CONTR ATACION IS NOT NULL FECHA_FINALIZ ACION IS NOT NULL PK_ELMNTO_A SGURADO

ID_POLIZA ID_ELMNTO _ASGRADO ID_CLIENTE ID_CATEGO RIA TVI_CAT_EL E FECHA_CO NTRATACIO N FECHA_FIN ALIZACION ID_ELMNTO _ASGRADO ID_ELMNTO _ASGRADO ID_ELMNTO _ASGRADO MATRICULA MARCA MODELO PK_INMUEBLE S ID_ELMNTO _ASGRADO ID_ELMNTO _ASGRADO ID_ELMNTO _ASGRADO POSEE_ASC NSR HABITACIO NES ASEOS

FK_VEHICULO_INHE RITAN_ELMNTO_A PK_VEHICULOS SYS_C006573

R P C

VEHICULOS VEHICULOS VEHICULOS ID_ELMNTO_A SGRADO IS NOT NULL MATRICULA IS NOT NULL MARCA IS NOT NULL MODELO IS NOT NULL

SYS_C006574 SYS_C006575 SYS_C006576 FK_VIVIENDA_INHE RITAN_INMUEBLE PK_VIVIENDA SYS_C006731

C C C R P C

VEHICULOS VEHICULOS VEHICULOS VIVIENDA VIVIENDA VIVIENDA

SYS_C006732 SYS_C006733 SYS_C006734

C C C

VIVIENDA VIVIENDA VIVIENDA

ID_ELMNTO_A SGRADO IS NOT NULL POSEE_ASCNSR IS NOT NULL HABITACIONES IS NOT NULL ASEOS IS NOT NULL

Tabla 3. Restricciones

Vistas

A continuacin, presentamos las vistas que hemos considerado interesante incluir: Esta Vista, devuelve una lista con todas las filas, de los paquetes de plizas que se encuentran activos

CREATE OR REPLACE FORCE VIEW "VIEW_PAKGS_ACTIVOS" ("PRECIO", "NOMBRE_PKG", "ID_PAQUETE", "TVI_PAQUETE", "TVF", "CIF_EMP_ASGRDRA", "NOMBRE_EMP_ASGRDRA", "ID_COBERTURA", "NOMBRE_COB") AS SELECT PAQUETE.PRECIO as PRECIO, PAQUETE.NOMBRE as NOMBRE_PKG, PAQUETE.ID_PAQUETE as ID_PAQUETE, PAQUETE.TVI_PAQUETE as TVI_PAQUETE, PAQUETE.TVF as TVF, EMPRESA_ASEGURADORA.CIF_EMP_ASGRDRA AS CIF_EMP_ASGRDRA , EMPRESA_ASEGURADORA.NOMBRE AS NOMBRE_EMP_ASGRDRA, COBERTURA.ID_COBERTURA AS ID_COBERTURA, COBERTURA.NOMBRE AS NOMBRE_COB FROM EMPRESA_ASEGURADORA RIGHT JOIN PAQUETE ON EMPRESA_ASEGURADORA.CIF_EMP_ASGRDRA = PAQUETE.CIF_EMP_ASGRDRA LEFT JOIN COBERTURA_PAQUETE ON PAQUETE.ID_PAQUETE = COBERTURA_PAQUETE.ID_PAQUETE AND PAQUETE.TVI_PAQUETE = COBERTURA_PAQUETE.TVI_PAQUETE LEFT JOIN COBERTURA ON COBERTURA_PAQUETE.ID_COBERTURA = COBERTURA.ID_COBERTURA WHERE PAQUETE.TVF IS NULL ORDER BY CIF_EMP_ASGRDRA , ID_PAQUETE

Vista que devuelve los todos los identificadores de pliza, junto con informacin de los pagos de la misma, aspectos como: cunto se ha pagado?, cunto se debe?, cunto ha costado la pliza?, etc. PAGOS.ID_POLIZA, PAGOS."PAGADO POLIZA", (COBERTURAS.PRECIO + PAQUETES.PRECIO) COSTE, (COBERTURAS.PRECIO + PAQUETES.PRECIO - PAGOS."PAGADO POLIZA") DEBE

SELECT

FROM (SELECT POLIZA.ID_POLIZA, NVL(SUM(PAGOS.IMPORTE),0) "PAGADO POLIZA" FROM PAGOS RIGHT JOIN POLIZA ON PAGOS.ID_POLIZA = POLIZA.ID_POLIZA JOIN CLIENTES ON POLIZA.ID_CLIENTE = CLIENTES.ID_CLIENTE GROUP BY POLIZA.ID_POLIZA) PAGOS RIGHT JOIN (SELECT POLIZA.ID_POLIZA, NVL(SUM(PAQUETE.PRECIO),0) PRECIO FROM PAQUETES_POLIZA JOIN PAQUETE ON PAQUETES_POLIZA.ID_PAQUETE = PAQUETE.ID_PAQUETE RIGHT JOIN POLIZA ON POLIZA.ID_POLIZA = PAQUETES_POLIZA.ID_POLIZA GROUP BY POLIZA.ID_POLIZA) PAQUETES ON PAQUETES.ID_POLIZA = PAGOS.ID_POLIZA RIGHT JOIN (SELECT POLIZA.ID_POLIZA, NVL(SUM(COBERTURA_EMPRESA.PRECIO),0) PRECIO FROM POLIZA LEFT JOIN COBERTURA_POLIZA ON POLIZA.ID_POLIZA = COBERTURA_POLIZA.ID_POLIZA LEFT JOIN COBERTURA_EMPRESA ON COBERTURA_EMPRESA.CIF_EMP_ASGRDRA = COBERTURA_POLIZA.CIF_EMP_ASGRDRA AND COBERTURA_EMPRESA.ID_COBERTURA = COBERTURA_POLIZA.ID_COBERTURA AND COBERTURA_EMPRESA.TVI_C = COBERTURA_POLIZA.TVI_C GROUP BY POLIZA.ID_POLIZA) COBERTURAS ON COBERTURAS.ID_POLIZA = PAQUETES.ID_POLIZA

Disparadores

Sern incluidos en la prctica los siguientes triggers (disparadores): Precios: Al ser actualizada una Cobertura_Empresa, relativas a todas las coberturas ofrecidas por las diferentes empresas reaseguradoras, deben modificarse tambin las tablas donde tenemos nuestros precios, guardando los histricos para mantener estadsticas. Categoras de elemento asegurado: debemos actualizar mensualmente a travs de triggers, todo lo referente al catlogo de elementos que contemplamos asegurar en nuestro modelo de negocio. Fechas: si es modificada alguna fecha de contratacin por algn motivo, debemos controlar que la fecha de finalizacin, sea acorde con un ao de cobertura, pues es el tiempo estimado para la gran mayora de las plizas a ofrecer.

2.3 Implementacin en Oracle


Se incluye la implementacin de la base de datos en el gestor de Oracle, teniendo en cuenta las siguientes limitaciones del mismo frente a SQL estndar: No implementa dominios.

Ya fue incorporada una tabla al documento con la referencia de todos los dominios a utilizar, disponible en el punto Modelo Lgico, en el apartado de Dominios. No implementa la clusula referencial ON UPDATE

Esta sentencia es para solucionar problemas de actualizacin en cascada. Oracle no la contempla entre sus opciones, por lo que sera necesario el uso de disparadores. No implementa la accin referencial NO ACTION.

Cuando deseamos borrar alguna entrada de una tabla, cuyos atributos puedan estar referenciados desde otra tabla, nos encontramos con otro problema similar al anterior. En este caso, puede utilizarse ON DELETE CASCADE, que procede al borrado de todas las entradas de otras tablas que tuvieran como clave fornea la de la entrada que deseamos borrar; como alternativa a la restriccin NO ACTION, que no est implementada en Oracle.

No implementa aserciones.

Aunque Oracle no implemente ASSERTION, a continuacin se muestran algunos ejemplos de las aserciones ms importantes pensadas durante la realizacin de la prctica. Con estas aserciones controlamos que no existan Clientes que no sean Personas o Empresas, y que no existan Personas o empresas que no sean a su vez Clientes y Clientes que sean Personas y Empresas a la vez. CREATE ASSERTION PERSONA_EMPRESA CHECK (NOT EXISTS (SELECT * FROM PERSONA WHERE (ID_CLIENTE IN (SELECT ID_CLIENTE FROM EMPRESA)))) CREATE ASSERTION PERSONA_CLIENTES CHECK (NOT EXISTS (SELECT * FROM PERSONA WHERE (ID_CLIENTE NOT IN (SELECT ID_CLIENTE FROM CLIENTES)))) CREATE ASSERTION CLIENTES_TOTAL CHECK (NOT EXISTS (SELECT * FROM CLIENTES WHERE (ID_CLIENTE NOT IN (SELECT ID_CLIENTE FROM PRES)) OR (ID_CLIENTE NOT IN (SELECT ID_CLIENTE FROM EMPRESA)))) CREATE ASSERTION EMPRESA_CLIENTES CHECK (NOT EXISTS (SELECT * FROM EMPRESA WHERE (ID_CLIENTE NOT IN (SELECT ID_CLIENTE FROM CLIENTES))))

Con las siguientes aserciones, validamos que se cumpla la especializacin de la categora de elemento asegurado, para la categora inmuebles y sus respectivas categoras local comercial y vivienda, y para la categora vehculo y sus respectivas categoras motos, camin y coche.

CREATE ASSERTION CAT_LOCAL_TOTAL CHECK (NOT EXISTS (SELECT * FROM CAT_LOCAL_COMERCIAL WHERE (ID_CATEGORIA IN (SELECT ID_CATEGORIA FROM CAT_INMUEBLES)) OR (ID_CATEGORIA IN (SELECT ID_CATEGORIA FROM CAT_ELMNTO_ASGURADO)))) CREATE ASSERTION CAT_VIVIENDA_TOTAL CHECK (NOT EXITS (SELECT * FROM CAT_VIVIENDA WHERE (ID_CATEGORIA IN (SELECT ID_CATEGORIA FROM CAT_INMUEBLES)) OR (ID_CATEGORIA IN (SELECT ID_CATEGORIA FROM CAT_ELMNTO_ASGURADO)))) CREATE ASSERTION CAT_MOTOS_TOTAL CHECK (NOT EXITS (SELECT * FROM CAT_MOTO WHERE (ID_CATEGORIA IN (SELECT ID_CATEGORIA FROM CAT_VEHICULOS OR (ID_CATEGORIA IN (SELECT ID_CATEGORIA FROM CAT_ELMNTO_ASGURADO)))))

CREATE ASSERTION CAT_CAMION_TOTAL CHECK (NO EXITS (SELECT * FROM CAT_CAMION WHERE (ID_CATEGORIA IN (SELECT ID_CATEGORIA FROM CAT_VEHICULOS)) OR (ID_CATEGORIA IN (SELECT ID_CATEGORIA FROM CAT_ELMNTO_ASGURADO)))) CREATE ASSERTION CAT_COCHE_TOTAL CHECK (NO EXITS (SELECT * FROM CAT_COCHE WHERE (ID_CATEGORIA IN (SELECT ID_CATEGORIA FROM CAT_VEHICULOS)) OR (ID_CATEGORIA IN (SELECT ID_CATEGORIA FROM CAT_ELMNTO_ASGURADO))))

Para cumplir con otra especializacin pero que no tiene que ver con la categora, sino con el elemento asegurado en s, se realizaron las siguientes aserciones para que se cumpla por ejemplo, que un coche este en vehculos y elemento asegurado. CREATE ASSERTION LOCAL_TOTAL CHECK (NOT EXISTS (SELECT * FROM LOCAL WHERE (ID_ELMNTO_ASGRADO IN (SELECT ID_ELMNTO_ASGRADO FROM INMUEBLES)) OR (ID_ELMNTO_ASGRADO IN (SELECT ID_ELMNTO_ASGRADO FROM ELMNTO_ASGURADO)))) CREATE ASSERTION VIVIENDA_TOTAL CHECK (NOT EXITS (SELECT * FROM VIVIENDA WHERE (ID_ELMNTO_ASGRADO IN (SELECT ID_ELMNTO_ASGRADO FROM INMUEBLES)) OR (ID_ELMNTO_ASGRADO IN (SELECT ID_ELMNTO_ASGRADO FROM ELMNTO_ASGURADO)))) CREATE ASSERTION MOTOS_TOTAL CHECK (NOT EXITS (SELECT * FROM MOTO WHERE (ID_ELMNTO_ASGRADO IN (SELECT ID_ELMNTO_ASGRADO FROM VEHICULOS OR (ID_ELMNTO_ASGRADO IN (SELECT ID_ELMNTO_ASGRADO FROM ELMNTO_ASGURADO))))) CREATE ASSERTION CAMION_TOTAL CHECK (NO EXITS (SELECT * FROM CAMION WHERE (ID_ELMNTO_ASGRADO IN (SELECT ID_ELMNTO_ASGRADO FROM VEHICULOS)) OR (ID_ELMNTO_ASGRADO IN (SELECT ID_ELMNTO_ASGRADO FROM ELMNTO_ASGURADO)))) CREATE ASSERTION COCHE_TOTAL CHECK (NO EXITS (SELECT * FROM COCHE WHERE (ID_ELMNTO_ASGRADO IN (SELECT ID_ELMNTO_ASGRADO FROM VEHICULOS)) OR (ID_ELMNTO_ASGRADO IN (SELECT ID_ELMNTO_ASGRADO FROM ELMNTO_ASGURADO))))

2.3.1 Sentencias INSERT de SQL

Es importante destacar que estos INSERT, fueron para realizar las primeras pruebas, puede que los datos no coincidan con la carga por SQL *Loader y de esta forma al repetirse las claves primarias, existan conflictos en la carga, pero tambin se debe considerar, que la carga de los datos con los archivos .ctl siempre se hicieron, slo con la estructura de la base de datos, sin ninguna fila. Los ficheros .ctl fueron utilizados la mayora de las veces, pues consideramos que era una manera ms cmoda y ptima de hacer la carga de los datos, pues podamos obtener los registros que fallaron de manera automatizada con los ficheros .bad, .dis y .log. INSERT INTO CAT_ELMNTO_ASGURADO (ID_CATEGORIA,TVI_CAT_ELE,PRCNTJE_GNNCIA,NOMBRE) VALUES (1,(SELECT TO_DATE(TO_CHAR(SYSDATE,'yyyy/mm/dd'),'yyyy/mm/dd') FROM DUAL), 5,'CATEGORIA COCHE 1'); INSERT INTO CAT_ELMNTO_ASGURADO (ID_CATEGORIA,TVI_CAT_ELE,PRCNTJE_GNNCIA,NOMBRE) VALUES (2,(SELECT TO_DATE(TO_CHAR(SYSDATE,'yyyy/mm/dd'),'yyyy/mm/dd') FROM DUAL), 15,'CATEGORIA COCHE 2'); INSERT INTO COBERTURA (ID_COBERTURA,NOMBRE) VALUES (1,'COBERTURA 1'); INSERT INTO COBERTURA (ID_COBERTURA,NOMBRE) VALUES (2,'COBERTURA 2'); INSERT INTO COBERTURA (ID_COBERTURA,NOMBRE) VALUES (3,'COBERTURA 3'); INSERT INTO COBERTURA (ID_COBERTURA,NOMBRE) VALUES (4,'COBERTURA 4'); INSERT INTO EMPRESA_ASEGURADORA (CIF_EMP_ASGRDRA,NOMBRE,DIRECCION,TELEFONO) VALUES ('11111','EMPRESA 1','DIRECCION','331321321'); INSERT INTO EMPRESA_ASEGURADORA (CIF_EMP_ASGRDRA,NOMBRE,DIRECCION,TELEFONO) VALUES ('22222','EMPRESA 2','DIRECCION','331321321'); INSERT INTO COBERTURA_EMPRESA (CIF_EMP_ASGRDRA,ID_COBERTURA,TVI_C,PRECIO,NOMBRE) VALUES ('11111',1,(SELECT TO_DATE(TO_CHAR(SYSDATE,'yyyy/mm/dd'),'yyyy/mm/dd') FROM DUAL),100,'COBERTURA 1 EMPRESA 1'); INSERT INTO COBERTURA_EMPRESA (CIF_EMP_ASGRDRA,ID_COBERTURA,TVI_C,PRECIO,NOMBRE) VALUES ('11111',2,(SELECT TO_DATE(TO_CHAR(SYSDATE,'yyyy/mm/dd'),'yyyy/mm/dd') FROM DUAL),100,'COBERTURA 2 EMPRESA 1');

INSERT INTO COBERTURA_EMPRESA (CIF_EMP_ASGRDRA,ID_COBERTURA,TVI_C,PRECIO,NOMBRE) VALUES ('11111',3,(SELECT TO_DATE(TO_CHAR(SYSDATE,'yyyy/mm/dd'),'yyyy/mm/dd') FROM DUAL),100,'COBERTURA 3 EMPRESA 1'); INSERT INTO COBERTURA_EMPRESA (CIF_EMP_ASGRDRA,ID_COBERTURA,TVI_C,PRECIO,NOMBRE) VALUES ('11111',4,(SELECT TO_DATE(TO_CHAR(SYSDATE,'yyyy/mm/dd'),'yyyy/mm/dd') FROM DUAL),100,'COBERTURA 4 EMPRESA 1'); INSERT INTO COBERTURA_EMPRESA (CIF_EMP_ASGRDRA,ID_COBERTURA,TVI_C,PRECIO,NOMBRE) VALUES ('22222',1,(SELECT TO_DATE(TO_CHAR(SYSDATE,'yyyy/mm/dd'),'yyyy/mm/dd') FROM DUAL),100,'COBERTURA 1 EMPRESA 2'); INSERT INTO COBERTURA_EMPRESA (CIF_EMP_ASGRDRA,ID_COBERTURA,TVI_C,PRECIO,NOMBRE) VALUES ('22222',2,(SELECT TO_DATE(TO_CHAR(SYSDATE,'yyyy/mm/dd'),'yyyy/mm/dd') FROM DUAL),100,'COBERTURA 2 EMPRESA 2'); INSERT INTO COBERTURA_EMPRESA (CIF_EMP_ASGRDRA,ID_COBERTURA,TVI_C,PRECIO,NOMBRE) VALUES ('22222',3,(SELECT TO_DATE(TO_CHAR(SYSDATE,'yyyy/mm/dd'),'yyyy/mm/dd') FROM DUAL),100,'COBERTURA 3 EMPRESA 2');

INSERT INTO PAQUETE (ID_PAQUETE,TVI_PAQUETE,NOMBRE,PRECIO,CIF_EMP_ASGRDRA) VALUES (1,(SELECT TO_DATE(TO_CHAR(SYSDATE,'yyyy/mm/dd'),'yyyy/mm/dd') FROM DUAL),'PAQUETE 1 EMP 1', 200,'11111'); INSERT INTO PAQUETE (ID_PAQUETE,TVI_PAQUETE,NOMBRE,PRECIO,CIF_EMP_ASGRDRA) VALUES (2,(SELECT TO_DATE(TO_CHAR(SYSDATE,'yyyy/mm/dd'),'yyyy/mm/dd') FROM DUAL),'PAQUETE 2 EMP 1', 100,'11111'); INSERT INTO PAQUETE (ID_PAQUETE,TVI_PAQUETE,NOMBRE,PRECIO,CIF_EMP_ASGRDRA) VALUES (3,(SELECT TO_DATE(TO_CHAR(SYSDATE,'yyyy/mm/dd'),'yyyy/mm/dd') FROM DUAL),'PAQUETE 3 EMP 2', 100,'22222'); INSERT INTO COBERTURA_PAQUETE (ID_COBERTURA,ID_PAQUETE,TVI_PAQUETE) VALUES (1,1,(SELECT TVI_PAQUETE FROM PAQUETE WHERE TVF IS NULL AND ID_PAQUETE = 1)); INSERT INTO COBERTURA_PAQUETE (ID_COBERTURA,ID_PAQUETE,TVI_PAQUETE) VALUES (2,1,(SELECT TVI_PAQUETE FROM PAQUETE WHERE TVF IS NULL AND ID_PAQUETE = 1)); INSERT INTO COBERTURA_PAQUETE (ID_COBERTURA,ID_PAQUETE,TVI_PAQUETE) VALUES (1,2,(SELECT TVI_PAQUETE FROM PAQUETE WHERE TVF IS NULL AND ID_PAQUETE = 2));

INSERT INTO COBERTURA_PAQUETE (ID_COBERTURA,ID_PAQUETE,TVI_PAQUETE) VALUES (2,2,(SELECT TVI_PAQUETE FROM PAQUETE WHERE TVF IS NULL AND ID_PAQUETE = 2)); INSERT INTO CLIENTES (ID_CLIENTE,TELEFONO) VALUES (1,'67064682'); INSERT INTO CLIENTES (ID_CLIENTE,TELEFONO) VALUES (2,'67064683'); INSERT INTO EMPRESA (ID_CLIENTE,TELEFONO,CIF,NOMBRE,DIRECCION) VALUES (1,'67064682','D01','SISTEMAS 1','A CORUNA'); INSERT INTO EMPRESA (ID_CLIENTE,TELEFONO,CIF,NOMBRE,DIRECCION) VALUES (2,'67064683','D02','SISTEMAS 2','A CORUNA'); INSERT INTO CLIENTES (ID_CLIENTE,TELEFONO) VALUES (3,'67064684'); INSERT INTO CLIENTES (ID_CLIENTE,TELEFONO) VALUES (4,'67064683'); INSERT INTO PERSONA (ID_CLIENTE,TELEFONO,DNI,FECHA_NAC,PRIMR_APELLIDO,SEGNDO_APELLIDO,DIR_HABITACION, NOMBRE) VALUES (3,'67064684','DNI1',to_date('2003/07/09', 'yyyy/mm/dd'),'GUZMAN','ROMERO','A CORUNA','JOSE'); INSERT INTO PERSONA (ID_CLIENTE,TELEFONO,DNI,FECHA_NAC,PRIMR_APELLIDO,SEGNDO_APELLIDO,DIR_HABITACION, NOMBRE) VALUES (4,'67064683','DNI2',to_date('2003/07/15', 'yyyy/mm/dd'),'GUZMAN','ROMERO','A CORUNA','JESUS');

2.3.2 Ficheros de control de datos de SQL *Loader

Para tener una organizacin adecuada de los ficheros generados para la carga por SQL *Loader, se cre la siguiente estructura de directorios: /cargas /bad_files /discard_files /log_files Dentro de /cargas se guardan todos los ficheros .ctl y los ficheros .bad, .dis y .log en sus respectivas carpetas. Fue creado el archivo carga.bat, para automatizar la carga en el orden y con todas las especificaciones requeridas: sqlldr userid=seguros/admin control=clientes.ctl log=log_files/clientes.log bad=bad_files/clientes.bad discard=discard_files/clientes.dis sqlldr userid=seguros/admin control=persona.ctl log=log_files/persona.log bad=bad_files/persona.bad discard=discard_files/persona.dis sqlldr userid=seguros/admin control=empresa.ctl log=log_files/empresa.log bad=bad_files/empresa.bad discard=discard_files/empresa.dis sqlldr userid=seguros/admin control=cobertura.ctl log=log_files/cobertura.log bad=bad_files/cobertura.bad discard=discard_files/cobertura.dis sqlldr userid=seguros/admin control=empresa_aseguradora.ctl log=log_files/empresa_aseguradora.log bad=bad_files/empresa_aseguradora.bad discard=discard_files/empresa_aseguradora.dis sqlldr userid=seguros/admin control=paquete.ctl log=log_files/paquete.log bad=bad_files/paquete.bad discard=discard_files/paquete.dis sqlldr userid=seguros/admin control=cobertura_empresa.ctl log=log_files/cobertura_empresa.log bad=bad_files/cobertura_empresa.bad discard=discard_files/cobertura_empresa.dis sqlldr userid=seguros/admin control=cobertura_paquete.ctl log=log_files/cobertura_paquete.log

bad=bad_files/cobertura_paquete.bad discard=discard_files/cobertura_paquete.dis sqlldr userid=seguros/admin control=cat_elmnto_asgurado.ctl log=log_files/cat_elmnto_asgurado.log bad=bad_files/cat_elmnto_asgurado.bad discard=discard_files/cat_elmnto_asgurado.dis sqlldr userid=seguros/admin control=cat_vehiculos.ctl log=log_files/cat_vehiculos.log bad=bad_files/cat_vehiculos.bad discard=discard_files/cat_vehiculos.dis sqlldr userid=seguros/admin control=cat_inmuebles.ctl log=log_files/cat_inmuebles.log bad=bad_files/cat_inmuebles.bad discard=discard_files/cat_inmuebles.dis sqlldr userid=seguros/admin control=cat_vivienda.ctl log=log_files/cat_vivienda.log bad=bad_files/cat_vivienda.bad discard=discard_files/cat_vivienda.dis sqlldr userid=seguros/admin control=cat_local_comercial.ctl log=log_files/cat_local_comercial.log bad=bad_files/cat_local_comercial.bad discard=discard_files/cat_local_comercial.dis sqlldr userid=seguros/admin control=cat_moto.ctl log=log_files/cat_moto.log bad=bad_files/cat_moto.bad discard=discard_files/cat_moto.dis sqlldr userid=seguros/admin control=cat_camion.ctl log=log_files/cat_camion.log bad=bad_files/cat_camion.bad discard=discard_files/cat_camion.dis sqlldr userid=seguros/admin control=cat_coche.ctl log=log_files/cat_coche.log bad=bad_files/cat_coche.bad discard=discard_files/cat_coche.dis sqlldr userid=seguros/admin control=elmnto_asgurado.ctl log=log_files/elmnto_asgurado.log bad=bad_files/elmnto_asgurado.bad discard=discard_files/elmnto_asgurado.dis sqlldr userid=seguros/admin control=vehiculos.ctl log=log_files/vehiculos.log bad=bad_files/vehiculos.bad discard=discard_files/vehiculos.dis sqlldr userid=seguros/admin control=inmuebles.ctl log=log_files/inmuebles.log bad=bad_files/inmuebles.bad discard=discard_files/inmuebles.dis sqlldr userid=seguros/admin control=camion.ctl log=log_files/camion.log bad=bad_files/camion.bad discard=discard_files/camion.dis

sqlldr userid=seguros/admin control=moto.ctl log=log_files/moto.log bad=bad_files/moto.bad discard=discard_files/moto.dis sqlldr userid=seguros/admin control=coche.ctl log=log_files/coche.log bad=bad_files/coche.bad discard=discard_files/coche.dis sqlldr userid=seguros/admin control=local.ctl log=log_files/local.log bad=bad_files/local.bad discard=discard_files/local.dis sqlldr userid=seguros/admin control=vivienda.ctl log=log_files/vivienda.log bad=bad_files/vivienda.bad discard=discard_files/vivienda.dis sqlldr userid=seguros/admin control=poliza.ctl log=log_files/poliza.log bad=bad_files/poliza.bad discard=discard_files/poliza.dis sqlldr userid=seguros/admin control=paquete_poliza.ctl log=log_files/paquete_poliza.log bad=bad_files/paquete_poliza.bad discard=discard_files/paquete_poliza.dis sqlldr userid=seguros/admin control=cobertura_poliza.ctl log=log_files/cobertura_poliza.log bad=bad_files/cobertura_poliza.bad discard=discard_files/cobertura_poliza.dis sqlldr userid=seguros/admin control=partes.ctl log=log_files/partes.log bad=bad_files/partes.bad discard=discard_files/partes.dis sqlldr userid=seguros/admin control=pagos.ctl log=log_files/pagos.log bad=bad_files/pagos.bad discard=discard_files/pagos.dis 2.3.2.1 camion.ctl LOAD DATA INFILE * APPEND INTO TABLE camion FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (N_EJES, TARA, ID_ELMNTO_ASGRADO) BEGINDATA "4","85","1" "2","68","2" "4","75","3" "2","93","4" "4","59","5"

2.3.2.2 cat_camion.ctl LOAD DATA INFILE * APPEND INTO TABLE cat_camion FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (TVI_CAT_ELE, POSEE_REFRGRCION, ID_CATEGORIA) BEGINDATA "12/02/2009","1","9" 2.3.2.3 cat_coche.ctl LOAD DATA INFILE * APPEND INTO TABLE cat_coche FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (TVI_CAT_ELE, GARAGE_PROPIO, USO_COCHE, ID_CATEGORIA) BEGINDATA "02/01/2008","1","PARTICULAR","12" "12/02/2009","0","TAXI","13" 2.3.2.4 cat_elmnto_asgurado.ctl LOAD DATA INFILE * APPEND INTO TABLE cat_elmnto_asgurado FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (TVI_CAT_ELE, PRCNTJE_GNNCIA, NOMBRE, TVF, ID_CATEGORIA) BEGINDATA "12/02/2009","20","LOCAL CENTRO COMERCIAL SI SALIDAS DE EMERGENCIA","","1" "23/01/2009","30","LOCAL URBANO SI SALIDAS DE EMERGENCIA","","2" "26/02/2009","15","LOCAL CENTRO COMERCIAL NO SALIDAS DE EMERGENCIA","","3" "02/01/2008","10","LOCAL URBANO NO SALIDAS DE EMERGENCIA","","4" "12/02/2009","5","VIVIENDA PRINCIPAL NUEVA","","5" "23/01/2009","25","VIVIENDA SECUNDARIA NUEVA","","6" "26/02/2009","18","VIVIENDA PRINCIPAL VIEJA","","7" "02/01/2008","10","VIVIENDA SECUNDARIA VIEJA","","8" "12/02/2009","12","TRANSPORTE COMIDA","","9" "23/01/2009","40","CHOPER","","10" "26/02/2009","25","SUPERBIKE","","11" "02/01/2008","20","USO URBANO","","12" "12/02/2009","30","USO COMERCIAL","","13"

2.3.2.5 cat_inmuebles.ctl LOAD DATA INFILE * APPEND INTO TABLE CAT_INMUEBLES FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (TVI_CAT_ELE, ID_CATEGORIA) BEGINDATA "12/02/2009","1" "23/01/2009","2" "26/02/2009","3" "02/01/2008","4" "12/02/2009","5" "23/01/2009","6" "26/02/2009","7" "02/01/2008","8" 2.3.2.6 cat_local_comercial.ctl LOAD DATA INFILE * APPEND INTO TABLE cat_local_comercial FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (TVI_CAT_ELE, UBICADO_EN_CC, POSEE_SLDS_EMERG, ID_CATEGORIA) BEGINDATA "12/02/2009","1","0","1" "23/01/2009","0","1","2" "26/02/2009","1","0","3" "02/01/2008","0","1","4" 2.3.2.7 cat_moto.ctl LOAD DATA INFILE * APPEND INTO TABLE cat_moto FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (TVI_CAT_ELE, USO_MOTO, USA_CADENA, ID_CATEGORIA) BEGINDATA "23/01/2009","Uso diario","1","10" "26/02/2009","Uso esporadico","0","11"

2.3.2.8 cat_vehiculos.ctl LOAD DATA INFILE * APPEND INTO TABLE cat_vehiculos FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (TVI_CAT_ELE, ID_CATEGORIA) BEGINDATA "12/02/2009","9" "23/01/2009","10" "26/02/2009","11" "02/01/2008","12" "12/02/2009","13" 2.3.2.9 cat_vivienda.ctl LOAD DATA INFILE * APPEND INTO TABLE cat_vivienda FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (TVI_CAT_ELE, USO_VIVIENDA, MAS_DE_20_ANOS, ID_CATEGORIA) BEGINDATA "12/02/2009","vivienda principal","1","5" "23/01/2009","de alquiler","0","6" "26/02/2009","vivienda principal","1","7" "02/01/2008","vacacional","0","8" 2.3.2.10 clientes.ctl LOAD DATA INFILE * APPEND INTO TABLE clientes FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (TELEFONO, DIRECCION, ID_CLIENTE) BEGINDATA "664537289","A CORUA","1" "622176276","BARCELONA","2" "618736636","MADRID","3" "644134131","BILBAO","4"

2.3.2.11 cobertura.ctl LOAD DATA INFILE * APPEND INTO TABLE cobertura FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (NOMBRE, ID_COBERTURA) BEGINDATA "Responsabilidad Civil Obligatoria","1" "Responsabilidad Civil Voluntaria","2" "Seguro de Accidentes del conductor por 10000","3" "Seguro de Accidentes acompaantes por 5000","4" "Defensa Jurdica y Reclamacin de Daos","5" "Ampliacin del conductor a 30.000 o 60.000","6" "Asistencia en viaje Standard","7" "Asistencia en viaje VIP","8" "Coche de sustitucion","9" "Multas y Carnet VIP","10" "Lunas","11" "Incendio","12" "Robo","13" "Daos Propios","14" "Daos Materiales","15" "Asistencia Camion","16" "Acontecimiento extraordinarios daos personales","17" "Acontecimiento extraordinarios daos materiales","18" 2.3.2.12 cobertura_empresa.ctl LOAD DATA INFILE * APPEND INTO TABLE cobertura_empresa FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' (CIF_EMP_ASGRDRA, ID_COBERTURA, TVI_C, PRECIO,NOMBRE,TVF) BEGINDATA "2","1","10/10/2010","235","Responsabilidad Civil imposicion","" "2","2","10/10/2010","200","Responsabilidad Civil ","" "2","3","10/10/2010","230","Seguro conductor por 10000","" "2","4","10/10/2010","285","Seguro acompaantes por 5000","" "2","5","10/10/2010","265","Defensa Jurdica y Reclamacines","" "2","6","10/10/2010","210","Ampliacin a 30.000 o 60.000","" "2","7","10/10/2010","100","Responsabilidad Civil imposicion","" "2","8","10/10/2010","200","Responsabilidad Civil ","" "2","11","10/10/2010","65","Defensa Jurdica y Reclamacines","" "2","12","10/10/2010","210","Ampliacin a 30.000 o 60.000","" "2","13","10/10/2010","25","Responsabilidad Civil imposicion","" "2","14","10/10/2010","20","Responsabilidad Civil ","" "2","15","10/10/2010","30","Seguro conductor por 10000","" "2","16","10/10/2010","85","Seguro acompaantes por 5000","" "2","17","10/10/2010","65","Defensa Jurdica y Reclamacines","" "2","18","10/10/2010","10","Ampliacin a 30.000 o 60.000",""

"4","1","10/10/2010","255","Responsabilidad Civil imposicion","" "4","2","10/10/2010","180","Responsabilidad Civil ","" "4","3","10/10/2010","220","Seguro conductor por 10000","" "4","4","10/10/2010","255","Seguro acompaantes por 5000","" "4","5","10/10/2010","285","Defensa Jurdica y Reclamacines","" "4","6","10/10/2010","220","Ampliacin a 30.000 o 60.000","" "4","7","10/10/2010","120","Responsabilidad Civil imposicion","" "4","8","10/10/2010","190","Responsabilidad Civil ","" "4","11","10/10/2010","75","Defensa Jurdica y Reclamacines","" "4","12","10/10/2010","200","Ampliacin a 30.000 o 60.000","" "4","13","10/10/2010","15","Responsabilidad Civil imposicion","" "4","14","10/10/2010","10","Responsabilidad Civil ","" "4","15","10/10/2010","20","Seguro conductor por 10000","" "4","16","10/10/2010","95","Seguro acompaantes por 5000","" "4","17","10/10/2010","65","Defensa Jurdica y Reclamacines","" "4","18","10/10/2010","10","Ampliacin a 30.000 o 60.000","" "6","1","10/10/2010","255","Responsabilidad Civil imposicion","" "6","2","10/10/2010","190","Responsabilidad Civil ","" "6","3","10/10/2010","210","Seguro conductor por 10000","" "6","4","10/10/2010","245","Seguro acompaantes por 5000","" "6","5","10/10/2010","255","Defensa Jurdica y Reclamacines","" "6","6","10/10/2010","200","Ampliacin a 30.000 o 60.000","" "6","7","10/10/2010","150","Responsabilidad Civil imposicion","" "6","8","10/10/2010","195","Responsabilidad Civil ","" "6","9","10/10/2010","160","Seguro conductor por 10000","" "6","10","10/10/2010","45","Seguro acompaantes por 5000","" "6","11","10/10/2010","25","Defensa Jurdica y Reclamacines","" "6","12","10/10/2010","180","Ampliacin a 30.000 o 60.000","" "6","13","10/10/2010","35","Responsabilidad Civil imposicion","" "6","14","10/10/2010","20","Responsabilidad Civil ","" "6","15","10/10/2010","50","Seguro conductor por 10000","" "6","16","10/10/2010","65","Seguro acompaantes por 5000","" "6","17","10/10/2010","35","Defensa Jurdica y Reclamacines","" "6","18","10/10/2010","20","Ampliacin a 30.000 o 60.000",""

2.3.2.13 cobertura_paquete.ctl LOAD DATA INFILE * APPEND INTO TABLE cobertura_paquete FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' (ID_COBERTURA, ID_PAQUETE, TVI_PAQUETE) BEGINDATA "18","1","12/10/2010" "15","1","12/10/2010" "12","1","12/10/2010" "5","1","12/10/2010" "13","1","12/10/2010" "12","2","12/10/2010" "13","2","12/10/2010" "13","3","12/10/2010" "5","3","12/10/2010" "2","4","12/10/2010" "4","4","12/10/2010" "5","4","12/10/2010" "6","4","12/10/2010" "8","5","12/10/2010" "9","3","12/10/2010" "10","3","12/10/2010" 2.3.2.14 cobertura_poliza.ctl LOAD DATA INFILE * APPEND INTO TABLE cobertura_poliza FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' (ID_POLIZA, ID_COBERTURA,TVI_C,CIF_EMP_ASGRDRA) BEGINDATA "3","1","10/10/2010","4" "4","12","10/10/2010","6" "5","1","10/10/2010","6" "5","12","10/10/2010","6" 2.3.2.15 coche.ctl LOAD DATA INFILE * APPEND INTO TABLE coche FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (NUMRO_PUERTAS, COLOR, ID_ELMNTO_ASGRADO) BEGINDATA "5","VERDE","11" "3","AMARILLO","12" "5","AZUL","13" "5","ROJO","14" "2","AMARILLO","15"

2.3.2.16 elmnto_asgurado.ctl LOAD DATA INFILE * APPEND INTO TABLE elmnto_asgurado FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (ID_ELMNTO_ASGRADO) BEGINDATA "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" 2.3.2.17 empresa.ctl LOAD DATA INFILE * APPEND INTO TABLE empresa FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' (ID_CLIENTE, CIF, NOMBRE_EMPRESA) BEGINDATA "2","B36651313","VEGALSA" "4","B65424452","TECNOCOM"

2.3.2.18 empresa_aseguradora.ctl LOAD DATA INFILE * APPEND INTO TABLE empresa_aseguradora FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' (CIF_EMP_ASGRDRA, NOMBRE, DIRECCION,TELEFONO) BEGINDATA "2","NUEVO MUNDOS","A Corua, calle ponte, nmero 4, 2B","670646875" "4","CAPITAL","Valencia, calle la extremea, nmero 45, 1B","670646524" "6","GALESEG","Vigo, calle barboza, numero 23, 4A","670646754" 2.3.2.19 inmuebles.ctl LOAD DATA INFILE * APPEND INTO TABLE inmuebles FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (METROS_2, DIRECCION, ID_ELMNTO_ASGRADO) BEGINDATA "120","A Corua, calle ponte, nmero 4, 2B","16" "200","Valencia, calle la extremea, nmero 45, 1B","17" "89","Vigo, calle barboza, numero 23, 4A","18" "70","Madrid, calle santa cruz, numero 24, 2A","19" "105","Bilbao, calle otxandategui, numero 8, 2A","20" "340","A Corua, calle real, numero 74","21" "1200","Barcelona, calle las ramblas, numero 69","22" "800","Santander, calle alonso, numero 5","23" "280","Sevilla, calle te quiero illa maravilla, numero 2","24" "4000","Tenerife, calle el mani es asi, numero 14","25" 2.3.2.20 local.ctl LOAD DATA INFILE * APPEND INTO TABLE local FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (NMBRE_CMRCIAL, ID_ELMNTO_ASGRADO) BEGINDATA "ALMACENES DON REGALON","21" "DISCO PUB TODO ALL","22" "ZARA MEN","23" "CAFETERIA LOS HERMANOS COCO","24" "3 BICHOS CAYENDO","25"

2.3.2.21 moto.ctl LOAD DATA INFILE * APPEND INTO TABLE moto FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (CILINDRADA, ID_ELMNTO_ASGRADO) BEGINDATA "600","6" "900","7" "1100","8" "400","9" "750","10" 2.3.2.22 pagos.ctl LOAD DATA INFILE * APPEND INTO TABLE pagos FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (ID_POLIZA, FECHA_EMISION, FECHA_PAGO, IMPORTE, FORMA_DE_PAGO, ID_PAGO) BEGINDATA "1", "23/09/2009", "23/09/2009", "100", "Efectivo","1" "2", "12/11/2009", "12/11/2009", "100", "Cheque","2" "3", "23/09/2009", "23/09/2009", "100", "Tarjeta de Credito","3" "4", "27/12/2009", "27/12/2009", "100", "Efectivo","4" "1", "10/09/2009", "10/09/2009", "60", "Efectivo","5" "2", "11/11/2009", "11/11/2009", "170", "Tarjeta de Credito","6" "3", "30/12/2009", "30/12/2009", "240", "Efectivo","7" "4", "04/09/2009", "04/09/2009", "30", "Cheque","8" "1", "12/08/2009", "12/08/2009", "30", "Tarjeta de Credito","9" "2", "10/09/2009", "10/09/2009", "10", "Efectivo","10" "3", "16/08/2009", "16/08/2009", "40", "Efectivo","11" "4", "23/09/2009", "23/09/2009", "50", "Tarjeta de Credito","12" 2.3.2.23 paquete.ctl LOAD DATA INFILE * APPEND INTO TABLE paquete FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (TVI_PAQUETE, NOMBRE, PRECIO, TVF, CIF_EMP_ASGRDRA, ID_PAQUETE) BEGINDATA "12/10/2010","VIVIENDA TOTAL","200","","2","1" "12/10/2010","VIVIENDA BASICO","300","","2","2" "12/10/2010","LOCAL BASICO","500","","4","3" "12/10/2010","VALENTINO BASICO","285","","6","4" "12/10/2010","LORENZO CHUPACHU","200","","6","5"

2.3.2.24 paquetes_poliza.ctl LOAD DATA INFILE * APPEND INTO TABLE PAQUETES_POLIZA FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' (ID_POLIZA, ID_PAQUETE, TVI_PAQUETE) BEGINDATA "1","1","12/10/2010" "1","2","12/10/2010" "2","2","12/10/2010" "3","3","12/10/2010" "3","4","12/10/2010" "4","1","12/10/2010" 2.3.2.25 partes.ctl LOAD DATA INFILE * APPEND INTO TABLE partes FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (ID_POLIZA, FECHA, DESCRIPCION, DANOS, ID_PARTE ) BEGINDATA "1", "10/04/2010", "CHOQUE FRONTAL EN LA AVENIDA ARTEIXO CON OTRO COCHE", "PERDIDA TOTAL","1" "1", "20/05/2010", "INCENDIO EN PISO POR FUGA DE GAS COMUNITARIO", "SE QUEMARON DOS HABITACIONES COMPLETAS","2" "3", "01/01/2010", "CAIDA DE MOTOCICLETA EN UNA CURVA", "DAOS EN LA CHAPA Y ENCADENADO","3" "4", "17/03/2010", "ROBO A LOCAL COMERCIAL", "PERDIDA DE TODA LA MERCANCIA","4" 2.3.2.26 persona.ctl LOAD DATA INFILE * APPEND INTO TABLE persona FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' (ID_CLIENTE, DNI, FECHA_NAC, PRIMR_APELLIDO, SEGNDO_APELLIDO, NOMBRE) BEGINDATA "1","47654998","10/10/1982","RIVERO","GONZALEZ","GUILLERMO" "3","45637829","12/03/1984","PAOLINI","DIEZ","ALFONSO"

2.3.2.27 poliza.ctl LOAD DATA INFILE * APPEND INTO TABLE poliza FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (FECHA_FINALIZACION, FECHA_CONTRATACION, TVI_CAT_ELE, ID_CATEGORIA, ID_CLIENTE, ID_ELMNTO_ASGRADO, ID_POLIZA) BEGINDATA "23/11/2011","23/11/2010","12/02/2009","9","1","1","1" "12/11/2011","12/11/2010","23/01/2009","10","2","2","2" "23/11/2011","23/11/2010","26/02/2009","11","3","3","3" "27/12/2011","27/12/2010","02/01/2008","12","4","4","4" "23/03/2010","23/03/2009","26/02/2009","3","1","21","5" "01/01/2010","01/01/2009","02/01/2008","12","4","12","6" "01/01/2009","01/01/2008","02/01/2008","12","4","12","7" "01/01/2008","01/01/2007","02/01/2008","12","4","12","8" "15/06/2010","15/06/2009","26/02/2009","3","1","21","9" "15/04/2011","15/04/2010","26/02/2009","3","1","21","10" 2.3.2.28 vehiculos.ctl LOAD DATA INFILE * APPEND INTO TABLE vehiculos FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (MATRICULA, MARCA, MODELO, ID_ELMNTO_ASGRADO) BEGINDATA "6754TYH","MACK","ff7500","1" "8723FGG","RENAULT","i8000","2" "3453JCB","VOLVO","x6000","3" "2432CVB","IVECO","V7500","4" "5343MNB","FIAT","JJ700","5" "2211ZXC","YAMAHA","R6","6" "4542POI","HONDA","900RR","7" "9984DDE","HARLEY","FAT BOY","8" "8552LSU","SUZUKI","CROSS400","9" "2961QWE","BMW","750XR","10" "8632CUE","HONDA","CIVIC","11" "2212HSW","RENAULT","TWINGO","12" "1134SDA","JAGUAR","XXR200","13" "3364GXD","SEAT","IBIZA","14" "4242JSQ","LAMBORGINI","GALLARDO","15"

2.3.2.29 vivienda.ctl LOAD DATA INFILE * APPEND INTO TABLE vivienda FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (POSEE_ASCNSR, HABITACIONES, ASEOS, ID_ELMNTO_ASGRADO) BEGINDATA "1","3","2","16" "0","2","2","17" "1","3","2","18" "0","1","1","19" "1","2","1","20"

2.3.3 Sentencias SQL para la creacin de las tablas

El siguiente es el cdigo para la creacin de las tablas junto con sus claves primarias, restricciones y claves forneas. 2.3.3.1 ELMNTO_ASGURADO /*==============================================================*/ /* Table: ELMNTO_ASGURADO */ /*==============================================================*/ create table ELMNTO_ASGURADO ( ID_ELMNTO_ASGRADO NUMBER(10) not null, constraint PK_ELMNTO_ASGURADO primary key (ID_ELMNTO_ASGRADO) ); 2.3.3.2 VEHICULOS /*==============================================================*/ /* Table: VEHICULOS */ /*==============================================================*/ create table VEHICULOS ( ID_ELMNTO_ASGRADO NUMBER(10) not null, MATRICULA VARCHAR2(7) not null, MARCA VARCHAR2(30) not null, MODELO VARCHAR2(30) not null, constraint PK_VEHICULOS primary key (ID_ELMNTO_ASGRADO), constraint FK_VEHICULO_INHERITAN_ELMNTO_A foreign key (ID_ELMNTO_ASGRADO) references ELMNTO_ASGURADO (ID_ELMNTO_ASGRADO) );

2.3.3.3 CAMION /*==============================================================*/ /* Table: CAMION */ /*==============================================================*/ create table CAMION ( ID_ELMNTO_ASGRADO NUMBER(10) not null, N_EJES NUMBER(2) not null, TARA NUMBER(2) not null, constraint PK_CAMION primary key (ID_ELMNTO_ASGRADO), constraint FK_CAMION_INHERITAN_VEHICULO foreign key (ID_ELMNTO_ASGRADO) references VEHICULOS (ID_ELMNTO_ASGRADO) ); 2.3.3.4 CAT_ELMNTO_ASGURADO /*==============================================================*/ /* Table: CAT_ELMNTO_ASGURADO */ /*==============================================================*/ create table CAT_ELMNTO_ASGURADO ( PRCNTJE_GNNCIA NUMBER(4,2) not null, ID_CATEGORIA NUMBER(6) not null, NOMBRE VARCHAR2(50) not null, TVF DATE, TVI_CAT_ELE DATE not null, constraint PK_CAT_ELMNTO_ASGURADO primary key (ID_CATEGORIA, TVI_CAT_ELE) ); 2.3.3.5 CAT_VEHICULOS /*==============================================================*/ /* Table: CAT_VEHICULOS */ /*==============================================================*/ create table CAT_VEHICULOS ( ID_CATEGORIA NUMBER(6) not null, TVI_CAT_ELE DATE not null, constraint PK_CAT_VEHICULOS primary key (ID_CATEGORIA, TVI_CAT_ELE), constraint FK_CAT_VEHI_INHERITAN_CAT_ELMN foreign key (ID_CATEGORIA, TVI_CAT_ELE) references CAT_ELMNTO_ASGURADO (ID_CATEGORIA, TVI_CAT_ELE) );

2.3.3.6 CAT_CAMION /*==============================================================*/ /* Table: CAT_CAMION */ /*==============================================================*/ create table CAT_CAMION ( ID_CATEGORIA NUMBER(6) not null, TVI_CAT_ELE DATE not null, POSEE_REFRGRCION SMALLINT not null, constraint PK_CAT_CAMION primary key (ID_CATEGORIA, TVI_CAT_ELE), constraint FK_CAT_CAMI_INHERITAN_CAT_VEHI foreign key (ID_CATEGORIA, TVI_CAT_ELE) references CAT_VEHICULOS (ID_CATEGORIA, TVI_CAT_ELE) ); 2.3.3.7 CAT_COCHE /*==============================================================*/ /* Table: CAT_COCHE */ /*==============================================================*/ create table CAT_COCHE ( ID_CATEGORIA NUMBER(6) not null, TVI_CAT_ELE DATE not null, GARAGE_PROPIO SMALLINT not null, USO_COCHE VARCHAR2(50) not null, constraint PK_CAT_COCHE primary key (ID_CATEGORIA, TVI_CAT_ELE), constraint FK_CAT_COCH_INHERITAN_CAT_VEHI foreign key (ID_CATEGORIA, TVI_CAT_ELE) references CAT_VEHICULOS (ID_CATEGORIA, TVI_CAT_ELE) ); 2.3.3.8 CAT_INMUEBLES /*==============================================================*/ /* Table: CAT_INMUEBLES */ /*==============================================================*/ create table CAT_INMUEBLES ( ID_CATEGORIA NUMBER(6) not null, TVI_CAT_ELE DATE not null, constraint PK_CAT_INMUEBLES primary key (ID_CATEGORIA, TVI_CAT_ELE), constraint FK_CAT_INMU_INHERITAN_CAT_ELMN foreign key (ID_CATEGORIA, TVI_CAT_ELE) references CAT_ELMNTO_ASGURADO (ID_CATEGORIA, TVI_CAT_ELE) );

2.3.3.9 CAT_LOCAL_COMERCIAL /*==============================================================*/ /* Table: CAT_LOCAL_COMERCIAL */ /*==============================================================*/ create table CAT_LOCAL_COMERCIAL ( ID_CATEGORIA NUMBER(6) not null, TVI_CAT_ELE DATE not null, UBICADO_EN_CC SMALLINT not null, POSEE_SLDS_EMERG SMALLINT not null, constraint PK_CAT_LOCAL_COMERCIAL primary key (ID_CATEGORIA, TVI_CAT_ELE), constraint FK_CAT_LOCA_INHERITAN_CAT_INMU foreign key (ID_CATEGORIA, TVI_CAT_ELE) references CAT_INMUEBLES (ID_CATEGORIA, TVI_CAT_ELE) ); 2.3.3.10 CAT_MOTO /*==============================================================*/ /* Table: CAT_MOTO */ /*==============================================================*/ create table CAT_MOTO ( ID_CATEGORIA NUMBER(6) not null, TVI_CAT_ELE DATE not null, USO_MOTO VARCHAR2(50) not null constraint CKC_USO_MOTO_CAT_MOTO check (USO_MOTO in ('Comercial','Competicion','Uso esporadico','Uso diario')), USA_CADENA SMALLINT not null, constraint PK_CAT_MOTO primary key (ID_CATEGORIA, TVI_CAT_ELE), constraint FK_CAT_MOTO_INHERITAN_CAT_VEHI foreign key (ID_CATEGORIA, TVI_CAT_ELE) references CAT_VEHICULOS (ID_CATEGORIA, TVI_CAT_ELE) ); 2.3.3.11 CAT_VIVIENDA /*==============================================================*/ /* Table: CAT_VIVIENDA */ /*==============================================================*/ create table CAT_VIVIENDA ( ID_CATEGORIA NUMBER(6) not null, TVI_CAT_ELE DATE not null, USO_VIVIENDA VARCHAR2(50) not null constraint CKC_USO_VIVIENDA_CAT_VIVI check (USO_VIVIENDA in ('de alquiler','vacacional','vivienda principal')), MAS_DE_20_ANOS SMALLINT not null, constraint PK_CAT_VIVIENDA primary key (ID_CATEGORIA, TVI_CAT_ELE), constraint FK_CAT_VIVI_INHERITAN_CAT_INMU foreign key (ID_CATEGORIA, TVI_CAT_ELE) references CAT_INMUEBLES (ID_CATEGORIA, TVI_CAT_ELE) );

2.3.3.12 CLIENTES /*==============================================================*/ /* Table: CLIENTES */ /*==============================================================*/ create table CLIENTES ( ID_CLIENTE NUMBER(6) not null, TELEFONO VARCHAR2(14) not null, DIRECCION VARCHAR2(100) not null, constraint PK_CLIENTES primary key (ID_CLIENTE) ); 2.3.3.13 COBERTURA /*==============================================================*/ /* Table: COBERTURA */ /*==============================================================*/ create table COBERTURA ( ID_COBERTURA NUMBER(10) not null, NOMBRE VARCHAR2(50) not null, constraint PK_COBERTURA primary key (ID_COBERTURA) ); 2.3.3.14 EMPRESA_ASEGURADORA /*==============================================================*/ /* Table: EMPRESA_ASEGURADORA */ /*==============================================================*/ create table EMPRESA_ASEGURADORA ( CIF_EMP_ASGRDRA VARCHAR2(10) not null, NOMBRE VARCHAR2(50) not null, DIRECCION VARCHAR2(100) not null, TELEFONO VARCHAR2(14) not null, constraint PK_EMPRESA_ASEGURADORA primary key (CIF_EMP_ASGRDRA) );

2.3.3.15 COBERTURA_EMPRESA /*==============================================================*/ /* Table: COBERTURA_EMPRESA */ /*==============================================================*/ create table COBERTURA_EMPRESA ( CIF_EMP_ASGRDRA VARCHAR2(10) not null, ID_COBERTURA NUMBER(10) not null, TVI_C DATE not null, PRECIO NUMBER(8,2) not null, NOMBRE VARCHAR2(50) not null, TVF DATE, constraint PK_COBERTURA_EMPRESA primary key (CIF_EMP_ASGRDRA, ID_COBERTURA, TVI_C), constraint FK_COBERTUR_EMP_ASGRD_EMPRESA_ foreign key (CIF_EMP_ASGRDRA) references EMPRESA_ASEGURADORA (CIF_EMP_ASGRDRA), constraint FK_COBERTUR_COB_ON_CO_COBERTUR foreign key (ID_COBERTURA) references COBERTURA (ID_COBERTURA) ); 2.3.3.16 PAQUETE /*==============================================================*/ /* Table: PAQUETE */ /*==============================================================*/ create table PAQUETE ( NOMBRE VARCHAR2(50) not null, PRECIO NUMBER(8,2) not null, TVF DATE, TVI_PAQUETE DATE not null, ID_PAQUETE NUMBER(8) not null, CIF_EMP_ASGRDRA VARCHAR2(10) not null, constraint PK_PAQUETE primary key (ID_PAQUETE, TVI_PAQUETE), constraint FK_PAQUETE_EMP_ASGRD_EMPRESA_ foreign key (CIF_EMP_ASGRDRA) references EMPRESA_ASEGURADORA (CIF_EMP_ASGRDRA) );

2.3.3.17 COBERTURA_PAQUETE /*==============================================================*/ /* Table: COBERTURA_PAQUETE */ /*==============================================================*/ create table COBERTURA_PAQUETE ( ID_COBERTURA NUMBER(10) not null, ID_PAQUETE NUMBER(8) not null, TVI_PAQUETE DATE not null, constraint PK_COBERTURA_PAQUETE primary key (ID_COBERTURA, ID_PAQUETE, TVI_PAQUETE), constraint FK_COBERTUR_COB_ON_PK_COBERTUR foreign key (ID_COBERTURA) references COBERTURA (ID_COBERTURA), constraint FK_COBERTUR_PKGS_ON_C_PAQUETE foreign key (ID_PAQUETE, TVI_PAQUETE) references PAQUETE (ID_PAQUETE, TVI_PAQUETE) ); 2.3.3.18 POLIZA /*==============================================================*/ /* Table: POLIZA */ /*==============================================================*/ create table POLIZA ( ID_POLIZA NUMBER(6) not null, ID_ELMNTO_ASGRADO NUMBER(10) not null, ID_CLIENTE NUMBER(6) not null, ID_CATEGORIA NUMBER(6) not null, TVI_CAT_ELE DATE not null, FECHA_CONTRATACION DATE not null, FECHA_FINALIZACION DATE not null, constraint PK_POLIZA primary key (ID_POLIZA), constraint FK_POLIZA_CAT_EMNTO_CAT_ELMN foreign key (ID_CATEGORIA, TVI_CAT_ELE) references CAT_ELMNTO_ASGURADO (ID_CATEGORIA, TVI_CAT_ELE), constraint FK_POLIZA_CLIENTE_O_CLIENTES foreign key (ID_CLIENTE) references CLIENTES (ID_CLIENTE), constraint FK_POLIZA_ELMNTO_AS_ELMNTO_A foreign key (ID_ELMNTO_ASGRADO) references ELMNTO_ASGURADO (ID_ELMNTO_ASGRADO) );

2.3.3.19 COBERTURA_POLIZA /*==============================================================*/ /* Table: COBERTURA_POLIZA */ /*==============================================================*/ create table COBERTURA_POLIZA ( ID_POLIZA NUMBER(6) not null, CIF_EMP_ASGRDRA VARCHAR2(10) not null, ID_COBERTURA NUMBER(10) not null, TVI_C DATE not null, constraint PK_COBERTURA_POLIZA primary key (CIF_EMP_ASGRDRA, ID_COBERTURA, ID_POLIZA, TVI_C), constraint FK_COBERTUR_POL_ON_CO_POLIZA foreign key (ID_POLIZA) references POLIZA (ID_POLIZA), constraint FK_COBERTUR_COB_EMP_O_COBERTUR foreign key (CIF_EMP_ASGRDRA, ID_COBERTURA, TVI_C) references COBERTURA_EMPRESA (CIF_EMP_ASGRDRA, ID_COBERTURA, TVI_C) ); 2.3.3.20 COCHE /*==============================================================*/ /* Table: COCHE */ /*==============================================================*/ create table COCHE ( ID_ELMNTO_ASGRADO NUMBER(10) not null, NUMRO_PUERTAS NUMBER(2) not null, COLOR VARCHAR2(50) not null, constraint PK_COCHE primary key (ID_ELMNTO_ASGRADO), constraint FK_COCHE_INHERITAN_VEHICULO foreign key (ID_ELMNTO_ASGRADO) references VEHICULOS (ID_ELMNTO_ASGRADO) ); 2.3.3.21 EMPRESA /*==============================================================*/ /* Table: EMPRESA */ /*==============================================================*/ create table EMPRESA ( ID_CLIENTE NUMBER(6) not null, CIF VARCHAR2(10) not null, NOMBRE_EMPRESA VARCHAR2(50) not null, constraint PK_EMPRESA primary key (ID_CLIENTE), constraint FK_EMPRESA_INHERITAN_CLIENTES foreign key (ID_CLIENTE) references CLIENTES (ID_CLIENTE) );

2.3.3.22 INMUEBLES /*==============================================================*/ /* Table: INMUEBLES */ /*==============================================================*/ create table INMUEBLES ( ID_ELMNTO_ASGRADO NUMBER(10) not null, METROS_2 NUMBER(6,2) not null, DIRECCION VARCHAR2(100) not null, constraint PK_INMUEBLES primary key (ID_ELMNTO_ASGRADO), constraint FK_INMUEBLE_INHERITAN_ELMNTO_A foreign key (ID_ELMNTO_ASGRADO) references ELMNTO_ASGURADO (ID_ELMNTO_ASGRADO) ); 2.3.3.23 LOCAL /*==============================================================*/ /* Table: LOCAL */ /*==============================================================*/ create table LOCAL ( ID_ELMNTO_ASGRADO NUMBER(10) not null, NMBRE_CMRCIAL VARCHAR2(50) not null, constraint PK_LOCAL primary key (ID_ELMNTO_ASGRADO), constraint FK_LOCAL_INHERITAN_INMUEBLE foreign key (ID_ELMNTO_ASGRADO) references INMUEBLES (ID_ELMNTO_ASGRADO) ); 2.3.3.24 MOTO /*==============================================================*/ /* Table: MOTO */ /*==============================================================*/ create table MOTO ( ID_ELMNTO_ASGRADO NUMBER(10) not null, CILINDRADA VARCHAR2(50) not null, constraint PK_MOTO primary key (ID_ELMNTO_ASGRADO), constraint FK_MOTO_INHERITAN_VEHICULO foreign key (ID_ELMNTO_ASGRADO) references VEHICULOS (ID_ELMNTO_ASGRADO) );

2.3.3.25 PAGOS /*==============================================================*/ /* Table: PAGOS */ /*==============================================================*/ create table PAGOS ( ID_PAGO NUMBER(6) not null, ID_POLIZA NUMBER(6) not null, FECHA_EMISION DATE not null, FECHA_PAGO DATE not null, IMPORTE NUMBER(8,2) not null, FORMA_DE_PAGO VARCHAR2(50) not null constraint CKC_FORMA_DE_PAGO_PAGOS check (FORMA_DE_PAGO in ('Efectivo','Tarjeta de Credito','Cheque')), constraint PK_PAGOS primary key (ID_PAGO), constraint FK_PAGOS_POL_ON_PA_POLIZA foreign key (ID_POLIZA) references POLIZA (ID_POLIZA) ); 2.3.3.26 PAQUETES_POLIZA /*==============================================================*/ /* Table: PAQUETES_POLIZA */ /*==============================================================*/ create table PAQUETES_POLIZA ( ID_POLIZA NUMBER(6) not null, ID_PAQUETE NUMBER(8) not null, TVI_PAQUETE DATE not null, constraint PK_PAQUETES_POLIZA primary key (ID_POLIZA, ID_PAQUETE, TVI_PAQUETE), constraint FK_PAQUETES_POL_ON_PA_POLIZA foreign key (ID_POLIZA) references POLIZA (ID_POLIZA), constraint FK_PAQUETES_PKGS_ON_P_PAQUETE foreign key (ID_PAQUETE, TVI_PAQUETE) references PAQUETE (ID_PAQUETE, TVI_PAQUETE) ); 2.3.3.27 PARTES /*==============================================================*/ /* Table: PARTES */ /*==============================================================*/ create table PARTES ( ID_PARTE NUMBER(6) not null, ID_POLIZA NUMBER(6) not null, FECHA DATE not null, DESCRIPCION VARCHAR2(250) not null, DANOS VARCHAR2(250) not null, constraint PK_PARTES primary key (ID_PARTE), constraint FK_PARTES_POL_ON_PA_POLIZA foreign key (ID_POLIZA) references POLIZA (ID_POLIZA) );

2.3.3.28 PERSONA /*==============================================================*/ /* Table: PERSONA */ /*==============================================================*/ create table PERSONA ( ID_CLIENTE NUMBER(6) not null, DNI VARCHAR2(9) not null, FECHA_NAC DATE not null, PRIMR_APELLIDO VARCHAR2(50) not null, SEGNDO_APELLIDO VARCHAR2(50), NOMBRE VARCHAR2(50) not null, constraint PK_PERSONA primary key (ID_CLIENTE), constraint FK_PERSONA_INHERITAN_CLIENTES foreign key (ID_CLIENTE) references CLIENTES (ID_CLIENTE) ); 2.3.3.29 VIVIENDA /*==============================================================*/ /* Table: VIVIENDA */ /*==============================================================*/ create table VIVIENDA ( ID_ELMNTO_ASGRADO NUMBER(10) not null, POSEE_ASCNSR SMALLINT not null, HABITACIONES NUMBER(2) not null, ASEOS NUMBER(2) not null, constraint PK_VIVIENDA primary key (ID_ELMNTO_ASGRADO), constraint FK_VIVIENDA_INHERITAN_INMUEBLE foreign key (ID_ELMNTO_ASGRADO) references INMUEBLES (ID_ELMNTO_ASGRADO) );

2.3.4 Creacin de ndices

2.3.4.1 EMP_ASGRDRA_ON_COB_EMP_FK /*==============================================================*/ /* Index: EMP_ASGRDRA_ON_COB_EMP_FK */ /*==============================================================*/ create index EMP_ASGRDRA_ON_COB_EMP_FK on COBERTURA_EMPRESA ( CIF_EMP_ASGRDRA ASC ); 2.3.4.2 COB_ON_COB_EMP_FK /*==============================================================*/ /* Index: COB_ON_COB_EMP_FK */ /*==============================================================*/ create index COB_ON_COB_EMP_FK on COBERTURA_EMPRESA ( ID_COBERTURA ASC ); 2.3.4.3 COB_ON_PKGS_FK /*==============================================================*/ /* Index: COB_ON_PKGS_FK */ /*==============================================================*/ create index COB_ON_PKGS_FK on COBERTURA_PAQUETE ( ID_COBERTURA ASC ); 2.3.4.4 PKGS_ON_COB_FK /*==============================================================*/ /* Index: PKGS_ON_COB_FK */ /*==============================================================*/ create index PKGS_ON_COB_FK on COBERTURA_PAQUETE ( ID_PAQUETE ASC, TVI_PAQUETE ASC ); 2.3.4.5 POL_ON_COB_POL_FK /*==============================================================*/ /* Index: POL_ON_COB_POL_FK */ /*==============================================================*/ create index POL_ON_COB_POL_FK on COBERTURA_POLIZA ( ID_POLIZA ASC );

2.3.4.6 COB_EMP_ON_COB_POL_FK /*==============================================================*/ /* Index: COB_EMP_ON_COB_POL_FK */ /*==============================================================*/ create index COB_EMP_ON_COB_POL_FK on COBERTURA_POLIZA ( CIF_EMP_ASGRDRA ASC, ID_COBERTURA ASC, TVI_C ASC ); 2.3.4.7 POL_ON_PAGOS_FK /*==============================================================*/ /* Index: POL_ON_PAGOS_FK */ /*==============================================================*/ create index POL_ON_PAGOS_FK on PAGOS ( ID_POLIZA ASC ); 2.3.4.8 EMP_ASGRDRA_ON_PKGS_FK /*==============================================================*/ /* Index: EMP_ASGRDRA_ON_PKGS_FK */ /*==============================================================*/ create index EMP_ASGRDRA_ON_PKGS_FK on PAQUETE ( CIF_EMP_ASGRDRA ASC ); 2.3.4.9 POL_ON_PAKGS_FK /*==============================================================*/ /* Index: POL_ON_PAKGS_FK */ /*==============================================================*/ create index POL_ON_PAKGS_FK on PAQUETES_POLIZA ( ID_POLIZA ASC ); 2.3.4.10 PKGS_ON_POL_FK /*==============================================================*/ /* Index: PKGS_ON_POL_FK */ /*==============================================================*/ create index PKGS_ON_POL_FK on PAQUETES_POLIZA ( ID_PAQUETE ASC, TVI_PAQUETE ASC );

2.3.4.11 POL_ON_PARTES_FK /*==============================================================*/ /* Index: POL_ON_PARTES_FK */ /*==============================================================*/ create index POL_ON_PARTES_FK on PARTES ( ID_POLIZA ASC ); 2.3.4.12 CAT_EMNTO_A_ON_POL_FK /*==============================================================*/ /* Index: CAT_EMNTO_A_ON_POL_FK */ /*==============================================================*/ create index CAT_EMNTO_A_ON_POL_FK on POLIZA ( ID_CATEGORIA ASC, TVI_CAT_ELE ASC ); 2.3.4.13 CLIENTE_ON_POL_FK /*==============================================================*/ /* Index: CLIENTE_ON_POL_FK */ /*==============================================================*/ create index CLIENTE_ON_POL_FK on POLIZA ( ID_CLIENTE ASC ); 2.3.4.14 ELMNTO_ASGURADO_ON_POL_FK /*==============================================================*/ /* Index: ELMNTO_ASGURADO_ON_POL_FK */ /*==============================================================*/ create index ELMNTO_ASGURADO_ON_POL_FK on POLIZA ( ID_ELMNTO_ASGRADO ASC );

2.3.5 Secuencias

Las secuencias fueron implementas para llevar control de los diferentes identificadores de la BDD. Se iniciaron con el valor de 100 para evitar conflictos con la carga inicial que hemos realizado durante toda la prctica. A continuacin se presenta el cdigo de su creacin: create sequence SEQ_ID_CAT_ELMNTO_ASGURADO increment by 1 start with 100; create sequence SEQ_ID_CLIENTE increment by 1 start with 100; create sequence SEQ_ID_COBERTURA increment by 1 start with 100; create sequence SEQ_ID_ELMNTO_ASGURADO increment by 1 start with 100; create sequence SEQ_ID_EMP_ASGRDRA increment by 1 start with 100; create sequence SEQ_ID_PAGOS increment by 1 start with 100; create sequence SEQ_ID_PAQUETE increment by 1 start with 100; create sequence SEQ_ID_PARTES increment by 1 start with 100; create sequence SEQ_ID_POLIZA increment by 1 start with 100;

2.3.6 Descripcin de las tablas (DESCRIBE)

2.3.6.1 Desc CAMION;


Nombre De Col umna
ID_ELMNTO_ASGRADO N_EJES TARA

Tipo De Dato
NUMBER(10,0) NUMBER(2,0) NUMBER(2,0)

Nul o
No No No

Val or Por Def ecto


-

Clave Primaria
1 -

2.3.6.2 Desc CAT_CAMION;


Nombre De Col umna
ID_CATEGORIA TVI_CAT_ELE POSEE_REFRGRCION

Tipo De Dato
NUMBER(6,0) DATE NUMBER

Nul o
No No No

Val or Por Def ecto


-

Clave Primaria
1 2 -

2.3.6.3 Desc CAT_COCHE;


Nombre De Col umna
ID_CATEGORIA TVI_CAT_ELE GARAGE_PROPIO USO_COCHE

Tipo De Dato
NUMBER(6,0) DATE NUMBER VARCHAR2(50)

Nul o
No No No No

Val or Por Def ecto


-

Clave Primaria
1 2 -

2.3.6.4 Desc CAT_ELMNTO_ASGURADO;


Nombre De Col umna
ID_CATEGORIA TVI_CAT_ELE PRCNTJE_GNNCIA NOMBRE TVF

Tipo De Dato
NUMBER(6,0) DATE NUMBER(4,2) VARCHAR2(50) DATE

Nul o
No No No No Yes

Val or Por Def ecto


-

Clave Primaria
1 2 -

2.3.6.5 Desc CAT_INMUEBLES;


Nombre De Col umna
ID_CATEGORIA TVI_CAT_ELE

Tipo De Dato
NUMBER(6,0) DATE

Nul o
No No

Val or Por Def ecto


-

Clave Primaria
1 2

2.3.6.6 Desc CAT_LOCAL_COMERCIAL;


Nombre De Col umna
ID_CATEGORIA TVI_CAT_ELE UBICADO_EN_CC POSEE_SLDS_EMERG

Tipo De Dato
NUMBER(6,0) DATE NUMBER NUMBER

Nul o
No No No No

Val or Por Def ecto


-

Clave Primaria
1 2 -

2.3.6.7 Desc CAT_MOTO;


Nombre De Col umna
ID_CATEGORIA TVI_CAT_ELE USO_MOTO USA_CADENA

Tipo De Dato
NUMBER(6,0) DATE VARCHAR2(50) NUMBER

Nul o
No No No No

Val or Por Def ecto


-

Clave Primaria
1 2 -

2.3.6.8 Desc CAT_VEHICULOS;


Nombre De Col umna
ID_CATEGORIA TVI_CAT_ELE

Tipo De Dato
NUMBER(6,0) DATE

Nul o
No No

Val or Por Def ecto


-

Clave Primaria
1 2

2.3.6.9 Desc CAT_VIVIENDA;


Nombre De Col umna
ID_CATEGORIA TVI_CAT_ELE USO_VIVIENDA MAS_DE_20_ANOS

Tipo De Dato
NUMBER(6,0) DATE VARCHAR2(50) NUMBER

Nul o
No No No No

Val or Por Def ecto


-

Clave Primaria
1 2 -

2.3.6.10 Desc CLIENTES;


Nombre De Col umna
ID_CLIENTE TELEFONO DIRECCION

Tipo De Dato
NUMBER(6,0) VARCHAR2(14) VARCHAR2(100)

Nul o
No No No

Val or Por Def ecto


-

Clave Primaria
1 -

2.3.6.11 Desc COBERTURA;


Nom bre De Col um na Tipo De Da to Nul o Val or P or Defecto Cla ve P rima ria

ID_COBERTURA NOMBRE

NUMBER(10,0) VARCHAR2(50)

No No

1 -

2.3.6.12 Desc COBERTURA_EMPRESA;


Nombre De Col umna
CIF_EMP_ASGRDRA ID_COBERTURA TVI_C PRECIO NOMBRE TVF

Tipo De Dato
NUMBER(10,0) NUMBER(10,0) DATE NUMBER(8,2) VARCHAR2(50) DATE

Nul o
No No No No No Yes

Val or Por Def ecto


-

Clave Primaria
1 2 3 -

2.3.6.13 Desc COBERTURA_PAQUETE;


Nombre De Col umna
ID_COBERTURA ID_PAQUETE TVI_PAQUETE

Tipo De Dato
NUMBER(10,0) NUMBER(8,0) DATE

Nul o
No No No

Val or Por Def ecto


-

Clave Primaria
1 2 3

2.3.6.14 Desc COBERTURA_POLIZA;


Nombre De Col umna
CIF_EMP_ASGRDRA ID_COBERTURA ID_POLIZA TVI_C

Tipo De Dato
VARCHAR2(10) NUMBER(10,0) NUMBER(6,0) DATE

Nul o
No No No No

Val or Por Def ecto


-

Clave Primaria
1 2 3 4

2.3.6.15 Desc COCHE;


Nombre De Col umna
ID_ELMNTO_ASGRADO NUMRO_PUERTAS COLOR

Tipo De Dato
NUMBER(10,0) NUMBER(2,0) VARCHAR2(50)

Nul o
No No No

Val or Por Def ecto


-

Clave Primaria
1 -

2.3.6.16 Desc ELMNTO_ASGURADO;


Nombre De Col umna
ID_ELMNTO_ASGRADO

Tipo De Dato
NUMBER(10,0)

Nul o
No

Val or Por Def ecto


-

Clave Primaria
1

2.3.6.17 Desc EMPRESA;


Nombre De Col umna
ID_CLIENTE CIF NOMBRE_EMPRESA

Tipo De Dato
NUMBER(6,0) VARCHAR2(10) VARCHAR2(50)

Nul o
No No No

Val or Por Def ecto


-

Clave Primaria
1 -

2.3.6.18 Desc EMPRESA_ASEGURADORA;


Nombre De Col umna
CIF_EMP_ASGRDRA NOMBRE DIRECCION TELEFONO

Tipo De Dato
NUMBER(10,0) VARCHAR2(50) VARCHAR2(100) VARCHAR2(14)

Nul o
No No No No

Val or Por Def ecto


-

Clave Primaria
1 -

2.3.6.19 Desc INMUEBLES;


Nombre De Col umna
ID_ELMNTO_ASGRADO METROS_2 DIRECCION

Tipo De Dato
NUMBER(10,0) NUMBER(6,2) VARCHAR2(100)

Nul o
No No No

Val or Por Def ecto


-

Clave Primaria
1 -

2.3.6.20 Desc LOCAL;


Nombre De Col umna
ID_ELMNTO_ASGRADO NMBRE_CMRCIAL

Tipo De Dato
NUMBER(10,0) VARCHAR2(50)

Nul o
No No

Val or Por Def ecto


-

Clave Primaria
1 -

2.3.6.21 Desc MOTO;


Nombre De Col umna
ID_ELMNTO_ASGRADO CILINDRADA

Tipo De Dato
NUMBER(10,0) VARCHAR2(50)

Nul o
No No

Val or Por Def ecto


-

Clave Primaria
1 -

2.3.6.22 Desc PAGOS;


Nombre De Col umna
ID_PAGO ID_POLIZA FECHA_EMISION FECHA_PAGO IMPORTE FORMA_DE_PAGO

Tipo De Dato
NUMBER(6,0) NUMBER(6,0) DATE DATE NUMBER(8,2) VARCHAR2(50)

Nul o
No No No No No No

Val or Por Def ecto


-

Clave Primaria
1 -

2.3.6.23 Desc PAQUETE;


Nom bre De Col um na Tipo De Da to Nul o Val or P or Defecto Cla ve P rima ria

ID_PAQUETE TVI_PAQUETE NOMBRE PRECIO TVF CIF_EMP_ASGRDRA

NUMBER(8,0) DATE VARCHAR2(50) NUMBER(8,2) DATE VARCHAR2(10)

No No No No Yes No

1 2 -

2.3.6.24 Desc PAQUETES_POLIZA;


Nombre De Col umna
ID_POLIZA ID_PAQUETE TVI_PAQUETE

Tipo De Dato
NUMBER(6,0) NUMBER(8,0) DATE

Nul o
No No No

Val or Por Def ecto


-

Clave Primaria
1 2 3

2.3.6.25 Desc PARTES;


Nombre De Col umna
ID_PARTE ID_POLIZA FECHA DESCRIPCION DANOS

Tipo De Dato
NUMBER(6,0) NUMBER(6,0) DATE VARCHAR2(250) VARCHAR2(250)

Nul o
No No No No No

Val or Por Def ecto


-

Clave Primaria
1 -

2.3.6.26 Desc PERSONA;


Nombre De Col umna
ID_CLIENTE DNI FECHA_NAC PRIMR_APELLIDO SEGNDO_APELLIDO NOMBRE

Tipo De Dato
NUMBER(6,0) VARCHAR2(9) DATE VARCHAR2(50) VARCHAR2(50) VARCHAR2(50)

Nul o
No No No No Yes No

Val or Por Def ecto


-

Clave Primaria
1 -

2.3.6.27 Desc POLIZA;


Nom bre De Col um na Tipo De Da to Nul o Val or P or Defecto Cla ve P rima ria

ID_POLIZA ID_ELMNTO_ASGRADO ID_CLIENTE ID_CATEGORIA TVI_CAT_ELE FECHA_CONTRATACION FECHA_FINALIZACION

NUMBER(6,0) NUMBER(10,0) NUMBER(6,0) NUMBER(6,0) DATE DATE DATE

No No No No No No No

1 -

2.3.6.28 Desc VEHICULOS;


Nombre De Col umna
ID_ELMNTO_ASGRADO MATRICULA MARCA MODELO

Tipo De Dato
NUMBER(10,0) VARCHAR2(7) VARCHAR2(30) VARCHAR2(30)

Nul o
No No No No

Val or Por Def ecto


-

Clave Primaria
1 -

2.3.6.29 Desc VIVIENDA;


Nombre De Col umna
ID_ELMNTO_ASGRADO POSEE_ASCNSR HABITACIONES ASEOS

Tipo De Dato
NUMBER(10,0) NUMBER NUMBER(2,0) NUMBER(2,0)

Nul o
No No No No

Val or Por Def ecto


-

Clave Primaria
1 -

2.3.7 Obtener las filas de las tablas (SELECT *)

2.3.7.1 SELECT * FROM CAMION


ID_ELMNTO_ASGRADO 1 2 3 4 5 N_EJES 4 2 4 2 4 TARA 85 68 75 93 59

2.3.7.2 SELECT * FROM CAT_CAMION


ID_CATEGORIA 9 TVI_CAT_ELE 12/02/2009 POSEE_REFRGRCION 1

2.3.7.3 SELECT * FROM CAT_COCHE


ID_CATEGORIA 12 13 TVI_CAT_ELE 02/01/2008 12/02/2009 GARAGE_PROPIO 1 0 USO_COCHE PARTICULAR TAXI

2.3.7.4 SELECT * FROM CAT_ELMNTO_ASGURADO


PRCNTJE_GNNCIA ID_CATEGORIA NOMBRE 20 1 LOCAL CENTRO COMERCIAL SI SALIDAS DE EMERGENCIA 30 2 LOCAL URBANO SI SALIDAS DE EMERGENCIA LOCAL CENTRO COMERCIAL NO SALIDAS DE 15 3 EMERGENCIA 10 4 LOCAL URBANO NO SALIDAS DE EMERGENCIA 5 5 VIVIENDA PRINCIPAL NUEVA 25 6 VIVIENDA SECUNDARIA NUEVA 18 7 VIVIENDA PRINCIPAL VIEJA 10 8 VIVIENDA SECUNDARIA VIEJA 12 9 TRANSPORTE COMIDA 40 10 CHOPER 25 11 SUPERBIKE 20 12 USO URBANO 30 13 USO COMERCIAL TVF TVI_CAT_ELE 12/02/2009 23/01/2009 26/02/2009 02/01/2008 12/02/2009 23/01/2009 26/02/2009 02/01/2008 12/02/2009 23/01/2009 26/02/2009 02/01/2008 12/02/2009

2.3.7.5 SELECT * FROM CAT_INMUEBLES


ID_CATEGORIA 1 2 3 4 5 6 7 8 TVI_CAT_ELE 12/02/2009 23/01/2009 26/02/2009 02/01/2008 12/02/2009 23/01/2009 26/02/2009 02/01/2008

2.3.7.6 SELECT * FROM CAT_LOCAL_COMERCIAL


ID_CATEGORIA 1 2 3 4 TVI_CAT_ELE 12/02/2009 23/01/2009 26/02/2009 02/01/2008 UBICADO_EN_CC 1 0 1 0 POSEE_SLDS_EMERG 0 1 0 1

2.3.7.7 SELECT * FROM CAT_MOTO


ID_CATEGORIA 10 11 TVI_CAT_ELE 23/01/2009 26/02/2009 USO_MOTO Uso diario Uso esporadico USA_CADENA 1 0

2.3.7.8 SELECT * FROM CAT_VEHICULOS


ID_CATEGORIA 9 10 11 12 13 TVI_CAT_ELE 12/02/2009 23/01/2009 26/02/2009 02/01/2008 12/02/2009

2.3.7.9 SELECT * FROM CAT_VIVIENDA


ID_CATEGORIA 5 6 7 8 TVI_CAT_ELE 12/02/2009 23/01/2009 26/02/2009 02/01/2008 USO_VIVIENDA vivienda principal de alquiler vivienda principal vacacional MAS_DE_20_ANOS 1 0 1 0

2.3.7.10 SELECT * FROM CLIENTES


ID_CLIENTE 1 2 3 4 TELEFONO 664537289 622176276 618736636 644134131 DIRECCION A CORUA BARCELONA MADRID BILBAO

2.3.7.11 SELECT * FROM COBERTURA


ID_COBERTURA 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 NOMBRE Responsabilidad Civil Obligatoria Responsabilidad Civil Voluntaria Seguro de Accidentes del conductor por 10000 Seguro de Accidentes acompaantes por 5000 Defensa Jurdica y Reclamacin de Daos Ampliacin del conductor a 30.000 o 60.000 Asistencia en viaje Standard Asistencia en viaje VIP Coche de sustitucion Multas y Carnet VIP Lunas Incendio Robo Daos Propios Daos Materiales Asistencia Camion Acontecimiento extraordinarios daos personales Acontecimiento extraordinarios daos materiales

2.3.7.12 SELECT * FROM COBERTURA_EMPRESA


CIF_EMP_ASGRDRA 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 6 6 6 6 6 6 6 6 6 6 6 6 ID_COBERTURA 1 2 3 4 5 6 7 8 11 12 13 14 15 16 17 18 1 2 3 4 5 6 7 8 11 12 13 14 15 16 17 18 1 2 3 4 5 6 7 8 9 10 11 12 TVI_C 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 PRECIO 235 200 230 285 265 210 100 200 65 210 25 20 30 85 65 10 255 180 220 255 285 220 120 190 75 200 15 10 20 95 65 10 255 190 210 245 255 200 150 195 160 45 25 180 NOMBRE Responsabilidad Civil imposicion Responsabilidad Civil Seguro conductor por 10000 Seguro acompaantes por 5000 Defensa Jurdica y Reclamacines Ampliacin a 30.000 o 60.000 Responsabilidad Civil imposicion Responsabilidad Civil Defensa Jurdica y Reclamacines Ampliacin a 30.000 o 60.000 Responsabilidad Civil imposicion Responsabilidad Civil Seguro conductor por 10000 Seguro acompaantes por 5000 Defensa Jurdica y Reclamacines Ampliacin a 30.000 o 60.000 Responsabilidad Civil imposicion Responsabilidad Civil Seguro conductor por 10000 Seguro acompaantes por 5000 Defensa Jurdica y Reclamacines Ampliacin a 30.000 o 60.000 Responsabilidad Civil imposicion Responsabilidad Civil Defensa Jurdica y Reclamacines Ampliacin a 30.000 o 60.000 Responsabilidad Civil imposicion Responsabilidad Civil Seguro conductor por 10000 Seguro acompaantes por 5000 Defensa Jurdica y Reclamacines Ampliacin a 30.000 o 60.000 Responsabilidad Civil imposicion Responsabilidad Civil Seguro conductor por 10000 Seguro acompaantes por 5000 Defensa Jurdica y Reclamacines Ampliacin a 30.000 o 60.000 Responsabilidad Civil imposicion Responsabilidad Civil Seguro conductor por 10000 Seguro acompaantes por 5000 Defensa Jurdica y Reclamacines Ampliacin a 30.000 o 60.000 TVF

6 6 6 6 6 6

13 14 15 16 17 18

10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010 10/10/2010

35 20 50 65 35 20

Responsabilidad Civil imposicion Responsabilidad Civil Seguro conductor por 10000 Seguro acompaantes por 5000 Defensa Jurdica y Reclamacines Ampliacin a 30.000 o 60.000

2.3.7.13 SELECT * FROM COBERTURA_PAQUETE


ID_COBERTURA 2 4 5 5 5 6 8 9 10 12 12 13 13 13 15 18 ID_PAQUETE 4 4 1 3 4 4 5 3 3 1 2 1 2 3 1 1 TVI_PAQUETE 12/10/2010 12/10/2010 12/10/2010 12/10/2010 12/10/2010 12/10/2010 12/10/2010 12/10/2010 12/10/2010 12/10/2010 12/10/2010 12/10/2010 12/10/2010 12/10/2010 12/10/2010 12/10/2010

2.3.7.14 SELECT * FROM COBERTURA_POLIZA


ID_POLIZA 3 5 4 5 CIF_EMP_ASGRDRA 4 6 6 6 ID_COBERTURA 1 1 12 12 TVI_C 10/10/2010 10/10/2010 10/10/2010 10/10/2010

2.3.7.15 SELECT * FROM COCHE


ID_ELMNTO_ASGRADO 11 12 13 14 15 NUMRO_PUERTAS COLOR 5 VERDE 3 AMARILLO 5 AZUL 5 ROJO 2 AMARILLO

2.3.7.16 SELECT * FROM ELMNTO_ASGURADO


ID_ELMNTO_ASGRADO 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

2.3.7.17 SELECT * FROM EMPRESA


ID_CLIENTE 2 4 CIF NOMBRE_EMPRESA B36651313 VEGALSA B65424452 TECNOCOM

2.3.7.18 SELECT * FROM EMPRESA_ASEGURADORA


CIF_EMP_ASGRDRA 2 4 6 NOMBRE NUEVO MUNDOS CAPITAL GALESEG DIRECCION A Corua, calle ponte, nmero 4, 2B Valencia, calle la extremea, nmero 45, 1B Vigo, calle barboza, numero 23, 4A TELEFONO 670646875 670646524 670646754

2.3.7.19 SELECT * FROM INMUEBLES


ID_ELMNTO_ASGRADO 16 17 18 19 20 21 22 23 24 25 METROS_2 120 200 89 70 105 340 1200 800 280 4000 DIRECCION A Corua, calle ponte, nmero 4, 2B Valencia, calle la extremea, nmero 45, 1B Vigo, calle barboza, numero 23, 4A Madrid, calle santa cruz, numero 24, 2A Bilbao, calle otxandategui, numero 8, 2A A Corua, calle real, numero 74 Barcelona, calle las ramblas, numero 69 Santander, calle alonso, numero 5 Sevilla, calle te quiero illa maravilla, numero 2 Tenerife, calle el mani es asi, numero 14

2.3.7.20 SELECT * FROM LOCAL


ID_ELMNTO_ASGRADO 21 22 23 24 25 NMBRE_CMRCIAL ALMACENES DON REGALON DISCO PUB TODO ALL ZARA MEN CAFETERIA LOS HERMANOS COCO 3 BICHOS CAYENDO

2.3.7.21 SELECT * FROM MOTO


ID_ELMNTO_ASGRADO 6 7 8 9 10 CILINDRADA 600 900 1100 400 750

2.3.7.22 SELECT * FROM PAGOS


ID_PAGO 1 2 3 4 5 6 7 8 9 10 11 12 ID_POLIZA 1 2 3 4 1 2 3 4 1 2 3 4 FECHA_EMISION 23/09/2009 12/11/2009 23/09/2009 27/12/2009 10/09/2009 11/11/2009 30/12/2009 04/09/2009 12/08/2009 10/09/2009 16/08/2009 23/09/2009 FECHA_PAGO 23/09/2009 12/11/2009 23/09/2009 27/12/2009 10/09/2009 11/11/2009 30/12/2009 04/09/2009 12/08/2009 10/09/2009 16/08/2009 23/09/2009 IMPORTE 100 100 100 100 60 170 240 30 30 10 40 50 FORMA_DE_PAGO Efectivo Cheque Tarjeta de Credito Efectivo Efectivo Tarjeta de Credito Efectivo Cheque Tarjeta de Credito Efectivo Efectivo Tarjeta de Credito

2.3.7.23 SELECT * FROM PAQUETE


NOMBRE VIVIENDA TOTAL VIVIENDA BASICO LOCAL BASICO VALENTINO BASICO LORENZO CHUPACHU PRECIO 200 300 500 285 200 TVF TVI_PAQUETE 12/10/2010 12/10/2010 12/10/2010 12/10/2010 12/10/2010 ID_PAQUETE 1 2 3 4 5 CIF_EMP_ASGRDRA 2 2 4 6 6

2.3.7.24 SELECT * FROM PAQUETES_POLIZA


ID_POLIZA 1 1 2 3 3 4 ID_PAQUETE 1 2 2 3 4 1 TVI_PAQUETE 12/10/2010 12/10/2010 12/10/2010 12/10/2010 12/10/2010 12/10/2010

2.3.7.25 SELECT * FROM PARTES


ID_PARTE 1 2 3 4 ID_POLIZA 1 1 3 4 FECHA DESCRIPCION DANOS 10/04/2010 CHOQUE FRONTAL EN LA AVENIDA ARTEIXO CON OTRO COCHE PERDIDA TOTAL 20/05/2010 INCENDIO EN PISO POR FUGA DE GAS COMUNITARIO SE QUEMARON DOS HABITACIONES COMPLETAS 01/01/2010 CAIDA DE MOTOCICLETA EN UNA CURVA DAOS EN LA CHAPA Y ENCADENADO 17/03/2010 ROBO A LOCAL COMERCIAL PERDIDA DE TODA LA MERCANCIA

2.3.7.26 SELECT * FROM PERSONA


ID_CLIENTE 1 3 DNI 47654998 45637829 FECHA_NAC 10/10/1982 12/03/1984 PRIMR_APELLIDO RIVERO PAOLINI SEGNDO_APELLIDO GONZALEZ DIEZ NOMBRE GUILLERMO ALFONSO

2.3.7.27 SELECT * FROM POLIZA


ID_POLIZA 1 2 3 4 5 6 7 8 9 10 ID_ELMNTO_ASGRADO 1 2 3 4 21 12 12 12 21 21 ID_CLIENTE 1 2 3 4 1 4 4 4 1 1 ID_CATEGORIA 9 10 11 12 3 12 12 12 3 3 TVI_CAT_ELE 12/02/2009 23/01/2009 26/02/2009 02/01/2008 26/02/2009 02/01/2008 02/01/2008 02/01/2008 26/02/2009 26/02/2009 FECHA_CONTRATACION 23/11/2010 12/11/2010 23/11/2010 27/12/2010 23/03/2009 01/01/2009 01/01/2008 01/01/2007 15/06/2009 15/04/2010 FECHA_FINALIZACION 23/11/2011 12/11/2011 23/11/2011 27/12/2011 23/03/2010 01/01/2010 01/01/2009 01/01/2008 15/06/2010 15/04/2011

2.3.7.28 SELECT * FROM VEHICULOS


ID_ELMNTO_ASGRADO 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 MATRICULA 6754TYH 8723FGG 3453JCB 2432CVB 5343MNB 2211ZXC 4542POI 9984DDE 8552LSU 2961QWE 8632CUE 2212HSW 1134SDA 3364GXD 4242JSQ MARCA MODELO MACK ff7500 RENAULT i8000 VOLVO x6000 IVECO V7500 FIAT JJ700 YAMAHA R6 HONDA 900RR HARLEY FAT BOY SUZUKI CROSS400 BMW 750XR HONDA CIVIC RENAULT TWINGO JAGUAR XXR200 SEAT IBIZA LAMBORGINI GALLARDO

2.3.7.29 SELECT * FROM VIVIENDA


ID_ELMNTO_ASGRADO 16 17 18 19 20 POSEE_ASCNSR 1 0 1 0 1 HABITACIONES 3 2 3 1 2 ASEOS 2 2 2 1 1

3 SQL y aplicacin de acceso


3.1 SQL ampliado
Este apartado incluye las consultas que reflejan los conceptos de SQL ampliado, y otros de inters que fueron estudiados a lo largo del desarrollo de la asignatura. 3.1.1 Una consulta que proporcione informacin sobre las plizas que posee un cliente segn su DNI. (empresa aseguradora, elemento asegurado, categora elemento asegurado). SELECT POLIZA.ID_POLIZA, POLIZA.FECHA_CONTRATACION, POLIZA.FECHA_FINALIZACION, CLIENTES.ID_CLIENTE, CAT_ELMNTO_ASGURADO.NOMBRE, CASE WHEN POLIZA.FECHA_FINALIZACION > SYSDATE THEN 'ACTIVA' ELSE 'INACTIVA' END SITUACION, TIPOLOGIA.TIPO FROM PERSONA JOIN CLIENTES ON PERSONA.ID_CLIENTE = CLIENTES.ID_CLIENTE JOIN POLIZA ON POLIZA.ID_CLIENTE = CLIENTES.ID_CLIENTE JOIN CAT_ELMNTO_ASGURADO ON POLIZA.ID_CATEGORIA = CAT_ELMNTO_ASGURADO.ID_CATEGORIA AND POLIZA.TVI_CAT_ELE = CAT_ELMNTO_ASGURADO.TVI_CAT_ELE , (SELECT ELMNTO_ASGURADO.ID_ELMNTO_ASGRADO, 'VEHICULO' TIPO FROM ELMNTO_ASGURADO JOIN VEHICULOS ON ELMNTO_ASGURADO.ID_ELMNTO_ASGRADO = VEHICULOS.ID_ELMNTO_ASGRADO UNION SELECT ELMNTO_ASGURADO.ID_ELMNTO_ASGRADO, 'INMUEBLE' TIPO FROM ELMNTO_ASGURADO JOIN INMUEBLES ON ELMNTO_ASGURADO.ID_ELMNTO_ASGRADO = INMUEBLES.ID_ELMNTO_ASGRADO ) TIPOLOGIA WHERE DNI LIKE '47654998' AND TIPOLOGIA.ID_ELMNTO_ASGRADO = POLIZA.ID_ELMNTO_ASGRADO

3.1.2 Obtener todas las plizas que tienen como fecha de vencimiento menor a dos meses a la fecha actual. SELECT P.ID_POLIZA as ID_POLIZA, P.ID_CLIENTE as ID_CLIENTE, C.ID_CLIENTE as ID_CLIENTE, C.TELEFONO as TELEFONO, C.DIRECCION as DIRECCION, P.FECHA_FINALIZACION as FECHA_FINALIZACION FROM CLIENTES C JOIN POLIZA P ON C.ID_CLIENTE = P.ID_CLIENTE WHERE MONTHS_BETWEEN(FECHA_FINALIZACION, SYSDATE) < 2 AND FECHA_FINALIZACION > SYSDATE 3.1.3 Una consulta que diga cuales son, segn una lista de coberturas, las empresas que las ofrecen a mayores o si se encuentran en algn paquete. (empresa, nombre cobertura-en la empresa, paquete) SELECT EMPRESA_ASEGURADORA.NOMBRE, EMPRESA_ASEGURADORA.CIF_EMP_ASGRDRA, MODALIDAD.MODO FROM EMPRESA_ASEGURADORA JOIN COBERTURA_EMPRESA ON EMPRESA_ASEGURADORA.CIF_EMP_ASGRDRA = COBERTURA_EMPRESA.CIF_EMP_ASGRDRA, (SELECT 'A MAYORES' MODO FROM DUAL) MODALIDAD WHERE COBERTURA_EMPRESA.ID_COBERTURA = ANY (9,10) UNION SELECT EMPRESA_ASEGURADORA.NOMBRE, EMPRESA_ASEGURADORA.CIF_EMP_ASGRDRA, 'EN PAQUETE '||PAQUETE.NOMBRE FROM EMPRESA_ASEGURADORA JOIN PAQUETE ON EMPRESA_ASEGURADORA.CIF_EMP_ASGRDRA = PAQUETE.CIF_EMP_ASGRDRA JOIN COBERTURA_PAQUETE ON PAQUETE.ID_PAQUETE = COBERTURA_PAQUETE.ID_PAQUETE WHERE COBERTURA_PAQUETE.ID_COBERTURA = ANY (9,10)

3.1.4 Obtener todos los paquetes ofrecidos por una determinada empresa aseguradora, especficamente GALESEG. SELECT EA.NOMBRE, PA.ID_PAQUETE, PA.NOMBRE, PA.PRECIO, PA.CIF_EMP_ASGRDRA, EA.CIF_EMP_ASGRDRA FROM PAQUETE PA JOIN EMPRESA_ASEGURADORA EA ON EA.CIF_EMP_ASGRDRA = PA.CIF_EMP_ASGRDRA WHERE EA.NOMBRE LIKE 'GALESEG'

3.1.5 Una consulta que calcule las cuentas por cobrar (pagos vencidos de plizas vigentes) por cliente. (cliente, pliza, saldo vencido). SELECT PAGOS.ID_POLIZA,PAGOS."PAGADO POLIZA", (COBERTURAS.PRECIO + PAQUETES.PRECIO) COSTE, (COBERTURAS.PRECIO + PAQUETES.PRECIO - PAGOS."PAGADO POLIZA") DEBE FROM (SELECT POLIZA.ID_POLIZA, NVL(SUM(PAGOS.IMPORTE),0) "PAGADO POLIZA" FROM PAGOS RIGHT JOIN POLIZA ON PAGOS.ID_POLIZA = POLIZA.ID_POLIZA JOIN CLIENTES ON POLIZA.ID_CLIENTE = CLIENTES.ID_CLIENTE GROUP BY POLIZA.ID_POLIZA) PAGOS RIGHT JOIN (SELECT POLIZA.ID_POLIZA, NVL(SUM(PAQUETE.PRECIO),0) PRECIO FROM PAQUETES_POLIZA JOIN PAQUETE ON PAQUETES_POLIZA.ID_PAQUETE = PAQUETE.ID_PAQUETE RIGHT JOIN POLIZA ON POLIZA.ID_POLIZA = PAQUETES_POLIZA.ID_POLIZA GROUP BY POLIZA.ID_POLIZA) PAQUETES ON PAQUETES.ID_POLIZA = PAGOS.ID_POLIZA RIGHT JOIN (SELECT POLIZA.ID_POLIZA, NVL(SUM(COBERTURA_EMPRESA.PRECIO),0) PRECIO FROM POLIZA LEFT JOIN COBERTURA_POLIZA ON POLIZA.ID_POLIZA = COBERTURA_POLIZA.ID_POLIZA LEFT JOIN COBERTURA_EMPRESA ON COBERTURA_EMPRESA.CIF_EMP_ASGRDRA = COBERTURA_POLIZA.CIF_EMP_ASGRDRA AND COBERTURA_EMPRESA.ID_COBERTURA = COBERTURA_POLIZA.ID_COBERTURA AND COBERTURA_EMPRESA.TVI_C = COBERTURA_POLIZA.TVI_C GROUP BY POLIZA.ID_POLIZA) COBERTURAS ON COBERTURAS.ID_POLIZA = PAQUETES.ID_POLIZA

3.1.6 Plizas que pertenecen a una categora de elemento asegurado que nos d un porcentaje de ganancia superior al promedio de los porcentajes de ganancias. SELECT * FROM POLIZA JOIN CAT_ELMNTO_ASGURADO ON POLIZA.ID_CATEGORIA = CAT_ELMNTO_ASGURADO.ID_CATEGORIA AND POLIZA.TVI_CAT_ELE= CAT_ELMNTO_ASGURADO.TVI_CAT_ELE, (SELECT AVG(CAT_ELMNTO_ASGURADO.PRCNTJE_GNNCIA) VALOR FROM CAT_ELMNTO_ASGURADO) PROMEDIO WHERE CAT_ELMNTO_ASGURADO.PRCNTJE_GNNCIA > PROMEDIO.VALOR 3.1.7 Saber el nmero de partes que han tenido las plizas ordenados por nmero de partes descendentemente. (pliza, partes) SELECT POLIZA.ID_POLIZA POLIZA, COUNT(*) PARTES FROM POLIZA JOIN PARTES ON POLIZA.ID_POLIZA = PARTES.ID_POLIZA GROUP BY POLIZA.ID_POLIZA ORDER BY POLIZA 3.1.8 Saber cuntas plizas se contrataron por mes de cada ao. SELECT TO_CHAR(POLIZA.FECHA_CONTRATACION TO_CHAR(POLIZA.FECHA_CONTRATACION COUNT (ID_POLIZA) POLIZAS FROM POLIZA GROUP BY TO_CHAR(POLIZA.FECHA_CONTRATACION TO_CHAR(POLIZA.FECHA_CONTRATACION ORDER BY 1 ASC ,2 ASC , 'YYYY') ANO, , 'MM') MES ,

, 'YYYY'), , 'MM')

3.1.9 Plizas mal armadas. Plizas que poseen coberturas repetidas (dentro de un paquete y a mayores) (pliza, categoras repetidas). SELECT COBERTURAS.ID_POLIZA, COBERTURAS.ID_COBERTURA, COUNT(*) VECES FROM (SELECT POLIZA.ID_POLIZA, COBERTURA_PAQUETE.ID_COBERTURA FROM POLIZA JOIN PAQUETES_POLIZA ON POLIZA.ID_POLIZA = PAQUETES_POLIZA.ID_POLIZA JOIN PAQUETE ON PAQUETE.ID_PAQUETE = PAQUETES_POLIZA.ID_PAQUETE AND PAQUETE.TVI_PAQUETE = PAQUETES_POLIZA.TVI_PAQUETE JOIN COBERTURA_PAQUETE ON COBERTURA_PAQUETE.ID_PAQUETE = PAQUETE.ID_PAQUETE AND COBERTURA_PAQUETE.TVI_PAQUETE = PAQUETE.TVI_PAQUETE UNION ALL SELECT POLIZA.ID_POLIZA, COBERTURA_EMPRESA.ID_COBERTURA FROM POLIZA JOIN COBERTURA_POLIZA ON COBERTURA_POLIZA.ID_POLIZA = POLIZA.ID_POLIZA JOIN COBERTURA_EMPRESA ON COBERTURA_EMPRESA.ID_COBERTURA = COBERTURA_POLIZA.ID_COBERTURA AND COBERTURA_EMPRESA.CIF_EMP_ASGRDRA = COBERTURA_POLIZA.CIF_EMP_ASGRDRA AND COBERTURA_EMPRESA.TVI_C = COBERTURA_POLIZA.TVI_C) COBERTURAS GROUP BY COBERTURAS.ID_POLIZA , COBERTURAS.ID_COBERTURA HAVING COUNT(*) > 1 ORDER BY ID_POLIZA

3.1.10 Obtener todas las plizas que se contrataron este mes. SELECT P.ID_POLIZA as ID_POLIZA, P.ID_CLIENTE as ID_CLIENTE, C.ID_CLIENTE as ID_CLIENTE, C.TELEFONO as TELEFONO, C.DIRECCION as DIRECCION, (MONTHS_BETWEEN(SYSDATE, FECHA_CONTRATACION)), P.FECHA_CONTRATACION as FECHA_CONTRATACION FROM CLIENTES C JOIN POLIZA P ON C.ID_CLIENTE = P.ID_CLIENTE WHERE MONTHS_BETWEEN(SYSDATE, FECHA_CONTRATACION) < 1 AND FECHA_CONTRATACION < SYSDATE 3.1.11 Obtener la antigedad del cliente, segn el elemento asegurado. SELECT COUNT (ID_POLIZA), ID_ELMNTO_ASGRADO, ID_CLIENTE, CASE COUNT (ID_POLIZA) WHEN 0 THEN 'EL CLIENTE NO TIENE ANTIGUEDAD' WHEN 1 THEN 'UN AO DE ANTIGUEDAD' WHEN 2 THEN 'DOS AOS DE ANTIGUEDAD' ELSE 'CLIENTE VIP' END AS ANTIGUEDAD FROM POLIZA GROUP BY ID_ELMNTO_ASGRADO, ID_CLIENTE 3.1.12 Cuales plizas poseen paquetes que pertenecen a distintas empresas. SELECT PAQUETES_POLIZA.ID_POLIZA FROM PAQUETE JOIN PAQUETES_POLIZA ON PAQUETES_POLIZA.ID_PAQUETE = PAQUETE.ID_PAQUETE AND PAQUETES_POLIZA.TVI_PAQUETE = PAQUETE.TVI_PAQUETE GROUP BY PAQUETES_POLIZA.ID_POLIZA HAVING COUNT (DISTINCT PAQUETE.CIF_EMP_ASGRDRA||PAQUETES_POLIZA.ID_POLIZA) > 1

3.1.13 Obtener los das de cobertura que le quedan a las plizas activas. SELECT ID_POLIZA, ID_ELMNTO_ASGRADO, FECHA_FINALIZACION, FECHA_CONTRATACION, ROUND(FECHA_FINALIZACION- SYSDATE) "DIAS DE VIGENCIA", ROUND(SYSDATE - FECHA_CONTRATACION) "DIAS PARA EXPIRAR" FROM POLIZA WHERE FECHA_FINALIZACION > SYSDATE AND (FECHA_FINALIZACION - SYSDATE ) < 365 3.1.14 Anlisis de Categoras problemticas. Seleccin de las categoras, de sus porcentaje de ganancia y del nmero de partes. SELECT CAT_ELMNTO_ASGURADO.ID_CATEGORIA, COUNT(CAT_ELMNTO_ASGURADO.ID_CATEGORIA) PARTES, CAT_ELMNTO_ASGURADO.PRCNTJE_GNNCIA FROM CAT_ELMNTO_ASGURADO JOIN POLIZA ON CAT_ELMNTO_ASGURADO.ID_CATEGORIA = POLIZA.ID_CATEGORIA AND CAT_ELMNTO_ASGURADO.TVI_CAT_ELE = POLIZA.TVI_CAT_ELE LEFT JOIN PARTES ON POLIZA.ID_POLIZA = PARTES.ID_POLIZA WHERE CAT_ELMNTO_ASGURADO.TVF IS NULL GROUP BY CAT_ELMNTO_ASGURADO.ID_CATEGORIA, CAT_ELMNTO_ASGURADO.PRCNTJE_GNNCIA

3.1.15 Las ganancias de los pagos realizados este ao. SELECT TO_CHAR(POLIZA.FECHA_CONTRATACION , 'YYYY') ANO , TO_CHAR(POLIZA.FECHA_CONTRATACION , 'MM') MES , SUM(PAGOS.IMPORTE*CAT_ELMNTO_ASGURADO.PRCNTJE_GNNCIA) "GANANCIA MENSUAL" FROM POLIZA JOIN PAGOS ON POLIZA.ID_POLIZA = PAGOS.ID_POLIZA JOIN CAT_ELMNTO_ASGURADO ON CAT_ELMNTO_ASGURADO.ID_CATEGORIA = POLIZA.ID_CATEGORIA AND CAT_ELMNTO_ASGURADO.TVI_CAT_ELE= POLIZA.TVI_CAT_ELE WHERE TO_CHAR(POLIZA.FECHA_CONTRATACION , 'YYYY') LIKE TO_CHAR(SYSDATE , 'YYYY') GROUP BY TO_CHAR(POLIZA.FECHA_CONTRATACION, 'YYYY'), TO_CHAR(POLIZA.FECHA_CONTRATACION , 'MM') ORDER BY 1 ASC ,2 ASC 3.1.16 Clientes con plizas vencidas no renovadas. SELECT CLIENTES.ID_CLIENTE , CLIENTES.TELEFONO TELEFONO , POLIZA.ID_ELMNTO_ASGRADO FROM POLIZA JOIN CLIENTES ON POLIZA.ID_CLIENTE = CLIENTES.ID_CLIENTE WHERE POLIZA.ID_ELMNTO_ASGRADO NOT IN (SELECT POLIZA.ID_ELMNTO_ASGRADO FROM POLIZA WHERE POLIZA.FECHA_FINALIZACION < SYSDATE) AND POLIZA.FECHA_FINALIZACION > SYSDATE

3.1.17 Una lista de los clientes que nos indique cuantas plizas ACTIVAS tiene contratadas un cliente y que nos diga qu tipo de cliente es y cul es el promedio de ganancia que nos da cada uno. SELECT CLIENTE.ID_CLIENTE, CLIENTE.TELEFONO, CLIENTE.DIRECCION, CLIENTE.NOMBRE, CLIENTE.TIPO_CLIENTE, COUNT(POLIZA.ID_POLIZA) POLIZAS, (SELECT AVG(CAT_ELMNTO_ASGURADO.PRCNTJE_GNNCIA) FROM CAT_ELMNTO_ASGURADO JOIN POLIZA ON CAT_ELMNTO_ASGURADO.ID_CATEGORIA = POLIZA.ID_CATEGORIA AND CAT_ELMNTO_ASGURADO.TVI_CAT_ELE = POLIZA.TVI_CAT_ELE WHERE POLIZA.ID_CLIENTE = CLIENTE.ID_CLIENTE ) PORCENTAJE_PROMEDIO FROM POLIZA JOIN (SELECT CLIENTES.ID_CLIENTE ID_CLIENTE, CLIENTES.TELEFONO TELEFONO, CLIENTES.DIRECCION DIRECCION, EMPRESA.NOMBRE_EMPRESA NOMBRE, 'EMPRESA' TIPO_CLIENTE FROM CLIENTES JOIN EMPRESA ON CLIENTES.ID_CLIENTE = EMPRESA.ID_CLIENTE UNION SELECT CLIENTES.ID_CLIENTE ID_CLIENTE, CLIENTES.TELEFONO TELEFONO, CLIENTES.DIRECCION DIRECCION, PERSONA.NOMBRE NOMBRE, 'PERSONA' TIPO_CLIENTE FROM CLIENTES JOIN PERSONA ON CLIENTES.ID_CLIENTE = PERSONA.ID_CLIENTE) CLIENTE ON POLIZA.ID_CLIENTE = CLIENTE.ID_CLIENTE WHERE POLIZA.FECHA_FINALIZACION > SYSDATE GROUP BY CLIENTE.ID_CLIENTE, CLIENTE.TELEFONO, CLIENTE.DIRECCION, CLIENTE.NOMBRE, CLIENTE.TIPO_CLIENTE

3.1.18 Las categoras sobre las que no tenemos ninguna pliza. SELECT * FROM CAT_ELMNTO_ASGURADO WHERE (CAT_ELMNTO_ASGURADO.ID_CATEGORIA, CAT_ELMNTO_ASGURADO.TVI_CAT_ELE) NOT IN (SELECT CAT_ELMNTO_ASGURADO.ID_CATEGORIA, CAT_ELMNTO_ASGURADO.TVI_CAT_ELE FROM POLIZA JOIN CAT_ELMNTO_ASGURADO ON POLIZA.ID_CATEGORIA = CAT_ELMNTO_ASGURADO.ID_CATEGORIA AND POLIZA.TVI_CAT_ELE= CAT_ELMNTO_ASGURADO.TVI_CAT_ELE) AND TVF IS NULL 3.1.19 Todas las coberturas que nos ofrece una empresa aseguradora. SELECT CE.CIF_EMP_ASGRDRA as CIF_EMP_ASGRDRA, CE.NOMBRE as NOMBRE, EA.NOMBRE as NOMBRE FROM EMPRESA_ASEGURADORA EA JOIN COBERTURA_EMPRESA CE ON CE.CIF_EMP_ASGRDRA = EA.CIF_EMP_ASGRDRA WHERE EA.NOMBRE LIKE 'NUEVO MUNDOS' UNION SELECT EA.CIF_EMP_ASGRDRA, PA.NOMBRE, EA.NOMBRE FROM PAQUETE PA FULL OUTER JOIN EMPRESA_ASEGURADORA EA ON EA.CIF_EMP_ASGRDRA = PA.CIF_EMP_ASGRDRA WHERE EA.NOMBRE LIKE 'NUEVO MUNDOS'

3.1.20 Segn el tipo de elemento asegurado saber cuntas plizas hay sobre ellos. SELECT TIPOLOGIA.TIPO CATEGORIA, COUNT(ID_CATEGORIA) POLIZAS FROM POLIZA JOIN ELMNTO_ASGURADO ON POLIZA.ID_ELMNTO_ASGRADO = ELMNTO_ASGURADO.ID_ELMNTO_ASGRADO, (SELECT ELMNTO_ASGURADO.ID_ELMNTO_ASGRADO, 'VEHICULO' TIPO FROM ELMNTO_ASGURADO JOIN VEHICULOS ON ELMNTO_ASGURADO.ID_ELMNTO_ASGRADO = VEHICULOS.ID_ELMNTO_ASGRADO UNION SELECT ELMNTO_ASGURADO.ID_ELMNTO_ASGRADO, 'INMUEBLE' TIPO FROM ELMNTO_ASGURADO JOIN INMUEBLES ON ELMNTO_ASGURADO.ID_ELMNTO_ASGRADO = INMUEBLES.ID_ELMNTO_ASGRADO ) TIPOLOGIA WHERE TIPOLOGIA.ID_ELMNTO_ASGRADO = POLIZA.ID_ELMNTO_ASGRADO GROUP BY TIPOLOGIA.TIPO ORDER BY CATEGORIA

3.2 Aplicacin de acceso


En este apartado sern comentadas las clases usadas en la aplicacin del caso de estudio: La Aplicacin de pruebas se dividi en tres Paquetes, ms el cliente paquete base: DAOs: Data Access Object: Son las clases que interactan con el manejador. BD: Business Delegate: Son las fachadas del modelo hacia el cliente. BO: Business Object: Son los objetos que representan el modelo de negocio. Encapsularn las tuplas de la BD. Paquete Base: es el cliente(main).

3.2.1 En el paquete BO:

3.2.1.1 Persona (Persona.Class) package bdii.bo; import java.sql.Date; public class Persona { private String _dni; private Date _fechaNac; private String _primerApellido; private String _segundoApellido; private String _nombre; private Cliente _cliente; public Persona() { super(); } /** * @return the _dni */ public String getDni() { return _dni; } /** * @param dni the _dni to set */ public void setDni(String dni) { this._dni = dni; } /** * @return the _fechaNac */ public Date getFechaNac() { return _fechaNac; } /** * @param fechaNac the _fechaNac to set */ public void setFechaNac(Date fechaNac) { this._fechaNac = fechaNac; } /** * @return the _primerApellido */

public String getPrimerApellido() { return _primerApellido; } /** * @param primerApellido the _primerApellido to set */ public void setPrimerApellido(String primerApellido) { this._primerApellido = primerApellido; } /** * @return the _segundoApellido */ public String getSegundoApellido() { return _segundoApellido; } /** * @param segundoApellido the _segundoApellido to set */ public void setSegundoApellido(String segundoApellido) { this._segundoApellido = segundoApellido; } /** * @return the _nombre */ public String getNombre() { return _nombre; } /** * @param nombre the _nombre to set */ public void setNombre(String nombre) { this._nombre = nombre; } /** * @return the _cliente */ public Cliente getCliente() { return _cliente; } /** * @param cliente the _cliente to set */ public void setCliente(Cliente cliente) { this._cliente = cliente; } }

3.2.1.2 Cliente (Cliente.Class) package bdii.bo; public class Cliente { private int _idCliente; private String _telefono; private String _direccion; /** * @return the _idCliente */ public int getIdCliente() { return _idCliente; } /** * @param idCliente the _idCliente to set */ public void setIdCliente(int idCliente) { this._idCliente = idCliente; } /** * @return the _telefono */ public String getTelefono() { return _telefono; } /** * @param telefono the _telefono to set */ public void setTelefono(String telefono) { this._telefono = telefono; } /** * @return the _direccion */ public String getDireccion() { return _direccion; } /** * @param direccion the _direccion to set */ public void setDireccion(String direccion) { this._direccion = direccion; } }

3.2.1.3 Empresa (Empresa.Class) package bdii.bo; public class Empresa{ private String _cif; private String _nombre; private Cliente _cliente; /** * @return the _cif */ public String getCif() { return _cif; } /** * @param cif the _cif to set */ public void setCif(String cif) { this._cif = cif; } /** * @return the _nombre */ public String getNombre() { return _nombre; } /** * @param nombre the _nombre to set */ public void setNombre(String nombre) { this._nombre = nombre; } /** * @return the _cliente */ public Cliente getCliente() { return _cliente; } /** * @param cliente the _cliente to set */ public void setCliente(Cliente cliente) { this._cliente = cliente; } }

3.2.1.4 Empresa Aseguradora (EmpAsgrdra.Class) package bdii.bo; import java.util.List; public class EmpAsgrdra { private private private private String String String String _cif; _nombre; _direccion; _telefono;

public List<Paquete> getPaquetes() { return null; } public List<Cobertura> getCoberturas() { return null; } /** * @return the _cif */ public String getCif() { return _cif; } /** * @param cif the _cif to set */ public void setCif(String cif) { this._cif = cif; } /** * @return the _nombre */ public String getNombre() { return _nombre; } /** * @param nombre the _nombre to set */ public void setNombre(String nombre) { this._nombre = nombre; } /** * @return the _direccion */ public String getDireccion() {

return _direccion; } /** * @param direccion the _direccion to set */ public void setDireccion(String direccion) { this._direccion = direccion; } /** * @return the _telefono */ public String getTelefono() { return _telefono; } /** * @param telefono the _telefono to set */ public void setTelefono(String telefono) { this._telefono = telefono; } } 3.2.1.5 Paquete (Paquete.Class) package bdii.bo; import java.sql.Date; import java.util.List; public class Paquete { private List<Cobertura> _coberturas; private String _nombre; private double _precio; private EmpAsgrdra _empresa; private Date _tvi; private Date _tvf; private int _idPaquete; /** * @return the _coberturas */ public List<Cobertura> getCoberturas() { return _coberturas; } /** * @param coberturas the _coberturas to set */

public void setCoberturas(List<Cobertura> coberturas) { this._coberturas = coberturas; } /** * @return the _nombre */ public String getNombre() { return _nombre; } /** * @param nombre the _nombre to set */ public void setNombre(String nombre) { this._nombre = nombre; } /** * @return the _precio */ public double getPrecio() { return _precio; } /** * @param precio the _precio to set */ public void setPrecio(double precio) { this._precio = precio; } /** * @return the _empresa */ public EmpAsgrdra getEmpresa() { return _empresa; } /** * @param empresa the _empresa to set */ public void setEmpresa(EmpAsgrdra empresa) { this._empresa = empresa; } /** * @return the _tvi */ public Date getTvi() { return _tvi; }

/** * @param tvi the _tvi to set */ public void setTvi(Date tvi) { this._tvi = tvi; } /** * @return the _tvf */ public Date getTvf() { return _tvf; } /** * @param tvf the _tvf to set */ public void setTvf(Date tvf) { this._tvf = tvf; } /** * @return the _idPaquete */ public int getIdPaquete() { return _idPaquete; } /** * @param idPaquete the _idPaquete to set */ public void setIdPaquete(int idPaquete) { this._idPaquete = idPaquete; } }

3.2.1.6 Cobertura (Cobertura.Class) package bdii.bo; public class Cobertura { private String _nombre; private int _idCobertura; /** * @return the _nombre */ public String getNombre() { return _nombre; } /** * @param nombre the _nombre to set */ public void setNombre(String nombre) { this._nombre = nombre; } /** * @return the _idCobertura */ public int getIdCobertura() { return _idCobertura; } /** * @param idCobertura the _idCobertura to set */ public void setIdCobertura(int idCobertura) { this._idCobertura = idCobertura; } }

3.2.1.7 Las coberturas de un paquete (CoberturaPaquete.Class) package bdii.bo; public class CoberturaPaquete { private Paquete _paquete; private Cobertura _cobertura; /** * @return the _paquete */ public Paquete getPaquete() { return _paquete; } /** * @param paquete the _paquete to set */ public void setPaquete(Paquete paquete) { this._paquete = paquete; } /** * @return the _cobertura */ public Cobertura getCobertura() { return _cobertura; } /** * @param cobertura the _cobertura to set */ public void setCobertura(Cobertura cobertura) { this._cobertura = cobertura; } }

3.2.2 En el paquete DAO:

3.2.2.1 Fbrica de Conexiones (ConnectionFactory.class)

Esta Clase tiene como principal propsito crear instancias de conexiones a la base de datos. package bdii.dao; import java.sql.Connection; import java.sql.DriverManager; public abstract class ConnectionFactory { public static Connection getConnection() { try { DriverManager.registerDriver(new oracle.jdbc.OracleDriver()); java.util.Properties prop = new java.util.Properties(); prop.put("oracle.jdbc.V8Compatible", "true"); prop.put("user", "SEGUROS"); prop.put("password", "admin"); Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", prop); //Class.forName("oracle.jdbc.driver.OracleDriver"); // Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "SEGUROS", "admin"); return conn; } catch (Exception e) { return null; } } }

3.2.2.2 Clase Basica DAO (BasicDAO.class) package bdii.dao; import import import import import import java.sql.Connection; java.sql.PreparedStatement; java.sql.ResultSet; java.sql.SQLException; java.text.DateFormat; java.text.SimpleDateFormat;

public class BasicDAO { public Connection _conn; private static final String GET_DATE = "SELECT TO_CHAR(SYSDATE,'yyyy/mm/dd:HH24:mi:ss') FECHA from dual"; public BasicDAO(Connection _conn) { this._conn = _conn; } public java.sql.Date getSYSDATE() throws SQLException { PreparedStatement ps = null; ResultSet rs = null; try { ps = _conn.prepareStatement(GET_DATE); rs = ps.executeQuery(); if (rs.next()) { System.out.println(sqlDateToString(sqlStringToDate(rs.getString("F ECHA")))); return (sqlStringToDate(rs.getString("FECHA"))); } } finally { if (rs != null) { try { rs.close(); } catch (Exception e) { e.printStackTrace(); } } if (ps != null) { try { ps.close(); } catch (Exception e) { e.printStackTrace(); } } } return null; }

protected String sqlDateToString(java.sql.Date date) { DateFormat formatter = new SimpleDateFormat("yyyy/MM/dd:HH:mm:ss"); return formatter.format(date); } protected java.sql.Date sqlStringToDate(String fecha){ DateFormat formatter = new SimpleDateFormat("yyyy/MM/dd:HH:mm:ss"); try{ java.util.Date date = formatter.parse(fecha); return new java.sql.Date(date.getTime()); }catch(Exception e){ e.printStackTrace(); return null; } } } 3.2.2.3 PersonaDAO (PersonaDAO.class) package bdii.dao; import import import import import import import import bdii.bo.Cliente; bdii.bo.Persona; java.sql.Connection; java.sql.PreparedStatement; java.sql.ResultSet; java.sql.SQLException; java.util.LinkedList; java.util.List;

public class PersonaDAO extends BasicDAO { public PersonaDAO(Connection con) { super(con); } private static final String GET_ALL_PERSONAS = " SELECT " + " CLIENTES.TELEFONO as TELEFONO, " + " CLIENTES.DIRECCION as DIRECCION, " + " PERSONA.ID_CLIENTE as ID_CLIENTE, " + " PERSONA.DNI as DNI, " + " PERSONA.FECHA_NAC as FECHA_NAC, " + " PERSONA.PRIMR_APELLIDO as PRIMR_APELLIDO, " + " PERSONA.SEGNDO_APELLIDO as SEGNDO_APELLIDO, " + " PERSONA.NOMBRE as NOMBRE " + " FROM CLIENTES join PERSONA " + " ON CLIENTES.ID_CLIENTE = PERSONA.ID_CLIENTE";

private static final String GET_NUM_PERSONAS = " SELECT " + " COUNT(*) PERSONAS " + " FROM CLIENTES join PERSONA " + " ON CLIENTES.ID_CLIENTE = PERSONA.ID_CLIENTE"; private static final String INSERT_PERSONA = "INSERT INTO PERSONA " + "(ID_CLIENTE,DNI,FECHA_NAC,PRIMR_APELLIDO,SEGNDO_APELLIDO,NOMBRE) " + " VALUES (?,?,TO_DATE(?,'yyyy/mm/dd:HH24:mi:ss'),?,?,?)"; public List<Persona> getAll() throws SQLException { PreparedStatement ps = null; ResultSet rs = null; List<Persona> personas = new LinkedList<Persona>(); try { ps = _conn.prepareStatement(GET_ALL_PERSONAS); rs = ps.executeQuery(); Persona persona; Cliente cliente; while (rs.next()) { persona = new Persona(); if (rs.getInt("ID_CLIENTE") != 0) { cliente = new Cliente(); cliente.setIdCliente(rs.getInt("ID_CLIENTE")); cliente.setTelefono(rs.getString("TELEFONO")); cliente.setDireccion(rs.getString("DIRECCION")); persona.setCliente(cliente); } persona.setDni(rs.getString("DNI")); persona.setNombre(rs.getString("NOMBRE")); persona.setPrimerApellido(rs.getString("PRIMR_APELLIDO")); persona.setSegundoApellido(rs.getString("SEGNDO_APELLIDO")); personas.add(persona); } } finally { if (rs != null) { try { rs.close(); } catch (Exception e) { e.printStackTrace(); } } if (ps != null) { try { ps.close(); } catch (Exception e) {

e.printStackTrace(); } } } return personas; } public int getNumPersonas() throws SQLException { PreparedStatement ps = null; ResultSet rs = null; try { ps = _conn.prepareStatement(GET_NUM_PERSONAS); rs = ps.executeQuery(); if (rs.next()) { return rs.getInt("PERSONAS"); } } finally { if (rs != null) { try { rs.close(); } catch (Exception e) { e.printStackTrace(); } } if (ps != null) { try { ps.close(); } catch (Exception e) { e.printStackTrace(); } } } return 0; }

3.2.2.4 PaqueteDAO (PaqueteDAO.class) package bdii.dao; import import import import import import import import bdii.bo.EmpAsgrdra; bdii.bo.Paquete; java.sql.Connection; java.sql.PreparedStatement; java.sql.ResultSet; java.sql.SQLException; java.text.DateFormat; java.text.SimpleDateFormat;

public class PaqueteDAO extends BasicDAO { public PaqueteDAO(Connection con) { super(con); } private static final String INVALIDATE_PAQUETE = "UPDATE PAQUETE SET TVF = TO_DATE(?,'yyyy/mm/dd:HH24:mi:ss') " + " WHERE " + " ID_PAQUETE = ? AND " + " TVI_PAQUETE = TO_DATE(?,'yyyy/mm/dd:HH24:mi:ss') "; private static final String NEW_PAQUETE = "INSERT INTO PAQUETE " + "(ID_PAQUETE,TVI_PAQUETE,CIF_EMP_ASGRDRA,NOMBRE,PRECIO) " + " VALUES (?,TO_DATE(?,'yyyy/mm/dd:HH24:mi:ss'),?,?,?)"; private static final String GET_PAQUETE_BY_ID = " SELECT TO_CHAR(TVI_PAQUETE,'yyyy/mm/dd:HH24:mi:ss') TVI_PAQUETE,NOMBRE,PRECIO,CIF_EMP_ASGRDRA" + " FROM PAQUETE " + " WHERE TVF IS NULL AND ID_PAQUETE = ? "; public void invalidatePaquete(Paquete paquete) throws SQLException { PreparedStatement ps = null; try { ps = _conn.prepareStatement(INVALIDATE_PAQUETE); java.sql.Date tvf = getSYSDATE(); paquete.setTvf(tvf); ps.setString(1, sqlDateToString(tvf)); ps.setInt(2, paquete.getIdPaquete()); ps.setString(3, sqlDateToString(paquete.getTvi())); ps.executeUpdate(); } finally { if (ps != null) { try { ps.close();

} catch (Exception e) { e.printStackTrace(); } } } } public void updateBO(Paquete paquete) throws SQLException { PreparedStatement ps = null; try { ps = _conn.prepareStatement(NEW_PAQUETE); ps.setInt(1, paquete.getIdPaquete()); ps.setString(2, sqlDateToString(paquete.getTvf())); ps.setString(3, paquete.getEmpresa().getCif()); ps.setString(4, paquete.getNombre()); ps.setDouble(5, paquete.getPrecio()); ps.executeUpdate(); } finally { if (ps != null) { try { ps.close(); } catch (Exception e) { e.printStackTrace(); } } } } public Paquete getById(int id) throws SQLException { PreparedStatement ps = null; ResultSet rs = null; try { ps = _conn.prepareStatement(GET_PAQUETE_BY_ID); ps.setInt(1, id); rs = ps.executeQuery(); Paquete paquete; if (rs.next()) { paquete = new Paquete(); paquete.setIdPaquete(id); paquete.setNombre(rs.getString("NOMBRE")); paquete.setPrecio(rs.getInt("PRECIO")); paquete.setTvi(sqlStringToDate(rs.getString("TVI_PAQUETE"))); EmpAsgrdra empAsgrdra = new EmpAsgrdra(); empAsgrdra.setCif(rs.getString("CIF_EMP_ASGRDRA")); paquete.setEmpresa(empAsgrdra); return paquete; } } finally { if (rs != null) { try {

rs.close(); } catch (Exception e) { e.printStackTrace(); } } if (ps != null) { try { ps.close(); } catch (Exception e) { e.printStackTrace(); } } } return null; } } 3.2.2.5 ClienteDAO (ClienteDAO.class) package bdii.dao; import import import import import bdii.bo.Cliente; java.sql.Connection; java.sql.PreparedStatement; java.sql.ResultSet; java.sql.SQLException;

public class ClienteDAO extends BasicDAO { public ClienteDAO(Connection conn) { super(conn); } private static final String INSERT_CLIENTE = "INSERT INTO CLIENTES " + "(ID_CLIENTE,TELEFONO,DIRECCION) VALUES (?,?,?)"; private static final String GET_ID = "SELECT SEQ_ID_CLIENTE.NEXTVAL id from dual"; public int newID() throws SQLException { PreparedStatement ps = null; ResultSet rs = null; try { ps = _conn.prepareStatement(GET_ID); rs = ps.executeQuery(); if (rs.next()) { return (rs.getInt("ID")); } } finally { if (rs != null) {

try { rs.close(); } catch (Exception e) { e.printStackTrace(); } } if (ps != null) { try { ps.close(); } catch (Exception e) { e.printStackTrace(); } } } return 0; } public void createBO(Cliente cliente) throws SQLException { PreparedStatement ps = null; try { ps = _conn.prepareStatement(INSERT_CLIENTE); int idCliente = newID(); ps.setInt(1, idCliente); cliente.setIdCliente(idCliente); ps.setString(2, cliente.getTelefono()); ps.setString(3, cliente.getDireccion()); System.out.println(INSERT_CLIENTE); ps.executeUpdate(); } finally { if (ps != null) { try { ps.close(); } catch (Exception e) { e.printStackTrace(); } } } } }

3.2.2.6 CoberturaPaqueteDAO (CoberturaPaqueteDAO.class) package bdii.dao; import import import import bdii.bo.Paquete; java.sql.Connection; java.sql.PreparedStatement; java.sql.SQLException;

public class CoberturaPaqueteDAO extends BasicDAO { public CoberturaPaqueteDAO(Connection con) { super(con); } private static final String DUPLICATE_COBERTURA_PAQUETE = " INSERT INTO COBERTURA_PAQUETE " + "(ID_COBERTURA, ID_PAQUETE, TVI_PAQUETE) " + " (SELECT ID_COBERTURA, ID_PAQUETE, TO_DATE(?,'yyyy/mm/dd:HH24:mi:ss') FROM " + " COBERTURA_PAQUETE WHERE " + " ID_PAQUETE = ? " + " AND TVI_PAQUETE = TO_DATE(?,'yyyy/mm/dd:HH24:mi:ss') )"; public void duplicateCoberturas(Paquete paquete) throws SQLException { PreparedStatement ps = null; try { ps = _conn.prepareStatement(DUPLICATE_COBERTURA_PAQUETE); ps.setString(1, sqlDateToString(paquete.getTvf())); ps.setInt(2, paquete.getIdPaquete()); ps.setString(3, sqlDateToString(paquete.getTvi())); ps.executeUpdate(); } finally { if (ps != null) { try { ps.close(); } catch (Exception e) { e.printStackTrace(); } } } } }

3.2.2.7 EmpresaDAO (EmpresaDAO.class) package bdii.dao; import import import import import import import import bdii.bo.Cliente; bdii.bo.Empresa; java.sql.Connection; java.sql.PreparedStatement; java.sql.ResultSet; java.sql.SQLException; java.util.LinkedList; java.util.List;

/** * * @author master banca */ public class EmpresaDAO extends BasicDAO { public EmpresaDAO(Connection con) { super(con); } private static final String GET_ALL_EMPRESAS = " SELECT " + " CLIENTES.TELEFONO as TELEFONO, " + " CLIENTES.DIRECCION as DIRECCION, " + " EMPRESA.ID_CLIENTE as ID_CLIENTE, " + " EMPRESA.CIF as CIF, " + " EMPRESA.NOMBRE_EMPRESA as NOMBRE_EMPRESA " + " FROM CLIENTES join EMPRESA " + " ON CLIENTES.ID_CLIENTE = PERSONA.ID_CLIENTE"; public List<Empresa> getAll() throws SQLException { PreparedStatement ps = null; ResultSet rs = null; List<Empresa> empresas = new LinkedList<Empresa>(); try { ps = _conn.prepareStatement(GET_ALL_EMPRESAS); System.out.println(GET_ALL_EMPRESAS); rs = ps.executeQuery(); Empresa empresa; Cliente cliente; while (rs.next()) { empresa = new Empresa(); if (rs.getInt("ID_CLIENTE") != 0) { cliente = new Cliente(); cliente.setIdCliente(rs.getInt("ID_CLIENTE")); cliente.setTelefono(rs.getString("TELEFONO")); cliente.setDireccion(rs.getString("DIRECCION")); empresa.setCliente(cliente);

} empresa.setCif(rs.getString("CIF")); empresa.setNombre(rs.getString("NOMBRE_EMPRESA")); empresas.add(empresa); } } finally { if (rs != null) { try { rs.close(); } catch (Exception e) { e.printStackTrace(); } } if (ps != null) { try { ps.close(); } catch (Exception e) { e.printStackTrace(); } } } return empresas; } }

3.2.3 En el Paquete BD:

3.2.3.1 Delegado para operaciones con clientes ( ClienteBD.class) package bdii.bd; import import import import import import bdii.bo.Persona; bdii.dao.ClienteDAO; bdii.dao.ConnectionFactory; bdii.dao.PersonaDAO; java.sql.Connection; java.util.List;

public class ClientesBD { public void addPersona(Persona persona){ Connection con = null; try { con = ConnectionFactory.getConnection(); con.setAutoCommit(false); con.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE); ClienteDAO clienteDAO = new ClienteDAO(con); clienteDAO.createBO(persona.getCliente()); PersonaDAO personaDAO = new PersonaDAO(con); personaDAO.createBO(persona); con.commit(); } catch (Exception e) { e.printStackTrace(); try{ con.rollback(); }catch(Exception t){ } } finally { if (con != null) { try{ con.close(); }catch(Exception e){ } } } } public List<Persona> getPersonas(){ Connection con = null; try { con = ConnectionFactory.getConnection(); PersonaDAO personaDAO = new PersonaDAO(con); List<Persona> personas = personaDAO.getAll(); return personas; } catch (Exception e) {

e.printStackTrace(); return null; } finally { if (con != null) { try{ con.close(); }catch(Exception e){ } } } } public int getNumPersonas(){ Connection con = null; try { con = ConnectionFactory.getConnection(); PersonaDAO personaDAO = new PersonaDAO(con); int personas = personaDAO.getNumPersonas(); return personas; } catch (Exception e) { e.printStackTrace(); return 0; } finally { if (con != null) { try{ con.close(); }catch(Exception e){ } } } } }

3.2.3.2 Delegado para operaciones de compras (ComprasBD.class) package bdii.bd; import import import import import import bdii.Exceptions.NoPackageFound; bdii.bo.Paquete; bdii.dao.CoberturaPaqueteDAO; bdii.dao.ConnectionFactory; bdii.dao.PaqueteDAO; java.sql.Connection;

public class ComprasBD { public void cambiarPrecioPaquete(double newPrice, int id_paquete) throws NoPackageFound { Connection con = null; try { con = ConnectionFactory.getConnection(); con.setAutoCommit(false); con.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE); PaqueteDAO paqueteDAO = new PaqueteDAO(con); Paquete paquete = paqueteDAO.getById(id_paquete); if (paquete != null) { paquete.setPrecio(newPrice); paqueteDAO.invalidatePaquete(paquete); paqueteDAO.updateBO(paquete); CoberturaPaqueteDAO coberturaPaqueteDAO = new CoberturaPaqueteDAO(con); coberturaPaqueteDAO.duplicateCoberturas(paquete); con.commit(); } else { throw new NoPackageFound(); } } catch (Exception e) { e.printStackTrace(); try { con.rollback(); } catch (Exception t) { } } finally { if (con != null) { try { con.close(); } catch (Exception e) { } } } } }

3.2.4 Paquete Base:

Para la aplicacin se crearon cuatro usos: Se crea un objeto cliente, al que se le coloca como direccin "Venezuela" como telfono "12345". Se crea una persona con DNI "312654" con nombre "Belen" y apellido "Esteban" y se almacena en base de datos. El sistema nos arroja un mensaje de "Se ha insertado correctamente en Persona". Luego, a ese mismo objeto Persona se le modifica el DNI "3126533123123" Con una longitud mayor a la que acepta la base de datos. El resultado de esta operacin es que se hace un "Roll Back" de la operacin de insercin en la tabla cliente, ya que se ha producido un error en la insercin en la tabla Persona. El siguiente uso de la aplicacin es que se imprime por pantalla la lista de personas que tiene la base de datos. Se imprime por pantalla una consulta de valor nico. Se imprime la cantidad de personas que tenemos en la base de datos. Se cambia el precio del paquete que tiene id = 1. Para esto se modifica el campo tvf de la tupla que representa el paquete. Se crea una nueva tupla con el tvi igual al tvf anterior. Se crea una nueva tupla en la tabla coberturas_paquete por cada cobertura asociada anteriormente con este paquete.

3.2.4.1 Cliente (Main.class) public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { Cliente cliente1 = new Cliente(); cliente1.setDireccion("venezuela"); cliente1.setTelefono("12345"); Persona persona = new Persona(); persona.setCliente(cliente1); persona.setDni("312654"); Calendar cal = Calendar.getInstance(); persona.setFechaNac(new java.sql.Date(cal.getTimeInMillis())); persona.setNombre("Belen");

persona.setPrimerApellido("Esteban"); ClientesBD clientesBD = new ClientesBD(); clientesBD.addPersona(persona); //se cambia el dni con una extension mayor a la admitida persona.setDni("312653123214"); //se intenta guardar en la base de datos... clientesBD.addPersona(persona); //Resultado: // no guarda ni persona ni cliente.... //consulta de una listad de valores... System.out.println("Listado de personas"); for (Persona personaC : clientesBD.getPersonas()) { System.out.println("Nombre: " + personaC.getNombre() + ", Dni: " + personaC.getDni() + ", Telefono: " + personaC.getCliente().getTelefono()); } //consulta de un unico valor... System.out.println(); System.out.println("Actualmente en la base dedatos hay: " + clientesBD.getNumPersonas()+ " Personas"); // se cambia el precio de un paquete: esto crea un nuevo regirtro en la tabla paquete . // y una copia por cada regitro en la tabla de coberturas para dicho paquete try { ComprasBD comprasBD = new ComprasBD(); comprasBD.cambiarPrecioPaquete(150, 1); } catch (NoPackageFound e) { e.printStackTrace(); } } }

S-ar putea să vă placă și