UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA PROYECTO DE INGENIERIA ELECTRONICA 41 "SISTEMA AUTOMATIZADO DE ADMlNlSTRAClON ESCOLAR' MIGUEL ANGEL MAYOL MASCORRO FRANCISCO REY MANZANO PEREZ INDICE TEMA PAGINA 1. Modelo Cliente/Servidor 3 2. UNIX 7 3. Sybase 21 4. SQL 32 5. UNIFACE 49 6. 62 Bibliografía MODELO CLIENTE/SERVIDOR MODELO CLlENTElSERVlDOR 4 Dado que Sybase soporta el modelo cliente/servidor, se mencionara alguna información referente a esta arquitectura. Los sistemas de información se han convertido en la espina dorsal de toda estrategia tecnológica de eficiencia y productividad en muchas organizaciones.Esto explica en buena medida el gran éxito de los sistemas servidores de base datos. En el modelo de interacción cliente/servidor las aplicaciones y los sistemas que la soportan exhiben un doble comportamiento: (1) Un subsistema frontal (front-end), residente en una máquina cliente, se encarga de coordinar la ejecución de la aplicación y de interactuar con el usuario y, (2)Un subsistema dorsal (back-end), residente en una máquina servidora, cuya función es procesar directamente los accesos a la estructura de la base de datos (su creación puede, eventualmente, formar parte del subsistema dorsal). De manera precisa, la descomposición funcional propiciada por el modelo de interacción clientehervidor tiene las siguientes ventajas importantes: 1. El desempeño es mayor que el correspondiente a un sistema multiusuario con características similares. Esto es evidente por las siguientes razones: (a) en el sistema multiusuario la computadora central realiza las funciones de interacción con el usuario y de procedimiento de la información, (b) para el modelo cliente/servidor estas dos funciones se realizan en dos sitios distintos (el cliente y el servidor), esto es, la carga es repartida. 2. El reparto de funciones y, en consecuencia, la especialización en cada una de ellas por parte del sitio correspondiente, permite mejorar sustancialmente los servicios ofrecidos. En particular el subsistema frontal puede proporcionar servicios de gran riqueza y complejidad, difíciles de ofrecer en un sistema centralizado. MODELO CLlENTElSERVlDOR 5 Para el caso específico de sistemas orientados a base de datos, el modelo de interacción clientelservidor adquiere una denominación particular: sistema frontalldorsal de base de datos. La interacción entre las dos entidades componentes se da de la siguiente manera: el subsistema frontal genera consultas/actualizaciones que son remitidas vía la red local a una máquina servidora, donde el subsistema dorsal las procesa y regresa los resultados correspondientes. Es importante señalar que en el medio comercial el subsistema dorsal es ampliamente conocido como servidor de base de datos, el cual es motivo de grandes esfuerzos de desarrollo por parte de múltiples compañias (entre ellos Sybase). En lo que concierne al subsistema frontal , sus oportunidades son tantas como aplicaciones posibles. Desde un punto de vista funcional, el sistema frontal/dorsal constituye la evolución de un sistema centralizado de base de datos a un entorno de red. Además el subsistema frontal interactua con el usuario mientras que el dorsal lo hace con la base de datos. ' El subsistema frontal se compone de tres grandes bloques: La interfaz con el usuario, cuya función es mantener una interacción amigable con éste; El preprocesamiento, que se refiere a la transformación y procesamientos necesarios para las consultas (antes de enviarlas al subsistema dorsal) y para los resultados (antes de desplegarlos en pantalla), y La interfaz con el subsistema dorsal, que se encarga de redirigir los mensajes al subsistema dorsal de acuerdo con el protocolo de interacción establecido. El subsistema dorsal contiene un módulo de preprocesamiento (funciones específicas dorsal) que interactúa directamente con el sistema manejador de base de datos (SMBD) en cuestión. Esto es el componente principal del subsistema dorsal. Cuando una máquina servidora es multiusuario, se recomienda que el SMBD se implante de manera concurrente por razones de eficiencia. Su estructura funcional contiene todas las posibles cláusulas de ejecución de algún lenguaje de interrogación (o de consulta particular), en nuestro caso se cuenta con el SQL de Sybase. MODELO CLlENTElSERVlDOR 6 El cómputo cliente/servidor más que una tecnología es una forma de hacer las cosas, que los fabricantes implementan a su manera pero cumpliendo con ciertas guías que ha venido al mercado por la fuerte inercia de los sistemas abiertos (tema ya desarrollado en la fase del proyecto terminal I) como el siguiente escalón evolutivo de las tecnologías de cómputo existentes. Para diferenciar un poco, sistemas abiertos consiste en los esfuerzos por la estandarización del cómputo veniderp y cliente/servidor consiste en la integración de lo que se tiene para distribuir la carga de trabajo, obtener mejores tiempos de respuestas y aprovechar al máximo los servicios de la red. Para ello se agrega software y hardware que permitan tales objetivos de la mejor manera. UNlX UNIX 8 INTRODUCCION Como UNIX fue desarrollado con la idea de trabajar en red. Todas las versiones de UNIX (como el UNIX que se dispone en la UAM-IZTAPALAPA) incluyen el protocolo de comunicaciones TCP/IP. Esto se debe a que también lo utiliza como vehículo de transporte para sus propios mensajes internos. Debido al uso generalizado de este protocolo , TCP/IP se ha convertido en un estandár de la industria, lo que permite integrar fácilmente grupos de trabajo de varios equipos UNIX sin dificultad alguna para compartir todo tipo de recursos (pantallas, discos, impresoras, etcétera). Esta flexibilidad lo convierte en la plataforma ideal tanto para el concepto de workgroup computing (cómputo grupal) como para el de client-server (cliente-servidor). Este concepto de cliente-servidor es muy importante para el desarrollo del sistema de servicios escolares, ya que Sybase trabaja sobre este tipo de arquitectura. Además la información almacenada en el sistema escolar puede ser transmitida a las demás unidades de la UAM, así como a rectoría. Por otra parte, UNIX no requiere demasiados recursos de cómputo y está escrito sin dependencias específicas del hardware sobre el cual funciona (las pocas librerías depenientes se encuentran perfectamente aisladas e identificadas), de manera que puede trabajar con una gama de sistemas muy amplia, que va desde computadoras personales hasta supercomputadoras. Una de las principales ventajas de utilizar UNIX, en el desarrollo del sistema de servicios escolares, es que es considerado como un sistema abierto (para mayor información remitirse a la trabajo desarrollado como parte del proyecto terminal I), a diferencia de los demás sistemas operativos. Incluye un gran número de estándares y es posible adquirirlo con un gran número de proveedores. Otra ventaja es que no es un sistema operativo nuevo, sino que tiene muchos años de desarrollo y pruebas en su haber (es decir, existe mucho respaldo técnico e informático). También es importante mencionar que, para obtener la portabilidad (poder llevar aplicaciones de una computadora a otra sin mayor esfuerzo que la recompilación y algunos cambios mínimos), es necesario ir más alla del sistema operativo, pues en el manejo de la computadora y en el desarrollo de aplicaciones utilizamos un conjunto de herramientas. Entre éstas están, por ejemplo bases de datos (Sybase), lenguajes de programación, interfases gráficas y de multimedia (todo esto lo soporta Sybase), interfases de red, etcétera. Como se puede ver todos los "afectos" de Sybase son realizados con mucha cuadratura por UNIX. A continuación se mostraran algunas ordenes (de las muchas existentes en UNIX) y se hara un pequeño análisis de estas. La orden who: Si deseamos saber quien está trabajando en una computadora; esta orden nos dara información de quien se encuentra laborando en el sistema. La información que nos despliega hace referencia al nombre de presentación del usuario, el número ID del terminal, fecha y hora de la UNIX 9 presentación de las personas. Esta orden se utilizaría si conocieramos los nombres de presentación de las personas, pero si no supieramos la clave de usuario, tendriamos que utilizar la orden finger, ya que esta nos proporciona información detallada de los usuarios presentados. o), El sistemas de archivos en UNIX comienzan en raíz y los nombres de directorios y archivos en un nombre de camino se separan por slashes. Esta notación varía con respecto al DOS; en el DOS, la raíz es siempre el dispositivo físico sobre el que uno está. . Generalmente cuando uno lista el contenido de un directorio, aparecen dos símbolos : , .. Un único punto (.) se utiliza para hacer referencia al directorio en el que uno está actualmente. Este directorio se conoce como el directorio actual. Los dos puntos (..) se utiliza para hacer referencia al directorio padre del actual. El directorio padre es el siguiente de más alto nivel en el árbol de directorios (esto último ya se menciono en la documentación entregada del proyecto terminal I). El punto-punto se puede utilizar muchas veces para hacer referencia a cosas situadas por arriba en el sistema de archivos.. Por ejemplo, ../.. hace referencia al padre del padre del directorio actual. Muchas veces ocurre que nos perdemos en los directorios, y no sabemos quien es el directorio actual, esto se puede solucionar utilizando la orden pwd. La orden Is, nos permite ver los archivos existentes en el directorio actual. Si deseamos ver los archivos ocultos, además del directorio actual y su directorio padre (., ..), se utiliza 1s -a. Como uno regularmente esta ambientado (o para otras personas, "enviciado") con el MS-DOS, las ordenes 1s -x y 1s -1 hacen el trabajo de dir/w y dir/p, respectivamente. Para movernos entre directorios, se utiliza la orden cd directorio. Pero tiene la desventaja que no nos informa en el prompt, de donde estamos parados, en comparación con el DOS, que si nos indica el directorio actual de trabajo. Una nota importante en cuanto al uso de cd, y es el posicionarnos en nuestro directorio de trabajo y esto se logra por medior de $ cd, ed decir, esta orden nos mueve al subdirectorio de trabajo, el directorio que apareció cuando ingresamos al sistema. mv archl destino. Nos permite mover archl a destino y también permite mover directorios, esto nadamas en la versión 4 de UNIX. Esta orden, ya existe en la versión 6.0 del MS-DOS. La orden mv, es muy importante para mover bloques de archivos de un directorio de trabajo a uno provisional, o para el desarrollo de un sistema. Una orden importante para saber que tipo de información almacena un archivo es file, el cuál lee la información de la cabecera del archivo y la compara con las entradas del archivo /etc/magic. Esto se puede utilizar para identificar algunos tipos de archivos básicos, por ejemplo, si el archivo es programa almacenado, si es un archivo que guarda un programa compilado. Cuando se imprime un archivo en el sistema UNIX, no hay que esperar a que el archivo se imprima (o a que se envíe a la impresora) para continuar con otro trabajo, ni tampoco hay que UNIX 10 esperar a que haya finalizado un trabajo de impresión de para enviar otro. Ip realiza un ''spool'' de la entrada al sistema de impresión de UNIX. Esto significa que al sistema de impresión se le informa de que árchivo imprimir y cómo imprimirlo, y él se encarga de realizar el trabajo. El trabajo se envía y se realiza sobre él un "spool", pero no se imprime en el instante preciso que se ejecuta la orden lp, y además lp no informa automáticamente de cuándo se imprime realmente el trabajo. Si deseamos ser notificados cuando se imprime el trabajo, se debera utilizar la opción -m (mail). Por ejemplo, $ Ip -m -d impresora1 unix envía un aviso cuando un archivo es transmitido a la impresora y se imprime (con éxito). FILTROS Una orden muy potente es grep. ("global regular expression and print", expresión regular global e impresión). Esta orden busca en uno o 'mas archivos las líneas que contengan un objetivo y después imprime todas las que se encuentra. Un problema común es el de la localización de un archivo particular en un directorio que contiene un número de archivos relacionados. Si los nombres de los archivos son muy similares (un ejemplo podría ser, los archivos creados para el manejo del sistema de control escolar), puede que no recordemos el que estamos buscando, pero si el archivo contiene una palabra o frase única en él, se podría utilizar grep para su localización. grep permite buscar palabras específicas o cadenas de texto y también objetivos definidos como patrones que puedan corresponder a un número de palabras o cadenas diferentes. grep forma patrones de búsqueda, con los símbolos de expresiones regulares y estos se muestran a continuación (los más comunes): Ejemplo chi1 1 Identifica chili, chile simple. * Identifica cero repeticiones del anterior. 11 Identifica cualquiera de los [Cclhicken caracteres entre corchetes o más ap*le carácter ale, apple Chicken, chicken A Comienzo de línea "Beef Beef al comienzo de una línea. $ Fin de línea soup$ soup al final de una línea. UNIX 11 Es digno de mencionar que grep sólo busca de línea en línea y también que la busqueda de un patrón determinado por medio de grep, en un gran archivo es lenta. Si nos interesa la rapidez deberemos utilizar fgrep. Muchos archivos contiene información organizada en términos de posiciones dentro de una línea. Entre ellos están las tablas (por ejemplo las tablas desarrolladas para el sistema de servicios escolares), que organizan la información en columnas, y los archivos que constan de líneas o registros formados por campos. El sistema UNIX incluye varias herramientas diseñadas específicamente para operar con archivos organizados en columnas o campos. Se pueden utilizar las siguientes órdenes para extraer y modificar o reorganizar la información de archivos estructurados en campos o por columnas. cut permite seleccionar columnas o campos particulares de archivos. paste crea nuevas tablas o archivos de base de datos juntando columnas o campos de archivos existentes. join funde la información de dos archivos de base de datos para crear un nuevo archivo que combina la información de ambos. A veces sólo interesa alguno de los campos o columnas en una tabla o archivo, cut permite extraer de los archivos sólo los campos o columnas que quiera.. Cuando se utiliza cut, hay que indicar como identificar los campos (por la posicición de los caracteres o mediante el uso de caracteres separadores de campo) y qué campos seleccionar. Se debe especificar la opción -c o la -f y el campo o campos a seleccionar. A continuación se mencionara el shell desde el punto de vista de programación. SHELL La palabra shell en el sistema UNIX hace referencia a diferentes cosas. En primer lugar, el shell hace referencia al intérprete de órdenes que es la interfaz de usuario principal en los sistemas UNIX . UNIX 12 Un segundo uso de la palabra tiene que ver con el hecho de que el shell incluye un lenguaje de programación completo. Esto es lo que se conoce como lenguaje de programación del shell o el lenguaje de shell. Un programa hecho en shell se denomina guión de shell, prograrnu de shell o simplemente un shell. El lenguaje de shell es un lenguaje de programación de alto nivel, que permite ejecutar secuencias de órdenes para seleccionar operaciones alternativas dependiendo del resultado de pruebas lógicas y para repetir acciones del programa. Los programas del shell se usan para ensamblar una cadena de órdenes que se utilizan con frecuencia. Por ejemplo, se desea imprimir diariamente una copia de prueba de un articulo dado, para realizar esto se utiliza una cadena de órdenes como la siguiente: $ cat article I tbl I > nroff -cm -rA2 -rN2 -rEl -rC3 -rL66 -rW67 -rOO > col 1 1 l p -dpr2 En la orden anterior se conecta una segmentación encauzada de varias órdenes del Sistema UNIX, cat, tbl, nroff, col y lp, junto con las opciones correspondientes. El shell interpreta esta entrada multilínea como una cadena unica de órdenes. Teclear esta secuencia de órdenes diariamente resulta tedioso. Para evitar este esfuerzo se coloca la lista de órdenes en un archivo y se ejecuta dicho archivo, siempre que se requiera el impreso del artículo. Entonces se pone esta secuencia de órdenes en un archivo denominado proof. $ cat proof cat article -rN2 col 1 tbl I nroff -cm -rA2 \ - rEl -rC3 -rL66 -rW67 -rOO 1 1 l p -dpr2 UNlX 13 El siguiente paso después de crear el archivo es hacerlo ejecutable, esto se realiza utilizando la orden chmod: $ chmod +x proof Entonces se puede teclear $ proof para generar el impreso deseado. El ejemplo anterior, es la forma más común de ejecutar un guión de shell. Es decir, tratarlo como un programa y ejecutar el archivo de órdenes directamente. Sin embargo, existen otras formas de ejecutar guiones que resultan a veces más útiles. Las diferencias más importantes entre las distintas formas de ejecutar guiones dependen de si el guión es ejecutado por el shell actual o por un subshell y de la forma en que las órdenes del guión se presentan al shell. Cuando se ejecuta un guión escribiendo su nombre, como en el ejemplo anterior, el shell crea un subshell que lee y ejecuta las órdenes del archivo. Cuando se ejecuta un guión tecleando el nombre de la orden, se crea implícitamente otro shell que lee y ejecuta el archivo. Para hacer lo mismo explícitamente, ejecute la orden sh y dele el nombre del archivo como un argumento. Por ejemplo, la orden siguiente es una forma alternativa de ejecutar el guión proof $ sh proof La orden sh ejecuta un subshell, que ejecuta las órdenes de proof. El programa se ejecuta hasta que se terminan las órdenes del archivo, se recibe una señal de finalización (kill), o se encuentra un error sintáctico. Cuando el programa termina, el subshell muere y el shell original despierta y devuelve una petición de orden del sistema. UNlX Variables especiales para programas de shell. El shell dispone de un número de variables predefinidas que son útiles en los guiones Significado ~~~ ~ Contiene los valores del conjunto actual de parámetros posicionales. Es el ID del proceso de shell actual. Contiene el número de párametros posicionales. Esta variable st utiliza dentro de los programas para comprobar si exister argumentos de líneas de órdenes, y si es así, cuántos. Es el valor devuelto por la última orden ejecutada. Cuando st ejecuta una orden, devuelve un número al shell. Este númerc indica si tuvo éxito (se ejecutó por completo) o falló (encontró ur error). La convención es que O se devuelve en caso de una order de éxito, y un valor no cero cuando la orden falla. Se puedc comprobar si la orden anterior es un guión tuvo éxitc comprobando $? Contiene el ID del proceso del último proceso subordinado Resulta útil cuando un guión necesita eliminar un procesc subordinado que ha iniciado previamente. 14 UNIX 15 La orden at y demonios (daemons) de usuario El Sistema UNIX permite ejecutar automáticamente programas en tiempos predeterminados. La utilización de la orden at proporciona una forma fácil de construir demonios de usuario : procesos subordinados que realizan trabajo útil para un usuario específico. PROGRAMACION DEL SHELL. El shell es un lenguaje completo de programación que puede ejecutar una serie de órdenes, bifurcar y ejecutar condicionalmente órdenes en base a pruebas lógicas y realizar bucles o iteraciones con órdenes. Con estas tres construcciones de programación, se puede llevar a cabo cualquier programación lógica que se posible con otro lenguaje. Para poder proporcionar más potencia de programación, el shell incluye otras construcciones de programación que permiten que sus programas decidan si ejecutar las órdenes en función de pruebas lógicas y realizar bucles sobre una secuencia de órdenes múltiples veces. La orden if Una clase simple de control de programa permite la ejecución condicional en base a si alguna cuestión es cierta. La forma general de if es : if orden then órdenes fi UNlX 16 La orden test Para utilizar las operaciones if. ..then en los guiones de shell es necesario evaluar algunas expresiones lógicas y ejecutar algunas órdenes en base al resultado de esta evaluación. Test evalúa una expresión; si la expresión es verdadera, test devuelve un estado de salida cero. Si la expresión no es verdadera, test devuelve un estado no cero. La orden if recibe el valor devuelto por test y continúa el procesamiento en base a ello. Los test permitidos sobre enteros son los que se muestran a continuación: n l -eq n2 Verdadero si los enteros nl y n2 son iguales. n l -ne n2 Verdadero si los enteros n l y n2 no son iguales. n l -gt n2 Verdadero si el entero n l es mayor que el entero n2 n l -ge n2 Verdadero si el entero nl es mayor que o igual a n2 nl -It Verdadero si el entero n l es menor que n2. n2 n l -le n2 verdadero si el entero nl es menor que o igual a n2 Test permite hacer las siguientes evaluaciones de cadena: -z string Verdadero s i la longitud de la cadena es cero. -n string Verdadero si la longitud de la cadena no es cero. string1 = string2 Verdadero si string1 y string2 son idénticos. string1 != string2 Verdadero si stringl y string2 no son idénticos. string 1 Verdadero si stringl no es la cadena nula De especial importancia es el hecho de que test pueda evaluar el estado del archivo y directorios. Pueden realizarse los siguientes tests: UNlX -a file Verdadero si existe file -r file -w file Verdadero si existe file y es legible 17 Verdadero si existe file y es escribible 1 Verdadero si existe file y es ejecutable I -x file -f fiie Verdadero si existe file y es un archivo regular -d file Verdadero si existe file y es un directorio -h file Verdadero si existe file y es un enlace simbólico -c file Verdadero si existe file y es un archivo de caracteres especiales -b file Verdadero si existe file y es un archivo especial de bloque -p file Verdadero si existe file y es un cauce con nombre -s Verdadero si existe file y tiene un tamaño mayor que cero. ~ file La orden if...then. ..else El operador if permite la ejecución condicional de una secuencia de órdenes en función del resultado de un test. La operación if. ..then ...else permite bifurcación de doble camino en función del resultado de la orden if. El formato básico es: if orden then órdenes else órdenes fi La orden if...then ...elif Esta orden permite crear un gran conjunto de tests if. ..then anidados. Se ejecutan las órdenes que siguen a if; si finalizan con éxito se ejecutan las ordenes siguientes a then. Si no finalizan con éxito, se ejecutan las órdenes que siguen a then. Si fallan todas las órdenes if y elif se ejecutan las órdenes al else final. El formato estándar es: UNlX 18 if orden then órdenes elif orden then órdenes else órdenes fi La orden case Si quiere realizar una comparación de alguna varible frente a una serie entera de posibles valores puede utilizar sentencias if...then o if. ..then ...elif. ..else anidadas. Sin embargo, la orden case proporciona una forma más simple y más legible de realizar las mismas comparaciones. También proporciona una forma conveniente y potente para comparar una variable con un patrón y no con un único valor específico. La sintaxis para utilizar case es la siguiente: case cadena in patrón-lista) línea de orden linea de orden ... >> patrón-lista) línea de orden línea de orden ... .. esac case opera de la siguiente forma: El valor de cadena se compara con cada uno de los patrones. Si se encuentra cuna identificación, las órdenenes que siguen al patrón se ejecutan hasta el doble punto y coma (;;) donde finaliza la sentencia case. UNIX Los operadores && y 19 11 El shell del Sistema UNIX proporciona otro dos operadores condicionales, estos son los operadores AND lógica && y OR lógica 11. El uso común es: ordenl && orden2 O ordenl )I orden2 Por lo que respecta a && (AND lógica), se ejecuta la primera orden; si devuelve un estado de éxito (cero), entonces (y sólo entonces) se ejecuta la segunda orden. && devuelve el valor de salida de la última secuencia de órdenes ejecutada. Si falla la primera o la segunda orden, && devuelve falso; para que && devuelva un valor verdadero, ambas órdenes deben devolver un valor de cero. Por lo que respecta a 11 (OR lógica), se ejecuta la primera orden; si devuelve un estado de salida falso, entonces se ejecuta la segunda orden. (1 devuelve el valor de salida de la última secuencia de órdenes ejecutada. El bucle for El formato básico es: for i in lista do órdenes done la variable, (i) en el ejemplo, puede ser cualquier nombre que se elija. Si omite la porción in lista de la orden, las órdenenes entre do y done serán ejecutadas una vez para cada parámetro posicional. UNlX 20 Las órdenes while y until Las órdenes if permiten probar si algo es verdad y ejecutar una secuencia de órdenes en base al resultado. La forma general para el uso de while es: while órdenes 1 do órdenes2 done La forma general de until es la siguiente: until órdenes1 do órdenes2 done Las Órdenes break y continue El shell proporciona dos formas para alterar la operación de las órdenes de un bucle. break sale del bucle que lo engobla inmediatamente. continue es el opuesto a break. Controla la vuelta al principio del bucle más pequeño que lo engloba. SYBASE SYBASE 22 INTRODUCCION Sybase es una compañia DBMS iniciada a mediados de los ochenta, fundada con decenas de millones de dólares en capital inicial . El equipo fundador de la empresa y muchos de sus primeros empleados fueron de otros vendedores de DBMS, y para la mayoría de ellos, Sybase representaba el segundo o tercer DBMS relacional que habían construido. Sybase posicionó su producto como el "DBMS relacional para aplicaciones en linea" y enfatizaban las caracteristicas técnicas y arquitectonicas que les distinguían de otros productos DBMS basados en SQL. Estas caracteristicas incluían: -Una arquitectura cliente / servidor, con software cliente ejecutándose en estaciones de trabajo Sun y VAX y en PC de IBM y el servidor ejecutándose en sistemas VAX / VMS o Sun. -Un servidor multihilo que manejaba su propia gestión de tareas y entrada / salida para máxima eficiencia. -Un API programado, en vez de la interfaz SQL incorporado utilizada por la mayoría de los vendedores de DBMS. -Procedimientos almacenados, disparadores y un dialecto Transact-SQL que extendia SQL hasta convertirlo en un lenguaje de programación servidor completo. Su agresivo "marketing'' y un catálogo de primera clase de inversores financieros obtuvierón para Sybase la atención de los analistas de la industria, pero fue el posterior acuerdo OEM con Microsoft y Ashton-Tate el que posicionó a la compañia como un vendedor de DBMS en alza. El renombrado SQL Server, el DBMS de Sybase fue transportado a OS/2, y comercializado por Microsoft para vendedores de sistemas informáticos (junto con OS/2), y por Ashton-Tate a través de sus canales de ventas. En 1989, Lotus Development se unió a Microsoft y Ashton-Tate como inversores en Sybase. Aunque bastante lejos de la pretensión inicial de Sybase sobre aplicaciones OLTP basadas en VAX, estos eventos en el mercado de PCs reforzarón el papel prominente de Sybase. Las innovaciones en el producto Sybase le hicieron el DBMS técnicamente más "rapido" de finales de los ochenta, y el comienzo tardio de la empresa le dio un valor competitivo técnico. Para 1990, estas innovaciones habían provocado una respuesta competitiva por parte de los otros vendedores de DBMS independientes importantes, muchos de los cuales habían anunciado planes para su propio soporte de arquitecturas cliente / servidor, dialectos de SQL procedural, procedimientos almacenados, disparadores, etc. El desarrollo de productos Sybase ha tendido a concentrarse en las características esenciales del propio DBMS, con relativamente menos atencion que las herramientas y utilidades asociadas. La linea de productos incluye SQL Workbench, un SYBASE 23 entorno de desarrollo y comprobación de aplicaciones con una interfaz de usuario gráfica, pero carece del conjunto extenso de paquetes de formularios, escritores de informes, paquetes graficos y otras herramientas ofertadas por otros vendedores de DBMS. EL SISTEMA SYBASE: EL SISTEMA SYBASE, basado en su avanzada Arquitectura Cliente / Servidor, es el único manejador de bases de datos Relaciona1 que brinda el desempeño, control y conectividad requeridos para aplicaciones en tiempo real. SYBASE Consiste en una tecnología de servidor probada, Herramientas para todo el ciclo de desarrollo SQL y productos de integración de terceros. El Sybase SQL Server, es la unica base de datos con capacidad corporativa de desempeño, integridad a nivel servidor, alta disponibilidad de aplicaciones y capacidades de Base de Datos distribuidas en linea. Sybase SQL Toolset provee de herramientas graficas para el ciclo completo de desarrollo SQL, incluyendo analisis de aplicaciones, diseño, desarrollo, depuración y pruebas y control operacional, las Interfaces Cliente / Servidor SYBASE ofrecen una Arquitectura distribuida para la integración abierta de herramientas, aplicaciones, Bases de Datos, Fuentes de información y servicios de redes heterogeneos. SQL SERVER: EL SYBASE SQL SERVER optimiza todas las funciones del manejo de la información para todos los usuarios en el sistema. fué el primer servidor inteligente y programable en forzar las reglas del negocio y proteger la integridad de su información. El SQL SERVER ofrece comunicación de servidor a servidor, permitiendo las aplicaciones del cliente accesar a información remota y servicios, atraves del SYBASE SQL SERVER. SYBASE 24 HERRAMIENTAS PARA EL DESARROLLO DE SQL Sybase proporciona herramientas para el ciclo completo de desarrollo, incluyendo, analisis de aplicaciones, diseño, desarrollo, pruebas y depuración y control operacional. Las Herramientas de SYBASE SQL TOOLSET corresponden ala ultima tecnología para construir aplicaciones en linea en ambiente Cliente / Servidor. Inclueye APT Workbench, un conjunto de herramientas basadas en ventas con un lenguaje de cuarta generación para diseño, generación de prototipos, construcción y mantenimiento de aplicaciuones en linea basadas en formas. Data y Worbench proporciona un set de herramientas visuales para el soporte a toma de decisiones, asi como herramientas de administración de la información, incluyendo Report Workbench, Todas las herramientas utilizan ventanas, menus, y deslizamiento y una interfaz de usuario "Point and Pik" . Adicionalmente, Sybase ofrece, atraves de SQL Solutions Inc. una amplia gama de herramientas de alta productividad. Estas herramientas son: SQL Advantage, un ambiente de productividad para el programador, que facilita escribir y depurar el codigo SQL; SA Compnion, una herramienta de control operacional para ambientes Cliente / servidor; SQR,reporteador y herramienta procedural de cuarta generación; y SQL Batch, el primer procesador de Batch para Base de Datos. INTERFASES DE SYBASE SYBASE ofrece interfases abiertas de programación de aplicaciones (API por sus siglas en inglés) Aplicaciones y Servicios de aplicaciones. Open Server es el unico servidor API que permite la integración de información, aplicaciones del servidor y servicios. OPEN CLIENT es un cliente API utilizado para permitir a programas de terceros o herramientas 3 G L accesar al SQL SERVER y al OPEN SERVER. SYBASE 25 SYBASE. MANEJADOR DE BASE DE DATOS RELACIONAL Un buen manejador de base de datos debe tener las siguientes caracteristicas: -Accesar y actualizar datos sin importar donde esten almacenados o la forma en que esten almacenados. -Coordinar las transacciones que se realizan entre computadoras. -Ser independiente de las aplicaciones. CARACTERISTICAS DE SYBASE -INTEGRIDAD A NIVEL SERVIDOR: EL SQL SERVER permite que las reglas tanto de seguridad como de integridad sean definidas y guardadas en el servidor de la Base de Datos en vez de repetirlas en cada aplicación, Esto reduce significativamente los costos de desarrollo de aplicaciones y de mantenimiento. Asimismo asegura la integridad de la información y el acceso de datos, incluyendo la integridad referencial. Las reglas de la integridad referencial permiten trazar las relaciones de parentesco entre las tablas de una base de datos relacional. La llave dependiente es una llave foránea, mientras las llaves referenciadas son llaves primarias, pero cada una debe ser única. -ALTA DISPONIBILIDAD DE APLICACIONES: SYBASE maximiza la disponibilidad de las aplicaciones y minimiza la costosa reducción de tiempos ofreciendo mantenimiento en linea del sistema, rapida recuperación multi CPUs y tolerancia a fallas basada en software via logs y base de datos espejo. SYBASE 26 -BASES DE DATOS DISTRIBUIDAS: La arquitectura distribuida de SYBASE soporta accesos y actualizaciones en un ambiente de red. Algunos de sus beneficios y caracteristicas claves incluyen llamadas a procedimientos remotos de servidor a servidor para aplicaciones distribuidas y servicio de Two Phase Commit para obtener consistencia de actualizaciones distribuidas -ACTUALIZACION DISTRIBUIDA CON TWO-PHASE COMMITS Una transacción es la unidad básica de trabajo del SYBASE SQL SERVER como máquina de evaluación. Una transacción tipíca esta formada por definiciones de SQL recibiendo y actualizando información de uno ó más servidores. Usando el protocolo de TWO-PHASESCOMMIT ,SYBASE mantiene consistente la actualización de datos distribuida atravéz de servidores SYBASE sobre multiples máquinas, simultáneamente si ocurre una falla durante la ejecución de una transacción. -ACCESO DISTRIBUIDO Y DATOS Se pueden mencionar dos tipos importantes de distribución de configuración existente: -Accesos distribuidos -Datos distribuidos. Los accesos distribuidos se caracterizan por el servidor central SYBASE SQL, que soporta cien aplicaiones de clientes corriendo en diferentes máquinas. Los datos distribuidos esta caracterizados por datos entre varios servidores SYBASE en una red. En una configuración de datos distribuidos una aplicación puede accesar o modificar los datos sobre múltiples servidores SYBASE en la misma transacción. -CONECTIVIDAD PARA LA INTEGRACION ABIERTA. SYBASE es el unico manejador de Bases de Datos que permite tener una integración transparente de sistemas heterogeneos. Atravez de las interfases abiertas de programación de aplicaciones, SYBASE provee de un acceso completo a datos, integración de aplicación a aplicación, arquitectura abierta, desempeño en linea y control y seguridad operacional. SYBASE 27 -DISEÑO DE SERVIDOR MULTILINEA El Servidor SQL SYBASE incluye dentro de su ingeniería el diseño de multilínea, el cuál está contenido en el Kernel de la Base de Datos y manejador del SQL, el cuál corre en diferentes sistemas operativos de computadoras. La tarea del Manejador SQL es el poder desarrollar múltiples funciones de usuario, tareas de intercambio, disco cache, indexación por medio de tablas , procesos de transacción y terminación ( esto es lo que lo hace ser un sistema multilínea). En otros manejadores las tareas antes mencionadas son asignadas desde el sistema operativo, lo cuál, disminuye el performance de las aplicaciones. Otra caracteristica es que SYBASE no requiere de transacciones complejas para monitorear procesos. A causa de que es un sistema multilínea integral, el servidor SYBASE, requiere poca memoria para conectar usuarios, esto es, aproximadamente utiliza 48 kbytes por usuario, en contraste con otros manejadores que dependen del sistema operativo, y por lo tanto requieren más memoria en el servidor del cliente, esto es , aproximadamente más de 2 megabytes de memoria para conectar a un usuario. -ARQUITECTURA DE SERVIDOR VIRTUAL El Servidor SQL SYBASE hace uso de la ventaja de múltiples CPUs en forma simétrica al sistema SMP (symetric multiprocesor ), usuando solamente un proceso por cada CPU balanceando transparentemente el trabajo através de las llamadas a CPUs. A diferencia de otros manejadores que operan alrededor del sistema operativo mediante algoritmos generales de lectura y balanceo de procesos, lo cuál limita al sistema administrador el control que pueda tener sobre otras bases de datos. SYBASE contiene un administrador del sistema el cuál controla llamadas a procesos para el SQL SERVER. -LLAMADAS A PROCEDIMIENTOS DE BASES DE DATOS REMOTAS El servidor SQL SYBASE usa una base de datos de RPCs para comunicarse a otros servidores SYBASE y traer sus datos de origen, que son conectados con SYBASE OPEN SERVERS. Dentro de la Base de Datos de RPCs se tiene un desarrollo simple unificando una interface que puede trabajar en aplicaciones distribuidas como una integración múltiple heterógenea de los datos de orígen. La complejidad, de la localización de la estructura de los diferentes datos de orígen es determinada por aplicaciones Front-End. Los datos son retornados a la aplicación en forma de SYBASE 28 descripción de columnas, valores de registros, retorno de parámetros, y estatus de los mensajes de error. -DESARROLLO COMPLETO DE APLICACIONES SYBASE prorciona herramientas para el analisis de aplicaciones, diseño, desarrollo, pruebas, depuración y control operacional. -CONSULTOR OPTIMO El optimizador de consultas SYBASE reduce relativamente el costo en el acceso a disco y tiempos de entrada y salida, por medio de estratégias que completan las consultas (SQL). Aquí se considera el uso de índices, distribución de llaves evaluados por rangos, y una estructura de las tablas que van a ser accesadas. -BASES DE DATOS DISCO ESPEJO SYBASE protege aplicaciones aun contra fallas en el disco atravéz de software, basado en disco espejo paralelamente sobre el sistema operativo. Con bases de datos en disco espejo, de dos o más piezas de discos de igual tamaño, de tal manera que un dato es escrito en la pieza del disco simultaneamente protegiendo contra fallas en la pérdida de algún dato. En el evento de una falla sobre alguno de los disco espejo, despúes de que una falla es reparada, el disco espejo es automáticamente resincronizado Sybase proporciona dos diferentes metodos de disco espejo: -Espejo en transacción de protección lógica -Pérdida de algún Commit de transacción. La Base de Datos espejo continúa en operación en el evento de una falla de disco. Una ventaja adicional de la Base de Datos espejo, es que el Servidor lee del disco dónde la última transacción de entraddsalida fué cerrada a la próxima respuesta de lectura, incrementando la rapidez de recuperación. SYBASE 29 -RAPIDA RECUPERACION Después de una falla del sistema, como una falta de voltaje, la base de datos puede ser recobrada rapidamente y restaurar las transacciones que fuerón terminadas al tiempo de la falla. El SYBASE SQL Server garantiza una rapida recuperación ya que dinamicamente calcula e implementa el chekpoint apropiado en un intervalo mínimo de tiempo de recuperación. -MANTENIMIENTO EN LINEA En Aplicaciones construidas con otros manejadores de base de datos, muchas veces deben estar fuera de linea (off-líne) para evaluar rutinas de mantenimiento activadas sobre respaldos de Bases de Datos, diagnósticos y cambios en el esquema. El SYBASE SQL Server fue diseñado para que se puedan ejecutar operaciones de mantenimiento en linea, con lo cual se permita accesar y actualizar la base de datos. Los usuarios pueden correr aplicaciones de base de datos durante los respaldos y tareas de mantemiento que realizan los administradores del sistema. PLATAFORMAS DE SYBASE: Basicamente se puede mencionar que SYBASE SQL SERVER Y SYBASE SQL TOOLSEET se encuentran disponibles en todas las VAXíVMS y RISCíULTRIX de DIGITAL EQUIPMENT CORPORATION; otras grandes plataformas UNIX incluyendo HE WLETT PACKARD SERIE 9000, IBM RSí6000, AT&T 3 B2 Y 6386, estaciones de trabajo SUN, SEQUENT SYMMETRY, DATA GENERAL SERIE AVIION, MISERVER DE PYRAMID, serie 3000 de NCR, Estaciones de trabajo 4D IRIS de SILICON GRAPHICS; STRATUS bajo sistema operativo VOS, NEXT y computadoras personales corriendo OS2. El SYBASE OPEN SERVER Y OPEN CLIENT Estan disponibles en las plataformas anteriormente mencionadas. Adicionalmente, EL OPEN CLIENT se encuentra disponoble tambien en MACINTOSH DE APPLE y computadoras personales bajo sistema operativo DOS. Las redes soportadas incluyen: DECNET, TCP/IP, NAMED PIPES, LU 6.2 y NETWARE. Los productos para IBM MVS consisten en OPEN SERVER PARA CICS, SYBASE OPEN GATEWAY para DB2 y SYBASE NET GATEWAY. SYBASE ESPECIFICACIONESSYBASE SQL SERVER RDBMS BASES DE DATOS 32,767 -Bases de datos por SQL Server -Tamaño maximo de base de datos Limitado solo por espacio disponible en disco -Máximo número de bases de datos que pueden ser actualizadas en una etapa 8 Máximo número de bases de datos abiertas por una consulta Máximo número de tablas en una consulta 16 16 TABLAS 2 billones -Tablas por base de datos -Columnas por tabla 250 -Indices por tabla 25 1 -Lineas por tabla Limitado solo por el espacio disponible en disco -Columnas por indice compuesto 16 -Caracteres para nombres de bases de datos 30 30 SYBASE PROCEDIMIENTOS DE ALMACENAMIENTO Y TRIGGERS -Longitud máxima 192 Kbytes -Número máximo Limitado solo por espacio disponible en disco HARDWARE -RAM requerida para SQL Server y sistema operativo 8 Mb -RAM por usuario adicional 48 Kb -Espacio requerido en disco para almacenar imagen del sistema 6 Mb 31 SQL SQL 33 INTRODUCCION Este lenguaje incluye construcciones para la: 0 Definición de datos. 0 Manipulación de datos. 0 Control de datos. Sybase incluye: 0 Control y flujo de sentencias. 0 Procedimientos almacenados(AP1’s) y Triggers(disparad0res). Antes de hablar de los API’s y Triggers se mencionaran los tipos de datos que puede manejar el SQL de Sybase. 0 0 Cadenas de caracteres de longitud Jija(char(n)): Las columnnas que contienen este tipo de datos almacenan típicamente nombres de alumnos, direcciones, nombres de las materias asociadas a cada carrera universitaria, etc. Enteros (tinyint, smallint e int): Las columnas que contienen este tipo de datos almacenan típicamente cuentas, cantidades, edades, etc. Las columnas de los valores enteros tambien se utilizan con frecuencia para contener números identificadores, tales como números de cliente, de empleado o bien en el caso del sistema de servicios escolares se maneja la matrícula del alumno. 0 Números de comuJlotunte(float): Las columnas con este tipo de datos se utilizan para almacenar númerios científicos que pueden ser calculados aproximadamente, tales como pesos y distancias. Los numeros de coma flotante pueden representar mayores rangos de valores que los permitidos por los números decimales, pero pueden producir errores de redondeo en los cálculos. SQL 0 0 34 Cadenas de caracteres de longitudvariable (varchar(n)): Permite que una columna almacene cadenas de caracteres que varían de longitud de una fila a otra, hasta una cierta longitud máxima. Importes monetarios (money): Este tipode dato permite almacenar generalmente un número decimal o en coma o en flotante. Fecha y hora (datetime): Se utilizan para guardar fechar y horas. 0 0 Datos Booleanos (bit): Se utilizan para guardar valores lógicos como un tipo éxplicito. 0 Texto extenso (text): En este tipo de dato se almacenan cadenas de texto. Flujo de bytes no estructurados (binary(n), varbinary(n) e image): Se permiten almacenar y recuperar secuencias de bytes de longitud variable SQL 35 A continuación se muestran estos tipos de datos, así como el tamaño que ocupa cada tipo de dato y su rango de valores: -T--TAMANO RANGO EJEMPLO int 4 byes -2E31 -- 2E31-1 475632 smallint 2 bytes -2E15 -- 2E15-1 23214 tinyint 1 byte O -- 255 65 float 8 bytes +-10E-308 -- +-10E307 3.1416 1.4232e1O money 8 bytes char(n) 11 bytes var char(n) depende de la longitud de la cadena binary(n) n bit varbinary(n) bit datetime +-$922,337,203,685,447.5807 "Mundo" 1 -- 255 bytes OxBc6 depende de la 1 -- 255 bytes longitud de la cadena 1 bit 8 bytes $21.31 Ox7f 1 0 0 1 Jan 1, 1753 0O:OO -- '3-19-86' Dee 31. 9999 2359 -- 2 billion de caracteres text depende de la 2K longitud del texto image depende de la 2K -- 2 billon de bytes longitud de la imagen Puesto que una base de datos es generalmente un modelo de una situación del mundo real, ciertos datos pueden invariablemente faltar, ser desconocidos o no ser aplicables, entonces se aplica el concepto de valor nulo (null).. Ahora bien si aplñica el valor nulo a una columna, esto indicara, que el valor de este dato es desconocido. Cuando un renglón es creado, si no se especifica un valor para SQL 36 una columna determinada y no existen valores por default y el valor null es permitida en la columna, el SQL-Server asigna automáticamente el valor nullo. DISPARADOR (trigger). Un disparador es un procedimiento almacenado (se explicara más adelante, en el subtema de API’s), el cuál es llamado automaticamente por el server como resultado de un cambio en una tabla. Cualquier evento que provoque un cambio, en el contenido de una tabla; puede el usuario specificar una acción asociada que el manejador de la base de datos debe efectuar. Los tres eventos que pueden disparar una acción son: INSERT DELETE UPDATE Un disparador es activado solamente una vez por una simple sentencia. En una base de datos relaciona1 bien diseñada cada tabla tiene una columna o combinación de columnas cuyos valores identifican unívocamente cada fila en la tabla. Esta columna o grupo de columnas se denomina clave primaria de la tabla. Una columna de una tabla cuyo valor coincide con la clave primaria de alguna otra tabla se denomina una clave fóranea. Lo mismo que en una combinación de columnas puede servir como clave primaria de una tabla, una clave fóranea puede ser también una combinación de columnas. Los triggers proporcionan integridad referencia1 y esto consiste en lo siguiente: Cuando una clave primaria de una tabla es cambiada o borrada y esta clave es usada como clave fóranea en otra tabla, la otra tabla puede ser tambien actualizada. Cuando una clave fóranea es cambiada o creada puede ser validada junto con la llave primaria a la cual es referida. SQL 37 Los disparadores proporcionan un modo alternativo de implementar las restricciones de integridad referencial proporcionadas por claves fóraneas y claves primarias. De hecho el mecanismo disparador es más flexible que la integridad referencial estricta proporcionada en el estándar ANSUISO. Para crear un disparador en SQL de Sybase se utiliza lo siguiente: create trigger nombre-del- trigge on nombre: de- la-tabla for { insert I update I delete} [,{insert I update I delete}] ... as sentencias- SQL Ejemplo: create trigger title-del on titles for delete as print 'You just deleted a title !!!' return A continuación se muestran los comandos principales asociados a los triggers: sp-helptext, sp-helptext trigger-name : Se utilizan para examinar el texto del trigger. sp-rename, old-rename y new-name: Asociados con el renombramiento de los triggers. spdepends tablename: Se utiliza en una tabla para para ver los triggers que se asocian a esta tabla. sp-depends trigger-name: Se utiliza en un trigger para ver las tablas asociadas a este trigger. drop trigger triggername: Para borrar un trigger en particular. Cuando se borra una tabla en particular, automaticamente se borran sus disparadores asociados a esta tabla. SQL 30 La principal ventaja de los disparadores es que las reglas comerciales pueden almacenarse en las bases de datos y ser forzadas consistenetemente con cada actualización de la base de datos. Esto puede reducir sustancialmente la complejidad de los programas de aplicación que acceden a la base de datos. Los disparadores tienen también algunas desventajas, incluyendo las siguientes: 0 Complejidad de la base de datos: Cuando las reglas se trasladan al interior de la base de datos, preparar la base de datos pasa a ser una tarea más compleja. 0 Reglas ocultas: Con las reglas ocultas dentro de la base de datos, programas que parecen efectuar sencillas actualizaciones de la base de datos pueden, de hecho, generar una enorme actividad en la base de datos. MODELOS DE TRANSACIONES: Las actualizaciones de la base de datos son generalmente originadas por eventos del mundo real tales como el ingreso de un nuevo alumno a la universidad, creación de un grupo, etc. Entonces, muchas veces estas actualizaciones originan variar n tablas diferentes, por tal si ocurre un fallo en el sistema u otro error, puede originarse una situación en donde algunas de las actualizaciones son procesadas y otras no, por tanto, la integridad de la base de datos se perdera. La secuencia de actualizaciones deben ser una proposición del tipo de "todo o nada" en la base de datos. SQL proporciona precisamente esta capacidad a través de sus características de procesamiento de transacciones. Una transacción es una o más sentencias SQL que juntas forman una unidad de trabajo. Las sentencias SQL que forman la transacción sulen estar estrechamente relacionadas y efectuar acciones independientes. Cada sentencia de una transacción efectúa una parte de una tarea, pero todas ellas son necesarias para completar la tarea. La agrupación de las sentencias en una sola transacción indica al DBMS que la secuencia de sentencias entera debe ser ejecutada atómicamente; todas las sentencias deben completarse para que la base de datos esté en un estado consistente. El concepto de transacción es crítico para los programas que actualizan una base de datos ya que asegura la integridad de la base de datos. Un DBMS basado en SQL efectúa este compromiso referente a las sentencias de una transacción:: SQL 39 Las sentencias de una transacción se ejecutarán como una unidad atómica de trabajo en la base de datos. O todas las sentencias son ejecutadas con éxito, o ninguna de las sentencias es ejecutada. El DBMS es responsable de mantener este compromiso incluso si el programa de aplicación aborta o se produce un fallo hardware a mitad de la transacción, tal como se muestra en la siguiente figura. Estado de la base de datos antes de la transacción - Transacción a !Fallo del hardware! I El DBMS deshace !Error del programa! El DBMS Estado de la base de datos después de la transacción deshace todos los cambios todos los cambios SQL 40 En cada caso, el DBMS debe asegurarse que cuando se complete una recuperación del fallo, la base de datos nunca refleje una "transacción parcial". El DBMS (sistema manejador de la base de datos) Sybase, esta diseñado para aplicaciones de procesamiento de transacciones en línea. el dialecto Transact-SQL utilizado por Sybase incluye cuatro sentencias de procesamiento de transacciones: 0 La sentencia BEGIN TRANSACTION señala el comienzo de una transacción. A diferencia del modelo de transacción ANSUISO, que implícitamente inicia una nueva transacción cuando la anterior finaliza, Sybase requiere una sentencia explícita para iniciar una transacción. 0 La sentencia COMMIT TRANSACTION señala el final con éxito de una transacción. como en el modelo ANSUISO, todos los cambios efectuados a la base de datos durante la transacción pasan a ser permanentes. Sin embargo no se inicia automáticamente una nueva transacción. 0 La sentencia SAVE TRANSACTION establece un punto de guarda a mitad de una transacción. Sybase guarda el estado de la base de datos en un punto actual de la transacción y le asigna al estado guardado un nombre de punto de guardia, especificado en la sentencia. La sentencia ROLLBACK TRANSACTION tiene dos papeles. Si se designa un punto de guarda en la sentencia ROLLBACK, Sybase deshace los cambios de la base de datos efectuados desde el punto de guarda, dando marcha atrás efectivamente a la transacción hasta el punto en donde l a sentencia SAVE TRANSACTION fue ejecutada, Si no hay ningún punto de guarda designado, la sentencia ROLLBACK deshace todos los cambios efectuados desde la sentencia BEGIN TRANSACTION. El mecanismo de punto de guarda de Sybase es especialmente útil en transacciones complejas que contienen muchas sentencias, tal como se muestra en la figura que se muestra a continuación: SQL tad0 de la se de datos tes de la insacción I BEGIN TR~NSACTIONI I INSERT I - Punto de Guarda A I I DELETE I 5UPDATE e INSERT ROLLBACK TO B i I UPDATE I DELETE I I + COMMIT TRANSACTIO .stado de la 'ase de datos espués de la ransacción m u Punto de Guarda B 41 SQL 42 El programa de aplicación de la figura guarda periódicamente su estado conforme progresa la transacción, estableciendo dos puntos de guarda nombrados.. Si más tarde se presentan problemas durante la transacción, el programa de aplicaión no tiene que abortar la transacción completa. En vez de ello, puede dar marcha atrás a la transacción hasta cualquiera de sus puntos de guarda y proseguir adelante desde allí. Todas las sentencias ejecutadas desde el punto de guarda son deshechas por la operación de marcha atrás. Algo digno de resaltar es que la transacción completa sigue siendo la lunidad lógica de trabajo para Sybase, como lo es para el modelo ANSUISO. Si se produce un fallo del sistema o del hardware en mitad de una transacción, por ejemplo, la transacción entera es suprimida de la base de datos. Por tanto, los puntos de guarda son una conveniencia para el programa de aplicación. Las sentencias SQL que se ejecutan <<fuera de una transacción>> (es decir, las sentencias que no aparecen entre un par de sentencias BEGIN/COMMIT o BEGIN/ROLLBACK) son efectivamente manejadas en modo <<autocomplementación>>. Cada sentencia se complementa cuando se ejecuta; no hay modo de deshacer la sentencia una vez que se ha ejecutado con éxito. Sybase prohíbe específicamente la ocurrencia de ciertas sentencias dentro de una transacción, incluyendo las que alteran la estructura de una base de datos (tales como CREATE TABLE, ALTER TABLE Y DROP TABLE), las que alteran la seguridad de la base de datos (GRANT y REVOKE) y las que crean tablas temporales. estas sentencias deben ser ejecutadas fuera de una transacción más fácil de implementar, ya que asegura que la estructura de la base de datos no puede cambiar durante una transacción.. En la práctica, las prohibiciones de Sybase no afectan a la utilidad del DBMS. Puesto que estas prohibiciones contribuyen a acelerar el rendimiento de la transacción. API Sybase en el contexto del SQL programado, en vez de adoptar el planteamiento de mezclar SQL con otro lenguaje de programación, proporciona una biblioteca de llamadas funciones que componen una interfaz de programación de aplicaciones (API -- application programming interface) para el DBMS. Para transaferir sentencias SQL al DBMS un programa de aplicaión llama a funciones API, y llama a otras funciones para recuperar resultados de consultas e información del estado procedente del DBMS. Cuando un DBMS soporta una interfaz de llamada de funciones, un programa de aplicación se comunica con el DBMS, exclusivamente, a través de un conjunto de llamadas que son colectivamente conocidas como un interfuz de programación de uplicaciones o API. SQL 43 La operación de un API se ilustra en la siguiente figura: 3 Llamadas API CONNECT (bd,usuario,contraseAa) I a , SEND (" update grupo set ...") I EXECUTE() I STATUS-CHECK Programa II I I () OK SEND ("select * from carrera ...'I de Aplicación I EXECUTE0 I I GETROW ( ) I I I (HF101,"MATEMATICAS I",...) GETROW í ) (HF201,"MATEMATICAS ll",...) DISCONNECT() 1 0 El programa comienza el acceso a la base de datos con una llamada API que conecta el programa al DBMS y, con frecuencia, a una base de datos específica. 0 Para enviar una sentencia SQL al DBM, el programa construye la sentencia como una cadena de texto en un buffer y luego hace una llamada API para transferir el contenido del buffer al DBMS. 0 El programa hace llamadas API para comprobar el estado de su petición al DBMS y para manejar errores. SQL 44 0 Si la petición es una consulta, el programa utiliza llamadas API para recuperar los resultados en los buffers del programa. Típicamente, las llamadas devuelven datos de fila a fila o de columna a columna. 0 El programa termina su acceso a la base de datos con una llamada API que le desconecta del DBMS. Un API se utiliza con frecuencia, cuando el programa de aplicación y la base de datos están sobre dos sistemas diferentes en una arquitectura clientehervidor (este modelo se explica con detalle en la primera etapa del proyecto terminal I), como se muestra en la siguiente figura: n [F] Programa I En esta configuración, el código para las funciones API está localizado en el sistema cliente, donde se ejecuta el programa de aplicaciones. El software DBMS está localizado en el sistema servidor, donde reside la base de datos. Las llamadas desde el programa de aplicación al API tiene lugar localmente dentro del sistema cliente, pero la comunicación entre el API y el DBMS tiene lugar sobre una red. Un API SQL ofrece particulares ventajas para una arquitectura cliente/servidor, ya que puede minimizar la cantidad de tráfico de red entre el API y el DBMS. El API de SQL Server, al cual se le llama biblioteca de la base de datos o dblib (database library), consta de unas 1O0 funciones disponibles para un programa de aplicación. SQL 45 Procedimientos Almacenados. Una de las caractéristicas más importantes y más ampliamente promocionadas de SQL Server es su soporte de procedimientos almacenados. Un procedimiento almacenado es una secuencia de sentencias Transact-SQL a las que se les asigna un nombre, se compila y se almacena en la base de datos SQL Server. Una vez que el procedimiento almacenado ha sido definido en la base de datos, un programa de aplicación puede llamarlo por su nombre, utilizando la interfaz dblib. El lengua; e Transact-SQL proporciona un conjunto completo de extensiones procedurales a SQL, incluyendo comprobación de condiciones (IF/THEN/ELSE), iteración (bucles FOR y WHILE con BREAK y CONTINUE), bifurcación (GOTO), llamadas a procedimiento (EXECUTE), bloques de sentencias (BEGIN/END) y variables locales y globales. Utilizando estas caractéristicas se pueden crear procedimientos almacenados complejos. SQL Server y el DBMS de Sybase del cual se deriva están ambos posicionados como sistemas de gestión de base de datos de alto rendimiento para aplicaciones OLTP (on line transactions processing). Los procedimientos almacenados son una parte crítica de este reclamo de rendimiento. Para comprender por qué, es útil considerar cómo SQL Server procesa una sentencia SQL, como se muestra en la siguiente figura: SQL - Sentencia SQL Ejecución normal SELECT A,B,C 46 Procedimientos almacenados FROM X,Y WHERE A< 5000 AND C = 'ABC' I 1 Análisis I Validación I Crea I F Optimización Genera un plan de aplicación Procedimiento Tiempo de Sentencia Ejecución 1 D Formato binario de la sentencia SQL :XECUTE ' Ejecuta el plan de aplicación - +ocedimiento I Aqui dblib es básicamente una interfaz dinámica a SQL Server. Cada sentencia que un programa envía a SQL Server recorre los cinco pasos (análisi, validación, optimización, compilación y finalmente, ejecución) en tiempo de ejecución. Una de las desventajas de SQL dinámico es su rendimiento relativamente pobre comparado con SQL estático. Las transacciones típicas de un programa OLTP utilizan las sentencias INSERT, DELETE, UPDATE Y SELECT que acceden a una única fila de datos basándose en la clave primaria de la fila. Es relativamente fácil optimizar este tipo de sentencia SQL. Por tanto, el recargo de la optimización y la compilación en tiempo de ejecución es relativamente bajo para los programas OLTP sencillos de alto uso que necesitan el rendimiento más elevado. Los procedimientos almacenados de SQL Server proporcionan un modo de analizar, validar, optimizar y compilar una secuencia entera de sentencias SQL de antemano. Para obtener el mejor rendimiento posible de un programa, el programador toma las sentencias SQL a ejecutar, define un procedimiento que las contenga y almacena el procedimiento almacenado en la base de datos. En tiempo de ejecución, el programa simplemente pide a SQL Server que ejecute el procedimiento almacenado. Por tanto, los procedimientos almacenados proporcionan a SQl Server la flexibilidad de SQL 47 una interfaz SQL dinámico y los beneficios de rendimiento de las sentencias precompiladas encontradas en SQL estático. Los procedimientos almacenados, son similares en concepto a los planes de aplicación almacenados en una base de datos DB2 y a los módulos de acceso almacenados en una base de datos SQL/DS. Cada una de estas estructuras almacena la forma compilada de una o más sentencias SQl. De hecho, hay una progresión lógica de SQL estático a SQl dinámico extendido de SQL/DS y a los procedimientos almacenados de SQL Server. Con cada paso de progresión, el objeto compilado almacenado en la base de datos resulta ser más compartible y más capaz: 0 En SQL estático, cada sentencia de SQL incorporado genera su propia sentencia compilada. La sentencia compilada se utiliza exclusivamente en el único punto del programa donde aparece la sentencia incorporada. No puede ser compartida por otros programas, por que no hay modo de identificar la sentencia compilada. 0 En SQL dinámico, cada sentencia SQL preparada se identifica por un nombre de sentencia. El nombre de sentencia permite a otras partes del programa reutilizar la sentencia compilada durante la misma transacción. Sin embargo, la sentencia compilada aún no puede ser compartida por otros programas, ya que el nombre de sentencia es específico para un programa en particular. 0 El SQL dinámico extendido, cada sentencia SQL/Ds preparada es identificada mediante el número id-sentencia. El id-sentencia es visible fuera de los confines de la bse de datos o de un programa en particular, permitiendo que varios programas aprovechen una única sentencia compilada o un conjunto de sentencias compiladas. En SQL Server, cada procedimiento almacenado se identifica mediante un nombre de procedimiento. Al igual que el id-sentencia de SQl/DS, el nombre del procedimiento es visible fuera de la base de datos, permitiendo que se aprovechen varios programas del procedimiento. Además, el procedimiento compilado puede constar de una secuencia completa de sentencias SQL minimizando el número de solicitudes que debe hacer el programa al DBMS. Los procedimientos almacenados de SQL Server proporcionan una ventaja adicional. Pueden incluir sentencias de Transact-SQL que interactúen con otro software en el servidor aparte del propio DBMS. Por ejemplo, un procedimiento almacenado puede enviar un mensaje por correo a otro usuario o desencadenar la ejecución de un programa escrito por el usuario sobre el sistema servidor. Con esta capacidad, un DBMS SQL Server puede ir más allá del papel de un servidor de datos y tomar un conjunto más amplio de responsabilidades como servidor de aplicaciones. SQL 48 RESUMEN Las sentencias procedurales. La adición de sentencias procedurales tradicionales de lenguajes de programación (IF/THEN/ELSE, COTO, FOR y bucles WHILE, etc.) para que SQL permita a los usuarios <<unir» las sentencias DML y DDL de SQL en guiones SQL completos. Procedimientos almacenados. Los procedimientos almacenados permiten que una secuencia de sentencias SQL sea precompilada, nominada y almacenada en la base de datos para ejecución posterior. Combinan la flexibilidad de SQL dinámico (el programa de aplicaión puede decidir qué procedimiento ejecutar en tiempo de ejecución) con el rendimiento de SQL estático (el código del procedimiento está precompilado y el DBMS simplemente lo ejecuta en tiempo de ejecución). Disparadores. Los disparadores permiten a un DBMS ejecutar automáticamente una sentencia o secuencia de sentencias en respuestas a un evento externo, tal como un intento de actualizar, insertar o suprimir datos en una tabla. Con los disparadores, el DBMS puede tomar un papel más activo en el forzamiento de la integridad de la base de datos y las reglas comerciales, que en nuestro caso sería las normas que rigen la administración escolar. UNIFACE UNIFACE 50 INTRODUCCION UNIFACE fué creado en 1983 orientado a la rapida construcción de tecnología y aplicaciones de bases de datos independientes. El nombre de UNIFACE fué derivado de las palabras UNIque, UNIform, UNIversal interFACE, porque UNIFACE fue diseñado para ser una herramienta que fuera utilizada para el desarrollo de aplicaciones, sin importar la plataforma de hardware. En los años 90’s se comprueban las razones por las que UNIFACE fue creado ya que para las aplicaciones actuales se necesita una diversidad de tecnologias, incluyendo multiples plataforma de hardware, sistemas operativos, interfaces de usuario y fuentes de datos. CA RACTERISTICAS -Diccionario de aplicaciones y desarrollo orientado a objetos La potencia real de UNIFACE reside en el diccionario central de aplicaciones. Este diccionario contiene toda la información necesaria para una rapida construcción y mantenimiento de las aplicaciones, incluyendo definiciones del modelo de datos, instrucciones de proceso, definición de formas y reportes, y muchas cosas más. -Soporte optimizado para tecnologias de sistemas abiertos Las aplicaciones UNIFACE son independientes de la tecnologia, aunque son optimizadas por cada tecnologia particular. UNIFACE al tiempo de ejecución usa manejadores de base de datos, redes e interfaces de usuario para aprovechar las ventajas que ofrecen los avanzados sistemas de computo. -Interface de presentación universal (UPI) Hoy en dia muchos desarrolladores se enfrentan con la necesidad de soportar interfaces de usuario graficas (GUI’s). Al mismo tiempo las organizaciones no tienen los recursos necesarios para realizar una inversión en los dispositivos necesarios. Las UPI’s posibilitan que una aplicación en UNIFACE pueda utilizar posteriormente GUI‘s sin cambiar una sola linea de codigo. UNIFACE 51 -Ambiente de desarrollo integrado La ingeniería de información y el diseño de facilidades (IDF) es el desarrollo de un medio ambiente usado para introducir el diccionario de la aplicación y construir una aplicación UNIFACE. El IDF contiene todas las herramientas necesarias para un desarrollo rapido y también incrementa la potencia del diccionario de la aplicación . -Reporteador para usuario final Como consecuencia de los continuos cambios, las organizaciones necesitan enontrar caminos que posibiliten satisfacer las necesidades de información de sus usuarios. El reporteador UNIFACE permite que los usuarios puedan crear reportes sin la necesidad de conocer tecnologias de bases de datos ó la localización y estructura de la base de datos. Esto se logra utilizando vistas conceptuales y con ayuda de menus. UNIFACE 52 ARQUITECTURA Y DICCIONARIO DE APLICACIONES El desarrollo de aplicaciones en UNIFACE está basado sobre la idea que esas aplicaciones puedan definir por los datos que procesan. Despues de una fase de diseño de información, entidades, campos y relaciones son almacenadas en el diccionario de aplicaciones. Esta información es complementada por integridad referencia1 y otras aplicaciones incluyendo reglas de validación, formulario de derivación y reglas de formato. UNIFACE administra esta información en el esquema conceptual y es manejada por los procesos desarrollados en la aplicación. Una instruccion especifica de usuario final (form) consiste en un conjunto del esquema conceptual y es referenciado al esquema externo. Una típica aplicación UNIFACE esta formada de numerosos esquemas externos. Un esquema externo puede ser una vista particular de los datos. Al tiempo de ejecución, UNIFACE procesa los esquemas externos y controla las transacciones de usuario final contra la integridad de los datos. El sistema al tiempo de ejecución en UNIFACE utiliza un esquema interno para accesar a los datos fuentes que se encuentran ocultos. El esquema interno automaticamente mapea las entidades del esquema conceptual a tablas o archivos. Esto se hace con el manejador de base de datos el cual es usado en lenguaje nativo y funciona para cada dato fuente. Cada entidad en el esquema conceptual puede tener su propia asignación por el manejador de base de datos, una aplicación (que contenga multiples entidades) puede ejecutar de una forma transparente accesos de lectura y escritura a multiples datos fuentes. El grado de idependencia de la base de datos está dado por la asignacion de las entidades y los datos fuentes pueden ser alterados dinamicamente al tiempo de ejecución. Esto se hace posible, por ejemplo, para una aplicación construida en ORACLE, del mismo modo trabaja con SYBASE, INGRES, INFORMIX, ALLBASEBQL, TurboIMAGE, Rdb, RMS, CISAM, KSAM, archivos Dbase y otros administradores de base de datos soportados por UNIFACE. UNIFACE 53 ARQUITECTURA 3-SCHEMA La idea de usar un 3-schema se aproxima al desarrollo de una aplicacion que fue identificada inicialmente por un grupo de estudio de ANSUSPARC. La organizacion internacional de estandares (ISO) confirmo el trabajo del grupo de ANSUSPARC algunos anos despues de ser escrito. La vista conceptual, mencionada por ANSVSPARC, concentra el significado de la informacion. Esto es el esquema conceptual que describe esa vista. Las vistas externas concentran las formas de representar la informacion hacia el exterior (usuarios). Estos son descritos en el equema externo. Las vistas internas concentran una representacion fisica de los datos internos del sistema que son descritos en el esquema interno. Los fundadores de UNIFACE consideran que la arquitectura 3-shema proporciona un buen modelo para la construccion de tecnologia y fuentes de datos independientes de las aplicaciones. BENEFICIOS DE LA ARQUITECTURA 3-SCHEMA La estructura 3-schema proporciona una avanzada portabilidad de aplicaciones. Esto habilita aplicaciones a ser desarrolladas sin considerar la plataforma de hardware, sistema operativo, red, interface de usuario, o fuente de datos. UNIFACE automaticamente toma ventajas de caracteristicas avanzadas de computo y de este modo la funcionalidad y desempeno no son sacrificados. UNIFACE 54 DICCIONARIO DE APLICACIONES Cuando se construyen aplicaciones en UNIFACE, toda la informacion es almacenada en un diccionario central de la aplicacion. Este diccionario reside en una fuente de datos soportada por UNIFACE, tal como ORACLE o INFORMIX. El diccionario de la aplicacion incrementa la productividad del desarrollo facilitando una orientacion a objetos, construyendo bloques enfocados al desarrollo y por hacer el mejor uso de la experiencia de su personal. Esto posibilita que los mejores (y generalmente mas caros) desarrolladores construyan procesos estandar y objetos comunes en el diccionario. Cuando se construyen modelos, automaticamente son utilizados los estandares y funcionalidades provistos por los desarrolladores de mas experiencia. CICLO DE DESARROLLO UNIFACE Generalmente un desarrollo comienza con el esquema conceptual definido en terminos de un modelo relaciona1 con relaciones de ''uno a muchos" entre entidades. Esta informacion puede ser escrita en el esquema conceptual desde una herramienta CASE, donde UNIFACE lea la estructura de una base de datos, o tambien puede ser accesada manualmente. Despues, integridad referencia1 contraida, en compañia con reglas, validacion de datos, desplegados y formatos de entrada, procesos estandar y algunos mas, son definidos en el esquema conceptual. Los desarrolladores construyen formas basados en las definiciones del equema conceptual. El IDF (Information engineering & Design Facility) puede ser utilizado inicialmente para cargar el esquema conceptual y las definiciones de campos y entidades, donde podrán ser extendidas a procedimientos completos. A lo largo de este proceso, los desarrolladores pueden producir inmediatamente prototipos a solicitud del usuario. UNIFACE 55 La secuencia anterior de eventos no se ha encontrado. Esto es posible para definir esquemas externos antes de que exista un esquema conceptual, o puede ser desarrollado simultaneamente. Con esto se hace enfasis de que el desarrollo de una aplicacion UNIFACE es flexible. REVISION DE IDF El principal proposito es proporcionar un acceso directo al contenido del diccionario de la aplicación a través de todas las etapas del ciclo de vida del desarrollo. El IDF proporciona areas de trabajo para manejar la información del esquema conceptual y externo. El IDF proporciona ambiente de ventanas para el acceso de definiciones en el diccionario de la aplicación. La opción EXTERNAL SCHEMA llama a un submenu usado para definir, compilar y probar esquemas externos. La opcion APPLICATION accesa un submenu usado para especificar nivel de aplicacion de las definiciones como las aplicaciones de pantalla, manejadores y rutinas de lengajes de tercera generación que serán usadas y para crear aplicaciones ejecutables. La opción SCHEMA CONCEPTUAL llama un submenu el cual es usado para definir las entidades, campos, dominios, relaciones y toda la información que forma parte del esquema conceptual. El submenu DICTIONARY LISTINGS accesa reportes que contienen documentación del diccionario de la aplicación, incluyendo reportes de referencias cruzadas. La opcion CENTRAL DEFINITIONS es usasada para administrar aplicaciones centrales de objetos, incluyendo procedimientos, registros(variables), ayudas y mensajes de error, menus, panels de control, tablas de translación y tablas de dispositivos (utilizadas para especificar definición de impresoras). La opción SQL WORKBENCH activa el uso de comandos SQL y muestra los resultados. La opcion MISCELLANEOUS llama un submenu el cual proporciona acceso a una pantalla completa de editor de texto, aplicación de facilidades de importación y exportación de datos y otras funciones. UNIFACE 56 ESQUEMA CONCEPTUAL El esquema conceptual es el corazón del desarrollo de una aplicación UNIFACE. Esto proporciona un potente camino para controlar y simplificar el desarrollo de procesos de la aplicación por los desarrolladores especificando usos comunes de entidades, campos, relaciones y otras aplicaciones centrales de objetos. Esos objetos forman los bloque de construcción los cuales son reutilizados para la construcción rapida de aplicaciones. Los objetos y sus atributos son automaticamente heredados cuando son incluidos en la definición. ASIGNACION DE ENTIDADES En UNIFACE las entidades corresponden a tablas o archivos en la fuente de datos. Tambien pueden ser definidas como entidad subtipo, las cuales se habilitan con multiples significados, por ejemplo una entidad llamada compañia puede contener lineas de varias compañias y compañias subsidiarias. La asignación de entidades desde el IDF es usada para introducir y administrar la definición de entidades. El ingreso en el DBMS es usado para especificar los datos fuentes de cada entidad. Las asignaciones del DBMS pueden ser alteradas al tiempo de ejecución sin tener que cambiar definiciones o recompilar aplicaciones. Por ejemplo, una aplicación que normalmente almacene datos en archivos RMS pueden ser probados también en ORACLE simplemente cambiando una linea en el archivo de asignación: $DEF =$ORA Esta posibilita cambiar datos fuente al tiempo de ejecución hacia bases de datos independientes soportadas por UNIFACE. UNIFACE 57 DEFlNlClON DE CAMPOS Los campos de cada entidad son definidos usando la opción FIELD ASSIGNMENTS. Esta forma muestra las llaves de las entidades, campos y definiciones para cada campo. Las llaves son definidas en la parte superior de esa pantalla. Cuando un campo es definido como parte de una llave primaria, UNIFACE siempre impide que el usuario pueda modificar ese campo recuperandolo de la base de datos. DEFlNlClON DE RELACIONES. La opción RELATIONSHIP DEFINITION es usada para introducir y administrar la definición de relaciones entre entidades. Cada relación de "uno a muchos" es definida por asociación de la llave primaria de una entidad a una llave externa de la otra entidad. Una entidad puede ser relacionada con un subtipo definiendo una relacion de "uno a muchos" entre la entidad y el subtipo. Todas las relaciones comunes entre entidades, incluyendo "muchos a muchos", "muchos a uno", y "uno a uno" son facilmente modeladas utilizando este paso. CREANDOUNESQUEMACONCEPTUAL Un esquema conceptual puede ser construido en uno de tres caminos. El primero es usando una herramienta CASE que se soportada por UNIFACE, el IDF CASE puede transferir la información del modelo entidad relación en el esquema conceptual. El CASE realiza una carga usando una formato de interface (.CIF) archivo producido por un puente UNIFACE CASE, el cual procesa datos desde la herramienta CASE produciendo un archivo .CIF (UNIFACE también proporciona una CASE para bajar un archivo .CIF transfiriendo de regreso el modelo entidad relación hacia la herramienta CASE). El segundo, si existe una estructura de base de datos, el IDF carga definiciones poniendolas en el esquema conceptual con nombres de entidades, nombres de campos, longitudes, tipos de datos e información indice. El tercero, el esquema conceptual puede ser creado manualmente. UNIFACE 58 ESQUEMA EXTERNO PAOUETES DENTRO DE PAOUETES Los esquemas externos contienen varios tipos de paquetes. Paquetes de entidades y campos presentan datos al usuario. Otros tipos de paquetes son agregados en los encabezados y pies de pagina de los reportes. Un esquema externo generalmente contiene uno o mas paquetes de entidades. Estos paquetes de entidades corresponden a tablas o archivos en la fuente de datos. Los paquetes de entidades pueden desplegar multiples ocurrencias (lineas o registros) y pueden ser escroleados para mostrar mas ocurrencias que las visibles en una pantalla. Los paquetes de entidades contienen campos para presentar datos al usuario. Un paquete de campos es una ventana sobre los datos, y como solo una porción de los datos puede ser visible, para introducir los datos escrolear los datos o por "zoom" para desplegar los datos en una ventana parcial o completa. Los esquemas externos por si mismos no limitan el tamaño de la pantalla de despliegue y puede ser escroleado horizontal y verticalmente para representar figuras mas grandes que la que se muestra en una pantalla. UNIFACE 59 ESQUEMA INTERNO El esquema conceptual, que es transparente durante el desarrollo de aplicaciones UNIFACE, juega un papel crucial en la operaci- n de las aplicaciones UNIFACE. El esquema interno es el responsable de interfazar UNIFACE con los datos de la base fuente. Esto se logra con el uso de manejadores de bases de datos los cuales aprovechan las ventajas de cada fuente de datos. Los manejadores han desarrollado una interface de UNIFACE con bases de datos relacionales y j erarquicas, sistemas con metodos de acceso secuencia1 indexado (ISAM), sistemas con archivos secuenciales, manejadores orientados a texto y otras fuentes de datos. MANEJADORES DBMS Un manejador DBMS software que actua como traductor entre el UNIFACE al tiempo de ejecución y un DBMS especifico. El IDF genera aplicaciones basadas en definiciones dadas por los desarrolladores, y el manejador DBMS es una parte integral para el resultado de un programa ejecutable. Pueden ser ligados nuevos manejadores DBMS sin modificar la aplicación. Uniface pone información disponible al manejador DMBS por medio de un conjunto de estructuras de datos estandar. El manejador usa la información en esas estructuras para construir las instrucciones de entraddsalida necesarias para la interface con el DBMS. El manejador tambien es responsable de hacer que na información nececitada por UNIFACE este disponible en esas estructuras. EDICION, CONSULTA Y ALMACENAMIENTO DE DATOS. Para consultar datos, los usuarios ejecutan la funcion RETRIEVE (normalmente presionando una tecla de función). UNIFACE automaticamente soporta una consulta por función. Por ejemplo, el usuario puede teclear "J*" para consultar todas las ocurrencias cuyo nombre comience con la letra "J".Las ocurrencias consultadas residen en el area de trabajo durante la edición. Cuando un esquema externo accesa multiples fuentes de datos, UNIFACE automaticamente genera los requerimientos aporpiados de entraddsalida para generar DML y obtener los datos y regresarlos a UNIFACE. En una transacción tipica, el usuario consulta registros, actualiza y elimina registros y agrega nuevos registros. El usuario ejecuta la función STORE para hacer cambios en la base de datos. El usuario puede utilizar la función QUIT para abandonar todos los cambios realizados. UNIFACE 60 CONCLUSIONES Después de esta revisión de algunos de los elementos con los que se cuenta con UNIFACE se pueden mencionar los siguientes beneficios que se obtienen con su uso: -Alto desarrollo y productividad de mantenimiento -Desarrollos rapidos -Independencia de tecnologia, incluyendo las fuentes de datos y la independencia de interfaces de usuario. -Arquitectura extendida ClienteEervidor -Flexibilidad en las aplicaciones UNIFACE permite que la construcción de aplicaciones sean independientes de la plataforma del hardware, sistema operativo , redes, interfaz de usuario y herramientas CASE. Pero esto no lo es todo ya que se puede considerar lo siguiente: -Las aplicaciones de UNIFACE toman caracteristicas avanzadas de cada elemento del medio cornputacional. -Una aplicación puede ejecutarse transparentemente para un acceso de entrada y salida, hacia datos heterogeneos de un host basado en la arquitectura cliente/servidor, a travez de multiples redes, sin escribir código. -Una aplicación puede soportar la frase "mira y toca" de multiples interfases graficos y modo caracter, sin cambiar código. UNIFACE permite que nuestras aplicaciones se realicen rapidamente y productivamente, tal vez mas que otra herramienta de desarrollo. Esto es debido a que UNIFACE usa un diccionario de aplicaciones y un desarrollo orientado a objetos, lo cual elimina la necesidad de escribir codigo para: -Acceso a base de datos y manejos de transacciones -Manejo de interfaz de usuario UNIFACE 61 -Redes y comunicaciones -Procesamiento de formas y reportes -Coordinación de tablas e integridad referencial. El codigo escrito es reutilizable por todas las partes de la aplicación, es rapido y productivo. También aunque no se escriba mucho código, se puede tener el control del proceso de cada aplicación. BIBLlOGRAFlA BIBLIOGRAFIA -GOVERAN, M. and DATE, C. J.; "SYBASE AND SQL SERVER". Addison Wesley U.S.A. 1992. -GROFF, JAMES R. and WEINBERG PAUL N.; "APLIQUE SQL". Mc Graw Hill. México. 1992. -KORTH, HENRY F. and SILBERSCHATZ, ABRAHAM; "FUNDAMENTOS DE BASES DE DATOS". Mc Graw Hill. México. 1988. -ROSEN, KENNETH H. and ROSINSKY, RICHARD R.; "UNIX SISTEMA V VERSION 4". Mc Graw Hill. México. 1990. -VALLEY, JONH J.; "UNIX PROGRAMMERS REFERENCE" Programming Series. MANUALES -"SYBASE", Quick start to Sybase. Student Guide. -"SEMINARIO SOBRE INGENIERIA DE SOFTWARE", Software A. G. de México. -"AN INTRODUCTION TO UNIFACE" Advanced Software Technology -"SYBASE SQL Server for the On-Line Enterprise" 63