METODOLOGIA MODELAMIENTO DE DATOS ANALISIS ORGANIZACIONAL BASES DE DATOS FISICAS chequeos cruzados MODELO DATOS CORPORATIVO BASES DE DATOS PROPUESTAS MODELO DATOS CONCEPTUAL VISTAS USUARIOS Planificación BD Top-down Diseño de BD Bottom-up Planificación y Diseño de Bases de Datos Diseño de Bases de Datos 1 HOSPITAL mantiene realiza tiene LABORATORIO TURNOS es_asign ado a MEDICOS realiza diagnostica trata es_asign ado EXAMENES PACIENTE STAFF se_toma usa ITEMS FARMACIA ITEMS PROVEEDOR provee dado_por PROVEEDOR Modelo Corporativo Ejemplo Hospital Diseño de Bases de Datos 2 Requerimientos de Procesamiento Requerimientos de Información ETAPA 1 Formulación y Análisis de Requerimientos Características del DBMS Especificación de Requerimientos ETAPA 2 Diseño Conceptual Modelo de Datos Corporativo Modelo de Datos Conceptual ETAPA 3 Diseño de la Implementación Modelo de Datos Interno y Especificaciones de Programas de Aplicación Etapas en el Diseño de Bases de Datos Diseño de Bases de Datos 3 Especificación de Requerimientos PASO1 Normalización PASO 2 Integración de Vistas Pasos en la Etapa de Diseño Conceptual PASO 3 Generación del MDC PASO 4 Revisión del Diseño PASO 5 Mapeo de Acceso Lógico Diseño de Bases de Datos Modelo de Datos Conceptual 4 Modelo de Datos Conceptual Características DBMS PASO 1 Distribución de Datos PASO 2 Organización de Archivos PASO 3 Indexación PASO 4 Restricciones de Integridad Modelo de Datos Interno PASO 5 Mapeo a Modelo Interno PASO 6 Diseño de Programas Especificaciones de Programas de Aplicación Etapa Diseño de la Implementación Diseño de Bases de Datos 5 • Paso 1: Distribución de Datos • • • • • • Centralizada Particionada Replicada Híbrida Paso 2: Organización de Archivos • Investigar cuáles son las organizaciones de archivos y sus características más importantes. Paso 3: Indexación Ejemplo: Se tiene una BD relacional y se desea crear un índice para la tabla PACIENTE con su atributo clave primaria #PACIENTE, el comando SQL necesario sería: CREATE UNIQUE INDEX PACINDEX ON PACIENTE (#PACIENTE) En cambio si se desea recuperar filas de una tabla a través de atributos que no son claves primarias, la palabra UNIQUE no debe ir. Ejemplo: CREATE INDEX ISAINDEX ON PACIENTE (ISAPRE) En el caso En el caso de atributos no clave primaria, también es posible definir un índice de tipo clustering, el cual agrupa las filas de una tabla que tienen un valor común para un cierto atributo en un cluster para recuperación rápida. Esto se usa generalmente cuando se desea obtener las filas en orden alfabético (o ascendente) del valor del atributo no clave, es decir, en un orden físico diferente al original. Ejemplo, si se desea obtener un reporte de los pacientes ordenados alfabéticamente por la ISAPRE en que están, es necesario el siguiente comando: CREATE INDEX CLUSTER Diseño de Bases de Datos CLUINDEX ON PACIENTE (ISAPRE) 6 Sugerencias para el uso de índices: ) Especificar un índice único (UNIQUE) para el atributo clave primaria de cada tabla. ) Especificar un índice para claves foráneas que son utilizadas como enlaces entre tablas. ) Especificar un índice para atributos no claves que son referenciados en comandos para calificar o condicionar una búsqueda, ordenar y agrupar (en SQL, éstos son las cláusulas WHERE, ORDER BY y GROUP BY respectivamente). • Paso 4: Restricciones de Integridad En este paso se deben definir las denominadas reglas del negocio, o especificaciones que preservan la integridad de la base de datos. Existen cuatro tipos de reglas del negocio: integridad de entidades integridad referencial dominios y triggers. Estas deben ser incorporadas en el diccionario de datos. Se explicarán suponiendo una BD relacional. Integridad referencial PRODUCTO #Producto Nom-Prod 100 Silla 200 Mesa 300 Sillón 400 Escritorio #Bodega 10 40 30 10 BODEGA #Bodega Dirección-Bod 10 Santiago 20 Rancagua 30 Valparaíso 40 Viña del Mar Fono-Bod 3344557 225643 665053 971155 Tablas con Integridad Referencial Regla de inserción PRODUCTO #Producto Nom-Prod 100 Silla 200 Mesa 300 Sillón 400 Escritorio 500 Estante #Bodega 10 40 30 10 null Clave Foránea con Valor Nulo Regla de eliminación Restrictiva: restrictiva: no permite que se realice la eliminación. Diseño de Bases de Datos 7 Con valor nulo: pone en nulo el valor del #Bodega en todas las filas de la tabla PRODUCTO que hagan referencia a él y luego borra la fila de la Bodega #10 desde la tabla BODEGA. PRODUCTO #Producto Nom-Prod 100 Silla 200 Mesa 300 Sillón 400 Escritorio #Bodega null 40 30 null BODEGA #Bodega 20 30 40 Dirección-Bod Fono-Bod Rancagua 225643 Valparaíso 665053 Viña del Mar 971155 Tablas con Integridad Referencial por Eliminación con Valor Nulo En cascada: borra todas las filas de la tabla PRODUCTO que tengan el valor 10 para el #Bodega, y luego borra la Bodega #10 desde tabla BODEGA. PRODUCTO #Producto Nom-Prod 200 Mesa 300 Sillón #Bodega 40 30 BODEGA #Bodega 20 30 40 Dirección-Bod Fono-Bod Rancagua 225643 Valparaíso 665053 Viña del Mar 971155 Tablas con Integridad Referencial por Eliminación en Cascada Las restricciones de integridad referencial debieran ser posibles de declarar en un RDBMS cuando se definen las tablas, y posteriormente el mismo RDBMS debiera controlar su cumplimiento. De no ser así, cada programa de aplicación debiera contener la lógica necesaria para realizar este control de integridad. Dominio: es el conjunto de tipos de datos y rangos de valores que los diferentes atributos pueden asumir. Típicas definiciones de dominio especifican características de los atributos como: tipo de dato, largo, formato, rango, valores permitidos, significado, unicidad y si puede o no contener valor nulo. El uso de dominios permite verificar que los valores para un atributo son válidos en operaciones de inserción o actualización, asegurar que ciertas operaciones de manipulación de datos (como joins o uniones en RDBMS) son válidas y reducir el esfuerzo en la descripción de las características de los atributos al poder ser esta definición usada para diferentes atributos. Triggers: una operación triggering es una regla que controla la validez de las operaciones de manipulación de datos como insert, delete y update. El alcance de un trigger puede ser para atributos dentro de una entidad o extenderse a atributos en dos o más entidades. Reglas del negocio complejas pueden ser a menudo Diseño de Bases de Datos 8 establecidas a través de operaciones de triggering. Una operación de este tipo normalmente incluye las siguientes componentes: ) Regla del Usuario: sentencia que requiere ser cumplida (por ejemplo, Cantidad-Girada no puede exceder al Saldo de una cuenta corriente). ) Evento: operación de manipulación de datos (insert, delete o update) que tiene que ocurrir para que se active el trigger (por ejemplo, insert GIRO). ) Nombre de la Entidad: nombre de la entidad que está siendo accesada y/o modificada (en el ejemplo, sería la entidad GIRO). ) Condición: condición que causa que la operación sea controlada por el trigger (por ejemplo, Cantidad-Girada < Saldo). ) Acción: acción tomada cuando la operación ejecuta el trigger (por ejemplo, se rechaza el insert). Finalmente, se puede concluir que el hecho de remover las reglas del negocio de los programas de aplicación e incorporarlas al diccionario de datos tiene varias ventajas importantes: ) Menos tiempo de desarrollo de las aplicaciones y menos errores. ) Reduce esfuerzo en mantención. ) Facilita la adaptación a cambios en el negocio. ) Facilita la relación con el usuario final en el desarrollo de nuevos sistemas y en la manipulación de los datos. ) Reduce tiempo y esfuerzo para capacitar a los programadores de aplicaciones. ) Promueve mayor facilidad para usar una base de datos. PASO 5 Mapeo a Modelo Interno Consiste en transformar el modelo de datos conceptual a un modelo procesable en el DBMS (o modelo interno, modelo lógico o schema de la BD). La transformación es hacia un modelo jerárquico, red o relacional, dependiendo del DBMS disponible PACIENTE (#Paciente,Nom-Pac,Direc-Pac,Fono-Pac, #Cama, ISAPRE) Diseño de Bases de Datos 9 CAMA (#Cama,Citófono, Tipo-Cama, #Pieza, #Paciente) MEDICO (#Médico,Nom-Med,Direc-Méd,Fono-Méd, Especialidad) TRATAMIENTO (#Paciente,#Médico,Diagnóstico) ITEMS (#Item,Nom-Item,Stock,Valor-Unitario) GASTOS (#Paciente,#Item,Valor-Gastado) Diseño de Bases de Datos 10 CAMA CALC #Cama, Citófono, #Pieza, Tipo-Cama ASIGNADA MEDICO CALC #Médico, Nom-Med, Direc-Méd, Fono-Méd, Especialidad REALIZA PACIENTE #Paciente, Nom-Pac, Direc-Pac, Fono-Pac, ISAPRE RECIBE TRATAMIENTO VIA REALIZA #Paciente, #Médico, Diagnóstico ITEMS CALC CALC #Item, Nom-Item, Stock, Valor-Unitario INCURRE GASTOS PROVEE VIA INCURRE #Paciente, #Item, Valor_Gastado Modelo de Datos de Red para Ejemplo del Hospital Diseño de Bases de Datos 11 CAMA MEDICO #Médico, Nom-Med, Direc-Méd, Fono-Méd, #Cama, Citófono, #Pieza,Tipo-Cama Especialidad PACIENTE #Paciente, Nom-Pac, Direc-Pac, Fono-Pac, ISAPRE, #Cama ITEMS PACIENTE #Paciente, Nom-Pac, Direc-Pac, Fono-Pac, ISAPRE, #Cama #Item, Nom-Item, Stock, Valor-Unitario TRATAMIENTO TRATAMIENTO GASTOS GASTOS #Paciente, #Médico, Diagnóstico #Paciente, #Médico, Diagnóstico #Paciente, #Item, Valor_Gastado #Paciente, #Item, Valor_Gastado Figura.a. Modelo de Datos Jerárquico para Ejemplo del Hospital Diseño de Bases de Datos 12 MEDICO #Médico, Nom-Med, Direc-Méd, Fono-Méd, Especialidad TRATAMIENTO #Paciente, Diagnóstico ITEMS PACIENTE #Paciente, Nom-Pac, Direc-Pac, Fono-Pac, ISAPRE, #Cama PUNTERO TRATAMIENTO GASTOS #Item, Nom-Item, Stock, l PUNTERO GASTOS #Paciente, Valor_Gastado Figura.b. Modelo de Datos Jerárquico en IMS para Ejemplo del Hospital Paso 6: Diseño de Programas Para diseñar las aplicaciones o programas de aplicación que permitan manipular la base de datos, es posible utilizar una técnica estructurada de documentación. Esta técnica consiste en los DAD (Data Base Action Diagrams), los cuales son diagramas de acción que muestran la secuencia de acciones a ser realizadas sobre la base de datos. Los DAD son una extensión de los LAM, ya que detallan el proceso que puede haber detrás de la navegación que se exhibe en el LAM. Diseño de Bases de Datos 13