REPOSITORIO DE METADATOS DE COMPONENTES DE SOFTWARE PARA PYMES COLOMBIANAS David Ortega y Jorge A. Beltrán Carrera de Ingeniería de Sistemas Universidad Javeriana Bogotá, Colombia {david.ortega, jnull}@javeriana.edu.co Este documento muestra el estado actual de los triggers que son los que ahora mismo manejan la lógica del repositorio, esto se hace con el fin de ver como podemos mejorar el desempeño de las consultas y hacer un adecuado modelo que nos permita soportar el manejo de las versiones que pueden tener los componentes en el repositorio. TRIGGERS O DISPARADORES En la Base de Datos, se definieron 36 triggers, los cuales en su totalidad son utilizados para mantener restricciones de integridad, en operaciones DML (INSERT, UPDATE y DELETE), y enviar mensajes de error, en la mayoría de ellos se ejecutan select a la Base de datos los cuales pueden resultar costos cuando la base de datos crezca. Estos trigger se pueden optimizar: Agrupando las operaciones de Insert y Update o delete y update de una misma tabla los cuales realizan la misma función. Verificar las relaciones entre tablas y definir los constraint de integridad necesarios. Verificar si los select definidos son indispensables Después de analizar en detalle cada uno de los triggers, se concluyo que es importante definir todas las relaciones de integridad entre las tablas FK, para no hacer uso de triggers, no son indispensables los select que están definidos dentro de cada triggers, los cuales son utilizados para validar la integridad de la información. TD_CONTRIBUTOR: Este trigger se dispara después de realizar un DELETE a la tabla contributor por cada fila que borre. Cuenta los registros existentes en la tabla xdc_contributor cuya parámetro de comparación es el numero id_contributor con el id_contributor de la tabla xdc_contributor que se esta borrando, si existen registros con ese identificador entonces genera un el error 'Cannot DELETE contributor because xdc_contributor exists.' , Modificación: Este triggers será eliminado de la base de datos, pues al verificar en la tabla xdc_contributor, existe la llave foránea SYS_C004311 a la tabla contributor cuya FK realiza la función de integridad, en caso de realizar un delete en la tabla contributor., el mensaje de error debe ser manejado de lado del servidor de aplicaciones a través del manejo de excepciones, evitando así select innecesarios que afectan los tiempos de respuesta en el procesamiento de información. TU_CONTRIBUTOR Este trigger se dispara después de realizar un UPDATE a la tabla contributor por cada fila que se actualice Cuenta los registros existentes en la tabla xdc_contributor cuya parámetro de comparación del numero id_contributor con el id_contributor de la tabla contributor que se esta actualizando, si existen registros con ese identificador entonces genera un el error “Cannot UPDATE contributor because xdc_contributor exists.'. Modificación: Este triggers será eliminado de la base de datos, pues al verificar en la tabla xdc_contributor, existe la llave foránea a la tabla contributor cuya FK realiza la función de integridad, en caso de realizar un update en la tabla contributor., el mensaje de error debe ser manejado de lado del servidor de aplicaciones a través del manejo de excepciones, evitando así select innecesarios TD_CREATOR Este trigger se dispara después de realizar un DELETE a la tabla creador por cada fila que borre. Cuenta los registros existentes en la tabla xdc_Creator cuya parámetro de comparación del numero id_ creator con el id_ creator de la tabla creator que se esta borrando, si existen registros con ese identificador entonces genera un el error “Cannot DELETE creator because xdc_Creator exists.' Modificación: Este triggers será eliminado de la base de datos, pues al verificar en la tabla xdc_contributor, existe la llave foránea SYS_C004313 a la tabla contributor cuya FK realiza la función de integridad, en caso de realizar un delete en la tabla contributor., el mensaje de error debe ser manejado de lado del servidor de aplicaciones a través del manejo de excepciones, evitando así select innecesarios TU_CREATOR Este trigger se dispara después de realizar un UPDATE a la tabla creator por cada fila que se actualice. Verifica que el nuevo id_creator sea diferente al anterior id_creator si esto es verdadero, cuenta los registros existentes en la tabla xdc_ creator cuya parámetro de comparación del numero id_ creator con el id_ creator de la tabla creator que se esta actualizando, si existen registros con ese identificador entonces genera un el error “Cannot UPDATE creator because xdc_Creator exists.” Modificación: Este triggers será eliminado de la base de datos, pues al verificar en la tabla xdc_contributor, existe la llave foránea SYS_C004313 a la tabla contributor cuya FK realiza la función de integridad, en caso de realizar un update en la tabla contributor., el mensaje de error debe ser manejado de lado del servidor de aplicaciones a través del manejo de excepciones, evitando así select innecesarios TI_DATE_XDC Este trigger se dispara después de realizar un INSERT a la tabla date_xdc por cada fila que se inserte Cuenta los registros existentes en la tabla xdc_sc cuya parámetro de comparación del numero id_ xdc con el id_ xdc de la tabla date_xdc que se esta insertando, si no existen registros con ese identificador entonces genera un error “Cannot INSERT date_xdc because xdc_sc does not exist.'. Modificación: Se creara una llave foranea en la tabla xdc_sc referenciando la tabla date_xdc con el fin de manejar la integridad y poder eliminar este triggers. TU_DATE_XDC Este trigger se dispara después de realizar un UPDATE a la tabla date_xdc por cada fila que se actualice. Cuenta los registros existentes en la tabla xdc_sc cuya parámetro de comparación del numero id_ xdc con el nuevo id_xdc de la tabla date_xdc que se esta actualizando, si el conteo es igual a cero entonces genera el error “Cannot UPDATE date_xdc because xdc_sc does not exist.'” Modificación: Aplica la misma modificación del triggerr TI_DATE_XDC, y así poder eliminarlo. TI_DESCRIPTION Este trigger se dispara después de realizar un INSERT a la tabla Description cada fila que se inserte Cuenta los registros existentes en la tabla xdc_sc cuyo parámetro de comparación del numero id_ xdc con el nuevo id_ xdc de la tabla Description que se esta insertando, si no existen registros con ese identificador entonces genera un error “'Cannot INSERT Description because xdc_sc does not exist.” También cuenta los registros que existen en la tabla programming_language Cuyo parámetro de comparación id_programming_language con el nuevo id_ programming_language de la tabla Description si el resultado es igual a cero se genera el error “Cannot INSERT Description because programming_language does not exist.” Modificación: Se eliminara este triggers porque ya existe una .FK en la tabla Description que realizar la misma función del select que esta dentro del trigger. TU_DESCRIPTION Este trigger se dispara después de realizar un UPDATE a la tabla Description cada fila que se actualice. Cuenta los registros existentes en la tabla Description cuya parámetro de comparación del numero id_ xdc con el nuevo id_xdc de la tabla Description que se esta actualizando, si el conteo es igual a cero entonces genera el error 'Cannot UPDATE Description because xdc_sc does not exist.' También cuenta los registros que existen en la tabla programming_language Cuyo parámetro de comparación id_programming_language con el nuevo id_ programming_language de la tabla Description si el resultado es igual a cero se genera el error “'Cannot UPDATE Description because programming_language does not exist.” Modificación: Se eliminara este triggers porque ya existe una .FK en la tabla Description que realizar la misma función del select que esta dentro del trigger. Lo triggers relacionados a continuación cumplen funciones similares y consideramos que no es necesaria su descripción en razón a la similitud con los anteriormente descritos, en su mayoría serán eliminados TI_FORMAT Se eliminara porque existe un constraint de FK llamado SYS_C004304 TU_FORMAT Se eliminara porque existe un constraint de FK llamado SYS_C004304 TD_OPERATING_SYSTEM Se eliminara porque existe un constraint de FK llamado SYS_C004305 TU_OPERATING_SYSTEM Se eliminara porque existe un constraint de FK llamado SYS_C004305 TD_PROGRAMMING_LANGUAGE Se eliminara porque existe un constraint de FK llamado SYS_C004303 TU_PROGRAMMING_LANGUAGE Se eliminara porque existe un constraint de FK llamado SYS_C004303 TD_PUBLISHER Se eliminara porque existe un constraint de FK llamado SYS_C004315 TU_PUBLISHER Se eliminara porque existe un constraint de FK llamado SYS_C004315 TI_RELATION Se eliminara porque existe un constraint de FK llamado SYS_C004306 TU_RELATION Se eliminara porque existe un constraint de FK llamado SYS_C004306 TI_RIGHTS Se eliminara porque existe un constraint de FK llamado SYS_C004307 TU_RIGHTS Se eliminara porque existe un constraint de FK llamado SYS_C004307 TI_SUBJECT Se eliminara porque existe un constraint de FK llamado SYS_C004308 TU_ SUBJECT Se eliminara porque existe un constraint de FK llamado SYS_C004308 TI_TITLE Se eliminara porque existe un constraint de FK llamado SYS_C004309 TI_TITLE Se eliminara porque existe un constraint de FK llamado SYS_C004309 TD_USUARIO Se eliminara porque existe un constraint de FK llamado SYS_C004316 TU_USUARIO Se eliminara porque existe un constraint de FK llamado SYS_C004316 TI_XDC_CONTRIBUTOR Se eliminara porque existe un constraint de FK llamado SYS_C004311 TU_XDC_CONTRIBUTOR Se eliminara porque existe un constraint de FK llamado SYS_C004311 TI_XDC_CREATOR Se eliminara porque existe un constraint de FK llamado SYS_C004313 TU_XDC_CREATOR Se eliminara porque existe un constraint de FK llamado SYS_C004313 TI_XDC_PUBLISHER Se eliminara porque existe los constraint de FK llamados SYS_C004314 TU_XDC_PUBLISHER Se eliminara porque existe los constraint de FK llamados SYS_C004314 SYS_C004315 y SYS_C004315 y TD_XDC_SC Se eliminara porque existe los constraint de FK llamados SYS_C004313, SYS_C004302, SYS_C004304, SYS_C004314, SYS_C004308, SYS_C004309 TI_XDC_SC Se eliminara porque existe los constraint de FK llamados SYS_C004313, SYS_C004302, SYS_C004304, SYS_C004314, SYS_C004308, SYS_C004309 SYS_C004301, SYS_C004307, SYS_C004301, SYS_C004307, TU_XDC_SC Se eliminara porque existe los constraint de FK llamados SYS_C004301, SYS_C004313, SYS_C004302, SYS_C004304, SYS_C004307, SYS_C004314, SYS_C004308, SYS_C004309