2. Conceptos de Estructuras de Datos
Una estructura de Datos:
Puede ser un archivo o tabla que contiene datos
relacionados a personas, lugares, cosas o eventos
que interactúan con el sistema.
Los sistemas clásicos son: File-oriented y utilizan ese
formato para interactuar con el sistema (File
processing system)
Actualmente los sistemas se trabajan bajo la
estrucutra de Base de Datos (Database system)
3. DEFINICIÓN BASE DE DATOS
Una Base de Datos consiste de una
colección de datos interrelacionados y un
conjunto de programas que permiten
acceder esos datos.
4. BASE DE DATOS
Su objetivo primordial es proporcionar un
medio ambiente que sea conveniente y
eficiente tanto al extraer como al
almacenar datos.
Su orientación es a nivel empresarial
como la entidad central en donde todas
sus operaciones se fusionan al utilizar esta
herramienta (centralizado).
5. VENTAJAS DE LAS BASES DE DATOS
• Obtener más información de la misma
cantidad de data – El usuario tiene la
oportunidad de poder obtener más datos
útiles si el sistema está programado en una
base de datos.
• Compartir los Datos – Diferentes
sistemas en la misma empresa pueden
compartir sus datos sin problema.
• Se refuerza la estandarización – En las
Bases de Datos es más facil estandarizar
procesos.
6. VENTAJAS DE LAS BASES DE DATOS
(CONT.)
• Redundancia controlada – La
duplicidad de los datos es mínima.
• Consistencia – Al no haber tanta
redundancia, los datos que se modifican
pueden ser accedidos sin problemas de
que no este sincronizado el cambio.
• Integridad - La Base de datos tiene la
capacidad de validar datos
independientemente del programa.
7. VENTAJAS DE LAS BASES DE DATOS (CONT.)
• Seguridad – La Base de datos permite
diseñar distintos niveles de seguridad
sin tener que programarlo.
• Flexibilidad y rapidez al obtener
datos – El usuario puede tener acceso a
los datos sin intervención del personal
de IT.
• Aumenta la productividad de los
programadores – Los programadores
no se dedican a programar validación ni
seguridad, ni se tienen que preocupar
por el Diseño. Se pueden dedicar a la
programación.
8. VENTAJAS DE LAS BASES DE DATOS
(CONT.)
• Mejora el mantenimiento de los
programas – Los datos son separados de
los programas, de este modo el
mantenimiento de los programas no
afecta la Base de Datos.
• Independencia de los Datos – Si existe
un cambio en los datos, esto no tiene
impacto en la programación.
9. DESVENTAJAS DE LAS BASES DE DATOS
• Tamaño - Requiere de mucho espacio en
disco duro y también requiere de mucha
memoria principal (RAM) para poder
correr adecuadamente.
• Complejidad – Es difícil de utilizar y
requiere adiestramiento del personal
técnico.
• Requerimientos adicionales de equipo
– Generalmente se requiere más equipo
del normal parar poder aguantar los
requerimientos de una Base de Datos.
(memoria, velocidad del procesador, disco
duro, etc.)
10. DESVENTAJAS DE LAS BASES DE DATOS
Mayor impacto en caso de falla - Si un
componente de la Base de Datos sufre un
desperfecto, se detiene las operaciones
del producto por completo.
Complejo recuperar los datos - En
caso de un accidente que corrompa la
Base de datos, el proceso de
recuperación y de devolver a la Base de
Datos a su estado anterior al problema,
es mucho mas complejo de ejecutar que
en sistemas tradicionales.
Costo – Las licencias comerciales son
caras.
11. TIPOS DE DATOS EN BASE DE
DATOS
Tipos de datos
Numeric
Tipo Ejemplos
1233,1415
– 7
Character “123”“Prueba”
“01/01/98”
LogicalDate .T. (verdadero) . F.
(falso)
DateTime {^1998-01-01}
{^1998-01-01 12:30:00
p}
12. BASE DE DATOS - TÉRMINOS
Entidades – Algo importante que deseamos
almacenarlo. Por ejemplo: Una persona,
evento, lugar, categoría o cualquier otra cosa
que se le pueda nombrar.
Relaciones – Define como las entidades se
relacionan entre si.
Atributos – Datos que deseamos guardar en
una entidad y como resultado, la describe.
13. TERMINOLOGÍA
TRADICIONAL BASE DE DATOS
BASE DE DATOS
RELACIONAL
Archivo Entidad Tabla
Record Instancia Fila
Campo Atributo Columna
14. EJEMPLO DE ENTIDADES
ESTUDIANTE
EMPLEADO
CLIENTE
MATRÍCULA
CURSOS
DEPARTAMENTO
LIBRO
PRESTAMO
15. EJEMPLOS DE ATRIBUTOS
ENTIDAD CLIENTE
número
nombre
dirección
teléfono
crédito
e-mail
ENTIDAD ESTUDIANTE
número
nombre
edad
genero
departamento
igs
escuela procedencia
16. RELACIONES
Es una asociación bidireccional
(ambas direcciones) e imprecindible
entre dos entidades o entre una
entidad y ella misma.
17. RELACIONES - SINTAXIS
La sintaxis que vamos a utilizar para determinar
las relaciones va a ser:
CADA entidad-1
nombre de la relación
entidad-2
TIENE QUE SER
O
PUEDER SER
UNO O MÁS
O
UNO Y SOLO UNO
18. RELACIONES - COMPONENTES
Nombre de la relación – Se utiliza una
palabra que haga sentido al unir la
relación entre dos entidades
Opcionalidad – Sólo se puede indicar
“tiene que ser” o “puede ser”
Grado o Cardinalidad - Sólo se puede
indicar “Uno o más” o “Uno y solo uno”
19. RELACIONES - EJEMPLOS
DEPARTAMENTO - EMPLEADO
Cada DEPARTAMENTO puede ser habitado por uno o más
EMPLEADO(s)
ESTUDIANTE - CURSO
Cada ESTUDIANTE puede tomar uno o más CURSO(s)
EDIFICIO – APARTAMENTO
Cada EDIFICIO tiene que poseer uno o más APARTAMENTO(s)
20. RELACIONES - DIAGRAMAS
Las relaciones se pueden diagramar de la
siguiente forma:
1. Una línea une las dos entidades
2. El nombre de la relación va en
minúsculas
3. El diagrama de Opcionalidad es:
• Puede ser
• Tiene que ser
4. El diagrama de Grado o Cardinalidad es:
• Uno o más
• Uno y solo uno
21. RELACIONES – DIAGRAMAS -
EJEMPLOS
DEPARTAMENTO - EMPLEADO
Cada DEPARTAMENTO puede ser habitado por uno o más
EMPLEADO(s)
DEPARTAMENTO
id
localización
descripción
EMPLEADO
numero
nombre
seguro social
habitado por
El nombre de la relación se
pone arriba o abajo de la línea
que une las dos entidades.
22. RELACIONES – DIAGRAMAS -
EJEMPLOS
ESTUDIANTE - CURSO
Cada ESTUDIANTE puede tomar uno o más CURSO(s)
ESTUDIANTE
número
nombre
seguro social
CURSO
código
semestre
descripción
tomar
23. RELACIONES – DIAGRAMAS -
EJEMPLOS
EDIFICIO – APARTAMENTO
Cada EDIFICIO tiene que poseer uno o más APARTAMENTO(s)
EDIFICIO
id
localización
descripción
APARTAMENTO
número
piso
cantidad cuartos
poseer
24. IMPORTANTE
UNA RELACIÓN ES BIDIRECCIONAL.
Por lo tanto hay que detallar y diagramar
la relación también del otro lado.
FINALMENTE LOS DIAGRAMAS QUEDARÍAN
ASÍ:
25. RELACIONES – DIAGRAMAS -
EJEMPLOS
DEPARTAMENTO - EMPLEADO
Cada DEPARTAMENTO puede ser habitado por uno o más
EMPLEADO(s)
Cada EMPLEADO tiene que estar asignado a uno y solo un
DEPARTAMENTO
DEPARTAMENTO
id
localización
descripción
EMPLEADO
numero
nombre
seguro social
habitado por
estar asignado
26. RELACIONES – DIAGRAMAS -
EJEMPLOS
ESTUDIANTE - CURSO
Cada ESTUDIANTE puede tomar uno o más CURSO(s)
CadaCURSO puede ser tomado por uno o más ESTUDIANTE(S)
ESTUDIANTE
número
nombre
seguro social
CURSO
código
semestre
descripción
tomar
tomado por
27. RELACIONES – DIAGRAMAS -
EJEMPLOS
EDIFICIO – APARTAMENTO
Cada EDIFICIO tiene que poseer uno o más APARTAMENTO(s)
Cada APARTAMENTO tiene que ser poseido por uno y solo un
EDIFICIO
EDIFICIO
id
localización
descripción
APARTAMENTO
número
piso
cantidad cuartos
poseer
poseido por
28. EJEMPLO DE UN ERD DE UN
SISTEMA DE COMPRAS
CLIENTE
número
nombre
seguro social
ALMACEN
id
descripción
localización
ORDEN
número
tipo
fecha
ARTÍCULO
numero
descripción
peso
el originador de
originado por
emitida para
incluido en
almacenado en
el depósito para
29. TIPOS DE RELACIONES
EXISTEN 3 TIPOS DE RELACIONES ENTRE
LAS ENTIDADES
1. Muchos a uno (M : 1)
2. Muchos a muchos (M : M)
3. Uno a uno (1 : 1)
30. MUCHOS A UNO
M a 1 o M : 1
1. Tiene un grado de uno o más en una
parte de la relación y de uno y solo uno
en la otra parte.
2. Es el tipo de relación más común dentro
de las bases de datos.
3. Las relaciones de muchos a uno que sea
obligatoria en ambas partres es rara.
31. MUCHOS A UNO - EJEMPLO
DEPARTAMENTO
id
localización
descripción
EMPLEADO
numero
nombre
seguro social
habitado por
estar asignado
M
∞
1
32. MUCHOS A MUCHOS
M a M o M : M
1. Tiene un grado de uno o más en ambas
partes.
2. También es un tipo de relación común.
3. Pueden ser opcionales en una o en
ambas partes.
33. MUCHOS A MUCHOS - EJEMPLO
M
∞
M
∞
ESTUDIANTE
número
nombre
seguro social
CURSO
código
semestre
descripción
tomar
tomado por
34. UNO A UNO
1 a 1 o 1 : 1
1. Tiene un grado de uno y sólo uno en
ambas partes.
2. Este tipo de relación es raro y más aún si
ambas partes son obligatorias.
3. Este tipo de relación podría indicar que
ambas relaciones se puedan convertir en
solo una.
35. UNO A UNO - EJEMPLO
1
1
CARRO
tablilla
marca
modelo
MOTOR
número
descripción
posee
está asignado
36. CONVENCIONES DE LOS
ATRIBUTOS
1. Los nombres de los atributos se crean
pensando en el usuario (debe entenderlos)
2. EL nombre de la entidad no debe incluirse
como parte del nombre del atributo
3. Deben ser específicos y descriptivos. (Ej.
cantidad devuelta, fecha de nacimiento,
etc.)
37. SÍMBOLOS PARA LOS ATRIBUTOS
1. * - Significa obligatorio (el atributo debe
ser llenado por el usuario, no se puede
dejar en blanco)
2. 0 – Significa opcional, el usuario no está
obligado a llenar ese atributo.
3. # - Identifica un atributo que es UID
(también hay que ponerle el símbolo de
obligatorio).
4. (#) - UID segundario. Por ejemplo: seguro
social.
38. Normalización
Es el análisis de dependencias funcionales entre
atributos (o items de datos).
El propósito de la normalización es reducir
complejas vistas de usuario a un conjunto de
pequeñas y estables estructuras de datos.
La experiencia muestra claramente que
estructuras de datos normalizadas son mas
flexibles, estables y mas fáciles de mantener, que
las estructuras no normalizadas.
39. Pasos para la normalización
Primero se identifican las vistas de
usuario, luego cada vista es convertida a
la forma de una relación no normalizada.
remueven los grupos repetitivos, y se
obtiene un conjunto de relaciones en 1FN
se remueven dependencias parciales,y el
resultado es un conjunto de relaciones en
2FN
Finalmente remueven las dependencias
transitivas creando un conjunto de
relaciones en 3FN.
41. Relaciones No Normalizadas
Una relación no normalizada es una
relación que contiene uno o mas grupos
repetitivos.
Desde que cada alumno se puede
inscribir en uno o mas cursos-sección, los
datos de los cursos-sección en la vista
constituyen grupos repetitivos dentro de
los datos de los alumnos.
44. Datos redundantes
Como se observa en la relación no
normalizada por cada alumno
existen varios cursos-sección matriculados,
cada uno con un docente
responsable a quien se le ubica en una
oficina determinada.
• La principal desventaja de relaciones no
normalizadas es que ellas
contienen datos redundantes.
• En el ejemplo, vemos que el curso MA123
puede aparecer varias veces,
que ocurriría si deseamos cambiar el
nombre del curso ?
45. Anomalías de Datos
Comportamientos anómalos que se pueden
presentar al insertar, borrar y actualizar
datos en una base de datos relacional,
producidos por un diseño deficiente.
46. Anomalía de Inserción (insert)
• La existencia de un objeto requiere la existencia
de otro objeto independiente.
– Ej: Factura (nfact, ncliente, nombre, direccion,
fecha,total)
Reporte
(codalum,nomalu,espec,codcur,denomin,nomdoc,ofic
,secc)
• Para añadir un nuevo cliente o un nuevo curso,
obligatoriamente necesito crear una factura o un
nuevo alumno para ese cliente o ese curso. (Es
decir esta representación no permite organizar la
información correctamente).
47. Anomalía de Borrado o
Eliminación (delete)
• El borrado (rutinario) de un registro puede hacer
que se pierda (borre) información que no se
quería eliminar.
– Factura (nfact, ncliente, nombre, direccion,
fecha, total)
Reporte
(codalum,nomalu,espec,codcur,denomin,no
mdoc,ofic,secc)
• Si se elimina una factura y es la única de un
cliente, o se elimina un alumnoy es el único
matriculado en el curso, se pierde la información
de ese cliente o de ese curso sección (pérdida de
datos).
48. Anomalía de Actualización
(update)
• Para cambiar el valor de un atributo, se necesita
cambiarlo simultáneamente en varios sitios, en
lugar de en uno.
– Factura (nfact, ncliente, nombre, direccion,
fecha, total)
Reporte(codalum,nomalu,espec,codcur,denom
in,nomdoc,ofic,secc)
• Para cambiar la dirección de un cliente o la
denominación de un curso, hay que hacerlo en
todas las facturas que tenga o en todas las
matriculas donde aparezca, a pesar que el cliente
sólo tiene una dirección y el cursosólo tiene una
denominación (por la redundancia).
49. Primera Forma Normal – 1FN
• Es una relación que contiene sólo valores simples o
atómicos en la intersección de cada fila y columna. Esto
es, una relación normalizada no contiene grupos
repetitivos.
• Para la 1FN separamos la relación no normalizada en dos
entidades, uno conformada con los grupos no repetitivos
y la otra con los grupos repetitivos.
– Reporte
(codalum,nomalu,espec,codcur,denomin,nomdoc,ofic,secc)
– Alumno (codalum,nomalu,espec)
CursoAlumno (codalum+codcur, denomin,nomdoc,ofic,secc)
52. Dependencias
• La razón de las anomalías es que varios de
los atributos no clave son dependientes
sólo de parte de la clave primaria (de
algunos atributos) y no de la clave
primaria total.
• Los atributos no clave que dependen de la
clave primaria son totalmente
dependientes los otros son sólo
parcialmente dependientes.
54. Segunda Forma Normal – 2FN
• Para eliminar las anomalías de la 1FN, debemos
remover las dependencias funcionales parciales.
• Una relación esta en segunda forma normal si
esta en 1FN y toda dependencia funcional parcial
ha sido removida.
• Para convertir una relación con dependencias
parciales a 2da. forma normal (2FN), creamos
dos nuevas relaciones, una con atributos que son
totalmente dependientes de la clave primaria y la
otra con atributos que son parcialmente
dependientes de la clave.
56. Tercera Forma Normal – 3FN
• Una relación esta en 3ra. Forma normal
(3FN) si esta en 2FN y no contiene
dependencias transitivas.
• Esto es, cada atributo no clave es
totalmente dependiente de la clave
primaria y no existen dependencias
transitivas(“ocultas”).
58. Forma Normal Boyce&Codd -
BCNF
• Cuando una relación tiene mas de una clave
candidata, se pueden presentar anomalías aun
cuando la relación este en 3FN.
• R.F. Boyce y E.F. Codd identificaron esta
deficiencia y propusieron una extraña definición
de 3FN que soluciona el problema, introduciendo
el concepto de determinante.
• Un determinante es cualquier atributo (simple o
compuesto) sobre el cual algún otro atributo es
funcionalmente dependiente (total).
59. Forma Normal Boyce&Codd -
BCNF
• La relación esta en 3FN.
• Cada alumno puede
especializarse en varias
materias.
• Por cada especialidad
un alumno sólo puede
tener un asesor
• Cada especialidad tiene
varios asesores
• Cada asesor asesora
sólo una especialidad.
• Existen dos claves
candidatas
(codalum+espec) y (codalum+asesor).
60. Forma Normal Boyce&Codd -
BCNF
• Con esto se eliminan las posibles
anomalías de inserción, eliminación
y actualización.
61. Cuarta Forma Normal – 4FN
• Una relación esta en 4FN si esta en la BCFN y no
contiene dependencias multivaluadas.
• Existe una dependencia multivaluada cuando hay
tres atributos (A,B y C) en una relación, tal que
por cada valor de A existe un bien definido
conjunto de valores de B y un bien definido
conjunto de valores de C, sin embargo el
conjunto de valores de B es independiente del
conjunto C y viceversa.
62. Cuarta Forma Normal – 4FN
• La relación esta en la BCFN.
• La clave primaria de la relación
se
expresa en función de los tres
atributos.
• Por cada computadora existe un
conjunto
de paquetes y un conjunto de
tiendas que
las venden.
• Los paquetes y las tiendas son
independientes.
64. Quinta Forma Normal – 5FN
• Permite hacer frente a un tipo de dependencia
denominada dependencia de unión
(Join dependency).
• Suele presentarse cuando resolvemos tres (o mas)
entidades, todas relacionadas con una relación
muchos-a-muchos a las otras.
• Es algunas veces referida como Join-Proyection
Normal Form (JPNF).
• Estas relaciones son raras en la práctica.
66. Solución a través de la Tabla
Asociativa - 5NF
• La solución correcta a este problema es mucho mas simple,
hay que
introducir una simple entidad asociativa enlazando las otras
tres, a la
que podemos denominar Carro_Color_Modelo.
67.
68. FORMAS DE INGRESAR A
FOXPRO
Inicio- Todos los programas-microsoft
visual studio 6.0 – microsoft fox pro 6.0
Inicio ejecutar-
70. El Diseñador de formularios con barras de herramientas: Diseñador de
formularios, Controles de formularios, Diseño y Paleta
71. CREANDO LA BASE DE DATOS
Para crear una Base de Datos seguir los siguientes pasos :
En la ventana de comandos escribir el comando CREATE
DATABASE.A continuación aparecerá una ventana similar a
la siguiente figura.
:
73. Comandos y funciones para manipular bases de
datos y sus objetos
ADATABASES( )
CREATE VIEW
MODIFY CONNECTION
ADBOBJECTS( )
DBC( )
MODIFY DATABASE
ADD TABLE
DBGETPROP( )
MODIFY PROCEDURE
ALTER TABLE
DBSETPROP( )
MODIFY STRUCTURE
74. Comandos y funciones para manipular bases
de datos y sus objetos
CLOSE DATABASE
DELETE DATABASE
OPEN DATABASE
COPY PROCEDURES
DELETE VIEW PACK DATABASE
CREATE CONNECTION
DISPLAY DATABASE
RENAME TABLE
CREATE DATABASE
DROP TABLE
REMOVE TABLE
CREATE SQL VIEW
INDBC( )
SET DATABASE
CREATE TABLE
LIST DATABASE
VALIDATE DATABASE
75. Ejemplos:
OPEN DATABASE testdata
ADD TABLE orditems
REMOVE TABLE orditems
DROP TABLE orditems NORECYCLE
VALIDATE DATABASE RECOVER
Agregar clave externa
ALTER TABLE orders;
ADD FOREIGN KEY cust_id TAG ;
cust_id REFERENCES customer
ALTER TABLE orders DROP FOREIGN KEY TAG cust_id
SAVE
muestra el número de versión de la base de datos
testdata:
? DBGETPROP('testdata', 'database', 'version')
76. Trabajar con Tablas
ALTER TABLE
CLOSE TABLES
CREATE TABLE
DELETE FILE
REMOVE TABLE
RENAME TABLE
DROP TABLE
78. Elegir los tipos de datos
La clase de valores que se van a permitir en el campo. Por
ejemplo, no puede almacenar texto en un campo Numeric.
El espacio de almacenamiento que Visual FoxPro debe
reservar para los valores almacenados en el campo. Por
ejemplo, todos los valores con tipo de datos Currency
ocuparán 8 bytes.
Los tipos de operaciones que pueden realizarse con los
valores almacenados en el campo. Por
ejemplo, Visual FoxPro puede hallar la suma de valores
numéricos o de moneda, pero no la de
valores de tipo character o general.
Si Visual FoxPro puede o no indexar u ordenar los valores del
campo. No es posible ordenar ni crear índices para los
campos de tipo memo o general.
79. Crear valores predeterminados de
campo
CREATE TABLE customer (cust_id C(6),
company C(40), contact C(30), ;
maxordamt Y(4) DEFAULT 1000)
80. En el Diseñador de tablas, escriba la
máscara en el cuadro Máscara de
entrada en el área Mostrar.–O bien–
DBSetProp("orders.postalcode","field","Inpu
tMask", "99999-9999")
Formato de salida
DBSetProp("orders.postalcode","field","Form
at","@R 99999-9999")
Para proporcionar una máscara de entrada
81. Para crear una regla a nivel de campo
ALTER TABLE orditems
ALTER COLUMN quantity SET CHECK
quantity >= 1
•Validar valores a nivel de registro
ALTER TABLE employee SET CHECK ;
hire_date >= birth_date + (18 * 365.25) ;
ERROR "Los empleados deben tener 18 años
en la fecha de contratación"
82. Crear descencadenates
PROCEDURE updProductsTrigger
IF (units_in_stock+units_on_order) <=
reorder_level
INSERT INTO Reorder VALUES(Products.product_id,
;
Products.reorder_amount)
ENDIF
ENDPROC
•Eliminar Descencadenates
DELETE TRIGGER ON customer FOR UPDATE
83. Para eliminar un campo de una tabla
En el Diseñador de tablas, seleccione el
campo–O bien– Utilice la cláusula DROP
COLUMN del comando.
Por ejemplo, el comando siguiente elimina el
campo.
ALTER TABLE customer DROP COLUMN fax
84. Agregar Registros
INSERT INTO customer (cust_id,
company, contact) ;
VALUES ("SMI007", "Calzados Arbor",
"Daniel Rendich")
APPEND BLANK && registro disponible
ahora
REPLACE lastname WITH "SMITH" &&
almacenar valor character en el campo
85. Marcar registros para su eliminación
USE products
DELETE FROM products WHERE discontinu = .T.
BROWSE
Pack, zap, recall
86. Indexar tablas
•Para crear una clave de índice de una tabla
lEn el Diseñador de tablas, elija la ficha Índices e introduzca la
información de una clave de
índice. Elija Normal como tipo de índice.
–O bien– Utilice el comando INDEX.
USE customer
INDEX ON city TAG city
•Índices Complejos
INDEX ON SocSec + LastName + FirstName TAG MyIndex
INDEX ON cust_id + STR(maxordamt, 8, 2) TAG custmaxord
87. Crear un archivo de índice
Un índice principal nunca permite valores
duplicados en la expresión o en los campos
especificados.
Los índices principales se utilizan sobre todo en la
tabla principal o “referenciada” para establecer la
integridad referencial en una relación persistente.
Sólo es posible crear un índice principal para cada
tabla. Visual FoxPro devolverá un error si especifica
un índice principal sobre un campo que
contenga datos duplicados.
88. Indices
Un índice candidato nunca permite
valores duplicados en la expresión o en los
campos especificados.
El nombre “candidato” hace referencia al
estado del índice: puesto que estos índices
no admiten valores duplicados, se
convierten en “candidatos” para ser
elegidos como índice principal de la tabla.
89. Establecer un índice principal o
candidato
Indices principales y candidatos pueden
crearse con los comandos CREATE TABLE y
ALTER TABLE.
Puede utilizar ambos tipos de índices para
definir el lado “uno” de una relación
persistente de uno a varios o de uno a uno.
ALTER TABLE customer ADD PRIMARY KEY
cust_id TAG cust_id
ALTER TABLE customer ALTER COLUMN
cust_id c(5) PRIMARY KEY
90. Usar índices .cdx no estructurales
Un índice .cdx no estructural resulta útil
cuando desea crear múltiples etiquetas de
índice con un fin determinado, pero no
quiere cargar sus aplicaciones manteniendo
estos índices de una forma continua.
INDEX ON title TO TAG title OF quest
INDEX ON hire_date TO TAG hiredate OF quest
•Eliminar Indice
DELETE TAG title
•En el caso de que la etiqueta que desea eliminar sea la clave principal
de la tabla employee, puede utilizar el comando ALTER TABLE:
ALTER TABLE DROP PRIMARY KEY
91. Filtrar datos
Puede limitar el acceso a los registros que
se desee con un índice filtrado. Al crear un
índice filtrado,solamente estarán
disponibles para su presentación y acceso
los registros que satisfagan la expresión
de filtro.
INDEX ON country+last_name FOR title = "Representante de
ventas" ;
TAG reps_cntry
BROWSE
93. Vistas
Abra una base de datos y use el comando CREATE
SQL condiciones de combinación a la cláusula FROM.
OPEN DATABASE testdata
CREATE SQL VIEW cust_orders_view AS ;
SELECT * FROM testdata!customer ;
INNER JOIN testdata!orders ;
ON customer.cust_id = orders.cust_id
CREATE SQL VIEW
cust_orders_emp_view AS ;
SELECT * FROM testdata!customer, ;
testdata!orders, testdata!employee ;
WHERE customer.cust_id =
orders.cust_id ;
AND orders.emp_id =
employee.emp_id
94. 16. Creación de formularios
•Los formularios no sólo sirven para
ofrecer a los usuarios una interfaz
familiar para ver e introducir datos en
una base de datos.
•También ofrecen un amplio conjunto de
objetos que pueden responder a los
eventos del usuario (o del sistema)
permitiéndoles realizar las tareas de
administración de información de la
forma más sencilla e intuitiva posible.
95. Los formularios
Los formularios y los conjuntos de
formularios son objetos con sus propias
propiedades, eventos y
métodos que pueden establecerse en el
Diseñador de formularios. Un conjunto de
formularios consta
de uno o más formularios que pueden
manipularse como una unidad
96. Crear un formulario nuevo
Puede crear formularios nuevos en el Diseñador de
formularios, y ver a medida que lo diseña cómo
verá el usuario cada objeto.
Para crear un formulario nuevo
En el Administrador de proyectos, seleccione
Formularios y elija Nuevo.
-O bien–
En el menú Archivo, elija Nuevo, seleccione
Formulario y, a continuación, elija Nuevo
archivo.
O bien–
Utilice el comando CREATE FORM.
97. Agregar controles de Visual FoxPro a
un formulario
Para agregar controles a un formulario
l En la barra de herramientas Controles de
formularios, seleccione el botón del control
deseado y haga clic o arrástrelo para ajustar
su tamaño en el formulario.
98. Agregar controles vinculados a datos
a un formulario
Puede vincular controles a datos de una tabla, una
vista, un campo de tabla o un campo de vista si
establece la propiedad ControlSource de un
control a un campo de la propiedad
RecordSource de una cuadrícula, a una tabla o
una vista. Pero también puede crear controles
vinculados a datos si arrastra
campos o tablas al formulario directamente desde:
El Administrador de proyectos
El Diseñador de bases de datos
El Diseñador de entorno de datos
99. Para agregar un objeto basado en
una clase personalizada
En el Administrador de proyectos, arrastre la clase
hasta el formulario o la página.
Las clases se pueden agregar directamente desde la
barra de herramientas Controles de formularios
cuando las registra.
Agregar bibliotecas de clases a la barra de
herramientas Controles
Debe registrar las bibliotecas de clases antes de
poder mostrarlas en la barra de herramientas
Controles de formularios.
100. Agregar propiedades y métodos a un
formulario
Para agregar una propiedad nueva a un
formulario
1. En el menú Formulario, elija Nueva
propiedad.
2. En el cuadro de diálogo Nueva propiedad,
escriba el nombre de la propiedad. También puede
incluir una descripción de la propiedad que se
mostrará en la parte inferior de la ventana
Propiedades.
102. Establecer el entorno de datos
El entorno de datos de un formulario o un
conjunto de formularios incluye las tablas o vistas
con las que interactúa el formulario y las
relaciones entre tablas que espera el formulario.
Puede diseñar
visualmente el entorno de datos en el Diseñador
de entornos de datos y guardarlo con el
formulario o
con el conjunto de formularios.
103. Para abrir el Diseñador de entornos
de datos
1. En el menú Ver, elija Entorno de datos.
2. En el cuadro Agregar tabla o vista, elija
Agregar.
3. En el cuadro de diálogo Abrir, elija la
tabla o vista que desea agregar al entorno
de datos.
105. Propiedades habituales del entorno
de datos
Las siguientes propiedades del entorno de datos suelen establecerse en la
ventana Propiedades:
Propiedad Descripción Valor predeterminado
AutoCloseTables Controla si las tablas y las vistas secierran cuando se libera
el formulario o el conjunto de formularios.Verdadero (.T.)
AutoOpenTables Controla si las tablas y las vistas del
entorno de datos se abren cuando se
ejecuta el formulario.
Verdadero (.T.)
InitialSelectedAlias La tabla o la vista que se selecciona
cuando se ejecuta el formulario.
"" en tiempo de diseño. Si
no se especifica, en tiempo
de ejecución se seleccionará
inicialmente el primer cursor
agregado a
DataEnvironment.
108. Crear menús
Para partir del sistema de menús de Visual
FoxPro, utilice la función Menú rápido.
Para crear un sistema de menús con Menú rápido
1. En el Administrador de proyectos, seleccione la ficha Otros,
seleccione Menús y haga clic en
Nuevo.
2. Elija Menú.
Aparecerá el Diseñador de menús.
3. En el menú Menú, elija Menú rápido.
El Diseñador de menús contendrá ahora información sobre los
menús principales de Visual
FoxPro.
Sistema de menús creado con la función Menú rápido
110. Incluir menús en una aplicación
Para incluir un sistema de menús en
la aplicación
lAgregue el archivo .MNX al proyecto y, a
continuación, genere la aplicación desde el
proyecto.
Para obtener más información sobre la
generación de aplicaciones, consulte el
capítulo 13,Compilar una aplicación.
111. Para adjuntar un menú SDI a un
formulario
1. En el Diseñador de formularios, establezca la
propiedad ShowWindow del formulario a 2 -
Como formulario de nivel superior.
2. En el evento Init del formulario, llame al
menú.
Por ejemplo, si el menú se llama SDIMENU.MPR,
agregue el código siguiente:
DO SDIMENU.MPR WITH THIS,.T.
113. Controles
Los controles son el medio fundamental de
interacción de los usuarios. Para
manipular sus datos y llevar a cabo tareas
los usuarios escriben y hacen clic en los
controles, y se desplazan por los controles
de los formularios de su aplicación.
114. casillas de verificación
Las casillas de verificación pueden
emplearse para permitir que un usuario
especifique un estado
booleano: Verdadero o Falso, Activado o
Desactivado, Abierto o Cerrado.
115. Controles
Botón de opción Si ControlSource es un
campo numérico, 0 ó 1 se escribe en el
campo,en función de si se elige el botón.
Si ControlSource es un campo de
caracteres, en el campo se escribirá(.T.) o
(.F.), en función de si se elige el botón o
no.
Ejemplo.
THISFORM.opgChoices.optCust.Caption = "Ordenar por Customer"
116. Consultas e Informes
Cuando utiliza una consulta o una vista en
su aplicación, en realidad utiliza una
instrucción
SELECT - SQL.
117. Para crear una instrucción SELECT - SQL
Utilice el Diseñador de consultas o el Diseñador de
vistas para crear la instrucción y copie el
contenido de la ventana SQL a una ventana de
código.
–O bien– En una ventana de código, escriba la
instrucción SELECT - SQL.
Por ejemplo, puede seleccionar todos los registros
de la tabla
Select * from historias where codhis =“10000”
118. Seleccionar un número o porcentaje
de registros
SELECT TOP 10 *;
FROM testdata!customer INNER JOIN
testdata!orders ;
ON Customer.cust_id = Orders.cust_id;
GROUP BY Customer.cust_id;
ORDER BY Orders.order_amt DESC
119. Especificar destinos para resultados
de consultas
Para enviar los resultados a este
destino Utilice esta cláusula
Otra tabla INTO TABLE mitabla
Matriz INTO ARRAY aMiMatriz
Tabla temporal INTO CURSOR micursor
Ventana activa TO SCREEN
Ventana Examinar Predeterminado si no
se especifica otro destino.
120. Este ejemplo muestra una cláusula
INTO para una tabla:
SELECT * ;
FROM tastrade!customer ;
WHERE customer.country = "Canadá" ;
INTO TABLE mitabla
* Customer tabla de foxpro
121. Para especificar una matriz como
destino
Utilice la cláusula INTO de la instrucción
SELECT - SQL para especificar un destino.
El ejemplo siguiente muestra una cláusula
INTO para una matriz:
SELECT * ;
FROM tastrade!customer ;
WHERE customer.country = "Canadá" ;
INTO ARRAY aMiMatriz
122. Rellenar un control de formulario
Si desea mostrar los resultados de sus consultas en un
formulario, puede utilizar una tabla, una matriz o un
cursor para colocarlos en una cuadrícula, un cuadro
de lista o un cuadro combinado.
Para rellenar un control cuadro de lista o cuadro
combinado con una tabla o cursor
1. En el Diseñador de formularios, modifique el
formulario que tiene el control que desea
rellenar.
2. Establezca la propiedad RowSourceType a 3 - SQL
Statement.
3. En la propiedad RowSource del control, escriba una
instrucción SELECT - SQL que incluya
una cláusula INTO TABLE o INTO CURSOR.
123. Para llenar un control cuadrícula con
una tabla o un cursor
1. En el Diseñador de formularios, modifique el
formulario que tiene el control que desea llenar.
2. En el evento Load del formulario, escriba una
instrucción SELECT - SQL que incluya una
cláusula INTO TABLE o INTO CURSOR.
3. Establezca la propiedad RecordSource de la
cuadrícula como el nombre de la tabla o cursor
que haya creado en el paso 2.
4. Establezca la propiedad RecordSourceType de la
cuadrícula a 0 – Table (para una tabla) o 1 –
Alias (para un cursor).
124. Para enviar los resultados a un
informe o una etiqueta existente
Utilice la instrucción SELECT - SQL con un comando REPORT o
LABEL.
El ejemplo siguiente utiliza las cláusulas GROUP BY y ORDER
BY, así como el comando
REPORT FORM:
SELECT * ;
FROM tastrade!customer ;
WHERE customer.country = "Canadá" ;
GROUP BY customer.region ;
ORDER BY customer.postal_code, customer.company_name ;
INTO CURSOR MiCursor
REPORT FORM MYREPORT.FRX
125. El ejemplo siguiente utiliza un comando
LABEL FORM:
SELECT * ;
FROM tastrade!customer ;
WHERE customer.country = "Canadá" ;
GROUP BY customer.region ;
ORDER BY customer.postal_code,
customer.company_name ;
INTO CURSOR micursor
LABEL FORM MYLABEL.LBX
126. Para enviar los resultados a un
informe o una etiqueta existente
Utilice la instrucción SELECT - SQL con un comando REPORT
o LABEL.
El ejemplo siguiente utiliza las cláusulas GROUP BY y ORDER
BY, así como el comando
REPORT FORM:
SELECT * ;
FROM tastrade!customer ;
WHERE customer.country = "Canadá" ;
GROUP BY customer.region ;
ORDER BY customer.postal_code, customer.company_name ;
INTO CURSOR MiCursor
REPORT FORM MYREPORT.FRX
127. Mostrar los resultados de la consulta en una ventana
Código Comentario
frmMyForm=createobj("form")
frmMyForm.Left = 1
frmMyForm.Top = 1
frmMyForm.Width = 130
frmMyForm.Height = 25
frmMyForm.Caption = "Principales clientes"
frmMyForm.Show
SELECT customer.company_name,
SUM(orders.freight) ;
FROM tastrade!customer,
tastrade!orders ;
WHERE customer.customer_id =
orders.customer_id ;
GROUP BY customer.company_name ;
HAVING SUM(orders.freight) > 5000 ;
ORDER BY 2 DESC
129. Depuraciones en FoxPro
FoxPro proporciona el comando ON ERROR de que lo
permite a programadores para interceptar errores
específicos que se producen en aplicaciones.
•El nombre de equipo donde se produjo el error.
•El número de error.
•El mensaje de error.
•La línea de código donde se produjo el error si el
código fuente está disponible.
•El archivo de programa en el que apareció el error.
•El número de línea donde se produjo el error.
•El nombre de la tabla actualmente seleccionada
cuando se produjo el error.
•La fecha y el tiempo del error.
130. Evolución de los dispositivos de
almacenamiento
1 Siglos atrás (ABACO)
2 Tarjeta perforada
3 Sistemas magnéticos
4 Microchip
5 Memoria RAM
6 Disco duro
7 Dispositivos portátiles
(cd,DVD,USB,blue Ray )
131. Evolución de la gestión de datos
Gestión de empresas con COBOL
Identificación de procesos y datos
Generaciones de Bases de Datos
– 1ª SGBD en Red (Jerárquicos)
– 2ª SGBD Relacionales
– 3ª SGBD Inteligentes, Activos,
Orientados a
Objetos, etc.
132. EJEMPLOS DE DIAGRAMAS
COMPLETOS DE SISTEMAS
tener
ubicado
estar
ubicado en
rentar
rentado por
tener
creada por
contener
contenido en
SLIP
#* id
* numero
* largo
* renta anual
* nombre del bote
* tipo de bote
FACILIDAD
#* id
* nombre
* dirección
* ciudad
* estado
* zipcode
SERVICIO
#* id
* descripción
CLIENTE
#* id
* nombre
* dirección
* ciudad
* estado
* zip code
SOLICITUD
#* id
* descripción
* status
* estimado de horas
* horas usadas
o fecha próximo servicio
SISTEMA RENTA
DE LOTES DE
BOTES
133. ESTUDIANTE
#* id
* nombre
o inicial
* apellido paterno
* apellido materno
* género
(#) seguro social
o e-mail
o celular
o comentarios
DEPARTAMENTO
#* id
* nombre
PROGRAMA
#* id
* nombre
PUEBLO
#* id
* nombre
SOLICITUD
#* id
* tipo de solicitud
* fecha de solicitud
UNIVERSIDAD
#* id
* nombre
PERIODO
#* id
* nombre
estar
compuesto de pertenecer a pertenecer a
estar habitado
por
el originador de
originada por
seleccionada por
el originador de
creada para
creada para
creada para
seleccionado por
SISTEMA SOLICITUD VIAJES
INTERNACIONALES
134. DIAGRAMA PARA REPRESENTAR LAS RELACIONES ENTRE LAS ENTIDADES
Modelación conceptual y
lógica
Modelación Física (Access)
Uno a uno (1 : 1)
Uno a Muchos (1 : M)
Muchos a Muchos (M : M)
No aplica
A B
B
A
A B