Vous êtes sur la page 1sur 110

Tutorial de Base de Datos I M.S.C.

Alejandro Crdenas Nez



1



TUTORIAL DE BASE DE DATOS I.




UNIDAD I. Introduccin a las bases de datos.

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 artculo.
Clave Descripcin Costo
A100 Abanico 460
C260 Colcha matrimonial 1200

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

32
B01 Bioqumica
C03 Civil

Tabla ECurso
Clave Curso
S01 Natacin
S01 Danza
B01 Guitarra
C03 Natacin

Quinta forma normal.

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.


2.1. Seleccin y proyeccin.
2.2. Producto cartesiano.
2.3. Operacin unin.
2.4. Operacin diferencia.
2.5. Operacin interseccin.

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.

b. Type ( tipo de Indice)

Primary : Llave primaria.
Candidate : Llave candidata
Unique : Llave nica.
Regular : Llave fornea.


c. Nombre de la Expresin

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

62
lSuccess = CURSORSETPROP("Buffering", 5, "customer")

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)









Contenido Ejemplo del programa principal:


CLEAR ALL

* Variables Publicas
PUBLIC w_Output, g_ao, gid_area, g_nivel, g_cambio, g_login_entry ;
,g_pass_entry, V_MENU_PRE, V_ERROR, g_acceso

* Definicion de Ventana para los Reportes

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

94
SET LOCK OFF
SET PROCEDURE TO .\prg\utility

* Fondo de la Pantalla principal

_SCREEN.Picture=".\bmp\fondo.bmp"
_SCREEN.WINDOWSTATE=2
_SCREEN.CLOSABLE=.F.
_SCREEN.CAPTION="Formulacin Presupuestaria"

* Base de Datos

OPEN DATA .\SCOTT\scott SHARED


* Llamada al Menu
DO .\menu\menu.mpr

READ EVENT

CLEAR ALL
SET SYSMENU TO DEFAULT

Creacin del Ejecutable








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.