1. Importancia, conceptos bsicos y objetivos de las bases de datos.
Base de datos.-Es una coleccin de archivos interrelacionados, son creados con un DBMS. El contenido de una base de datos engloba a la informacin concerniente (almacenadas en archivos) de una organizacin, de tal manera que los datos estn disponibles para los usuarios, una finalidad de la base de datos es eliminar la redundancia o al menos minimizarla. Los tres componentes principales de un sistema de base de datos son el hardware, el software DBMS y los datos a manejar, as como el personal encargado del manejo del sistema.
Base de datos.- Es un conjunto de datos organizados y relacionados entre s, de forma lgica, que en su totalidad dan informacin sobre aspectos reales.
Dato: Conjunto de caracteres con algn significado, pueden ser numricos, alfabticos o alfanumricos.
Informacin: Es un conjunto ordenado de datos los cuales son manejados segn la necesidad del usuario, para que un conjunto de datos pueda ser procesado eficientemente y pueda dar lugar a informacin, primero se debe guardar lgicamente en archivos.
1.1. Rol de las bases de datos y de los sistemas para su procesamiento en la economa.
En una economa cada vez ms globalizada, la toma de decisiones en las organizaciones se vuelven ms complejas, pues se debe considerar una mayor cantidad de informacin y esta debe representar los datos reales de lo que esta ocurriendo en la empresa, por lo que directivos y administradores, deben hacer uso de herramientas que les permitan analizar esa informacin y finalmente tomar la decisin correcta sobre cmo dirigir la empresa.
Existen diferentes tipos de sistemas que dan apoyo a la toma de decisiones, por lo que se deben analizar las necesidades de la organizacin y seleccionar el que mejor se adapte a ella. Algunas de las razones ms comunes para hacer uso de estos sistemas se pueden mencionar las siguientes: Mayor velocidad de procesamiento: Los sistemas de soporte a la toma de decisiones, permiten que los administradores puedan realizar un mayor nmero de procesamiento de informacin de una manera ms rpida y a bajo costo.
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
2 I ncremento de la productividad: El formar grupos especializados para la toma de decisiones puede ser realmente costoso para la organizacin. A travs de los sistemas computarizados, los grupos pueden ser ms reducidos y encontrarse en diferentes lugares, lo que implicara una reduccin de costos y optimizacin de recursos.
Soporte tcnico: Muchas de las decisiones de los administradores, involucran interacciones complejas de informacin en diferentes bases de datos dentro de la organizacin. Los sistemas de soporte a las decisiones, permiten acceder a toda la informacin de la organizacin y a travs de la Web se puede tener acceso desde cualquier lugar donde se necesite. Adems que se puede obtener apoyo a travs de grficas, sonidos y anlisis de sensibilidad, entre otros, de una manera rpida y econmica.
Calidad en las decisiones: La calidad de las decisiones de los administradores se ve mejorada notablemente, ya que se tiene una mayor alternativa para realizar evaluaciones, los anlisis de riesgos pueden ser obtenidos rpidamente y ser comunicados a los dems miembros de la organizacin a muy bajo costo. Finalmente permiten crear simulaciones complejas y un sin fin de escenarios, que permitirn al administrador conocer el impacto de sus decisiones en la organizacin.
1.2. Problemas de redundancia e inconsistencia de datos.
Redundancia de datos: si un cliente ha realizado ms de un pedido todos los datos de este cliente estarn repetidos tantas veces como pedidos haya, lo mismo sucede para los artculos esto es opuesto al principal objetivo de una base de datos que consiste en evitar la repeticin de los mismos.
Control de la redundancia de datos: Este consiste en lograr una mnima cantidad de espacio de almacenamiento para almacenar los datos evitando la duplicacin de la informacin. De esta manera se logran ahorros en el tiempo de procesamiento de la informacin, se tendrn menos inconsistencias, menores costos operativos y har el mantenimiento ms fcil.
Incosistencia de los datos: Si una operacin de puesta al da mltiple no se ha realizado completamente el estado de la base de datos queda incoherente y puede producir errores importantes.
Redundancia e inconsistencia de datos: Puesto que los archivos que mantienen almacenada la informacin son creados por diferentes tipos de programas de aplicacin existe la posibilidad de que si no se controla detalladamente el almacenamiento, se pueda originar un duplicado de informacin, es decir que la misma informacin sea ms de una vez en un dispositivo de almacenamiento. Esto aumenta los costos de almacenamiento y acceso a los datos, adems de que puede originar la inconsistencia de los datos - es decir diversas copias de un mismo dato no concuerdan entre si -, por ejemplo: que se actualiza la direccin de un cliente en un archivo y que en otros archivos permanezca la anterior.
1.3.Problemas de integridad y seguridad.
Problemas de seguridad: La informacin de toda empresa es importante, aunque unos datos lo son mas que otros, por tal motivo se debe considerar el control de acceso a los mismos, no todos los usuarios Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
3 pueden visualizar alguna informacin, por tal motivo para que un sistema de base de datos sea confiable debe de mantener un grado de seguridad que garantice la autentificacin y proteccin de los datos. En un banco por ejemplo, el personal de nominas solo necesita empleados del banco y no a otro tipo de informacin.
Problemas de integridad: Los valores de datos almacenados en la base de datos deben satisfacer cierto tipo de restricciones de consistencia. Estas restricciones se hacen cumplir en el sistema aadiendo cdigos apropiados en los diversos programas de aplicacin.
Mantenimiento de la integridad: La integridad de los datos es la que garantiza la precisin o exactitud de la informacin contenida en una base de datos. Los datos interrelacionados deben siempre representar informacin correcta a los usuarios.
1.4. Objetivos de las bases de datos. Independencia de datos y funciones, as como consultas no planeadas.
Existen bsicamente dos tipos de independencia:
a. INDEPENDENCIA FISICA.- Esta se presenta cuando es posible la modificacin del esquema fsico sin afectar a los esquemas restantes. Las principales razones para llevar a cabo una modificacin del esquema fsico sern un ajuste en el hardware de almacenamiento o una redistribucin de los datos en l.
b. INDEPENDENCIA LOGICA.- Ocurre cuando se modifica el esquema conceptual sin afectar al resto de los esquemas. Bsicamente se modifica el esquema conceptual cuando cambian las caractersticas de los datos a almacenar.
Independencia de los datos. En las aplicaciones basadas en archivos, el programa de aplicacin debe conocer tanto la organizacin de los datos como las tcnicas que el permiten acceder a los datos. En los sistemas DBMS los programas de aplicacin no necesitan conocer la organizacin de los datos en el disco duro. Este totalmente independiente de ello.
Independencia de los datos. Propiedad que asegura que los programas de aplicacin sean independientes de los cambios realizados en datos que no usan o en detalles de representacin fsica de los datos a los que acceden
2. Sistemas de manejo de bases de datos.
2.1. Organizacin fsica y lgica.
En el nivel interno se describe la estructura fsica de la base de datos mediante un esquema interno. Este esquema se especifica mediante un modelo fsico y describe todos los detalles para el almacenamiento de la base de datos, as como los mtodos de acceso.
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
4 En el nivel conceptual se describe la estructura de toda la base de datos para una comunidad de usuarios (todos los de una empresa u organizacin), mediante un esquema conceptual. Este esquema oculta los detalles de las estructuras de almacenamiento y se concentra en describir entidades, atributos, relaciones, operaciones de los usuarios y restricciones. En este nivel se puede utilizar un modelo conceptual o un modelo lgico para especificar el esquema.
En el nivel externo se describen varios esquemas externos o vistas de usuario. Cada esquema externo describe la parte de la base de datos que interesa a un grupo de usuarios determinado y oculta a ese grupo el resto de la base de datos. En este nivel se puede utilizar un modelo conceptual o un modelo lgico para especificar los esquemas.
2.2. Lenguajes de bases de datos: lenguajes de descripcin de datos, de manejo de datos, de consulta y de programacin.
El DBMS es un conjunto de programas que se encargan de manejar la creacin y todos los accesos a las bases de datos. Se compone de un lenguaje de definicin de datos (DDL: Data Definition Language), de un lenguaje de manipulacin de datos (DML: Data Manipulation Language) y de un lenguaje de consulta (SQL: Structured Query Language).
El lenguaje de definicin de datos (DDL) es utilizado para describir todas las estructuras de informacin y los programas que se usan para construir, actualizar e introducir la informacin que contiene una base de datos.
El lenguaje de manipulacin de datos (DML) es utilizado para escribir programas que crean, actualizan y extraen informacin de las bases de datos.
El lenguaje de consulta (SQL) es empleado por el usuario para extraer informacin de la base de datos. El lenguaje de consulta permite al usuario hacer requisiciones de datos sin tener que escribir un programa, usando instrucciones como el SELECT, el PROJECT y el JOIN.
Un Lenguaje de Manipulacin de Datos (Data Manipulation Language (DML)) es un lenguaje proporcionado por el sistema de gestin de base de datos que permite a los usuarios de la misma llevar a cabo las tareas de consulta o manipulacin de los datos, organizados por el modelo de datos adecuado.
El lenguaje de manipulacin de datos ms popular hoy da es SQL, usado para recuperar y manipular datos en una base de datos relacional.
Lenguaje de manipulacin de datos. El DML (Data Manipulation Language) nos sirve para manejar la informacin contenida en la base de datos. Este manejo consiste bsicamente en la insercin, recuperacin, eliminacin y modificacin de la informacin.
El DML aplicado a nivel fsico ser utilizado para realizar procesos que permitan un acceso ms eficiente a la informacin; en el nivel de visin tendr como finalidad mostrar al usuario destino los datos en una Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
5 forma clara y sencilla.
Existen dos tipos de DML:
a. DE PROCEDIMIENTOS.- Especifican cuales datos habrn de ser manipulados y el mtodo que se utilizara para ello.
b. SIN PROCEDIMIENTOS.- Solamente especifican los datos a manejar.
Los DML de procedimientos son mucho ms eficientes en lo que respecta a sus capacidades de manejo y control de la informacin, pero su complejidad es mayor.
Se define una consulta como una operacin que solicita la recuperacin de informacin. La parte del DML que se encarga de procesar esta recuperacin se conoce como LENGUAJ E DE CONSULTA.
Lenguaje de definicin de datos. Un esquema de base de datos se especifica por medio de un conjunto de definiciones que se expresan mediante un lenguaje especial llamado lenguaje de definicin de datos.
El resultado de la combinacin de sentencias de DDL es un conjunto de tablas las cuales se almacenan en un archivo especial llamado diccionario de datos.
El DDL (Data Definition Language) es aquel que permite describir un esquema de base de datos. Las definiciones resultantes conformaran al DICCIONARIO DE DATOS.
Un DICCIONARIO DE DATOS es un archivo que contiene metadatos que se consulta antes de leer o modificar datos reales en el sistema de base de datos.
2.3. Interfaces con otros sistemas.
Cmo Funciona la Integracin de Bases de Datos en el Web. Para realizar una requisicin de acceso desde el Web hasta una base de datos no slo se necesita de un browser del Web y de un Servidor Web, sino tambin de un software de procesamiento (aplicacin CGI), el cual es el programa que es llamado directamente desde un documento HTML en el cliente. Dicho programa lee la entrada de datos desde que provienen del cliente y toma cierta informacin de variables de ambiente. El mtodo usado para el paso de datos est determinado por la llamada CGI. Una vez se reciben los datos de entrada (sentencias SQL o piezas de ellas), el software de procesamiento los prepara para enviarlos a la interfaz en forma de SQL, y luego sta procesa los resultados que se extraen de la base de datos. Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
6 La interfaz contiene las especificaciones de la base de datos necesarias para traducir las solicitudes enviadas desde el cliente, a un formato que sea reconocido por dicha base. Adems, contiene toda la informacin, estructuras, variables y llamadas a funciones, necesarias para comunicarse con la base de datos. El software de acceso usualmente es el software distribuido con la base de datos, el cual permite el acceso a la misma, a travs de solicitudes con formato. Luego, el software de acceso recibe los resultados de la base de datos, an los mensajes de error, y los pasa hacia la interfaz, y sta a su vez, los pasa hasta el software de procesamiento. Cualquier otro software (servidor HTTP, software de redes, etc.) agrega enlaces adicionales a este proceso de extraccin de la informacin, ya que el software de procesamiento pasa los resultados hacia el servidor Web, y ste hasta el browser del Web (ya sea directamente o a travs de una red).
Categorizacin de Interfaces Web/DBMS
Tradicionalmente en el Web se han utilizado documentos HTML estticos para los cuales se creaban las posibles respuestas ante requisiciones del cliente. Este mtodo requiere de un gran desarrollo de aplicaciones y de mantenimiento de las mismas. Al interactuar con las bases de datos, este proceso se complica an ms. Como la necesidad de acceder a bases de datos desde el Web se ha incrementado, han sido creadas tambin interfaces que manipulan sus escritos para procesar la informacin, teniendo como punto comn la ejecucin de sentencias SQL para requerir datos a la base. Aplicaciones de interfaz para la interaccin de bases de datos con el Web han surgido ya. Los productos iniciales son simplemente modelos del ambiente cliente/servidor, con una capa adicional para crear resultados HTML que pueden ser vistos a travs del Web, por medio de un procesamiento de los datos de la forma introducidos por el cliente. Adems, al usar estas interfaces se puede crear el programa principal de la aplicacin. Como puede observarse, estas herramientas permiten construir poderosas aplicaciones en el Web, pero se requiere que programadores experimentados logren un desarrollo a gran escala. Tambin, el mantenimiento de las mismas es significativamente ms complejo y extenso. Una de las estrategias ms famosas para la creacin de aplicaciones de interaccin con el Web, es la de descargar del Web, aplicaciones o componentes funcionales que se ejecutarn dentro del browser. Con ellas se realizar un procesamiento complejo del lado del cliente, lo cual requiere un gran esfuerzo para crear las piezas de la aplicacin. Estas estrategias poseen dos caractersticas principales: garantizan la seguridad tanto en los sistemas de distribucin como en la comunicacin que se establece con tales aplicaciones, a travs de Internet. Tambin han aparecido bibliotecas que incluyen motores propios de servidor que corren de forma conjunta con el Servidor Web, lo cual facilita el desarrollo de nuevas aplicaciones. Una aplicacin que posibilita interconectar al Web con una base de datos tiene muchas ventajas, adems de que las funciones que cumplen actualmente los Servidores Web y las herramientas de desarrollo de aplicaciones Web, hacen ms fcil que nunca la construccin de aplicaciones ms robustas. Tal vez el mayor beneficio del desarrollo de estas aplicaciones en el Web sea la habilidad de que sean para mltiples plataformas, sin el costo de distribuir mltiples versiones del software. Cada una de las interfaces para comunicar al Web con bases de datos, ha sido creada basndose en una tecnologa de integracin especial, a travs de procesos de interconexin especiales, que sern descritos en el siguiente apartado.
Tecnologas para la I ntegracin de Bases de Datos en el Web El Common Gateway Interface (CGI). Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
7 Interfaz de Programacin de Aplicaciones (API). Interfaz de Programacin de Aplicaciones del Servidor Internet (ISAPI). Java, JDBC y JavaScript.
Aplicaciones Java Conectividad de Bases de Datos de Java (JDBC) JavaScript Cuando se utiliza una interfaz para lograr la integracin del Web con cierta base de datos, se puede verificar que los procesos seguidos varan, dependiendo de la tecnologa que se est utilizando. Entre estas tecnologas se tienen las siguientes:
El Common Gateway I nterface (CGI ). Actualmente, sta es la solucin que ms se est utilizando para la creacin de interfaces Web/DBMS. Fue probada por primera vez en el servidor NCSA. Se ha comprobado que si el Servidor Web recibe un URL con una llave, para devolver un documento HTML como respuesta, tendr que cargar el servicio (programa) que le indique las variables de ambiente y de la forma HTML. La mayora de las veces dicha llave es el "cgi-bin". Entre las ventajas de la programacin CGI, se tiene su sencillez, ya que es muy fcil de entender, adems de ser un lenguaje de programacin independiente, ya que los escritos CGI pueden elaborarse en varios lenguajes. Tambin es un estndar para usarse en todos los servidores Web, y funcionar bajo una arquitectura independiente, ya que ha sido creado para trabajar con cualquier arquitectura de servidor Web. Como la aplicacin CGI se encuentra funcionando de forma independiente, no pone en peligro al servidor, en cuanto al cumplimiento de todas las tareas que ste se encuentre realizando, o al acceso del estado interno del mismo. Pero el CGI presenta cierta desventaja en su eficiencia, debido a que el Servidor Web tiene que cargar el programa CGI y conectar y desconectar con la base de datos cada vez que se recibe una requisicin. Adems, no existe un registro del estado del servidor, sino que todo hay que hacerlo manualmente.
I nterfaz de Programacin de Aplicaciones (API ). Es un conjunto de rutinas, protocolos y herramientas para construir aplicaciones de interfaz. Una buena API hace ms fcil el trabajo de desarrollo de un programa, ya que debe proveer todos los bloques para construirlo. El programador lo nico que hace es poner todos los bloques juntos. API est diseado especialmente para los programadores, ya que garantiza que todos los programas que utilizan API, tendrn interfaces similares. Asimismo, esto le facilita al usuario aprender la lgica de nuevos programas. Cuando se realiza una requisicin, el servidor llamar al API, brindando la ventaja de disponer de una mayor cantidad de servicios.
I nterfaz de Programacin de Aplicaciones del Servidor I nternet (I SAPI ). Es la interfaz propuesta por Microsoft como una alternativa ms rpida que el CGI, y ya est incluida en el Servidor Microsoft Internet Information (IIS). As como los escritos CGI, los programas escritos usando ISAPI habilitan un usuario remoto para ejecutar un programa, busca informacin dentro de una base de datos, o intercambia informacin con otro software localizado en el servidor. Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
8 Los programas escritos usando la interfaz ISAPI son compilados como bibliotecas de enlace dinmico (DLL - Dynamic Link Library), ya que son cargados por el servidor Web cuando ste se inicia. Dichos programas se vuelven residentes en memoria, por lo que se ejecutan mucho ms rpido que las aplicaciones CGI, debido a que requieren menos tiempo de uso de CPU al no iniciar procesos separados. Uno de los programas ISAPI ms usados es el HTTPODBC.DLL que se usa para enviar y/o devolver informacin hacia y desde las bases de datos, a travs de ODBC. Adems, ISAPI permite realizar un procesamiento previo de la solicitud y uno posterior de la respuesta, con lo cual manipula la solicitud/respuesta HTTP. Los filtros ISAPI pueden utilizarse para aplicaciones tales como autenticacin, acceso o apertura de sesin.
J ava, J DBC y J ava Script. Java ofrece un ambiente de programacin muy sencillo, robusto, dinmico, de propsito general, orientado a objetos y mltiples plataformas, creado por Sun MicroSystems. Es tanto un compilador como un lenguaje intrprete. El cdigo fuente de Java es convertido en instrucciones binarias simples, y compilado con un formato universal. El Compilador realiza todas las actividades de un procesador real en un ambiente virtual ms seguro. Es decir, ejecuta instrucciones, crea y manipula informacin, carga y hace referencia a bloques de cdigo nuevos. El Intrprete, que es pequeo y muy til, es capaz de ser implantado en cualquier forma que se desee para un sistema operativo particular. Este puede correr como una aplicacin independiente, o como una parte de otro software, tal como el Web Browser. El concepto de Java es diferente al de CGI, ya que el CGI se ejecuta en el servidor, mientras que Java se ejecuta en el cliente.
Aplicaciones J ava. Los programadores pueden desarrollar pequeas aplicaciones, las cuales permiten tener sitios Web con una gran funcionalidad en cuanto a: animacin, actualizacin en vivo, interaccin bidireccional y ms. Al integrarse en una pgina Web, las aplicaciones de Java tienen acceso a: Recreacin de grficos expertos. Interaccin en tiempo real con los usuarios. Actualizacin en vivo de la informacin. Interaccin instantnea con los servidores a travs de la red. Las aplicaciones de Java pueden obtenerse en cualquier servidor con esta tecnologa y funcionan de forma segura bajo cualquier plataforma o arquitectura de CPU, permitiendo introducirlas en pginas HTML. Las aplicaciones son programas independientes, tales como el browser HotJava.
Procesamiento Cliente/Servidor. Por lo general, las aplicaciones Web son procesadas completamente en el lado del servidor, lo cual no es precisamente lo ms apropiado, ya que significa un uso excesivo de memoria, manteniendo al usuario en la espera mientras termina de ejecutarse. Pero los browser Java (del lado del usuario) pueden ejecutar aplicaciones, y no slo desplegar documentos HTML, poniendo a correr el proceso en el lugar apropiado. Las aplicaciones clsicas proveen de informacin acerca de los tipos de formato (tipos MIME). Los browser del Web rpidos sern capaces de aprender cmo tratar con nuevos protocolos y dar formato dinmicamente a los datos. Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
9
Seguridad . Java est diseado para proveer la mxima seguridad posible en redes pblicas, con mltiples formas de seguridad ante virus, posibles invasiones o accesos incorrectos, archivos basura, etc. Java es como una versin de C++, en la cual se puede causar cualquier dao. Es funcional como C y modular Como C++.
Conectividad de Bases de Datos de J ava (J DBC). Se considera el primer producto estndar de Java con DBMS, creado y ofrecido por primera vez en marzo de 1996. Crea una interfaz con un nivel de programacin que le permite comunicarse con las bases de datos mediante un concepto similar al de componentes ODBC, el cual se ha convertido en el estndar que se utiliza en computadoras personales o en redes locales. El estndar de JDBC est basado en un nivel de interfaz con instrucciones SQL X/Open, que es bsicamente lo mismo que en ODBC. Las clases de objetos para iniciar la transaccin con la base de datos, estn escritas completamente en Java, lo cual permite mantener la seguridad, robustez y portabilidad de este ambiente. El puente JDBC-ODBC manipula la traduccin de llamadas JDBC a aquellas que puedan ser entendidas por el cliente ODBC a un nivel de lenguaje C.
J avaScript. Es un lenguaje muy poderoso y especialmente diseado para la creacin de escritos, que se alojan dentro de un documento HTML. Dicho lenguaje es propiedad de Netscape. Es un API programable que permite crear escritos de eventos, objetos y acciones, bajo cualquier plataforma. Gracias a que JavaScript es parte de la conexin en vivo, se puede usar para crear interacciones entre documentos HTML, Plug-ins (aplicaciones que corren dentro del browser del Web) y Java.
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
10
3. Usuarios de las bases de datos.
3.1. Usuarios finales.
Requieren tener acceso directo a la base de datos para realizar consultas, modificaciones y generar reportes, de hecho la base de datos existe para ellos. Dentro de este tipo de usuarios tenemos la siguiente clasificacin.
Espordicos. Personas que utilizan la base de datos algunas veces para solicitar informacin con diferentes criterios.
Simples o paramtrico. Forman el grueso de la poblacin de los usuarios finales, realizan operaciones o transacciones de uso comn, que se han poblado exhaustivamente. En este grupo se encuentran las personas que utilizan a los sistemas bancarios, reservaciones de cualquier tipo, entre otras.
Avanzados. Son las personas capacitadas para manipular el SGBD, las cuales tienen requerimientos complejos de informacin.
Autnomos. Utilizan bases de datos personalizadas de fcil uso, cuyo ambiente es de tipo grfico, es decir, mantiene un ambiente amigable.
3.2. Diseadores y desarrolladores.
Son las personas encargadas de disear la base de datos y realizar las definiciones en el SGBD a nivel interno, para cubrir los requerimientos de los dems usuarios de la base de datos.
3.3. Operadores y capturistas.
Son las personas encargadas de hacer el vaciado de la informacin en la base de datos, as como de llevar a cabo el funcionamiento y mantenimiento del sistema de informacin.
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
11
4. Relaciones entre datos.
4.1. Uno a uno. 4.2. Uno a varios. 4.3. Varios a uno. 4.4. Varios a varios.
Limitantes de mapeo. Existen 4 tipos de relaciones que pueden establecerse entre entidades, las cuales establecen con cuantas entidades de tipo B se pueden relacionar una entidad de tipo A:
Tipos de relaciones:
Relacin uno a uno. Se presenta cuando existe una relacin como su nombre lo indica uno a uno, denominado tambin relacin de matrimonio. Una entidad del tipo A solo se puede relacionar con una entidad del tipo B, y viceversa;
Por ejemplo: la relacin asignacin de automvil que contiene a las entidades EMPLEADO, AUTO, es una relacin 1 a 1, ya que asocia a un empleado con un nico automvil por lo tanto ningn empleado posee ms de un automvil asignado, y ningn vehculo se asigna a ms de un trabajador. Es representado grficamente de la siguiente manera:
A: Representa a una entidad de cualquier tipo diferente a una entidad B. R: en el diagrama representa a la relacin que existe entre las entidades. El extremo de la flecha que se encuentra punteada indica el uno de la relacin, en este caso, una entidad A ligada a una entidad B.
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
12 Relacin uno a muchos. Significa que una entidad del tipo A puede relacionarse con cualquier cantidad de entidades del tipo B, y una entidad del tipo B solo puede estar relacionada con una entidad del tipo A. Su representacin grfica es la siguiente:
Ntese en este caso que el extremo punteado de la flecha de la relacin de A y B, indica una entidad A conectada a muchas entidades B.
Muchos a uno. Indica que una entidad del tipo B puede relacionarse con cualquier cantidad de entidades del tipo A, mientras que cada entidad del tipo A solo puede relacionarse con solo una entidad del tipo B.
Muchas a muchas. Establece que cualquier cantidad de entidades del tipo A pueden estar relacionados con cualquier cantidad de entidades del tipo B.
A los tipos de relaciones antes descritos, tambin se le conoce como cardinalidad.
La cardinalidad nos especifica los tipos de relaciones que existen entre las entidades en el modelo E-R y establecer con esto las validaciones necesarias para conseguir que los datos de la instancia (valor nico en un momento dado de una base de datos) correspondan con la realidad.
Algunos ejemplos de cardinalidades de la vida comn pueden ser:
Uno a uno. El noviazgo, el RFC de cada persona, El CURP personal, El acta de nacimiento, ya que solo existe un solo documento de este tipo para cada una de las diferentes personas.
Uno a muchos. Cliente Cuenta en un banco, Padre-Hijos, Camin-Pasajeros, zoologico- animales, rbol hojas. Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
13
Muchos a muchos. Arquitecto proyectos, fiesta personas, estudiante materias.
NOTA: Cabe mencionar que la cardinalidad para cada conjunto de entidades depende del punto de vista que se le de al modelo en estudio, claro esta, sujetndose a la realidad.
Otra clase de limitantes lo constituye la dependencia de existencia. Refirindonos a las mismas entidades A y B, decimos que si la entidad A depende de la existencia de la entidad B, entonces A es dependiente de existencia por B, si eliminamos a B tendramos que eliminar por consecuente la entidad A, en este caso B es la entidad Dominante y A es la entidad subordinada.
5. Tipos de modelos de datos:
5.1. Modelos de lista o planos.
5.2. Modelos jerrquicos o arborescentes.
El modelo jerrquico es similar al modelo de red, los datos y las relaciones se representan mediante registros y enlaces. Se diferencia del modelo de red en que los registros estn organizados como colecciones de rboles.
Una base de datos jerrquica consiste en una coleccin de registros que se conectan entre si por medio de ligas. Los registros y las ligas son similares a los del modelo de red, pero en el modelo jerrquico se organiza en forma de rbol con raz (donde la raz es nodo ficticio); de tal manera que una base de datos jerrquica es una coleccin de arboles de este tipo, formando un bosque.
A cada rbol con raz con raz se le denomina rbol de base de datos. En este modelo un registro puede tener que repetirse en varios sitios que puede ocasionar los siguientes problemas:
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
14 * Riesgos de la inconsistencia al llevar a cabo actualizaciones.
* Inevitable desperdicio de espacio en el medio de almacenamiento secundario.
Diagramas de estructura de rbol Un diagrama de estructura de rbol es la representacin de un esquema de la base de datos jerrquica, de ah el nombre, ya que un rbol esta desarrollado precisamente en orden descendente formando una estructura jerrquica.
Este tipo de diagrama est formado por dos componentes bsicos: - Rectngulos: que representan a los de registros. - Lneas: que representan a los enlaces o ligas entre los registros.
Un diagrama de rbol tiene el propsito de especificar la estructura global de la base de datos. Un diagrama de estructura de rbol es similar a un diagrama de estructura de datos en el modelo de red. La principal diferencia es que en el modelo de red los registros se organizan en forma de un grafo arbitrario, mientras que en modelo de estructura de rbol los registros se organizan en forma de un rbol con raz. Caractersticas de las estructuras de rbol: El rbol no puede contener ciclos. Las relaciones que existen en la estructura deben ser de tal forma que solo existan relaciones muchos a uno o uno a uno entre un padre y un hijo.
Diagrama de estructura de rbol
En este diagrama podemos observar que las flechas estn apuntando de padres a hijos. Un padre (origen de una rama) puede tener una flecha apuntando a un hijo, pero un hijo siempre puede tener una flecha apuntando a su padre.
El esquema de una base de datos se representa como una coleccin de diagramas de estructura de rbol. Para cada diagrama existe una nica instancia de rbol de base de datos. La raz de este rbol es un nodo ficticio. Los hijos de ese nodo son instancias de los registros de la base de datos. Cada una de las instancias que son hijos pueden tener a su vez, varias instancias de varios registros.
Las representaciones segn las cardinalidades son: Consideremos la relacin alumno-materia sin atributo descriptivo. Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
15
La transformacin segn las cardinalidades seria:
Cuando la relacin es uno a uno.
Cuando la relacin es uno a muchos.
Cuando la relacin es muchos a uno.
Cuando la relacin es muchos a muchos.
Cuando la relacin tiene atributos descriptivos, la transformacin de un diagrama E-R a estructura de rbol se lleva a cabo cubriendo los siguientes pasos:
1. Crear un nuevo tipo de registro. 2. Crear los enlaces correspondientes.
Consideremos que a la relacin Alumno-Materia aadimos el atributo Cal a la relacin que existe entre ambas, entonces nuestro modelo E-R resulta:
Aadir el diagrama E-R Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
16
Segn las cardinalidades los diagramas de estructura de rbol pueden quedar de la siguiente manera: Cuando la relacin es uno a uno.
Cuando la relacin es uno a muchos.
Cuando la relacin es Muchos a uno.
Cuando la relacin es Muchos a Muchos.
Si la relacin es muchos a muchos entonces la transformacin a diagramas de rbol es un poco ms compleja debido a que el modelo jerrquico solo se pueden representar las relaciones uno a uno o uno a muchos.
Existen varias formas distintas de transformar este tipo de relaciones a estructura de rbol, sin embargo todas las formas constituyen la repeticin de algunos registros.
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
17 La decisin de qu mtodo de transformacin debe utilizarse depende de muchos factores, entre los que se incluyen: - El tipo de consultas esperadas en la base de datos. - El grado al que el esquema global de base de datos que se est modelando se ajusta al diagrama E-R dado.
A continuacin se describe la forma de transformar un diagrama E-R a estructura de rbol con relaciones muchos a muchos. Suponemos el ejemplo de la relacin alumno-materia.
1. Crear dos diagramas de estructura de rbol distintos T1 yT2, cada uno de los cuales incluye los tipos de registro alumno y materia, en el rbol T1 la raz es alumno y en T2 la raz es materia. 2. Crear los siguientes enlaces: Un enlace muchos a uno del registro cuenta al registro Alumno, en T1 Un enlace muchos a uno del tipo de registro cliente al tipo de registro materia en T2.
Como se muestra en el siguiente diagrama:
5.3. Modelos reticulares.
Los datos en el modelo de red se representan mediante colecciones de registros y las relacciones entre los datos se representan mediante enlaces, los cuales pueden verse como punteros.
CONCEPTOS BASICOS. Una base de datos de red se compone por una coleccin de registras que se conectan entre si por medio de ligas. Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
18
Un registro equivale a una entidad y un campo a un atributo del modelo entidad relacin. Los campos contienen exclusivamente valores atmicos. Una liga es una relacin que se establece solamente entre dos registros; es decir; debe utilizarse una liga para cada relacin entre una pareja de registros.
Ejemplo: CLIENTES CUENTAS
DIAGRAMAS DE ESTRUCTURAS DE DATOS Permiten mostrar grficamente el esquema de una base de datos en el modelo de red. Sus componentes principales son:
- Cajas o cuadros: representan registros. - Lneas: representan ligas.
MODELO ENTIDAD - RELACIN
RED CLIENTE CUENTA
El caso anterior muestra la conversin del modelo entidad relacin al modelo de red para una relacin simple donde no existen atributos descriptivos en la relacin.
CASOS ESPECIALES. a) LA RELACIN TIENE ATRIBUTOS DESCRIPTIVOS E-R Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
19
D. E. D. RED
b) La relacin conecta a mas de dos conjuntos de entidades. Ejemplo: Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
20
D. E. D. RED
5.4. El modelo relacional.
El modelo relacional representa los datos y relaciones entre los datos mediante una coleccin de tablas, cuyas columnas tienen nombres nicos. Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
21
UNIDAD II. Bases de datos relacinales.
1. Estructuras bsicas de las bases de datos relacionales y normalizacin.
1.1. Relaciones, tablas o entidades.
Una relacin es la asociacin que existe entre dos a ms entidades. Un conjunto de relaciones es un grupo de relaciones del mismo tipo. La cantidad de entidades en una relacin determina el grado de la relacin, por ejemplo la relacin ALUMNO-MATERIA es de grado 2, ya que intervienen la entidad ALUMNO y la entidad MATERIA, la relacin PADRES, puede ser de grado 3, ya que involucra las entidades PADRE, MADRE e HIJO.
Una entidad es un objeto que existe y se distingue de otros objetos de acuerdo a sus caractersticas llamadas atributos. Las entidades pueden ser concretas como una persona o abstractas como una fecha.
Un conjunto de entidades es un grupo de entidades del mismo tipo. Por ejemplo el conjunto de entidades CUENTA, podra representar al conjunto de cuentas de un banco X, o ALUMNO representa a un conjunto de entidades de todos los alumnos que existen en una institucin. Una entidad se caracteriza y distingue de otra por los atributos, en ocasiones llamadas propiedades, que representan las caractersticas de una entidad. Los atributos de una entidad pueden tomar un conjunto de valores permitidos al que se le conoce como dominio del atributo. As cada entidad se describe por medio de un conjunto de parejas formadas por el atributo y el valor de dato. Habr una pareja para cada atributo del conjunto de entidades. Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
22
La funcin que tiene una relacin se llama papel, generalmente no se especifican los papeles o roles, a menos que se quiera aclarar el significado de una relacin. Diagrama E-R (sin considerar los atributos, slo las entidades) para los modelos ejemplificados:
Diagrama Entidad-Relacin Denominado por sus siglas como: E-R; Este modelo representa a la realidad a travs de un esquema grfico empleando los terminologa de entidades, que son objetos que existen y son los elementos principales que se identifican en el problema a resolver con el diagramado y se distinguen de otros por sus caractersticas particulares denominadas atributos, el enlace que que rige la unin de las entidades esta representada por la relacin del modelo. Recordemos que un rectngulo nos representa a las entidades; una elipse a los atributos de las entidades, y una etiqueta dentro de un rombo nos indica la relacin que existe entre las entidades, destacando con lneas las uniones de estas y que la llave primaria de una entidad es aquel atributo que se encuentra subrayado. A continuacin mostraremos algunos ejemplos de modelos E-R, considerando las cardinalidades que existen entre ellos:
Relacin Uno a Uno. Problema: Disear el modelo E-R, para la relacin Registro de automvil que consiste en obtener la tarjeta de circulacin de un automvil con los siguientes datos:- Automvil- Modelo, Placas, Color - Tarjeta de circulacin -Propietario, No_serie, Tipo.
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
23
Indicamos con este ejemplo que existe una relacin de pertenencia de uno a uno, ya que existe una tarjeta de circulacin registrada por cada automvil. En este ejemplo, representamos que existe un solo presidente para cada pas.
Relacin muchos a muchos.
El siguiente ejemplo indica que un cliente puede tener muchas cuentas, pero que una cuenta puede llegar a pertenecer a un solo cliente (Decimos puede, ya que existen cuentas registradas a favor de ms de una persona).
Reduccin de diagramas E-R a tablas. Un diagrama E-R, puede ser representado tambin a travs de una coleccin de tablas. Para cada una de las entidades y relaciones existe una tabla nica a la que se le asigna como nombre el del conjunto de entidades y de las relaciones respectivamente, cada tabla tiene un nmero de columnas que son definidas por la cantidad de atributos y las cuales tienen el nombre del atributo. La transformacin de nuestro ejemplo Venta en la que intervienen las entidades de Vendedor con los atributos RFC, nombre, puesto, salario y Artculo con los atributos Clave, descripcin, costo. Cuyo diagrama E-R es el siguiente:
Entonces las tablas resultantes siguiendo la descripcin anterior son:
Tabla Empleado. Nombre Puesto Salario RFC Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
24 Tefilo Vendedor 2000 TEAT701210XYZ Cesar Auxiliar ventas 1200 COV741120ABC
Tabla Venta RFC Clave TEAT701210XYZ C260 COV741120ABC A100
Ntese que en la tabla de relacin - Venta -, contiene como atributos a las llaves primarias de las entidades que intervienen en dicha relacin, en caso de que exista un atributo en las relaciones, este atributo es anexado como una fila ms de la tabla;
Por ejemplo si anexamos el atributo fecha a la relacin venta, la tabla que se originaria sera la siguiente:
RFC Clave Fecha TEAT701210XYZ C260 10/12/96 COV741120ABC A100 11/12/96
1.2. Columnas, campos o atributos. 1.3. Renglones o registros.
Campo: Es la unidad ms pequea a la cual uno puede referirse en un programa. Desde el punto de vista del programador representa una caracterstica de un individuo u objeto.
Registro: Coleccin de campos de iguales o de diferentes tipos.
Archivo: Coleccin de registros almacenados siguiendo una estructura homognea.
MODELO RELACIONAL Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
25 Este modelo opera en los niveles conceptual y de vision, y tiene la caracteristica de que los resultados de un diseo muestran caracteristicas bien definidas que seran utilis para la implementacin del nivel conceptual.
ESTRUCTURA GENERAL DE LA BD RELACIONALES
1.4. Claves primarias y forneas.
Llaves primarias. Como ya se ha mencionado anteriormente, la distincin de una entidad entre otra se debe a sus atributos, lo cual lo hacen nico. Una llave primaria es aquel atributo el cual consideramos clave para la identificacin de los dems atributos que describen a la entidad. Por ejemplo, si consideramos la entidad ALUMNO del Instituto Tecnolgico de La Paz, podramos tener los siguientes atributos: Nombre, Semestre, Especialidad, Direccin, Telfono, Nmero de control, de todos estos atributos el que podremos designar como llave primaria es el nmero de control, ya que es diferente para cada alumno y este nos identifica en la institucin. Claro que puede haber ms de un atributo que pueda identificarse como llave primaria en este caso se selecciona la que consideremos ms importante, los dems atributos son denominados llaves secundarias. Una clave o llave primaria es indicada grficamente en el modelo E-R con una lnea debajo del nombre del atributo.
Uno de los procesos de mayor relevancia en la manipulacin de una base de datos es el de distinguir entre las diversas entidades y relaciones que son manipuladas. Entendemos como una llave al medio que nos permite identificar en forma unvoca (nica e inequvoca) a una entidad dentro de un conjunto de entidades. Existen diversas categoras que permiten clasificar los tipos de llaves a utilizara:
a) SUPER -LLAVE .- Es un conjunto de atributos mediante los cuales es posible reconocer a una entidad. Este tipo de llaves contiene comnmente atributos ajenos; es decir; atributos que no son indispensables para llevar a cabo el reconocimiento del registro. Ejemplo: Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
26 Conjunto de entidades: Cursos Atributos Super llaves *Nombre materia Nombre, mat, carrera, semestre *Carrera Nombre, mat, carrera, unidades *Semestre Nombre, mat, carrera, semestre, periodo *Periodo Nombre, mat, carrera *Unidades
-Si el conjunto de atributos X es una super llave entonces cualquier conjunto de X ser super-llave.
b) LLAVE CANDIDATO.- Son aquellas super llaves que no contienen atributos ajenos; es decir, aquellos conjuntos de atributos que no tienen un subconjunto menor que pueda considerarse como super llave.
c) LLAVE PRIMARIA.- Es aquella llave que el diseador de la base de datos selecciona entra las llaves candidatos encontradas. Existen conjuntos de entidades que no poseen los atributos necesarios para conformar una llave primaria; se les conoce como entidad dbil. Cuando existen los atributos necesarios para formar una llave primaria, se denominan entidad fuerte. Las entidades dbiles se subordinan a las entidades fuertes. Ejemplo:
Fuerte Dbil Fuerte
Nota: ncred y clave son las llaves primarias.
En el ejemplo anterior se pretende que el proceso de renta es una entidad abstracta para clarificar el concepto de entidad dbil. No obstante, la mejor implementaron consiste en manipular a la renta como una relacin.
Las entidades dbiles no pueden ser conocidas por s solas; con el objeto de diferenciarlas se seleccionan algunos de sus atributos para formar un discriminador. Este discriminador se asocia con las llaves primarias de las entidades fuertes a las que se encuentre subordinada para formar as su llave primaria propia.
Los conjuntos de relaciones tambin tienen llaves primarias. Estas se conforman por las llaves primarias de los conjuntos de entidades que se asocian en la relacin y todos los atributos descriptivos de la relacin. Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
27
1.5. Normalizacin.
Primera y segunda forma normal. Formas normales. Son las tcnicas para prevenir las anomalas en las tablas. Dependiendo de su estructura, una tabla puede estar en primera forma normal, segunda forma normal o en cualquier otra. Relacin entre las formas normales:
Primera forma normal.
Definicin formal: Una relacin R se encuentra en 1FN si y solo s por cada rengln columna contiene valores atmicos. Abreviada como 1FN, se considera que una relacin se encuentra en la primera forma normal cuando cumple lo siguiente:
1. Las celdas de las tablas poseen valores simples y no se permiten grupos ni arreglos repetidos como valores, es decir, contienen un solo valor por cada celda. 2. Todos los ingresos en cualquier columna(atributo) deben ser del mismo tipo. 3. Cada columna debe tener un nombre nico, el orden de las columnas en la tabla no es importante. 4. Dos filas o renglones de una misma tabla no deben ser idnticas, aunque el orden de las filas no es importante.
Por lo general la mayora de las relaciones cumplen con estas caractersticas, as que podemos decir que la mayora de las relaciones se encuentran en la primera forma normal. Para ejemplificar como se representan grficamente las relaciones en primera forma normal consideremos la relacin alumno cursa materia cuyo diagrama E-R es el siguiente:
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
28 Como esta relacin maneja valores atmicos, es decir un solo valor por cada uno de los campos que conforman a los atributos de las entidades, ya se encuentra en primera forma normal, grficamente as representamos a las relaciones en 1FN.
Segunda forma normal. Para definir formalmente la segunda forma normal requerimos saber que es una dependencia funcional: Consiste en edificar que atributos dependen de otro(s) atributo(s).
Definicin formal: Una relacin R est en 2FN si y solo si est en 1FN y los atributos no primos dependen funcionalmente de la llave primaria.
Una relacin se encuentra en segunda forma normal, cuando cumple con las reglas de la primera forma normal y todos sus atributos que no son claves (llaves) dependen por completo de la clave . De acuerdo con est definicin, cada tabla que tiene un atributo nico como clave, esta en segunda forma normal.
La segunda forma normal se representa por dependencias funcionales como:
Ntese que las llaves primarias estn representadas con doble cuadro, las flechas nos indican que de estos atributos se puede referenciar a los otros atributos que dependen funcionalmente de la llave primaria.
Tercera forma normal y la forma normal de Boyce Codd.
Para definir formalmente la 3FN necesitamos definir dependencia transitiva: En una afinidad (tabla bidimensional) que tiene por lo menos 3 atributos (A,B,C) en donde A determina a B, B determina a C pero no determina a A.
Tercera forma normal.
Definicin formal: Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
29 Una relacin R est en 3FN si y solo si esta en 2FN y todos sus atributos no primos dependen no transitivamente de la llave primaria.
Consiste en eliminar la dependencia transitiva que queda en una segunda forma normal, en pocas palabras una relacin esta en tercera forma normal si est en segunda forma normal y no existen dependencias transitivas entre los atributos, nos referimos a dependencias transitivas cuando existe ms de una forma de llegar a referencias a un atributo de una relacin.
Por ejemplo, consideremos el siguiente caso:
Tenemos la relacin alumno-cursa-materia manejada anteriormente, pero ahora consideramos al elemento maestro, grficamente lo podemos representar de la siguiente manera:
Podemos darnos cuenta que se encuentra graficado en segunda forma normal, es decir que todos los atributos llave estn indicados en doble cuadro indicando los atributos que dependen de dichas llaves, sin embargo en la llave Necono tiene como dependientes a 3 atributos en el cual el nombre puede ser referenciado por dos atributos: Necono y RFC (Existe dependencia transitiva), podemos solucionar esto aplicando la tercera forma normal que consiste en eliminar estas dependencias separando los atributos, entonces tenemos:
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
30
Forma normal de Boyce Codd.
Determinante: Uno o ms atributos que, de manera funcional, determinan otro atributo o atributos. En la dependencia funcional (A,B)-->C, (A,B) son los determinantes.
Definicin formal: Una relacin R esta en FNBC si y solo si cada determinante es una llave candidato.
Denominada por sus siglas en ingles como BCNF; Una tabla se considera en esta forma si y slo s cada determinante o atributo es una llave candidato.
Continuando con el ejemplo anterior, si consideramos que en la entidad alumno sus atributos control y nombre nos puede hacer referencia al atributos esp., entonces decimos que dichos atributos pueden ser llaves candidato.
Grficamente podemos representar la forma normal de Boyce Codd de la siguiente forma:
Obsrvese que a diferencia de la tercera forma normal, agrupamos todas las llaves candidato para formar una global (representadas en el recuadro) las cuales hacen referencia a los atributo que no son llaves candidato.
Cuarta y quinta forma norma. Cuarta forma normal.
Definicin formal: Un esquema de relaciones R est en 4FN con respecto a un conjunto D de dependencias funcionales y de valores mltiples s, para todas las dependencias de valores mltiples en D de la forma X->->Y, donde X<=R y Y<=R, se cumple por lo menos una de estas condiciones: Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
31 * X->->Y es una dependencia de valores mltiples trivial. * X es una superllave del esquema R.
Para entender mejor an esto consideremos una afinidad (tabla) llamada estudiante que contiene los siguientes atributos: Clave, Especialidad, Curso tal y como se demuestra en la siguiente figura:
Clave Especialidad Curso S01 Sistemas Natacin S01 Bioqumica Danza S01 Sistemas Natacin B01 Bioqumica Guitarra C03 Civil Natacin Suponemos que los estudiantes pueden inscribirse en varias especialidades y en diversos cursos. El estudiante con clave S01 tiene su especialidad en sistemas y Bioqumica y toma los cursos de Natacin y danza, el estudiante B01 tiene la especialidad en Bioqumica y toma el curso de Guitarra, el estudiante con clave C03 tiene la especialidad de Civil y toma el curso de natacin.
En esta tabla o relacin no existe dependencia funcional porque los estudiantes pueden tener distintas especialidades, un valor nico de clave puede poseer muchos valores de especialidades al igual que de valores de cursos. Por lo tanto existe dependencia de valores mltiples. Este tipo de dependencias produce redundancia de datos, como se puede apreciar en la tabla anterior, en donde la clave S01 tiene tres registros para mantener la serie de datos en forma independiente lo cual ocasiona que al realizarse una actualizacin se requiera de demasiadas operaciones para tal fin.
Existe una dependencia de valores mltiples cuando una afinidad tiene por lo menos tres atributos, dos de los cuales poseen valores mltiples y sus valores dependen solo del tercer atributo, en otras palabras en la afinidad R (A,B,C) existe una dependencia de valores mltiples si A determina valores mltiples de B, A determina valores mltiples de C, y B y C son independientes entre s.
En la tabla anterior Clave determina valores mltiples de especialidad y clave determina valores mltiples de curso, pero especialidad y curso son independientes entre s.
Las dependencias de valores mltiples se definen de la siguiente manera: Clave ->->Especialidad y Clave->->Curso; Esto se lee "Clave multidetrmina a Especialidad, y clave multidetermina a Curso"
Para eliminar la redundancia de los datos, se deben eliminar las dependencias de valores mltiples. Esto se logra construyendo dos tablas, donde cada una almacena datos para solamente uno de los atributos de valores mltiples. Para nuestro ejemplo, las tablas correspondientes son:
Tabla Eespecialidad Clave Especialidad S01 Sistemas Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
Definicin formal: Un esquema de relaciones R est en 5FN con respecto a un conjunto D de dependencias funcionales, de valores mltiples y de producto, si para todas las dependencias de productos en D se cumple por lo menos una de estas condiciones:
* (R1, R2, R3, ... Rn) es una dependencia de producto trivial. * Toda Ri es una superllave de R.
La quinta forma normal se refiere a dependencias que son extraas. Tiene que ver con tablas que pueden dividirse en subtablas, pero que no pueden reconstruirse.
2. lgebra relacional.
El Algebra relacional es un lenguaje de consulta procedural. Consta de un conjunto de operaciones que toman como entrada una o dos relaciones y producen como resultado una nueva relacin, por lo tanto, es Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
33 posible anidar y combinar operadores. Hay ocho operadores en el lgebra relacional que construyen relaciones y manipulan datos, estos son: 1. Seleccin 2. Proyeccin 3. Producto 4. Unin 5. Interseccin 6. Diferencia 7. JOIN 8. Divisin Tabla 2-1 - Operadores del Algebra relacional
Las operaciones de proyeccin, producto, unin, diferencia, y seleccin son llamadas primitivas, puesto que las otras tres se pueden definir en trminos de estas.
Seleccin Crea una nueva relacin a partir de otra, pero incluyendo slo algunas de las tuplas a partir de un criterio dado. El criterio se basa en restricciones sobre los atributos de la relacin R y no pueden incluirse otras relaciones en dicho criterio que no esten en R A3>16 (R) , A3>16 and A3 < 45 (R), nombre='Carlos' and edad=45 (R) title year length filmType studioName Star Wars 1977 124 color Fox Mighty Ducks 1991 104 color Disney Wayne's World 1992 95 color Paramount Movie Ejemplos: length>=100 (Movie) title year length filmType studioName Star Wars 1977 124 color Fox Mighty Ducks 1991 104 color Disney length>=100 and studioName='Fox' (Movie) Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
34 title year length filmType studioName Star Wars 1977 124 color Fox
title,studioName( length>=100 (Movie)) title studioName Star Wars Fox Mighty Ducks Disney
Proyeccin Crea una nueva relacin a partir de otra, pero incluyendo slo algunas de las columnas A1,A3,A6 (R)
title year length filmType studioName Star Wars 1977 124 color Fox Mighty Ducks 1991 104 color Disney Wayne's World 1992 95 color Paramount Movie Ejemplo: title,year,length(Movie) title year length Star Wars 1977 124 Mighty Ducks 1991 104 Wayne's World 1992 95 filmType(Movie) filmType color
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
35 * Seleccionar ( ) Por medio de esta operacin se posibilita la seleccin de un subconjunto de tuplas de una relacin que corresponden a una condicin (columna OPERADOR valor)determinada. El grado (total de columnas de la Relacin), se conserva.
Formato de Uso: (condicin) (RELACION)
Esta operacin es conmutativa, es decir: (condicin1) ( (condicin2) (R) ) = (condicin2) ( (condicin1) (R) ) Ejemplos: PERSONA Cedula Nombre Primer_Apellido Segundo_Apellido Sexo Direccin Telefono Salario 71134534 Juan Mesa Uribe M Cra 25 22-1 2567532 1,600,000 23423445 Ana Mara Betancur Bermudez F Cra 45 11-13 3433444 1,300,000 12453535 Gloria Betancur Garces F Tr. 12 43-5 2756533 1,700,000 75556743 Pedro Ochoa Pelaez M Cll.6ta 14-45 2686885 1,200,000 43533322 Patricia Angel Guzmn F Cll. 45 23-1 2674563 1,350,000 78900456 Carlos Betancur Agudelo M Cir. 5 12- 5 4445775 1,500,000 La seleccin, permite extraer todas las filas (tuplas) que cumple una condicin determinada. Esta condicin permite la utilizacin de los operadores de comparacin: =,>,<,>=, adems de los conectores lgicos "y" - "o":
a. cedula = 71134534 (PERSONA) Resultado: Cedula Nombre Primer_Apellido Segundo_Apellido Sexo Direccin Telefono Salario 71134534 Juan Mesa Uribe M Cra 25 22-1 2567532 1,600,000 b. sexo ='F' (PERSONA) Resultado: Cedula Nombre Primer_Apellido Segundo_Apellido Sexo Direccin Telefono Salario 23423445 Ana Mara Betancur Bermudez F Cra 45 11-13 3433444 1,300,000 Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
36 12453535 Gloria Betancur Garces F Tr. 12 43-5 2756533 1,700,000 c. (primer_apellido ='Betancur') y (sexo='F') (PERSONA) Resultado: Cedula Nombre Primer_Apellido Segundo_Apellido Sexo Direccin Telefono Salario 23423445 Ana Mara Betancur Bermudez F Cra 45 11-13 3433444 1,300,000 12453535 Gloria Betancur Garces F Tr. 12 43-5 2756533 1,700,000 d. c. (sexo = 'M'') o (Salario >=1,350,000) (PERSONA) Resultado: Cedula Nombre Primer_Apellido Segundo_Apellido Sexo Direccin Telefono Salario 71134534 Juan Mesa Uribe M Cra 25 22-1 2567532 1,600,000 12453535 Gloria Betancur Garces F Tr. 12 43-5 2756533 1,700,000 75556743 Pedro Ochoa Pelaez M Cll.6ta 14-45 2686885 1,200,000 43533322 Patricia Angel Guzmn F Cll. 45 23-1 2674563 1,350,000 78900456 Carlos Betancur Agudelo M Cir. 5 12- 5 4445775 1,500,000
* Proyectar ( ) Esta operacin permite seleccionar algunas columnas de una relacin. Formato de Uso: <lista de Atributos> (RELACION) Ejemplos: Se construyen con base en la Relacin anterior: PERSONA. a. cedula, nombre, primer_apellido, segundo_apellido (PERSONA) Resultado Cedula Nombre Primer_Apellido Segundo_Apellido 71134534 Juan Mesa Uribe 23423445 Ana Mara Betancur Bermudez 12453535 Gloria Betancur Garces Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
37 75556743 Pedro Ochoa Pelaez 43533322 Patricia Angel Guzmn 78900456 Carlos Betancur Agudelo b. cedula, salario (PERSONA) Resultado: Cedula Salario 71134534 1,600,000 23423445 1,300,000 12453535 1,700,000 75556743 1,200,000 43533322 1,350,000 78900456 1,500,000 La operacin SELECCIN combinada con la operacin PROYECCIN, podemos tener: c. cedula, nombre, salario ( (sexo = 'M'') o (Salario >=1,350,000) (PERSONA) ) Resultado: Cedula Nombre Salario 71134534 Juan 1,600,000 12453535 Gloria 1,700,000 75556743 Pedro 1,200,000 43533322 Patricia 1,350,000 78900456 Carlos 1,500,000 EL RESULTADO DE LAS OPERACIONES PUEDEN SER LLEVADOS A RELACIONES TEMPORALES DE LA SIGUIENTE FORMA: REL_TEMP cedula, nombre, salario ( (sexo = 'M'') o (Salario >=1,350,000) (PERSONA) ) Resultado: REL_TEMP Cedula Nombre Salario 71134534 Juan 1,600,000 12453535 Gloria 1,700,000 75556743 Pedro 1,200,000 43533322 Patricia 1,350,000 78900456 Carlos 1,500,000
Unin R S, la unin de R y S es el conjunto de elementos que estn en R o S o ambos. Un elemento solo aparece una sola vez. Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
38 Interseccin R S, el conjunto de elementos que aparecen en ambos R y S
Diferencia R - S, la diferencia de R y S, el conjunto de elementos que estan en R pero no en S. Es importante resaltar que R - S es diferente a S - R. Divisin R / S, la divisin de una relacin entre otra, debe cumplirse que para toda tupla en R exista su correspondiente en S. Restricciones: 1. R y S deben tener esquemas idnticos. 2. El orden de las columnas debe ser el mismo Ejemplos: name address gender birthdate Carrie Fisher 123 Maple St. F 9/9/99 Mark Hamill 456 Oak Rd. M 8/8/88
name address gender birthdate Harrison Ford 789 Palm Dr. M 7/7/77 Carrie Fisher 123 Maple St. F 9/9/99 Unin name address gender birthdate Harrison Ford 789 Palm Dr. M 7/7/77 Mark Hamill 456 Oak Rd. M 8/8/88 Carrie Fisher 123 Maple St. F 9/9/99 Interseccin name address gender birthdate Carrie Fisher 123 Maple St. F 9/9/99 Resta name address gender birthdate Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
39 Mark Hamill 456 Oak Rd. M 8/8/88
Producto cartesiano X Producto cruz o solo producto R X S, los esquemas de ambas relaciones se mezclan y unen. Dados A B 1 2 3 4 R B C D 2 5 6 4 7 8 9 10 11 S A R.B S.B C D 1 2 2 5 6 1 2 4 7 8 1 2 9 10 11 3 4 2 5 6 3 4 4 7 8 3 4 9 10 11 R X S
Producto natural |X| Es un producto cartesiano donde nos interesan nicamente algunas tuplas que hacen "match" en algun criterio. A R.B S.B C D 1 2 2 5 6 1 2 4 7 8 1 2 9 10 11 3 4 2 5 6 3 4 4 7 8 3 4 9 10 11 Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
40
A B C D 1 2 5 6 3 4 7 8 R |X| S
Divisin. La operacin divisin es la contraria a la operacin producto y quizs sea la ms compleja de explicar, por tanto comenzar con directamente con un ejemplo. Una determinada empresa posee una tabla de comerciales, otra tabla de productos y otra con las ventas de los comerciales. Queremos averiguar que comerciales han vendido todo tipo de producto. Lo primero que hacemos es extraer en una tabla todos los cdigos de todos los productos, a esta tabla la denominamos A. Tabla A Cdigo Producto 1035 2241 2249 5818 En una segunda tabla extraemos, de la tabla de ventas, el cdigo del producto y el comercial que lo ha vendido, lo hacemos con una proyeccin y evitamos traer valores duplicados. El resultado podra ser el siguiente: Tabla B Cdigo Comercial Cdigo Producto 10 2241 23 2518 23 1035 39 2518 37 2518 10 2249 23 2249 23 2241 Si dividimos la tabla B entre la tabla A obtendremos como resultado una tercera tabla que: Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
41 1. Los campos que contiene son aquellos de la tabla B que no existen en la tabla A. En este caso el campo Cdigo Comercial es el nico de la tabla B que no existen en la tabla A. 2. Un registro se encuentra en la tabla resultado si y slo si est asociado en tabla B con cada fila de la tabla A Tabla Resultado Cdigo Comercial 23 Por qu el resultado es 23?. El comercial 23 es el nico de la tabla B que tiene asociados todos los posibles cdigos de producto de la tabla A.
3. Vistas o subesquemas.
3.1. Privilegios de acceso. 3.2. ndices.
VISTAS LOCALES:
Qu es una vista?
Una vista es un objeto que se crea empleando la instruccin SELECT de SQL para bases de datos relacionales. Las vistas pueden ser locales o Remotas
SELECT campos FROM tablas WHERE condicion GROUP BY campos de agrupamiento ORDER BY campos de ordenamiento
Ejemplo:
SELECT id, name FROM s_region ORDER BY name
Creacin de una vista local.
Clic en el botn para crear vistas locales. Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
42
La ventana para agregar las tablas, se utiliza para aadir tablas que se van a ocupar en la instruccin SELECT SQL, en este caso estaramos seleccionando la parte del FROM. Seleccionemos s_region y luego Agregar. La tabla se agregar, luego le damos cerrar (close).
Ventana de creacin de la vista:
Agregar una tabla Ver el comando SQL Elimina r tabla Agregar una relacin Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
43 Fields: (Campos) Aqu se seleccionan los campos de la vista (SELECT campos)
Join : Relaciones entre tablas
Filter : Condicin de filtrado (WHERE condicin)
Order by : campos de ordenamiento (ORDER BY)
Group by : campos de Agrupamiento (GROUP BY)
CREACION DE VISTAS REMOTAS:
Una vista remota es una vista que se hace de otra base de datos va ODBC. Esta base de datos puede ser Access, ORACLE, SQL-SERVER, entre otros.
Crear una vista remota:
Clic en icono para crear vista remotas.
Escoger Nueva Vista (New View)
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
44
Si no a creado una conexin es necesario crear en New, si ya esta creada seleccione la conexin y luego OK.
Como crear una conexin?
Si no ha creado la conexin seleccione New
Siga estos pasos cuidadosamente:
1. Seleccione New Data Source (Nueva Fuente de Datos) y aparecer la configuracin del ODBC: Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
45
2. En el folder User DSN Presione el botn Add (Agregar)
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
46
2. Escoja de la ventana el Controlador deseado, Ejemplo: Microsoft Access Driver (*.mdb) y luego el botn Finalizar.
3. Luego aparece la Ventana de ODBC del controlador que selecciono (En este caso en de Access)
Escriba el nombre del Data Source (Fuente de datos), Luego seleccione la Base de Dato a la que hace referencia ( en el boton Select Database)
Luego de haber seleccionado la base de datos, acepte todas las ventanas que aparecieron anteriormente y detengase en la siguiente ventana:
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
47
Seleccin de la lista el Data Source que ha creado Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
48
Luego seleccione de la lista de data source el data source que usted acaba de crear. Luego presione Aceptar (OK).
Despus le aparece la primera Ventana donde escoge las conexiones, le aparecer la conexin que usted ha creado. Nota: Esta conexin que usted a creado servir para sesiones futuras.
Seleccione la conexin creada y luego Aceptar (OK)
Luego le aparecer la ventana donde usted escoge las tablas que utilizar:
Luego aparecer la ventana donde se disea la vista:
El procedimiento para crear la vista es igual a la creacin de vista Locales.
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
49
4. Lenguaje relacional estndar SQL.
4.1. Elementos. 4.2. Relaciones. 4.3. Bsquedas.
Proyeccin ( ) en SQL A1,A2,...,An (R)
SELECT A1,A2,...,An FROM R Seleccin ( ) en SQL condicin(R) SELECT * FROM R WHERE condicin
Composicin ( y ) en SQL A1,A2,...,An ( condicin(R)) SELECT A1,A2,...,An FROM R WHERE condicin
Eliminar duplicasos en SQL
SELECT DISTINCT * FROM R
Producto cartesiano () en SQL R1R2 SELECT * FROM R1,R2
4.4. Vistas.
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
50 Son una especie de tablas virtuales; es decir no existen fisicamente sino que forman mediante la seleccin y/o filtrado de los componentes de otras tablas, una vista puede ser definida en base a una lista previa. Esto significa que pueden crearse dependencia entre las vistas.
Formato de definicion de vistas DEFINE VIEW<nombre vista> [(identif_campo1, identif_campo2,...)] AS<operacin de consulta>
Ejemplo: se desea crear una vista para obtener los nombres y domicilios de los clientes adultos es deseable el establecimiento de las cabeceras nombre del cliente, domicilio del cliente.
DEFINE VIEW cliente_adulto (nombre del cliente, domicilio del cliente) As (select nombre, domicilio From clientes Where estado = 'adulto') Como puede verse, la especificacin de los identificadores es opcional; si estos se omiten se asumiran los nombres de los campos extraidos en la consulta.
La operacin de consulta permite todos los formatos validos de consulta en SQL con execepcin del groop by. Cuando una vista es definida en base a otra, se se dice que es dependiente de esta por lo tanto, se suprimira automaticamente la vista dependiente si se suprime la vista original.
Eliminacin de vistas. Drop view <nombre tabla> Ejemplo: suponga que se desea crear una vista dependiente de la vista cliente adulto que contenga solamente a los clientes que viven sobre forjadores. Se desean los mismos campos y la vista sera llamada cliente_adulto_forjadores. Define view cliente_adulto_forjadores AS (select * From cliente_adulto Where domicilio_del_cliente like 'forjadores%') ~ ~ drop view cliente_adulto (se eliminara tambien la vista cliente_adulto_forjadores, puesto que es dependiente de cliente_adulto.) La eliminacin de una tabla provoca tambien la eliminacin automatica de todas las listas que se hayan definido haciendo referencia a ella. UNIDAD III. Manipulacin de bases de datos.
1. Creacin de una base de datos. 1.1. Comandos bsicos. Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
51 1.2. Apertura de una base de datos. 1.3. Incorporacin de nuevos registros. 1.4. Cierre de una base de datos.
CREACION DE LA BASE DE DATOS
1. Ubiquese en el folder Data y luego en Databases y presione el botn New
La ventana del Database Designer aparecer :
Puede ocupar el toolbar Database Designer para el control de la Base de Datos.
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
52
Descripcin de los botones del toolbar:
Crear una nueva tabla.
Agregar una tabla existente
Eliminar una tabla seleccionada
Modificar una tabla seleccionada
Creacin de Vistas remotas
Creacin de Vistas locales
Editar Procedimientos almacenados en la Base de Datos
Creacin de Conexiones con vistas remotas
Examinar el contenido la tabla (BROWSE)
Crear una nueva tabla:
1. Click en el boton de Nueva tabla, aparecera la ventana New Table
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
53 4. Se selecciona New Table, luego aparece la ventana de guardar el archivo, seleccione el directorio y el nombre de la tabla y luego presione el boton de salvar.
La ventana de Table designer aparecera en pantalla:
Esta es la parte mas importante de la tabla, es aqu donde se define la estructura de datos que contendr dicha tabla. El primer paso es definir los campos, tipos, tamao, Formato y Reglas de validacin en el foder de Fields.
Definici n de campos Tipos de Datos Definici n del Formato de Entrada Definici n de reglas de validaci n de los campos Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
54
a. Definicin de campos:
Igual que en las versiones anteriores, la definicin de campos es igual. Se introduce el nombre del campo (name) el tipo de datos que soportar (Type) y el tamao.
b. Definicin del Display
Format : Es el formato de salida del campo, ejemplo si fuera nmerico 9,999.99 o si fuera carcter !!!!!!!!!!!!, para que solo acepte mayusculas
Input mask : Igual que el Format, lo nico que es para la entrada de datos.
Captin : Descripcin mas precisa del campo, es de utilidad al disear los Formularios.
c. Definicin de reglas de validacin a nivel de campo
La validacin son triggers o eventos que se ejecutan a nivel de campo. Ejemplo: una validacin de un campo que solo acepte nmeros positivos. (id > 0)
Rule : Es la regla de validacin, ejemplo: id > 0, si queremos que acepte valores positivos.
Message: Es el mensaje personalizado que queremos que aparezca en pantalla a la hora de violarse la regla de validacin del campo. Ejemplo : Solo se aceptan nmeros positivos (nota: el texto debe escribirse entre comillas).
Default Value : Valor por defecto del campo. (nota: hay que respetar el tipo de dato del Campo)
Luego de hacer la deficion de los campos, pasamos a la definicion de Indices de la tabla, que ser muy importante a la hora de crear las relaciones entre las tablas.
Nombre del ndice Tipo de Indice Nombre del o los campos que componen el indice Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
55
a. Nombre del Indice (name)
Introducir el Nombre del archivo ndice. Es conocido tambin como TAG.
Nombre de los campos que conforman la llave primaria: Ejemplo : id, o si son varios campos : id + linea
Nota: si los campos no son del mismo hay que forzarlos al tipo de dato deseado, ejemplo: si id es carcter y linea, entoces el nombre de la expresion sera:
Id + STR(linea)
STR() convierte de nmero a carcter y VAL() convierte de carcter a nmerico.
Despus de detallar los ndices, se define los eventos de La validacin a nivel de registro y los eventos que se ejecuten a la hora de Insertar un registro, de actualizar o borrar.
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
56
2.Consultas a una base de datos. 2.1. Estructura de una consulta. 2.2. Comandos de consulta bsicos.
Consultas a la BD usando SELECT-SQL
SELECT - SQL usando dos o mas tablas:
Sintaxis :
SELECT alias1.campo1 ,alias2.campo2 ,alias3.campo3 FROM tabla1 alias1 ,tabla2 alias2 ,tabla3 alias3 WHERE alias1.campo1 = alias2.campo2 alias1.campo2 = alias2.campo3
Ejemplo :
Un ejemplo sencillo: si queremos listar el nombre del empleado, el id del departamento, y el nombre del departamento al que pertenece el empleado la query sera:
SELECT A.nombre AS empleado ,A.dept_id ,B.nombre AS depto FROM s_emp A ,s_dept B WHERE A.id = B.region_id
Ejercicios :
Seleccionar el No. depto, apellido, salario y cargo para los empleados que ganen mas de 100 y el departamento este en 41, 10 y 50
select dept_id ,nombre ,salario ,cargo from s_emp where salario > 100 and dept_id IN (41,10,50) Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
57
seleccionar el apellido, del empleado, id del depto, y el nombre del depto.
select a.nombre AS empleado ,b.id ,b.nombre AS depto from s_emp a ,s_dept b where a.id = b.dept_id
Seleccionar el apellido del empleado, no del depto, el nombre deldepto para los depto que esten entre 20 y 50 sin incluirlos.
select a.nombre AS empleado, b.id, b.nombre AS depto from s_emp a, s_dept b where a.id = b.dept_id and b.id > 20 and b.id < 50
seleccionar el nombre del empleado no. del depto, nombre del depto, para los deptos que comiencen con 4 y ordenados el numero de depto y nombre del empleado desc
select a.nombre AS empleado, b.id, b.nombre AS depto from s_emp a, s_dept b where a.id=b.dept_id and ALLTRIM(STR(b.id)) like '4%' order by a.nombre asc, b.id
Seleccionar el nombre del cliente para aquellos empleados que el no del depto sean 30, 40, 41, 42 y el ( salario sea mayor que 1000 o el depto sea 50 )
select a.nombre AS cliente, b.nombre AS empleado, b.salario, b.id, b.dept_id from s_customer a, s_emp b where a.emp_id=b.id and b.dept_id IN (30,40,41,42) and (b.salario > 1000 or b.dept_id='50')
Otra soluccion:
select a.nombre from s_customer a where a.emp_id IN (Select id Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
58 from s_emp where dept_id in (30, 40,41,42) and (salario > 1000 or dept_id=50 )
Seleccionar el nombre del cliente, nombre de region y el salario para todos los empleados que el salario sean mayor que 100
select a.nombre AS empleado, b.nombre AS depto, a.salario from s_emp a, s_dept b where a.dept_id=b.id and a.salario > 100
Funciones de grupos
salarios minimos y maximos de los empleados
select max(salario) sal_max, min(salario) sal_min from s_emp
Suma, maximo, minimo salario por Departamento
select dept_id, sum(salario), max(salario), min(salario) from s_emp group by dept_id
*---
select dept_id, count(dept_id) from s_emp group by dept_id having dept_id > 20
*---
select dept_id, sum(salario) from s_emp group by dept_id having sum(salario) between 2000 and 4000
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
59
*---
select avg(salario), min(salario), max(salario), sum(salario) from s_emp where UPPER(title) like 'SALES%'
*---
select count(nombre), dept_id from s_emp where dept_id=31 group by dept_id
SELECT COUNT(ID), DEPT_ID FROM S_EMP GROUP BY DEPT_ID
SELECT COUNT(ID), CREDIT_RATING FROM S_CUSTOMER GROUP BY CREDIT_RATING
*----
SELECT SUM(SALARIO), CARGO FROM S_EMP WHERE upper(TITLE) NOT LIKE 'VP%' GROUP BY CARGO
*----
SELECT SUM(SALARIO), TITLE FROM S_EMP GROUP BY TITLE
*----
SELECT TITLE, SUM(SALARIO) FROM S_EMP WHERE UPPER(TITLE) NOT LIKE 'VP%' GROUP BY TITLE HAVING SUM(SALARIO)> 5000
*----
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
60
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
61 Programacin Multiusuario:
En la programacin multiusuario hay que tener muy en cuenta el control de la zona critica. En Visual Foxpro, esto se puede hacer Automaticamente o Manualmente.
En la forma Automtica, Fox controla la zona critica con los enllavamientos automticos, lo que nos ahorra tiempo ya que no tenemos que preocuparnos por ello. ( esta es la forma que utilizaremos )
Qu se requiere?
Se requiere algunas definir variables de ambiente en el programa principal de nuestro Sistema:
* Definicion de para Ambiente Red
SET EXCLUSIVE OFF Abre las tablas en modo compartido SET MULTILOCKS ON Para que se puedan bloquear mas de un registro SET DELETE ON Para que los registros marcados no se vizualicen SET REFRESH TO 5 Refrescamiento cada 5 segundos en el Browse
SET REPROCESS TO AUTOMATIC Si un registro esta bloqueado o enllavado Fox intenta acualizarlo hasta que uno presione esc
*SET REPROCESS TO 5 SECONDS Si despues de 5 segundos no puede actualizarlo Fox manda un error.
* Otro Ambiente SET ECHO OFF SET TALK OFF SET CENTURY ON SET CLOCK STATUS SET DATE BRIT SET PATH TO menu,forms,bmp,prg,data SET SAFETY OFF SET PROCEDURE TO .\prg\utility
Usando el Buffer con las tablas.
Buffer Optimista: Dos usuarios pueden estar modificando el registro sin ningn problema.
Pesimista : Solo un usuario puede estar modificando el registro.
Cmo fijar el Buffer?
* Set buffering mode and store logical result
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
IF lSuccess = .T. =MESSAGEBOX("Operation successful!",0,"Operation Status") ELSE =MESSAGEBOX("Operation NOT successful!",0,"Operation Status") ENDIF
Con el buffer activado podemos hacer uso de los comandos :
TABLEREVERT(.T.) TABLEUPDATE(.T.)
TABLEUPDATE(.T.)
Graba los cambios hechos en la tabla.
SET MULTILOCKS ON && Must be on for table buffering = CURSORSETPROP('Buffering', 5, 'employee' ) && Enable table buffering INSERT INTO employee (cLastName) VALUES ('Smith')
CLEAR ? 'Original cLastName value: ' ?? cLastName && Displays current cLastName value (Smith)
REPLACE cLastName WITH 'Jones' ? 'New cLastName value: ' ?? cLastName && Displays new cLastName value (Jones)
= TABLEUPDATE(.T.) && Commits changes
? 'Updated cLastName value: ' ?? cLastName && Displays current cLastName value (Jones)
TABLEREVERT(.t.)
Cancela los cambios hechos a la tabla
USE Customer && Open customer table = CURSORSETPROP('Buffering', 5, 'customer') && Enable table buffering Tipos de Buffer 1 No utilizar el buffer 2 Pessimistic row buffering on. 3 Optimistic row buffering on. 4 Pessimistic table buffering on. 5 Optimistic table buffering on. Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
63
CLEAR ? 'Original cust_id value: ' ?? cust_id && Displays current cust_id value REPLACE cust_id WITH '***' && Changes field contents ? 'New cust_id value: ' ?? cust_id && Displays new cust_id value
= TABLEREVERT(.T.) && Discard all table changes ? 'Reverted cust_id value: ' ?? cust_id && Displays reverted cust_id value
3. Modificaciones a una base de datos. 3.1 Modificaciones en la estructura. 3.2. Modificaciones en los registros.
MODIFY STRUCTURE Modifica la estructura de una base de datos
DISPLAY STRUCTURE Muestra la estructura de una base de datos
4. Ordenacin de la informacin. 4.1. Ordenacin fsica. 4.2. Ordenacin por ndices.
TI POS DE I NDI CES En una tabla dependiente se dispone de cuatro tipos de ndice, mientras que en una tabla libre slo los dos que se enumeran en primer lugar.
Normal : Es el ndice clsico. Permite cualquier valor en la clave, est repetido o no. Es el ms utilizado. Unico : Semejante al normal. Sin embargo, en el caso de que haya ms de una clave repetida, slo se tiene en cuenta la que se entrodujo en primer lugar. Tiene poca utilidad y es un tipo de ndice que prcticamente no se usa. Principal : Impide que existan claves repetidas provocndose un error en Visual Fox Pro (slo puede haber un ndice principal). Candidato : Es exactamente igual que el anterior. Su sentido reside en que como slo puede haber un ndice principal, todos los dems deben ser candidatos, a serlo.
Comando INDEX ON Crea un ndice en un archivo de ndices compuestos o bien un archivo de ndice simple. SINTAXIS Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
64 INDEX ON campo TO nombre de archivo IDX | TAG etiqueta [OF archivo CDX][FOR expresin lgica] [COMPACT][ASCENDING | DESCENDING][CANDIDATE |UNIQUE ][ADDITIVE] EJEMPLO: USE persona INDEX ON nombre TO persona.idx El comando INDEX ON crea una archivo ndice llamado persona.idx, el cual tendr el ndice de el archivo persona. Una mejor forma de crear un ndice y en el cual Fox trabaja a una mejor capacidad es creando un ndice compuesto. INDEX ON nombre TAG persona
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
65
UNIDAD IV. Caractersticas avanzadas de las bases de datos.
1. Manejo de variables y funciones. 1.1.Creacin y eliminacin de variables. 1.2.Utilizacin de funciones interconstruidas.
Variable.- Espacio asignado de memoria para maanipular un dato de cualquier tipo.
Las variables se pueden definir como: publicas, privadas y locales ejemplo: PUBLIC nombre, apellidos PRIVATE sueldo Los operadores se utilizan en tiempo de ejecucin para unir dos o ms elementos del lenguaje. Operadores aritmticos ( ) Agrupa subexpresiones **, ^ Exponenciacin *, / Multiplicacin y divisin % Mdulo (resto de la divisin) +, - Suma y resta Operadores relacionales < Menor que > Mayor que <= Menor o igual que >= Mayor o igual que = igual a <>, #, =Distinto de
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
66 Average Realiza la media de un campo o campos correspondientes a una serie de registros, determinados por la clusula FOR o WHILE que se incluya. Se puede mandar el resultado a una variable o varias dependiendo de los campos promediados. Sum Equivale al anterior pero realiza una suma Count() En este caso, esta instruccin cuenta registros dependiendo del ndice y del estado de eliminacin. Reccount() Si queremos obviar el estado de los registros, podemos utilizarlo. Por lo dicho, contar todos los registros. No se pueden incluir clusulas FOR y WHILE. Se puede incluir el rea o el alias de la tabla a contar entre parntesis.
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
67
2. Generador de reportes. 2.1 Estructura general de un reporte. 2.2 Creacin de la estructura. 2.3 Modificacin de la estructura. 2.4 Generacin del reporte.
Diseo de Reportes
Guia rpida visual:
Titulo: Aparece solo en la primera pagina Encabezado: Aparece en todas las paginas Detalle: Se especifican los campos de la tabla Sumario: Aparece en la ultima pagina Entorno de Datos Barra de Herramientas de Reportes Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
68
Los informes muestran datos y resumen datos en un formulario impreso o en pantalla. Los dos componentes principales de los informes son los datos y el formato. La fuente de datos del informe puede ser una tabla de base de dato, una consulta o una vista.
El primer paso para disear un informe es determinar los datos que se van a mostrar, y el segundo paso es determinar cul va a ser el mejor formato para mostrar ese informe. Puede crear listados que se basen en una nica tabla o en informes complejos.
El Generador de Informes es una herramienta flexible y de fcil uso para la creacin, diseo y modificacin de informes.
Pasos para Creacin de Informes :
I. Seleccin de los datos
Esta es la parte ms importante del informe, la seleccin de datos, hay que saber qu es lo que quiere el usuario o que el usuario muestre el diseo del informe que desea, para comenzar a trabajar.
Los datos pueden ser simples (utilizando una sola tabla), como listados de regiones, listado de departamentos, entre otros; o pueden ser algo mas complejos (utilizando mas de una tabla) Ejemplo Reportes agrupados, reportes consolidados, etc.
Los datos se pueden obtener directamente utilizando las tablas o utilizando SQL para crear cursores, esta ltima es la ms recomendada para una aplicacin multiusuario.
Existen varios tipos de informes entre ellos :
- Listados (Ej. Listados de regiones)
Muestra:
------------------------------- id name ------------------------------- 01 Region 1 02 Region 2 --------------------------------
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
69 - Grupos con detalles ( o maestro detalles)
------------------------------- Region Departamento ------------------------------- Region 1 Departamento a Departamento b Region 2 Departamento x Departamento y -------------------------------- - Matriciales o consolidados
-------------------------------------------- Rating Region Excellent Good Poor -------------------------------------------- Region 1 1 2 0 Region 2 3 0 1 -------------------------------------------- Totales 4 2 1 --------------------------------------------
Creacin de Informes usando el entorno de datos:
1. En el administrador de proyectos, seleccione la ficha Documentos. 2. Seleccione Informes 3. Pulse el botn nuevo 4. Pulse el botn nuevo informe.
Aparece el generador de informes y al barra de herramientas Controles de informes.
5. Seleccione Entorno de datos y seleccione la tabla
6. Arrastre los campos a utilizar del entorno de datos en el informe en la parte de detalle
7. Introduzca los encabezados del reporte
8. Puede ver como queda el informe con el botn de presentacin preliminar:
Arrastre el campo a la parte de detalle Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
70
Presentacin Preliminar :
Men de Reportes
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
71 Titulo/Sumario (Title/Summary):
Muestra el rea del Titulo y el Sumario del Informe
Titulo : Aparece solo en la primera pagina del Reporte Sumario : Aparece solo en la ultima pagina del Reporte
Agrupamiento de datos (Data Grouping)
El agrupamiento de datos se utiliza para informes maestro detalle.
Variables:
Las variables son tiles para hacer clculos con los datos del reporte y luego presentarlas en el mismo reporte.
Especifique el campo por el cual esta agrupando Nombre de la variable Tipo de Calculo Campo a calcular Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
72
Propiedades de los campos
Cada campo en el Informe posee propiedades :
Creacin de Informes usando Cursores SQL:
1. Crear el cursor con el comando SELECT..... FROM .....WHERE.... Doble clic en el campo para mostrar las propiedades Si deseam os hacer clculos con el campo Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
73
2. Crear el Informe manualmente, con los nombres de campos del cursor.
3. Correr el Reporte.
Ejemplo:
* Se define una ventana Personalizada
DEFINE WINDOW w_Output ; FROM 0,0 TO 25,70 ; TITLE 'Informes - INATEC' ; CLOSE FLOAT GROW ZOOM SYSTEM
USE IN .\data\s_region IN 0
SELECT id, name FROM s_region INTO CURSOR c_region
* Si lo queremos por pantalla
REPORT FORM .\report\pp_detalles ; PREVIEW WINDOWS w_output ; NOEJECT NOCONSOLE
* Por Impresora
REPORT FORM .\report\pp_detalles ; TO PRINTER PROMPT ; NOEJECT NOCONSOLE
* Hacia un Archivo
REPORT FORM .\report\pp_detalles ; TO FILE PUTFILE() ; ASCII
* Cerrar el cursor
USE IN c_region
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
74
3. Generador de pantallas.
3.1 Estructura general de una pantalla 3.2 Creacin de una pantalla. 3.3 Modificacin de una pantalla. 3.2. Uso de una pantalla.
Diseo de Formularios
Gua rpida visual:
A la hora de disear formularios usted tiene que estar familiarizado con las ventanas siguientes:
Generador de Formularios y Controles ms comunes Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
75
Propiedades de los objetos Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
76 Cmo crear un nuevo Formulario:
1. En el Administrador de Proyectos, pulse documentos 2. Pulse Formulario para seleccionar la categora 3. Pulse botn nuevo
Aparece en cuadro de dilogo Nuevo Formulario. Este cuadro refleja la posibilidad de utilizar el Asistente para formularios o construir uno nuevo.
Sugerencia: utilice el Asistente para formularios para desarrollar formularios simples de introduccin de datos. El Asistente para formularios hace una serie de preguntas para guiarle durante el proceso de creacin del formulario. El Asistente permite la creacin de un formulario para nica tabla o para tablas uno a muchos.
4. Pulse el botn Nuevo formulario
Aparecer el Generador de formularios.
El Generador de formularios visualiza Form1 en la ventana DocForm1, indicando que ste es el primer formulario que tiene abierto en este proyecto. Podr cambiar de nombre Docform1 por el nombre que indique al guardar el formulario. Form1 es un rea de trabajo en blanco.
Tambin aparecer la barra de herramientas con los controles para la creacin de formularios.
Agregacin de Objetos a su formulario.
Una vez que tenga en pantalla una ventana de formulario en blanco, Form1, inserte objetos para crear el su formulario.
MS Visual Foxpro 5.0 ofrece dos tipos de objetos que se pueden insertar en un nuevo formulario: objetos contenedores y objetos de control. Podemos accesar a estos objetos desde la barra de herramientas Controles de formulario o desde el Administrador de proyectos.
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
77 Objetos contenedores: Un objeto contenedor es un objeto primario que contiene otros objetos subordinados. Por ejemplo, un formulario es el objeto contenedor que es propietario de un botn de comando visualizado en el formulario. Otros objetos contenedores pueden incluir marcos de pgina, cuadrculas y grupos de botones de comando.
Objetos de control: Un objeto de control permite al usuario seleccionar opciones, introducir datos y escoger acciones. En un formulario, estos objetos pueden incluir casillas de verificacin, botones de comando, cuadros de texto y cuadrculas.
El objeto FORM
Propiedades mas comunes de la Forma :
Nombre Tipo de dato Descripcin Caption Carcter Titulo de la ventana o Forma Autocenter Booleano Para central la Forma ShowTips Booleano Para que se muestren los Tooltips Closable Booleano Visualiza el boton de Cerrar la Ventana (X) MaxButton Booleano Visualiza el boton de Maximizar la Ventana MinButton Booleano Visualiza el boton de Minimizar la Ventana ControlBox Booleano Visualiza el Menu de Control de la Ventana.
Eventos o Mtodos ms comunes de la Forma
Nombre Descripcin Init Se dispara a la hora que se inicializa todos los objetos de la forma. Load Se dispara antes que se inicialicen los objetos de la forma (ante que Init) Destroy Se dispara al cerrar la forma Unload Se dispara despues de Destroy.
Utilizacin de mltiples pginas en un formulario simple.
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
78 En VFP, un formulario simple puede contener mltiples pginas que visualicen diferentes conjuntos de datos y controles. En la parte superior del formulario, una ficha representa cada pgina. Podemos pulsar en una ficha para mostrar el contenido de la pgina.
Cmo crear un formulario de varias pginas.
1. Pulse el botn Marco de pgina (page frame) en la barra de herramientas Controles de formulario. 2. Site el cursor en la esquina superior izquierda de form1. ( El cursor cambia su forma a cruceta) 3. Pulse en la esquina superior izquierda del formulario y arrastre el cursor hacia la esquina inferior derecha para crear un marco de pgina que cubra la mayor parte de la ventana form1. Deje un espacio de unos dos centmetros en la parte inferior del formulario para los botones de comando que se agregarn despus en esta leccin.
Propiedades mas comunes de la pginas :
Nombre Tipo de dato Descripcin Pagecount Nmerico Fija el nmero de Folders o pginas (Page1, page2...) TabStyle Nmerico Justificacion de las pginas. Visible Booleano Si el control es visible al usuario.
Agregacin de cuadros de texto y cuadros de edicin:
Cmo agregar objetos en la pagina 1 (page1):
1. Con el botn derecho del ratn, pulse sobre Page1 en el formulario. Aparece un men instantaneo 2. Seleccione la ventana propiedades Aparece el cuadro de dilogo propiedadades, donde muestra Page1 en el cuadro de texto.
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
79
3. Pulse el botn Flecha hacia abajo. 4. Seleccione Page1 en el cuadro de texto Objeto.
Sugerencia: Cada vez que inserte un objeto en un formulario, marco de pgina o cuadricula, compruebe en la ventana Propiedades que ha colocado el objeto en el contenedor apropiado.
Como Agregar de cuadros de texto directamente de una tabla:
1. Seleccione Ver el men Generador de Formularios 2. Seleccione Entorno de Datos (Data Environment) 3. Seleccione Entorno de datos (Data Environment) en el men de Visual Foxpro y luego Agregar.
Sugerencia: Tambin puede abrir la ventana Agregar tabla o vista con el botn derecho del ratn. Utilizando el botn derecho del ratn, pulse en cualquier parte del Entorno de datos y luego seleccione Agregar. Para obtener la ventana de Entorno de Datos o la ventana de propiedades, utilice el botn derecho del ratn pulsando fuera del marco de pgina, pero dentro del formulario. Aparece un men instantneo desde el que puede hacer la seleccin.
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
80 Aparece la ventana Agregar tabla o vista.
4. Confirme si es la Base de Dato deseada. 5. Pulse dos veces en la tabla a utilizar. 6. Seleccione el campo deseado en la lista de campos de la tabla, arrstrelo hacia el formulario y djelo en cualquier parte del mismo. En el formulario aparecer el cuadro de texto.text1
7. Pulse y arrastre el cuadro de texto text1 a la posicin que desee.
Sugerencia: Para desplazar un control de texto, pulse sobre l y arrastrelo hacia otro lugar en le formulario. Para modificar el tamao del cuadro de texto, pulse sobre l y luego arrastre algunos de los mrgenes.
Propiedades mas comunes del Text (control de texto):
Nombre Tipo de dato Descripcin Controlsource Segn la variable Es la variable o nombre del campo al cual hace referencia. Value Segn la variable Contenido de la variable o campo referenciado en controlsource Visible Booleano Si el control es visible al usuario. Enabled Booleano Si el control esta habilitado o no.
Control Botn de Comando:
Propiedades mas comunes del Botn :
Nombre Tipo de dato Descripcin Caption Carcter Etiqueta del comando (Ej. Click Aqu) Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
81 Visible Booleano Si el control es visible al usuario. Enabled Booleano Si el control esta habilitado o no.
Eventos o Mtodos ms comunes del control
Nombre Descripcin Init Se dispara a la hora que se inicializa el objeto Click Se dispara al dar click en el objeto Setfocus El cursor se va al objeto. Lostfocus Se dispara cuando el objeto pierde el cursor. Refresh Refresca el objeto.
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
82 Cmo asociar un procedimiento a un botn:
1. Haga doble click en el boton. Aparece una ventana de cdigo:
Control Botn de Cuadro de Edicin:
Se utiliza para los campos memo.
Propiedades mas comunes del control de edicin
Nombre Tipo de dato Descripcin Controlsource Segn la variable Es la variable o nombre del campo al cual hace referencia. Value Segn la variable Contenido de la variable o campo referenciado en controlsource Visible Booleano Si el control es visible al usuario. Enabled Booleano Si el control esta habilitado o no.
Eventos o Mtodos ms comunes del control de edicin
Nombre Descripcin Escoga el evento deseado. (En este caso Click = Se ejecuta al Presionar el Boton) Introduzca el cdigo deseado. Asegurese que esta ubicado en el control deseado Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
83 Init Se dispara a la hora que se inicializa el objeto Click Se dispara al dar click en el objeto Setfocus El cursor se va al objeto. Lostfocus Se dispara cuando el objeto pierde el cursor. Valid Se dispara despues de presionar Enter o Tab, se utiliza para validar. Refresh Refresca el objeto.
Control de Opciones:
Propiedades mas comunes del control de opciones
Nombre Tipo de dato Descripcin Controlsource Nmerico Es la variable o nombre del campo al cual hace referencia. Value Nmerico Contenido de la variable o campo referenciado en controlsource Visible Booleano Si el control es visible al usuario. Enabled Booleano Si el control esta habilitado o no.
Eventos o Mtodos ms comunes del control de opciones
Nombre Descripcin InteractiveChange Se dispara cuando modificamos el campo Init Se dispara a la hora que se inicializa el objeto Click Se dispara al dar click en el objeto Setfocus El cursor se va al objeto. Lostfocus Se dispara cuando el objeto pierde el cursor. Valid Se dispara despues de presionar Enter o Tab, se utiliza para validar. Refresh Refresca el objeto.
Control Check:
Propiedades mas comunes del control Check
Nombre Tipo de dato Descripcin Controlsource Booleano Es la variable o nombre del campo al cual hace referencia. Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
84 Value Booleano Contenido de la variable o campo referenciado en controlsource Visible Booleano Si el control es visible al usuario. Enabled Booleano Si el control esta habilitado o no. Eventos o Mtodos ms comunes del control Check
Nombre Descripcin InteractiveChange Se dispara cuando modificamos el campo Init Se dispara a la hora que se inicializa el objeto Click Se dispara al dar click en el objeto Setfocus El cursor se va al objeto. Lostfocus Se dispara cuando el objeto pierde el cursor. Valid Se dispara despues de presionar Enter o Tab, se utiliza para validar. Refresh Refresca el objeto.
Control Grid:
Propiedades mas comunes del control Grid:
Nombre Tipo de dato Descripcin Recordsource Carcter Nombre de la tabla Visible Booleano Si el control es visible al usuario. Enabled Booleano Si el control esta habilitado o no. ColumnCount Nmerico Numero de columnas del Grid Deletemark Booleano Permite registro para borrar ( Aparece en la parte izquierda del Grid)
Eventos o Mtodos ms comunes del control Grid:
Nombre Descripcin Init Se dispara a la hora que se inicializa el objeto Click Se dispara al dar click en el objeto Setfocus El cursor se va al objeto. Lostfocus Se dispara cuando el objeto pierde el cursor. Refresh Refresca el objeto. Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
85
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
86 Control Listas:
Propiedades mas comunes del control Listas
Nombre Tipo de dato Descripcin Controlsource Segn la variable Variable a que hace referencia (campo donde se almacena el valor de la lista) RowSource Carcter Tabla o query de los elementos de la lista RowSourceType Numrico Tipo de la Fuente (Si es tabla o query.) Visible Booleano Si el control es visible al usuario. Enabled Booleano Si el control esta habilitado o no. BoundColumn Numrico Valor que retorna la lista (Nmero de la columna del RowSource ) BoundTo Booleano Especifica si el valor de la lista esta determinado por los valores o por la propiedad ListIndex
Eventos o Mtodos ms comunes del control Listas
Nombre Descripcin InteractiveChange Se dispara cuando modificamos el campo Init Se dispara a la hora que se inicializa el objeto Click Se dispara al dar click en el objeto Setfocus El cursor se va al objeto. Lostfocus Se dispara cuando el objeto pierde el cursor. Valid Se dispara despues de presionar Enter o Tab, se utiliza para validar. Refresh Refresca el objeto.
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
87
4. Creacin y manejo de bases de datos mltiples.
4.1 Conexin entre bases de datos sencillas. 4.2 Manejo de bases de datos mltiples.
RELACIONES ENTRE TABLAS:
Las relaciones mas comunes entre tablas se definen :
De uno a uno : Ejemplo de una llave primaria a otra llave primaria De uno a muchos : Ejemplo de una llave primaria a una Regular o Fornea.
Las relaciones entre tablas se crean arrastrando la llave de la tabla a la llave de otra tabla.
La figura muestra una relacin entre las tablas regin y departamento, la relacin se leera as : Una regin tiene muchos departamentos.
Generacin de integridad referencial
Reglas que rigen la coherencia de datos, especficamente las relaciones entre las claves principal y externa de claves de tablas distintas. Visual Foxpro Resuelve la Integridad Referencial mediante reglas a nivel de campo y a nivel de registro definidas por el usuario. El Generador de la Integridad Referencial le ayuda a definir reglas para controlar cmo se insertan actualizan o eliminan registros de tablas relacionadas. Relacin entre tablas (de uno a muchos) Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
88
Desencadenante: cdigo de evento a nivel de registro que se ejecuta despues de una insercin, una actualizacin o una eliminacin. Se ocupan para integridad entre las tablas. El establecimiento de la integridad referencial implica la creacin de un conjunto de reglas para preservar las relaciones definidas entre las tablas al introducir o eliminar registros. Si exige la integridad referencial, Visual FoxPro impedir las acciones siguientes: Agregar registros a una tabla relacionada cuando no haya ningn registro asociado en la tabla primaria. Cambiar valores de una tabla primaria cuando tales cambios supongan dejar registros hurfanos en una tabla relacionada. Eliminar registros de una tabla primaria cuando tengan registros relacionados coincidentes.
Si lo desea, puede escribir sus propios desencadenantes y procedimientos almacenados para exigir la integridad referencial. Sin embargo, el Generador de integridad referencial (IR) de Visual FoxPro permite determinar los tipos de reglas que desea exigir, las tablas a las que desea exigirlas y los eventos del sistema que harn que Visual FoxPro las compruebe. El Generador de IR trata mltiples niveles de eliminaciones y actualizaciones en cascada, y es recomendable como herramienta para asegurar la integridad referencial. Para abrir el Generador de IR 1 Abra el Diseador de bases de datos. 2 En el men Base de datos, elija Editar integridad referencial.
Al utilizar el Generador de IR para crear reglas que se van a aplicar a la base de datos, Visual FoxPro guarda el cdigo generado para exigir las reglas de integridad referencial como desencadenantes que hacen referencia a procedimientos almacenados. Para ver este cdigo puede abrir el editor de texto de procedimientos almacenados en la base de datos. Si desea informacin sobre la forma de crear desencadenantes por programa, consulte Uso de desencadenantes en el captulo 7, Trabajo con tablas.
Precaucin Cuando haga cambios en el diseo de una base de datos, como modificaciones en sus tablas o alteraciones en los ndices utilizados en una relacin persistente, debe volver a ejecutar el Generador de IR antes de utilizar de nuevo la base de datos. De esta forma se revisarn el cdigo de procedimiento almacenado y los desencadenantes utilizados para exigir la integridad referencial, de forma que reflejen el nuevo diseo. Si no vuelve a ejecutar el Generador de RI, puede que obtenga resultados inesperados, ya que no se habrn actualizado los procedimientos almacenados y los desencadenantes para ajustarlos a las modificaciones.
El Generador IR se muestra cuando: Hace doble clic en una lnea de relacin entre dos tablas del Diseador de bases de datos y elige el botn Integridad Referencial en el cuadro de dilogo Editar relacin. Elige Integridad referencial en el men contextual del Diseador de bases de datos. Elige Editar integridad referencial en el men Base de datos.
Fichas del generador Reglas para la actualizacin Especifica reglas para aplicar cuando se modifica el valor clave de la tabla primaria. Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
89 Reglas para la eliminacin Especifica las reglas que se aplican cuando se elimina un registro de la tabla primaria. Reglas para insertar Especifica las reglas que se aplican cuando se inserta un nuevo registro o cuando se actualiza un registro existente en la tabla secundaria. Integracin de la Aplicacin.
Creacin de Mens:
Gua rpida Visual:
Instruccin de men Presentacin preliminar del men Modificacin o creacin de Resultados del men Opciones del men Lista de Resultados del men (Sub men, comando, procedimiento) Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
90
Tipos de Mens:
Existen dos tipos de mens : men y Shortcut.
El Shorcut men se invoca con el botn derecho del mouse Menu desplegable a nivel de la ventana superior de Visual Foxpro. Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
91 Creacin de Mens:
La creacin de mens es un proceso que conlleva diferentes pasos. Primero, debemos definir las opciones del men y de los submens. Luego, asignar funcionalidad a las opciones de men. Finalmente, generar el programa de mens.
Puede l generador de mens de Visual Foxpro para que le ayude a construir mens rpidamente. El Generador de mens le permite definir la estructura y funcionalidad de su sistema de mens a travs de cuadros de dilogo de fcil uso y de listas desplegables que puede utilizar para crear y modificar su sitema de mens.
Definicin de las opciones de men.
Los mens presentan su aspecto con una lista de opciones para iniciar una actividad. La mayora de los elementos de men muestran submens u opciones adicionales cuando el usuario selecciona uno de estos elementos. Antes de generar un men para una aplicacin, tendr que determinar que selecciones tendr disponibles el usuario final y qu opciones de mens pertenecen a otras opciones de mens (sub menus).
Cmo crear un nuevo men
1. Pulse la ficha de otros en el Administrador de proyectos.
Aparece la pgina otros con las categoras de archivo de Mens, Texto y Otros.
2. Seleccione mens en la lista de categoras
3. Pulse el botn nuevo y escoja si es Menu o un Shortcut
4. Introduzca las opciones del menu y luego el resultado del men ( submenu, comando o procedimiento)
5. A la derecha del resultado se encuentra la opcin crear o modificar segn el caso. ( crea o modificar los resultados de la opcin del menu).
Tipos de Resultados :
Submenu : Si el men contiene un submenu Comando : Si la opcin de ese men invoca un comando (Ejemplo: DO FORM Regiones, para llamar un formulario; CLEAR EVENT, por lo general va en la opcin Salir) Procedimiento : Si la opcin de ese men invoca varias lneas de comandos ( un procedimiento).
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
92
Opciones de Men:
En las opciones del men se especifican:
- Teclas de Acceso directo - Mensajes del men - Condicin de habilita/No habilitar
Generacin del men :
1. En el men escoja la opcin Men. 2. Se le pregunta si desea grabar los cambios ( responda que si) 3. Luego se le pide que proporcione el archivo de salida del menu ( escoja la ruta y el nombre del archivo, por lo general son extension MPR) y luego seleccione generar. 4. Si existe ya el archivo se le pide si desea re-escribirlo ( seleccione que si)
Como invocar al men creado:
Al generar el men se crea un archivo que por lo general tiene extensin MPR que contiene el cdigo para desplegar el men.
La instruccin sera:
DO ruta y nombre del archivo MPR
Ejemplo : DO menu.MPR
Para volver a re establecer el men por default de Visual Foxpro utilice la instruccin: SET SYSMENU TO DEFAULT Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
93
Creacin del Ejecutable de la Aplicacin.
Primero se tiene que crear un programa de inicio, al cual se le tiene que decir que ese es el programa que se ejecutara de primero ( esto se hace haciendo clic derecho en el programa que designemos como principal y escoger la opcin main ( principal) del men de opciones)
DEFINE WINDOW w_Output ; FROM 0,0 TO 25,70 ; TITLE 'Informes - BCN' ; CLOSE FLOAT GROW ZOOM SYSTEM
* Ambiente SET SYSMENU TO SET ECHO OFF SET TALK OFF SET CENTURY ON SET CLOCK STATUS SET DATE brit SET DELETE ON SET PATH TO formenu,bmp,prg,data SET EXCLUSIVE OFF SET SAFETY OFF SET REFRESH TO 5 SET REPROCESS TO AUTOMATIC SET MULTILOCK ON Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
En el Administrador de proyectos seleccione la opcion Build, luego la opcin build Executable y luego OK.
En las opciones es recomendable seleccionar Recompile All y display Error, para recompilar todos sus programas y formularios ; y Por si hay un error mostrarlo al final de la generacin del Ejecutable.
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
95
Comandos Relacionados a BD y Tablas
1. Instrucciones de Manejo de Bases de Datos
2. Instrucciones de Manejo de Tablas Independientes
3. Instrucciones Generales de Manejo de Tablas
4. Instrucciones de Bsqueda en Tablas
5. Instrucciones de Calculo en Tablas
6. El Sistema de Almacenamiento en Buffer
7. Transacciones
8. GENDBC Programa Utilidad para Base de Datos
Instrucciones Bsicas
1. Tratamiento de Caracteres
2. Manipulacion de Fechas
Instrucciones de Manejo de Bases de Datos
CREATE DATABASE Crea una BD nueva y la activa automticamente. OPEN DATABASE Permite abrir una BD creada previamente El parmetro EXCLUSIVE posibilita que la BD se puede modificar independientemente del estado del comando SET EXCLUSIVE. Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
96 Otro parmetro comprueba la integridad de la informacin de la BD, VALIDATE. Es conveniente incorporarlo dentro de nuestra aplicacin cuando abramos la BD. Abrir una BD no implica que se carguen en memoria las tablas contenidas, sino que posteriormente debemos abrirlas mediante el comando USE. SET DATABASE Establece la BD activa en el caso de que tengamos varias en memoria. Tambin es posible esto utilizando la barra de herramientas Estndar de Visual Foxpro. MODIFY DATABASE Abre el Generador de BD para que se proceda a los cambios precisos. DELETE DATABASE Elimina una BD y las referencias que tengan las tablas contenidas con la BD. Es importante utilizar esta instruccin en vez de borrar los archivos directamente en el sistema operativo, ya que las cabeceras de las tablas seguirn teniendo informacin sobre la BD que las contena y al ir abrirlas nos saldr un error. Si queremos borrar la BD como las tablas contenidas podemos incluir el argumento DELETETABLES PACK DATABASE Despus de haber quitado una tabla de una BD, permanece el hueco de dicha tabla, ya que se realiza internamente un borrado lgico. Al igual que con los registros de una tabla, disponemos de la posibilidad de empaquetar los datos y borrar fsicamente las tablas. VALIDATE DATABASE Tiene la misma funcin del parmetro VALIDATE del comando OPEN DATABASE, y lo que hace es comprobar la integridad de la BD. Tiene un parmetro, RECOVER, que muestra ventanas de dilogo para localizar las referencias invlidas; ahora bien, slo se puede utilizar en la ventana de comandos, ya que en un programa dara error. CLOSE DATABASE Cierra la BD actual y sus tablas. Se especifica ALL, cierra todas las BD abiertas, junto a las tablas contenidas. Otra posibilidad para cerrar tablas, tanto contenidas como libres, es CLOSE ALL DBC() Devuelve el nombre de la BD actual y su ruta de acceso. DBUSED() Mediante esta funcin podemos saber si una BD est en uso DISPLAY DATABASE Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
97 Muestra informacin sobre la BD (Diccionario de Datos) Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
98 Instrucciones de Manejo de Tablas Independientes
Display Tables / List Tables Permite saber cules son las tablas que se encuentran dentro de la BD, as como su ruta de acceso. Add Table Aade una tabla libre a una BD. Si queremos modificar el nombre para que sea de mayor longitud, podemos incluir la clusula NAME seguida del nuevo nombre. Remove Table Elimina una tabla de la BD que la contiene y la convierte en una tabla libre. Por tanto, perderemos todas las propiedades, indices principales, etc., as como relcaiones que se pudiesen haber creado con otras tablas. Si adems de quitarla de la BD deseamos eliminarla del disco, podemos poner el parmetro DELETE Free Table Es equivalente al comando anterior, pero se diferencia de ste en que no hace falta tener abierta la BD para converit en libre la tabla. Lo que hace es quitar la referencia de la cabecera de la tabla. No es conveniente utilizarlo cuando existe la BD, ya que puede ocurrir que la tabla quede daada. Slo es aconsejable cuando se ha borrado la BD y las tablas continan con la llamada a dicha BD Drop Table Elimina una tabla de la BD y tambin la borra del disco. Podemos incluir el argumento NORECYCLE para que no se quede en la papelera de Windows95 InDbc() Devuelve verdadero si el objeto por el que se pregunta se encuentra dentro de la BD activa. Se indica como segundo parmetro el tipo de objeto que es, bien TABLE, INDEX, FIELD, VIEW o CONNECTION.
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
99 Instrucciones Generales de Manejo de Tablas
Una vez que tenemos abierta la BD o cuando queramos manejar una tabla libre, debemos utilizar la siguiente relacin de instrucciones. Muchas de ellas todava son las mismas que estaban disponibles en los comienzos de Xbase. Use Es el comando de tablas por excelencia. Sin ningn tipo de parmetro, slo seguido del nombre de la tabla, permite abrirla. Se carga automticamente en el rea activa. Adems de ello, si existe un archivo de ndices, se abrir tambin junto a la tabla; ahora bien, sta no se ordenar salvo que se lo pidamos expresamente mediante el argumento ORDER TAG. Si deseamos que la tabla se abra en una determinada rea se lo podemos indicar mediante IN seguido del nmero de rea. Si lo que preferimos es que VFP tome la primer rea no asignada, pondremos el valor 0 (cero) en el nmero de rea. Las tablas se cargan en el rea con el nombre que tiene el archivo .DBF, si queremos cambiarlo podemos utilizar el parmetro ALIAS seguido del nuevo nombre. Lo normal es no complicarse la vida y dejar tal cual. Para abrir una tabla de forma exclusiva podemos incluir EXCLUSIVE. Para hacerlo de manera compartida tenemos el parmetro SHARED. Un ejemplo tpico podra ser: USE tabla ORDER TAG codigo IN 0 Select Una vez que una tabla est abierta tenemos dos formas de hacer referencia a sus campos, bien mediante el alias un punto y el nombre del campo (tabla1.codigo) o situndonos previamente en el rea de la tabla correspondiente y llamando al campo directamente con su nombre. Para cambiar de rea tan slo hace falta acompaar el SELECT con el nmero de rea, o bien, poner el alias de la tabla. Como regla general para la programacin, no es muy aconsejable abusar de los SELECT, ya que ralentizan la ejecucin de los programas. Siempre que podamos sustituirlo por otro otro tipo de comandos, sobre todo SQL, no debemos dudarlo. Append Blank Permite crear un registro registro nuevo. Si queremos crearlo en una tabla que no es la de rea activa, podemos incluir el argumento IN como se hace en el USE. Si es posible, es mejor utilizar el comando INSERT INTO, ya que sustituye tanto al APPEND BLANK como al REPLACE. Replace Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
100 Este comando permite modificar la informacin de cada campo de una tabla. Su sintaxis es: REPLACE campo WITH datos Se pueden concatenar varios campos mediante comas. Esto es lo correcto, no debemos repetir el REPLACE. Cada uno de ellos produce un bloqueo de red, lo que ralentiza el programa. Si es posible, es mejor utilizar el UPDATE SQL. Delete Borra de manera lgica el registro donde est situado el puntero en la tabla. Es posible borrar selectivamente mediante los argumentos FOR o WHILE. Asimismo podemos borrar todos los registros mediante DELETE ALL. Tambin podemos utilizar el IN al igual que en comandos anteriores. Para trabajar slo con registros no marcados para borrar debemos utilizar el comando SET DELETE ON. Recall Recupera un registro borrado lgicamente. Como en el DELETE podemos recuperar todos los registros mediante ALL o algunos con el FOR o el WHILE. Pack Elimina fsicamente todos los registros con la marca de borrado y actualiza el archivo de ndices, as cmo los archivos .FPT que contienen los campos memo. Es importante es ltimo, ya que los campos memo de los registros borrados pueden ocupar mucho espacio. NO se debe utilizar en ningn caso el comando ZAP para eliminar todos los registros, ya que no borra los campos memo asociados.
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
101 Instrucciones de Bsqueda en Tablas
Skip Avanza o retrocede secuencialmente tantos registros como se le indique. Hay que controlar en todo momento que el retraso y el avance no desborden el principio del fichero y el final. Para ello, podemos utilizar las dos funciones siguientes. Bof() Devuelve .T. si se ha encontrado el principio de fichero, esto es, que el puntero est ms all del primer registro. Eof() Devuelve verdadero al llegar el puntero al final del fichero, cuando est ms all del ltimo registro. Go Permite ir directamente a un registro, bien sea mediante su nmero de registro, o bien, al primer registro con GO TOP o al ltimo, GO BOTTOM. Siempre teniendo en cuenta el orden fsico en el caso de ir a un registro segn su nmero. En el caso de TOP y BOTTOM depender del orden de la tabla. Este comando permite mover punteros en otra rea mediante la clusula IN. Seek Realiza una bsqueda directa de un valor dentro del archivo de ndices, situndose el puntero en ese registro en el caso de encontrarse, o bien accediendo al final de fichero en caso contrario. Found() Permite saber si un determinado valor buscado se ha encontrado o no. Se debe poner justo despus de la instruccin de bsqueda. Seek() Sustituye a las dos instrucciones anteriores y al SET ORDER, lo que le convierte en una funcin altamente til y que debemos implementar en nuestro cdigo siempre que sea posible. Un ejemplo podra ser: IF SEEK("001", "tabla1","codcod") ?"Encontrado" ENDIF Donde "001" es el valor buscado, "tabla1" es la tabla donde se busca y "codcod" el tag por el cul se va a realizar la bsqueda. Por tanto, no hace falta ordenar previamente la tabla por este ndice. Se la funcin devuelve .T. es que se ha encontrado el valor. Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
102 Do While Este bucle, clsico donde los haya, permite realizar una bsqueda en toda la tabla de sigueinte forma DO WHILE !EOF() SKIP ENDIF Avanza por toda la tabla hasta que encuentra el final de fichero. Scan Equivalente al bucle anterior, y mucho ms prctico, es el SCAN, que adems de recorrer automticamente toda la tabla permite filtrar la bsqueda mediante las clusulas FOR y WHILE. Es importante saber por qu registro comienza la bsqueda. En el caso del SCAN sin ms, siempre empieza desde el primer registro. Sin embargo, con el WHILE empezar desde el registro donde est situado el puntero en ese momento. Tambin es fundamental volver al rea de la tabla sobre la que se est haciendo el SCAN si nos hemos situado en otra dentro del bucle para realizar alguna operacin. Tampoco debemos mover nosotros el puntero dentro de l, ya que puede causar prdidas de informacin. Para salir del bucle repentinamente podemos incluir el comando EXIT. Si lo que queremos es saltar a la condicin emitiremos un LOOP.
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
103 Instrucciones de Clculos en Tablas
En relacin con los recorridos de las tablas y directamente relacionados con ellos, estn los comandos que realizan clculo para un nmero determinado de registros. Realmente podramos sustituir por el comando SELECT-SQL, con funciones de grupo. Average Realiza la media de un campo o campos correspondientes a una serie de registros, determinados por la clusula FOR o WHILE que se incluya. Se puede mandar el resultado a una variable o varias dependiendo de los campos promediados. Sum Equivale al anterior pero realiza una suma Count() En este caso, esta instruccin cuenta registros dependiendo del ndice y del estado de eliminacin. Reccount() Si queremos obviar el estado de los registros, podemos utilizarlo. Por lo dicho, contar todos los registros. No se pueden incluir clusulas FOR y WHILE. Se puede incluir el rea o el alias de la tabla a contar entre parntesis.
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
104 El Sistema de Almacenamiento en Buffer Bsicamente, consiste en la creacin automtica de un espacio de memoria destinado a guardar el o los registros que se estn editando sin que tengamos que realizar ningn tipo de movimiento a ese buffer ni poner una sola lnea de programa. El proceso est generado internamente por el VFP. Lo nico que debemos hacer es comprobar si se ha producido alguna modificacin por parte del usuario y, por ltimo, guardar o descartar los cambios. El sistema de almacenamiento en buffer permite, adems de facilitar el mantenimiento de las tablas, poder controlar el funcionamiento en red. Existe la tcnica de bloqueo en cuanto se produce una modificacin, que es lo que llamamos bloqueo pesimista; o por otro lado , dejar absoluta libertad a los usuarios de la red bloqueando slo a la hora de grabar, que es lo que se llama bloqueo optimista. VFP dispone de tres buffer para guardar los datos: 1er buffer, contiene los valores que el usuario est viendo en pantalla 2do buffer, guarda la informacin original que tena la tabla 3er buffer, almacena el valor ms reciente recibido de la red. El almacenamiento en buffer se activa a travs de la funcin CURSORSETPROP(). Por cada tabla que vayamos abriendo tendremos que poner un CURSORSETPROP. La sintaxis vara dependiendo del tipo de almacenamiento que deseemos, siguiendo el formato: CURSORSETPROP("Buffering", <tipo de almacenamiento>) En tipo de almacenamiento podremos indicar cinco tipos: Valor Significado 1 No se activa el almacenamiento en buffer, por tanto no lo utilizaremos 2 El bloqueo ser a nivel de registro y pesimista. El registro permanecer bloqueado hasta que se grabe la modificacin. 3 El bloqueo tambin tiene lugar a nivel de registro, aunque optimista. Por lo tanto, se produce el bloqueo cuando se actualiza la modificacin o se produce un desplazamiento a otro registro 4 Bloqueo pesimista a nivel de tabla. Funciona igual que a nivel de registro 5 Bloqueo optimista a nivel de tabla. Se produce cuando se actualizan las modificaciones
Para todos los casos debemos tener, adems del acceso no exclusivo (SET EXCLUSIVE OFF), el SET MULTILOCKS ON. Despus de incluir esta introduccin ya podremos aprovecharnos de las bondades del sistema.
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
105
Cmo comprobar si ha habido modificaciones Cuando se utiliza el buffer a nivel de registro utilizaremos la funcin GETFLDSTATE() Sintaxis: =GETFLDSTATE(<nombre o No. de campo>, <alias>) o tambin: =GETFLDSTATE(-1, <alias>) El 1 es para saber todos los estados de los registros. Los valores que nos puede devolver son: Valor Significado 1 El campo no ha sido modificado ni eliminado 2 Ese ha editado el campo o ha cambiado el estado de eliminacin 3 No se ha editado el campo de un registro aadido o no ha cambiado el estado de eliminacin del registro aadido ( o sea se inserto el registro en blanco y no introdujo informacin ) 4 Se ha editado el campo de un registro aadido o ha cambiado el estado de eliminacin para el registro aadido
El cdigo tpico para saber si ha habido algn tipo de modificacin sobre la registro actual sera: IF "2"$GETFLDSTATE(-1) OR "3"$GETFLDSTATE(-1) ; OR "4"$GETFLDSTATE(-1) =MESSAGEBOX("Ha habido alguna modificacin") ENDIF Cuando se utiliza el buffer a nivel de tabla utilizaremos la funcin GETNEXTMODIFIED() , que devuelve el nmero del primer registro que encuentra modificado. La bsqueda se da a partir del parmetro <No. de registro>. Sintaxis: =GETNEXTMODIFIED(<No. de registro>,<alias>) Cmo actualizar la tabla El ltimo paso ser guardar o descartar las modificaciones. Para ello se dispone de dos funciones: TABLEUPDATE() y TABLEREVERT(). Hay que recordar que visualmente estamos trabajando sobre una tabla intermedia y que esa informacin ha de ser volcada a la tabla fsica. Este paso vara dependiendo del tipo de almacenamiento que hayamos designado. Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
106
TABLEUPDATE() Sintaxis: =TABLEUPDATE(<nmero de filas>, <forzar actualizacin red>, <alias>, <array para error>) Al actualizar la tabla fsica le podemos decir que lo haga slo para el registro en el que se est o para todos los registros de la tabla. El primer parmetro est destinado a este fin. Los valores que puede tomar son: <nmero de filas> Valor Significado 0 Por defecto. Se actualiza el registro en el que est el puntero sea cual sea el tipo de almacenamiento 1 Se actualizarn todos los registros si el almacenamiento es a nivel de tabla y slo el registro actual si el almacenamiento se estableci a nivel de registro 2 Igual funcionamiento que el valor 1 pero en este caso VFP no emite un error si la actualizacin no termin con xito.
<forzar actualizacin red> Este parmetro se utiliza para forzar la actualizacin en red en el caso que dos usuarios estn modificando el mismo registro ( en el caso del buffer optimista) TABLEREVERT() Sintaxis: =TABLEREVERT(<todas las filas>,<alias>) Tendremos que poner .T. para que se produzca el descarte de los cambios realizados en todos los registros.
Transacciones
Una de las mejoras que se han implementado en esta nueva versin es la posibilidad de controlar de manera ms precisa, y sobre todo robusta, el paso de informacin entre el servidor y los clientes, referida naturalmente al grave problema que surge cuando falla la conexin entre los dos en el preciso momento en que est actualizando una determinada informacin. Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
107 Este problema se evita con el control transaccional. En VFP consiste en incluir dentro de un BEGIN TRANSACTION y un END TRANSACTION la serie de comandos que realizan la actualizacin requerida. Si por cualquier causa se corta la conexin sin haber finalizado la transaccin, sta no se realiza. Por tanto, tendremos las tablas como antes del corte, esto es posible gracias a que los cambios se van guardando en memoria hasta que llega el END TRANSACTION, que es cuando se vuelca de golpe toda la informacin. Otros lenguajes permiten continuar la transaccin donde se par, VFP no; pero es ms que suficiente. Tambin es posible suspender la transaccin si encontramos una razn para ello, como puede ser que una tabla est bloqueada. Entonces bastar con enviar un comando ROLLBACK para restaurar todas las tablas con los valores previos a la transaccin. No es conveniente abusar de las transacciones ya que stas bloquean todas las tablas que participan en la misma, por lo que ningn usuarios de la red podr acceder a ellas. Slo debemos utilizarla si cuando vayamos a actualizar la informacin de varias tablas, y una de ellas no tenga los valores correctos, implique un grave perjuicio para los clculos de la aplicacin. Nunca debemos usarlas para la actualizacin de una tabla.
Utilidades GENDBC Situada en el directorio VFP\TOOLS\GENDBC, esta herramienta genera un programa que puede volver a crear una base de datos. Use este programa para: Generar cdigo que puede analizar para aprender cmo se crea una base de datos mediante cdigo de programa. Generar cdigo que puede ser colocado en el cdigo de su programa eliminando la necesidad de transportar sus bases de datos con su aplicacin. Generar cdigo que puede ser colocado en el cdigo de su programa para volver a crear la base de datos si los datos de un cliente estn corrompidos.
Sintaxis DO GENDBC WITH archivo Parmetros archivo Cadena de caracteres que contiene el nombre de un archivo de salida. El archivo puede contener informacin de ruta y una extensin. Si no se suministra ninguna extensin se usa la extensin predeterminada .PRG. Nota Este programa slo funcionar en la base de datos activa actualmente.
Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
108
Tratamiento de Caracteres Str() Es una funcin de conversin de nmeros a letras. Por defecto, toma como ancho siempre 10. En caso de que queramos especificar otro tamao, deberemos indicarlo en el segundo parmetro. Upper(), Lower() y Proper() Convierte la cadena de caracteres indicada entre los parntesis a maysculas, minsculas, o bien con la letra inicial en maysculas y las dems en minsculas, respectivamente. Ltrim(), Rtrim() y Alltrim() En los tres casos quita los espacios que pudiese tener la cadena de caracteres, bien por la izquierda, por la derecha o por ambos lados. Left(), Right() Toma de una cadena de caracteres el nmero que le indiquemos como segundo parmetro, empezando por la izquierda o bien por la derecha. Substr() Posibilita la extraccin de una determinada cadena de caracteres dentro de otra, empezando desde la posicin indicada como segundo parmetro y cogiendo el nmero de caracteres que se especifiquen en el tercero. Len() Devuelve el nmero de caracteres que tiene la cadena que pongamos entre los parentesis. Space() Crea una cadena de espacios con una longitud determinada por el numero que escribimos como parmetro. Replicate() En esta funcin no slo podemos repetir una cadena de espacios, sino cualquier tipo de carcter, tantas veces como indiquemos en el segundo de los parametros. Isalpha(), Islower() e Isupper() Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
109 Devolvern .T. si la cadena es de caracteres, si est en minsculas y si est en mayusculas, segn corresponda. $ Comprueba si una determinada cadena o caracter, que se debe poner antes del $, est dentro de una cadena de caracteres, que debe ir detrs del $. Padl(), Padr() y Padc() Sirve para rellenar una cadena de caracteres, con un determinado carcter, tercer parametro, un numero de veces determinado por el valor del Segundo parametro. Se realizar el relleno por la izquierda, derecha o ambos lados dependiendo de la funcin que utilicemos. At(), Rat(), Atc() Devuelve la posicin en la que se encuentra el carcter o cadena de caracteres especificado en el primer parametro, dentro de la cadena incluida como segundo, la primera vez que lo encuentre o segunda, tercera, etc. Valor este que depende del tercero de los parametros. La bsqueda empezar por la izquierda, AT() o por la derecha RAT(); pero el valor devuelto siempre ser la posicin que empieza por la izquierda. Si queremos ignorar que las letras estn en mayusculas o minusculas podemos utilizar ATC() Occurs() Muestra el nmero de veces que se encuentra un caracter o cadena de caracteres dentro de una cadena de caracteres. Stuff() Permite sustituir una cadena por otra. Los parametros son: cadena donde buscar, posicin donde empezar el reemplazo, numero de caracteres reemplazados a partir de ah y cadena sustitutoria.
Manipulacin de fechas
SET CENTURY Si esta en ON pone el ao con cuatro digitos y si esta en OFF pone el ao con 2 digitos. Day(), Month() y Year() Nos muestra el da, mes y ao de una determinada fecha. Esta debemos incluirla dentro del parntesis. El ao estar expresado con dos o cuatro dgitos, depender del estado de SET CENTURY. Week() Nos devuelve la semana del ao a la que corresponde el da de la fecha indicada entre parentesis. Tutorial de Base de Datos I M.S.C. Alejandro Crdenas Nez
110 Dow() Muestra el da de la semana a la que corresponde la fecha. El valor es numerico, correspondiendo por defecto el valor 1 al domingo, ya que toma la secuencia semanal anglosajona. Cdow() y Cmonth() En vez de devolver el nmero del da o el mes, aparecer su equivalente en texto, esto es, lunes, martes o abril, marzo, ect. Dmy() y Mdy() Muestra la fecha con el mes en letras en el orden da, mes ao o mes da ao segn la funcin. Gomonth() Muestra la fecha que corresponder a la que se indique entre parntesis sumndole o restndole el nmero de meses que se especifiquen en el segundo de sus parametros. Es muy til, por ejemplo, cuando hay por medio en el calculo un ao bisiesto. Between() Aunque no es una funcin propiamente de fechas, es til para averiguar si una determinada fecha, primer parametro, esta entre otras dos, segundo y tercer parametro. Sys(11) Devuelve el nmero de das que han pasado segn el calendario juliano hasta la fecha que se indica en el segundo parametro. Date(), Time(), DateTime() Devuelven respectivamente, la fecha del sistema, la hora, y la fecha y la hora juntas. Sec(), Minute(), Hour() Corresponde a los segundos, minutos y la hora de una variable fechahora.