Tablas
Una tabla es un archivo cuyo nombre inventa el usuario y cuya extensión
es DBF.
Una tabla está formada por registros.
Cada registro está formado por campos.
Tabla
Registro
Campo
Campo
Registro
Campo
Campo
Campo
Registro
Campo
Campo
Campo
Campo
Registros
Todos los registros tienen igual longitud.
Registro
Registro
Registro
Registro
y así …
Cada registro tiene un lugar en la secuencia que sirve para identificarlo. Este
identificador se llama número de registro.
Registro 1
Registro 2
Registro 3
Registro 4
y así …
Campos
Cada registro está formado por campos. Cada campo se destina para
contener un dato. Todos los registros tienen el mismo diseño de
campos.
Registro n
Artículo
Nombre
Precio
Cada campo tiene atributos: nombre, tipo de datos, ancho y decimales.
Nombre
Tipo
Ancho
Decimales
Artículo
Carácter
3
-
Nombre
Carácter
30
-
Precio
Numérico
8
2
La definición de los atributos se hace una sola vez en el Diseñador de
tablas. Esta definición se llama estructura de la tabla, o también
estructura del registro, porque cada registro se ajusta a ella.
Para crear una tabla:
Primero se define la estructura.
Luego se agregan registros con datos concretos.
Para que la tabla exista, debe tener por lo menos la definición estructural.
Si todavía no se le han agregado registros, se dice que está vacía.
Las tablas permiten tres tipos de operaciones con registros:
Alta. Es incorporar un nuevo registro.
Baja. Es eliminar un registro existente. La baja se hace en dos pasos:
Primero se marca el registro a eliminar, lo cual permite
desmarcarlo si cambiamos de opinión.
Luego se lo elimina definitivamente de la tabla.
Cambio. Es modificar el dato de un campo de un registro existente.
Un recurso para dar altas, bajas y cambios es la ventana Examinar. La
ventana Examinar se puede ver de dos formas: en modo Examinar y en
modo Editar.
Modo Examinar. Los campos aparecen uno junto a otro. Cada renglón
es un registro.
Modo Editar. Los campos aparecen uno bajo el otro. Cada banda es un
registro.
Los modos Examinar y Editar son formas de ver los registros.
La forma en que se graban los registros en el disco es uno tras el otro.
Registro 1
Registro 2
Etc.
O, mostrando sus campos:
D01
Banqueta clásica
305.00
D02
Banqueta laqueada
134.00
Etc.
Tipos de tablas
Hay dos tipos de tablas: (a) libres y (b) de base de datos (o tabla base).
Tablas libres. Son la forma más antigua. Toda la definición estructural se
hace en la misma tabla. En el Diseñador de tablas, éstas se ven así:
Tablas de bases de datos (o tablas base). Son más eficientes.
Parte de la definición estructural se guarda en la tabla y parte en
la base de datos. En el Diseñador de tablas, éstas se ven así:
Diseñador de tablas
El diseñador de tablas tiene 3 fichas.
Ficha Campos. Sirve para definir los campos y sus atributos. Cada campo
ocupa un renglón. En las tablas de bases de datos, cada campo tiene más
opciones en la parte inferior de la ficha.
Ficha Índices. Sirve para definir índices por distintos campos. Un índice ordena
virtualmente los registros, sin cambiarlos de lugar en el archivo, es decir, sin
cambiar los números de registro. Cada índice ocupa un renglón. Las tablas libres
usan tres tipos de índice: normal, candidato y único. Las tablas de bases de
datos agregan el tipo principal.
Ficha Tabla. Muestra información sobre la tabla. En las tablas bases, permiten
definir reglas para controlar la validez de los registros.
Índices
Los índices permiten ordenar virtualmente los registros de una tabla.
Para construir un índice, hay que darle un nombre, un tipo y una expresión.
Los índices se guardan en un único archivo, cuyo nombre es el nombre de la
tabla y cuya extensión es CDX.
Si la tabla se llama Artículos.dbf, el archivo de índices se llamará Artículos.cdx.
Si queremos un índice por el campo Artículo, lo podemos llamar Artículo. El
campo Artículo se dice que es la expresión del índice.
Si queremos un índice por el campo Nombre, lo podemos llamar Nombre. El
campo Nombre se dice que es la expresión del índice.
En el archivo de índices Artículos.cdx, entonces, se guardarán los índices
Artículo y Nombre.
Sea que la tabla Artículos tiene los siguientes tres registros:
Artículo
Nombre
Precio
Precio
B35
Silla
100
C42
Cama
200
A18
Mesa
200
Si activamos el índice Artículo, en
la ventana Examinar veremos:
Artículo
Nombre
Si activamos el índice Nombre, en
la ventana Examinar veremos:
Artículo
Nombre
Precio
A18
Mesa
200
C42
Cama
200
B35
Silla
100
A18
Mesa
200
C42
Cama
200
B35
Silla
100
Sólo puede haber un índice activo en un momento dado, o ninguno.
Si no hay un índice activo, los registros se verán en el orden de grabación,
es decir, de acuerdo al número de registro.
Tipos de índices
Los tipos de índices son normal, único, candidato y principal.
Para entenderlos, conviene saber qué son entradas de índice. Una entrada
de índice es como un renglón de un cuaderno donde se registra información
sobre un registro de la tabla. No todos los registros tienen entrada en el
índice, porque eso depende del tipo de índice.
Índice normal. Todos los registros de la tabla tienen entradas en el índice.
Creemos el índice normal Precio por el campo Precio. Luego activemos ese
índice y veamos la tabla en la ventana Examinar.
Artículo
Nombre
Precio
B35
Silla
100
C42
Cama
200
A18
Mesa
200
Índice único. Los registros con igual valor en la expresión de índice tienen
entrada una sola vez en el índice.
Creemos el índice único Precio por el campo Precio. Luego activemos ese
índice y veamos la tabla en la ventana Examinar.
Artículo
Nombre
Precio
B35
Silla
100
C42
Cama
200
El artículo con precio 200 es C42, porque fue el primero que se encontró al
crear el índice.
Un índice único sirve para saber cuántos precios distintos hay.
Índice candidato. Cada registro de la tabla tiene su entrada en el índice,
pero el índice controla que en la tabla no se repitan valores en la expresión
del índice. Si se da esta situación, se produce el error “Se ha violado la
unicidad del índice”.
El que haya tantas entradas como registros, entonces, se debe al
impedimento de duplicar valores en el campo usado como expresión del
índice.
En la tabla Artículos, podríamos crear índices candidatos por Artículo y
por Nombre, porque sus valores no se repiten. Pero no podríamos crear
un índice candidato por Precio, porque se repite el valor 200.
Una tabla puede tener los índices candidatos que se necesiten.
Índice principal. Funciona como los índices candidatos, pero una tabla
puede tener un solo índice principal.
Expresión de índice
La expresión de un índice puede ser el campo por el cual se construye el
índice.
Pero si nos limitáramos a campos, no podríamos indexar por otros
conceptos. Por ejemplo, sea la tabla Resumen con los totales mensuales
de ventas y costos.
Mes
Venta
Costo
1
125.000
75.000
2
48.000
31.000
Etc.
Etc.
Etc.
Si queremos un índice llamado Ganancia, por lo ganado en cada
mes, deberemos usar la expresión Venta – Costo.
Sea la tabla Alumnos, con los campos Matrícula, Nombre, Carrera, etc.
Matrícula
Nombre
Carrera
00001
García, Juan
13
00025
Lucero, Mercedes
00032
Sarmiento, Raúl
15
00567
Moreno, Alberto
13
09021
Figueroa, Luis
1
1
Para crear un índice por Carrera y Nombre, debemos usar la expresión
str(Carrera,2)+Nombre. Parece complicado, pero veremos que no lo es.
Si activamos este índice, la tabla se verá:
Matrícula
Nombre
Carrera
09021
Figueroa, Luis
1
00025
Lucero, Mercedes
1
00001
García, Juan
13
00567
Moreno, Alberto
13
00032
Sarmiento, Raúl
15
Campos Memo
En la tabla, cada campo tiene un ancho. Ningún contenido puede superar
ese ancho.
A veces, sin embargo, se necesitan contenidos extensos que varían de
un registro a otro, como las historias clínicas de los pacientes o las
observaciones sobre la conducta de los empleados.
Una historia clínica puede tener un texto de miles de caracteres. El ancho
máximo de un campo de caracteres, adecuado para texto, es 254.
Pero queremos guardar la historia clínica de cada paciente en el registro
que le corresponde en la tabla. ¿Cómo solucionar este problema?
Para ello existen los campos memo.
Un campo memo tiene ancho 4 en la tabla.
Acá se guarda un número, como si fuera una llamada a una nota de pie de
página en un libro.
El equivalente a la nota de pie de página se desarrolla en otro archivo,
asociado a la tabla, cuyo nombre es el de la tabla y cuya extensión es FPT.
Este archivo se crea automáticamente al definir el primer campo memo en el
Diseñador de tablas.
Este archivo permite que la nota no tenga límites en cuando a extensión.
Cuando un campo memo de un registro contiene una llamada, en la tabla no
se ve este número, porque es binario y difícil de ver, sino la palabra Memo,
con M mayúscula.
Si un campo memo de un registro no contiene una llamada, se ve la palabra
memo, con m minúscula.
Para trabajar con un campo memo, se da doble clic donde dice memo o
Memo. Esto abre una ventana de edición para introducir o modificar el texto
de la nota.
Para ir guardando el contenido del campo memo se usa Archivo –
Guardar. Nunca se abrirá el diálogo Guardar como, porque ya existe el
archivo FPT donde se guardará el contenido.
Cuando se termina el trabajo de edición, se sale de la ventana de edición
con Archivo – Cerrar.
Para guardar y salir de la ventana de edición en una sola operación, se usa
Ctrl + W.
Para eliminar todo el contenido del campo memo, se selecciona el texto, se
lo elimina y se pulsa Ctrl + W. En la tabla se visualizará ese campo como
memo, con m minúscula, porque no tiene contenido.
Bases de datos (BD)
Una BD es un archivo donde se “anotan” o “registran” otros archivos, como
tablas e índices.
También contiene información adicional sobre los campos de las tablas.
Guardan otra información, que iremos viendo de a poco.
Cuando se “registra” una tabla en una BD, la tabla deja de ser libre y se
convierte en tabla base. Este cambio de tipo permite agregar información
adicional a la tabla, que se guarda en la BD. Por ejemplo, reglas y mensajes
de validación de campos y de registros, títulos de campos, formatos de
campos y valores predeterminados de campos.
Una BD es, en realidad, una tabla con extensión DBC. Tiene campos
predefinidos por VFP.
Para agregar una tabla a una BD, la tabla debe ser libre.
Una tabla no puede pertenecer a más de una BD.
Si una tabla pertenece a BD1 y queremos que pertenezca a BD2:
Primero tenemos que quitarla de BD1 para convertirla en libre.
Después debemos agregarla a BD2.
Cuidado. Cuando quitamos una tabla de una BD, puede perder mucha
información adicional que está en la BD. Esta información puede
referirse a la misma tabla o ser una información referida a la relación de
esa tabla con otra tabla.
Diseñador de bases de datos
Muestra tablas, relaciones y vistas. Tiene el siguiente aspecto:
Cursores. Las tablas y vistas se ven como cursores. Un cursor es
una ventanita que muestra los campos e índices de las tablas y los
campos de las vistas. Un cursor se puede mover y cambiar de
tamaño. Si el contenido no se ve en su totalidad, aparece una barra
de desplazamiento vertical.
Relaciones. Una relación es un vínculo entre dos tablas.
En una BD, las relaciones tienen las siguientes características:
Son permanentes. Existen mientras no se las destruya.
Sirven para definir reglas de integridad referencial.
Las relaciones permanentes se trazan arrastrando de un índice
principal o candidato de una tabla a un índice de cualquier tipo de
otra tabla. La tabla de partida se llama madre, principal o parent. La
tabla de llegada se llama hija, secundaria o child.
El índice de partida debe ser principal o candidato.
Si el índice de llegada es principal o candidato, la relación se dice de
uno a uno y se representa 1 – 1.
Si el índice de llegada es normal o único, la relación se dice de uno a
varios y se representa 1 – N.
Integridad referencial (IR)
El buen diseño de tablas distribuye la información de un cliente, proveedor,
alumno, etc., entre varias tablas.
Por ejemplo, los datos referidos al cliente como persona (código de cliente,
nombre, domicilio, teléfono, CUIT, etc.), se colocan en el registro de una
tabla. Si hay 100 clientes, habrá 100 registros.
Los datos referidos a las compras de un cliente se colocan en uno o más
registros de otra u otras tablas (código de cliente, artículo, precio,
cantidad). Para unir estos registros con el registro del cliente, se usa el
código de cliente.
Aunque esté en varias tablas, la información del cliente es un todo. Esto exige
cuidar que la información parcializada de las distintas tablas sea coherente y
no se pierda ninguna parte.
De esto se ocupa la integridad referencial, que usa reglas para controlar las
altas, bajas y cambios de registros.
IR. Reglas para cambios en la clave de la tabla madre
No se refieren al cambio de cualquier campo, sino del campo que une
ambas tablas, como el código de cliente en el ejemplo. Se dice que este
campo es la clave de la unión.
Si cambiamos la clave de un cliente en la tabla madre, corremos el riesgo de
romper la integridad de información del cliente. La ruptura se dará cuando
ese cliente haya realizado compras.
Cascada. Cuando se cambia la clave de un registro en la tabla madre, se
cambia automáticamente igual clave en los registros de la tabla hija. Por
ejemplo, si cambiamos la clave 125 por 300 de un cliente en la tabla madre,
automáticamente todas las compras del cliente 125 cambian a 300 en la
tabla hija. Si cambiamos el domicilio del cliente en la tabla madre, esta regla
no se aplica, porque el domicilio no es clave.
Restringir. Impide cambiar la clave un registro en la tabla madre si tiene
registros con igual clave en la tabla hija. Por ejemplo, si el cliente 125
tiene registros en la tabla hija, no se podrá cambiar esta clave.
Ignorar. Permite cambiar la clave de un registro en la tabla madre sin
tener en cuenta si tiene o no registros con igual clave en la tabla hija. Es,
en realidad, la carencia de regla. Esta carencia puede provocar la
disociación de la integridad de la información, con resultados caóticos.
Por ejemplo, si cambiamos la clave del cliente 125 por 300 en la tabla
madre, se disociarán los registros de compras con clave 125 en la tabla
hija, que ahora se referirán a un cliente inexistente.
IR. Reglas para bajas de registros en la tabla madre
Se refieren a marcar un registro para destruir en la tabla madre. Como
este registro tiene una clave, puede haber registros con igual clave en
la tabla hija. Esto debe ser controlado.
Cascada. Si se marca un registro para destruir en la tabla madre, se marcan
automáticamente los registros con igual clave en la tabla hija. Pero si se
desmarca el registro en la tabla madre, no se produce ningún efecto en la
tabla hija.
Por ejemplo, si se marca para destruir el registro con clave 125 en la tabla
madre, todos los registros con clave 125 en la tabla hija se marcan
automáticamente.
Si luego se eliminan físicamente los registros marcados, se perderá
definitivamente toda la información sobre el cliente 125.
Restringir. Impide marcar en la tabla madre un registro con una clave que
existe en registros de la tabla hija. La regla no se opone a marcar registros
de la tabla madre cuyas claves no existen en la tabla hija.
Por ejemplo, si el cliente 125 tiene registros de compras, no podremos
marcarlo para destruir, de modo que nunca podremos eliminar la historia
completa de tal cliente.
Para eliminar toda la historia del cliente 125, debemos usar otro
procedimiento: primero habrá que eliminar sus registros en la tabla hija y
después eliminar el registro de la tabla madre.
Ignorar. Permite marcar un registro de la tabla madre, sin tener en
cuenta si tiene o no registros con igual clave en la tabla hija. Es una
carencia de regla, que puede provocar caos.
Por ejemplo, si marco para destruir el cliente 125 en la tabla madre y
luego lo elimino definitivamente, en la tabla hija quedarán compras del
cliente 125 que ya no existe en la madre.
IR. Reglas para altas de registros en la tabla hija
Se refieren a altas de registros en la hija, que deben tener una clave. Lo
lógico es que tal clave exista en un registro de la madre, para que haya
integridad de información. Si esto no sucediera, sería un error, situación que
trata de controlar la regla Restringir.
Restringir. Impide dar de alta un registro en la hija con una clave que no
exista en la madre.
Por ejemplo, no puedo dar de alta una compra del cliente 950, si tal
cliente no está definido en la madre.
La regla controla otra situación: sin necesidad de dar una alta, no
podríamos cambiar la clave 125 a 300 de una compra, si no existe un
cliente 300 en la madre.
Ignorar. Permite dar altas de registros en la hija, sin tener en cuenta si
hay o no un registro con igual clave en la madre. Es la carencia de regla,
que puede provocar información no íntegra.
Por ejemplo, se puede dar de alta a una compra con clave 950, exista o
no un cliente con esa clave en la madre.
Tampoco se controla la segunda situación: se puede cambiar una clave en
un registro de la tabla hija sin considerar lo que pasa en la tabla madre.
Por ejemplo, podremos cambiar una compra del cliente 125 por 950,
exista o no un cliente 950 en la tabla madre.
Resumiendo, las reglas de integridad referencial son:
Tabla
Movimiento
Madre
Hija
Cascada
Ignorar
Restringir
Cambios
X
X
X
Bajas
X
X
X
Altas
---
X
X
Regla mnemotécnica:
Madre baja cambió a hija alta.
Madre: Baja, Cambio
Hija: Alta
Descargar

Tablas Pawer Point