Está en la página 1de 6

Tarea 3 Recuperacin de Informacin o o

Patricio Horth 201002013-4 Pablo Rozas 201073075-1 21 de julio de 2012

1.
1.1.

Modelo de datos propuesto


Detalle de las modicaciones:
Se agregaran dos campos extra en la tabla de medicos uno de los campos agregados correspondera a un contador de los convenios del medico Un campo de los agregados correspondera a un contador de las especialidades de cada medico Agregar estas dos mejoras prentende que se ahorren costos a la hora de contar las especialidades y convenios que tiene cada medico , para determinar el maximo posible por cada uno de estos, evitando acceder a los archivos medico especialidad y medico convenio.

1.2.

El nuevo modelo:

Figura 1: El modelo nuevo integra en la tabla medicos,correspondiente a la estructura de cada medico dos contadores, uno para los convenios y otro para las especialidades que registrara cada medico.

2.

PostgreSQL v/s MySQL


A continuacin se presenta la tabla comparativa entre estos dos motores: o PostgreSQL Implementa el uso de transacciones, rollbacks y subconsultas, haciendo mas ecaz su funcionamiento Posee gran escalabilidad(propiedad deseable de un sistema, una red o un proceso, que indica su habilidad para extender el margen de operaciones sin perder calidad), puede ajustarse al nmero de CPUs u y a la memoria del sistema de forma ptima, logrando o que soporte mayor cantidad de peticiones simultaneas de forma correcta Es de 2 a 3 veces ms lento. Su rendimiento puede ser a compensado usando indexacin parcial, TOAST de o compresin de datos y mayor asignacin de memoria o o de forma predeterminada. Consume gran cantidad de recursos Puede comprimir y descomprimir datos sobre la marcha con su sistema que encaja ms datos en un esa pacio de disco ya asignado. La lectura de datos tiene menos costos, siendo ms rpida. a a Tiene la capacidad de comprobar la integridad referencial, as como tambin la de almacenar proced e imientos en la propia base de datos, equiparndolo a con los gestores de bases de datos de alto nivel, como puede ser Oracle. COUNT(*) es muy lento, pues recorre secuencialmente las las de una tabla. Menos funciones en PHP Incluye herencia entre tablas (aunque no entre objetos, ya que no existen), por lo que a este gestor de bases de datos se le incluye entre los gestores objetorelacionales Tiene mejor soporte para triggers y procedimientos en el servidor por su exibilidad con los lenguajes de programacin o Los usuarios no centran su uso en ella para la web, sino que la usan como competidora para tareas en donde normalmente se usar motores ms an a poderosos. MySQL No tiene soporte para rollbacks, transacciones y subconsultas No implementa buena escalabilidad, por lo que no sirve para trabajar con grandes bases de datos a las que se acceda continuamente

Velocidad a la hora de realizar operaciones, lo que le hace uno de los gestores que ofrecen mayor rendimiento Es de bajo consumo, puede ser ejecutado sin problemas en una mquina con escasos recursos a Baja probabilidad de corromper los datos, an cuanu do los errores no se produzcan en el propio gestor, si no en el sistema en el que se encuentra No maneja la integridad referencial, hace de este gestor una solucin pobre para muchos campos de o aplicacin, sobre todo para aquellos programadores o que provienen de otros gestores que s que poseen esta caracter stica. Utiliza COUNT(*) y adems una cach que permite a e agilizar las operaciones. Mejor integracin con PHP o Se comporta mejor que Postgres a la hora de modicar o aadir campos a una tabla en caliente. n

Los triggers slo pueden ser activados con comandos o SQL Es bastante extendido su uso para trabajar en la web.

Por lo tanto, si se quiere saber cul motor entre estos dos (u otros) es mejor, la respuesta simplea mente depender de los requerimientos pedidos a la hora de trabajar. a

3.

Investigacin de las funcionalidades o


Triggers:Son acciones que se programan para ser ejecutadas automticamente en ciertas tablas a de la base de datos en respuesta a ciertos eventos. Dependiendo de la base de datos, los triggers pueden ser de; insercin, actualizacin o eliminacin o o o Por ejemplo: CREATE TRIGGER elim_usuario BEFORE DELETE on usuario FOR EACH ROW EXECUTE PROCEDURE elimina_usuario(); Procedimientos: Una subrutina o procedimiento es una parte de cdigo fuente dentro de un o programa ms grande que realiza una tarea espec a ca y es relativamente independiente del resto del cdigo. Este se comporta en gran medida como un programa que es usado como un paso o de un programa mayor. Estos generalmente son programados para que puedan ser iniciados (llamados) varias veces y/o de varios lugares -incluyendo otras subrutinas- durante una ejecucin o del programa.Pueden ser programados tanto en lenguaje PL/SQL, PL/pgSQL como en C, Java, etc. Por ejemplo: CREATE OR REPLACE FUNCTION elimina_usuario() RETURNS TRIGGER AS $elim_usuario$ DECLARE usuario_elim integer; BEGIN usuario_elim := OLD.id_usuario; UPDATE usuario SET activo = 0 WHERE id_usuario = usuario_elim; UPDATE propiedad SET activo = 0 WHERE id_propietario = usuario_elim; RETURN NULL; END; $elim_usuario$ LANGUAGE plpgsql; Lenguaje PL/SQL: (Procedural Language/Structured Query Language) Es un lenguaje de programacin funcional diseado por Oracle para trabajar con bases de datos. Soporta todos los o n comandos de consulta y manipulacin de datos. Es un lenguaje estructurado en bloques, es decir, o el bloque es la unidad bsica de trabajo. A continuacin un ejemplo de cdigo en PL/SQL: a o o BEGIN Null; Dbms_output.put_line(hola a todos); END; Diccionario de datos: Un diccionario de datos o repositorio de metadatos es un repositorio centralizado de informacin de datos tales como signicados, relaciones a otros datos, origen, uso o y formato. En el contexto de bases de datos un diccionario, mapa o arreglo asociativo es un Tipo de Datos Abstracto (TDA) compuesto de una coleccin de tuplas (clave, valor), tales que cada o clave posible aparezca a lo ms una vez en la coleccin. El diccionario adems permite operacin a o a o como: La adicin de pares a la coleccin, la remocin de pares de la coleccin, la modicacin de o o o o o los valores de los pares existentes, la bsqueda de los valores asociados a una clave en particular. u

Figura 2: Extracto de un diccionario de datos de un restaurante. Joins: INNER JOIN:(combinacin interna) Con esta operacin se calcula el producto cruzado de o o todos los registros; As cada registro en la tabla A es combinado con cada registro de la tabla B ,pero slo permanecen aquellos registros en la tabla combinada que satisfacen o las condiciones que se especiquen. Este es el tipo de JOIN ms utilizado por lo que es a considerado el tipo de combinacin predeterminado. o LEFT y RIGHT JOIN: Ambas sirven en el caso de querer buscar registros en una tabla que no tengan correspondencia en la otra (vale decir no existe un valor coincidente). Esto se engloba en los OUTER JOIN (combinacin externa). Su funcionamiento es igual al INNER JOIN (de o hecho pueden considerarse como extensiones del tipo mencionado), slo que se agregan los o registros de la segunda tabla que no cumplen seteados a NULL. En el caso de LEFT la tabla de la izquierda se compara con la tabla de la derecha; cuando no haya una coincidencia, en la tabla izquierda se genera una la con todos sus campos seteados a NULL. Para el caso de RIGHT es idntico, slo que la tabla de la derecha es comparada con la izquierda y es a la e o derecha a la cual se le generan las con campos NULL. Ejemplo de uso en cdigo de un INNER JOIN para obtener propiedades en un cerro dado o : SELECT nombre_cerro, direccion, telefono FROM cerro INNER JOIN propiedad on (propiedad.id_cerro = cerro.id_cerro) WHERE propiedad.id_cerro = 1; Ejemplo de uso en cdigo de un LEFT JOIN para obtener datos de un empleado. La o tabla izquierda localiza las coincidencias en la tabla derecha. Si un empleado no tuviera ocina, sus datos estar seteados a NULL an SELECT * FROM empleados LEFT JOIN oficinas on empleados.oficina = oficinas.oficina Ejemplo de uso en cdigo de un RIGHT JOIN para obtener la editorial de unos libros. o Al revs del ejemplo anterior, en ste ejemplo la tabla derecha buscar coincidencias e e a en la tabla izquierda. Nuevamente, si un libro no tiene editorial, el campo aparece pero como NULL. SELECT titulo,nombre FROM libros AS l RIGHT JOIN editoriales AS e on codigoeditorial = e.codigo;

Llaves Primarias: Una llave primaria es un identicador en la base de datos. Tiene que ser un valor unico e irrepetible. Por ejemplo, en nuestro sistema de usuarios, la llave primaria es el ID de cada uno. Llaves Forneas: Una llave fornea es uno o mas campos identicadores en la base de datos a a que hace referencia a otra tabla, marcando as su relacin. Por ejemplo, en nuestro modelo, una o llave fornea de la tabla medicos es el id usuario, ya que la asignacion de valores a los campos a de medicos es realizada por un usuario, y su id es guardada en el registro. Indexacin: Es una tcnica que optimiza el acceso a los datos, mejora el rendimiento acelerando o e las consultas y otras operaciones. Para facilitar la obtencin de la informacin en una tabla o o se usan los ndices. Estos permiten localizar datos rpidamente, haciendo ms ecientes las a a bsquedas (si no tendr u amos que buscar secuencialmente en cada tabla). Esta eciencia compensa el espacio utilizado en el disco. Los ndices no solo se ocupan para la bsquedas, tambin lo u e hacen para recuperar registros de otras tablas empleando JOIN. Todos los ndices pueden ser multicolumna, es decir, pueden estar formados por ms de un campo. Un ejemplo de a ndice ser a un arbol B +

También podría gustarte