Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE ESTUDIOS SUPERIORES ARAGÓN INTERFAZ WEB PARA LA COMUNICACIÓN CON EL RDBMS POSTGRESQL UTILIZANDO APACHE Y PHP EN EL SISTEMA OPERATIVO WINDOWS Tesina para la titulación bajo la modalidad de “Seminarios y cursos de actualización y capacitacion profesional” que para obtener el título de : Ingeniera en Computación presenta Diana Gutiérrez Nájera Asesor: Ing. Raúl Héctor León Y Berber 2009 Neevia docConverter 5.1 UNAM – Dirección General de Bibliotecas Tesis Digitales Restricciones de uso DERECHOS RESERVADOS © PROHIBIDA SU REPRODUCCIÓN TOTAL O PARCIAL Todo el material contenido en esta tesis esta protegido por la Ley Federal del Derecho de Autor (LFDA) de los Estados Unidos Mexicanos (México). El uso de imágenes, fragmentos de videos, y demás material que sea objeto de protección de los derechos de autor, será exclusivamente para fines educativos e informativos y deberá citar la fuente donde la obtuvo mencionando el autor o autores. Cualquier uso distinto como el lucro, reproducción, edición o modificación, será perseguido y sancionado por el respectivo titular de los Derechos de Autor. Gracias a Dios, a mis padres a mi hermana, a mi tío Miguelito y Javier, a mi familia, a mi casa de estudios, la Universidad Nacional Autónoma de México, así como a todos los profesores por transmitir el conocimiento a mis amigos, amigas y todas aquellas personas que me han hecho crecer y valorar todo lo que me rodea, al equipo de atletismo de la FES Aragón y al equipo de AFG de CU por enseñarme el valor de ser perseverante y del trabajo en equipo, agradezco a Orlando por ser esa iluminación en la penumbra. Neevia docConverter 5.1 TABLA DE CONTENIDO Introducción ……………….……………………………………………….…………………………………. i Capítulo 1. Resumen de los módulos del diplomado en Administración de Bases de Datos. 1.1. Módulo 1. Sistemas de información y el modelo de datos relacional ……………….……………………………………………….…………………………………. 1 1.2. Módulo 2. Sistemas manejadores de bases de datos relacionales (RDBMS). ……………….……………………………………………….…………………………………. 8 1.3. Módulo 3. SQL (Structured Query Language) ……………….……………………………………………….…………………………………. 14 1.4. Módulo 4. Acceso a datos a través de la programación de clientes ……………….……………………………………………….…………………………………. 28 1.5. Módulo 5. Fundamentos de Sistemas Operativos ……………….……………………………………………….…………………………………. 30 1.6. Módulo 6. Habilidades directivas para administradores ……………….……………………………………………….…………………………………. 37 1.7. Módulo 7. Administración de Bases de Datos ……………….……………………………………………….…………………………………. 44 1.8. Módulo 8. Buenas prácticas en la función de la administración ……………….……………………………………………….…………………………………. 49 1.9. Módulo 9. Seguridad en Bases de Datos ……………….……………………………………………….…………………………………. 52 1.10. Módulo 10. Performance and Tuning ……………….……………………………………………….…………………………………. 54 1.11. Módulo 11. Modelo orientado a objetos ……………….……………………………………………….…………………………………. 58 1.12. Módulo 12. Tópicos avanzados de Bases de Datos ……………….……………………………………………….…………………………………. 60 Capítulo 2. Desarrollo de la interfaz con el RDBMS postgresql 2.1. Sistema operativo Windows ……………….……………………………………………….…………………………………. 67 2.2. Servidor Apache ……………….……………………………………………….…………………………………. 71 2.3. RDBMS Postgresql ……………….……………………………………………….…………………………………. 73 2.4. Software AppServer ……………….……………………………………………….…………………………………. 74 2.5. Lenguaje de marcas Html ……………….……………………………………………….…………………………………. 74 2.6. Lenguaje Php ……………….……………………………………………….…………………………………. 76 2.7. Lenguaje interpretado JavaScript ……………….……………………………………………….…………………………………. 77 2.8. Definición de Hojas de estilo Css ……………….……………………………………………….…………………………………. 77 2.9. Integración de las tecnologías en el desarrollo del proyecto ……………….……………………………………………….…………………………………. 78 Neevia docConverter 5.1 Capítulo 3. Puesta a punto del sistema. 3.1. Preparación del servidor ……………….……………………………………………….…………………………………. 80 3.2. Configuraciones en el archivo php.ini ……………….……………………………………………….…………………………………. 82 3.3. Configuraciones en el path de Windows ……………….……………………………………………….…………………………………. 83 Conclusiones ……………….……………………………………………….…………………………………. 84 Apéndice A. Sentencias SQL ……………….……………………………………………….…………………………………. 85 Apéndice B. Instalación del AppServer ……………….……………………………………………….…………………………………. 93 Apéndice C. Instalación del postgreSQL ……………….……………………………………………….…………………………………. 97 Glosario ……………….……………………………………………….…………………………………. 104 Bibliografía ……………….……………………………………………….…………………………………. 107 Neevia docConverter 5.1 i Introducción Al observar a nuestro alrededor podemos darnos cuenta del valor que ha adquirido la información. El valor es tanto que hay quienes se dedican a ser guardianes de esta información, estos “guardaespaldas” de la información tienen funciones tanto de conservar la estructura del almacenamiento de la información como de revisar la consistencia de la información y ofrecer o revocar los permisos de acceso a la misma para no comprometerla y tenerla disponible en cualquier momento en que necesite ser accesada por los usuarios autorizados. La administración de bases de datos abarca todos estos aspectos que permiten tener la información en forma consistente, coherente y oportuna en las manos adecuadas. Aún cuando los Sistemas Manejadores de Bases de Datos Relacionales (RDBMS) nos ofrecen todo un estándar para resguardar nuestra información una interfaz sin duda hará más amigable la interacción entre el usuario y el propio RDBMS permitiendo que no se hagan accesos no autorizados al sistema desde la capa cliente-servidor, así como limitar el campo de acción de los usuario sobre el RDBMS utilizando validaciones previas a la conexión del servidor con el propio RDBMS. En el aspecto del desarrollo e implementación de sistemas ha adquirido mucho auge la utilización de software libre por su accesibilidad y por la facilidad con que se puede entrar en contacto con comunidad desarrolladora e implementadora de sotware para aclarar dudas, reportar bugs sin dejar a un lado el apoyo en cuanto a documentación y foros disponibles por los propios desarrolladores del software, así como la no siempre gratuita asesoría técnica de algún experto. Neevia docConverter 5.1 ii Este trabajo se encuentra divido en tres capítulos, tres anexos y un cd con el código y el software utilizado, lo que pretende es que partiendo de conceptos básicos dentro de la Administración de Bases de datos y de los lenguajes de programación Web y pasando a través del uso de las tecnologías web se implemente una interfaz entre el RDBMS PostgreSQL y el cliente. Esta interfaz que esta sobre la plataforma Windows sirve para la administración del RDBMS PostgreSQL, entendiéndose por administración, creación de bases de datos, borrado de bases de datos, creación de tablas e inserción de datos, así como la administración de usuarios. La organización de los capítulos, se encuentra distribuida de tal manera que en el capítulo 1 (Resumen de los módulos del diplomado en Administración de Bases de Datos) se trata todo lo relacionado con la teoría de la Administración de Bases de datos. Mientras que el capítulo 2 (Desarrollo de la interfaz con el RDBMS postgresql) se centra en la teoria relacionada con las tecnologías utilizadas para el desarrollo de la interfaz y el capítulo 3 (Puesta a punto del sistema) trata de las cuestiones de configuración e implementación de la interfaz desarrollada. Neevia docConverter 5.1 1 Capítulo 1. Resumen de los módulos del diplomado en Administración de Bases de Datos. 1.1. Módulo 1. Sistemas de información y el modelo de datosrelacional. Estos son algunos de los conceptos básicos para comprender el lenguaje utilizado dentro de la administración de bases de datos: Dato. Es la unidad mínima de información, hechos sin evaluar o un valor sin significado, dentro de una base de datos responde a la función (objeto, atributo, valor, ejemplo: empleado, edad, 35 años). Un dato debe ser procesado por varias operaciones para obtener resultados relacionados con la evaluación e identificación de personas, eventos y objetos. Información. Se obtiene del procesamiento de los datos. Conjunto de datos interrelacionados entre sí y que tiene un significado del cual podemos obtener conocimiento para una futura toma de decisiones. Análisis de la información. Modelo de datos que consiste en la representación conceptual de la problemática que se desea resolver y cuya característica primordial es la claridad de su contenido. La obtención de la información genera gastos y su valor sólo puede ser comparado con el valor que tendrá para el receptor final. Base de datos. Conjunto de datos relacionados entre si con un objetivo común. Colección de datos integrados con redundancia controlada y una estructura que refleje las interrelaciones y las restricciones existentes en el mundo real. Los datos que han de ser compartidos por diferentes usuarios y aplicaciones, deben mantenerse independientes de éstas, la definición y descripción únicas para cada tipo de datos, han de estar almacenadas junto con los mismos. Los Neevia docConverter 5.1 2 procedimientos de actualización y recuperación, comunes, y bien determinados, habrán de ser capaces de conservar la integridad, seguridad y confidencialidad del conjunto de datos. Los tres componentes principales de un sistema de bases de datos son el hardware, software DBMS y los datos a manejar, así como el personal encargado del sistema. Arquitectura para las bases de datos. Años atrás las bases de datos eran el resultado de una programación compleja y complicados mecanismos de almacenamiento, al popularizarse la informática se dispuso de herramientas de gestión de datos que dieron lugar a los DBMS (Data Base Management System, Sistemas de Gestión de Bases de Datos) y con esto se hace necesario normalizar los esquemas que guiaban la creación de las bases de datos. Características de las bases de datos. Un sistema de base de datos se encuentra dividido en módulos cada uno de los cuales controla una parte de la responsabilidad total del sistema. En la mayoría de los casos el sistema operativo proporciona los servicios más básicos y el sistema debe partir de esa base para el manejo correcto de los datos. Las bases de datos respetan la arquitectura de tres niveles definida por el grupo ANSI/SPARC, interno, conceptual y externo. � Nivel interno. Define como se almacenan los datos en el soporte físico y los métodos de acceso. � Nivel conceptual. Representación de los datos realizada por la organización, recoge las vistas parciales de los requerimientos de los diferentes usuarios y las aplicaciones posibles, se configura como visión organizativa total e incluye la definición de datos y la relación entre ellos. � Nivel externo. Corresponden las diferentes vistas parciales que los diferentes usuarios tienen de la base de datos, es la parte del modelo conceptual al que tienen acceso. Neevia docConverter 5.1 3 Modelo de datos. Colección de herramientas conceptuales para describir los datos, las relaciones que existen entre ellos, semántica asociada a los datos y restricciones de consistencia. Se dividen en tres grupos: � Modelos lógicos basados en objetos. Describen datos en los niveles conceptual y de visión, es decir, representan los datos como nosotros los captamos en el mundo real y permiten especificar las restricciones de datos explícitamente. El modelo más utilizado en este tipo es el Entidad-Relación. � Modelos lógicos basados en registros. Describen datos en los niveles conceptual y físico. Utilizan registros e instancias para representar la realidad así como las relaciones existentes entre estos registros (ligas o apuntadores). Se usan para especificar la estructura lógica global de la base de datos y para proporcionar una descripción al nivel más alto de la implementación. Los modelos más aceptados son: o Modelo jerárquico. La forma de representar las relaciones y datos es por medio de registros y sus ligas. Organizado por conjuntos de árboles. Véase Figura 1.1. o Modelo de red. Representa los datos mediante colecciones de registros, sus relaciones se representan por medio de ligas o enlaces (pueden verse como punteros). Véase Figura 1.2. o Modelo relacional. Representa los datos y las relaciones entre estos, a través de una colección de tablas, en las cuales los renglones (tuplas) equivalen a cada uno de los registros que contendrá la base Figura 1.1. Modelo Jerárquico Figura 1.2. Modelo de Red Neevia docConverter 5.1 4 de datos y las columnas corresponden a los atributos de cada registro localizado en la tupla. Véase Figura 1.3. o Modelo orientado a objetos. Es una adaptación a los sistemas de bases de datos. Se basa en el concepto de encapsulamiento de datos y código que opera sobre éstos en un objeto. Los objetos estructurados se agrupan en clases. La interfaz entre un objeto y el resto del sistema se define mediante un conjunto de mensajes. Un método es un trozo de código para implementar cada mensaje y devuelve un valor como respuesta al mensaje. Para ver un esquema gráfico comparativo entre el modelo Relacional y el modelo Orientado a Objetos véase Figura 1.4. o o Modelos físicos de datos. Describen los datos al nivel más bajo, capturan los aspectos de implementación de los sistemas de bases de datos. Véase Figura 1.5. Figura 1.3. Modelo Relacional Figura 1.4. Comparativa entre el Modelo Relacional y el Modelo Orientado a Objetos Figura 1.5. Modelo físico de datos Neevia docConverter 5.1 5 Arquitectura cliente/servidor. El termino cliente/servidor podemos entenderlo como un sistema en el que una máquina “cliente” solicita a una segunda máquina “servidor”, que ejecute una tarea específica, el cliente suele ser una PC conectada a una red LAN y el servidor un servidor de archivos PC o un servidor de archivos UNIX. Véase Figura 1.6. Se define como la tecnología que proporciona al usuario final, el acceso transparente a las aplicaciones, datos, servicios de cómputo o a cualquier otro recurso dentro del grupo de trabajo y/o a través de la empresa en diferentes plataformas. Modelo relacional. Los datos se almacenan como tablas y las relaciones entre las filas y las tablas son visibles en los datos. La arquitectura relacional consta de: � Modelo relacional de datos. En el nivel conceptual está representado por una colección de relaciones almacenadas. Cada registro de tipo conceptual se implementa como un archivo almacenado distinto. � Sub-modelo de datos. Son los esquemas externos, cada uno consta de uno a más escenarios (vistas) para describir los datos requeridos por una aplicación. Cada programa de aplicación esta provisto de un buffer donde el DBMS puede depositar los datos recuperados de la base para su Figura 1.6. Arquitectura cliente/servidor Neevia docConverter 5.1 6 procesamiento o puede guardar temporalmente sus salidas antes de que el DBMS los escriba en la base de datos. � Esquema de almacenamiento. En el nivel interno, cada tabla base se implementa como un archivo almacenado, para las recuperaciones sobre la llave primaria o secundaria se pueden establecer uno o más índices para acceder al archivo almacenado. � Sub-lenguaje de datos. Es un lenguaje de manejo de datos para el sistema relacional, el álgebra relacional yel cálculo relacional, ambos lenguajes son “relacionalmente completos”, esto es, cualquier relación que pueda derivarse de una o más tablas de datos, también puede derivarse con un solo comando de sublenguaje. El trabajo publicado por Codd en ACM (Association for Computing Machinery, 1970)1 presentaba un nuevo modelo de datos que perseguía objetivos como: independencia física, independencia lógica, flexibilidad, uniformidad y sencillez. Reglas de Codd 0. Cualquier DBMS que proclame ser relacional, deberá manejar, completamente, las bases de datos por medio de sus capacidades relacionales. 1. Regla de información. 2. Regla de acceso garantizado. 3. El manejo sistemático de los valores nulos. 4. Catálogo dinámico en línea basado en un modelo relacional. 5. Regla del sub-lenguaje de dato completo. 6. Regla de actualización de vistas. 7. Inserción, actualización y eliminación de alto nivel. 8. Independencia física de los datos. 1 Véase, http://portal.acm.org/citation.cfm?id=362384.362685&coll=GUIDE&dl=GUIDE&CFID=507004&CFTOKEN=374 76599 Neevia docConverter 5.1 7 9. Independencia lógica de los datos. 10. Independencia de la integridad. 11. Independencia de la distribución. 12. Regla de la subversión. Bases de datos relacionales Es una base de datos en donde todos los datos visibles al usuario están organizados estrictamente como tablas de valores, y en donde todas las operaciones de la base de datos operan sobre estas tablas. Están basadas en el concepto matemático de relaciones entre conjuntos. El lenguaje de consulta relacional El SQL (Structured Query Language) es una herramienta para organizar, gestionar y recuperar datos almacenados en una base de datos, es un lenguaje informático que se puede utilizar para interaccionar con una base de datos y específicamente con un tipo llamado base de datos relacional con operaciones como unión, intersección, diferencia, producto cartesiano, proyección, selección, join. La independencia de datos y la integridad referencial. La independencia de datos se refiere a la protección contra los programas de aplicación que pueden originar modificaciones cuando se altera la organización física o lógica de la base de datos. Existen dos niveles de independencia de datos: � Independencia física de los datos. Capacidad de modificar el esquema físico sin provocar que se vuelvan a escribir los programas de aplicación. � Independencia lógica de los datos. Capacidad de modificar el esquema conceptual sin provocar que se vuelvan a escribir los programas de aplicación. La integridad referencial se enmarca en la segunda regla de integridad y se aplica a las llaves foráneas. Si en una relación hay alguna llave foránea, sus valores deben coincidir con valores de la llave primaria a la que hace referencia, o bien, deben ser completamente nulos. Neevia docConverter 5.1 8 Modelo Entidad-Relación. Es una técnica de diseño de base de datos gráfica, que incorpora información relativa a los datos y la relación existente entre ellos. Algunos conceptos fundamentales son: entidad (fuertes o regulares y débiles), atributos, dominio y restricción para un atributo (llave, relaciones o interrelaciones regulares o débiles), cardinalidad, DER (Diagrama Entidad Relación). Normalización. Proceso de cristalización de las entidades y sus relaciones en formatos de tabla usando los conceptos relacionales. Consiste en agrupar a los campos de datos en un conjunto de relaciones o tablas que representan a las entidades, sus características y sus relaciones en forma adecuada. Véase Figura 1.7. Herramientas CASE. Computer Aided Software Engineering (Ingeniería asistida por computadora). Son aplicaciones informáticas destinadas a aumentar la productividad en el desarrollo de software reduciendo el costo de las mismas en términos de tiempo y dinero. 1.2. Módulo 2. Sistemas manejadores de bases de datos relacionales (RDBMS). Un RDBMS es el conjunto de programas que permiten la definición, manipulación y control de acceso para una o varias bases de datos. Figura 1.7. Las tres formas normales Neevia docConverter 5.1 9 Conceptualmente lo que sucede en un RDBMS cuando un usuario realiza una petición se muestra en la Figura 1.8. En cuanto a un esquema de seguridad dentro del DBMS podemos encontrar un acceso multicapas. � Seguridad a nivel servidor. El usuario final debe tener una cuenta válida dentro de la capa del servidor (DBMS). � Seguridad a nivel base de datos. El usuario final debe ser un usuario válido dentro de la capa de la base de datos. � Seguridad a nivel de permisos sobre objetos y comandos. El usuario final deberá tener permisos dentro de la capa de los datos. Figura 1.8. Representación conceptual de un RDBMS Figura 1.9. Acceso multicapas Neevia docConverter 5.1 10 Componentes de los RDBMS. Para ver la arquitectura de un RDBMS véase la Figura 1.10. � DDL (Lenguaje de Definición de Datos). Nos permite definir la estructura de la base de datos mediante comandos como crear (Create), eliminar (Drop), o alterar (Alter). � DML (Lenguaje de Manipulación de Datos). Nos permite realizar la consulta y edición de la informacipon. Contenida en la Base de Datos. Hay dos tipos, procedural (trata registros individualmente) y no procedural (trata conjuntos de registros). Se utiliza para realizar la consulta y edición de la información contenida en la base de datos, esto implica: seleccionar (select), insertar (insert), borrar (delete) y modificar (update). � DCL (Lenguaje de control de datos). Se utiliza para la definición de los privilegios de control de acceso y edición a los elementos que componen la base de datos, es decir, permitir (grant) o revocar (revoke) el acceso. � DD (Diccionario de datos). El contenido del diccionario puede considerarse como “datos acerca de los datos” (metadatos), es decir, definiciones de otros objetos de la base de datos. SQL ANSI 89, 92 y 99. En 1989, tanto ANSI como ISO, publicaron estándares que definían al modelo relacional en el manejo de bases de datos. Estos estándares son: ANSI X3.135- 1989 e ISO/IEC9075:1989. Véase la tabla de la Figura 1.11. Figura 1.10. Arquitectura del RDBMS Neevia docConverter 5.1 11 ANSI SQL 89 ANSI SQL 92 ANSI SQL 99 Agrega integridad referencial y la descripción de todo el modelo referencial. √ √ Se define el SQL compuesto por comandos, cláusulas, operadores y funciones de agregado para combinarlos y manipular la base de datos. √ √ Se establecen los elementos de un DBMS (DDL, DML y DCL) así como instrucciones y sintaxis relacionadas con ellos. √ √ Establecimiento de las cláusulas del comando select: FROM, WHERE, GROUP BY, HAVING, ORDER BY. √ Consideraciones para el uso de las cláusulas GROUP BY y HAVING. √ Definición de los operadores lógicos AND, OR y NOT. √ √ Definición de los operadores de comparación. √ √ Determinación de las funciones de agregado: AVG, COUNT, SUM, MAX, MIN. √ √ Permite la definición de esquemas. √ √ Permite tipos de datos definidos por el usuario. √ √ Menciona las consideraciones para realizar consultas sencillas, multi-tablas y subconsultas. √ √ Incluye los operadores EXISTS y NO EXISTS. √ √ Contempla el uso de la palabra DISTINCT en una consulta √ Incorpora una nueva expresión de condición IS DISTINCT para la cláusula FROM. Específica la definición de vistas en una tabla. √ √ Incluye nuevos tipos de datos escalares: BOOLEAN, CLOB (objeto de caracteres largo) y BLOB (objeto binario grande). Presenta dos nuevos operadores de totales: EVER y ANY. Incorpora generadores de tipo de dato: REF, ARRAYy ROW. Soporta la opción LIKE en CREATE TABLE. Incluye la cláusula WITH. Figura 1.11. Tabla comparativa ANSI 89, 92 y 99 Neevia docConverter 5.1 12 Figura 1.12. Tabla principales RDBMS Principales RDBMS. Las características de los principales RDBMS se puede consultar en la Figura 1.12. RDBMS Ámbito Características Microsoft SQL Server comercial Manejo de bases de datos distribuidas. Manejo de varias particiones físicas para almacenamientos de datos flexibles. Permite realizar algunas tareas de mantenimiento y administración de la base de datos sin tener que darla de baja. Permite realizar acciones OLAP (Online Analazing Processing, analizar datos almacenados en una base de datos por medio de cubos de información). Conexiones con clientes ODBC y JDBC2. Es necesario disponer de Microsoft Windows Server para algunas características de SQL Server. Sybase comercial, libre (linux) Soporta aplicaciones OLTP (On Line Transaction Processor, ambiente diseñado para insertar, actualizar y borrar datos en una base de datos). Permite integrar aplicaciones basadas en XML con la base de datos y crear reglas de negocio que ejecuten Java Beans. Permite realizar queries XQL, utilizando un motor abierto para búsqueda de contenidos XML almacenados en la base de datos, o en un URL. Bloqueo a: nivel de fila, nivel de página de datos, nivel de página (datos e índices), nivel de tabla. Conexiones con clientes ODBC y JDBC. Oracle comercial Ofrece varias plataformas de desarrollo para Internet y aplicaciones tradicionales, tales como: XML, Enterprise Java Engine, SQL y PL/SQL, C, C++ entre otros. Manejo de bases de datos distribuidas Capacidad de replicación de bases de datos. Soporta OLTP y OLAP. Ofrece escalabilidad y performance sin modificar las aplicaciones instaladas. Conexiones con clientes ODBC y JDBC. Redefinición de tablas en línea. Respaldo y recuperación en línea. Informix y DB2 comercial Provee acceso a cualquier tipo de cliente. Manejo de bases de datos distribuidas Capacidad de replicación de bases de datos. Permite realizar queries en paralelo. Contiene plataformas de desarrollo con SPL (Informix Stored Procedure Language): C, Java, XML. Soporta OLTP y OLAP. Conexiones con clientes ODBC, JDBC, OLE/DB. Soporta aplicaciones para eCommerce e inteligencia de negocios. PostgreSQL libre Bajo costo de operación. Conformación a estándares ANSI. Estrategia de almacenamiento MVCC para grandes volúmenes. Capacidad de replicación de bases de datos. Interfaces nativas para ODBC, JDBC, C, C++, PHP, Perl, TCL, XML. Soporta SSL nativo. MySQL libre Conformación a estándares ANSI. Contiene esquemas de almacenamiento independientes: InnoDB (para transacciones y bloqueo de registros), MyISAM (sin transacciones). Soporta SSL. Queries con manejo de cache. Capacidad de replicación de bases de datos. 2 Véase página 49. Neevia docConverter 5.1 13 Figura 1.13. Arreglos de RAID Elementos de hardware que hay que considerar: Procesador, tarjeta madre, tipos de canal (BUS), memoria, disco duro, arreglos de RAID (nivel 0, arreglo de discos fragmentado; nivel 1, espejo del disco; nivel 3, igual que el nivel 0 el bloque de datos es subdividido y escrito sobre los discos de datos, la paridad de partición es generada sobre la escritura por lo que se reserva un disco dedicado a la corrección de errores en los datos y revisada en la lectura). Véase Figura 1.13. Los tipos de datos usados por los RDBMS se clasifican en trece tipos primarios y varios, sinónimos válidos conocidos por dichos tipos de datos: BINARY (VARBINARY, BINARY, VARYING, BIT VARYING), BIT (BOOLEAN, LOGICAL, LOGICAL 1, YESNO), BYTE (INTEGER 1, TINYNIT), COUNTER (AUTOINCREMENT, ENT, SEQUENCE), MONEY (CURRENCY), DATETIME (DATE, TIME), DECIMAL (NUMERIC, DEC), REAL (SINGLE, FLOAT 4, IEEESINGLE), FLOAT (DOUBLE, FLOAT 8, IEEEDOUBLE, NUMBER), SMALLINT (SHORT, INTEGER 2), INTEGER (LONG, INT, INTEGER 4), IMAGE (LONGBINARY, GENERAL, OLEOBJECT), TEXT (LONGTEXT, LONGCHAR, MEMO, NOTE, NTEXT), CHAR (TEXT(n), ALPHANUMERIC, CHARACTER, STRING, VARCHAR, CHARACTER VARYING, NCHAR, NATIONAL CHARACTER, NATIONAL CHAR, NATIONAL CHARACTER VARYING, NATIONAL CHAR VARYING). Neevia docConverter 5.1 14 1.3. Módulo 3. SQL (Structured Query Language). El lenguaje nativo SQL (Structured Query Language, Lenguaje Estructurado de Consulta) adoptado en la industria en 1986, es utilizado para el desarrollo de consultas a la base de datos3. Una de las revisiones al estándar más importante fue la de 1992 conocida como ANSI SQL92. Actualmente la versión más soportada por la mayoría de las bases de datos es el ANSI SQL99 también conocido como SQL3. Con el ANSI SQL, los diversos RDBMS tienen que acoplarse al estándar permitiendo una mayor compatibilidad entre ellos e implicando que conociendo una variante del SQL se tienen los conocimientos necesarios para poder utilizar otros RDBMS (Ms SQL Server, Oracle, Sybase, MySQL, PostgreSQL, DB2, etc.) Las diferencias entre distintos RDBMS se deben a que cada fabricante implementa funcionalidades extra que le dan un valor agregado a su producto, sacrificando la compatibilidad. SQL es un lenguaje fácil de entender ya que su estructura utiliza palabras en inglés. Los componentes del SQL son: DDL (Data Definition Language), DML (Data Manipulation Language), DCL (Data Control Language)4. Los elementos que intervienen en la definición de la información en una base de datos: la tabla es el elemento fundamental de una base de datos relacional, la cual consiste de una serie de renglones (registros) que representan la información. Cada renglón está divido en columnas (campos) los cuales deben de tener un tipo de dato establecido. 3 En este trabajo sólo se expondrán las sentencias que maneja el estándar SQL y no las sentencias propias de los RDBMS como por ejemplo sentencias para crear bases de Datos. 4 Veáse, página 10. Neevia docConverter 5.1 15 Es labor del diseñador de la base de datos encontrar el mejor tipo de dato que satisfaga las necesidades de almacenamiento y recuperación de cierta información. Los tipos de datos que se manejan en una base, pueden variar ligeramente entre diferentes RDBMS, sin embargo el estándar ANSI, asegura que cierto tipo de datos estará presente en cualquier RDBMS asegurando así su compatibilidad. Algunos RDBMS implementan sinónimos para los tipos de datos, de manera que puedan cumplir con el ANSI SQL99, sin embargo internamente son convertidos a un tipo de dato que si esté soportado. Por ejemplo MS SQL Server acepta el tipo de dato DOUBLE PRECISION pero lo convierte y maneja como un FLOAT. Para consultar los tipos de datos equivalentes, véase la tabla de la Figura 1.14. Tipo en SQL99 MySQL PostgreSQL Oracle Sybase Ms SQL Server Descripción Tinyint tinyint tinyint tinyint smallint smallint smallint smallint(lo convierte a number) smallint smallint Entero con signo de 2 bytes int, integer int, integer integer int(lo convierte a number) Int int Entero con signo de 4 bytes float() float float() float float Número de punto flotante double double double precision double precision (lo convierte a float) double precision double precision (se convierte a float) Número Doble real real real (lo convierte a float) real real Número Real numeric (p,d) numeric (p,d) numeric (p,d) number(p,d) numeric (p,d) decimal(p,d) Numérico con precisión p y d decimales character varying(n) varchar(n) varchar(n) varchar2(n) varchar(n) varchar(n) Carácter de longitud variable char, character (n) char(n) char(n) char(n) char(n) char(n) Cadena de caracteres de longitud fija date datedate Fecha sin Neevia docConverter 5.1 16 hora del día time time time Hora del día timestamp timestamp timestamp date datetime datetime Fecha y hora del día blob blob bytea blob image image Binary large object clob text text clob text text Character large object boolean boolean bit bit Valor booleano interval interval Intervalo de tiempo En algunos casos existe en el manejador el nombre del tipo de dato estándar, más no cumple con las especificaciones que debería. Por ejemplo en la tabla anterior se muestra el tipo DATE de Oracle, más no cumple con las especificaciones del DATE estándar, porque almacena la hora y la fecha en el mismo campo y no por separado. Lo mismo sucede con el tipo de dato timestamp de Sybase y Ms SQL Server, aunque existe la palabra como tal, timestamp no tiene ninguna relación con el estándar. El valor nulo. El valor nulo es algunas veces confundido con un valor numérico de 0 o una cadena vacía. Un valor nulo se representa en SQL con la cláusula NULL y representa la ausencia de información, es importante recordar esto cuando se desean realizar ciertas operaciones como por ejemplo un promedio de edades, dado que la función para determinar el promedio no contemplará valores nulos. Los valores nulos también se utilizan en texto, no es lo mismo una cadena vacía que un valor nulo. Tablas La tabla es la representación física en la base de datos de una Entidad mientras que las relaciones son representadas mediante restricciones, véase Figura 1.15. Figura 1.14. Tablas de tipos de datos equivalentes Neevia docConverter 5.1 17 Convenciones de nombres. Los nombres que se le asignan a los objetos de una base de datos, están sujetos a ciertas reglas que varían entre RDBMS, incluso de una versión a otra del mismo. Véase la tabla de la Figura 1.16. para consultar las convenciones de algunos RDBMS. Algunas reglas son: � No pueden usarse palabras reservadas del servidor SQL. � Es aconsejable usar nombres descriptivos. � No pueden existir dos objetos (aunque sea de distinto tipo) con el mismo nombre para un usuario en particular. Sybase Deben empezar con una letra. Pueden contener letras: A-Z,a-z, números 0-9,_,#,$. Oracle Deben empezar con una letra Pueden contener letras:A-Z,a-z,números 0-9,_,#,$ MySQL Puede empezar con los símbolos_,$,letras o números Pueden contener letras: A-Z,a-z, números 0-9,_,$ PostgreSQL Puede empezar con el símbolo _, y letras. Puede contener letras: A-Z,a-z, números 0-9,_,$ Ms SQL Server Puede empezar con el símbolo #,_,letras. Puede contener letras: A-Z,a-z, números 0-9,_,$ Figura 1.15. Representación de una tabla y los Registros Figura 1.16. Convenciones de nombres Neevia docConverter 5.1 18 Creación de tablas. La sintaxis básica para la creación de tablas puede consultarse en el Apéndice A Fig A-1 Modificación a las tablas. Dependiendo del RDBMS la modificación en la estructura de la tabla es mayor o menor. Para ver las características soportadas en los diferentes RDBMS véase en el Apéndice A Fig A-2. La sintaxis general para agregar un campo puede consultarse en el Apéndice A Fig A-3. Cabe señalar que siempre que se agregue un campo a una tabla, éste debe permitir valores NULOS. Eliminación de tablas: La sintaxis básica para la eliminación de tablas puede consultarse en el Apéndice A Fig A-4. Reglas Las reglas dentro de la base de datos, permiten definir condiciones que debe cumplir la información para que sea válida. Por ejemplo se puede definir una regla que especifique que la percepción de un empleado no sobrepase los $10,000 pesos. El exceso de reglas puede disminuir el rendimiento del RDBMS en los procesos de inserción y modificación de información. Para ver los diferentes RDBMS que soportan las reglas véase el Apéndice A Fig A-5. La sintaxis de la creación de reglas puede verse en el Apéndice A. Fig A-6. Defaults Los defaults establecen que valor será registrado de manera predeterminada para una columna, en caso de que no se especifique al momento de introducir los Neevia docConverter 5.1 19 datos. En algunos RDBMS los defaults son objetos que se pueden emplear en diferentes tablas, mientras que en los demás, están ligados a la definición de la tabla. Al igual que con las reglas, la funcionalidad de los defaults pueden implementarse utilizando la lógica de la aplicación, véase Apéndice A Fig A-7. para consultar los RDBMS que soportan la creación de Defaults para cpnsultar la sintaxis véase Apéndice A Fig A-8. En Sybase y MS SQL Server es posible definir un DEFAULT como un objeto independiente que se puede vincular a varios campos de una o más tablas, mientras que en Oracle, MySQL y PostgreSQL los defaults estan ligados a un solo campo. En todos los RDBMS, los valores predeterminados se pueden especificar al momento de generar una tabla, o en algunos casos es posible modificar la tabla para agregar estos valores predeterminados, véase Apéndice A Fig A-9. Llaves e Índices Un índice es una estructura de almacenamiento físico que permiten recuperar datos de una manera muy eficiente. En un esquema relacional, cada registro dentro de una tabla debe de ser identificado de manera única, y esto se logra a través de una llave primaria (PK), a la cual se le genera de manera automática un índice, que ayuda a ser más eficiente el proceso de consulta de la información. También existen las llaves foráneas(FK), que son las columnas que hacen referencia a la llave primaria de otra tabla. A través de ellas se establecen relaciones entre tablas. Es un error frecuente confundir entre índices y llaves, quizá sea el hecho de que al crear una llave primaria se genera un índice, lo cual no sucede para una llave foránea. Hay que tener presente que los índices tienen como función acelerar el proceso de recuperación de la información. Neevia docConverter 5.1 20 Llaves primarias. Permiten identificar de manera única un registro dentro de una tabla. Al crear una llave de este tipo se genera automáticamente un índice de valores únicos. Formas de crear las llaves primarias: � Al crear una tabla especificando que campo o campos forman parte de la llave primaria, véase Apéndice A Fig A-10. � Cuando la tabla ya existe y se desea especificar los campos que forman parte de la llave primaria, empleando la cláusula ALTER TABLE, véase Apéndice A Fig A-11. Llaves foráneas. Son atributos de una tabla que hacen referencia a la llave primaria de otra tabla y permiten establecer las relaciones entre las distintas tablas que existen dentro de la Base de Datos. La mayoría de los RDBMS implementan restricciones (constraints) cuando se genera una llave foránea. Las llaves foráneas se pueden crear dentro de la definición de la tabla, o una vez que esta ya existe, se puede utilizar la cláusula ALTER TABLE para agregar esta restricción. A diferencia de las llaves primarias, las llaves foráneas no generan un índice, por lo que de ser necesario se deberá crear con la cláusula CREATE INDEX, véase Apéndice A Fig A-12. Creación de índices. Un índice es una estructura de almacenamiento físico que ocupa un espacio. Los índices ayudan al Servidor SQL a localizar datos y son transparentes para el usuario. El propósito principal de un índice es proporcionar un acceso más rápido a los datos, aunque en algunos casos su propósito es asegurar que el contenido de un campo sea único. Para ver la sintaxis de creación de índices véase Apéndice A Fig A-13. Para ver la sintaxis de eliminación de índices véase Apéndice A Fig A-14. Neevia docConverter 5.1 21 Manipulación de datos. La mayor parte del trabajo con SQL giarará entorno a cuatro comandos: � Select. Permite seleccionar (recuperar) información de una tabla.� Insert. Permite agregar información a una tabla. � Delete. Permite eliminar información de una tabla. � Update. Permite actualizar información que existe en una tabla. Para el empleo de los comandos es necesario tomar en cuenta que para expresar un valor de tipo alfanumérico o fecha, es requisito entrecomillarlo con comillas simples y que todo valor que no se especifique entre comillas simples, será interpretado como tipo de dato numérico. Selección (Restricción). La operación de selección genera un subconjunto de los renglones de una tabla, con base en un criterio (restricción) establecido. Véase operaciones del álgebra relacional en el Apéndice A Fig A-15. Esta operación del álgebra relacional es realizada por la cláusula WHERE de SQL. Proyección: La proyección selecciona y genera un subconjunto con los atributos (columnas) indicados de una tabla. También es conocida como operación vertical. Véase operaciones del álgebra relacional en el Apéndice A Fig A-15. Union: La operación unión realiza la misma acción que en el álgebra de conjuntos, es decir {1,4,5,10} U {1,4,3,9} = {1,3,4,5,9,10}. Véase operaciones del álgebra relacional en el Apéndice A Fig A-15. Esta operación se realiza con la cláusula UNION del SQL. Neevia docConverter 5.1 22 Producto cartesiano: El producto cartesiano es el producto cruz entre 2 tablas: {a,b} X {1,2} = {a1, a2, b1, b2} El resultado es la combinación de cada renglón de una tabla con cada renglón de la otra tabla. Véase operaciones del álgebra relacional en el Apéndice A Fig A-15. En SQL esta operación se lleva a cabo cuando se ocupa la cláusula FROM especificando 2 o más tablas, y no se especifica una restricción que indique la relación entre las tablas. Join La operación Join es en esencia un producto cartesiano, donde se selecciona los renglones que satisfagan las condiciones indicadas que establecen la relación entre las tablas involucradas. Esta es una operación muy común en las bases de datos relacionales. Selección de datos Las tablas dentro de una base de datos son las estructuras que tienen almacenada la información en forma de registros. Para poder recuperar esa información almacenada, se requiere del comando SELECT de SQL. El comando SELECT es sumamente útil, ya que a través de él es posible realizar desde una consulta simple que sólo involucra una tabla, hasta una consulta compleja donde intervienen dos o más tablas, varias condiciones, agrupaciones de datos y ordenamientos. Véase Apéndice A Fig A-16 para ver la sintaxis de la cáusula SELECT, así como la sintaxis de otras cláusulas. FROM sirve para indicar las tablas de las cuales se desea mostrar la información, véase Apéndice A Fig A-16. WHERE permite delimitar los registros que serán mostrados en la consulta, a través de criterios o condiciones, véase Apéndice A Fig A-17. Neevia docConverter 5.1 23 GROUP BY en esta cláusula se indica el o los campos por los cuales se desea agrupar un conjunto de registros. Comúnmente esta agrupación va acompañada con una serie de funciones conocidas como funciones de agregación o agrupación, véase Apéndice A Fig A-18. HAVING es el equivalente a la cláusula WHERE, es decir, especifica un criterio o condición, pero la diferencia radica en que se ocupa únicamente cuando se desea especificar una función de agregación5 en la condición, véase Apéndice A Fig A- 19. ORDER BY nos permite indicar los campos por los cuales se desea ordenar la información mostrada. Es posible indicar si el orden es descendente o ascendente, de manera predeterminada es ascendente. Véase Apéndice A Fig A-20. Inserción de datos A través de la instrucción INSERT de SQL, se introduce la información a una tabla. Para ver la sintaxis véase Apéndice A Fig A-21. INTO permite indicar la tabla en donde se realizará dicha inserción. Únicamente se puede especificar una tabla a la vez, véase Apéndice A Fig A-22. VALUES permite especificar los valores a insertar para cada uno de los campos involucrados en la sentencia, véase Apéndice A Fig A-23. Eliminación de registros La instrucción delete elimina registros de la tabla indicada con la posibilidad de indicar un criterio, en caso de omitirlo, se eliminan todos los registros de la tabla. Para ver la sintaxis véase Apéndice A Fig A-24. 5 Véase significado en el glosario, pag.109. Neevia docConverter 5.1 24 Actualización de datos. Para modificar o actualizar los valores de los registros de una tabla se utiliza el comando UPDATE. Si no se especifica una condición con la cláusula WHERE, todos los registros que existan en la tabla serán actualizados. Para ver la sintaxis véase Apéndice A Fig A-25. UPDATE es la claúsula que indica que la operación a ejecutar es una actualización. Después de la cláusula se especifica el nombre de la tabla en donde se encuentra la información que deseamos modificar. Véase Apéndice A Fig A-26. SET permite especificar los campos que se desean modificar y su nuevo valor. La cláusula se coloca una sola vez aunque sean varios campos los que se deseen modificar. Véase Apéndice A Fig A-26. Vistas Una vista es una tabla qué no ocupa espacio de almacenamiento para la información que contiene, porque su estructura e información está definida a través de la ejecución de una instrucción SELECT. Las vistas tiene dos usos: el primero es para simplificar el acceso a datos que se ocupan frecuentemente y que requieren una sentencia de SQL muy compleja para dicho acceso; y el segundo es con fines de seguridad, que permitan mantener ocultas ciertas columnas. Para ver la sintaxis véase Apéndice A Fig A-27. Para ver la sintaxis de eliminación de vistas véase Apéndice A Fig A-28. Definición de privilegios Unos de los componentes de un RDBMS es el DCL (Data Control Language) que permite controlar y establecer restricciones de acceso a la información contenida en la base de datos. Es tarea del administrador de la base de datos el encargarse Neevia docConverter 5.1 25 de asignar o revocar permisos y/o crear usuarios en la base de datos. El manejo de usuario varía considerablemente de un RDBMS a otro. Posteriormente debe darse de alta al usuario en la base de datos que se desea pueda acceder. GRANT se utiliza para otorgar privilegios y REVOKE para eliminarlos6. FUNCIONES: Las funciones de tipo carácter pueden consultarse en la tabla de la figura 1.17. Función Descripción Ejemplo char_length (<cadena>) / character_length (<cadena>) Determina la longitud de la cadena especificada char_length(‘jose’) lower (<cadena>) convierte el texto a minúsculas lower(‘TOM’) octet_length(<texto>) almacena el tamaño del texto octet_length(‘jose’) position(<cadena1> in <cadena2>) posición de un subtrexto especificado position(‘o’ in ‘Tom’) substring(<cadena>[from<entero>][for <entero>]) extrae un subtexto especificado substring(‘Tom’ from 2 for 2) trim([leading|trailing|both] [<cadena1>] from <cadena2>) remueve caracteres de un texto trim(both ‘x’ from ‘xTomx’) upper (<cadena>) convierte un texto a mayúsculas upper(‘tom’) <cadena1>||<cadena2> concatenación de cadenas ‘Hola’ || ‘Mundo’ Case WHEN <expresion> THEN <valor1> [ELSE <valor2>] END evalúa la expresión si es verdadera regresa valor1 de lo contrario regresa valor2 CASE WHEN Id_departamento is Null THEN ‘No tiene asignado Departamento’ END cast(<valor> AS <tipo_de_dato>) Realiza la conversión entre tipos de datos cast (‘0055’ AS NUMERIC) Las diferentes funciones de tipo carácter que se manejan entre los RDBMS pueden consultarse en la tabla de la Figura 1.18. 6 Véase, página 45. Figura 1.17. Funciones de tipo carácter NeeviadocConverter 5.1 26 Función SQL92 MySQL PostgreSQL Oracle Sybase Ms SQL Server char_length Sí Sí No No No lower Sí Sí Sí Sí Sí octet_length Sí Sí No No No position Sí Sí No No No substring Sí Sí No estándar No estándar No estándar trim Sí Sí Sí No No upper Sí Sí Sí Sí Sí || No Sí Sí No No case Sí Sí Sí No No A continuación se muestran las funciones de Syabse/Ms SQL Server que remplazan a las ausentes del estándar SQL92: Las funciones de tipo matemáticas pueden consultarse en la tabla de la figura 1.19. FUNCION SINTAXIS substring Substring (<cadena>,#empiezo,#longitud) Extrae una cadena de la cadena a partir de # empiezo hacia la izq. De #longitud charindex chaindex (<cadena1>,<cadena2>) Regresa la posición donde se encuentra la cadena1 dentro de la cadena2 ltrim ltrim(<cadena>) Elimina los blancos a la izquierda de la cadena rtrim rtrim(<cadena>) Elimina los blancos a la derecha de la cadena datalength Datalength(<cadena>) Regresa la longitud de la cadena Figura 1.18. Funciones de tipo carácter soportadas por los diferentes RDBMS Neevia docConverter 5.1 27 Manejo de transacciones: Los RDBMS deben de implementar un mecanismo a través del cual, los cambios a realizar en la información, a través de una instrucción INSERT, DELETE o UPDATE, no son efectuados hasta que el usuario lo indique explícitamente. Una transacción puede comprender una o más instrucciones SQL. Una transacción es atómica, porque todas las instrucciones de SQL deben completarse con éxito, o ninguna de ellas. Una vez que el RDBMS determina que la transacción fue exitosa es necesario que la información sea almacenada de manera permanente. SQL92 MySQL PostgreSQL Oracle Sybase Ms SQL Server abs Sí Sí Sí Sí Sí acos Sí Sí Sí Sí Sí asin Sí Sí Sí Sí Sí atan Sí Sí Sí Sí Sí ceiling Sí ceil ceil Sí Sí cos Sí Sí Sí Sí Sí cot Sí Sí No Sí Sí degrees Sí Sí No Sí Sí floor Sí Sí Sí Sí Sí log Sí Ln Ln Sí Sí log10 Sí log log Sí Sí pi Sí Sí No Sí Sí power Sí pow Sí Sí Sí radians Sí Sí No Sí Sí rand Sí random No Sí Sí round Sí Sí Sí Sí Sí sign Sí Sí Sí Sí Sí sin Sí Sí Sí Sí Sí sqrt Sí Sí Sí Sí Sí tan Sí Sí Sí Sí Sí Figura 1.19. Funciones de tipo matemáticas soportadas por los diferentes RDBMS Neevia docConverter 5.1 28 El comando commit permite indicar que los cambios a realizar dentro de una transacción sean llevados a cabo de manera permanente, y el comando rollback permite deshacer los cambios. El RDBMS reserva un espacio de almacenamiento, donde registra todas las instrucciones de SQL que se deben de ejecutar. De esta manera es posible deshacer los cambios realizados por operaciones UPDATE, DELETE o INSERT. Las transacciones se inician de distinta manera, aunque similar. Por ejemplo en PostgreSQL, una transacción es iniciada mediante la cláusula BEGIN y en Sybase se emplea BEGIN TRANSACTION, seguida de las instrucciones de SQL a realizar y finalmente se emplea la cláusula COMMIT para indicar que las modificaciones deben realizarse de manera permanente o en caso que se desee cancelar la operación, se ocupa la cláusula ROLLBACK. 1.4. Módulo 4. Acceso a datos a través de la programación de clientes. En la web es utilizada la arquitectura denominada cliente – servidor en la que en una máquina central (servidor) se encuentran varios servicios a los que una o varias computadoras (cliente) pueden acceder, dependiendo de los privilegios que el usuario tenga dados de alta el servidor podrá tener acceso a ciertos servicios. Véase Figura 1.20. Figura 1.20. Arquitectura Cliente - Servidor Neevia docConverter 5.1 29 HTML. Es un sistema para estructurar documentos. Estos documentos pueden ser mostrados por los navegadores de páginas Web en Internet, como Netscape, Mozilla, Galeon, Microsoft Explorer, etcétera. Cualquier cosa que hagamos debe ir entre etiquetas aunque existen etiquetas que no necesitan cerrarse, así como etiquetas que no requieren de parámetros. <ETIQUETA parámetros> ... </ETIQUETA> PHP (Hipertext Preprocesor) es un lenguaje de programación de script que se combina con código HTML para generar páginas web dinámicas. Es ejecutado en el servidor y el resultado se envía al navegador. Véase Figura 1.21. Java Server Pages (JSP) es un lenguaje de programación de script que se combina HTML con fragmentos de Java para producir páginas web dinámicas. Una página JSP es un archivo de texto simple que consiste en contenido HTML o XML con elementos JSP. Cuando un cliente pide una página JSP del sitio web y no se ha ejecutado antes, la página es inicialmente pasada al motor de JSP, el cual compila la página convirtiéndola en Servlet, la ejecuta y devuelve el contenido de los resultados al cliente. Cuando ya existe el Servlet solo se manada a llamar, sin necesidad de volver a compilarse. Véase Figura 1.22. Figura 1.21. PHP ejecutado como CGI Neevia docConverter 5.1 30 ASP (Active Server Pages) es una tecnología creada por Microsoft con la que el usuario puede recibir páginas generadas dinámicamente en el servidor. Estas páginas contienen código HTML y fragmentos de código que son utilizados para llevar a cabo la interacción entre el servidor y el navegador. Véase Figura 1.23. ASP puede conectarse a cualquier motor que disponga de ODBC. Para procesar una página ASP es necesario un servidor Web de Microsoft (IIS 3.0 o superior, Personal Web Server). Se utiliza el archivo ASP.DLL para interpretar el código. Para plataformas Unix es necesario añadir un software que actúe de intérprete siendo algunos de los más conocidos: Chilisoft e Instant ASP. 1.5. Módulo 5. Fundamentos de Sistemas Operativos. Un sistema operativo es el encargado de asignar ordenadamente y controladamente los recursos para los programas que compiten por ello. Figura 1.22. Arquitectura JSP Figura 1.23. Arquitectura ASP Neevia docConverter 5.1 31 Figura 1.24. Generaciones de computadoras Generaciones Para consultar las generaciones de las computadoras véase la tabla de la Figura 1.24. Primera (1945-1955) Bulbos conexiones A finales de la generación se introducen las tarjetas perforadas. Segunda(1955- 1965) Transistores Procesamiento por lotes FMS, IBSYS Tercera(1965-1980) Circuitos Integrados Multiprogramación IBM 360, MULTICS, UNIX en PDP-7 Cuarta(1980-1990) Estaciones de trabajo y computadoras personales. SO en red, distribuidos DOS, UNIX Unix actuales Para consultar los UNIX actuales véase la tabla de la Figura 1.25. Solaris Sun Microsystems Basado en AT&T, con muchas extensiones. Arquitectura Sparc y X86 AIX IBM Diferente de AT&T y BSD7 especialmente en las herramientas administrativas. Arquitectura RS6000. SCO Unix The Santa Cruz Operation (SCO) Basado en AT&T pero con muchos agregados, arquitectura x86. IRIX Silicon Graphics Similar a AT&T, arquitectura propietaria. Linux Público BSD (SunOS) en lo interno, AT&T en la administración. Arquitectura Intel x86, sparc, alpha y otras. Múltiples distribuciones como Red Hat, S.u.s.e., Slackware, Debian, Corel, Caldera, Mandrake. FreeBSD público basado en BSD8. Arquitectura Intelx86. HP-Ux Hewlett-Packard Hibrido AT&T y BSD, con peculiaridades propias. Arquitectura propietaria. Los programas se pueden clasificar en dos grandes grupos: - Programas de sistema. Controlan la operación de la computadora. Los más representativos son los compiladores y el sistema operativo. 7 Las características pueden consultarse en la página 73. 8 Ibidem. Figura 1.25. UNIX actuales Neevia docConverter 5.1 32 - Programas de aplicación. Resuelven problemas de los usuarios como por ejemplo, procesadores depalabras, hojas de cálculo, manejadores de bases de datos, juegos, etcétera. El sistema operativo es un nivel de software por encima del hardware que controla todas las partes del sistema y presenta al usuario una interfaz o máquina virtual que es más fácil de usar que el hardware subyacente. Componentes de un Sistema Operativo: El SO está formado por varios programas que en conjunto presentan al usuario una vista integrada del sistema, véase Figura 1.26 para el caso de Linux, los componentes principales son los siguientes módulos: � Administrador de procesos (scheduler) � Administrador de E/S � Administrador de la memoria � Manejo del sistema de archivos Neevia docConverter 5.1 33 El sistema operativo UNIX: UNIX es un sistema operativo portable, multitarea y multiusuario; desarrollado en principio por un grupo de empleados de los laboratorios Bell de AT&T, entre los que figuran Ken Thompson, Dennis Ritchie y Douglas McIlroy. Para ver la cronología de la Historia de UNIX, consultese la tabla de la Figura 1.27. 1969 UNIX como proyecto de investigación de AT&T Bell Labs Descendiente de MULTICS (proyecto de SO de varias empresas) 1976 V6 gratuita por las universidades 1979 V7 distribuida ampliamente y base de la mayoría de las versiones UNIX Después AT&T el grupo USG (UNIX Support Group). El grupo se separa de AT&T con el nombre de USL (UNIX System Laboratories) para desarrollar UNIX como producto comercial. Bell Labs y USG continúan desarrollando UNIX en direcciones divergentes USL saca versiones System III y System V . Figura 1.26. Componentes típicos del Kernel de GNU/Linux Neevia docConverter 5.1 34 1992 AT&T vendió sus operaciones en UNIX a Novell quien saca UNIXWare 1977 Comienzo del UNIX de Berkeley cuando el CSRG (Computer Systems Research Group) de la Universidad licenció el código de la V6 de AT&T Versiones de Berkeley BSD(Berkeley Software Distribution) comenzaron con 1BSD(para PDP-11) culminando en 1993 con la versión 4.4BSD Berkeley con el propósito de eliminar todo el código de AT&T pierde su financiamiento y al disolverse el CSRG lanza la versión de código propio (4.4BSD-Lite) La mayoría de los UNIX de la rama BSD tienen como antecedente esta versión Superadas varias querellas de licencias entre BSD y AT&T, los fabricantes pueden tomar el código fuente público de AT&T, BSD o ambos para comenzar a partir de ellos sus propios desarrollos. 1991 Advenimiento de Linux, a partir de un núcleo (Kernel) diseñado por Linus Torvalds (estudiante graduado de la Universidad de Helsinki Finlandia). LINUX. GNU/Linux es un clon del sistema operativo Unix, escrito desde cero por el finlandés Linus Torvalds con la asistencia de un pequeño grupo de hackers esparcidos por la red. Entre sus principales características se encuentra la implantación del estándar POSIX. Estrictamente, GNU/Linux se refiere al núcleo o kernel. En un sentido más amplio, comprende el núcleo del sistema operativo más un conjunto de programas que permiten compilar lenguajes de programación, editar texto, interpretar comandos, manejar archivos y discos, acceder a otras máquinas, establecer comunicaciones telefónicas, enviar y recibir correo electrónico, manejar las colas de impresión y un sin fín de tareas más. Algunos de estos programas pueden haber sido desarrollados por los propios usuarios. Figura 1.27. Historia de UNIX Neevia docConverter 5.1 35 Figura 1.30. Mensaje de Torvalds Fue en Julio de 1991 cuando Linux aún siendo estudiante de Computer Science en Finlandia, envío su primer mensaje al grupo de noticias minix, respecto a un proyecto personal sobre el sistema operativo Minix39, véase Figura 1.28. Al que le siguió un mensaje, que muchos consideran el verdadero inicio del Linux, véase Figura 1.29. Respecto al inicio, Linux escribiría años después lo mostrado en la Figura 1.30. 9 Medina, López Francisco. Fundamentos de Sistemas Operativos, 2006 v 2.2., COAPA, DGSCA. Figura 1.28. Mensaje enviado por Torvalds a Minix Figura 1.29. Mensaje considerado el inicio de Linux Neevia docConverter 5.1 36 Las versiones iniciales fueron distribuidas en código fuente por el propio Linus, para que otras personas pudieran entender su proyecto y sobretodo para que lo ayudaran. Linus trabajó activamente hasta la versión 0.96, tras ello, se sumaron al proyecto más programadores y se formó un grupo de desarrollo amplio (Linux Developers) que continúa siendo dirigido por él; pero como el mismo lo reconoce, su labor es más la de un “router” del grupo que la del desarrollo en si. Para consultar la Historia cronológica del desarrollo de GNU LINUX véase la tabla de la Figura 1.31. Objetivos de GNU/Linux GNU/Linux fue diseñado teniendo en mente los siguientes objetivos: Crear un sistema interactivo de tiempo compartido diseñado por programadores y para programadores, destinado a usuarios calificados, que fuera sencillo, elegante, escueto y consistente, que permitiera resolver problemas complejos combinando un número reducido de comandos básicos. Figura 1.31. La historia de GNU/Linux Neevia docConverter 5.1 37 Filosofía del sistema GNU/Linux Los objetivos con que se creó determinaron una “filosofía” caracterizada por: - comandos cortos, simples, específicos y muy eficientes, que “hacen una sola cosa pero la hacen muy bien” 10. - Entrada y salida estandarizadas que permiten la interconexión de comandos. Esto se llama entubamiento “pipelining”: la salida de un comando es tomada por el siguiente como entrada. - todo es un archivo. Distribuciones. GNU/Linux es sólo el núcleo del sistema operativo, pero necesita aplicaciones y programas para hacer algo. Muchos han sido migrados a Linux, otros han sido creados específicamente para GNU/Linux, todos ellos se encuentran en Internet dispuestos a que cualquiera los baje y los instale en su sistema. Como esto es una ardua tarea no tardan en surgir compañías dedicadas a reunir todos esos programas facilitando la tarea de crear un sistema Linux funcional como: Slackware, Debian, SuSE, Mandriva, Red Hat, Fedora Core, CENTOS. 1.6. Módulo 6. Habilidades directivas para administradores. Liderazgo en la organización Una definición de liderazgo es la de influir, guiar o dirigir a los miembros del grupo hacia el éxito o en la consecución de metas y objetivos organizacionales lo cuál conlleva a comprender la importancia de la persona responsable de ser líder, en las organizaciones nuestros jefes o nosotros mismos. Véase Figura 1.32. 10 Ibidem. Neevia docConverter 5.1 38 Algunas personas se inclinarán hacia las relaciones interpersonales, hacia las personas, hacia la cohesión de un grupo, mientras que otras lo harán hacia aspectos de productividad y el logro de metas organizacionales. Estilos de liderazgo. Teoria de Blake y Mounton Jane Mounton y Kobert Blake –ambos de nacionalidad inglesa- diseñaron un sistema para determinar el estilo de autoridad de quien ejerce el mando en una organización. Este sistema tiene el nombre de Grid Gerencial, y consiste en un gráfico formado por un eje horizontal y otro vertical. El eje horizontal del tablero representa el interés por la producción y el eje vertical el interés por las personas. Cada eje representa una escala del uno al nueve, en el que el número uno Habilidades que debe poseer un dirigente. � Aumentar la autoestima y valía de los miembros del equipo. � Aumentar la cohesión y el espíritu de equipo de los miembros de su grupo. � Motivar la productividad y el logro de las metas organizacionales. � Apoyar a los miembros a alcanzar esasmetas por sí mismos –proporcionando la planeación, programación, coordinación, solución de problemas y suministros- de los recursos necesarios. Figura 1.32. Orientaciones hacia el Liderazgo Neevia docConverter 5.1 39 representa un menor interés, sea por la tarea o las personas, en tanto que el número nueve representa el máximo interés en cada escala, véase Figura 1.33. La malla gerencial tiene 81 posiciones posibles, sin embargo, son cinco las más representativas del alcance de esta teoría. Cada posición se puede definir como un estilo de gerencia, aplicable a la empresa o a las personas. Motivaciones El sentido de fortaleza de este líder proviene de sentirse poderoso, sin someterse a nada ni a nadie, obteniendo el acatamiento sin cuestionamientos de sus subordinados. Efectos Los compromisos con la organización se diluyen Se trata de evitar los castigos y asegurar las recompensas Limita la creatividad Manejo del conflicto Probable que el gerente vea el desacuerdo como insubordinación y su respuesta es la represión. El enfoque consiste en ganar, forzando a otras personas a ceder. No le importa ser apreciado por otros, es irrelevante si sus adversarios se sienten humillados. Toma de deciones Son individuales y unilaterales. Crítica Las críticas son rara vez constructivas, es una evaluación unilateral enfocada a descubrir fallas y culpas Posición 9,1 Estilo de mando autoridad-obediencia (véase Figura 1.34.) � Alta preocupación por la obra y baja por la gente. � Lema “Producir o morir”. � Se sacrifica a las personas para el logro de la tarea. � Capataz exigente que sabe qué hacer para que el trabajo se haga. � Único propósito obtener resultados. � El trabajo se dispone de tal manera que se elimina la necesidad de que los subordinados piensen con la finalidad de obtener resultados más rápidos. Figura 1.33. Malla gerencial. Teoria de Blake y Mounton Figura 1.34. Autoridad - Obediencia Neevia docConverter 5.1 40 Características Se dirige de acuerdo con lo que la gente quiere. Las relaciones sociales son muy importantes. El jefe es el amigo. Se estimula la lealtad a través de prebendas. El jefe está dispuesto a consolar más que a mandar. Flexibilidad en normas y sanciones. Comunicaciones informales. Se tapan los errores. El ritmo de trabajo es confortable Efectos Escasa dedicación al trabajo. Los objetivos de la empresa no se cumplen. Puede llevar a hacer desaparecer la empresa. Motivaciones La persona se siente segura cuando las relaciones son positivas y cuando otras personas la aceptan y la aprueban, temor al rechazo que lo deja lastimado o herido. La crítica se toma como una forma de rechazo. Aborrece el conflicto porque toma el desacuerdo como algo personal. Manejo del conflicto Lo maneja mediante el humorismo, se convierte en una forma de desviar la atención de un tema serio a fin de evitarlo. Evade las negativas. Cuando otras personas reaccionan con enojo o de forma hostil, tiende a bajar el tono de vos e incluso se torna sumisa. Toma de decisiones Puede ser un placer cuando tienen alta probabilidad de ser aceptadas por los demás, “evito tomar decisiones que son frustrantes para otras personas, si surge algo que sea inquietante me aseguro de que las otras personas sepan que no es mi culpa” Siempre que es posible, las decisiones desagradables son delegadas. Crítica Su reacción es “Yo trato de hacer que los demás se sientan bien dando enfoque positivo a las cosas. Cuándo las personas están felices, se sienten naturalmente motivadas para hacer las cosas mejor”. Posición 1,9 Estilo de mando Club Campestre (véase Figura 1.35.) � Contraria a la anterior. � Escasa preocupación por la tarea y alta prioridad en la relación con la gente. � Lema “Todos somos hermanos”. � Maneja asuntos a través de caminos indirectos ideales para crear amistad y camaradería. � Menor énfasis en la producción a pesar de no ser intencional. � La gente trabaja a un ritmo suave con otras personas que le simpatizan � El interés se enfoca en las áreas de acuerdo y satisfacción. � La creatividad y la innovación toman un papel secundario porque con demasiada frecuencia conducen a la controversia y al desafío. Figura 1.35. Club campestre Neevia docConverter 5.1 41 Características Administración empobrecida. Se hace sólo lo necesario para sobrevivir. Se asignan tareas pero nunca se les da seguimiento. Es necesario mantenerse fuera de los problemas. Se eluden responsabilidades. Se siguen las normas y los reglamentos ciegamente. El jefe es el mensajero entre los superiores y los subordinados. Comunicaciones mínimas. Aislamiento y mimetismo. Efectos Poco compromiso con los objetivos si es que los tiene. Pocas ideas de cambio. Existe poca o ninguna lealtad. Evita todos los riesgos. Motivaciones La motivación positiva es un deseo de no involucrarse, de cumplir con los requisitos de trabajo, y de exponerse lo menos posible al contacto con otras personas. Se siente emocionalmente agotado y apartado. Si puede abrigar sentimientos de preocupación por la organización y sus miembros, el involucrarse es visto “como algo que no vale la pena”, sin embargo, hay conciencia de que se debe demostrar suficiente presencia para mantener el empleo. Hacer el mínimo necesario para acumular antigüedad, sin ninguna consideración real por hacer una contribución. La necesidad de conservar el trabajo personal es lo que conduce a la motivación negativa. Mantiene a las personas a distancia de tal suerte que no tiene muchos enemigos, ni tampoco muchos amigos. Manejo del conflicto Tiene muchas maneras de crear la apariencia de responder sin presentar ningún punto de vista. Congruente con la estrategia básica de mantener la neutralidad a fin de estar a salvo. Toma de decisiones Cree que si las decisiones se posponen o retrasan, tal vez los problemas se resolverán por sí mismos o simplemente desaparecerán. Define en lugar de decidir. La delegación es considerada una virtud. Crítica Nunca pensaría en hacer crítica (no es que la evite, simplemente no piensa en ella). En cuanto a la retroalimentación “¡Por qué empezar una pelea!”, como quiera que sea la gente debe juzgar su propio desempeño. Quienes tienen talento tratan de escapar, un equipo o departamento dirigido de este modo, tiende a ser cada vez menor. El resultado probable es el fracaso. Posición 1,1 Estilo de mando Empobrecido (véase Figura 1.36.) � Este jefe experimenta una leve contradicción o no experimenta ninguna contradicción entre la necesidad de producción y las necesidades de la gente. La preocupación por ambos es mínima. � Lema “Nada de nada”. Figura 1.36. Mando empobrecido Neevia docConverter 5.1 42 Figura 1.37. Hombre - Orghanización Características Se buscan soluciones intermedias que satisfagan los factores en conflicto. La autoridad no se ejerce sino a través de normas, reglamentos y procedimientos. Se le hace creer a la gente que se le da participación, pero está no existe. Efectos Los planes se modifican continuamente. Permite la creatividad en forma restringida Rara vez se enfrenta a los conflictos, porque se teme perder o ganar. Se obtienen resultados apenas satisfactorios. Motivaciones La motivación consiste en evitar que se le humille a uno que se le ponga en ridículo. Cuando cae en la gracia de sus colegas, experimenta dolor y pena. Estar en desacuerdo puede conducir a la perdida de la amistad y a la membresía propia. Ansiedad en virtud de que necesita a otras personas para saber como pensar. Manejo del conflicto Ve una contradicción básica entre las necesidades de la gente y las necesidades de productividad de la organización. La confrontación directa es vista como un situación en la cuál alguien gana y alguien pierde. El gerente retrocede hasta que las tensiones se calmen. La resolución de conflictosconsiste en la avenencia, el acomodo y en dividir la diferencia. Representa un desempeño promedio y no excelente. Toma de decisiones Delega sobre la base de justicia y equidad. Deslinda responsabilidades de tal manera que cada persona obtenga una parte equitativa. Nadie debe tener más responsabilidades que otras. La popularidad más que las pruebas objetivas es determinante para la toma de decisiones. Crítica Si usted estimula a los subordinados para que hagan bien las cosas ofreciéndoles elogios, esto los mantiene motivados para lograr un nivel aceptable de trabajo, sin embargo, esto puede ser contraproducente. No le gusta darle malas noticias a la gente, sin embargo, se percata de que la gente necesita conocer sus debilidades a fin de mantenerse al ritmo del grupo. En la retroalimentación es superficial y llano. No es sincero, abierto o directo. Posición 5,5 Estilo de mando Hombre-organización (véase Figura 1.37.) � Mediana preocupación por la obra y mediana por la gente. � Lema “Estamos en la cuerda floja”. � Sólo empuja para lograr un nivel de productividad moderado y a cambio proporciona un monto de consideración aceptable para las actitudes y sentimientos de la gente que lleva a cabo su trabajo. � Progresa razonablemente dentro del sistema siguiendo las reglas y reglamentos para mantener el estatus como miembro con buena reputación. � Operan con la regla de toma y da: da un poco para obtener un poco. � Tienden a guiarse por otras personas. � Es un esfuerzo positivo como norma de grupo. La gente se convierte en una porra para animarse unos a otros a fin de crear un espíritu de equipo “se puede hacer”, de entusiasmo y emoción, sin embargo, el problema es que no se tolera la negatividad y el equipo puede perder de vista la realidad. Neevia docConverter 5.1 43 Características No existe conflicto entre la producción y la gente, existe una integración efectiva. Se buscan las mejores soluciones. La piedra angular de esta posición es el trabajo en equipo o grupo de trabajo. Participación del personal en el proceso de planeación y definición de objetivos. Se involucra a la gente en las soluciones y los resultados. Se realiza autocontrol y auto dirección, el jefe es el consultor y el consejero. Efectos Se entrelazan las necesidades de la institución y las del individuo. La creatividad esta en un alto nivel. Se presentan innovaciones fundamentales en el trabajo. Se manejan los conflictos en forma clara y confrontación directa. Motivaciones La motivación se caracteriza por un alto sentido de gratificación, de gozo con el trabajo y emoción por contribuir con la empresa. El lado negativo es el “temor al egoísmo”. Esto significa perder la perspectiva, identificarse más con la forma propia de hacer algo y perder de vista la aportación de otras personas. Manejo del conflicto Les permite a la personas no estar de acuerdo con ventilar sus desacuerdos a la luz de los hechos, y en última instancia entenderse entre sí. La sinergia es una meta de la resolución de problemas y se hace posible al hacerle frente al conflicto y confrontándolo en lugar de tratar de eliminarlo o huir de él. En una confrontación no hay ganador ni perdedor. Todo mundo sale adelante al haber encontrado una solución más sana. Toma de decisiones Se propone lograr el entendimiento y el acuerdo entre las personas a quienes afecta la propia decisión. Esto describe la condición óptima, ya que todas las dudas y reservas han sido eliminadas y se ha establecido un consenso con respecto a un fin específico. Incluso si no es posible un acuerdo pleno, los miembros del equipo tienen un sentido del compromiso con la decisión final, toda vez que ellos han tenido una oportunidad de prestar sus mejores ideas y expresar sus dudas y reservas. La delegación de toma de decisiones proporciona una oportunidad de desarrollo importante. El jefe ayuda a un subordinado a obtener experiencia en una nueva área que aumenta el sentido de autonomía y el logro personal. Crítica Es autocrítico y receptivo a la retroalimentación de otros miembros del equipo. Cuando la crítica se hace con eficacia, se aumenta el potencial de las decisiones fortalecidas. Posición 9,9 Estilo de mando Trabajo en equipo (véase Figura 1.38.) � Alta preocupación por la obra y alta por la gente. � Lema “Todos somos el equipo”. � Supone que no existe contradicción entre el fin de la organización y la necesidad de que la gente sea productiva. � Reúne a la gente todo el tiempo para obtener su punto de vista. � El objetivo consiste en promover la participación, el involucramiento y el compromiso con el esfuerzo del equipo, dirigido a lograr los fines de la organización lo más plenamente posible. Neevia docConverter 5.1 44 Este enfoque de doble vuelta de la retroalimentación permite el aprendizaje de la experiencia. Tiene la más alta probabilidad de lograr consecuencias positivas con y a través de otras personas, independientemente del estilo de gris de estas últimas. Esto obedece a que tratar a las personas de esta manera tiene el efecto de ascenderlas a un nivel de resolución de problemas. La gente tiene probabilidad de trabajar conjuntamente de manera más productiva desde está posición. Tiende a sacar lo mejor de la gente porque los principios constituyen valores medulares de cada individuo. 1.7. Módulo 7. Administración de Bases de Datos. Servidores de Bases de Datos. Origines relacionados de SQL. El modelo relacional de administración de bases de datos fue desarrollado por Edgar Frank Codd a principios de decenio de 1970 en el laboratorio de investigación de IBM establecido en San José11. SQL era originalmente las siglas en ingles del Lenguaje de consulta Estructurado (Structured Query Language que se pronuncia sicuel), pero ahora es un nombre. También fue desarrollado por el equipo de investigación de IBM a mediados de la misma década con el propósito de ser un objeto de interfaz de consulta, “parecido al ingles” para el prototipo de base de Datos relacional denominado System R.. si bien SQL es un lenguaje “semejante” al ingles, tiene hondas raíces en la rama de las matemáticas conocida como teoría de conjuntos y cálculo de predicados, el modelo relacional pugna por una clara separación de los aspectos físicos de la información de su representación lógica. Esquemas de seguridad en el RDBMS: Dentro del DBMS podemos encontrar un acceso multicapas12 y los componentes de un RDBMS 13, para profundizar se presenta nuevamente el componente: 11 La referencia a las publicaciones es: http://portal.acm.org/portal.cfm 12 Para profundizar en este tema se puede consultar el capítulo 1.1. página 9 13 Para profundizar en este tema se puede consultar el capítulo 1.1. página 10 Figura 1.38. Trabajo en Equipo Neevia docConverter 5.1 45 DCL o Lenguaje de Control de Datos: Se utiliza para la definición de los privilegios de control de acceso y edición a los elementos que componen la base de datos (seguridad), es decir, permitir o revocar el acceso. Los permisos a nivel base de datos pueden otorgarse a usuarios para ejecutar ciertos comandos dentro de la base o para que puedan manipular objetos y los datos que puedan contener estos. Las instrucciones relacionadas con este componente son: � Grant. Permite otorgar permisos a los usuarios sobre los objetos definidos en la base de datos, así como las operaciones a utilizar sobre ellos. � Revoke. Permite revocar permisos sobre los objetos definidos en la base de datos y las operaciones sobre los mismos. Usuarios en una Base de Datos � El programador de aplicaciones, quien se encarga de escribir los programas de aplicación que utilizan la base de datos. � El usuario final, el cual tiene acceso a los datos de la base a través de
Compartir