programacion de 'bases de datos1

347
BASES DE DATOS MODELADOS Y ANALISIS DE DATOS

Upload: kokito2008

Post on 06-Jun-2015

1.700 views

Category:

Documents


1 download

DESCRIPTION

es todo sobre bases de datos

TRANSCRIPT

Page 1: Programacion de 'Bases de Datos1

BASES DE DATOS

MODELADOS Y ANALISIS DE DATOS

Page 2: Programacion de 'Bases de Datos1

PARTE I

FUNDAMENTOS DE BASES DE DATOS

Page 3: Programacion de 'Bases de Datos1

Objetivos

Usar en forma detallada las técnicas para diseño e implantación de bases de datos relacionales, para que sirvan de cimiento para el desarrollo de sistemas de información.

Desarrollar un proyecto de ingeniería referente a un sistema de información.

Page 4: Programacion de 'Bases de Datos1

UNIDAD 1. INTRODUCCIÓN

Un sistema de manejo de Bases de Datos DBMS, es un conjunto de datos relacionados entre sí y un grupo de programas para tener acceso a esos datos.

DATOS PROGRAMAS

Page 5: Programacion de 'Bases de Datos1

El objetivo del DBMS es crear un ambiente en el que sea posible guardar y recuperar información de la base de datos, de forma eficiente.

Incluye:- Definición de estructuras de

almacenamiento de datos- Mecanismos para manejo de datos- Seguridad de la información- Uso concurrente de la base de datos

UNIDAD 1. INTRODUCCIÓN

Page 6: Programacion de 'Bases de Datos1

Los DBMS minimizan los problemas de los sistemas de procesamiento de archivos:- Redundancia e inconsistencia de datos- Dificultad en el acceso a los datos- Aislamiento de datos- Problemas de integridad- Problemas de atomicidad- Anomalías en el acceso concurrente- Problemas de seguridad

1. Propósito de los sistemas de bases de datos

Page 7: Programacion de 'Bases de Datos1

Los DBMS proporcionan a los usuarios una visión abstracta de los datos.

El sistema esconde ciertos detalles de cómo se almacenan y mantienen los datos.

Las bases de datos revolucionaron el mundo de las computadoras, con este nuevo concepto “abstracción de los datos”, a diferencia de lo que era tradicional “abstracción de lenguajes de programación”.

2. Visión de los datos

Page 8: Programacion de 'Bases de Datos1

Para ocultar esta complejidad del almacenamiento se definen 3 niveles:

Nivel físico.- Describe como se almacenan realmente los datos en forma de palabras y bytes.

Nivel conceptual.- Describe qué datos se almacenan y qué relaciones hay entre ellos, en forma de estructuras.

Nivel de visión.- Muchos usuarios necesitan acceder a una parte de la base de datos. El sistema proporciona vistas.

2.1. Abstracción de los datos

Page 9: Programacion de 'Bases de Datos1

La colección de la información almacenada en la base de datos en un momento particular se llama un ejemplar de la base de datos.

El esquema de la base de datos es una descripción de la misma en forma de estructuras de datos.Existen tres tipos de esquema: físico, lógico y subesquemas.

2.2. Ejemplares y esquemas

Page 10: Programacion de 'Bases de Datos1

Es la capacidad de modificar una definición de esquema en un nivel sin que afecte al nivel superior.

Independencia física de datos.- Es la capacidad de modificar el esquema físico sin tener que modificar los programas.

Independencia lógica de datos.- Es la capacidad de modificar el esquema lógico sin tener que modificar los programas.

La independencia lógica es más difícil de lograr que la independencia física.

2.3. Independencia de datos

Page 11: Programacion de 'Bases de Datos1

Para describir el esquema de una base de datos en cualquiera de los 3 niveles, es necesario definir los modelos de datos.

Un modelo de datos es un grupo de herramientas para describir los datos, sus relaciones, su semántica y sus ligaduras de consistencia.

Se pueden agrupar en 3 tipos de modelos:- Modelos lógicos basados en objetos- Modelos lógicos basados en registros- Modelos físicos de datos

3. Modelos de datos

Page 12: Programacion de 'Bases de Datos1

Parten de mundo real delimitando el entorno del sistema y dentro de este entorno identifican los objetos de interés.

Se utilizan para describir los datos en los niveles lógico y de visión, y especifican claramente las ligaduras de consistencia de los datos.

Como ejemplos de este grupo están el modelo entidad-relación y el modelo orientado a objetos.

3.1 Modelos lógicos basados en objetos

Page 13: Programacion de 'Bases de Datos1

Se basa en la percepción de un mundo real que consiste en un conjunto de objetos básicos llamados entidades, y de las relaciones entre estos objetos.

3.1.1. Modelo entidad-relación

persona automóvil accidenteposee ocurrió

kilometraje

modeloconductor

fecha importeañonombre

ci

domicilio

Page 14: Programacion de 'Bases de Datos1

Está basado en una colección de objetos agrupados en clases.

Una clase describe un conjunto de objetos que comparten los mismos atributos, operaciones, relaciones y semántica.

3.1.2. Modelo orientado a objetos

Valor

valorActual()historia()

CuentaCorrientetasaIeInterésValorActual()

Acción

valorActual()

Bono

valorActual()

PropiedadtasaciónvalorActual()

Page 15: Programacion de 'Bases de Datos1

3.2 Modelos lógicos basados en registros

Se usan para describir los datos en los niveles lógico y de visión.

Se usan tanto para especificar la estructura lógica completa de la base de datos como para una descripción de alto nivel.

A diferencia de los modelos basados en registros, no describen muy bien las ligaduras de consistencia de la base de datos.

Page 16: Programacion de 'Bases de Datos1

Los datos y las relaciones entre ellos se representa por medio de una serie de tablas, donde cada una tiene varias columnas.Artículos Movimientosnro_artí nombre nro_artí tipo cantpre_unit

3.2.1. Modelo relacional

10 1 10 1010 2 20 1010 1 5 1010 1 2 1025 1 1 2025 2 2 2025 1 2 535 1 10 5

5 Escobas10 Sardina25 Café35 Pasas

Page 17: Programacion de 'Bases de Datos1

Se representa por un conjunto de registros y las relaciones entre ellos por punteros

3.2.2. Modelo de red

5 Escobas

10 Sardinas

25 Café

35 Pasas

10 1 10 10

35 1 10 5

25 2 2 20

25 1 1 20

10 1 5 10

10 2 20 10

Page 18: Programacion de 'Bases de Datos1

Igual que el de red pero en forma de árbol

3.2.3. Modelo jerárquico

5 Escobas

10 Sardinas

25 Café

35 Pasas

10 1 10 10

35 1 10 5

25 2 2 20

25 1 1 20

10 1 5 10

10 2 20 10

Page 19: Programacion de 'Bases de Datos1

El modelo de datos físico se usa para describir datos en un nivel más bajo.

Dos de los más conocidos son el modelo de unificación y el modelo de memoria de marcos.

Este tipo de modelos no serán tema de estudio.

3.3 Modelo de datos físico

Page 20: Programacion de 'Bases de Datos1

9. Estructura del sistema completoUsuariosNormales

Programadoresde aplicación

Usuariossofisticados

Administradorde base de datos

Interfaces deaplicaciones

Programas de aplicación

consulta Esquema debase de datos

Código objetode los

programas

Precompilador del DML

Compilador del DML

Intérprete de DDL

Motor de evaluación de consultas

Índices Datos estadísticos

Diccionario de datosArchivo de datos

Gestor de transac-ciones

Gestor de memoria

intermedia

Gestor de archivos

Procesadordeconsultas

Gestor dealmacena-miento

Almacena-miento endisco

Usuarios

DBMS

Page 21: Programacion de 'Bases de Datos1

Lenguaje de definición de datos DDL, es una serie de definiciones que especifican el esquema de la base de datos

Lenguaje de manejo de datos DML, permite manipular la base de datos, utilizando las operaciones de recuperar, insertar, actualizar y borrar. Hay 2 tipos:- DML procedimental, se especifica qué datos se necesitan y cómo obtenerlos.- DML no procedimentales, solo se indica qué datos se necesitan, no cómo obtenerlos.

4. Lenguajes de bases de datos

Page 22: Programacion de 'Bases de Datos1

5. Gestión de transacciones

Una transacción es una colección de operaciones que se llevan a cabo en una aplicación de bases de datos. Debe seratómica, consistente y permitir durabilidad.

TRANSACCIÓN.- Transferencia de fondos:INICIARETIRA DE CUENTA ADEPOSITA A CUENTA BFIN

!Me hacéstodo

o nada!

!!!Y no teequivoqués!

Page 23: Programacion de 'Bases de Datos1

5. Gestión de transacciones

El gestor de transacciones asegura las propiedades de atomicidad, consistencia y durabilidad de las transacciones.

Atomicidad.- Se hacen todas las operaciones o ninguna.

Consistencia.- Si la base de datos es consistente cuando comienza debe serlo también cuando termine.

Durabilidad.- Los datos modificados por la transacción en la base de datos deben persistir.

Page 24: Programacion de 'Bases de Datos1

El gestor de almacenamiento es un módulo de programas que proporciona la interfaz entre los datos de bajo nivel en la base de datos, y los programas de aplicación y consultas.

Es responsable de la interacción con el gestor de archivos, y del almacenamiento, recuperación y actualización de la base.

6. Gestión de almacenamiento

Page 25: Programacion de 'Bases de Datos1

El DBMS tiene control centralizado sobre datos y programas.

La persona que tiene este control sobre el sistema es el administrador de base de datos o DBA en inglés. Se ocupa de:- Definir el esquema- Estructura de almacenamiento y accesos- Modificación de la organización física- Autorización para el acceso a los datos- Especificación de ligaduras de integridad

7. Administración de la base de datos

Page 26: Programacion de 'Bases de Datos1

Hay 4 tipos de usuarios en un sistema de base de datos, dependiendo de la forma como interactuan con el sistema.

Programadores de aplicación, quienes usan un lenguaje anfitrión que permite anidar consultas DML

Usuarios sofisticados, usan lenguaje DML Usuarios especializados, usan inteligen-

cia artificial, sistemas de expertos, etc. Usuarios normales, usan programas que

se han escrito previamente.

8. Usuarios de la base de datos

Page 27: Programacion de 'Bases de Datos1

UNIDAD 2.MODELO ENTIDAD RELACIÓN

ObjetivoUsar las técnicas existentes para modelar bases de datos de gran tamaño y complejas.

Page 28: Programacion de 'Bases de Datos1

1. Conceptos básicos

Entidad.- Es una cosa que puede ser objeto o concepto que el caso de estudio considera que tiene existencia independiente.

Atributo.- Es una propiedad de la entidad.

Relación.- Es una asociación entre entidades.

Page 29: Programacion de 'Bases de Datos1

Entidades, relaciones y ocurrencias.

Entidades.- agencia, productoRelaciones.- almacenaOcurrencia de entidad.- 2 agencia, 5 productoOcurrencia de relación.- 7 de almacena

1. Conceptos básicos

pr2 printerpr7 tape drivepr4 disk drivepr8 controlerpr6 ploter

a1 La Paz

a5 Santa Cruz

agencia productoalmacena

Page 30: Programacion de 'Bases de Datos1

1. Conceptos básicos

Identificador de entidad.- Es un atributo o atributo compuesto, cuyos valores identifican una ocurrencia de una entidad, puede haber varios “identificadores candidatos”.

Identificador de relación.- Es la unión de los identificadores de las entidades que participan en la relación.

Page 31: Programacion de 'Bases de Datos1

2. Propiedades de las relaciones

cardinalidad y participación Cardinalidad o grado de una relación.-

Determina la cantidad de ocurrencias de las entidades que participan en la relación

Para relaciones binarias hay tres posibles clases de cardinalidad

Page 32: Programacion de 'Bases de Datos1

2. Propiedades de las relaciones

cardinalidad y participación Cardinalidad 1:1

profesor cursorenseña

Rosario

Angel

Corrado

Ramona

IF-317

MAT-101

QMC-100

FIS-300

1 1

Page 33: Programacion de 'Bases de Datos1

2. Propiedades de las relaciones

cardinalidad y participación Cardinalidad 1:m

profesor cursorenseña1 m

Rosario

Angel

Corrado

Ramona

IF-317

MAT-101

QMC-100

FIS-300

Page 34: Programacion de 'Bases de Datos1

2. Propiedades de las relaciones

cardinalidad y participación Cardinalidad m:m

profesor cursorenseñam n

Rosario

Angel

Corrado

Ramona

IF-317

MAT-101

QMC-100

FIS-300

Page 35: Programacion de 'Bases de Datos1

2. Propiedades de las relaciones

cardinalidad y participación Participación.- Hay dos formas en que una

entidad puede participar en una relación: Obligatoria.- Cada ocurrencia de la entidad

participa en la relación, o sea que tiene al menos una ocurrencia asociada en la otra entidad

No obligatoria.- Una ocurrencia puede existir independientemente.

Page 36: Programacion de 'Bases de Datos1

2. Propiedades de las relaciones

cardinalidad y participación

departamento empleadoemplea

Un departamento debe emplear al menos un empleadoUn empleado debe ser empleado por un departamento

departamento empleadoemplea

Un departamento no necesita emplear ningun empleadoUn empleado no necesita ser empleado por ningún depto.

Page 37: Programacion de 'Bases de Datos1

2. Propiedades de las relaciones

cardinalidad y participación

departamento empleadoemplea

Un departamento no necesita emplear ningún empleadoUn empleado debe ser empleado por un departamento

departamento empleadoemplea

Un departamento debe emplear al menos un empleadoUn empleado no necesita ser empleado por ningún depto.

Page 38: Programacion de 'Bases de Datos1

3. Trampas de conexión yrelaciones ternarias

Trampa de abanico.- Existe cuando dos o más relaciones salen de una entidad.

depto empleado

emplea

división

tienem

1 1

m

Me sacás el departamento donde trabaja el empleado e1?

Page 39: Programacion de 'Bases de Datos1

3. Trampas de conexión yrelaciones ternarias

depto empleadoemplea división tiene m1 1 m

depto tiene división emplea empleado

de1

de2di1

e1

e2

!! Oh mi Dios, no puedo... !!

Trampa de abanico.-

Page 40: Programacion de 'Bases de Datos1

3. Trampas de conexión yrelaciones ternarias

Trampa de grieta.- Ocurre cuando una relación descubierta no existe en el diagrama.

depto empleadoemplea división tiene m1 1 m

Hola?. Quién habla?. El sereno. En que te puedo servir?.Mi contrato no está en la base de datos.

Page 41: Programacion de 'Bases de Datos1

3. Trampas de conexión yrelaciones ternarias

Trampa de grieta.-

depto empleadoemplea división tiene

m

1 1 m

No tengo departamento “vigilancia”, y nome permiten crearlo...

trabaja

1

Page 42: Programacion de 'Bases de Datos1

3. Trampas de conexión yrelaciones ternarias

Relaciones ternarias.- Otras trampas de conexión no pueden resolverse aumentando una relación binaria, la única forma es utilizar relaciones ternarias.

proveedor proyectoentregaparte provee mnmn

Hola, quien habla?La contadora, no sabemos que materiales se han usado en el proyecto del puente.A ver....., “que partes utilizan que proyectos?”.

Page 43: Programacion de 'Bases de Datos1

3. Trampas de conexión yrelaciones ternarias

Relaciones ternarias.-

proveedor proyectoentregaparte provee mnmn

Y ahora quien será. Hola, quien habla?El encargado de compras, aquí hay un transpor-tista que dice que entregó ripio al proyecto delpuente, y no está en la base de datos...“que proveedor entrega que parte a que proyecto?”.

utiliza

Page 44: Programacion de 'Bases de Datos1

3. Trampas de conexión yrelaciones ternarias

Relaciones ternarias.-

proveedor

proyectopartep

n

m entrega

contratan

m

parte4 proy9

proveedor6

parte3 proy8

proveedor7

Page 45: Programacion de 'Bases de Datos1

4. Características del modeloER extendido

El modelo ER extendido incluye los conceptos de especialización y categorización.

Subclases y superclases.- En muchos casos es necesario representar una entidad como varias entidades. Por ejemplo, empleado como secretaria y administrador, empleado representa la superclase y las otras son subclases.

Page 46: Programacion de 'Bases de Datos1

4. Características del modeloER extendido

Especialización.- Es el proceso de definición de un set de subclases de una entidad, denominada superclase

empleado

secretaria técnico administrador asalariado horario

d d

proyectoAdmi-nistra

1

1velocidad_tipeo

Page 47: Programacion de 'Bases de Datos1

4. Características del modeloER extendido

Especialización.- Hay dos motivos para generar especializaciones:

1 La primera es que ciertos atributos son aplicables solo a algunas ocurrencias de la entidad. Por ejemplo, secretaria tiene el atributo velocidad tipeo.

2 La segunda es que algunas relaciones participan con las subclases diréctamente y no con la superclase. Por ejemplo, la entidad proyecto participa con administrador y no necesariamente con empleado

Page 48: Programacion de 'Bases de Datos1

4. Características del modeloER extendido

Especialización.- Hay dos tipos de especialización:

1 Disjunta. Las ocurrencias de la superclase pertenecen a una o ninguna subclase.

empleado

secretaria técnico

d

Page 49: Programacion de 'Bases de Datos1

4. Características del modeloER extendido

Especialización.- Hay dos tipos de especialización:

2 Sobrepuesta.- Las ocurrencias de la superclase pueden pertenecer a varias subclases.

parte

parte_comprada parte_manufacturada

O

Page 50: Programacion de 'Bases de Datos1

4. Características del modeloER extendido

Especialización.- La especialización puede ser parcial o total:

1 Total.- Todas las ocurrencias de la superclase están representadas en la subclase.

2 Parcial.- No es obligatorio que las ocurrencias de la superclase estén representadas en alguna subclase.

Page 51: Programacion de 'Bases de Datos1

4. Características del modeloER extendido

Categorización.- En algunos casos hay dos o más entidades que no tienen nada en común, que se relacionan con otra entidad, en este caso es posible representarlas en una categoria.

compañiapersona banco

U

dueño vehículotienem1

Page 52: Programacion de 'Bases de Datos1

5. Esqueleto del modelo ERreglas de representación

Esqueleto del ER.- Es el diagrama ER, sus restricciones, y una lista de tablas con sus identificadores.

Modelo ER.- Es el diagrama ER, sus restricciones, y una descripción completa de las tablas y sus identificadores.

Page 53: Programacion de 'Bases de Datos1

1-1. Participación obligatoria de ambas

autoempleado usa11

Mario

Enrique

Gino

Chichi

317-SJH

101-PLU

100-WRA

300-LPQ

empleado(nro_emple, ....., nro_auto, .....)

* *

5. Esqueleto del modelo ERreglas de representación

Page 54: Programacion de 'Bases de Datos1

1-1. Participación obligatoria de una entidad

autoempleado usa11

Mario

Enrique

Gino

Chichi

317-SJH

101-PLU

100-WRA

empleado(nro_emple, .......)auto (nro_auto, ......., nro_emple)

*

5. Esqueleto del modelo ERreglas de representación

Page 55: Programacion de 'Bases de Datos1

1-1. Participación no obligatoria en ambas

autoempleado usa11

Mario

Enrique

Gino

Chichi

317-SJH

101-PLU

100-WRA

300-LPQ

empleado (nro_emple, .......)auto (nro_auto, .......)usa (nro_auto, nro_emple, .........)

5. Esqueleto del modelo ERreglas de representación

Page 56: Programacion de 'Bases de Datos1

1-m. Participación obligatoria de entidad m.

pacientesala ocupam1

sala-1

sala-7

sala-8

sala-4

Dante

Diodato

Oso

Techo e paja

sala (nro_sala, .......)paciente (nro_paciente, ......., nro_sala)

*

5. Esqueleto del modelo ERreglas de representación

Page 57: Programacion de 'Bases de Datos1

1-m. Participación no obligatoria de entidad m.

pacientesala ocupam1

sala-1

sala-7

Dante

Diodato

Oso

Techo e paja

sala (nro_sala, .......)paciente (nro_paciente, .......)ocupa (nro_paciente, nro_sala, ........)

5. Esqueleto del modelo ERreglas de representación

Page 58: Programacion de 'Bases de Datos1

m-n. Muchos a muchos todos los casos.

alumnoprofesor enseñanm

Corrado

Chichi

Gustavo

Mario

Jesús

María

José

Isabel

profesor (nro_profe, .......)alumno (nro_alumno, .......)enseña (nro_profe, nro_alumno, .........)

5. Esqueleto del modelo ERreglas de representación

Page 59: Programacion de 'Bases de Datos1

Especialización.- Hay 4 formas de mapeo:1.- todos los casosempleado (ci, nombre,...)secretaria (ci, vel_tipeo, ...)técnico (ci, univ, .....)

5. Esqueleto del modelo ERreglas de representación

empleado

secretaria técnico2.- Disjunto y participación totalsecretaria (ci, vel_tipeo,nombre..)técnico (ci, universidad,nombre..)

3.- Pocos atributos en subclases y disjunto.empleado (ci, nombre, vel_tipeo,universidad,t,...)

4. Pocos atributos en subclases y sobrepuestoempleado (ci, nombre, vel_tipeo,universidad,t1,t2,...)

tipoParticipa-ción

Page 60: Programacion de 'Bases de Datos1

Categorización.- Forma de mapeo:

persona (ci, nombre,...)banco (banco#, banco_dirección,...)compañía (compañía#, compañía_dirección, ...)dueño (dueño#, .....)

5. Esqueleto del modelo ERreglas de representación

compañiapersona banco

U

dueño

Page 61: Programacion de 'Bases de Datos1

6. Entidades débiles

Entidad débil o identificador prepuesto.- Cuando el identificador de la tabla, contiene el identificador de otra tabla.

departamentocompañia tienem1

compañia (nro_depto, .......)departamento (nro_compañía, nro_depto, .......)

*

Page 62: Programacion de 'Bases de Datos1

7. Relaciones recursivas

Las reglas de representación de relaciones es la misma, pero es necesario distinguir entre los diferentes roles que tienen los identificadores

Page 63: Programacion de 'Bases de Datos1

esposo

7. Relaciones recursivas

Relación 1:1

persona

casado

1 1esposa

persona (persona_id, ........)casado (persona_id_esposo, persona_id_esposa, ......)

Page 64: Programacion de 'Bases de Datos1

supe

rvisado

7. Relaciones recursivas

Relación 1:m

empleado

supervisa

1 msupe

rvisor

Empleado (nro_empleado, ......., nro_emple_supervisor)

*

Page 65: Programacion de 'Bases de Datos1

parte

_m

eno

r

7. Relaciones recursivas

Relación m:n

parte

compone

m nparte

_m

ayo

r

Parte (nro_parte, .......)compone (nro_parte_mayor, nro_parte_menor, .........)

Page 66: Programacion de 'Bases de Datos1

8. Asignación de atributos

El próximo paso después de hacer el esqueleto del modelo es asignar atributos.

Debemos asignar atributos a las tablas de tal forma que queden normalizadas, hasta la cuarta forma normal incluyendo la forma normal de Boyce Cood.

Page 67: Programacion de 'Bases de Datos1

8. Asignación de atributos

1:1 no obligatorio en ambas entidades.

empleado (nro_emple, )auto (nro_auto, )usa (nro_emple, nro_auto, )

nom_emple marca km_auto

km_emple km_actual

nom_emple,marca, km_auto

km_emple

km_actual

Page 68: Programacion de 'Bases de Datos1

8. Asignación de atributos

1:m no obligatorio en entidad m.

sala (nro_sala, )paciente (nro_paciente, )ocupa (nro_paciente, nro_sala, )

tipo_salanúmero_camas

nom_paciente fecha_nacimfecha_admisión

tipo_sala,nom_paciente, fecha_nacim

número_camas

fecha_admisión

Page 69: Programacion de 'Bases de Datos1

8. Asignación de atributos

m:n en todos los casos.

profesor (nro_prof, )alumno (nro_alum, )supervisa (nro_prof, nro_alum, )

nro_aulahoras_prof_sem

nom_alumno horas_alu_semhoras_atención

nro_aula,nom_alumno, horas_alu_sem

horas_prof_sem

horas_atención

Page 70: Programacion de 'Bases de Datos1

9. Metodología de diseñoconceptual y lógico

1.- Identificar los objetos del sistema que están dentro del contexto y son de interés.

2.- Prepara una lista preliminar de eventos o transacciones, que el sistema soportará.

3.- Preparar una lista preliminar de atributos.

4.- Hacer una lista de entidades importantes 2 a 4, con sus identificadores.

5.- Dibujar el diagrama ER partiendo de las entidades más importantes, no es necesario más que 2 a 4 entidades.

Page 71: Programacion de 'Bases de Datos1

9. Metodología de diseñoconceptual y lógico

6.- Verificar si el diagrama ER soporta los eventos, corregir el diagrama si es necesario. Analizar trampas de conexión.

7.- Hacer el esqueleto del modelo a partir del diagrama ER.

8.- Asignar atributos a las tablas, borrándolos de la lista.

9.- Si hay atributos que no entran en las tablas, definir nuevas entidades y/o relaciones. Si es necesario repetir de 5

Page 72: Programacion de 'Bases de Datos1

9. Metodología de diseñoconceptual y lógico

10.- Verificar si hay algún atributo o evento que sea necesario incluir, si es así repetir de 6 con nuevos eventos o de 8 con nuevos atributos.

11.- Hacer una revisión general, ver si las tablas están normalizadas, si los eventos son soportados. Si es necesario repetir desde 1.

12.- Borrar entidades superfluas.

Page 73: Programacion de 'Bases de Datos1

10. Caso de estudio demodelo conceptual y lógico

MODELO DE DATOSBIBLIOTECA

Page 74: Programacion de 'Bases de Datos1

11. Diseño físico

Las tablas obtenidas en el diseño conceptual y lógico, se obtienen a partir de las reglas de mapeo descritas.

En el diseño físico, dependiendo del hardware y software en que se implementa, pueden aplicarse cambios en base a un estudio de las siguientes consideraciones.

Page 75: Programacion de 'Bases de Datos1

11. Diseño físico

1-1. Participación no obligatoria en ambas

proyectoempleado trabaja11

95%10%

Casi todos los proyectos tienen empleado,aquí se puede mapear como si proyectofuese obligatorio en la relación.

empleado (nro_emple, nom_emple)proyecto (nro_proy, nom_proy, nro_emple)

Page 76: Programacion de 'Bases de Datos1

11. Diseño físico

1-m. Participación obligatoria de 1

proyectoempleado trabaja1m

solo 2

Un proyecto tiene m empleados pero m=2,El lado m puede mapearse como si fuese 1,en ese caso mapeamos solo dos tablas.

empleado (nro_emple, nom_emple)proyecto (nro_proy, nom_proy, nro_emple_reponsable, nro_emple_subal)

Page 77: Programacion de 'Bases de Datos1

11. Diseño físico

m-n. Participación obligatoria de m

proyectoempleado trabajanm

Pocos 1, 2

Un proyecto tiene m empleados el lado m sonpocos 1 o 2. El lado m puede mapearse como si fuese 1, en ese caso mapeamos solo dos tablas.

empleado (nro_emple, nom_emple)proyecto (nro_proy, nro_emple, nom_proy)

Page 78: Programacion de 'Bases de Datos1

11. Diseño físico

Partición de tablas

máquina_detallemáquina tiene11

Máquina es una entidad pero tiene muchosatributos, y unos se usan más que otros. Esposible generar máquina_detalle.

máquina (nro_maq, tipo, centro_trabajo, capacidad)máquina_detalle (nro_maq, fecha_adquisición, fecha_servicio, fecha_último_fallo)

Page 79: Programacion de 'Bases de Datos1

11. Diseño físico

Atributos derivados.- Son aquellos cuya información puede obtenerse a partir de otras tablas de la base de datos.

precio_total = cantidad * precio_unitario

empleado (nro_emple, nro_proy, nom_proy)proyecto (nro_proy, nom_proy, fecha_ini_pro)

Page 80: Programacion de 'Bases de Datos1

12. Caso de estudiomodelo físico

CASO DE ESTUDIO

LA BIBLIOTECA

Page 81: Programacion de 'Bases de Datos1

UNIDAD 4.ALGEBRA RELACIONAL

ObjetivoIntroducir los lenguajes conceptuales de las bases de datos relacionales, creados a partir de fundamentos matemáticos.

Page 82: Programacion de 'Bases de Datos1

Una base de datos relacional muestra las tablas en forma de filas y columnas

Dominio.- Es el conjunto de todos los valores permitidos que una columna puede tomar. Se tiene D1,D2,...,Dn, si tenemos n columnas.

a1 La Paza5 Santa Cruza6 Tarijaa9 Potosí

ciudad (nro_ciudad nom_ciudad)

1. LAS BASES DE DATOS RELACIONALES

Page 83: Programacion de 'Bases de Datos1

Tupla.- Cada una de las filas de una tabla se compone de n elementos (v1,v2,..,vn)En matemáticas este conjunto ordenado de elementos se llama tupla.

Producto cartesiano.- De lo anterior se tiene v1 D1, v2 D2, ... , vn Dn, porque cada elemento está en el dominio respectivo. En matemáticas podemos decir que la tupla es un elemento del producto cartesiano de los dominios: (v1,v2,....,vn) (D1xD2x.....xDn) =Xi=1,n(Di)

1. LAS BASES DE DATOS RELACIONALES

Page 84: Programacion de 'Bases de Datos1

Relación.- Por tanto, la tabla es un subconjunto del producto cartesiano de dominios, en otras palabra, por definición matemática, es una relación.

Es por esto que en el álgebra relacional se denomina relación a una tabla y tupla a un fila de tabla.

1. LAS BASES DE DATOS RELACIONALES

Page 85: Programacion de 'Bases de Datos1

Se define el álgebra relacional como un lenguaje para bases de datos relacionales de tipo procedural. Operadores:seleccionar unarioproyectar unarioproducto cartesiano x binariorenombrar unariounión binariodiferencia - binarioEstos son los 6 operadores fundamentales del álgebra relacional para generar consultas

2. EL ÁLGEBRA RELACIONAL

Page 86: Programacion de 'Bases de Datos1

2. EL ÁLGEBRA RELACIONAL SELECCIONAR, , UNARIO

Permite recuperar un subconjunto de tuplas de una relación.

Page 87: Programacion de 'Bases de Datos1

Operadores relacionales: =, , >, <, <=, >=Operadores lógicos: ,

Ej.1.- “Los préstamos de la sucursal JUNIN” : nom_suc=‘JUNIN’ (préstamo)

2. EL ÁLGEBRA RELACIONAL SELECCIONAR, , UNARIO

CAÑOTO 144 1500BOLIVAR 122 1200JUNIN 125 1800BOQUERON 188 1500JUNIN 132 1600BOLIVAR 177 1550

préstamo (nom_suc nro_pres importe)

JUNIN 125 1800JUNIN 132 1600

Page 88: Programacion de 'Bases de Datos1

Ej.2.- “Los préstamos de la sucursal JUNIN, con importe mayor a 1650” : nom_suc=‘JUNIN’ importe>1650 (préstamo)

2. EL ÁLGEBRA RELACIONAL SELECCIONAR, , UNARIO

CAÑOTO 144 1500BOLIVAR 122 1200JUNIN 125 1800BOQUERON 188 1500JUNIN 132 1600BOLIVAR 177 1550

préstamo (nom_suc nro_pres importe)

JUNIN 125 1800

Page 89: Programacion de 'Bases de Datos1

Ej.3.- “Los clientes que tienen el mismo nombre quesu oficial de créditos” : nom_clien = nom_emple (resp_presta)

2. EL ÁLGEBRA RELACIONAL SELECCIONAR, , UNARIO

SUCHA RAMONA 134MARCO JAIME 122RUBÉN RUBÉN 178

resp_presta (nom_clien nom_emple nro_pres)

RUBÉN RUBÉN 178

Page 90: Programacion de 'Bases de Datos1

2. EL ÁLGEBRA RELACIONAL PROYECTAR, , UNARIO

Permite recuperar un subconjunto de columnas de una relación.

Page 91: Programacion de 'Bases de Datos1

Ej.4.- “Seleccionar los clientes con préstamos mayoresa 1500, y la sucursal donde sacaron el préstamo” : nro_pres, importe ( importe>1500 (préstamo))

2. EL ÁLGEBRA RELACIONAL PROYECTAR, , UNARIO

CAÑOTO 144 1500BOLIVAR 122 1200JUNIN 125 1800BOQUERON 188 1500JUNIN 132 1600BOLIVAR 177 1550

préstamo (nom_suc nro_pres importe)

125 1800132 1600177 1550

Page 92: Programacion de 'Bases de Datos1

Ej.5.- “Los clientes que tienen el mismo nombre quesu oficial de créditos, sin repetir el nombre” : nom_clien ( nom_clien = nom_emple (resp_presta))

2. EL ÁLGEBRA RELACIONAL PROYECTAR, , UNARIO

RUBÉN

SUCHA RAMONA 134MARCO JAIME 122RUBÉN RUBÉN 178

resp_presta (nom_clien nom_emple nro_pres)

Page 93: Programacion de 'Bases de Datos1

2. EL ÁLGEBRA RELACIONAL Producto cartesiano, x, binario

Opera sobre dos relaciones r,s. Permite combinar cada un de las tuplas de r con cada una de las tuplas de s.

Si r tiene n columnas y s tiene m columnas r x s tiene n+m columnas.

Page 94: Programacion de 'Bases de Datos1

Ej.6.- “Los clientes que tienen oficial y la ciudad donde radican”. cliente x resp_presta:

2. EL ÁLGEBRA RELACIONAL Producto cartesiano, x, binario

MARCO calle5 La PazRUBÉN calle12 Potosí

cliente(nom_clien calle ciudad)

MARCO calle5 La Paz SUCHA RAMONA 134MARCO calle5 La Paz MARCO JAIME 122MARCO calle5 La Paz RUBÉN RUBÉN 178RUBÉN calle12 Potosí SUCHA RAMONA 134RUBÉN calle12 Potosí MARCO JAIME 122RUBÉN calle12 Potosí RUBÉN RUBÉN 178

cliente. resp_presta.nom_clien calle ciudad nom_clien nom_emple

SUCHA RAMONA 134MARCO JAIME 122RUBÉN RUBÉN 178

resp_presta (nom_clien nom_emple nro_pres)

Page 95: Programacion de 'Bases de Datos1

cliente x resp_presta :

resp_presta.nom_clien=cliente.nom_clien ( cliente x resp_presta)

2. EL ÁLGEBRA RELACIONAL Producto cartesiano, x, binario

MARCO calle5 La Paz MARCO JAIME 122RUBÉN calle12 Potosí RUBÉN RUBÉN 178

cliente. atiende.nom_clien calle ciudad nom_clien nom_emple nro_pres

MARCO calle5 La Paz SUCHA RAMONA 134MARCO calle5 La Paz MARCO JAIME 122MARCO calle5 La Paz RUBÉN RUBÉN 178RUBÉN calle12 Potosí SUCHA RAMONA 134RUBÉN calle12 Potosí MARCO JAIME 122RUBÉN calle12 Potosí RUBÉN RUBÉN 178

cliente. resp_presta.nom_clien calle ciudad nom_clien nom_emple nro_pres

Page 96: Programacion de 'Bases de Datos1

resp_presta.nom_clien=cliente.nom_clien ( cliente x resp_presta)

cliente.nom_clien, ciudad ( resp_presta.nom_clien=cliente.nom_clien ( cliente x resp_presta))

2. EL ÁLGEBRA RELACIONAL Producto cartesiano, x, binario

MARCO La PazRUBÉN Potosí

cliente. nom_clien ciudad

MARCO calle5 La Paz MARCO JAIME 122RUBÉN calle12 Potosí RUBÉN RUBÉN 178

cliente. resp_préstamo.nom_clien calle ciudad nom_clien nom_emple nro_pres

Page 97: Programacion de 'Bases de Datos1

2. EL ÁLGEBRA RELACIONAL RENOMBRAR, , UNARIO

Permite cambiar el nombre de una una relación. Se usa normalmente cuando se usa dos veces una relación en una consulta, permite diferenciar los nombres de las columnas, que de otra forma serían idénticos.

Page 98: Programacion de 'Bases de Datos1

Permite cambiar el nombre de la relación, para diferenciar atributos del mismo nombre.

cliente x resp_presta x cli(cliente)

2. EL ÁLGEBRA RELACIONAL RENOMBRAR, , UNARIO

SUCHA calle5 Sta. CruzRUBÉN calle12 PotosíRAMONA calle8 TarijaRENATO calle1 Potosí

cliente(nom_clien calle ciudad)

SUCHA RAMONA 134MARCO JAIME 122RUBÉN RUBÉN 178

resp_presta (nom_clien nom_emple nro_pres)

Page 99: Programacion de 'Bases de Datos1

2. EL ÁLGEBRA RELACIONAL UNION, , BINARIO

Permite recuperar los atributos de la primera relación r más los atributos de la segunda relación s. La unión solo es posible cuando r y s cumplen las siguientes dos condiciones:

1 r y s tienen la misma cantidad de atributos.

2 Los atributos que se corresponden en r y s tienen los mismos dominios.

Page 100: Programacion de 'Bases de Datos1

Ej.7.- “Los clientes que tienen préstamo o depósito” nom_clien (prestatario) nom_clien (impositor)

2. EL ÁLGEBRA RELACIONAL UNION, , BINARIO

144 MARCO125 SUCHA

prestatario (nro_pres nom_clien)

174 MARCO182 RUBEN

impositor (nro_cuen nom_clien)

MARCOSUCHARUBEN

nom_suc

Page 101: Programacion de 'Bases de Datos1

2. EL ÁLGEBRA RELACIONAL DIFERENCIA, -, BINARIO

Permite recuperar los atributos de la primera relación r que no están en la segunda relación s. La diferencia solo es posible cuando r y s cumplen las siguientes dos condiciones:

1 r y s tienen la misma cantidad de atributos.

2 Los atributos que se corresponden en r y s tienen los mismos dominios.

Page 102: Programacion de 'Bases de Datos1

Ej.7.- “Los clientes que tienen préstamo pero notienen depósito” nom_clien (prestatario) - nom_clien (impositor)

2. EL ÁLGEBRA RELACIONAL DIFERENCIA, -, BINARIO

SUCHAnom_suc

144 MARCO125 SUCHA

prestatario (nro_pres nom_clien)

174 MARCO182 RUBEN

impositor (nro_cuen nom_clien)

Page 103: Programacion de 'Bases de Datos1

Es posible demostrar matemáticamente que se puede obtener cualquier consulta con los 6 operadores fundamentales que vimos:seleccionar unarioproyectar unarioproducto cartesiano x binariorenombrar unariounión binariodiferencia - binarioCualquier otro lenguaje es “completo” si puede ejecutar estas 6 operaciones.

2. EL ÁLGEBRA RELACIONALCOMPLETITUD

Page 104: Programacion de 'Bases de Datos1

En el álgebra relacional se definen los operadores adicionales:intersección binarioproducto natural binariodivisión binariotodos estos operadores pueden ser expresados mediante los 6 fundamentales. Son necesarios solo para simplificar la escritura de algunas consultas.

2. EL ÁLGEBRA RELACIONALOPERADORES ADICIONALES

Page 105: Programacion de 'Bases de Datos1

2. EL ÁLGEBRA RELACIONALINTERSECCIÓN, , BINARIO

Permite recuperar los atributos de la primera relación r que también están en la segunda relación s. La intersección solo es posible cuando r y s cumplen las siguientes mismas dos condiciones.

Equivalencia.-r s = r - ( r - s )

Page 106: Programacion de 'Bases de Datos1

Ej.7.- “Los clientes que tienen préstamo y depósito” nom_clien (prestatario) nom_clien (impositor)

2. EL ÁLGEBRA RELACIONALINTERSECCIÓN, , BINARIO

MARCOnom_suc

144 MARCO125 SUCHA

prestatario (nro_pres nom_clien)

174 MARCO182 RUBEN

impositor (nro_cuen nom_clien)

Page 107: Programacion de 'Bases de Datos1

2. EL ÁLGEBRA RELACIONALProducto natural, , BINARIO

El producto natural es un producto cartesiano mas la condición de que los valores de los atributos comunes deben ser los mismos.

Equivalencia.-Sea r,s relaciones y R,S sus esquemas o listas de atributos:r s = R S ( r.A1=s.A1 .... r.An=s.An(r x s))donde: R S = {A1, A2, ....,An}

Page 108: Programacion de 'Bases de Datos1

2. EL ÁLGEBRA RELACIONALProducto natural, , BINARIO

Ej.6.- “Los clientes que tienen oficial y la ciudad donde radican”. cliente resp_presta:

MARCO calle5 La PazRUBÉN calle12 Potosí

cliente(nom_clien calle ciudad)

MARCO calle5 La Paz JAIME 122RUBÉN calle12 Potosí RUBÉN 178

nom_clien calle ciudad nom_emple nro_pres

nom_clien, ciudad (cliente resp_presta)

MARCO La Paz RUBÉN Potosí

SUCHA RAMONA 134MARCO JAIME 122RUBÉN RUBÉN 178

resp_presta (nom_clien nom_emple nro_pres)

Page 109: Programacion de 'Bases de Datos1

2. EL ÁLGEBRA RELACIONALDivisión, , BINARIO

La división entre r y s, de esquemas R y S, requiere que SR.

La división da algunas tuplas de r proyectadas sobre R-S, aquellas que en su proyección sobre S tienen todas las tuplas de la relación s.

Equivalencia.-r s = R-S ( r ) - R-S (( R-S ( r ) x s) - r)

Page 110: Programacion de 'Bases de Datos1

2. EL ÁLGEBRA RELACIONALDivisión, , BINARIO

Definición formal.- Dadas r,s relaciones y R,S sus esquemas. Una tupla t está en la división si:

t está en R-S ( r )

para cada tupla ts de s hay una tupla tr de r que cumple las condiciones:a) tr[S] = ts[S]b) t = tr[R-S]

Page 111: Programacion de 'Bases de Datos1

2. EL ÁLGEBRA RELACIONALDivisión, , BINARIO

c de f

s(C D )

a b c da b e fb c e fe d c de d e fa b d e

r(A B C D )

a be d

rs(A B )

Page 112: Programacion de 'Bases de Datos1

2. EL ÁLGEBRA RELACIONALDivisión, , BINARIO,

presprespréstamoprestatario

CAÑOTO 144 MARCO 1500BOLIVAR 122 RUBEN 1200JUNIN 125 RUBEN 1800BOQUERON 188 RUBEN 1500JUNIN 132 PLATINI 1600BOLIVAR 177 PLATINI 1550

prespres(nom_suc nro_pr nom_clien importe)

CAÑOTO LPZBOLIVAR SCZBOQUERON LPZJUNIN SCZBOLIVAR CBBA

sucursal(nom_suc ciudad)

Los clientes que tienen préstamo en todas las sucursales de SCZ nom_clien, nom_suc ( préstamo ) nom_suc ( ciudad=‘SCZ’ ( sucursal)) RUBEN

PLATINI

Page 113: Programacion de 'Bases de Datos1

Reunión externa.- Cuando hacemos producto natural, las tuplas de una tabla que no se combinan con tuplas de la otra tabla no aparecen en la relación resultante.

1 r s, en el producto natural mantiene las tuplas de r que no se combinan.

2 r s, en el producto natural mantiene las tuplas de s que no se combinan.

3 r s, en el producto natural mantiene las tuplas de r y s que no se combinan.

5. OPERACIONES DEL ALGEBRA RELACIONAL EXTENDIDA

Page 114: Programacion de 'Bases de Datos1

Funciones de agregación.- se puede usar las funciones agregadas: sum, avg, max, min, count, count_distinct, etc. Se usan así:sum importe (préstamo)suma todos los importes de la relación préstamo.

Agrupación.- Saca los resultados agrupando por los atributos indicados. La forma es:

nom_suc Gsum importe (préstamo) suma los préstamos de cada sucursal.

5. OPERACIONES DEL ALGEBRA RELACIONAL EXTENDIDA

Page 115: Programacion de 'Bases de Datos1

Hasta ahora todos los programas se han centrado en extraer información. Es necesario además, insertar, borrar y modificar información en la base de datos.

Borrado.- Permite eliminar tuplas de la base de datos. Se expresa así:r r - Edonde r es una relación y E es una consulta del álgebra relacional, que obtiene las tuplas que se eliminarán de r.

6. MODIFICACIÓN DE LA BASE DE DATOS

Page 116: Programacion de 'Bases de Datos1

Inserción.- Permite aumentar una o varias tuplas en la base de datos. Se usa: r r E donde r es una relación y E es un consulta del álgebra relacional o una tupla a insertar.

Actualización.- Permite modificar uno o varios valores de la base de datos. Se puede usar la proyección extendida:r F1,F2,....,Fn (r) . Por ejemplo, aumentar 5% a todas las cuentas de depósito=r:r nom_suc, nro_cue, saldosaldo*1.05 (r)

6. MODIFICACIÓN DE LA BASE DE DATOS

Page 117: Programacion de 'Bases de Datos1

create view v como E; donde E es una consulta del álgebra relacional, y v es el nombre de la vista.

7. VISTAS

Page 118: Programacion de 'Bases de Datos1

El cálculo relacional es un lenguaje sin procedimientos o no procedural, donde se da una descripción formal de la información deseada sin especificar como obtenerla.

Existen dos formas el cálculo relacional de tuplas CRT y el cálculo relacional de dominios CRD, las dos de características muy similares.

La forma general de una consulta en el CRT es: { t / P(t) }, se dice conjunto de tuplas t tales que cumplen P(T).

3. CALCULO RELACIONAL DE TUPLAS

Page 119: Programacion de 'Bases de Datos1

Permite recuperar un subconjunto de tuplas de una relación.

3. CALCULO RELACIONAL DE TUPLASSELECCIÓN

Page 120: Programacion de 'Bases de Datos1

Ej.1.- “Los préstamos de la sucursal JUNIN” :{ t / t préstamo nom_suc=‘JUNIN’ }

3. CALCULO RELACIONAL DE TUPLASSELECCIÓN

CAÑOTO 144 1500BOLIVAR 122 1200JUNIN 125 1800BOQUERON 188 1500JUNIN 132 1600BOLIVAR 177 1550

préstamo (nom_suc nro_pres importe)

JUNIN 125 1800JUNIN 132 1600

Page 121: Programacion de 'Bases de Datos1

Ej.2.- “Los préstamos de la sucursal JUNIN, con importe mayor a 1650” :{ t / t préstamo nom_suc=‘JUNIN’ importe>1650 }

3. CALCULO RELACIONAL DE TUPLASSELECCIÓN

CAÑOTO 144 1500BOLIVAR 122 1200JUNIN 125 1800BOQUERON 188 1500JUNIN 132 1600BOLIVAR 177 1550

préstamo (nom_suc nro_pres importe)

JUNIN 125 1800

Page 122: Programacion de 'Bases de Datos1

Ej.3.- “Los clientes que tienen el mismo nombre quesu oficial de créditos” :{ t / t resp_presta nom_clien=nom_emple }

3. CALCULO RELACIONAL DE TUPLASSELECCIÓN

SUCHA RAMONA 134MARCO JAIME 122RUBÉN RUBÉN 178

resp_presta (nom_clien nom_emple nro_pres)

RUBÉN RUBÉN 178

Page 123: Programacion de 'Bases de Datos1

Permite recuperar un subconjunto de columnas de una relación.

3. CALCULO RELACIONAL DE TUPLASPROYECCIÓN

Page 124: Programacion de 'Bases de Datos1

Ej.4.- “Seleccionar los clientes con préstamos mayoresa 1500, y la sucursal donde sacaron el préstamo” :{ t[nro_pres, importe] / t préstamo importe>1500 }

3. CALCULO RELACIONAL DE TUPLASPROYECCIÓN

CAÑOTO 144 1500BOLIVAR 122 1200JUNIN 125 1800BOQUERON 188 1500JUNIN 132 1600BOLIVAR 177 1550

préstamo (nom_suc nro_pres importe)

125 1800132 1600177 1550

Page 125: Programacion de 'Bases de Datos1

Ej.5.- “Los clientes que tienen el mismo nombre quesu oficial de créditos, sin repetir el nombre” :{ t[nom_clien] / t resp_presta nom_clien=nom_emple }

3. CALCULO RELACIONAL DE TUPLASPROYECCIÓN

RUBÉN

SUCHA RAMONA 134MARCO JAIME 122RUBÉN RUBÉN 178

resp_presta (nom_clien nom_emple nro_pres)

Page 126: Programacion de 'Bases de Datos1

Es posible en el CRT operar sobre dos o más relaciones.

3. CALCULO RELACIONAL DE TUPLASPRODUCTO

Page 127: Programacion de 'Bases de Datos1

Ej.6.- “Los clientes que tienen oficial y la ciudad donde radican”. cliente x atiende:

MARCO La PazRUBÉN Potosí

nom_clien ciudad

{ t[nom_clien, ciudad] / t cliente u (u resp_presta t[nom_clien]=u[nom_clien] ) }

3. CALCULO RELACIONAL DE TUPLASPRODUCTO

MARCO calle5 La PazRUBÉN calle12 Potosí

cliente(nom_clien calle ciudad)

SUCHA RAMONA 134MARCO JAIME 122RUBÉN RUBÉN 178

resp_presta (nom_clien nom_emple nro_pres)

Page 128: Programacion de 'Bases de Datos1

Permite recuperar los atributos de la primera relación r más los atributos de la segunda relación s. La unión solo es posible cuando r y s cumplen las siguientes dos condiciones:

1 r y s tienen la misma cantidad de atributos.

2 Los atributos que se corresponden en r y s tienen los mismos dominios.

3. CALCULO RELACIONAL DE TUPLASUNIÓN

Page 129: Programacion de 'Bases de Datos1

Ej.7.- “Los clientes que tienen préstamo o depósito”{ t[nom_clien]/ u(u prestatario t[nom_cli]=u[nom_cli]) v(v impositor t[nom_cli]=v[nom_cli]) }

3. CALCULO RELACIONAL DE TUPLASUNIÓN

144 MARCO125 SUCHA

prestatario (nro_pres nom_clien)

174 MARCO182 RUBEN

impositor (nro_cuen nom_clien)

MARCOSUCHARUBEN

Page 130: Programacion de 'Bases de Datos1

Permite recuperar las tuplas de la primera relación r que no están en la segunda relación s. La diferencia solo es posible cuando r y s cumplen las siguientes dos condiciones:

1 r y s tienen la misma cantidad de atributos.

2 Los atributos que se corresponden en r y s tienen los mismos dominios.

3. CALCULO RELACIONAL DE TUPLASDIFERENCIA

Page 131: Programacion de 'Bases de Datos1

Ej.7.- “Los clientes que tienen préstamo pero notienen depósito”{ t[nom_clien]/ u(u prestatario t[nom_cli]=u[nom_cli]) v(v impositor t[nom_cli]=v[nom_cli]) }

3. CALCULO RELACIONAL DE TUPLASDEFERENCIA

SUCHA

144 MARCO125 SUCHA

prestatario (nro_pres nom_clien)

174 MARCO182 RUBEN

impositor (nro_cuen nom_clien)

Page 132: Programacion de 'Bases de Datos1

Permite recuperar las tuplas de la primera relación r que también están en la segunda relación s. La intersección solo es posible cuando r y s cumplen las dos condiciones mencionadas en unión.

3. CALCULO RELACIONAL DE TUPLASINTERSECCIÓN

Page 133: Programacion de 'Bases de Datos1

Ej.7.- “Los clientes que tienen préstamo y depósito”{ t[nom_clien]/ u(u prestatario t[nom_cli]=u[nom_cli]) v(v impositor t[nom_cli]=v[nom_cli]) }

3. CALCULO RELACIONAL DE TUPLASINTERSECCIÓN

MARCOnom_suc

144 MARCO125 SUCHA

prestatario (nro_pres nom_clien)

174 MARCO182 RUBEN

impositor (nro_cuen nom_clien)

Page 134: Programacion de 'Bases de Datos1

Las expresiones del CRT son de la forma:{ t / (t) }, donde t es una variable de tipo tupla y es una fórmula construida a partir de átomos. Hay tres tipos de átomo:

1 t r, significa que la tupla t pertenece a la relación r.

2 t[i] u[j], es un operador relacional: =, , >, <, <=, >=, i-j son dos atributos de las tuplas t-u

3 t[i] a, donde a es una constante.

3. CALCULO RELACIONAL DE TUPLASDEFINICIÓN FORMAL

Page 135: Programacion de 'Bases de Datos1

Las fórmulas se forman a partir de átomos usando las siguiente definición recursiva:

1 Un átomo es un fórmula2 Si es una fórmula también lo son y ()3 Si 1 y 2 son fórmulas, también los son:

1 2, 1 2, 1 24 Si (s) es una fórmula en función de s, donde

s es una variable de tipo tupla, entonces:s ((s)), s ((s)), también son fórmulas.

5 Nada más es una fórmula.

3. CALCULO RELACIONAL DE TUPLASDEFINICIÓN FORMAL

Page 136: Programacion de 'Bases de Datos1

A continuación tenemos las siguientes equivalencias más utilizadas en el CRT

(1 2) (1 2) s ((s)) s ((s)) (1 2) (1 2)

3. CALCULO RELACIONAL DE TUPLASDEFINICIÓN FORMAL

Page 137: Programacion de 'Bases de Datos1

En el CRT no se permite obtener consultas que retornen un número infinito de tuplas. Sin embargo es necesario 3 reglas adicionales para impedir expresiones incorrectas como:{ t / (t) }. Pero necesitamos la definición:

Dominio de fórmula.- DOM(), es el conjunto de constantes que aparecen en más todos los valores de las relaciones que se usa .

Por ejemplo en =“t[1=a (t r)”, donde r es una relación con dos atributos (1,2)DOM() = {a} 1( r ) 2( r )

3. CALCULO RELACIONAL DE TUPLASSEGURIDAD DE LAS FÓRMULAS

Page 138: Programacion de 'Bases de Datos1

Decimos que una expresión del CRT { t / (t)} es una fórmula segura si:

1 Siempre que t haga verdadera , cada componente de t debe pertenecer a DOM().

2 Para cada subfórmula de la formas (W(s)), si s hace verdadera la fórmula W, entonces cada componente de s debe pertenecer al dominio DOM(W).

3 Para cada subfórmula de la formas (W(s)), si un componente de s no está en DOM(W), entonces s debe hacer verdad W.

3. CALCULO RELACIONAL DE TUPLASSEGURIDAD DE LAS FÓRMULAS

Page 139: Programacion de 'Bases de Datos1

Normalmente se usa de la siguiente forma los cuantificadores existencial y universal: s (sr ......) s ((sr) ......)

son dos formas de comenzar a escribir la fórmula, para que la fórmula resultante sea segura.

3. CALCULO RELACIONAL DE TUPLASSEGURIDAD DE LAS FÓRMULAS

Page 140: Programacion de 'Bases de Datos1

La división entre r y s, de esquemas R y S, requiere que SR.

La división genera algunas tuplas de r proyectadas sobre R-S, aquellas que en su proyección sobre S tienen todas las tuplas de la relación s.

3. CALCULO RELACIONAL DE TUPLASDIVISIÓN

Page 141: Programacion de 'Bases de Datos1

c de f

s(C D )

a b c da b e fb c e fe d c de d e fa b d e

r(A B C D )

a be d

(A B )

{ t[A,B] / tr u ((ur) v (vr u[C]=v[C] u[D]=v[D] t[A]=v[A] t[B]=v[B] ))}

3. CALCULO RELACIONAL DE TUPLASDIVISIÓN

Page 142: Programacion de 'Bases de Datos1

BOLIVAR 144 MARCO 1500BOLIVAR 122 RUBEN 1200JUNIN 125 RUBEN 1800BOQUERON 188 RUBEN 1500JUNIN 132 PLATINI 1600BOLIVAR 177 PLATINI 1550

prespres(nom_suc nro_pr nom_clien importe)

CAÑOTO LPZBOLIVAR SCZBOQUERON LPZJUNIN SCZBOLIVAR CBBA

sucursal(nom_suc ciudad)

Los clientes que tienen préstamo en todas las sucursales de SCZ{ t[nom_clien] / tprespres u ((usucursal) (u[ciudad]=‘SCZ’) v (vprespres u[nom_suc]=v[nom_suc] t[nom_clien]=v[nom_clien] )) }

RUBENPLATINI

3. CALCULO RELACIONAL DE TUPLASDIVISIÓN, presprespréstamoprestatario

Page 143: Programacion de 'Bases de Datos1

Se construye con los mismo operadores y reglas del CRT, se usan variables tipo dominio en vez de variables tipo tupla.

Diferencias en la definición de átomos:1 <x1,x2,...,xn>r; donde x1,..,xn son las

variables tipo dominio y r una relación.2 x y; x e y son las variables dominio.3 x k; x es variable dominio y k constante Las otras definiciones y reglas son

equivalentes.

4. CALCULO RELACIONAL DE DOMINIOS

Page 144: Programacion de 'Bases de Datos1

“Los préstamos de la sucursal JUNIN” :{ ns,np,im / <ns,np,im> préstamo ns=‘JUNIN’ }

4. CALCULO RELACIONAL DE DOMINIOSSELECCIÓN

CAÑOTO 144 1500BOLIVAR 122 1200JUNIN 125 1800BOQUERON 188 1500JUNIN 132 1600BOLIVAR 177 1550

préstamo (nom_suc nro_pres importe)

JUNIN 125 1800JUNIN 132 1600

Page 145: Programacion de 'Bases de Datos1

“Los préstamos de la sucursal JUNIN, con importe mayor a 1650” :{ ns,np,im / <ns,np,im> préstamo ns=‘JUNIN’ im>1650 }

4. CALCULO RELACIONAL DE DOMINIOSSELECCIÓN

CAÑOTO 144 1500BOLIVAR 122 1200JUNIN 125 1800BOQUERON 188 1500JUNIN 132 1600BOLIVAR 177 1550

préstamo (nom_suc nro_pres importe)

JUNIN 125 1800

Page 146: Programacion de 'Bases de Datos1

“Los clientes que tienen el mismo nombre quesu oficial de créditos” :{ nc,ne,np / <nc,ne,np> resp_presta ns=ne }

4. CALCULO RELACIONAL DE DOMINIOSSELECCIÓN

SUCHA RAMONA 134MARCO JAIME 122RUBÉN RUBÉN 178

resp_presta (nom_clien nom_emple nro_pres)

RUBÉN RUBÉN 178

Page 147: Programacion de 'Bases de Datos1

“Seleccionar los clientes con préstamos mayoresa 1500, y la sucursal donde sacaron el préstamo” :{ np,im / ns (<ns,np,im> préstamo im>1500) }

4. CALCULO RELACIONAL DE DOMINIOSPROYECCIÓN

CAÑOTO 144 1500BOLIVAR 122 1200JUNIN 125 1800BOQUERON 188 1500JUNIN 132 1600BOLIVAR 177 1550

préstamo (nom_suc nro_pres importe)

125 1800132 1600177 1550

Page 148: Programacion de 'Bases de Datos1

“Los clientes que tienen el mismo nombre quesu oficial de créditos, sin repetir el nombre” :{ nc / ne,np (<nc,ne,np> resp_presta nc=ne) }

4. CALCULO RELACIONAL DE DOMINIOSPROYECCIÓN

RUBÉN

SUCHA RAMONA 134MARCO JAIME 122RUBÉN RUBÉN 178

resp_presta (nom_clien nom_emple nro_pres)

Page 149: Programacion de 'Bases de Datos1

Ej.6.- “Los clientes que tienen oficial y la ciudad donde radican”. cliente x atiende:

{ nc, ci / ca (<nc,ca,ci> cliente ne,np (<nc,ne,np> resp_presta ) ) }

4. CALCULO RELACIONAL DE DOMINIOSPRODUCTO

MARCO La PazRUBÉN Potosí

nom_clien ciudad

MARCO calle5 La PazRUBÉN calle12 Potosí

cliente(nom_clien calle ciudad)

SUCHA RAMONA 134MARCO JAIME 122RUBÉN RUBÉN 178

resp_presta (nom_clien nom_emple nro_pres)

Page 150: Programacion de 'Bases de Datos1

Ej.7.- “Los clientes que tienen préstamo o depósito”{ nc/ np (<np,nc> prestatario ) ncu (<ncu,nc> impositor) }

4. CALCULO RELACIONAL DE DOMINIOSUNIÓN

144 MARCO125 SUCHA

prestatario (nro_pres nom_clien)

174 MARCO182 RUBEN

impositor (nro_cuen nom_clien)

MARCOSUCHARUBEN

Page 151: Programacion de 'Bases de Datos1

Ej.7.- “Los clientes que tienen préstamo pero notienen depósito”{ nc/ np (<np,nc> prestatario ) ncu (<ncu,nc> impositor ) }

4. CALCULO RELACIONAL DE DOMINIOSDIFERENCIA

SUCHA

144 MARCO125 SUCHA

prestatario (nro_pres nom_clien)

174 MARCO182 RUBEN

impositor (nro_cuen nom_clien)

Page 152: Programacion de 'Bases de Datos1

Ej.7.- “Los clientes que tienen préstamo y depósito”{ nc/ np (<np,nc> prestatario ) ncu (<ncu,nc> impositor)

4. CALCULO RELACIONAL DE DOMINIOSINTERSECCIÓN

MARCOnom_suc

144 MARCO125 SUCHA

prestatario (nro_pres nom_clien)

174 MARCO182 RUBEN

impositor (nro_cuen nom_clien)

Page 153: Programacion de 'Bases de Datos1

La división entre r y s, de esquemas R y S, requiere que SR.

La división genera algunas tuplas de r proyectadas sobre R-S, aquellas que en su proyección sobre S tienen todas las tuplas de la relación s.

4. CALCULO RELACIONAL DE DOMINIOSDIVISIÓN

Page 154: Programacion de 'Bases de Datos1

c de f

s(C D )

a b c da b e fb c e fe d c de d e fa b d e

r(A B C D )

a be d

(A B )

{ A,B / C,D(< A,B,C,D>r C1,D1 ((<C1,D1>s) (< A,B,C1,D1>r ) ) }

4. CALCULO RELACIONAL DE DOMINIOSDIVISIÓN

Page 155: Programacion de 'Bases de Datos1

BOLIVAR 144 MARCO 1500BOLIVAR 122 RUBEN 1200JUNIN 125 RUBEN 1800BOQUERON 188 RUBEN 1500JUNIN 132 PLATINI 1600BOLIVAR 177 PLATINI 1550

préstamo(nom_suc nro_pr nom_clien importe)

CAÑOTO LPZBOLIVAR SCZBOQUERON LPZJUNIN SCZBOLIVAR CBBA

sucursal(nom_suc ciudad)

Los clientes que tienen préstamo en todas las sucursales de SCZ{ nc / ns,np,im(< ns,np,nc,im>préstamo ns1,ci ((<ns1,ci>sucursal) (ci=‘SCZ’) np1,im1 (<ns1,np1,nc,im1>préstamo ) ) }

RUBENPLATINI

4. CALCULO RELACIONAL DE DOMINIOSDIVISIÓN, presprespréstamoprestatario

Page 156: Programacion de 'Bases de Datos1

UNIDAD 4.SQL Y OTROS LENGUAJES

ObjetivoIntroducir a los lenguajes de uso más frecuente en bases de datos relacionales SQL y QBE.

Page 157: Programacion de 'Bases de Datos1

SQL se ha establecido claramente en el lenguaje estandar de bases de datos relacionales.

Es un lenguaje LDD o de definición de datos, LMD de manipulación de datos, y LCD o de control de datos. Todo esto en un solo lenguaje SQL.

1. SQL

Page 158: Programacion de 'Bases de Datos1

Los comando más importante son: LDD, definición de datos:

CREATE TABLE, CREATE INDEX, CREATE VIEW, DROP TABLE, DROP INDEX, DROP VIEW, ALTER TABLE, COMMENT.

LMD, manipulación de datos:SELECT, INSERT, UPDATE, DELETE.

LCD, control de datos:GRANT, REVOKE, COMMIT, ROOLBACK.

1. SQL

Page 159: Programacion de 'Bases de Datos1

1. SQLSELECT

Permite recuperar información de la base de datos.

Junto con insert, update y delete permiten manipular los datos de cualquier forma.

Page 160: Programacion de 'Bases de Datos1

1. SQLSELECT - SELECCIÓN

CAÑOTO 144 1500BOLIVAR 122 1200JUNIN 125 1800BOQUERON 188 1500JUNIN 132 1600BOLIVAR 177 1550

préstamo (nom_suc nro_pres importe)

Ej.1.- “Los préstamos de la sucursal JUNIN” :select * from prestamo where nom_suc=‘JUNIN’

JUNIN 125 1800JUNIN 132 1600

Page 161: Programacion de 'Bases de Datos1

CAÑOTO 144 1500BOLIVAR 122 1200JUNIN 125 1800BOQUERON 188 1500JUNIN 132 1600BOLIVAR 177 1550

préstamo (nom_suc nro_pres importe)

Ej.2.- “Los préstamos de la sucursal JUNIN, con importe mayor a 1650” :select * from prestamo where nom_suc=‘JUNIN’ and importe>1650

JUNIN 125 1800

1. SQLSELECT - SELECCIÓN

Page 162: Programacion de 'Bases de Datos1

SUCHA RAMONA 134MARCO JAIME 122RUBÉN RUBÉN 178

resp_presta (nom_clien nom_emple nro_pres)

Ej.3.- “Los clientes que tienen el mismo nombre quesu oficial de créditos” :select * from resp_presta where nom_clien=nom_emple

RUBÉN RUBÉN 178

1. SQLSELECT - SELECCIÓN

Page 163: Programacion de 'Bases de Datos1

CAÑOTO 144 1500BOLIVAR 122 1200JUNIN 125 1800BOQUERON 188 1500JUNIN 132 1600BOLIVAR 177 1550

préstamo (nom_suc nro_pres importe)

Ej.4.- “Número de préstamo e importe de los préstamos con importe mayor a 1500” :select nro_pres, importe from préstamo

where importe = 1500 125 1800132 1600177 1550

1. SQLSELECT - PROYECCIÓN

Page 164: Programacion de 'Bases de Datos1

Ej.5.- “Los clientes que tienen el mismo nombre quesu oficial de créditos, sin repetir el nombre” :select nom_clien from resp_presta where nom_clien=nom_emple

RUBÉN

1. SQLSELECT - PROYECCIÓN

SUCHA RAMONA 134MARCO JAIME 122RUBÉN RUBÉN 178

resp_presta (nom_clien nom_emple nro_pres)

Page 165: Programacion de 'Bases de Datos1

Ej.6.- “Los clientes que tienen oficial y la ciudad donde radican”. Select * from cliente, resp_presta:

MARCO calle5 La PazRUBÉN calle12 Potosí

cliente(nom_clien calle ciudad)

MARCO calle5 La Paz SUCHA RAMONA 134MARCO calle5 La Paz MARCO JAIME 122MARCO calle5 La Paz RUBÉN RUBÉN 178RUBÉN calle12 Potosí SUCHA RAMONA 134RUBÉN calle12 Potosí MARCO JAIME 122RUBÉN calle12 Potosí RUBÉN RUBÉN 178

cliente. resp_presta.nom_clien calle ciudad nom_clien nom_emple

1. SQLSELECT - PRODUCTO

SUCHA RAMONA 134MARCO JAIME 122RUBÉN RUBÉN 178

resp_presta (nom_clien nom_emple nro_pres)

Page 166: Programacion de 'Bases de Datos1

Select * from cliente, resp_presta :

Select * from cliente, resp_presta where resp_presta.nom_clien, cliente.nom_clien

MARCO calle5 La Paz MARCO JAIME 122RUBÉN calle12 Potosí RUBÉN RUBÉN 178

cliente. atiende.nom_clien calle ciudad nom_clien nom_emple nro_pres

1. SQLSELECT - PRODUCTO

MARCO calle5 La Paz SUCHA RAMONA 134MARCO calle5 La Paz MARCO JAIME 122MARCO calle5 La Paz RUBÉN RUBÉN 178RUBÉN calle12 Potosí SUCHA RAMONA 134RUBÉN calle12 Potosí MARCO JAIME 122RUBÉN calle12 Potosí RUBÉN RUBÉN 178

cliente. resp_presta.nom_clien calle ciudad nom_clien nom_emple nro_pres

Page 167: Programacion de 'Bases de Datos1

Select * from cliente, resp_présta where resp_presta.nom_clien, cliente.nom_clien

Select cliente.nom_clien, ciudad from cliente, resp_présta where resp_presta.nom_clien, cliente.nom_clien

MARCO La PazRUBÉN Potosí

cliente. nom_clien ciudad

1. SQLSELECT - PRODUCTO

MARCO calle5 La Paz MARCO JAIME 122RUBÉN calle12 Potosí RUBÉN RUBÉN 178

cliente. resp_préstamo.nom_clien calle ciudad nom_clien nom_emple nro_pres

Page 168: Programacion de 'Bases de Datos1

Permite cambiar el nombre de la relación, para diferenciar atributos del mismo nombre.

SUCHA calle5 Sta. CruzRUBÉN calle12 PotosíRAMONA calle8 TarijaRENATO calle1 Potosí

cliente(nom_clien calle ciudad)

Select * from cliente, resp_presta, cliente as cl

1. SQLSELECT - RENOMBRAR

SUCHA RAMONA 134MARCO JAIME 122RUBÉN RUBÉN 178

resp_presta (nom_clien nom_emple nro_pres)

Page 169: Programacion de 'Bases de Datos1

144 MARCO125 SUCHA

prestatario (nro_pres nom_clien)

174 MARCO182 RUBEN

impositor (nro_cuen nom_clien)

Ej.7.- “Los clientes que tienen préstamo o depósito”(select nom_clien from prestatario) union(select nom_clien from impositor)

MARCOSUCHARUBEN

nom_suc

1. SQLSELECT - UNION

Page 170: Programacion de 'Bases de Datos1

Ej.7.- “Los clientes que tienen préstamo pero notienen depósito”(select nom_clien from prestatario) except(select nom_clien from impositor)

SUCHAnom_suc

1. SQLSELECT - DIFERENCIA

144 MARCO125 SUCHA

prestatario (nro_pres nom_clien)

174 MARCO182 RUBEN

impositor (nro_cuen nom_clien)

Page 171: Programacion de 'Bases de Datos1

Ej.7.- “Los clientes que tienen préstamo y depósito”(select nom_clien from prestatario) intersect(select nom_clien from impositor)

MARCOnom_suc

1. SQLSELECT - INTERSECCIÓN

144 MARCO125 SUCHA

prestatario (nro_pres nom_clien)

174 MARCO182 RUBEN

impositor (nro_cuen nom_clien)

Page 172: Programacion de 'Bases de Datos1

Reunión externa.- Cuando hacemos producto natural, las tuplas de una tabla que no se combinan con tuplas de la otra tabla no aparecen en la relación resultante.

1 Select * from tabla1, tabla2 where tabla1.columna (+) = tabla2.columnaen el producto natural mantiene las tuplas de r que no se combinan.

1. SQLSELECT - OUTER JOIN

Page 173: Programacion de 'Bases de Datos1

2 Select * from tabla1, tabla2 where tabla1.columna = tabla2.columna (+)en el producto natural mantiene las tuplas de s que no se combinan.

3 Select * from tabla1, tabla2 where tabla1.columna (+) = tabla2.columna (+) en el producto natural mantiene las tuplas de r y s que no se combinan.

1. SQLSELECT - OUTER JOIN

Page 174: Programacion de 'Bases de Datos1

Funciones agregadas.- se puede usar las funciones agregadas: sum, avg, max, min, count, count_distinct, etc. Se usan así:select sum(importe) from préstamosuma todos los importes de la relación préstamo.

Agrupación.- Saca los resultados agrupando por los atributos indicados. La forma es:select sum(importe) from préstamo group by nom_suc suma los préstamos de cada sucursal.

1. SQLSELECT - FUNCIONES AGREGADAS

Page 175: Programacion de 'Bases de Datos1

Hasta ahora todos los programas se han centrado en extraer información. Es necesario además, insertar, borrar y modificar información en la base de datos.

Borrado.- Permite eliminar tuplas de la base de datos. Se expresa así:delete from r where <condición>donde r es una relación y es una condición where de SQL, que obtiene las tuplas de r que se eliminarán.

1. SQLDELETE

Page 176: Programacion de 'Bases de Datos1

Inserción.- Permite aumentar una o varias tuplas en la base de datos. Se usa:insert into r E donde r es una relación y E es un consulta “select” o “values(...)” donde se indican los datos de la tupla a insertar.

Actualización.- Permite modificar uno o varios valores de la base de datos. Se puede usar la proyección extendida:update set <asigna> where <condición>

1. SQLINSERT, UPDATE

Page 177: Programacion de 'Bases de Datos1

create view v as E; donde E es una consulta “select” del SQL, y v es el nombre de la vista.

1. SQLVISTAS

Page 178: Programacion de 'Bases de Datos1

Query by example QBE es un lenguaje para bases de datos relacionales, basado en el cálculo relacional de dominios.

Por tanto es lo más próximo a un lenguaje no procedural, en la práctica no existe como lenguaje, está inmerso en los lenguajes comerciales, con excelentes resultados.

También se conoce el QUEL basado en el cálculo relacional de tuplas, el cual no los trataremos.

1. QBE

Page 179: Programacion de 'Bases de Datos1

1. QBESELECT

Permite recuperar información de la base de datos. QBE elimina los resultados duplicados por default.

Junto con insert, update y delete permiten manipular los datos de cualquier forma.

Page 180: Programacion de 'Bases de Datos1

1. QBESELECT - SELECCIÓN

CAÑOTO 144 1500BOLIVAR 122 1200JUNIN 125 1800BOQUERON 188 1500JUNIN 132 1600BOLIVAR 177 1550

préstamo (nom_suc nro_pres importe)

Ej.1.- “Los préstamos de la sucursal JUNIN” :

JUNIN 125 1800JUNIN 132 1600

préstamo nom_suc nro_pres importe

P. JUNIN

Page 181: Programacion de 'Bases de Datos1

CAÑOTO 144 1500BOLIVAR 122 1200JUNIN 125 1800BOQUERON 188 1500JUNIN 132 1600BOLIVAR 177 1550

préstamo (nom_suc nro_pres importe)

Ej.2.- “Los préstamos de la sucursal JUNIN, con importe mayor a 1650” :

JUNIN 125 1800

1. QBESELECT - SELECCIÓN

préstamo nom_suc nro_pres importe

P. JUNIN >1650

Page 182: Programacion de 'Bases de Datos1

SUCHA RAMONA 134MARCO JAIME 122RUBÉN RUBÉN 178

resp_préstamo (nom_clien nom_emple nro_pres)

Ej.3.- “Los clientes que tienen el mismo nombre quesu oficial de créditos” :

RUBÉN RUBÉN 178

1. QBESELECT - SELECCIÓN

resp_préstamo nom_clien nom_emple nro_pres

P. _x _x

Page 183: Programacion de 'Bases de Datos1

CAÑOTO 144 1500BOLIVAR 122 1200JUNIN 125 1800BOQUERON 188 1500JUNIN 132 1600BOLIVAR 177 1550

préstamo (nom_suc nro_pres importe)

Ej.4.- “Número de préstamo e importe de los préstamos con importe mayor a 1500” :

125 1800132 1600177 1550

1. QBESELECT - PROYECCIÓN

préstamo nom_suc nro_pres importe

P. P.>1650

Page 184: Programacion de 'Bases de Datos1

Ej.5.- “Los clientes que tienen el mismo nombre quesu oficial de créditos, sin repetir el nombre” :

RUBÉN

1. QBESELECT - PROYECCIÓN

SUCHA RAMONA 134MARCO JAIME 122RUBÉN RUBÉN 178

resp_préstamo (nom_clien nom_emple nro_pres)

resp_préstamo nom_clien nom_emple nro_pres

P._x _x

Page 185: Programacion de 'Bases de Datos1

Ej.6.- “Los clientes que tienen oficial y la ciudad donde radican”.

MARCO calle5 La PazRUBÉN calle12 Potosí

cliente(nom_clien calle ciudad)

1. QBESELECT - PRODUCTO

SUCHA RAMONA 134MARCO JAIME 122RUBÉN RUBÉN 178

resp_presta (nom_clien nom_emple nro_pres)

MARCO La PazRUBÉN Potosí

cliente nom_clien calle ciudad

P._x P.

resp_préstamo nom_clien nom_emple nro_pres

_x

Page 186: Programacion de 'Bases de Datos1

144 MARCO125 SUCHA

prestatario (nro_pres nom_clien)

174 MARCO182 RUBEN

impositor (nro_cuen nom_clien)

Ej.7.- “Los clientes que tienen préstamo o depósito”

MARCOSUCHARUBEN

1. QBESELECT - UNION

prestatario nro_pres nom_clien

P._x

impositor nro_cuen nom_clien

P._y

Page 187: Programacion de 'Bases de Datos1

Ej.7.- “Los clientes que tienen préstamo pero notienen depósito”

SUCHA

nom_suc

1. QBESELECT - DIFERENCIA

144 MARCO125 SUCHA

prestatario (nro_pres nom_clien)

174 MARCO182 RUBEN

impositor (nro_cuen nom_clien)

prestatario nro_pres nom_clien

P._x

impositor nro_cuen nom_clien

_x

Page 188: Programacion de 'Bases de Datos1

Ej.7.- “Los clientes que tienen préstamo y depósito”

MARCOnom_suc

1. QBESELECT - INTERSECCIÓN

144 MARCO125 SUCHA

prestatario (nro_pres nom_clien)

174 MARCO182 RUBEN

impositor (nro_cuen nom_clien)

prestatario nro_pres nom_clien

P._x

impositor nro_cuen nom_clien

_x

Page 189: Programacion de 'Bases de Datos1

Ej.7.- “Los números de préstamo que tienen importe mayor a cualquier préstamo de la sucursal BOLIVAR”

144188177

nro_pres

1. QBECAJA DE CONDICIÓN

CAÑOTO 144 1500BOLIVAR 122 1200JUNIN 125 1400BOQUERON 188 1500JUNIN 132 1600BOLIVAR 177 1550

préstamo (nom_suc nro_pres importe)

préstamo nom_suc nro_pres importe

_v P. _x_v _y

condición

_v='JUNIN' and _x>_y

Page 190: Programacion de 'Bases de Datos1

“Préstamos de sucursal BOLIVAR con nom_clien”

1. QBERELACIÓN RESULTADO

CAÑOTO 144 1500BOLIVAR 122 1200JUNIN 125 1400BOQUERON 188 1500JUNIN 132 1600BOLIVAR 177 1550

préstamo (nom_suc nro_pres importe)

144 MARCO125 SUCHA122 TUCHO188 RUBÉN177 TUCHO132 JOSELITO

prestatario (nro_pres nom_clien)

préstamo nom_suc nro_pres importe

BOLIVAR _x _v

prestatario nro_pres nom_clien

_x _u

resultado nom_clien nro_pres importe

P. _u _x _v

Page 191: Programacion de 'Bases de Datos1

Funciones agregadas.- se puede usar las funciones agregadas: sum, avg, max, min, cnt, cnt_distinct, etc. Es necesario aumentar .all para evitar que elimine los duplicados.

Agrupación.- Saca los resultados agrupando por los atributos indicados.

1. QBEFUNCIONES AGREGADAS

Page 192: Programacion de 'Bases de Datos1

1. QBEFUNCIONES AGREGADAS

préstamo nom_suc nro_pres importe

BOLIVAR P.sum.all

prestatario nro_pres nom_clien

P.cnt.unq.all

préstamo nom_suc nro_pres importe

P.G P.avg.all._x

condición

avg.all._x > 8000

Page 193: Programacion de 'Bases de Datos1

Hasta ahora todos los programas se han centrado en extraer información. Es necesario además, insertar, borrar y modificar información en la base de datos.

Borrado.- Permite eliminar tuplas de la base de datos. Por ejemplo para eliminar los préstamos de la sucursal JUNIN:

1. SQLDELETE

préstamo nom_suc nro_pres importe

D. BOLIVAR

Page 194: Programacion de 'Bases de Datos1

Inserción.- Permite aumentar una o varias tuplas en la base de datos. Por ejemplo para insertar un cliente:

Actualización.- Permite modificar uno o varios valores de la base de datos. Por ejemplo para incrementar el 5% a todos los saldos de las cuentas:

1. QBEINSERT, UPDATE

cliente nom_clien calle ciudad

I. JOSELITO ca3 SCZ

cuenta nom_suc nro_cuen saldo

U. _x * 1.05_x

Page 195: Programacion de 'Bases de Datos1

UNIDAD 5.OPTIMIZACIÓN DE CONSULTAS

ObjetivoUsar las técnicas existentes para optimizar las consultas a las bases de datos relacionales. Especialmente aquellas que son críticas en el funcionamiento del sistema.

Page 196: Programacion de 'Bases de Datos1

El enfoque ciego y el de descomposición permiten responder bien y barato.

Ambos se basan en representaciones algebraicas.

Bueno, en realidad es optimización de las respuestas no de consultas.

1. INTRODUCCIÓN

Dr. Renato Barrera.

Page 197: Programacion de 'Bases de Datos1

Trabaja con un árbol sintáctico. Es una receta de cocina. Fácil de aplicar Bastante bueno. Es ciego a:

La implementación de los operadores, quizá los operadores lo consideran, pero por lo general si optimiza. !Y cuando lo necesitás!Estadisticas de los datos, quizá de acuerdo a la cantidad de datos no es necesario.

2. EL MÉTODO CIEGO

Page 198: Programacion de 'Bases de Datos1

Cuesta menos procesar relaciones pequeñas que grandes.

Las selecciones y proyecciones reducen el tamaño de las relaciones

Luego, haga usted cuanto antes las selecciones y proyecciones.

2. EL MÉTODO CIEGOMOTIVACIÓN

Page 199: Programacion de 'Bases de Datos1

1 Obtenga el árbol sintáctico2 Transforme producto natural en “selección -

producto cartesiano”.

3 Empuje las selecciones lo mas abajo posible4 Empuje proyecciones lo mas abajo posible

2. EL MÉTODO CIEGOPASOS CIEGOS

x

Page 200: Programacion de 'Bases de Datos1

Unifique selecciones y proyecciones A B AB

c1 c2 c1c2

Recombine juntas Haga planes de ejecución

2. EL MÉTODO CIEGOPASOS CIEGOS

Page 201: Programacion de 'Bases de Datos1

“Dame nombres de los proveedores de partes de color rojo”. sname ( color=‘rojo’ ( (s sp) p))

2. EL MÉTODO CIEGOEJEMPLO

sname

color=‘rojo’

p

s sp

1

Árbolsintáctico

Page 202: Programacion de 'Bases de Datos1

2. EL MÉTODO CIEGOEJEMPLO

sname

color=‘rojo’

p.p#=sp.p#

p

2

xs.s#=sp.s#

x

s sp

sname

p.p#=sp.p#

3

p

xs.s#=sp.s#

x

s sp

color=‘rojo’

Empuja seleccioneshacia abajo

Descomposiciónde juntas

Page 203: Programacion de 'Bases de Datos1

2. EL MÉTODO CIEGOEJEMPLO

sname

p.p#=sp.p#

4

p#

color=‘rojo’

p#, color

p

xp#, sname

s.s#=sp.s#

x

sname, s#

sp#, s#

sp

Empuja proyecciones hacia abajo

Page 204: Programacion de 'Bases de Datos1

2. EL MÉTODO CIEGOEJEMPLO

sname

6

p#

color=‘rojo’

p#, color

p

p#, sname

sname, s#

sp#, s#

sp

5 Unificar proyecciones y selecciones. Innecesario

Recombinar juntas

Page 205: Programacion de 'Bases de Datos1

2. EL MÉTODO CIEGOEJEMPLO

sname

7

p#

color=‘rojo’

p#, color

p

p#, sname

sname, s#

sp#, s#

sp

Planes de ejecución

Page 206: Programacion de 'Bases de Datos1

Se concentra en juntas Todas las otras operaciones se consideran

triviales Representa consulta como “grafo de

consulta”

3. MÉTODO DE DESCOMPOSICIÓN

Page 207: Programacion de 'Bases de Datos1

SemijuntaA B A ( A B)

Grafo de consulta.-Cada nodo del grafo es una relaciónExiste lado entre nodo A y nodo B, si A y B están unidos por una junta.

3. MÉTODO DE DESCOMPOSICIÓN

Page 208: Programacion de 'Bases de Datos1

Cuando el grafo es de una ruta, se hace un paso atrás y uno adelante

3. MÉTODO DE DESCOMPOSICIÓNGRAFO DE UNA RUTA

r1 r2 rk-1 rk

HACIA ATRÁSratk = rk

ratk-1 = rk-1 ratk

ratk-2 = rk-2 ratk-1

...........rat2 = r2 rat3

rat1 = r1 rat2

HACIA ADELANTErad1 = rat1

rad2 = rat2 rat1

rad3 = rat3 rat2

...........radk-1 = ratk-1 ratk-2

radk = ratk ratk-1

Page 209: Programacion de 'Bases de Datos1

Método.-1 Escoja un nodo del árbol como raíz del mismo2 Oriente los lados del árbol hacia fuera de la

raíz3 Haga el barrido hacia atrás de cada rama de

árbol4 Haga barrido hacia delante, partiendo de la

raíz5 Mande ensamblar

3. MÉTODO DE DESCOMPOSICIÓNGRAFO DE VARIAS RUTA

Page 210: Programacion de 'Bases de Datos1

3. MÉTODO DE DESCOMPOSICIÓNGRAFO DE VARIAS RUTA

AC

B

ED

raiz

A

C

BE

D

Escoja una raiz

Oriente los lados

Page 211: Programacion de 'Bases de Datos1

3. MÉTODO DE DESCOMPOSICIÓNGRAFO DE VARIAS RUTA

A

C

B

E

D

Paso hacia atrásEat=E Bat=B Aat=ADat=DE

Cat=((C Aat) Bat) DaCad=Cat

Paso hacia delanteAad=Aat Cad Bad=BatCad Dad=DatCad

Ead=EatDad

Envíe Aad, Bad, Cad, Dad, Ead y ensamble.

Page 212: Programacion de 'Bases de Datos1

3. MÉTODO DE DESCOMPOSICIÓNGRAFO CON CICLO

deporte_practicado

Futbol VenancioJai Alai Joao

deporte_practicado (deporte persona)

Joao BrasilVenancio España

origen (persona país)

Brasil FutbolEspaña Jai Alai

deporte_nacional (país deporte)

deporte_nacional

origen

“Dame las personas que practican su deporte nacional”

Quienes? !!NADIE!!

Page 213: Programacion de 'Bases de Datos1

3. MÉTODO DE DESCOMPOSICIÓNGRAFO CON CICLO

deporte_practicado

deporte_nacional

origen

TRUCO.- migración de llaves.1 Rompa un nodo del ciclo2 Añada una llave a tal nodo, tomo ese nodo como

raíz.3 Haga pasos hacia atrás y hacia delante:

Migrando llaves cuando haga semijunta con otra relación sin llave, y usando llaves cuando junte con relación que tiene llave.

Page 214: Programacion de 'Bases de Datos1

3. MÉTODO DE DESCOMPOSICIÓNGRAFO CON CICLO

deporte_practicado

deporte_nacional

origen

origen1 origen2dep_prac dep_nac

1 Joao Brasil2 Venancio España

origen2 (llave, persona, país)

Page 215: Programacion de 'Bases de Datos1

3. MÉTODO DE DESCOMPOSICIÓNGRAFO CON CICLO

origen1 origen2dep_prac dep_nac

1 Brasil Futbol2 España Jai Alai

dep_nac_at = dep_nac origen2dep_nac_at (llave, país, deporte)

Brasil FutbolEspaña Jai Alai

dep_nac (país, deporte)

1 Joao Brasil2 Venancio España

origen2_at(llave, persona, país)

Page 216: Programacion de 'Bases de Datos1

3. MÉTODO DE DESCOMPOSICIÓNGRAFO CON CICLO

origen1 origen2dep_prac dep_nac

1 Brasil Futbol2 España Jai Alai

dep_nac_at (llave, país, deporte)

Futbol VenancioJai Alai Joao

dep_prac (deporte persona)

1 Futbol Venancio2 Jai Alai Joao

dep_prac_at = dep_prac dep_nac_atdep_prac_at (llave, deporte, persona)

Page 217: Programacion de 'Bases de Datos1

3. MÉTODO DE DESCOMPOSICIÓNGRAFO CON CICLO

origen1 origen2dep_prac dep_nac

1 Futbol Venancio2 Jai Alai Joao

dep_prac_at (llave, deporte, persona)

1 Joao Brasil2 Venancio España

origen1(llave, persona, país)

origen1_at = origen1 dep_prac_atorigen1_at (llave, persona, país)

!!!!NADIE!!!, correcto Fin Renato.

Page 218: Programacion de 'Bases de Datos1

UNIDAD 6.CREACIÓN DE BASES DE DATOS

ObjetivoImplementar bases de datos relacionales, utilizando los recursos y lenguajes existentes en el momento.

Page 219: Programacion de 'Bases de Datos1

La implementación de la base de datos comienza con la creación de las tablas.

CREATE SEQUENCE s_dept_id MINVALUE 1 MAXVALUE 9999999 INCREMENT BY 1 START WITH 51 NOCACHE NOORDER NOCYCLE;

INTRODUCCIÓN

Page 220: Programacion de 'Bases de Datos1

CREATE TABLE s_dept (id NUMBER(7) CONSTRAINT s_dept_id_nn NOT NULL, name VARCHAR2(25) CONSTRAINT s_dept_name_nn NOT NULL, region_id NUMBER(7), CONSTRAINT id PRIMARY KEY (id), CONSTRAINT nr UNIQUE (name,region_id));

INSERT INTO s_dept VALUES (10, 'Finance',1);

INTRODUCCIÓN

Page 221: Programacion de 'Bases de Datos1

Los índices aceleran la recuperación de datos, pero ocupan espacio, pueden ser:uniqueadmitir valores duplicados

Las claves primarias son siempre unique

Las claves foráneas pueden admitir duplicados

Pueden crearse índices sobre grupos de campos

1. ÍNDICES

Page 222: Programacion de 'Bases de Datos1

Create unique index index_id on s_dept(id)

Create index index_name on s_dept(name)

Create unique index index_name_reg on s_dept(name, region_id)

1. ÍNDICES

Page 223: Programacion de 'Bases de Datos1

Permite asegurar la consistencia entre las relaciones.

2. INTEGRIDAD REFERENCIAL

Padre(maestro)

Hijo(detalle)

Clave primaria

Clave foránea

Todo hijo debe tener un padreTodo padre debe tener una clave primaria única

Page 224: Programacion de 'Bases de Datos1

Las claves primarias deben declararse como not nulls.

La clave primaria debe ser unique.

Si el usuario borra una clave primaria, y existen claves foráneas asociadas, falla.

Si el usuario modifica una clave primaria y existen claves foráneas asociadas, falla.

Si el usuario actualiza o inserta una clave foránea y no existe clave primaria, falla.

2. INTEGRIDAD REFERENCIAL

Page 225: Programacion de 'Bases de Datos1

Referencias cíclicas

Autoreferencias

Referencias múltiples

2. INTEGRIDAD REFERENCIAL

Padre

Hijo

Padre/Hijo

Padre

Hijo Hijo

Page 226: Programacion de 'Bases de Datos1

ALTER TABLE s_dept ADD CONSTRAINT s_dept_id_pk PRIMARY KEY (id),

ALTER TABLE s_dept ADD CONSTRAINT s_dept_region_id_fk FOREIGN KEY (region_id) REFERENCES s_region (id);

2. INTEGRIDAD REFERENCIALReferencias cíclicas

Page 227: Programacion de 'Bases de Datos1

CREATE TABLE empleado ( emp_num number NOT NULL, gerente number, CONSTRAINT pk_en PRIMARY KEY (emp_num), CONSTRAINT fk_en FOREIGN KEY (gerente) REFERENCES empleado(emp_num));

2. INTEGRIDAD REFERENCIALAutoreferencias

Page 228: Programacion de 'Bases de Datos1

ALTER TABLE tienda ADD CONSTRAINT pk_tienda PRIMARY KEY (tienda_cod);

ALTER TABLE video ADD CONSTRAINT fk1_tienda FOREING KEY (tienda_cod) REFERENCES tienda;

ALTER TABLE empleado ADD CONSTRAINT fk2_tienda FOREING KEY (tienda_cod) REFERENCES tienda;

2. INTEGRIDAD REFERENCIALReferencias múltiples

Page 229: Programacion de 'Bases de Datos1

Toda clave primaria es un índice. Las claves primarias y foráneas son estructurales: implican una relación con otra relación.

Un índice es básicamente una herramienta de optimización de performance: no es parte de la estructura: “podemos hacer un drop de un índice, no podemos eliminar una clave primaria”.

Las claves foráneas no incluyen un índice, cuando la tabla crece es importante incorporarlo para mejorar la performance.

3. CLAVES Y COLUMNAS CONVALORES ÚNICOS

Page 230: Programacion de 'Bases de Datos1

La restricción unique asegura que todas las filas tendrán un valor único en la columna indicada.

Una columna que es primary key es automáticamente de valor único.

Un índice único también asegura esta propiedad:

ALTER TABLE s_dept ADD CONSTRAINT s_dept_na_reg_id_uk UNIQUE (name, region_id);

3. CLAVES Y COLUMNAS CONVALORES ÚNICOS

Page 231: Programacion de 'Bases de Datos1

Las autorizaciones de uso de la base de datos son denominadas privilegios.

El dueño de la base de datos tiene todos los privilegios.

Existen privilegios sobre:la baselas tablaslas columnas

4. PERMISOS DE ACCESOY PRIVILEGIOS

Page 232: Programacion de 'Bases de Datos1

Connect.- Permite crear un usuario que podrá conectarse a otras bases de datos si le dan permiso. Se usa para los usuarios comunes.Grant connect to pedro identified by caña;

Resource.- Da permiso a un usuario ya creado con “connect”, para crear una base de datos, incluyendo tablas, procedimiento almacenados, índices, etc.Grant resource to paty identified by minie;

4. PERMISOS DE ACCESOY PRIVILEGIOS

Page 233: Programacion de 'Bases de Datos1

DBA.- Da permiso a un usuario con permiso “resource”, para convertirse en administrador de la base de datos.Grant dba to katia identified by clarabella;

4. PERMISOS DE ACCESOY PRIVILEGIOS

Page 234: Programacion de 'Bases de Datos1

Solo el dueño puede dar permisos para accesar a una base de datos. Se puede usar: all, select, update, insert, delete y otros.

Por ejemplo Paty puede autorizar a Pedro:Grant all on s_dept to pedro;

Paty autoriza a Katia para actualizar el atributo name de la tabla s_deptGrant update(name) on paty.s_dept to katia;

4. PERMISOS DE ACCESOY PRIVILEGIOS

Page 235: Programacion de 'Bases de Datos1

Restringe el uso de columnas de tablas Restringe el uso de filas de tablas Restringe los updates a rangos Acceso a datos derivados Encapsular detalles de un select complicado Permite optimizar consultas, de acuerdo a los

criterios del método ciego.

5. VISTAS

Page 236: Programacion de 'Bases de Datos1

CREATE VIEW v_cliente AS SELECT cod, nom, apell FROM cliente;

CREATE VIEW v_cli_est AS SELECT cli_cod, dir, ciu, estado.nom FROM cliente, estado WHERE cliente.est=estado.cod;

SELECT * FROM v_cli_est WHERE cli_cod=105;

5. VISTAS

Page 237: Programacion de 'Bases de Datos1

UNIDAD 7.GENERACIÓN DE APLICACIONES

ObjetivoUtilizar herramientas Oracle para generar bases de datos y desarrollar aplicaciones.- Control de usuarios- Desarrollo de aplicaciones en Oracle

Page 238: Programacion de 'Bases de Datos1

UNIDAD 8.DISEÑO DE BASES DE DATOS

RELACIONALES

ObjetivoAplicar las reglas de normalización de tablas en bases de datos relacionales, propuestas por Cood y otros.

Page 239: Programacion de 'Bases de Datos1

El DBMS no es suficiente, de ninguna manera, para administrar una base de datos relacional, en gran parte depende del DBA. Para comenzar, debe aplicar las siguientes restricciones cuando crea las tablas:

1 El orden de las filas no debe ser significante.

2 Orden de columnas no debe ser significante.

3 Cada intersección fila/columna debe contener un valor simple del atributo.

4 Cada fila en una tabla debe ser distinta.

1. DIFICULTADES EN EL DISEÑODE BD RELACIONALES

Page 240: Programacion de 'Bases de Datos1

Duplicidad.- La duplicidad de datos está presente cuando un atributo tiene dos valores idénticos, la duplicidad si está permitida. Al borrar un datos repetido se pierde información.

2. REDUNDANCIA VERSUSDUPLICIDAD DE DATOS

P1 rojop2 azulp3 rojo

p (p#, color)

P1 rojop2 azulp3

p (p#, color)

!!PERDI LA INFORMACIÓN!!, QUE COLOR TIENE p3?

Page 241: Programacion de 'Bases de Datos1

Redundancia.- Un dato es redundante cuando está repetido, esto es, se puede borrar sin perder información, la redundancia no está permitida en bases de datos, es 100% responsabilidad del DBA evitar la redundancia.

2. REDUNDANCIA VERSUSDUPLICIDAD DE DATOS

s2 p1 lápizs3 p1 lápizs4 p3 borrador

sp (s#, p#, pnombre)

s2 p1 lápizs3 p1s4 p3 borrador

sp (s#, p#, pnombre)

NO PIERDO LA INFORMACIÓN, p1 ES lápiz

Page 242: Programacion de 'Bases de Datos1

La primera forma normal tiene que ver con las siguientes tres forma de almacenamiento de datos en una tabla de una base de datos relacional.

3. REPETICIÓN DE GRUPOSPRIMERA FORMA NORMAL

Page 243: Programacion de 'Bases de Datos1

Repetición de grupos.- Mencionamos que cada intersección fila/columna debe contener un valor simple del atributo. Estas formas de la tabla sp, no cumplen la primera forma normal:

3. REPETICIÓN DE GRUPOSPRIMERA FORMA NORMAL

s5 Aria p1s2 Baratillo p1, p4s7 ABC p6s9 Tiluchi p8,p2,p6

sp (s#, snombre p# ) s5 Aria p1s2 Baratillo p1

p4s7 ABC p6s9 Tiluchi p8

p2p6

sp (s#, snombre p# )

Page 244: Programacion de 'Bases de Datos1

Atributos separados.- Para evitar la repetición de grupos podría crearse tres atributos p#_1a, p#_2a, p#_3a, pero esto tampoco está permitido por la 1FN, porque p# es un solo atributo indivisible.

3. REPETICIÓN DE GRUPOSPRIMERA FORMA NORMAL

s5 Aria p1s2 Baratillo p1 p4s7 ABC p6s9 Tiluchi p8 p2 p6

sp (s#, snombre p#_1a p#_2a p#_3a )

Page 245: Programacion de 'Bases de Datos1

Determinante o “atributo que tiene dependencia funcional” .- Un atributo A es determinante de otro atributo B, si cada valor de A tiene precisamente un valor asociado de B.

4. DETERMINANTES EIDENTIFICADORES

carnet_id combre_persona

Carnet_id es determinante de nombre_personaporque un carnet tiene un solo nombre.Y EN SENTIDO CONTRARIO?

Page 246: Programacion de 'Bases de Datos1

Diagrama de dependencias funcionales.- Es posible generar un diagrama de dependencias funcionales. Las otras reglas de normalización se basan en estas dependencias funcionales, por tanto el DBA si no tiene el diagrama debe conocer a la perfección estas dependencias.

4. DETERMINANTES EIDENTIFICADORES

p#

p_nombre

cant_en_stock

Page 247: Programacion de 'Bases de Datos1

Determinantes compuestos.- A veces un grupo de atributos son determinate de otro atributo.

4. DETERMINANTES EIDENTIFICADORES

artículo#

fecha_factura

cant_vendida

factura#

Page 248: Programacion de 'Bases de Datos1

Dependencias transitivas.- Si A determina a B y B determina a C, por definición A determina a C y se llama dependencia transitiva. Pero esta última no es necesario representarla en el diagrama, se sobreentiende.

4. DETERMINANTES EIDENTIFICADORES

cliente# nombre_clifactura#

A B C

Page 249: Programacion de 'Bases de Datos1

Identificadores.- Identificador de una tabla es uno o más atributos que identifican plenamente a una fila, además, debe tener la mínima cantidad de atributos.

La regla que dice que no pueden haber dos filas idénticas en una tabla, significa que toda tabla tiene al menos un identificador. Algunas tablas tiene varios identificadores.

4. DETERMINANTES EIDENTIFICADORES

cliente# nombre_clifactura#

Page 250: Programacion de 'Bases de Datos1

“Una tabla no cumple la 2FN cuando un atributo, que no sea identificador ni parte de identificador, depende de una parte de un identificador”.

5. FORMAS NORMALES, COODSEGUNDA FORMA NORMAL

bodega#

cantidadparte#

dirección_bodega

Page 251: Programacion de 'Bases de Datos1

“Una tabla no cumple la 2FN cuando un atributo, que no sea identificador ni parte de identificador, depende de una parte de un identificador”. NORMALIZADO.

5. FORMAS NORMALES, COODSEGUNDA FORMA NORMAL

bodega#cantidad

parte#

bodega# dirección_bodega

Page 252: Programacion de 'Bases de Datos1

“Una tabla no cumple la 3FN cuando un atributo, que no sea identificador ni parte de identificador, depende de otro atributo que tampoco es identificador ni parte de identificador”.

5. FORMAS NORMALES, COODTERCERA FORMA NORMAL

cliente# nombre_clifactura#

Page 253: Programacion de 'Bases de Datos1

“Una tabla no cumple la 3FN cuando un atributo, que no sea identificador ni parte de identificador, depende de otro atributo que tampoco es identificador ni parte de identificador”. NORMALIZADO.

5. FORMAS NORMALES, COODTERCERA FORMA NORMAL

cliente#factura#

cliente# nombre_cli

Page 254: Programacion de 'Bases de Datos1

Simplemente. “Una tabla está en FNBC si todo determinante es un identificador”.

5. FORMAS NORMALES, COODFORMA NORMAL DE BOYCE-COOD

nombre_cliente

nombre_sucursal

nombre_banquero

OJO. !!DOS IDENTIFICADORES!!

Page 255: Programacion de 'Bases de Datos1

Simplemente. “Una tabla está en FNBC si todo determinante es un identificador”. NORMALIZADO.

5. FORMAS NORMALES, COODFORMA NORMAL DE BOYCE-COOD

nombre_cliente nombre_banquero

nombre_sucursalnombre_banquero

Page 256: Programacion de 'Bases de Datos1

La 4FN y 5FN tienen que ver con hechos ”multivalorados” , por ejemplo el empleado que tiene muchos dependientes, o el empleado que tiene muchas habilidades.

5. FORMAS NORMALES, COODCUARTA FORMA NORMAL

dependienteempleado#

habilidadempleado#

Page 257: Programacion de 'Bases de Datos1

Una tabla está en 4FN si cumple:

No tiene dos o más hechos multivalorados independientes

Está en FNBC.

5. FORMAS NORMALES, COODCUARTA FORMA NORMAL

auto

dirección

empleado#

Page 258: Programacion de 'Bases de Datos1

Una tabla está en 4FN si cumple:

No tiene dos o más hechos multivalorados independientes

Está en FNBC. NORMALIZADO

5. FORMAS NORMALES, COODCUARTA FORMA NORMAL

auto

dirección

empleado#

empleado#

Page 259: Programacion de 'Bases de Datos1

La 5FN tiene que ver con hechos multivalorados dependientes como:

Este tipo de tablas solo es posible descomponer en otras más pequeñas, si hacemos que las tuplas cumplan la condición:si (sx,px,j1)spj y (sx,p1,jx)spj y (s1,px,jx)spj entonces (s1,p1,j1)spj

5. FORMAS NORMALES, COODQUINTA FORMA NORMAL

s#

p#

j#

Page 260: Programacion de 'Bases de Datos1

Si la tabla cumple la condición indicada:si (sx,px,j1)spj y (sx,p1,jx)spj y (s1,px,jx)spj entonces (s1,p1,j1)spj, entonces se puede normalizar separando en tres tablas:

5. FORMAS NORMALES, COODQUINTA FORMA NORMAL

s# p# j#p#

s# j#

Page 261: Programacion de 'Bases de Datos1

Dependencia de junta.- Una relación r satisface una dependencia de junta:DJ*(x1, x2,....,xn), si es igual a la junta o producto natural de sus proyecciones sobre x1, x2,....,xn. Donde x1, x2,....,xn son subconjuntos del esquema de r.

Una relación está en 5FN si tiene una dependencia de junta DJ*(x1, x2,....,xn), y cada una de las proyecciones de r sobre x1,x2,..,xn, tiene como identificador un identificador de r.

5. FORMAS NORMALES, COODQUINTA FORMA NORMAL

Page 262: Programacion de 'Bases de Datos1

Nuevas aplicaciones de las bases de datos El modelo orientado a objetos Lenguajes orientados a objetos Lenguajes de programación persistentes Sistemas C++ persistentes

UNIDAD 9. BASES DE DATOS ORIENTADAS A OBJETOS

Page 263: Programacion de 'Bases de Datos1

Relaciones anidadas Los tipos complejos y la programación orientada a objetos Consultas con tipos complejos Creación de valores y de objetos complejos Comparación entre las bases de datos orientadas a objetos y las bases de datos relacionales orientadas a objetos

UNIDAD 10. BD RELACIONALES ORIENTADAS A OBJETOS

Page 264: Programacion de 'Bases de Datos1

CONCLUSIÓN

Page 265: Programacion de 'Bases de Datos1

ANÁLISIS Y DISEÑO ESTRUCTURADO

PARTE II

Page 266: Programacion de 'Bases de Datos1

Objetivos

Aplicar en detalle los conocimientos científicos, capacidades técnicas y métodos básicos, para el análisis y diseño estructurado de sistemas de información.

Desarrollar un proyecto de ingeniería referente a un sistema de información.

Page 267: Programacion de 'Bases de Datos1

DEFINICIONES

Análisis estructurado Deriva en un modelo estructurado de

requerimientos Diseño estructurado

Desarrollo de un sistema computarizado, como solución a un problema

Page 268: Programacion de 'Bases de Datos1

OBJETIVOS DEL AE Y DE

Mejorar la calidad del software y recudir el riesgo de fallas.

Permitie confiabilidad, flexibilidad, facilidad de mantenimiento, eficiencia, portabilidad y seguridad.

Page 269: Programacion de 'Bases de Datos1

BENEFICIOS DEL AE Y DE

Concentrarse sobre el propósito fundamental del sistema

Desarrollo de documentación del softwareCreación de un mapa del sistema

Page 270: Programacion de 'Bases de Datos1

HISTORIA DEL ANÁLISIS ESTRUCTURADO

Structured Analysis Design Technique Douglas Ross

Structured Design Tom DeMarco

Page 271: Programacion de 'Bases de Datos1

HISTORIA DEL DISEÑO ESTRUCTURADO

Desarrollado en los 1970sLarry ConstantineEdward YourdonDiseño estructurado de procesosMichael Jackson y Jean Dominique WarnierDiseño estructurado de datos

Page 272: Programacion de 'Bases de Datos1

1. INTRODUCCIÓN

Concepto general de sistemaClasificación de los sistemasSistemas automatizados. Clasificación.Principios generales de los sistemas.El análisis de sistemas.

Page 273: Programacion de 'Bases de Datos1

2. PARTICIPANTES EN EL ANÁLISIS DE SISTEMAS

Usuarios.Dirección.Auditores, encargados de calidad y estándares.Analistas de sistemas.Diseñador de sistemas.Programadores.Personal operativo.

Page 274: Programacion de 'Bases de Datos1

3. TÉCNICAS DE ENTREVISTAS Y RECOLECCIÓN DE DATOS

Objetivos de una entrevistaTipos de entrevistasGuías para conducir entrevistasPosibles formas de resistencia en la entrevistaProblemas que hay que evitarFormas alternativas de recolectar información

Page 275: Programacion de 'Bases de Datos1

4. HERRAMIENTAS DE ANÁLISIS ESTRUCTURADO

Características de las herramientasDiagrama de flujo de datosDiagrama entidad relaciónDiagramas de transición de estadoDiagramas de estructura

Page 276: Programacion de 'Bases de Datos1

5. CICLO DE VIDA DE LOS SISTEMAS

Concepto de ciclo de vida de los proyectosEl ciclo de vida clásico. DesventajasCiclo de vida semiestructuradoCiclo de vida estructurado. Ventajas.

Formas de aplicaciónCiclo de vida por prototiposLas herramientas CASE

Page 277: Programacion de 'Bases de Datos1

6. ASPECTOS IMPORTANTES DE LOS SISTEMAS

AUTOMATIZADOSProductividadConfiabilidadFacilidad de mantenimientoEficienciaPortabilidadSeguridad

Page 278: Programacion de 'Bases de Datos1

UNIDAD 3. PROCESOS DEL ANÁLISIS

El libro de Edward Yourdon fue escrito en 1989 después de dos años de estudio y experiencias.

Modelo esencial Modelo ambiental Modelo del comportamiento

Implementación del modelo

Page 279: Programacion de 'Bases de Datos1

13. EL MODELO ESENCIAL

Dificultades en la identificación de requerimientos

El concepto de esencia del sistemaDificultades en la construcción de un

modeloComponentes del modelo esencial

Page 280: Programacion de 'Bases de Datos1

14. EL MODELO AMBIENTAL

Descripción del propósito del sistemaDiagrama de contextoLista de eventosOtros componentes del modelo ambientalConstrucción del modelo ambiental

Page 281: Programacion de 'Bases de Datos1

Diagrama de flujo de datos de nivel altoSistema en perspectiva del mundo realSimple caja negra con interfaces a fuentes

externas y usuarios

13. EL MODELO AMBIENTALDiagrama de contexto

Page 282: Programacion de 'Bases de Datos1

El usuario La máquinaMáquina monederade soda en lata

Monedas yselección

Soda en lata y cambio

Soda en lata y cambio

Monedas

14. EL MODELO AMBIENTALDiagrama de contexto

Page 283: Programacion de 'Bases de Datos1

Vendedor llena máquina de soda en lata con sodaVendedor saca monedas de la máquina de soda en lataVendedor aumenta cambio a máquina de soda en lataUsuario inserta monedas en la máquina de soda en lataUsuario selecciona el sabor de la sodaUsuario saca la soda de la máquina de soda en lataUsuario saca su cambio de la máquina de soda en lata

14. EL MODELO AMBIENTALLista de eventos

Page 284: Programacion de 'Bases de Datos1

Ejercicio

Caso de estudio Automatizar el sistema de control de inventario

para un almacén de salida de grandes cajas (muebles, herramientas, abarrotes, etc.).

Use el AE y el DE para modelar la situación actual y determinar como puede ser automatizado el sistema.

Page 285: Programacion de 'Bases de Datos1

Situation actual Cada dia, Ramona introduce los recibos de

ventas, en una hoja Excel que Renato generó. La hoja electrónica marca los ítems que deben

ser reordenados. Ramona escribe las órdenes de compra para

cada ítem que fue marcado. Cuando el ítem llega, Ramona introduce este en

la hoja electrónica.

Ejercicio

Page 286: Programacion de 'Bases de Datos1

Propósito del nuevo sistema Ramona está comenzando a fallar. Rosalva necesita más control sobre el sistema. Renato está comenzando a perder peso en la

organización, solo tiene tiempo para mantener la hoja electrónica.

Ejercicio

Page 287: Programacion de 'Bases de Datos1

Propósito del ejercicio: familiarizarse con lo que es un diagrama de

contexto, y poder desarrollar un sesión con lluvia de ideas,

evaluar las ventajas y desventajas de la técnica, determinar el criterio de entrada y salida en la

sesión de construcción del diagrama de contexto.

Ejercicio

Page 288: Programacion de 'Bases de Datos1

Proceso Desarrollar el diagrama de contexto y discutir

el resultado.

Símbolos

Sistema Interacciones Objectos externos

Ejercicio

Page 289: Programacion de 'Bases de Datos1

Identificación de respuestas a los eventosConexión de las respuestasDesarrollo del modelo inicialNivelación de los DFDsCompletando el diccionario de datosCompletando las especificaciones del procesoRefinamiento del diagrama entidad relaciónTerminado del diagrama transición de estado

15. EL MODELO DEL COMPORTAMIENTO

Page 290: Programacion de 'Bases de Datos1

Determinar los límites a automatizarseDeterminar dispositivos de entrada y salidaFormatos de entrada y salidaDiseño de formulariosCódigos de entrada y salidaIdentificar soporte manual adicionalEspecificación de restricciones de operaciones

16. EL MODELO A IMPLEMENTARSE

Page 291: Programacion de 'Bases de Datos1

UNIDAD 2. HERRAMIENTAS PARA MODELAR SISTEMAS

Diagrama de flujo de datos DFDDiccionario de datos DDEspecificación de procesosDiagramas entidad relaciónDiagramas de transición de estado

Page 292: Programacion de 'Bases de Datos1

7. DIAGRAMA DE FLUJO DE DATOS

Componentes de los diagramas de flujo de datos (DFD)

Guías para la construcción de un DFDDFDs con nivelesExtensiones de DFDs a procesos de tiempo

real

Page 293: Programacion de 'Bases de Datos1

7. DIAGRAMA DE FLUJO DE DATOS

El diagrama de flujo de datos DFDs, muestran la descomposición funcional, con un énfasis en la transferencia de datos dentro y fuera del sistema, y entre unidades de programa.

Page 294: Programacion de 'Bases de Datos1

Notación (Yourdon/DeMarco)

Flujo

Proceso

Terminador

Almacén

7. DIAGRAMA DE FLUJO DE DATOS

Componentes de los DFDs

Page 295: Programacion de 'Bases de Datos1

Como debe ser la notación de los DFDs? Flujo de dato: nombre-frase que describa el dato.

Terminator: nombre o frase que describa el sistema, agente, dispositivo, u otro, al que el dato entra, y donde el dato existe en el sistema.

Almacén de datos: nombre-frase del archivo, base de datos o repositorio donde el sistema guarda el dato.

Proceso: verbo-frase que describe la operación hecha sobre el dato: puede contener el nombre de un sistema u operación que manipula el dato.

7. DIAGRAMA DE FLUJO DE DATOS

Guías para la construcción de un DFD

Page 296: Programacion de 'Bases de Datos1

Donde comenzar? Diagrama de contexto Nivel cero del DFD

El usuario La máquinaMáquina monederade soda en lata

Monedas yselección

Soda en lata y cambio

Soda en lata y cambio

Monedas

7. DIAGRAMA DE FLUJO DE DATOS

Guías para la construcción de un DFD

Page 297: Programacion de 'Bases de Datos1

Como continuar? Descomponer los procesos en niveles más y más

bajos hasta que estén listos para representar diseño detallado.

Cada DFD debería tener entre 3 y 9 procesos. La descripción de procesos primitivos se llama

“especificación de procesos” o “miniespecificaciones”, usualmente se representa en seudocódigo.

7. DIAGRAMA DE FLUJO DE DATOS

DFDs con niveles

Page 298: Programacion de 'Bases de Datos1

cargadespacha

cuenta

saca

Congelador

Deposito

Sodas lata

Momedas

Monedas

Sodas lata

Monedas

Soda lata

Soda lata

Monedas

Cambio

Selección

colocaCambio Cambio

7. DIAGRAMA DE FLUJO DE DATOS

DFDs con niveles

El usuario La máquinaMáquina monederade soda en lata

Monedas yselección

Soda en lata y cambio

Soda en lata y cambio

Monedas

Page 299: Programacion de 'Bases de Datos1

Terminador Vs. Almacén: Un terminador (fuente de datos o basurero)

está fuera de la frontera del sistema en análisis; un almacén de datos está dentro y bajo el control del sistema objeto de análisis.

AlmacénTerminador

7. DIAGRAMA DE FLUJO DE DATOS

DFDs con niveles

Page 300: Programacion de 'Bases de Datos1

FXY

f1

f2

f3

f4

f5

f6

f7

X Ya

b

c

de f

g

h

f41

f44 f45

f42

f43

c

d

c1c2

d1 d2

e

7. DIAGRAMA DE FLUJO DE DATOS

DFDs con niveles

Page 301: Programacion de 'Bases de Datos1

Balanceo : Los “datos de entrada” del nivel hijo, deben

ser idénticos a los “datos de entrada” del nivel padre.

Los “datos de salida” del nivel hijo, deben ser idénticos a los “datos de salida” del nivel padre.

7. DIAGRAMA DE FLUJO DE DATOS

DFDs con niveles

Page 302: Programacion de 'Bases de Datos1

Consideraciones prácticas: Cada símbolo debe ser etiquetado. No hay procesos sin flujos de datos de

entrada. No hay procesos sin flujos de datos de

salida. Los datos no fluyen diréctamente entre datos

fuente, basureros o almacenes. Los niveles deberían ser balanceados.

7. DIAGRAMA DE FLUJO DE DATOS

DFDs con niveles

Page 303: Programacion de 'Bases de Datos1

Sumario de DFD: Se centra en aspectos funcionales

del sistema:• Qué funciones debe ejecutar el sistema?• Cuales son las interacciones entre estas

funciones?

Representar el DFD en niveles es una técnica “Top down”.

7. DIAGRAMA DE FLUJO DE DATOS

DFDs con niveles

Page 304: Programacion de 'Bases de Datos1

Necesidad de una notaciónNotación: definiciones, datos elementales,

datos opcionales, iteracción-selección-aliasComo mostrar el diccionario de datos al

usuarioImplementación del Diccionario de Datos

8. DICCIONARIO DE DATOS

Page 305: Programacion de 'Bases de Datos1

Es un repositorio de descripciones detalladas referentes a varias construcciones que aparecen el cada DFD.

No hay un formato formal, pero cada construcción debería tener una entrada en el Diccionario de Datos.

Muchas de las herramientas CASE proveen el Diccionario de Datos en forma automática.

8. DICCIONARIO DE DATOS

Page 306: Programacion de 'Bases de Datos1

Describir por cada entrada: Tipo(Flujo de datos, Almacén de datos,Terminador,

Proceso) Nombre Alias Descripción Contenido

8. DICCIONARIO DE DATOS

Page 307: Programacion de 'Bases de Datos1

Un ejemplo: Tipo: Flujo de dato Nombre:Cambio Alias: Description:

Fdesde el proceso “coloca” hasta el almacén de datos “depósito” …...

Contenido: …….

8. DICCIONARIO DE DATOS

Page 308: Programacion de 'Bases de Datos1

Lenguaje estructuradoPre/post condicionesTablas de decisiónGráficos y diagramasDiagramas de flujoDiagramas Nassi-Shneiderman

9. ESPECIFICACIÓN DE PROCESOS

Page 309: Programacion de 'Bases de Datos1

Son las especificaciones de los procesos primitivos, o mini-especificaciones. Los pasos esenciales de tipo procedural, para

lograr la acción necesaria de un proceso primitivo.

Tipos de acción: secuencial, paralela, decisión e iteracción.

Español estructurado, árbol o tabla de decisiones, o seudocódigo…

9. ESPECIFICACIÓN DE PROCESOS

Page 310: Programacion de 'Bases de Datos1

Especificación de proceso: cuenta

Inicio:Hacer{

Obtener moneda

}hasta (total >= requirido);.

Informa proceso “despachar”;

if (total > requirido)

Return cambio:

End;

9. ESPECIFICACIÓN DE PROCESOS

cargadespacha

cuenta

saca

Congelador

Deposito

Sodas lata

Momedas

Monedas

Sodas lata

Monedas

Soda lata

Soda lata

Monedas

Cambio

Selección

colocaCambio Cambio

Page 311: Programacion de 'Bases de Datos1

Ejercicio: DFD

Propósito del ejercicio: familiarizarse con lo que los DFDs son, y

conococer como se obtiene este a partir del diagrama de contexto.

Descubir el propósito del diseño en varios niveles.

Page 312: Programacion de 'Bases de Datos1

Ejercicio: DFD

Crear un DFD y su diccionario de datos a partir de tu diagrama de contexto. Partir el diagrama de contexto en al menos 3

burbujas. Escoger una burbuja del primer nivel y partirla en

otras, y así sucesivamente.

Grupos de discución: Compare / contraste los DFDs con Casos de Uso.

Page 313: Programacion de 'Bases de Datos1

Componentes de un diagrama entidad relación

Guías para la construcción de un diagrama entidad relación

Extensiones del diccionario de datos para los diagramas entidad relación

10. DIAGRAMAS ENTIDAD RELACIÓN

Page 314: Programacion de 'Bases de Datos1

Qué es? Una herramienta para modelamiento de datos. Por P. Chen’s modelo ER (1976). El modelo ER ha sido usado ampliamente en el

diseño de bases de datos.

Porqué el diagrama ER?

10. DIAGRAMAS ENTIDAD RELACIÓN

Page 315: Programacion de 'Bases de Datos1

Construcción del diagrama ER Entidad Relación Atributo(Propiedad)

10. DIAGRAMAS ENTIDAD RELACIÓN

Page 316: Programacion de 'Bases de Datos1

Entidad Una entidad en ER representa un objeto del

mundo real

Entity Name

10. DIAGRAMAS ENTIDAD RELACIÓN

Page 317: Programacion de 'Bases de Datos1

Relación Una relación define como se relacionan las

entidades, es representada por un rombo.

RelaciónFuente Destino

10. DIAGRAMAS ENTIDAD RELACIÓN

Page 318: Programacion de 'Bases de Datos1

Cardinalidad y participación. !YA VIMOS!

10. DIAGRAMAS ENTIDAD RELACIÓN

Page 319: Programacion de 'Bases de Datos1

Paciente

Visitaestudio

Generatiene

contiene

Series

contiene

tiene

Resultados

Reporte

contiene

imagenes

includes

1

1-n1-n

1

11-n

1

1-n

10-n

1-n

0-n

1

0-1

resultados0-n

contiene1

10. DIAGRAMAS ENTIDAD RELACIÓN

Page 320: Programacion de 'Bases de Datos1

Notación y componentesDiagramas particionadosConstrucción de diagramas de transición de

estadoRelación con otras herramientas de

modelación

11. DIAGRAMA TRANSICIÓN DE ESTADO

Page 321: Programacion de 'Bases de Datos1

Qué son? Herramientas para definir el comportamiento del

modelo Un estado es:

“Un set de circunstancias o atributos que caracterizan a una persona o cosa en un momento o tiempo dado; camino o forma en que existe; condición.”

Aplicación Sistemas que dependen del tiempo

11. DIAGRAMA TRANSICIÓN DE ESTADO

Page 322: Programacion de 'Bases de Datos1

Símbolos Estado

Transición de estado

– Estados corresponde a estados observables del sistema estados inicial y final

– Condiciones y acciones

– Diagramas particionados

condiciónacción

Estadoo

11. DIAGRAMA TRANSICIÓN DE ESTADO

Notación y componentes

Page 323: Programacion de 'Bases de Datos1

11. DIAGRAMA TRANSICIÓN DE ESTADO

Construcción diagramas transición de estado

Esperamonedas

Vendeproducto

Esperaselección

Rechaza botónpresionado

Retorna monedainsertada

Suficiente dineroinsertado

Selección hecha

Producto vendidoDa cambio si hay

Page 324: Programacion de 'Bases de Datos1

Guía para la construcción definir primero todos los posibles estados definir el estado inicial y obtener todas las

transiciones

Verificación y completitud todos los estados deben ser definidos (incluyendo

errores) todos los estados deben ser representados todo estado final debe tener un sucesor

11. DIAGRAMA TRANSICIÓN DE ESTADO

Construcción diagramas transición de estado

Page 325: Programacion de 'Bases de Datos1

Relación con otras herramientas especificación de procesos para control de

burbujas de DFD• condiciones == aferente (de entrada) flujo de control

• acciones == eferente (de salida) control de flujo puede ser especificación de proceso para el

sistema completo (diagrama de contexto)

11. DIAGRAMA TRANSICIÓN DE ESTADO

Relación con otras herramientas

Page 326: Programacion de 'Bases de Datos1

Pros provee alto detalle para la implementación provee buena documentación para aspectos

dependientes del tiempo en el sistema

Contras mucho esfuerzo de diseño requerido asume que los estados de transición son

instantaneos puede resultar muy complejo

11. DIAGRAMA TRANSICIÓN DE ESTADO

Pros y contras

Page 327: Programacion de 'Bases de Datos1

Balance del DFD contra el DDBalance del DFD y las especificaciones de procesoBalance de las especificaciones de proceso contra el

DFD y el DDBalance del DD contra el DFD y las especificaciones de

procesoBalance del DER contra el DFD y las especificaciones de

procesoBalance del DFD contra el diagrama de estado de

transición

11. RELACIÓN ENTRE DISTINTAS HERRAMIENTAS

Page 328: Programacion de 'Bases de Datos1

UNIDAD 4. ETAPAS POSTERIORES AL ANÁLISIS

Page 329: Programacion de 'Bases de Datos1

Asignación de procesadoresAsignación de tareasImplementación de tareas por programasDiagramas de estructuraCohesiónAcoplamientoDiseño basado en la transformación centralDiseño basado en las transacciones

17. EL DISEÑO DE SISTEMAS

Page 330: Programacion de 'Bases de Datos1

Qué son ellos? Herramienta para ayudar a definir la implementación del

modelo modularizar vistas del sistema originalmente fue la principal herramienta del diseño

estructurado

Aplicaciones vista general para desarrolladores y diseñadores

Modulos I/O, función, mecanismos, datos internos

17. EL DISEÑO DE SISTEMASDiagrama de estructura

Page 331: Programacion de 'Bases de Datos1

Símbolos de módulo

Módulo

Módulo

Predefinido

Llamada a módulo

17. EL DISEÑO DE SISTEMASDiagrama de estructura

Page 332: Programacion de 'Bases de Datos1

Símbolos de comunicación Dato de acople

• procesado

• externamente relevante Bandera

• seteado y probado

• internamente relevante

emisor receptor

nombre

emisor receptor

nombre

17. EL DISEÑO DE SISTEMASDiagrama de estructura

Page 333: Programacion de 'Bases de Datos1

Modulos nombrado por un verbo sentencia, describe un

procesamiento

Dato nombrado con un nombre.

Bandera descriptiva nombrada por un adjetivo, descripción de estado

Bandera de control nombrada por un verbo.

17. EL DISEÑO DE SISTEMASDiagrama de estructura

Page 334: Programacion de 'Bases de Datos1

17. EL DISEÑO DE SISTEMASDiagrama de estructura

Vendesoda

en lata

Obtenersuficientes

fondos

Leeproducto

seleccionado

Obtienecambio

Entregaproducto

Recibirmonedas

Verificasuficiente

fondo

Leeselección

selección

moneda

Productoseleccionado

Suficientesnonedas

monedasmonedas

Monedas >=cant. necesitada

Productoseleccionado

Page 335: Programacion de 'Bases de Datos1

Módulos necesitan funciones bien definidas e interfaces Deberían ser relativamente pequeños (10-100 LOC)

Banderas reducir banderas de control (indican pobre partición)

Relación con otras herramientas muy relacionados con DFDs DFD a diagramas de estructura por transformación del

análisis

17. EL DISEÑO DE SISTEMASDiagrama de estructura

Page 336: Programacion de 'Bases de Datos1

Pros vista gráfica de alto nivel se concentra sobre los aspectos “caja-negra” de

los módulos Permite subjetividad

Contras puede ser difícil crearlo puede volverse muy subjetivo

17. EL DISEÑO DE SISTEMASDiagrama de estructura

Page 337: Programacion de 'Bases de Datos1

Ejercicio: Diagrama de estructura

Porpósito del ejercicio: introducir los conceptos de transacción y

transformación del análisis, familiarizarse con el diagrama de estructura.

Transformar una transacción en tu DFD del ejercicio en un diagrama de estructura para esa transacción.

Page 338: Programacion de 'Bases de Datos1

Diagrama de estructura Tomado de Page-Jones: “The Practical Guide to Structured System Design” Objetivo: crear un jerárquico y bien balanceado

sistema• módulos top trabajan con datos limpios y refinados

• módulos bottom trabajan con datos crudos y no editados

Ejercicio: Diagrama de estructura

Page 339: Programacion de 'Bases de Datos1

Identificar transacciones en DFDPara cada transacción, identificar la “transformación central”

inspección o, aislar flujo de datos esencial o, seguir criterio “mundo ideal”

Producir primer diagrama de estructura identificar o crear un módulo “jefe” convertir datos e ítems de control en datos acoplados y flags Partir las burbujas del DFD en una jerarquía de módulos funcionales,

llamados desde el módulo “jefe”

Ejercicio: Diagrama de estructura

Page 340: Programacion de 'Bases de Datos1

Inspección Visualmente inspeccionar el DFD e identificar lo que “parece” la

transformación central

Aislar flujos de datos esenciales Marcar el punto entre flujos de datos aferentes (input) y eferentes

(output), donde los datos han sido refinados pero no transformados, las burbujas que están dentro son la transformación central

“Mundo ideal” Remover algunas burbujas mediante manejo central de errores y

formateo de datos, dejar las burbujas que son transformación central.

Ejercicio: Diagrama de estructura. Identificar la transformación central

Page 341: Programacion de 'Bases de Datos1

Ejercicio: Diagrama de estructura. Ejemplo

cargadespacha

cuenta

saca

Congelador

Deposito

Sodas lata

Momedas

Monedas

Sodas lata

Monedas

Soda lata

Soda lata

Monedas

Cambio

Selección

colocaCambio Cambio

El usuario La máquinaMáquina monederade soda en lata

Monedas yselección

Soda en lata y cambio

Soda en lata y cambio

Monedas

Page 342: Programacion de 'Bases de Datos1

Ejercicio: Diagrama de estructura. Ejemplo

Vendesoda

en lata

Obtenersuficientes

fondos

Leeproducto

seleccionado

Obtienecambio

Entregaproducto

Recibirmonedas

Verificasuficiente

fondo

Leeselección

selección

moneda

Productoseleccionado

Suficientesnonedas

monedasmonedas

Monedas >=cant. necesitada

Productoseleccionado

Page 343: Programacion de 'Bases de Datos1

Medida de la fuerza de asociación de los elementos de un módulo

Niveles funcional secuencial comunicacional procedural temporal logico coincidental

best

worst

17. EL DISEÑO DE SISTEMASCohesión

Page 344: Programacion de 'Bases de Datos1

Medida de la interdependencia de los módulosTipos

normal• datos• estampilla• control

común contenido

best

worst

17. EL DISEÑO DE SISTEMASAcoplamiento

Page 345: Programacion de 'Bases de Datos1

Muchos métodos potencialesInterface y especificaciones funcionales

dan un buen balance de detalle de especificación proveen módulo general de documentación menos detalles de implementación

Seudocódigo Alto detalle, menos errores potenciales puede resultar muy abundante en palabras

17. EL DISEÑO DE SISTEMASEspecificaciones

Page 346: Programacion de 'Bases de Datos1

El papel del analista en la programación y prueba

Organización del trabajo de programaciónProgramación y lenguaje de programaciónAspectos importantes de la programaciónLa prueba de programasInstalaciónEntrenamiento

18. PROGRAMACIÓN, PRUEBAS, CONVERSIÓN, INSTALACIÓN Y

ENTRENAMIENTO

Page 347: Programacion de 'Bases de Datos1

Conclusión