SlideShare una empresa de Scribd logo
1 de 135
BALOTA Nº 10
BASE DE DATOS
Alumno: WILLY DELGADO D.
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)
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.
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).
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.
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.
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.
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.
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.)
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.
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}
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.
TERMINOLOGÍA
TRADICIONAL BASE DE DATOS
BASE DE DATOS
RELACIONAL
Archivo Entidad Tabla
Record Instancia Fila
Campo Atributo Columna
EJEMPLO DE ENTIDADES
 ESTUDIANTE
 EMPLEADO
 CLIENTE
 MATRÍCULA
 CURSOS
 DEPARTAMENTO
 LIBRO
 PRESTAMO
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
RELACIONES
Es una asociación bidireccional
(ambas direcciones) e imprecindible
entre dos entidades o entre una
entidad y ella misma.
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
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”
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)
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
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.
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
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
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Í:
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
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
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
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
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)
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.
MUCHOS A UNO - EJEMPLO
DEPARTAMENTO
id
localización
descripción
EMPLEADO
numero
nombre
seguro social
habitado por
estar asignado
M
∞
1
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.
MUCHOS A MUCHOS - EJEMPLO
M
∞
M
∞
ESTUDIANTE
número
nombre
seguro social
CURSO
código
semestre
descripción
tomar
tomado por
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.
UNO A UNO - EJEMPLO
1
1
CARRO
tablilla
marca
modelo
MOTOR
número
descripción
posee
está asignado
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.)
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.
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.
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.
Pasos para la normalización
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.
Relaciones No Normalizadas
Datos redundantes
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 ?
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.
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).
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).
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).
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)
Primera Forma Normal – 1FN
Primera Forma Normal – 1FN
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.
Dependencias
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.
Segunda Forma Normal – 2FN
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”).
Tercera Forma Normal – 3FN
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).
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).
Forma Normal Boyce&Codd -
BCNF
• Con esto se eliminan las posibles
anomalías de inserción, eliminación
y actualización.
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.
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.
Cuarta Forma Normal – 4FN
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.
Quinta Forma Normal – 5FN
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.
FORMAS DE INGRESAR A
FOXPRO
 Inicio- Todos los programas-microsoft
visual studio 6.0 – microsoft fox pro 6.0
 Inicio ejecutar-
CONCEPTOS BASICOS EN
FOXPRO
El Diseñador de formularios con barras de herramientas: Diseñador de
formularios, Controles de formularios, Diseño y Paleta
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.
:
CREANDO LA BASE DE DATOS
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
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
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')
Trabajar con Tablas
 ALTER TABLE
 CLOSE TABLES
 CREATE TABLE
 DELETE FILE
 REMOVE TABLE
 RENAME TABLE
 DROP TABLE
Tablas
 Crear tabla
CREATE TABLE customer (cust_id C(6),
company C(40), contact C(30))
 Crear tabal libre
CREATE TABLE peqtbl FREE (nombre c(50))
 Agregar campos
ALTER TABLE customer ;
ADD COLUMN (company C(40), contact
C(30))
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.
Crear valores predeterminados de
campo
CREATE TABLE customer (cust_id C(6),
company C(40), contact C(30), ;
maxordamt Y(4) DEFAULT 1000)
 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
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"
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
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
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
Marcar registros para su eliminación
USE products
DELETE FROM products WHERE discontinu = .T.
BROWSE
 Pack, zap, recall
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
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.
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.
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
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
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
Ejemplos Indice
USE employee
INDEX ON last_name TAG last_name
INDEX ON country TAG country
SET ORDER TO country
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
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.
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
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.
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.
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
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.
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.
Agregar propiedades y métodos a un
formulario
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.
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.
El Diseñador de entornos de datos
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.
Establecer propiedades en
tiempo de diseño
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
Menus
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.
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.
Menús con teclas de acceso
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.
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.
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"
Consultas e Informes
 Cuando utiliza una consulta o una vista en
su aplicación, en realidad utiliza una
instrucción
 SELECT - SQL.
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”
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
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.
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
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
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.
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).
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
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
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
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
Refinar el diseño de página
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.
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 )
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.
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
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
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
Wbase de datos pruebaaaaaaaaaaaaaaaaaaaa

Más contenido relacionado

Similar a Wbase de datos pruebaaaaaaaaaaaaaaaaaaaa

Similar a Wbase de datos pruebaaaaaaaaaaaaaaaaaaaa (20)

Unidad 2 - Modelo Entidad-Relación.ppt
Unidad 2 - Modelo Entidad-Relación.pptUnidad 2 - Modelo Entidad-Relación.ppt
Unidad 2 - Modelo Entidad-Relación.ppt
 
Presen Clases Bdd Unidad 3
Presen Clases Bdd Unidad 3Presen Clases Bdd Unidad 3
Presen Clases Bdd Unidad 3
 
Modelo de datos jesus marcano
Modelo de datos jesus marcanoModelo de datos jesus marcano
Modelo de datos jesus marcano
 
Base de Datos - Modelo Entidad Relación
Base de Datos - Modelo Entidad RelaciónBase de Datos - Modelo Entidad Relación
Base de Datos - Modelo Entidad Relación
 
Presentacion bd
Presentacion bdPresentacion bd
Presentacion bd
 
El modelo de datos entidad relación
El modelo de datos entidad relaciónEl modelo de datos entidad relación
El modelo de datos entidad relación
 
plantilla
plantillaplantilla
plantilla
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
 
3 diseño de-bd (1)
3 diseño de-bd (1)3 diseño de-bd (1)
3 diseño de-bd (1)
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
 
3 diseño de-bd23
3 diseño de-bd233 diseño de-bd23
3 diseño de-bd23
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
 
3
33
3
 
3 diseño de-bd (1)
3 diseño de-bd (1)3 diseño de-bd (1)
3 diseño de-bd (1)
 
3 diseño de-BD
3 diseño de-BD3 diseño de-BD
3 diseño de-BD
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
 

Wbase de datos pruebaaaaaaaaaaaaaaaaaaaa

  • 1. BALOTA Nº 10 BASE DE DATOS Alumno: WILLY DELGADO D.
  • 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.
  • 40. Pasos para la normalización
  • 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. :
  • 72. CREANDO LA BASE DE DATOS
  • 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
  • 77. Tablas  Crear tabla CREATE TABLE customer (cust_id C(6), company C(40), contact C(30))  Crear tabal libre CREATE TABLE peqtbl FREE (nombre c(50))  Agregar campos ALTER TABLE customer ; ADD COLUMN (company C(40), contact C(30))
  • 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
  • 92. Ejemplos Indice USE employee INDEX ON last_name TAG last_name INDEX ON country TAG country SET ORDER TO country
  • 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.
  • 101. Agregar propiedades y métodos a un formulario
  • 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.
  • 104. El Diseñador de entornos 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.
  • 107.
  • 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
  • 109. Menus
  • 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.
  • 112. Menús con teclas de acceso
  • 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
  • 128. Refinar el diseño de página
  • 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