|
Categorias
|
Manejadores de Bases de Datos - SQL, ORACLE, INFORMIX
En vista del auge que toma cada vez la tecnología, espreciso saber hacer de todo lo relacionado son software, pero no podemos olvidarque también existe la parte de cómo manejar datos e información. Para ello existe afortunadamente formas o maneras de comopoder guarda información necesaria y de vital importancia para nuestrasempresas o compañías. Es por tal motivo, es preciso conocer hacer muy de fondo lasdiferentes plataformas o manejadores de bases de datos para poder optar por la másadecuada para ser implanta, si es necesario, en nuestras compañías o empresas,como lo son SQL, ORACLE y INFORMIX. Informix es uno de los cuatro grandes de las bases de datos junto DB2 de IBM,SQL Server de Microsoft y Oracle. Aunque en muchos aspectos es mejor que Oracle, no se ha sabido mover en elterreno del marketing. Oracle capturó la mayor parte del mercado y Informix nose recuperó de las perdidas económicas. DB2 y SQL Server tenían grandes compañíasdetrás con otros negocios que les permitió aguantar la política agresiva deOracle. Recientemente IBM adquirió Informix con lo que el mercado de las basesde datos comerciales en UNIX (Linux) quedó entre IBM y Oracle. Puedes encontrar una infinidad de información sobre Oracle sobre Linux enInternet, pero muy poca sobre Informix. La poca información es debido a la pocacomunidad Internet que tiene Informix, al menos comparada con la de Oracle. Y esque, hoy en día, las documentaciones oficiales, de tan sencillas que quierenser, cada vez son más confusas e incompletas. Sin duda, el mejor soporte técnicoque hay para un producto es su comunidad de usuarios en Internet. Informix pordesgracia no ha sabido crearla. Una búsqueda de "oracle linux" enGoogle devuelve unas 972.000 páginas, mientras que "informix linux"143.000. SQL (Standar Query Lenguaje) es un lenguaje estandarizadode base de datos, el cual nos permite realizar tablas y obtener datos de ella demanera muy sencilla. Para exponer mas claramente los conceptos se realizaranejemplo sobre relaciones que se crearan aquí para entender mejor como funcionaSQL. También se puede decir, SQL es un lenguaje bastantesencillo, principalmente orientado a bases de datos y, sobre todo, al manejo deconsultas. Visual Basic incorpora esta extensión junto a nuestras bases dedatos, obteniendo potentes resultados. De hecho, las consultas que se realizanen Access, están desarrolladas o basadas en este lenguaje, por lo que suimplementación en Visual Basic no es complicada. El objetivo principal de SQL es la realización deconsultas y cálculos con los datos de una o varias tablas. He aquí una serie de consejos (a veces normas), que hay quetener en cuenta a la hora de escribir mandatos SQL en nuestras aplicaciones enVisual Basic: 1. Un mandato en SQL se expresa en una cadena de caracteres oString. 2. Dicho mandato se puede escribir en la propiedadRecordSource de un control Data (más adelante, podremos prescindir del controlData para realizar nuestras consultas), con el fin de crear una consulta en lainterfaz. 3. Los nombres de los campos especificados (y de las tablas),que contengan más de una palabra, han de encerrarse entre corchetes ([nombre]).Como norma general, se suelen escribir siempre entre corchetes. 4. Para especificar un determinado campo de una determinada tabla, se ha
deescribir primero el nombre de la tabla, un punto y, a continuación, el
nombredel campo 5. Al especificar una expresión de búsqueda, si ésta se refiere a unaexpresión de caracteres, éstos han de encerrarse entre comillas simples('expresión_a_buscar'). 6. Para especificar una fecha en una búsqueda, ésta debe encerrarse
entresignos numeral 7. Si se utiliza la propiedad RecordSource del control Data, para crearnuestras consultas en SQL, tras introducir el mandato SQL (siempre como unaexpresión de cadena) es necesario refrescar el control Data(control_data.Refresh). El lenguaje SQL está compuesto por una serie de sentencias y de cláusulasmuy
reducidas en número, pero muy potentes en efectividad. De entre todas
laspalabras, existen cuatro que son las más utilizadas, estando compuestas por
unasentencia y por tres cláusulas: La historia de SQL (que se pronuncia deletreando en ingléslas letras que lo componen, es decir "ese-cu-ele" y no"siquel" como se oye a menudo) empieza en 1974 con la definición, porparte de Donald Chamberlin y de otras personas que trabajaban en loslaboratorios de investigación de IBM, de un lenguaje para la especificación delas características de las bases de datos que adoptaban el modelo relacional.Este lenguaje se llamaba SEQUEL (Structured English Query Language) y seimplementó en un prototipo llamado SEQUEL-XRM entre 1974 y 1975. Lasexperimentaciones con ese prototipo condujeron, entre 1976 y 1977, a una revisióndel lenguaje (SEQUEL/2), que a partir de ese momento cambió de nombre pormotivos legales, convirtiéndose en SQL. El prototipo (System R), basado en estelenguaje, se adoptó y utilizó internamente en IBM y lo adoptaron algunos desus clientes elegidos. Gracias al éxito de este sistema, que no estaba todavíacomercializado, también otras compañías empezaron a desarrollar sus productosrelacionales basados en SQL. A partir de 1981, IBM comenzó a entregar susproductos relacionales y en 1983 empezó a vender DB2. En el curso de los añosochenta, numerosas compañías (por ejemplo Oracle y Sybase, sólo por citaralgunos) comercializaron productos basados en SQL, que se convierte en el estándarindustrial de hecho por lo que respecta a las bases de datos relacionales. En 1986, el ANSI adoptó SQL (sustancialmente adoptó el dialecto SQL de
IBM)como estándar para los lenguajes relacionales y en 1987 se transfomó en
estándarISO. Esta versión del estándar va con el nombre de SQL/86. En los
añossiguientes, éste ha sufrido diversas revisiones que han conducido primero a
laversión SQL/89 y, posteriormente, a la actual SQL/92. Presentaremos ahora la estructura de la base de datos que seutilizará para los ejemplos de las siguientes lecciones. No se describirán lasfases de análisis ni los modelos conceptuales y lógicoa que han sidonecesarios para alcanzar tal estructura, desde el momento en que esto se apartaríade los objetivos de este curso. La estructura de la base de datos estárepresentada en el diagrama relacional de la Figura 3. Cada rectángulorepresenta una relación. El nombre de la relación está en la sección másoscura de la parte alta del rectángulo. El resto del rectángulo estásubdividido en tres columnas, en las cuales están definidas las característicasde los atributos que componen la relación. La columna central contiene losnombres de los atributos; la de la derecha, su tipo (han sido utilizados lostipos del SQL/92), y la de la izquierda sus propiedades, Las propiedades de losatributos se indican con las siglas "PK" y "FK", quesignifican respectivamente que los correspondientes atributos forman parte de lallave primaria de la relación (Primary Key) o de una llave externa (ForeignKey). Las flechas hacen converger las llaves externas con las primarias a lasque se refieren. Los nombres de los atributos en negrita indican que éstos nopueden tomar el valor NULL, o sea que no pueden ser indeterminados. Figura 1. Ver en anexos cuadro de ejemplo de la base de dato. La finalidad de la base de datos consiste en contener lasinformaciones bibliográficas de un conjunto de publicaciones, a fin de poderlasconsultar fácilmente y utilizarlas para la construcción de otras bibliografías.Ésta se ha modelado en la falsa línea del sistema bibliográfico del sistemaLaTeX, para contar con un ambiente consolidado al que referirse y facilitar larealización de programas de conversión entre un sistema y otro. El significadode las relaciones que componen la base de datos es el siguiente: Publication: Una publicación genérica. Normalmente,esta relación se usa sólo para asignarles un identificativo unívoco a todaslas publicaciones presentes en la base de datos, dejando la especificación delas demás características en relaciones específicas para cada tipo depublicación. Además, se usa para implementar uniones complejas entre laspublicaciones y otras relaciones. Por ejemplo, la que existe entre una publicacióny su autor. Gracias a la estructura adoptada, se puede contar con publicacionesescritas de muchos autores y con autores que escriben diferentes tipos depublicaciones. Author: Representa al autor de una publicación. La llaveprimaria está compuesta por el identificativo de la publicación y por el de lapersona, lo que grantiza la unidad de la asociación entre las dos entidades. Editor: Representa al coordinador de una publicación. La estructura
esidéntica a la de la tabla Author. Publisher: La casa editorial de una publicación. Institution: La institución (por ejemplo una universidado una software house) responsable de una publicación. Book: Un libro con una casa editorial precisa. InBook: Una parte de un libro. La parte puedecaracterizarse por un título, por el número del capítulo o por el de la página.Las informaciones a propósito del libro y, por tanto, comunes a sus diferentespartes, se memorizan en la relación Book. Proceedings: Las actas de un congreso o de unaconferencia. InProceedings: Una parte de las actas de un congreso. Lasinformaciones referidas a la publicación que contiene esa parte están en larelación Proceedings. Article: Un artículo publicado en un periódico o en unarevista. Manual: Una publicación de documentación técnica. Techreport: Un informe técnico publicado por una escuelau otra institución. Thesis: Una tesina o una tesis. Misc: Una publicación que no puede englobarse en ninguna de las
categoríasanteriores. Los lazos entre las relaciones deberían ser bastante fácilesde entender. Como ejemplo para todos, usaremos el que conecta la relación Bookcon la relación Publisher. Este lazo sirve para describir la la editorial de unlibro. En la relación Book no están presentes todos los datos de la editorial,sino sólo un identificativo numérico para ella. El número será la llaveprimaria de la relación Publisher y como tal permitirá identificar unaeditorial precisa. En la relación Book el atributo publisher es una llaveexterna hacia la relación Publisher. Una situación más compleja es la que afecta a lasrelaciones Publication, Author y Person; efectivamente, en Author estánpresentes dos llaves externas: una que identifica la publicación a la que lainstancia de relación se refiere, y otra que permite remontarse a los datos dela persona que desempeña el papel de autor. Se podría preguntar cuál es lautilidad de la relación Publication y por qué no se ha establecidodirectamente un nexo entre la relación Author y las relaciones que representanlos tipos de publicación concretos. La respuesta es que el modelo relacional nopermite hacerlo. En efecto, desde el momento en que un autor puede escribirdiferentes tipos de publicación, el atributo pubblicationID debería ser unallave externa hacia todas las relaciones de las publicaciones, pero esto no estápermitido desde el momento en que contradice la definición misma de llaveexterna. En las siguientes lecciones se implementará la base de datosde ejemplo usando el lenguaje SQL estándar. El DBMS específico usado seráPostgresSQL, pero se podrá sustituir con cualquier DBMS que soporte l'Entrylevel del SQL/92. Microsoft SQL Server 7.0 constituye un lanzamientodeterminante para los productos de bases de datos de Microsoft, continuando conla base sólida establecida por SQL Server 6.5. Como la mejor base de datos paraWindows NT, SQL Server es el RDBMS de elección para una amplia gama de clientescorporativos y Proveedores Independientes de Software (ISVs) que construyenaplicaciones de negocios. Las necesidades y requerimientos de los clientes hanllevado a la creación de innovaciones de producto significativas para facilitarla utilización, escalabilidad, confiabilidad y almacenamiento de datos. .Objetivos del Diseño de SQLServer Los clientes están buscando soluciones para sus problemas denegocios. La mayoría de las "soluciones" de bases de datos solamentetraen múltiples niveles de costos y complejidad. La estrategia de Microsoft esla de hacer que SQL Server sea la base de datos más fácil de utilizar paraconstruir, administrar e implementar aplicaciones de negocios. Esto significatener que poner a disposición un modelo de programación rápido y sencillopara desarrolladores, eliminando la administración de base de datos paraoperaciones estándar, y suministrando herramientas sofisticadas paraoperaciones más complejas. SQL Server 7.0 disminuye el costo total de propiedad a travésde características como administración multi-servidor y con una sola consola;ejecución y alerta de trabajos basadas en eventos; seguridad integrada; yscripting administrativo. Esta versión también libera al administrador de basede datos para aspectos más sofisticados del trabajo al automatizar las tareasde rutina. Al combinar estos poderosos servicios de administración con lasnuevas características de configuración automática, Microsoft SQL Server 7.0es la elección ideal de automatización de sucursales y aplicaciones de base dedatos insertadas. Los clientes invierten en sistemas de administración debases de datos, en forma de aplicaciones escritas para esa base de datos y laeducación que implica para la implementación y administración. Esa inversióndebe protegerse: a medida que el negocio crece, la base de datos deberá crecery manejar más datos, transacciones y usuarios. Los clientes también deseanproteger las inversiones a medida que escalan aplicaciones de base de datoshacia equipos portátiles y sucursales. Para cumplir con estas necesidades, Microsoft ofrece un motorde base datos único que escala desde una computadora portátil que ejecutaWindows® 95 o Windows 98, hasta clusters de procesadores múltiples simétricosde terabyte que ejecutan Windows NT Server Enterprise Edition. Todos estossistemas mantienen la seguridad y confiabilidad que exigen los sistemas denegocios de misión crítica. Nueva para el lanzamiento de 7.0 es una versión de rastro debaja memoria con capacidades de replicación de multi-sitio. Se ajusta muy biena las necesidades cada vez mayores del mercado de la computación móvil. Lasotras características tales como bloqueo a nivel de línea dinámico, elparalelismo intra-query, query distribuido, y mejoras para las bases de datosmuy grandes (VLDB) hacen que el SQL Server 7.0 sea la elección ideal parasistemas OLTP de alta tecnología y sistemas de data warehousing. Mientras los sistemas de procesamiento siguen siendo uncomponente clave para las infraestructuras de bases de datos corporativas, lascompañías también están invirtiendo bastante en mejorar la comprensión quetienen de sus datos. La estrategia de Microsoft consiste en reducir el costo yla complejidad del data warehousing mientras hace que la tecnología sea másaccesible a una mayor cantidad de público. Microsoft ha establecido un enfoque total a todo el procesode data warehousing (almacenamiento de datos) . El objetivo es facilitar laconstrucción y diseño de soluciones de data warehousing costo efectivas a travésde una combinación de tecnologías, servicios y alianzas con los proveedores. La Microsoft Alliance for Data Warehousing es una coaliciónque une a los líderes en la industria de almacenamiento de datos yaplicaciones. El Microsoft Data Warehousing Framework constituye un conjunto deinterfaces de programación diseñadas para simplificar la integración yadministración de soluciones de data warehousing. Las innovaciones del productoen SQL Server 7.0 mejoran el proceso de data warehousing: Servicios deTransformación de Datos; manejo mejorado de las consultas complejas y bases dedatos muy grandes; procesamiento analítico en línea e integrado; y elMicrosoft Repository. Otro componente esencial es el soporte extenso paraintegración de terceros. Las innovaciones permiten que SQL Server 7.0 sea el líder envarias de las categorías de aplicación de rápido crecimiento en la industriade base de datos. Estas incluyen comercio electrónico, computación móvil,automatización de sucursales, aplicaciones de línea de negocios insertadas ymercados de datos. Las áreas de liderazgo e innovación en el Microsoft SQLServer 7.0 incluyen:
Esta sección provee una historia concisa de los lanzamientosSQL Server recientes. Una historia completa del desarrollo de SQL Server, desdesus comienzos hasta el lanzamiento del 6.5 se encuentra disponible en Dentro delMicrosoft SQL Server 6.5, de Ron Soukup, publicado por Microsoft Press, ISBN1-57231-331-5.
Microsoft SQL Server revoluciona el concepto de Base de Datospara la Empresa. Reúne en un sólo producto la potencia necesaria paracualquier aplicación empresarial crítica junto con unas herramientas de gestiónque reducen al mínimo el coste de propiedad. Con Microdoft SQL Server, laempresa tiene todo de serie. Miles de Soluciones Disponibles: Tendrá libertad de elección,ya que todas las aplicaciones de gestión del mercado corren sobre Microsoft SQLServer
Diseñada desde su inicio para trabajar en entornos Internete Intranet, Microsoft SQL Server es capaz de integrar los nuevos desarrollospara estos entornos específicos con los desarrollos heredados de aplicaciones"tradicionales". Es más, cada aplicación que desarrollemos para serempleada en entornos de red local puede ser utilizada de forma transparente -enparte o en su totalidad- desde entornos Internet, Intranet o Extranet.
Mejoras en programabilidad y lenguaje
Es manejador de base de datos relacional que hace uso de losrecursos del sistema informático en todas las arquitecturas de hardware, paragarantizar su aprovechamiento al máximo en ambientes cargados de información.Es el conjunto de datos que proporciona la capacidad de almacenar y acude aestos de forma consecuente con un modelo definido como relacional. Además esuna suite de productos que ofrece una gran variedad de herramientas. Es el mayor y mas usado Sistema Manejador de Base de DatoRelacional (RDBMS) en el mundo. La Corporación Oracle ofrece este RDBMS como unproducto incorporado a la línea de producción. Además incluye cuatrogeneraciones de desarrollo de aplicación, herramientas de reportes yutilitarios. Oracle corre en computadoras personasles (PC), microcomputadoras,mainframes y computadoras con procesamiento paralelo masivo. Soporta unos 17idiomas, corre automáticamente en más de 80 arquitectura de hardware ysoftware distinto sin tener la necesidad de cambiar una sola línea de código.Esto es porque más el 80% de los códigos internos de Oracle son iguales a losestablecidos en todas las plataformas de sistemas operativos. El manejador de Base de datos ORACLE, surgió a final de losaños 70 y principio de los años 80. George Koch y su equipo de tropas deasalto de técnicos fue el primero en desembarcar en el terreno de Oracle en1982, durante un proceso de evaluación de sistema de gestión de base de datospara una importante aplicación comercial que George estaba diseñando yconstruyendo. Cuando termino, la evaluación fue descrita en Computer World comoel estudio más severo de SGBD que se había hecho nunca. El estudio fue tanriguroso con los vendedores cuyos productos había estudiado George, que laprensa hizo eco de sus palabras en lugares tan distantes como Nueva Zelandia yen publicaciones muy alejadas del campo como el Christian Sciencia Monitor. Oracle conocida entonces como Relational Software, teníapoco más de 25 empleados en aquel tiempo y solo unos pocos clientesimportantes. Sin embargo, cuando se completo el estudio, Oracle fue declaradavencedora. George afirmo que el SGBD Oracle era técnicamente el mejor productodel mercado. Estas declaraciones fueron hecha en una época en la que muy pocagente conocía el significado del término "Relacional", y los que loconocían (o creían conocerlo) no tenían muchas cosas favorables que decir deél. La compañía de Oracle Corporation estaba trabajandoentonces para perfeccionar su joven producto, para comprender los tipos decaracterísticas y funcionalidad que podría hacerlo útil y productivo en elmundo de los negocios. El esfuerzo contribuyo a su refinamiento. Algunas de lascaracterísticas de Oracle, tales como las salidas de SQL*FORMS fueron elresultado de dicho esfuerzo. El poderoso modelo relacional ha evolucionado desdeherramientas y los modelos de datos de redes. La mayor manera aceptada y usadade un modelo de datos es el modelo relacional. El relacional conocido en 1969con la revisión hecha por IBM, Dr. E. F. Codd. Un modelo relacional posee tres grandes aspectos:
Una base de datos relacional simplifica y definida como unmodelo de información es estrictamente visualizable por los usuarios mediantetablas. Una tabla esta compuesta por una matriz bidimencional de filas ycolumnas. En cualquier ocasión la información es cambiada en una base de datosrelacional, cualquier información es el resultado de una consulta presentad porel usuario en el formato filas/columnas. Oracle ha presentado cuatro generaciones para desarrollo deaplicación: Oracle 5 y Oracle 6: fueron las dos primeras versiones deOracle, quedando aun rezagadas por las versiones sucesoras. Oracle 7: La base de datos relacional componentes deOracle Universal Server. Posee además las versiones 7.1, 7.1.2, y 7.1.3. Oracle 7 Parallel: Ofrece a los usuarios un métodoseguro y administrable para incrementar la performance de sus bases de datosexistentes introduciendo operaciones en paralelo y sincrónicas dentro de susambientes informáticos. Oracle 8: Incluye mejoras de rendimiento y de utilizaciónde recursos. Independiente de que se necesite dar soporte a decenas de miles deusuarios y cientos de terabytes de datos, o se disponga de un sistema mucho máspequeño, pero igualmente critico, todos se benefician del rendimiento deOracle8. Este soporta aplicaciones de procesamiento de transacciones on line(OLTP) y de data warehousing mayores y más exigentes. Oracle Fail Safe: Protege al sistema de caída deentornos Cluster Windows NT. Este producto es para que el sistema operativoWindows NT disponga de una mayor oferta de solucciones en entornos cluster. Server: Con soporte completo de Web, mensajería ydatos multimedia, Oracle Universal Server es el eslabón fundamental en elcamino de transición de la industria de la tecnología a la informática dered, donde la complejidad de software es transferida desde la PC de escritorio apoderosos servidores y redes. Proceso de Pre-Instalación Planificación de Pre-Instalación: 1er. Paso es determinar el tamaño de los softwares deinstalación. Esto no incluye el espacio requerido para la producción delsistema o el espacio para el desarrollo de aplicaciones del o los sistemasOracle. PRODUCTOS TAMAÑO Oracle RDBMS 11.6 MB SQL*PLUS 1.6 MB SQL*FORMS 2.4 MB SQL*MENU 1.8 MB SQL*REPOT WRITER 2.1 MB Pro*C, Pro*Fortran, Pro*Cobol 1.3 MB NLS 2.1 MB Archivos de Oracle RDBMS 2.8 MB SQL*Net 2.8 MB Oracle Demo Database 5.9 MB 39.4 MB Una vez el tamaño determinado, el próximo paso esdeterminar la localización del producto y las aplicaciones que soportan elnuevo RDBMS Oracle, así como el espacio a ser reservado para los propiosobjetos de la base de datos. Oracle soporta dos tipos de almacemiento, por caracter (RAW)o por bloques (Files System), generalmente es recomendable que los seancolocados en Raw Divice. Raw Divice: es un dispositivo de caracteresdisponibles en algunos sistemas operativos el cual es asignado directamente aOracle. Oracle corre más rápidamente con Raw Divice que con FilesSystem, por varias razones:
Con la intención de evitar la contención de los discos, sedebe considerar la instalación de Oracle en dispositivos separados,especialmente si se tienen varios discos, y más esencialmente, si se poseen másde una controladora de disco. La planeación debe realizarse teniendo en cuentalos sigueintes criterios:
Las estructura física tales como los archivos del sistemaoperativo, son almacenados tangibles como son cintas magnéticas, discos yotros. A cada archivo le corresponde un espacio en el sistema operativo. Oraclerequiere de varios archivos para su funcionamiento, los cuales conforman suestructura física. A la estructura lógica le corresponde un espacio porunidad, pero sus limitaciones son independiente de las localizaciones de espaciofísico. El uso de memoria en el RDBMS Oracle tiene coo propósito losiguente:
Un RDBMS Oracle esta compuesto por tres partes principales,que son:
EL KERNEL DE ORACLE El Kernel es el corazón del RDBMS Oracle, el cual maneja lassiguientes tareas:
Así como el Kernel es un sistema operativo, el Kernel Oraclees cargado a la memoria al inicio de las operaciones y es usado por cada base dedatos existente en el equipo. EL PGA (Program Global Area): Es también llamadoProcess Global ¨Área, consta de datos e información de control de losprocesos, asegurando el uso correcto de estos. El PGA contiene informaciónacerca de las conexiones y los procesos que se realizan en Oracle, su tamaño esvariable en longitud, pero no es dinámico. El PGA se activa al conectarse unusuario. EL SGA (System Global Area): Se puede llamar Sharedglobal área, se podría definir como una seria de buffers en memoria residente,a través de la cual todas las transacciones y el almacenamiento de dato fluyen.El SGA es localizado en memoria al iniciarse una instancia y desaparece albajarla. Su tamaño no puede ser cambiado, pero si puede ser visto con elcomando "SHOW SGA" en el SQL*DBA. Su longitud esta definida por loparametros del archivo de iniciación INIT.ORA. Esta Compuesto por:
Es un conjunto de tablas que son usadas para proveer información asociada con la base de datos, donde se definen los nombres de usuarios, privilegios, objetos, retenciones y espacios que conforman un RDBMS Oracle.
Es un espacio reservado en memoria que contiene los cambios realizados a los bloques de datos, permitiendo la reconstrucción de la base de datos en caso de ocurrir un accidente.
Es un espacio reservado en memoria para las operaciones normales de la base de datos, el cual depende del tamaño especificado en el archivo de inicialización (INIT.ORA). SQLForms: es la herramienta de Oracle que permite, de un modo sencillo y eficiente, diseñar pantallas para el ingreso, modificaciones, bajas y consultas de registros. El usuario podrá, una vez definida la forma, trabajar con ella sin necesidad de generar códigos, dado que Oracle trae incorporado un conjunto de procedimientos y funciones asociados a las teclas de funciones, como por ejemplo la tecla [F7], que se usa para iniciar una consulta. La herramienta fundamental de SQL es la sentencia SELECT, quepermite seleccionar registros desde las tablas de la Base de Datos, devolviendoaquellos que cumplan las condiciones establecidas y pudiendo presentar elresultado en el orden deseado. SQL (Structured Query Languague = Lenguaje de Consultaestructurado). La orden FROM identifica la lista de tablas a consultar. Sialguna de las tablas a consultar no es propiedad del usuario, debe especificarseel nombre del propietario antes que el nombre de la tabla en la formanombre_propietario.nombre_tabla. La orden WHERE decide los registros a seleccionar según lascondiciones establecidas, limitando el número de registros que se muestran. La orden ORDER BY indica el orden en que aparece el resultadode la consulta. Patrón de consulta: Una de las herramientas lógicas máspoderosas de SQL es el reconocimiento de un patrón de consulta, instrumento ésteque permite la búsqueda por nombre, dirección u otro dato parcialmenterecordado. Los patrones de consulta juegan un papel importante en el momento derealizar consultas, ya que es común que necesitemos encontrar un texto y norecordemos exactamente cómo fue ingresado. Con el uso del operador LIKE podemoscomparar patrones y ubicar un texto, independientemente de la posición en quese encuentre. Para la definición del patrón de consulta existen dos tiposde caracteres especiales: % (signo de porcentaje) llamado comodín, representacualquier cantidad de espacios o caracteres en esa posición. Significa que seadmite cualquier cosa en su lugar: un caracter, cien caracteres o ningúncaracter. _ (signo de subrayado) llamado marcador de posición,representa exactamente una posición e indica que puede existir cualquiercaracter en esa posición. Agrupamiento de datos SQL proporciona una forma eficiente para manejar la informacióncon el agrupamiento de datos a través de la formación de grupos y lasfunciones correspondientes, dando la posibilidad de procesar no solo registrosindividuales como hemos hecho hasta ahora. También podemos agrupar registrospor un criterio determinado, como por ejemplo, agrupar por clientes las ventasrealizadas. Cada grupo tendrá como resultado de la consulta una fila resumenque contiene la información del grupo. Para la formación de grupos adicionamos, a la forma básicade la sentencia SELECT, la orden GROUP BY ubicada antes de ORDER BY. Las funciones para el procesamiento de grupos son: COUNT(columna) Cantidad de registros en que la columna tiene valores no nulos. COUNT(*) Cantidad de registros que hay en la tabla, incluyendo los valores nulos. MIN(columna) Valor mínimo del grupo. MAX(columna) Valor máximo del grupo. SUM(columna) Suma los valores del grupo. AVG(columna) Calcula valor medio del grupo, sin considerar los valores nulos. La lista de columnas a mostrar en la consulta puede contenerlas funciones de grupo, así como la columna o expresión usada para formar losgrupos en la orden GROUP BY. En una misma consulta no se pueden mezclarfunciones de grupo con columnas o funciones que trabajan con registrosindividuales. Las ventas por cliente es un buen ejemplo para mostrar el uso delos grupos. En el siguiente caso se hace un resumen de ventas por cliente, conla cantidad de ventas, valor mínimo, medio y máximo, así como la suma totalde ventas. La formación del grupo será por el nombre del cliente y la columnaa cuantificar para cada grupo será el valor de las ventas. El orden en las consultas por grupos, cuando no esta presentela orden ORDER BY, está dado por la columna que forma los grupos. Si deseamoscambiar ese orden, como es el caso de ordenar por el valor total de ventas, sedebe adicionar al final la orden ORDER BY SUM(VALOR). Subconsultas Otro aspecto de fácil diseño y uso que muestra una vez máslas posibilidades de SQL son las subconsultas. Subconsulta es aquella consultade cuyo resultado depende otra consulta, llamada principal, y se define como unasentencia SELECT que esta incluida en la orden WHERE de la consulta principal.Una subconsulta, a su vez, puede contener otra subconsulta y así hasta un máximode 16 niveles. Las particularidades de las subconsultas son: 1. Su resultado no se visualiza, sino que se pasa a laconsulta principal para su comprobación. 2. Puede devolver un valor único o una lista de valores y endependencia de esto se debe usar el operador del tipo correspondiente. 3. No puede usar el operador BETWEEN, ni contener la ordenORDER BY. 4. Puede contener una sola columna, que es lo más común, ovarias columnas. Este último caso se llama subconsulta con columnas múltiples.Cuando dos o más columnas serán comprobadas al mismo tiempo, deben encerrarseentre paréntesis. Grupos con subconsulta Para combinar grupos con subconsulta debemos incluir en lasentencia SELECT la orden HAVING, que tiene las siguientes características: 1. Funciona como la orden WHERE, pero sobre los resultados de las funciones de grupo, en oposición a las columnas o funciones para registros individuales que se seleccionan mediante la orden WHERE. O sea, trabaja como si fuera una orden WHERE, pero sobre grupos de registros. 2. Se ubica después de la orden GROUP BY. 3. Puede usar una función de grupo diferente a la de la orden SELECT. Indices El índice es un instrumento que aumenta la velocidad derespuesta de la consulta, mejorando su rendimiento y optimizando su resultado.El manejo de los índices en ORACLE se realiza de forma inteligente, donde elprogramador sólo crea los índices sin tener que especificar, explícitamente,cuál es el índice que va a usar. Es el propio sistema, al analizar la condiciónde la consulta, quien decide qué índice se necesita. Por ejemplo cuando en unaconsulta se relacionan dos tablas por una columna, si ésta tiene definido un índicese activa, como en el caso cuando relacionamos la tabla de clientes y ventas porla columna código para identificar al cliente (WHEREclientes.codigo=ventas.codigo). La identificación del índice a usar está relacionada conlas columnas que participan en las condiciones de la orden WHERE. Si la columnaque forma el índice está presente en alguna de las condiciones éste seactiva. PL/SQL: es un lenguaje portable, procedural y detransacción muy potente y de fácil manejo, con las siguientes característicasfundamentales:
2. Es una extensión de SQL, ya que este es un lenguaje no completo dado que no incluye las herramientas clásicas de programación. Por eso, PL/SQL amplia sus posibilidades al incorporar las siguientes sentencias: - Control condicional - Ciclos 3. Incorpora opciones avanzadas en: - Control y tratamiento de errores llamado excepciones. - Manejo de cursores. Estructura del bloque de código: La organización delbloque de código de PL/SQL, compuesto por cuatro secciones DECLARE, BEGIN,EXCEPTION y END. Asignación de valores: Las dos formas que existen paraasignar valores a variables de memoria, vistas en el ejemplo anterior, son:
Manejo de cursores El conjunto de filas resultantes de una consulta con lasentencia SELECT, como vimos anteriormente, puede estar compuesto por ninguna,una o varias filas, dependiendo de la condición que define la consulta. Parapoder procesar individualmente cada fila de la consulta debemos definir uncursor (que es un área de trabajo de memoria) que contiene los datos de lasfilas de la tabla consultada por la sentencia SELECT. Los pasos para el manejo de cursores, tema novedoso en laprogramación de Oracle con PL/SQL, son: - Definir el cursor, especificando la lista de parámetros con sus correspondientes tipos de datos y estableciendo la consulta a realizar con la sentencia SELECT.
- Leer una fila del cursor, pasando sus datos a las variables locales definidas a tal efecto. - Repetir el proceso fila a fila hasta llegar a la última. - Cerrar el cursor una vez que se terminó de procesar su última fila. Disparadores El módulo SQL*Forms tiene incorporado una colección deprocedimientos y funciones llamados "empaquetados" que se puedenincluir en el código de procedimientos o disparadores definidos por el usuario. El disparador es un bloque de código que se activa cuando sepulsa una determinada tecla u ocurre cierto evento, como puede ser: - Mover el cursor hacia o desde un campo, registro, bloque o forma. - Realizar una consulta. - Validar un dato. - Hacer una transacción al insertar, modificar o eliminar registros de la base de datos. Oracle asocia a cada tecla de función un procedimientoempaquetado, pudiendo el usuario redefinir esta asignación o capturar eldisparador para ampliarlo o modificarlo con su propio código. A partir de la versión 7 de Oracle el usuario puedealmacenar, en forma independiente, sus funciones y procedimientos sin tener queescribirlos repetidamente para cada forma, y pudiendo compilarlosindependientemente de las formas que lo usen. Pero, además, las funciones yprocedimientos se pueden agrupar en un paquete para compartir definiciones,variables globales, constantes, cursores y excepciones, así como garantizar yrevocar los permisos a nivel de paquete. En el caso que sea necesario modificar el contenido delpaquete, como el mismo se encuentra almacenado separadamente, no es necesariorecompilar nada que use ese paquete, lo que facilita la gestión y mantenimientode todos los procedimientos almacenados como una sola entidad para unadeterminada aplicación. Además, en la versión 7, existe un nuevo tipo de disparadorllamado de base de datos, que es un procedimiento asociado a una tabla que seactiva cuando se produce un suceso que afecta a esa tabla. Su uso más comúnconsiste en la definición de restricciones complejas de integridad. SQLReport de Oracle realiza de forma flexible, sencilla yeficiente la creación de reportes, informes o listados permitiendo, entre otrasfacilidades, la visualización previa por pantalla con una gran variedad enestilos de presentación. Definiciones básicas: Para adentrarnos en el temaprimero veremos las definiciones básicas, fundamento del diseño del reporte enOracle: Consulta: Define las columnas y filas de una o variastablas que serán emitidas en el reporte, así como su orden de presentación.Una consulta puede estar subordinada a otra consulta principal, relacionadas poruna o varias columnas. Grupo: El grupo es una sección del reporte querepresenta al conjunto de columnas de la consulta, como una unidad, paradeterminar su ubicación en el reporte y su forma de presentación. Para cada grupo se definen los siguientes atributos: - Ubicación. - Forma de presentación. - Texto de cabecera y final. - Título de las columnas. - Ubicación de las columnas dentro del grupo. En el momento de la definición de una consulta se crea, deforma automática, un grupo que contiene todos las columnas presentes en lalista de la sentencia SELECT. El nombre de este grupo se define como el nombrede la consulta, precedido por los caracteres G_. Una consulta puede tener asociado más de un grupo, con elfin de separar las columnas de la consulta, por ejemplo para crear diferentesniveles en el reporte, como el cálculo de subtotales. Campos: Cada columna de la consulta pasa a ser un campodel reporte. Además, podemos incluir como campos del reporte las siguientesvariables: - Del sistema como &DATE y &PAGE - Del usuario, cuyo contenido es un comando SQL para realizar cálculos. Parámetro: Variables definidas por el usuario paratransferir datos a la consulta en el momento de la ejecución del reporte. Sehace referencia al parámetro en la consulta con su nombre precedido por dospuntos como: nombre_parametro. Sumario: Define variables de tipo sumario para larealización de cálculos con el uso de las funciones Sum, Min, Max, Count yAvg. Texto: Define la ubicación y forma de presentación delos campos dentro del grupo, así como los textos de inicio y final para cadagrupo y para el reporte. Para ubicar un campo o un parámetro en la sección de textosse hace referencia con su nombre, precedido con el carácter & de la forma:&nombre. SQLMenu: es el producto de ORACLE destinado a producir árbolesde menús que permiten al usuario desplazarse fácilmente a través de suaplicación, facilitando a su vez, la integración con los diferentes módulosde ORACLE. La integración de módulos, herramienta que permite desde unproducto de Oracle invocar otros, también está presente en SQLForms, desdedonde, como veremos en este artículo, se pueden realizar tareas del sistemaoperativo con llamadas a los módulos SQLReport y SQLPlus. Definiciones: Comenzaremos explicando las diferentespartes que componen el diseño de un menú en SQLMenu. Ellos son: Aplicación Conjunto de uno o más menús interconectados para realizar las tareas necesarias del sistema y para el cual se definen su nombre, nombre del archivo ejecutable, fecha de creación, nombre del usuario, número de la versión, fecha de la última modificación, directorio de ubicación y su identificación. Menú Lista de opciones o items que realizan las tareas específicas del sistema. Cuando se crea la aplicación el primer menú que se debe definir es el principal, cuyo nombre tiene que ser el mismo que el de la aplicación. Este será el menú que se activará en forma automática al cargar la aplicación. Items Define las opciones del menú y su correspondiente acción. Un ítem puede llamar a otro menú, ejecutar un comando o un módulo de Oracle, así como cualquier otro programa. Para cada ítem se define su posición en el menú, tipo de comando, permisos de los usuarios, texto de identificación y la línea del comando a realizar. Parámetros Variable que se carga en el momento de ejecución del menú y para la cual se definen un nombre de dos letras, cantidad máxima de caracteres, texto en pantalla en el momento de su ingreso, si es o no obligatorio, con o sin conversión a mayúsculas y su valor por defecto. Integración desde SQLForms: La integración de módulos,como los casos que acabamos de estudiar, también esta presente en SQLForms,desde donde podemos activar los módulos SQLReport y SQLPlus a través delsistema operativo. En SQLReport: - Parámetros y sus valores por defecto. Esta es la vía que tenemos para pasar los datos necesarios, desde SQLForms, en el momento de la ejecución del reporte. En SQLForms: - Campos de la forma donde se van a ingresar los valores a pasar como parámetros al reporte. Procedimiento que invoca a SQLReport con sus correspondientes parámetros. Para esto se usa la orden HOST, procedimiento del sistema que tiene como función enviar un comando al sistema operativo, en este caso RUNREP, garantizando el paso de variables a través de los parámetros y el retorno automático a SQLForms. MEJORAS DE SQL SERVER EN ORACLE Oracle posee igual interacción en todas la plataformas (Windows, Unix, Macintosh y Mainframes). Estos porque más del 80% de los códigos internos de Oracle son iguales a los establecidos en todas las plataformas de Sistemas Operativos. Oracle soporta bases de datos de todos los tamaños, desde severas cantidades de bytes y gigabytes en tamaño. Oracle provee salvar con seguridad de error lo visto en el monitor y la información de acceso y uso. Oracle soporta un verdadero ambiente cliente servidor. Este establece un proceso entre bases de datos del servidor y el cliente para la aplicación de programas. Lenguajes de cuarta generación 4GL: Estos lenguajes sedistinguen por formar parte de un entorno de desarrollo, que comprende elmanejador de una base de datos, y todo lo que de esto se deriva, como laadministración de un diccionario de datos, el control de accesos, el manejo dela consistencia de la información y otras características enfocadas afacilitar los programas de acceso y explotación de la información. Comoejemplos podemos citar a los 4 grandes: PROGRESS, SYSBASE, INFORMIX, y ORACLE. 2 de junio de 1986 Es mi primer día en Sphinx Ltd y tengo como tarea conocer los nuevos productos Informix, ISQL 2.00 e I4GL 1.00, tan detalladamente que me permita preparar un curso sobre ellos y ministrar la primer clase a consumidores pagadores en el plazo de seis semanas. Experiencia anterior con RDBMS - ninguna. Sphinx es una pequeña compañía con grandes ambiciones; hacemos la distribución de software para productividad en la oficina en sistemas Unix. Somos el distribuidor en Europa de otra pequeña compañía, Relational Database Systems Inc, que produce este excelente banco de datos Informix 3.30 y que está introduciendo ahora las herramientas Informix-SQL e Informix-4GL que utilizan el lenguaje SQL originalmente desarrollado por IBM para el System R. Mi compañero y yo trabajamos con gran dedicación en esto y de repente, la semana de los primeros cursos se presenta; 2 días para ISQL, 3 para I4GL. Con el tema precariamente dominado, me voy a la oficina el Lunes por la mañana temprano para terminar la instalación, en una máquina Zilog Z8000, solo para descubrir que está faltando energía eléctrica, y que va a faltar hasta pasadas las 10 de la mañana. A eso de las 11, hemos determinado que (a) tener el ISQL 1.10 en la máquina y las anotaciones del curso de ISQL 2.00 era una combinación inadecuada ya que los sistemas de menú han sido rediseñados por completo, (b) la máquina Zilog Z8000 no es muy fiable, aún cuando hay electricidad, y (c) aún cuando está 'funcionando', no es suficientemente rápida ni suficientemente grande para atender 8 alumnos. Nos arrastramos a lo largo de la semana. Fue una experiencia dolorosa, tanto para mi como para los alumnos, no solo por haber demasiada cantidad de material en cada curso -- pero porque ellos van a necesitar extenderse cada uno por otros 5 días. Pocos meses después, teníamos todo el contenido del curso cerrado, ya no tenemos el Z8000, y el RDS es cosa del pasado; nuestro proveedor ahora se llama Informix Software. Más tarde, nuestro jefe inició conversaciones con Addison-Wesley sobre la posibilidad de convertir en libro nuestras anotaciones del curso. Así nació, "Usando Informix-SQL", que se hizo una extensión importante del material del curso y vende bien, estando en su segunda edición. Informix abre sus propias oficinas en el Reino Unido y en Europa, y se encarga de su propia distribución. Informix también introduce el nuevo servidor de banco de datos, Informix-Turbo, que se puede adquirir separadamente del ISQL e del I4GL. Con la introducción de la versión 4.00, el banco de datos original se re-identifica como Informix-SE (Standard Engine) y el Turbo recibe el nuevo nombre de Informix-OnLine. ISQL e I4GL ahora se compran en separado de cualquiera de los bancos de datos. La combinación es brillante, y sedimenta el ya amplio y creciente mercado de bancos de datos de Informix . I4GL aún es un lenguaje de gran potencia para las personas que utilizan bancos de datos Informix. IBM Informix® Dynamic Server (IDS) 9.30 proporcionafiabilidad superior, atendiendo las necesidades de las exigentes prácticasactuales del e-business-particularmente para aplicativos que requierantransacciones de alto desempeño. Soporta requisitos de procesamiento detransacción online, complejos y rigurosos. Optimiza capacidades de inteligenciadel negocio competitivas. Maximiza operaciones de datos para el grupo de trabajoy para la empresa en total. Proporciona la firmeza de una administración debase de datos comprobada, mejor de su especie. Informix Dynamic Server con J/Foundation combina las característicasde IDS con un ambiente abierto, flexible, empotrado de Java™ Virtual Machine.IDS con J/Foundation permite que los desarrolladores de base de datos escriban lógicade negocio del lado servidor usando el lenguaje Java™. Java User DefinedRoutines (UDRs) tienen completo acceso a las características de la base dedatos extensible líder mundial, de la base de datos IDS. Haciendo del IDS laplataforma ideal para el desarrollo de base de datos Java. Además de Java UDRs,el IDS está en conformidad con el estándar SQLJ para procedimientosalmacenados en Java, permitiendo el uso de los paquetes Java estándar que seencuentran incluidos en el Java Development Kit (JDK). Escribir UDRs en Javaproporciona aplicativos mucho más flexibles que se pueden desarrollar más rápidamenteque C, y más potentes y administrables que los lenguajes de procedimientosalmacenados. Una extensión adicional de escribir UDRs en Java es escribirmódulos DataBlade® en Java. Los módulos DataBlade son colecciones de nuevasfunciones del lado-servidor y tipos de datos puestos en conjunto para extenderel IBM Informix® Dynamic Server con el servidor de datos J/Foundation. ElDataBlade Developer's Kit (DBDK) ahora soporta Java y permite el desarrollo,diseminación y depuración de UDRs en Java. La tecnología IBM InformixDataBlade es líder en la industria en extender el servidor para permitir tantola administración de contenido rich, cuanto la lógica de negocio. J/Foundationestá provisto con IDS en muchas de las plataformas IDS 9.30 soportadas. Lasplataformas soportadas incluyen Sun Solaris 32 bit, Microsoft Windows NT/2000,Linux, IBM AIX, SGI Irix, y Compaq Tru 64. Oracle siempre ha sido considerada una base de datos para uso más generalque Informix. Informix por su lado, se especializó más en aplicaciones tipoGIS (datos geográficos), Datawarehouse y Datamining. Sin duda a los gurús, lesagrada más Informix que Oracle. En cuanto a precios, Informix tiene tendencia a ser más caro que Oracle enconfiguraciones parecidas. En la practica, como buenos enemigos acérrimos, ambas tienen parecidascaracterísticas y funcionalidades. Cada una tiene las típicas ampliaciones quepermiten especializar la base de datos a un cierto tipo de aplicación (enInformix se llaman DataBlades, ver imagen 3). Para competir, en cada nueva versiónque sacaban, las dos iban añadiendo de serie muchas de las extensiones que enla versión anterior eran opcionales (de pago por separado). En el momento deescribir este artículo las dos están en la versión 9.X. De cara a una instalación y configuración básicas, las diferencias frentea Oracle que el lector va a notar son dos:
Con estas diferencias ya podemos ver, que Informix es unabase de datos más moderna y integrada con Linux que Oracle. Pero los preciosson los precios, y el marketing es el marketing. La sintaxis del lenguaje es casi idéntica a la de Informix-4GL. Se hanimplementado los tipos de datos básicos, los de fecha y hora, intervalos y'datetime'. Las sentencias de asignación, presentación en pantalla, estructurasrepetitivas (bucles while y for) y condicionales (if..else..), generación demenús y listados se han implementado completamente. El manejo de los formularios de entrada de datos se ha implementado siguiendola sintaxis original de Informix-4GL, sin embargo se ha modificado la sintaxisde la definición de los formularios para dar cabida a nuevos tipos de objetos,como botones o casillas de verificación. Se ha introducido una nueva sentencia (browse), que permite visualizar todaslas tuplas devueltas por una consulta y 'navegar' por ellas mediante movimientosdel cursor. La sintaxis de algunas sentencias se ha ampliado, permitiendo nuevasfuncionalidades no encontradas en Informix-4GL, como asignaciones múltiples.Estas modificaciones están explicadas con detalle en el manual de usuario. Se ha generado únicamente una interfaz en modo texto. Sin embargo, laimplementación de las funciones de manejo de formularios de entrada se harealizado de manera independiente de la implentación a bajo nivel (curses).Gracias a esto es posible desarrollar librerías de funciones que gestionen losformularios de entrada de manera gráfica, generando interfaces en X-Window. La generación de código está actualmente muy enfocada a la interfaz dePostgreSQL. Una posible ampliación sería la generalización de este código,para permitir el desarrollo de aplicaciones que accedan a datos almacenados enotro tipo de servidores, o incluso usando ODBC (el API de acceso a bases dedatos definido por Microsoft y que se ha convertido en estándar). Con la idea de facilitarnos las tareas que debemos de desempeñar loshumanos, hemos venido inventado diversas herramientas a lo largo de nuestrahistoria, que nos permiten tener una mejor calidad de vida. Los ordenadores sonuno más de los inventos del hombre, aunque debemos decir que las tecnologíaspara su fabricación y explotación han tenido un desarrollo sorprendente apartir de la segunda mitad del siglo XX. Esta herramienta por sí sola no escapaz de efectuar ninguna tarea, es tan sólo un conjunto de cables y circuitosque necesitan recibir instrucción por parte de los humanos para desempeñaralguna tarea. El problema entonces, se puede fijar en ¿cómo vamos a poderhacer que un conjunto de circuitos desempeñen una determinada tarea y nosentreguen los resultados que nosotros esperamos?, es decir, ¿de qué manera sepuede lograr la comunicación entre el hombre y el ordenador?. Así pues, tratando de dar una solución al problemaplanteado, surgieron los lenguajes de programación, que son como un lenguajecualquiera, pero simplificado y con ciertas normas, para poder trasmitirnuestros deseos al ordenador. El Sistema de Gestión de Bases de Datos (SGBD) Consiste enun conjunto de programas, procedimientos y lenguajes que nos proporcionan lasherramientas necesarias para trabajar con una base de datos. Incorporar unaserie de funciones que nos permita definir los registros, sus campos, susrelaciones, insertar, suprimir, modificar y consultar los datos. Microsoft SQL Server 7.0 constituye un lanzamiento determinante para losproductos de bases de datos de Microsoft, continuando con la base sólidaestablecida por SQL Server 6.5. Como la mejor base de datos para Windows NT, SQLServer es el RDBMS de elección para una amplia gama de clientes corporativos yProveedores Independientes de Software (ISVs) que construyen aplicaciones denegocios. Las necesidades y requerimientos de los clientes han llevado a lacreación de innovaciones de producto significativas para facilitar la utilización,escalabilidad, confiabilidad y almacenamiento de datos. ORACLE Es manejador de base de datos relacional que hace uso de los recursosdel sistema informático en todas las arquitecturas de hardware, para garantizarsu aprovechamiento al máximo en ambientes cargados de información. Informix-4GL ofrece herramientas para crear menús, formularios de entrada dedatos y generadores de listados. Será necesario definir estas mismasherramientas manteniendo, a ser posible, la sintaxis original. En principio segenerarán aplicaciones que funcionen en modo texto, dejando para una futuraampliación la generación de aplicaciones en entornos gráficos. www.monografías.com www.abcdatos.com www.espanol.yahoo.com
Integrante: Sanguinetti Corabel Valencia
Articulos relacionados:
|
