Está en la página 1de 74

BASE DE DATOS I

OBJETIVO GENERAL DEL CURSO.

El alumno será capaz de comparar los diferentes modelos de bases de datos en


función de los conocimientos adquiridos y además podrá diseñar una base de datos.

PROGRAMA GENERAL:

1 INTRODUCIR LOS CONCEPTOS DE BASE DE DATOS.


1.1 Definición de base de datos
1.2 Objetivos de los sistemas de base de datos
1.3 Arquitectura de los sistemas de base de datos
1.4 Independencia de los datos
1.5 Responsabilidades del administrador de una base de datos

2. CLASIFICACIÓN DE LOS MODELOS DE DATOS

3. MODELO, ENTIDAD, RELACION


3.1 Introducción.
3.2 Entidades y conjuntos de entidades.
3.3 Relación y conjunto de relaciones.
3.4 Diagrama entidad relación.
3.5 Reducción de diagramas de entidad relación.

4. MODELO RELACIONA.
4.1 Definición
4.2 Estructuras de datos relacionales.
4.3 Llaves primarias y foráneas.
4.4 Reglas de integridad.
4.5 Lenguaje de base de datos.
4.6 Algebra relacional.
4.7 Lenguaje estructurado de consultas

5. NORMALIZACIÓN
5.1 Introducción.
5.2 Datos no normalizados.
5.3 Primera y segunda forma normal.
5.4 Tercera forma normal y forma normal de Boyce-Codd.
5.5 Modelo ELKA.

6. MODELO DE DATOS JERARQUICO


6.1 Conceptos básicos.
6.2 Diagramas de estructura de árbol.
6.3 Recuperación de la información.
6.4 Actualización.

1
7. MODELO DE DATOS DE RED.
7.1 Conceptos básicos.
7.2 Modelo CODASYL DBTG.
7.3 Operaciones y procesamiento de conjuntos DBTG.

BIBLIOGRÁFIA

- Introducción a los sistemas de base de datos.


C.J. Date
Addison – Wesley
Ed. Iberoamericana. Edición. 3

2
BASE DE DATOS I

1. Introducción a los conceptos de base de datos.

Base de datos.
Definición:
- conjunto de datos.
- relacionados entre sí.
- que se puedan almacenar.
- Sin redundancia ( que no se repitan ).
- Puedan ser compartidos.

Es un conjunto de datos relacionados entre sí, que pueden ser almacenados sin
redundancia y además puedan ser compartidos.

Definición de un sistema de base de datos

Sistema constituido por:


- HW { equipo físico de computo}
- SW { sistema operativo, base de datos management system, aplicaciones }.
- Base de Datos { definido en almacenamientos físicos }.
- Usuarios { programadores, administradores de la base de datos, finales }.

Es un sistema computarizado cuyo objetivo es llevar a cabo un mantenimiento de


archivos.

Definición de un sistema administrador de una base de datos


( Data Base Management System ).

El es sw que se encarga de crear un ambiente en el cual se pueda almacenar y


recuperar datos en forma sencilla (optimizar el uso de B.D).

OBJETIVOS DE LOS SISTEMAS DE BASE DE DATOS.

1. Se podrá usar los datos definidos en la base de datos de múltiples maneras. Un Sist.
De B. D. Va poder atender diversas necesidades de un conjunto de usuarios.
2. Flexibilidad de acceso a los dato. Diferentes maneras de poder accesar los datos
(diferentes rutas de acceso ).
3. Facilidades en el uso para los usuarios. El sistema ofrece facilidad para accesar los
datos del sist.
4. Claridad cada usuario sabe que datos a cuales va a tener acceso (va a manejar) por
que el sistema (admón. de Base de Datos). Les dice que esquemas de datos van a
requerir.
5. Desempeño del sistema. Atención rápida y eficiente a los pedidos del usuario.
6. Rápida atención a imprevistos. El sistema tiene un lenguaje de soporte que permite
solucionar imprevistos.
7. Disponibilidad constante de los datos para el usuario.

3
8. Protección a la inversión intelectual. Los programadores hacen una inversión
intelectual. Si se desarrolla un programa de aplicación este no debera cambiar si la
B.D. cambia.
9. Facilidades de cambio. La B.D. puede crecer, disminuir, cambiar sin que los
programas de aplicación se vean afectados.
10. Menor proliferación de dato. Que no haya redundancia en los datos. Implica que en
diferentes aplicaciones y en diferentes niveles se deba eliminar la redundancia de los
datos.
11. Coherencia en los datos. Que haya una relación importante definida en los datos
pero sin repetición de los mismos.
12. Reserva. El admón. De la base de datos va a tener una reserva de datos ( sist. De
seguridad) para evitar el acceso a todos los usuarios a datos que se consideran
confidenciales.
13. Protección y seguridad para la base de datos. El sistema debe tener protección
contra perdidas para la base de datos.
14. Disminución de costos. Estos es por la seguridad que proporciona las bases de datos.

1.2 Arquitectura de un sistema de B. D.

Lenguajes anfitriones. Para comunicación entre usuarios y sistema. Lenguajes que


pueden soportar la B.D. ej. Pascal, Cobol, etc. (para tener acceso a datos ).

Lenguaje de definición de datos (DDL) definición de los objetos


Definición de los objetos y las estructuras de los mismos
El sublenguaje
Del sistema de Lenguaje de manipulación de datos (DML) permite manejar los
La B.D. (DSL) datos a traves de una serie de consultas. Acceso Datos en forma
rápida. Se puede usar este lenguaje o por lenguajes anfitriones.

LA1 LA2
DSL DSL

VISTA EXTERNA A
NIVEL EXTERNO
ESQUEMA EXTERNO
A

4
Definiciones de los conceptos básicos de la arquitectura anterior:

Lenguaje anfitrión .

Lenguaje del usuario ( COBOL, PL1, lenguaje de consulta, etc.).


Que incluye un sub-lenguaje de datos (D.S.L).
El D.S.L. es una combinación de dos lenguajes:
- Lenguaje de definición de datos (D.D.L) permite la definición o descripción de los
objetos de la base de datos
- Lenguaje de manipulación de datos (D.M.L.) que apoya el manejo o procesamiento
de esos objetos. La manipulación se lleva acabo mediante proposiciones de llamado
suministradas como parte del sistema administrador de la B.D. (D.B.M.S.)

Vista externa.
Contenido de la base de datos tal como la ve un usuario especifico. Para ese
usuario la vista ext. Es la B.D.

Esquema externo.
Definición de la vista externa a través de registros lógicos externos. El esquema
ext. Escribe usando la parte del lenguaje de definición de datos ( D.D.L) del D.S.L., la
definición de las proposiciones ejecutables (los llamados) que transfieren información a
la base de datos y desde esta se hace usando la parte del D.M.L.

Vista conceptual.
Representación del contenido total de información de la B.D., en forma
relativamente abstracta en comparación con la forma en la cual los datos se almacenan
físicamente. Se compone de ocurrencias múltiples de registros conceptuales, un registro
conceptual no siempre es idéntico a un registro externo ni aun registro almacenado.

Esquema conceptual.
Definición de la vista conceptual, por medio de los distintos tipos de registros
conceptuales, el esquema conceptual, se escribe utilizando el D.D.L. conceptual.

Vista externa.
Representación del nivel muy bajo de la D.B. en su totalidad, se compone
múltiples ocurrencias de tipos de registros internos (registros almacenados). La vista
interna se mantiene a un paso del nivel físico, ya que no atañe o registros físicos o
bloques ni a ninguna restricción especifica de dispositivos tales como capacidad de
registros o pistas.

Esquema interno.
Descripción de la vista interna, por medio de los diversos tipos de registros
almacenados, especificación de índices, representación de los campos almacenados,
definición de la secuencia física de los registros almacenado, etc. El esquema interno se
escribe con el D.D.L. interno.

5
Correspondencia externa conceptual.
Correspondencia entre una vista externa especifica y la vista conceptual.
Especifica de que manera los registros externos y los conceptuales se corresponden.

Correspondencia conceptual interna.


Define la correspondencia entre la vista conceptual y la vista interna. Especifica
de que manera los registros conceptuales y los campos se corresponden con sus contra
partes almacenadas. Si se cambia la estructura de la base de datos almacenada, la
correspondencia conceptual interna debe cambiarse en reciprocidad para que el esquema
conceptual no varíe.

D.B.M.S. (sistema de admón. De la base de datos).


Software que maneja todos los accesos a la base de datos.

1.3 INDEPENDENCIA DE LOS DATOS

- Independencia física. El sistema debe tener la capacidad de si varia la B.D. no será


necesario cambiar los programas de aplicación.
- Independencia lógica. Si el esquema conceptual cambia no deberá cambiar los
programas de aplicación.

Definición de independencia de los datos:


Es la capacidad que debe tener el sistema de si se varían el esquema conceptual
de la base de datos no será necesario cambiar los programas de aplicación.

1.4 RESPONSABILIDADES DEL ADMON DE LA B.D.

1. Definir el contenido de la B.D.


El administrador deberá definir las entidades y la información que considere
relevante de cada uno de ellas que se deberá almacenar en una base de datos.
Definición del esquema conceptual. (¿ que se va a guardar?).
2. Definición de las estructuras de almacenamiento.
Y las estrategias de acceso a la B.D.
(¿ como lo va a guardar ?).
Definición del esquema interno. Definición de la correspondencia entre el esquema
interno y el esquema conceptual.
3. Vinculación con los usuarios.
El administrador deberá vincularse con los diferentes usuarios para las necesidades
de los mismos y poder establecer el esquema externo. Además de la correspondencia
entre el esquema conceptual y el esquema externo.
4. controles de validación y de autorización.
Como extensión del esquema conceptual administrado deberá definir los procesos
de validación y los controles de autorización.
5. Estrategias de respaldo y recuperación.
El administrador debe diseñar las estrategias de respaldo y de recuperación de datos,
ante imprevistos, para evitar daños a la base de datos.
6. Controles de desempeño y respuestas a los cambios de requerimientos.
El administrador deberá definir sistema de control desempeño, además de estar
continuamente atendiendo a los posibles cambios de requerimientos.

6
II CLASIFICACIÓN DE LOS MODELOS DE DATOS.

MODELOS DE DATOS.

Son herramientas conceptuales para describir los datos su semántica (significado


de los datos), sus relaciones y sus limitaciones.

Lógicos: se utilizan en la descripción Basados


en objetos
De los datos en los niveles externo
y conceptual. Basados
( son muy usados.) en registros.
Modelos
De Físicos: descripción de los datos en el nivel interno.
Datos no es necesario describir otra documentación a
Parte de la programación.
No se utilizan generalmente, porque en la realización
Del esquema interno la documentación debe ser
Suficiente para describir el desarrollo y el modelo de
Datos.

Modelos lógicos basados en objetos. La ventaja sobre los basados en registros en


esta flexibilidad para describir claramente las limitantes de los datos.

MODELO ENTIDAD-RELACIÓN

- Modelos lógicos basados en registros.


- Modelo relacional
- Modelo de red
- Modelo jerárquico

Diferencias generales entre los modelos basados en registros:

Registro. Nombre
Cuenta habiente Dirección
No. Ch

Cuenta No. Cta.


Saldo

Modelo entidad-relación
Es un modelo natural ya que se basa en la definición de objetos existentes a los
que les llaman entidades y las asociaciones entre estas entidades los define a través de
relaciones

7
RELACIÖN

Objeto
Cliente objeto
Existente
existente
Modelo Relacional
Describe los datos y las relaciones de los mismos a través de tablas

CLIENTE PRODUCTOS
Nom # Edo Nom. # $

Tabla que
Relaciona
Las
2 tablas

Modelo de redes
En este modelo los datos se escriben como registros y la conexión entre ellos se
define con el uso de apuntadores. La relación entre los registros se encuentra establecido
a través de conjuntos.

Modelo jerarquico
Los datos y la vinculación entre los mismos se establecen igual que el modelo
anterior (usando registros y apuntadores) sin embargo el modelo se organiza de acuerdo
a un modelo de arbol

Cliente Registro padre

Relación 1:n
Producto Registro hijo

III MODELO ENTIDAD - RELACIÓN

8
Entidad.
Es un objeto existente que puede ser diferenciado de otros. Puede ser físico o
conceptual.
Ejemplo: clientes, días festivos.

Conjunto de entidades.
Agrupación de entidades del mismo tipo ejemplo :
Todos las clientes se agrupan en el grupo llamado clientes.

Atributos.
Elementos que caracterizan una entidad.
Ejemplo: cliente_nom, estados.

Dominio.
Es el conjunto de valores que puede tomar o serle asignado un determinado
atributo. Ejemplo: el dominio de estados serian los edos. de la república.
El dominio de Nom_clientes serian todos los números enteros.

Conjuntos

Edos. de
clientes la rep.
client
dominio

Atributo. (definición formal).


Es una función que mapea un conjunto de entidades a un dominio.
Ejemplo:

Juan Pérez
Producto. Conjunto de entidades
Producto_no, producto nombre, $ unitario atributos
324
Relacion

Relación.
Es la asociación entre entidades

Conjunto de relaciones.
Es la agrupación de relaciones del mismo tipo. Estos conjuntos pueden contar
también con atributos descriptivos.
Ejemplo: compra  conj. De relaciones

Juan Perez  producto no. 324


Compra : fecha de realización unidades compradas
Atributos descriptivos.

9
Definición formal de una relación.
Es un subconjunto del producto cartesiano generado por los conjuntos de
entidades.

R <- { E1 * E2 * E3 *........En}

Limitantes de mapeo.
Son limitantes que se deban satisfacer al asociarse entidades de diferentes
conjuntos.
Analizaremos dos limitantes de mapeo.
Cardinalidad: adjetivos que indica cantidades de objetos.
Cardinalidad de mapeo es una limitante que define la cantidad de entidades de las que
se puede asociar otra entidad bajo una relación establecida.
Considérese un conjunto A de entidades y un conjunto B también de entidades, además
de una relación establecida entre los mismos.

Las cardinalidades que se pueden definir son:

a) Una a Una.
Una entidad del conjunto A se asocia con una entidad del conjunto B y una
entidad del conjunto B se asocia con una entidad del conjunto A.

A B

A1 B1

A2 B2

b) Uno a Muchos.
Se define esta cardinalidad cuando una entidad en el conjunto A se puede asociar
con varias entidades del conjunto B, pero una entidad del conjunto B solo puede
asociarse con una entidad del conjunto A.

A B
A1 B1
Productos -> clientes
1: N
A2 B2 un cliente solo puede comprar
un tipo de producto, pero un
A3 B3 producto puede ser vendido a
muchos clientes.

10
c) Muchos a Uno
Se define esta cardinalidad cuando una entidad del conjunto A se puede asociar a
uno del conjunto B, pero una entidad del conjunto B se puede asociar a varias
entidades del conjunto A.

A1 B1 Producto  cliente
N:1
A2 Un cliente solo puede comprar varios
B2
A3 Tipo de producto, pero un tipo de
producto puede ser vendido a un
A4 B3 clientes.

d) Muchos a Muchos
Se define esta cardinalidad cuando una entidad del conjunto A puede asociarse
con varias entidades del conjunto B y una entidad del conjunto B puede ser
asociada en varias entidades del conjunto A.

A1 B1
A2 Producto  cliente
B2
A3
A4
B3
A5 B4
B5

Dependencia existencial.
Es otra limitante importante que se refiere para existir una entidad (subordinado)
es necesario que exista otra entidad (dominante).
Ejemplo:
Cuentas transacciones
Cuenta_no saldo Tran_no trans_tipo importe

1 X $
2 Y $
3 V $

Dominante subordinado

Si se elimina cuenta las transacciones se quedan sin relación, por lo tanto es


cuenta una entidad dominante,(si no hay cuenta no hay transacción) sin embargo si se
elimina una transacción la cuenta sigue existiendo y es una entidad subordinada.

Llaves
Super llave. Es un conjunto de atributos que permiten diferenciar las entidades
dentro de un conjunto de entidades
Ejemplo:

11
En el conjunto de entidades CUENTA

C.no saldo { Cuenta_no, saldo } -> super llave

{ Cuenta_no } super llave.


El saldo no puede ser super llave por que por
casualidad varios clientes pueden tener el
Mismo saldo. El número de cuenta si porque cada
Cliente tiene una llave diferente.
Llaves candidatas.
Son las super llaves mínimas, esto es, aquellas super llaves que no tienen un
subconjunto propio que sea super llave.

Super llave
{cuenta_no, saldo } Esta no puede ser llave candidata porque posee un subconjunto
propio que sea super llave que es {Cuenta_no.}

{cuenta-no } puede ser llave candidata, por que dentro de este conjunto no hay
un subconjunto que sea super llave.

Llave primaria.
Es la llave candidata elegida por el administrador
En el ejemplo seria cuenta_no la llave primaria.

Conjunto de entidades débiles.


Es un conjunto cuyos atributos no permiten la definición de una llave primaria,
por lo tanto al conjunto de entidades que si lo permiten se llama entidad fuerte.
Ejemplo:
Fuerte: cuenta
Débil: transacción.

Definición de una llave primaria para un conjunto de entidades débiles.


La definición de esta llave se hace asociando la llave primaria de la entidad
fuerte con el discriminador de la entidad débil.
Un discriminador es un conjunto de atributos que distinguen a las entidades débiles que
están asociadas con una entidad fuerte.
Ejemplo:

Clienta Transacciones

Cuenta_no saldo Trans_no trans_tipo importe

2030
1 x
2 y
3 x
1 x
Llave primaria: no.cuenta 2
no_trans. x
Ejemplo 2030 1
Identifica que elementos de trans.

12
Se asocia con cuentas.
Trans_no. Trans_tipo. Importe
1 x $
Definición de llaves primarias
La definición se hace asociando las llaves primarias de los conjuntos de
entidades que intervienen en esa relación.

Diagrama Entidad-Relación.
Se define con los siguientes elementos:
- Rectángulo. Para identificar conjunto de entidades
- Elipses. Para identificar atributos de entidades
- Rombos. Que definen las relaciones entre los conjuntos
- Flechas. Para definir las cardinalidades.
- Líneas. Para asociar atributos con conjuntos de entidades y estos con
relaciones

Notas :
- Cuando se trate de un conjunto de entidades débiles hay que dibujar un rectángulo
dentro de otro, además la línea que lo asocia con el conjunto de relaciones debe ser
doble.
- En la definición de atributos se debe subrayar la llave primaria. El discriminador se
subraya con un línea doble .

Ejemplos:

- Defina el modelo conceptual de una base de datos usando el diagrama entidad


relación, para los siguientes incisos:

a) Considere una compañía que vende distintos productos clasificándolos por una
clave, un nombre y definiéndoles su precio unitario. La venta de los productos se
hace a nivel nacional, cobrándose dependiendo del estado una tasa o importe por
envío.
Lógicamente se requiere de información de los clientes como: nombre, dirección
No_cliente, etc.

cantidades direcció
n
2

productos M orden M clientes


es
M
Nombr
No_cliente e
Cve_prod Nombre_prod fecha 1 cliente

1. clien_es
2. precio. Prod estado

13
b) sea una organización en la que cada cuenta habiente realizo una serie de
transacciones que pueden ser de tipo A,B,C,D.
La información de cada cuenta habiente requerida defínala usted.
Importe
saldo

transacciones
Cuenta_habiente operació
n

No-cta Fecha Tipo-trans. No-trans.


Nombre
=======

Caso especial:
Considere la definición del modelo conceptual para el caso en que se tenga que
asociar un conjunto de entidades consigo mismo:
Sea la definición de un conjunto de entidades llamadas personal, en donde cada
entidad de este conjunto puede relacionarse con los demás asumiendo un papel definido:
Trabajador o jefe ( o ambos).
Para ilustrarlo considere :

jefe
Cve_emp
PERSONAL t trabajador Traba
ja con

R.F.C.

Nombre Puesto Depto

Llaves: (con respecto a la relación)


Primarias:
Cve_emp-jefe
Cve_emp_trabajador

14
Ejercicio1:

Desarrolle el modelo conceptual de la base de datos para una organización que


se dedica a rentar departamentos.
Descripción.
Sea una organización que se dedica a rentar departamentos, en donde no se
restringe el número de departamentos rentados por cualquier inquilino; los datos que se
le piden a este son:
El R.F.C., nombre, referencias comerciales y personales.
En cuanto a los departamentos, con la renta de un departamento. Se le asigna
una o más áreas determinadas de estacionamiento, a cada departamento se le identifica
con una clave, además se le señala el costo.
Se lleva un registro de la cantidad de los bienes dispuestos en cada departamento usando
códigos, donde cada código representa un objeto (cocina integral, comedor, etc.).
Además se tiene un listado de los pagos ( Cve.de pago, descripción) por departamento.
Relación 1:N -> R1,R2, ....Rn
Relación N:N con las primeras letras da las entidades.

Falta diagrama

Entidades Fuertes
Inquilinos (rfc, nombre, refcom, ref per).
Depto (cve_dpto, costo).
Estacionamiento (Cve_est, des_bienes)
Pagos (Cve_pago, des_pago, fecha-pago).

Relación.
R1 (inquilino,depto)
R2 (depto, estacionamiento)
Dep_bien (depto, bienes, cant)
R3 (pagos, depto).

15
Ejercicio 2.

Defina un modelo conceptual de una base de datos para un sistema de control


presupuestal, bajo las siguientes consideraciones:

1. El presupuesto se elaboro en base a proyectos


2. El formato que se considera es:

Presupuesto por proyecto


Cve. Del proyecto:____
Nombre:_____
Descripción:______
Dpto. que coordina:______ Cve: ___ nombre:___________________
Empleado responsable del proyecto:_____ Cve:_____ nombre:_______

Desglose de conceptos

Cve descripción presupuesto

Total:____________

Empleados que participan .

Cve. Nombre Puesto % Participación presupuesto


Cve puesto sueldo

Total:_______________

3. Cada proyecto debe estar asignada a un departamento, y un departamento


puede tener a su cargo uno o mas proyectos.
4. Se asigna para cada proyecto a un empleado responsable y un empleado
puede ser responsable de mas de un proyecto.
5. En un proyecto pueden intervenir varios empleados y un empleado puede
intervenir en uno o mas proyectos. El presupuesto de cada empleado se
calcula multiplicando su porcentaje de participación por el sueldo.
6. El modelo debe contener toda la información que se presenta en los
formatos, con excepción de los campos calculados (totales y presupuestos).
Es importante que el modelo incluya una descripción de cada puesto.

16
Entidades fuertes.
- Proyecto ( Cve_proy, nombre, descripción)
- Departamento (Cve_depto., nombre)
- Empleado (Cve_emp., nombre)
- Conceptos (Cve_concepto, Desc_concepto)
- Puesto (Cve_puesto, sueldo, desc_puesto)

Relaciones:
- R1 (proyectos,deptos)
- Pro-emp (proyecto, empleado_part, por_part)
- R2 (empleado-responsable, proyecto)
- Pro-con (proyecto, concepto, cantidades)
- R3 (puesto, empleado)
- R4 (depto, empleado)

6 7
3 4 5
1

deptos proyectos empleados


8 9

10 1 12
2 1
1
5
13 conceptos 1
4

16 17 puestos

18 19
2
0

1. cve depto 11. Pro_con


2. nombre 12. Por_part
3. Cve_proy 13. Cve_concep
4. Nombre 14. R2
5. Descripción 15. R3
6. Cve_empr 16. Desc_conc
7. Nombre 17. Cve_puesto
8. R1 18. Sueldo
9. Pro-emp 19. Desc_puesto
10. Cantidades 20. R4

17
Ejemplo 3.

Desarrollo del modelo conceptual de la base de datos para una compañía que se
dedica a reparar aparatos eléctricos.
Descripción:
Sea una compañía en la que un cliente puede solicitar que se reparen varios
aparatos, para ello se dispone de un conjunto de empleados. Un empleado esta
capacitado para hacer reparaciones distintas, pero el ajuste de un aparato puede requerir
la intervención de varios empleados, en este ultimo caso se lleva un registro de las horas
del empleado dedicadas a reparar.
A cada empleado se le asigna equipo y mesa de trabajo (ambos identificables por
claves). Hay que considerar que por la reparación de determinado aparato se necesita
cierto tipo de refacciones (por cada tipo se tiene descripción y clave).
Además se lleva acabo los siguientes registros de información:

Para cliente: cve_cliente, nombre, dirección y teléfono


Para empleado: cve_empleado, nombre y dirección.
Para aparato: cve_aparato, descripción, fecha _entrada y fecha_salida.

Entidades:
- Clientes (No_cliente, nombre, dirección, telefono)
- Aparatos (Cve_aparato, descripción, fecha, fecha_sal)
- Empleados (Cve_emp, nombre, dirección)
- Refacciones (descripción, Cve_ref)
- Equipo (Cve_equ, fecha_ent, fecha_recib)

Relaciones

- R1 (aparatos, clientes)
- Emp-apar (empleados, aparatos, hr_recibo, hr_entrega)
- R2 (empleados, equipo)
- R3 (empleados, mesa_trabajo)
- Apar_refac (aparatos, refacciones, cantidad)

18
1 5 6 7

2 CLIENTES APARATO REFACCIONES


R 1
1 0

8 9
1 1
3 4 1 2

1 1 1
3 4 5

EMPLEADOS MESA_TRABAJO
EQUIPO R
R 3
2

1 1 1 2 2 2 2 2
6 1 8 9 0 1 2 3 4
7

1. Dirección 13. Hr_recibido


2. Tel 14. Emp_apar
3. Nombre 15. Hr_entrega
4. No_cliente 16. Fecha_ent
5. Fecha_ent 17. Cve_equipo
6. Fecha_sal 18. Fecha_reg
7. Cantidad 19. Cve_emp
8. Cve_aparato 20. Nombre
9. Descripción 21. Dirección
10. Apar_ref 22. Fecha_ent
11. Descripción 23. Cve_mesa
12. Cve_ref 24. Fecha_recib

19
4) Jerarquía con el mismo tipo de registro de mas de un nivel.

No se permite que el mismo tipo de registro sea a la vez propietario y miembro de


un conjunto de DBTG.

EJ

EMP

ENLACE

EMP X

E1 E2

EMP 4

ENLACE

EMP
X

E12 E13

Ejemplos de redes.

Modelo de redes en caso que las entidades sean diferentes:

* quizá falten apuntes *

Reducción del diagrama entidad relación a tablas

I. Conjuntos de entidades fuertes


LLAVE E1 E2
LLAVE E

20
E1 E2
E

II. Conjunto de entidades débiles

LLAVE F DIS D1 D2

F D

DIS D2
D1
CLAVE F

III Conjunto de relaciones

a) Cualquier caso.

R
R
1 LLAVE- LLAVE R1 R2
E1 - E2
E1 E2
R

LLAVE
LLAVE- R - E2
E1 2

b) cuando se relacionan con si misma

papel-1 LLAVE_E LLAVE_E R2


E PAPEL_1 PAPEL_2
R
papel-2 E

Reducción a tablas del ejercicio 3

Clientes Refacciones
NO_CLIENTE NOMBRE DIRECCION TEL CVE_REF DESCRIPCIÓN

Aparatos Equipo
CVE-APARATO DESCRIP FECHA-ENT FECHA-SAL CVE_MESA FECHA-ENT FECHA-RECIBO

21
Empleados mesa – trabajo

CVE_EMP NOMBRE DIRECCION CVE_MESA FECHA-ENT FECHA-RECIB

R1 R2
NO-CLIENTE CVE-APARATO CVE-EMP CVE-EQUIPO

R3 Apar-ref

CVE-EMP CVE-MESA CVE-APARATO CVE-REF CANTIDAD

Ejemplo:

Grado de relación cliente =3 (no-cliente,nombre,edo).


Grado de relación cargo =2 (estado,cargo-ent)

Archivo binario formado por reg del mismo tipo


Relación No nombre edo No nombre edo No nnombre edo
Cliente cliente cliente
Tabla Cliente
Cliente
Archivo reg 0 tupla 0 reg1 tupla 1 reg 2 tupla2
Cliente

Dominio : El dominio de un atributo son todos los valores posibles que pueden tomar
dichos atributos
Ejemplo:
De la tabla anterior:

Domain
Número-cliente: char (3)
Número-cliente (1)=”c”
Domain
Nombre-cliente: char (30)
Domain
Edo-cliente: char (10)

22
{Ver, Qroo, Gto)

Relación clientes

(no-clientes: número-cliente;
nombre: nombre-cliente;
estado: estado-cliente)

Llaves.

Llaves candidatas: Es un conjunto de atributos que permiten distinguir una entidad de


otra o una asociación de entidades dentro de una relación.

Llave primaria: Es una llave candidata elegida por el administrador de la BD.

Llave alterna: son las llaves candidatas que no fueron elegidas.

Reglas de integridad:

1. Integridad de la entidad.
Ningún componente de un valor de una llave primaria puede ser nulo
Si su valor es nulo se puede identificar la tupla.
2. Integridad de referencia. (definición de llaves foráneas).
Sea D un dominio primario (sobre el que se define alguna llave primaria de un solo
atributo), en el ejemplo numero-cliente y estado-cliente y sea R1 una relación con
un atributo A que se define sobre D.
En el ejemplo:
R1  Cliente.
D  Edo-cliente
A estado.

Entonces, en cualquier instante dado, cada valor de A en R1 debe ser o bien


(a) Nulo, o bien

(b) igual a v, en donde v es el valor de la llave primaria de alguna tupla de relación R2


con llave primaria definida sobre D, R1 y R2 no son por fuerza distinta.

R1 cliente R2 cargo
No-cliente nombre estado estado cargo-ent
C01 Juan P Gro V Qro
Puede ser igual
(a) puede ser nulo

Llave foránea: es un atributo como A, ejemplo para la relación de cliente la llave


foránea es estado.
Es un atributo cuyo dominio es igual al dominio de una llave primaria de otra relación.

23
Ejemplos:

Partes proveedor

No. Parte Nombre color peso ciudad No-prov. Nombre edo ciudad

a) Es el atributo ciudad llave foránea de la tabla partes? No, ciudad que


Ciudad debe ser la llave principal en otra relación.
b) Es el atributo ciudad llave foránea de la relación proveedor? No, misma causa
c) Es el atributo ciudad llave foránea de las dos relaciones? No, misma causa
d) Es el atributo ciudad simplemente un atributo? Si

Extensión de una relación.


Es equivalente a la cardinalidad. La extensión de una relación varía en función
del tiempo.
No de tuplas

Comprensión de una relación.


Es la parte permanente de la relación. No depende del tiempo.
Esta constituido por:
a) Estructura nominadora: Es la definición de la relación. Definición de sus atributos y
definición de sus dominios correspondientes a sus atributos.
b) Restricciones de integridad
Restricciones de las llaves
Integridad de referencia (restricciones)
Otras restricciones (particulares del modelo)

Restricciones de las llaves. Definición explícita y correcta de los atributos que definen
las llaves candidatas.
Integridad de referencia. Definición de las llaves foráneas.

Modelo relacional SYSTEM – R


Fue desarrollado en la IBM en los años 74-79 es el primer prototipo relacional
más completo sobre el cual otros sistemas han hecho referencia.
Se considera en el curso como un modelo para la aplicación de los diferentes
ejemplos.

24
Arquitectura del SYSTEM- R

Usuario structured query languaje.

Nivel SQL - Lenguaje estructurado de consultas


Externo
VISTA A VISTA B

Nivel
Conceptual TABLA DE TABLA DE TABLA DE TABLA DE
BASE B1 BASE B2 BASE B3 BASE B4

Nivel ARCHIVO ARCHIVO ARCHIVO ARCHIVO


Interno ALMACENDO ALMACENDO ALMACENDO ALMACENDO
A1 A2 A3 A4

Leng. De definición de Esq. Ext definición


Datos (DDL ). De vistas
Esq. Conc. Defif de
Las tablas de base
SQL Sub lenguaje Esq. Int. def. de los
Indices de los archivos

Leng. De manipulación de datos(DML)


- Esquema externo Aplicación
consulta interactiva (UFI)

Ambiente de programación
SQL inmerso es mezclar
- Esquema conceptual instrucciones en DML en
el lenguaje anfitrión (PLI,
COBOL).

El usuario puede relacionarse directamente por las vistas o por


las tablas base.

Vistas.

25
Son las tablas virtuales, generadas por ña combinación de atributos de las tablas
de base. Se definen en le nivel externo usando el DDL, del SQL. Es importante
considerar que las vistas representan una ventana de las tablas de base por lo que
cualquier modificación que se haga a los datos de una vista realmente se hará sobre las
tablas de base.
De esto se puede inferir que las vistas solamente se encuentran definidas en el
diccionario el sistema y no hay un archivo para cada una de ellas.

Tablas base.
Son las tablas que tienen existencia propia, esto es cada tabla corresponde a un
archivo del sistema.
La creación o destrucción de las tablas se hace usando el DDL del SQL.
Ejemplo.
Ver en le libro.

Archivos:
En la parte física del sistema representan a cada una de las tablas de base, de tal
manera que el nombre de un archivo corresponde al nombre de la tabla de base, los
registros del archivo a las tuplas y los campos de los registros a los atributos.

Leng. Subconjunto de un monoide sobre un alfabeto.

Algebra relacional:
Es una estructura sobre la que se basa cualquier lenguaje de un modelo
relacional.
En general representa a un conjunto de operaciones las que se pueden aplicar sobre las
relaciones.
Unión: (solo se pueden abrir tablas compatibles que tengan los mismos atributos

Conjunto de temas que están ordenadas y tienen los siguientes campos:


Clientes A Cliente B
No- cliente Nombre Estado No-cliente Nombre Estado
C01 Juan Pérez Gto. C01 Juan Pérez Gto.
C02 Luis Glez. Gto C03 Sofía López Ags.

Cliente_A union Cliente_B (0)

No-cliente Nombre Edo.

C01 Juan Pérez Gto.


C02 Luis Glez. Gto.
C03 Sofía López Ags.

Intersección de relaciones.
Cliente A intersección Cliente _B

No_cliente nombre estado

26
C01 Juan Pérez Gto.

Diferencia :
La diferencia entre las tablas A y B (A-B). Son las tuplas que corresponden a A y
no corresponden a B.

Cliente_A menos Cliente_B

No_cliente nombre estado

C02 Luis Glez Qro.

Cliente_B menos Cliente_A

No_cliente nombre estado

C03 Sofía López Ags.

Producto cartesiano
Es la relación de una tupla de una relación con las tuplas de otra tabla.
Las relaciones pueden o no ser compatibles.
Ejemplo:

Cliente A relación A
No_cliente nombre estado No_cliente No_compra cuenta
C01 Juan Pérez Gto C01 P1 20
C02 Luis Glez Qro C01 P2 18
C03 P1 12
Grado 3
Cardinalidad = 2 Grado = 3
Cardinalidad = 3
Estas tablas no son compatibles:

Cliente_A veces Relación_A

No_cliente nombre estado No_cliente No_compra cuenta

C01 Juan Pérez Gto C01 P1 20


C01 Juan Pérez Gto C01 P2 18
C01 Juan Pérez Gto C03 P1 12
C02 Luis Glez Qro C01 P1 20
C02 Luis Glez Qro C01 P2 18
C02 Luis Glez Qro C03 P1 12

Cardinalidad = 2 x 3 = 6
Grado = 3 + 3 = 6

Reunión.

27
Considera atributos comunes en las dos relaciones. No se pueden repetir
atributos. (se hace una reunión de los que son iguales en las 2 tablas.

Cliente_A Reunión Relación_A


No_cliente nombre estado No_compra cuenta

C01 Juan Pérez Gto P1 20


C01 Juan Pérez Gto P2 18

Nota. Si no hay atributos comunes, la reunión es un conjunto vacío.


Si las dos tablas fueran equivalentes la reunión sera equivalente a la intersección.

Selección.
Se selecciona una tupla de la relación que cumpla con ciertas condiciones.
Definición. Relación donde condición

Ejemplo.

Relación donde (No_cliente = C01)


No_cliente No_compra Cantidad

C01 P1 20
C01 P2 18

Proyección.
¿ Como seleccionar algunas tuplas ?
la proyección se define:
Relación [atributos,atributos2] se genera un vector con los elementos
Del atributo.
Ejemplo:
Cliente_A [estado]
Gto
Qro

División .
Relación A Dividida por R_B ( R_B R- A)
La relación o división estará formada por atributos contenidos en la relación
“dividendo”. Por lo que se deduce que la relación “divisor” es un subconjunto de la
relación “dividendo”.

R_A R_B

A B B
a1 b1
a1 b2 b1 ejemplo 1
a1 b3 R_A divide R_B
a1 b4 resultado
a2 b1 A
a2 b2

28
a3 b1 a1
a3 b2 a2
a4 b2 a3
ejemplo 2 R_A divide R_B

R_A R_B

A B B
a1 b1
a1 b2 b1
a1 b3
a1 b4 b2
a2 b1 A
a2 b2
a3 b4 a1
a3 b3 a2
a4 b2

Ejemplo 3.
Si R_B A

B
a1
b4 a3

ejemplo 4

R_ A R_B resultado

A B C B C A

a1 b1 b4 c1 a1
a1 b2
a1 b3
a1 b4 c1

Ejercicios :

Sean las siguientes tablas

Clientes Cargos

No-clientes nombre Edo. Edo. Cargo_ent

C1 Sánchez. Gto. Gto. 6


x C2 Flores Mich Mich 8
C3 Rojas Gto Qro. 10
C4 Pérez Qro. Jal. 7

29
C5 Robles Jal. Mex. 65
x

Ordenes Productos

NC N.P Cant NP Nom_P color precio_u

C1 P1 2 P1 floppy rojo 100


C1 P2 3 P2 monitor verde 400
C2 P2 4 P3 CPU rojo 250
C2 P3 1 P4 D.duro azul 300
C3 P1 3 P5 Fuente amarillo 60
C3 P2 1
C3 P3 4
C3 P4 2
C3 P5 1
C4 P1 1
C4 P3 3

30
18 de febrero

1. Obtener todos los datos de los productos de color rojo productos donde
( color =’rojo’)
2. Los datos de los clientes del estado de Gto. Clientes donde
(estado = ‘ Guanajuato’).
3. Los nombres de los estados con cargo por entrega mayor que 7
(cargos donde cargo-ent > 7) [estado].
4. Los estados donde hay clientes [estado].
5. Los nombres de los clientes que compraron productos color rojo.

Productos donde (color =’rojo ’)


P1 floppy rojo 100
P3 CPU rojo 250

Ordenes Reunión Productos donde (color = ‘rojo’)


C1 P1 2 Floppy rojo 100
C3 P1 3 Floppy rojo 100
C4 P1 1 Floppy rojo 100
C2 P3 1 CPU rojo 250
C3 P3 4 CPU rojo 250
C4 P3 3 CPU rojo 250

Clientes reunión ordenes reunión productos donde (color = ‘rojo’)

Sánchez Gto. C1 P1 2 Floppy rojo 100


Rojas Gto. C3
Pérez Qro. C1
Flores Mich C2
Rojas Gto. C3
Pérez Qro. C4

(clientes reunión ordenes reunión productos donde (color =’rojo’))[nombre]

Sánchez
Rojas
.
.
.

6. Los nombres de los clientes que tienen un cargo por entrega > 7

(clientes reunión cargos donde (cargo_ ent > 7 ) ) [ nombre]

7. Los nombres de los clientes que compraron todos los productos de color rojo

Ordenes [No_ cliente, NP] Divide(productos donde (color =’rojo’) ) [No_ producto]

31
(clientes reunión (ordenes[No_ cliente, NP] divide
(productos donde (color = ’rojo’)) [NP]) [nombres]
8. Obtener los nombres de los clientes que no compraron algunos de los productos de
los que compró el Sr. Sánchez.

Clientes. [NC]

Clientes que compraron (Clientes donde nombre = ’Sánchez’)


algunos de los productos que [No_cliente]  A
[NC] compro el Sr. Sánchez
(A reunión ordenes) [NP]  B

(B reunión ordenes) [N.C]  C

( ( Clientes [NC] menos C ) reunión clientes ) [ nombre]

9. Obtener todos los datos de los clientes


Cliente_ A.
10. Obtener los nombres y el estado de los clientes
Cliente_ A [Nombre, estado]
11. Obtener los nombres de los clientes del estado de Guanajuato.
( Clientes_ A donde estado = ‘Gto.’ ) ) [nombre]
12. Obtener los nombres de los clientes y el cargo de entrega de cada cliente:
a) Utilizando reunión
b) Utilizando producto cartesiano.

a) ( Cliente_ A reunión cargos) [Nombre, Cargo_ ent ]

No_cliente Nombre Edo. Cargo_ ent.


C1 Sánchez Gto. 6
C2 Flores Mich 8
C3 Rojas Gto 6
C4 Pérez Qro. 10
C5 Robles Jal. 7

b) Clientes veces Cargo

No_cliente Nombre Edo. Edo. Cargo_ ent.

C1 Sánchez Gto. Gto. 6


C2 Flores Mich Mich. 8
C3 Rojas Gto Gto. 6
C4 Pérez Qro. Qro. 10
C5 Robles Jal. Jal. 7

Clientes reunión cargos =

32
Clientes veces Cargos donde (clientes. Edo = Cargo. edo)

A Reunión B => ( A veces B) donde (A.atrib.común = B. atrib. común)


Solución :

(( Clientes veces Cargos) donde (Clientes. Edo = Cargo. Edo.))


[Nombre, Cargo. ent]

13. Obtener una tabla semejante a ordenes que contenga el nombre del cliente en lugar
del número, y el nombre del producto en lugar del número

(( Clientes Reunión Ordenes) Reunión Productos)[Nombre, Nom_ P, Cant.]

14. Defina el enunciado para la siguiente operación


Clientes Alias x
Clientes Alias y
((x veces y) donde (x. Edo = y. Edo and x.No_ cliente>y.No_cliente))
[X. Nombre, y. Nombre].

Obtener una tabla donde se encuentren los nombres de las parejas de los clientes
cuyo estado es el mismo, evitando que se relacionen parejas con el mismo nombre.

No_cliente nombre Edo.


C1 Sánchez Gto.

Ejercicios:

Considerando el ejemplo de s.sp.p.

Operaciones de recuperación

1. Obtenga números de proveedores y edo. Para los proveedores en París.

(S donde (ciudad = ’París’)) [S = número, edo.]

Select S = Número, edo.


From S
Where Ciudad = ‘París’

1. Recuperación simple

Obtenga los números de parte de todas las partes suministradas.


S.P[P_ Números]
Select Unique P_ Número
From SP

Condiciones
=
>/< And
Op. relacionales >= Op. Lógicos.

33
<= Or
<>

* Comparar rangos nombre_ atributo[Not]


BETWEEN expresión_ 1 And expresión_ 2
Op. Especiales. * Comparar patrones atributos Matches “valor”
* Comparar valores
Atributo [Not] in ( v1,v2…)
Atributo operador relacional
ANY (v1,v2,v3 ….)
Atributo op. Relacional
ALL (v1,v2,v3 …)

Ejemplo:

- Atributo > ANY (v1,v2,v3,….)


Atributo mayor que cualquiera de los valores (verdadero sí se cumple la condición)
- Atributo = ANY(v1,v2,v3,….) equivalente atributo in (v1,v2,v3,….)
Atributo igual a cualquiera de los valores (verdadero sí se cumple la condición)
- Atributo >ALL (v1,v2,v3,…)
Atributo mayor que todos los valores.

Op. Existencial. [Not] exists (select …)


El op. Existencial si el argumento no es un conjunto vacio.
Ej. Exist (v1,v2,v3,…)
2. Funciones agregadas

- Count (*) genera el número de tuplas de una relación


- Sum (atributo) suma del atributo especifico
- AVG (atributo) promedio de los valores de un atributo determinado
- Max (atributo) máximo valor de un atributo
- Min (atributo) mínimo valor de un atributo

Ejercicio 3

3. Recuperación calificada

Obtenga números de proveedor para los proveedores de París con edo > 20
Select S_ número
From S
Where ((ciudad = ‘París’) and (edo. > 20))

4. Recuperación con ordenamiento.

Obtenga Números y edo. De los proveedores en París, en orden descendente de edo.


Select S_ número, edo.
From S
Where ciudad = ‘París’

34
Order Descending edo.

5. Recuperación de mas de una tabla.

Para cada parte suministrada obtenga el número de la parte y de los nombres de todas
las ciudades que suministran la parte.
Select Unique SP. P_ número, P. Ciudad
From P, SP
Where SP. P_ número = P. P_ número

6. Recuperación que implica una tabla consigo misma

Obtenga todas las parejas de números de proveedores tales que los dos proveedores
estén localizados en la misma ciudad.
Select Primero. S_ número, Segundo. S_ número
From S Primero, S Segundo
Where Primero. Ciudad = Segundo. Ciudad and Primero. S#

7. Ejemplo de subconsultas

Obtenga nombres de proveedores para los proveedores que suministran la parte P2


(usando Subconsultas)
Select nomb_ S
From S
Where S_ número = ANY ( Select S_ número
From SP
Where P_ número = ‘P2’)
(sin consultas)
Select nomb_ S
From S, SP
Where S. S_ número SP. S número and SP. P. Num = ‘p2’

8. Manejo de subconsultas.

Obtenga nums. De proveedores para los proveedores con edo < que el valor máximo
actual de estado en las tablas (significa que el estado de los proveedores seleccionados
es menor que algún valor actual de estado y por lo tanto menor que el máximo actual)
Select S_ número
From S
Where edo ANY ( Select Max (edo)
From S)

9. Recuperación con niveles múltiples de anidamiento.

Obtenga nums. de proveedores para los proveedores que suministran al menos una parte
roja.
Select nom_ S
From S

35
Where S_ número in (Select S_ número
From SP
Where P_ número in (Select P_ número
From D
Where color = ‘rojo’)
10. Recuperación usando ALL

Obtenga nombres de proveedores para los proveedores que no suministran la parte P2


Select nom_ S
From S
Where S_ número <> ALL ( Select
From SP
Where P_ número = ‘P2’)

11. Recuperación usando exists.

Obtenga nombre de los proveedores para los proveedores que suministraron la parte P2
Select nom_ S
From S
Where exists * referencia por bloques
(Select * referencia a la relación definida en
From SP el bloque externo (S) y ref. a la rel.
Where SP. S_ número = S. S_ número del bloque interno (SP)
And SP. P_ número = ‘P2’)

No es necesario por que se considera que son referidos


A la tabla interna.

Si del bloque interno nos da un conjunto vacío no nos proporciona ningún nombre, si el
conjunto no es vacío nos da los nombres
Ejemplo:
#S SP
Salazar S1 S1 { S1 P2 200
Aldama S5 S5 { 0 No nos proporcina el nombre que es conjunto vacío

12. determine através de subconsultas y referencia por bloques que no suministraron


la parte P2

Select Nom_ S
From S
Where Not Exists
(Select *
From SP
Where S_ num = S. S_ num
And P_ num = ‘P2’ )

En este caso solo elige a Aldama y no a Salazar ni a Jaramillo.

36
13. Referencias por bloques, subconsultas y uso de operador IN considerando los
dos enunciados anteriores.

a) Obtenga los nombres de proveedores que suministraron P2

Select Nom_ S
From S
Where ‘P2’ IN
(Select P_ número
From SP
Where ‘P2’ in
( Select P_ numero
From SP
Where S_ numero = S. S_ número)

b) Obtenga los nombres de proveedores que no proveen P2 ( utilizando ALL).

Select Nom_ S
From S
Where ‘ P2’ <> ALL
(Select P_ número
From SP
Where S_ núm. = S. S_ núm.)

Salazar_ es P2 <> AU ( P1 P2 P3 P4 P5 P6 )
P2 No es diferente a todos por que si es igual a un elemento y
por lo tanto no sé elige
Aldama si se elige

14 Aplicación de subconsultas, referencia por bloques y el operador NOT EXISTS

Obtenga número de proveedores para los proveedores que suministran todos las partes
(totales, que no exista una parte que no se suministren )

Select Núm._ S
From S
Where NOT EXISTS
( Select *
From P
Where NOT EXISTS
(Select *
From SP
Where S_ núm. = S. S_ núm. and P_ núm. = P. P_ núm.)

S P SP

Salazar Si P1 S1 P1 300 falso


P2 S1 P2 200 falso

Ningún P se selecciona Significa que este proveedor no tiene ninguna parte que

37
No provea todas las partes

Jaramillo S2 P1 Esta es una forma de presentar la división


P2
P3 Es un conjunto no vacío por lo tanto no existe falso
P4 por que no suministra todos los productos

15 Referencia por bloques, Subconsulta.

Select Unique S_ núm.


From SP. SPX
Where Not Exists
(Select *
From SP. SPY
Where S_ núm. = ‘S2’
Not Exists
( Select *
From SP
Where S_ núm. = SPX. S_ núm.
And P_ núm. = SPY. P_ núm.

Obtenga los números de los proveedores que suministran al menos todas las partes
suministradas por el proveedor S2.

16 Recuperación usando unión

Obtenga los números de parte para las partes que pesen mas de 18 lbs. O que
actualmente sean suministradas por el proveedor S2.
Select P_ núm.
From P.
Where Peso> 18 lbs. Unión.
(Select P_ núm.
From P
Where S. Núm. = ‘S2’)

17 Recuperación de valores computados.

Obtenga el número de parte y el peso de la parte en gramos para todas las partes. Los
pesos se dan en libras en la tabla P.
Nota:
La cláusula Select y la Where pueden incluir expresiones aritméticas que
comprendan campos, además de nombres de campos sencillos.
1 Lb. = 454 grs.

Select P_ número, peso*454


From P

18 Obtenga el número total de proveedores. Uso de la función integrada Count

38
Select Count (*)
From S

19 Obtenga la cantidad total de la parte P2 suministrada

Select SUM (CTD)


From SP
Where P_ número = ‘P2’

20 Uso de Group by

Para cada parte suministrada obtenga, obtenga en número de y la cantidad total


suministrada de la misma.
Nota: El operador Group by reordena conceptualmente la tabla de f rom en grupos de
modo que dentro de cualquier grupo todos los renglones tengan el mismo valor por el
campo de Group by
La cláusula Select se aplica a cada grupo de la tabla dividida y no a cada renglón de la
tabla original.
Select P_ número, Sun Cto
From Sp
Group by P_ número

21 Uso del Group by usando Having

Obtenga los números de partes para todas las partes suministradas por mas de un
proveedor. Considere antecedentes del problema anterior.
Nota: Having es para los grupos lo que Where es para los renglones si Having se
especifica también debe haberse especificado Group by
Las expresiones es una cláusula Having deben tomar un solo valor dentro del grupo.

Select P_ número
From SP
Group by P_ número
Having Count (*) > 1

22 Defina el número de partes para todas las partes tales que la cantidad
suministrada sea superior a 300 ( excluyendo del total todas las remesas para
las cuales la cantidad sea menor o igual a 200), obtenga además el número de la
parte la cantidad máxima de la parte suministrada y agregue el resultado en
orden descendente de número de parte dentro de esos valores de cantidad
máxima.

Select SP
Where CTD > 200
Group by P_ número
Having SUM (CTD)>300
Order by descending (P_ número)

39
23 Actualización de un solo registro

Cambie el color de 10 partes de P2 a amarillo, aumente su peso en cinco y ponga ciudad


en nulo.
Update P
Set Color = ‘ amarillo ‘
Peso = ‘ peso + 5 ‘
Ciudad = null
Where P_ número = ‘ P2’

24 Actualización de registros múltiples.

Doble el estado de todos los proveedores de Londres


Update S
Set edo. = edo. * 2
Where Ciudad = ‘ Londres ‘

25 Actualización con una subconsulta

Ponga la cantidad en 0 para todos los proveedores de Londres


Update SP Update SP
Set CFD = 0 Set CTD = 0
Where S_ número = Where ‘ Londres ‘ =
( Select S_ núm. (Select Ciudad
From S From S
Where Ciudad = ‘Londres’) Where S_ núm. = SP. Núm.

 La vista debe derivarse de una sola tabla


 Cada tupla distinta de la vista debe corresponder a una tupla diferente e identificable
de la tabla
 Cada columna distinta de la vista debe corresponder a una columna diferente e
identificable de manera única en la tabla.

26 Actualización de tablas múltiples

Para el proveedor S2 cambie el número a S9


Update S Update SP
Set S_ Núm. = ‘S9’ Set S_ Núm. = ‘S9’
Where S_ Núm. = ‘S2’ Where S_ Núm. = ‘S2’

27 Inserción ole un solo registro

Adicione la parte P7 ‘Arandela’ , ‘Gris’ , 2 , ‘Atenas ‘ a la tabla P

Insert
Into P ( P_ Núm., nom_ P, color, peso, ciudad )
Values (‘P1’ , ‘Arandela’, ‘Gris’, 2, ‘Atenas’)

40
28 Inserción de registros múltiples

Considere una tabla temporal ( una vista) en la que se tiene una columna llamada P_
Núm. Inserte en temp. Los números de parte de todas las partes suministradas por el
proveedor ‘ S2’
Insert
Into temp ( P_ Núm.)
Values
( Select P_ Núm.
From SP
Where S_ Núm. = ‘S2’)

29 Supresión de un solo registro.

Suprima el proveedor S1
Delete . Delete
From S From Sp
Where S_ Núm.= ‘S1’ Where S_ Núm. = ‘ S1’

30 Supresión de registros múltiples

Suprimir todas las remesas


Delete
From SP

Definición de vistas
Create View Cliente_ Gto (crea una vista llamada cliente_ Gto.)
As (Select No_ cliente, nombre, cd
From cliente
Where cd= ‘Gto’)
Todos los valores que se seleccionen se crea otra tabla (virtual), pero los cambios en
esta tabla afectan a la tabla original.

Características:
El nivel externo de una base de datos se define por su esquema externo, este
esquema se compone de definiciones de tablas y vistas. Una vista es una tabla virtual, es
decir, una tabla que no existe en realidad , si no que se deriva de una o más tablas.
Una vista es una ventana sobre datos reales, no una copia separada de los datos.
Los cambios en los datos reales son visibles a través de la vista, las operaciones contra
la vista se convierten en operaciones contra los datos reales esta conversión siempre es
posible para las proposiciones de recuperación, sin embargo no siempre es posible para
las operaciones de actualización, para las cuales hay ciertas restricciones.

Normalización
Es una metodología para normalizar los campos ( atributos ) de una tabla de tal
forma que se evite la redundancia.

41
Metodología
1. captura de información bajo un formato definido

Ordenes de clientes

Cliente: Número: C1 nombre: S. Sánchez


Estado: Texas Cargo por envío: 6 dls.

Productos ordenados

Número nombre precio unitario cantidad fecha

P1 Floppy 88 1 06/05
P3 H. Disk 450 2 10/23

Supóngase que se tiene este formato para cada cliente

2 Definición de una tabla (datos normalizados)

Ordenes – clientes
No. Nombre Edo. Cargo * No. Nombre p. Unit cantidad fecha
entidad

C1 S. Sánchez Texas 6 P1 Floppy 88 1 06/05


C1 S. Sánchez Texas 6 P3 H. disk 450 2 10/23
C2 R. Rojas California 8 P2 Monitor 150 1 03/16
C2 R. Rojas California 8 P3 H. Disk 450 3 03/16
C2 R. Rojas California 8 P4 CPU 349 2 03/16
C3 B. Dilan N. Jer 65 P2 Monitor 150 1 08/20
C4 G. García Florida 5 P1 Floppy 88 2 07/28
C4 G. García Florida 5 P4 CPU 349 1 08/09
C5 F. Flores Florida 5 P1 Floppy 88 1 06/28
C5 F. Flores Florida 5 P3 H. Disk 450 1 05/16
C6 J. Jiménez California 8 P3 H. Disk 450 2 05/24
C6 J. Jiménez California 8 P4 CPU 349 1 05/24

42
La normalización de una tabla requiere satisfacer un conjunto especifico de
restricciones: formas normales

3. PRIMERA FORMA NORMAL

Se dice que una tabla satisface la primera forma normal si pára cada atributo o
campo le corresponde un valor atómico.
La tabla anterior no satisface esta forma normal porque por ejemplo a C1 en el atributo
no_ producto, nom, p.u , cantidad tiene mas de un renglón

4 SEGUNDA FORMA NORMAL

Se establece cuando una tabla se satisface la forma normal y además los atributos no
primos tienen una dependencia funcional completa con respecto a la llave primaria

Atributo no primo. Son atributos que no forman parte de llaves candidatas.


De la tabla las llaves son no_ ctrol. y no_ prod todos los demás son atributos no primos.

Dependencia funcional. Se dice que un atributo x tiene dependencia funcional con


respecto a un atributo y si para cada valor de y existe un valor único de x.

Ejemplo

Y x
No_ clientes  nombre_ C (nombre depende funcionalmente del No_ Cliente)
No_ prod.  nombre_ P (nombre prod depende funcionalmente del No_ prod)
No_ cliente  estado
Edo.  cargo/ ent
No_ prod  precio unitario
No_ prod y No_ cte.  cantidad
No_ prod y No_cte.  fecha
No_ cliente y nombre  estado
No_ Prod y nombre  precio unitario

Nota: Cuando se tiene una dependencia completa el atributo del que se depende
funcionalmente se llama determinante.

Dependencia funcional completa:


Se dice que un atributo x tiene una dependencia funcional completa con respecto
a un atributo y si no existe añgún subconjunto de y que dependa x.
No_cliente y nombre  estado  no es una dependencia funcional completa,
porque
No_cliente  estado es un subconjunto de (faltan apuntes)

43
Diagrama de dependecias funcionales completas

Nombre
Nom_ prod
No_cliente
Estado

Precio_ unit No_ producto


Cargo_ ent

Fecha

Cantidad

La segunda forma no se satisface porque solo fecha y cantidad son atributos no primos
que dependen de No_ cliente y No_ producto

Ordenes_ cliente ( No_ cliente, No_ producto, Fecha, Cantidad )


Producto ( No_ Producto, Nombre_ prod, Precio_ unitario)
Cliente ( No_ cliente, nombre_ estado, cargo_ entidad)

Atributo

No_ prod  precio unitario } dependencia completa


No_ prod, nomb_ prod  precio untitario

Hay un subconjunto de No_cliente del cual dependa cargo_ entidad: No entonces es


una dependencia funcional completa.

Diagrama de dependencia funcional aplicando la segunda forma normal

Ordenes

44
No_ clientes Cantidad

No_ producto Fecha

Producto Cliente
precio_unit nombre

No_ Producto No_ cliente


nomb _ prod Edo

Cargo_ ent

Las tablas después de aplicar la 2ª forma normal son los siguientes:

Ordenes

No_ clientes No_ producto Fecha Cantidad

C1 P1 06/05 1
C1 P3 10/23 2
C2 P2 03/16 1
C2 P3 03/16 3
C2 P4 03/16 2
C3 P2 08/20 1
C4 P1 07/28 2
C4 P4 08/09 1
C5 P1 06/28 1
C5 P3 05/16 1
C6 P3 05/24 2
C6 P4 05/24 1

45
Producto

No_ producto Precio_ Unit Nomb_ prod

P1 88 Floppy
P2 150 Monitor
P3 450 Hard disk
P4 349 CPU

Clientes

No_ Cliente Nombre Edo. Cargo_ ent

C1 S. Sánchez Texas 6
C2 R. Rojas California 8
C3 B. Dilan Nva. Jersey 6.5
C4 G. García Florida 5
C5 F. Flores Florida 5
C6 J. Jiménez California 8

Aplicación de la tercera forma normal..


La tercera forma normal se satisface si la segunda forma normal se cumple y
además
Las dependencias funcionales entre los atributos no primos y las llaves primarias no son
transitivas.

Dependencia transitiva.
Se dice que el atributo ‘x’ tiene una dependencia transitiva con respecto a un
atributo ‘y’, sí ‘x’ depende funcionalmente de ‘y’ y además depende funcionalmente de
otro atributo ’w’ al que a su vez depende funcionalmente de ‘y’

Factorizar las tablas para poder satisfacer la tercera forma normal.

Ordenes ( No_ Cliente, No_ producto, cantidad, fecha)


Producto ( No_ producto, Precio_ unit, nomb_ prod.)
Cliente (No_ cliente, nombre, edo)
Estado (edo, cargo_ ent)

Diagrama de dependencia para la tercera forma normal

Ordenes

No_ clientes Cantidad

46
No_ producto Fecha

Producto

Precio_ unit
No_producto

Nomb_ prod

Cliente
nombre

No_cliente estado

Estado

estado Cargo_ ent

Tablas después de aplicar la 1ª, 2ª y 3ª forma normal y son las tablas normalizadas

No_ clientes No_ producto Fecha Cantidad

C1 P1 06/05 1
C1 P3 10/23 2
C2 P2 03/16 1
C2 P3 03/16 3
C2 P4 03/16 2
C3 P2 08/20 1
C4 P1 07/28 2
C4 P4 08/09 1
C5 P1 06/28 1
C5 P3 05/16 1
C6 P3 05/24 2
C6 P4 05/24 1

Producto

No_ producto Precio_ Unit Nomb_ prod

P1 88 Floppy
P2 150 Monitor
P3 450 Hard disk
P4 349 CPU

47
Clientes

No_ Cliente Nombre Edo. Cargo_ ent

C1 S. Sánchez Texas 6
C2 R. Rojas California 8
C3 B. Dilan Nva. Jersey 6.5
C4 G. García Florida 5
C5 F. Flores Florida 5
C6 J. Jiménez California 8

Estado

Cargo_ent

6
8
6.5
5
5
8

Forma normal de Boyce Codd

Una tabla satisface la forma normal de boyce Codd es cuando todo lo que es
determinante se define como una llave candidata.
Ejemplo:
Nombre si nombre es determinante y si este es único se
Convierte en llave candidato y por lo tanto edo.
No- Cliente puede depender de nombre y No_ Prod,
Estado No_ cliente

Ejemplo 2
Considere el siguiente diagrama de dependencias funcionales.

Ordenes

No_ clientes Cantidad

No_ producto Fecha

48
Ordenes (No_ cliente, Nombre, No_ producto, cantidad)

Se satisface la tercera forma normal.


La forma de Boyce Codd no se cumple debido a que No_cliente y nombre es la llave
candidato
Y en el dialogo no se considera así.

Factorizar:

Cliente (No_ cliente, nombre)


Si no_ cliente se elige como llave primaria entonces se usa:
Ordenes ( No_ Cliente, No_ producto, cantidad)
Si nombre se elige como llave primaria entonces se usa
Ordenes ( No_ producto, nombre, cantidad)

Diagrama de dependencia funcional aplicando la forma normal de Boyce Codd

Cliente ordenes

No_ cliente nombre no_cliente

cantidad
No_ producto

Ejemplo 3
Considere la tabla empleados con los atributos E( estudiante). M (materia), P
(Profesor).
El significado de cada renglón de la tabla es que un estudiante determinado le enseña
una determinada materia el profesor indicado, se siguen las reglas semánticas:
 para cada materia a cada estudiante de la misma le enseña únicamente un profesor
 cada profesor enseña una materia (materia tienen dependencia de profesor)
 cada materia la enseñan varios profesores (profesor no tiene dependencia funcional
completa con respecto a materia)

tabla empleado

F M P

Salazar Matemáticas Blanco


Salazar Física González
Jaramillo Matemáticas Blanco
Jaramillo Física Pérez

a) Aplicando las reglas semánticas defina el diagrama de dependencias


funcionales
b) Determine si la relación satisface la tercera forma normal y la forma de B.C.

49
c) En caso necesario factorice tablas para que las formas normales sean
satisfechas
M
P
E

b) Satisface la tercera forma normal, no satisface la FNBC ( porque p es un


determinante y no es considerada como llave candidata)
c) Factorizar

Diagrama 1 Diagrama 2

E.M P.M

E
P M
M

Diagrama Elka
Atributo_ m
Atrib1, atrib2,… 1:1
Entidad 1:n

(Fuerte) 1:n

Ejemplo:

Representación
Entidades Fuertes
Clientes (No_ cliente, nombre, estado)
Producto ( No_ producto, nom_prod, precio_ unitario)
Cargos ( estados, cargo_ entidad)
Relaciones 1 : n
R1 ( Cargos, clientes)
Ordenes ( clientes, Producto, cant, fecha)

50
No prod
cantidad
nombre

producto
clientes ordene
s

fecha Nom prod Prec unit


No_ cliente Estado

R1

cargos

estados Cargo_ ent

Diagrama Elka.

Estado, cargo_ ent


cargo

(estado)

No_ cliente, nombre, est No_ prod, nom_ prod, precio_unit


cliente productos

(No_cliente) (No_ producto)

No_ cliente, no_ prod, cant, fecha


ordenes

51
Definición de tablas

Cargos Clientes

Estado Cargo_entidad No_cliente Nombre Estado

Productos

No_ prod nomb_ prod Precio unit

Ordenes

No_ cliente No_ producto cantidad fecha

Estas tablas satisfacen las formas de normalización por lo tanto están normalizadas
Ejemplo:
Modelo conceptual de la base de datos empleados.
Representación:
Entidades fuertes.
Empleado ( No_ empleado, nombre, RFC, depto, puesto)
Relación
Trabajo _ con ( No_ empjefe, No_ emptrab) n:n

Puesto Empleado No_ empjefe Trabaja_co


n
No_emptrab

No_emp
nombre RFC Depto

Relación fuerte

No_empl, nombre, rfc, depto, puesto (no_emp) No_empjefe, no_emptrab

empleado Trabaja con

52
Ejemplo:

Entidades fuertes
Depto (cve_ Depto, desc)
Alumnos (No_ control, nombre, semestre)
Maestros (cve_ maestro, nombre)
Materias ( cve_ mat, nombre, ht, Hp, no_cred)
Especialidad (cve_esp, descrip)

Entidades debiles
Grupo (No-grupo, horario, salón)
Relaciones
R1 (maestros, grupos)
R2 (materias, grupos)
R3 (especialidad, alumno)
R4 (depto, materias)
Lista (grupos, alumnos)

Diagrama entidad relación

7 8 9 10 1 1 1 1
1 2 3 4
1
5
1 2 3
R R
1 2
1
6
lista
R
4

4 5 6
R
3

1 1 1 2 2 2 2
7 8 9 0 1 2 3

1. Maestros 11. Salón 21. semestre


2. Grupos 12. Cve_ mat 22.Cve_ depto
3. Materias 13. Nombre 23. desc
4. Especialidad 14. HT
5. Alumno 15. HP
6. Departamento 16. No_cred
7. Cve_ maestro 17. Cve_ esp
8. Nombre 18. Descrip

53
9. No_ grupo 19. No_ ctrol
10. Horario 20. Nombre
Diagrama elka

Cve_ maestro, Cve_mat, No_grupo Cve_mat, nombre,HT


nombre 1 Salón, Cve_maestro 2 HP, No_cred,
cve_depto
maestro Grupos materia
3

Cve_mat, No_grupo,
No_ crtrol
5
lista

4
Cve_maestro, nombre No_ctrol, nombre, Cve_depto, Desc
6
Semestre, Cve_ esp
especialidad alumno depto

1. Clave _ maestro 4. Número de control


2. Clave _ materia 5. Clave departamento
3. Clave _ materia, Número _ grupo 6. Clave especialidad

Definición de las tablas

Maestro Materia

Cve_ maestro nombre Cve_materia nombre Ht HP No_ cred Cve_ depto

Grupos

Cve_ mat No_ grupo horario salón Cve_ maestro

Departamento Alumno

Cve_ depto Desc No_ ctrol nombre semestre cve_esp

54
Especialidad lista

Cve_ esp Descripción Cve_ mat No_ grupo No_ control

Ejemplo 3

Representación general
Entidades fuertes
Inquilino ( rfc, nombre, ref_cor, ref_per)
Depto (cve_depto, costo_ depto)
Estacionamiento ( cve_ est)
Bienes (código, descripción)
Pago (cve_pago, descripción, pago)
Relaciones
R1 (inquilino, depto)
R2 (Depto, estacionamiento)
R3 (Depto, pago)
D_B ( Depto, bienes, cantidad)

Diagrama entidad relación


8 9
1
7 0
6
1 2 3
R R
1 2

1
1 2
1 D 1 R
B 3 3

5
4

1 1
4 5 1 1
6 7

1. Inquilino 11. Refer_ cor


2. Departamento 12. Refer_ per
3. Estacionamiento 13. Cantidad
4. Bienes 14. Código
5. Pago 15. Descripción
6. RFC 16. Cve_ pago
7. Nombre 17. Descrip_ pago
8. Cve_ depto

55
9. Costo_ depto
10. Cve_ est
Diagrama Elka

rfc, nombre, refer_ cor Cve_ dpto, costo_depto clave Cve_est, cve_depto
refer_ per RFC rfc depto
inquilino depto estación

Cve_ depto

Cve_ dpto, código Cve_pago,


cantidad descrip_pago, cve_dpto
D_B pago

código
Código, descripción

bienes

Definición de tablas

Inquilino Departamento

RFC Nombre Refer_ cor Refer_ per Cve_ depto Costo_ dpto RFC

Estacionamiento Pago

Cve_est cve_depto cve_pago descrip_ pago cve_ depto

D_ B Bienes

cve_ depto código cantidad código descripción

56
MODELO DE REDES

Se define como una serie de registros entre los cuales se establece una liga, suo
organización se establece como una gráfica arbitraría.
El modelo CODASYL DBTG (Data Base Group, grupo de trabajo sobre una base de
datos)
Fue desarrollada a finales de los 60’s como un modelo estándar de redes por un grupo
de trabajo de programadores, las ultimas modificaciones a este modelo se hicierón en el
año 1978.

Arquitectura del modelo DBTG.

Aplicación A1 aplicación A2 aplicación B1 aplicación B2 aplicación B3


Leng anf Leng anf Leng anf Leng anf Leng anf
+ + + + +
DML DML DML DML DML

ATU ATU ATU ATU ATU

Subesquema Subesquema
A B

Construida y DBM
Mantenida S
Esquema
el admón.
De datos

esquema
de almacenamiento

Se definen subesquema (programas) que dan soporte a las aplicaciones ( los


subesquemas son parte de la base de datos formada por prog.)
Esquema: representa el esquema lógico total de la B.D.
: representa el esquema físico

DBMS: el que maneja todo el esquema.

57
Conjuntos DBTG:
Es la liga que se establece entre los dos registros, un registro propietario y un
registro miembro. Ejemplo.
Diagrama 0 de Bachman
propietario
registro
f Se debe buscar la forma de
establecer relaciones 1:n
registro Pro- siempre que hay conjuntos
miembro
n
registro
miembro

Construcción de conjuntos DBTG


Ejemplos jerárquicos.

La relación en los modelos jerárquicos es de hecho 1:n, representandose con las


siguientes alternativas:

1) Jerarquía con un nivel dependiente.


Se presenta cuando cumple la regla:
Un registro miembro solo puede participar en una concurrencia de un tipo de
conjunto DBTG.
Ejemplo:

Departamento D1 Jerarquía de un nivel


Si hay otra concurrencia
D-E Del tipo D-E la s reglas E-1
Empleado y E-2 no pueden participar
Cada regla miembro solo puede
E-1 E-2 aparecer en una concurrencia
Jerarquía con mas de un nivel dependiente .
Un registro miembro puede participar simultaneamente en varias concurrencias
de diferentes tipos de conjuntos de DBTG.
D1

D-E

E-1 E-2

D-E D-E

E1 E1 E1 E1

58
3) Jerarquía con mas de un tipo de registro con un nivel dependiente.
Un tipo de registro dado puede ser propietario de cualquier número de tipos de
conjuntos DBTG.

D1
D-E

D-E
E-1 E-2

E-1 E-2

Diagrama de Bochman

P-M P-S

M S

Clase de pertenencia en un conjunto DBTG

Inserción de registros de miembros al conjunto DBTG:

* Inserción manual << Connect >>


Clases de
Pertenencia * Inserción automatica
Al generar el registro miembro se conecta al conjunto
Perteneciente.

Relación de registros miembros en la ocurrencia del


Conjunto DBTG .

* Fija << Fixed >>

* Obligatoria << Mandatory >>

* Opcional << Optional>>

Retención fija: El registro miembro pertenece a una ocurrencia única determinada de


un tipo de conjunto.
Retención obligatoria: El registro miembro puede pertenecer a cualquiera ocurrencia
de un tipo de conjunto DBTG.

59
Retención opcional: el registro miembro puede conectarse, desconectarse,
reconectarse o cualquier tipo de conjuntos en cualquier ocurrencia.
Ejemplos:

Registros
Nombre dirección cd.
Cuenta habiente propietario

Cta hab cta

miembro
Número saldo

Suc Cta
propietario
Nombre saldo edo

Juan perez Obregon 6 cortazar

Cta hab cta

364 500 565 0

Suc Cta

Centro 99999 Gto.

565 Número
Move 565 to numero in cuenta
Cuenta Move 0 to saldo in cuenta
0 Move centro to nombre in suc
Saldo
Find only in sucursal using nombre
In sucursal
Centro nombre
Sucursal store cuenta
Move Juan Pérez to nombre in
Juan Cuenta habiente
Pérez nombre
Cuenta habiente Find only cuenta habiente using
Nombre in cuenta habiente.
Connect cuenta
Operación de inserción

60
Connect reg_ miembro to tipo_ com
Otras operaciones Reconnect
Disconnect

Reconnect: desconecta un registro miembro a la ocurrencia de un tipo de conjunto y lo


inserta en la otra ocurrencia del mismo tipo de conjunto.
Disconnect: elimina un registro miembro de la ocurrencia de un conjunto DBTG.

Insertion
Automatic Manual
Retention

Fixed no permite nada Connect

Mandatory Reconnect Connect


Reconnect

Optional Disconnect Connect


Reconnect Disconnet
Reconnect

Formas de seleccionar ocurrencias de un tipo de conjunto DBTG.


Hay tres formas de seleccionar la ocurrencia de un tipo de conjunto DBTG, a saber:
1. por aplicación
2. por valor
3. Estructurada

La forma elegida se define a través de una cláusula.


Ejemplo:

S no_s nombre cd Edo.

S_ SP

SP No_s No_p cantid

Una ocurrencia SS Juan Pérez Celaya Gto

Seleccionar la ocurrencia P1
S_ SP Insertar en la ocurrencia
DBTG del conjunto S_SP

S5 P3 750 S5 P2 300 S5 P6 700


Definir cláusula para selección de ocurrencia.

61
1) Set selection is by application

Move ‘SS’ to no_s in sp


R Move ‘P6’ to no_p in sp
Move ‘700’ to cant in sp
Move ‘S5’ to No_S in S  localizar reg. Prop. Por su k
Find any S using No_s in S  buscar en el registro prop. En el com. De reg.
Store SP singulares S

2) Set Selecction is by value of No_S in S


R
** move ‘S5’ to No_ S in S
Store SP.

3) Set selección is by estructural of No_s in SP = No_s in S


R
Store SP

Ordenamiento de los registros miembros en un conjunto DBTG.

Order is [ First / last/ prior/ next / sorted ]

1. Cuando no se especifica la cláusula order is, el registro miembro se inserta a la


ocurrencia especifica de un conjunto de manera arbitraria definida por le sistema.
2. Si se elige la opción first el sistema insertara el registro miembro al inicio.
3. Si se elige la opción last el registro miembro será insertado al final de los registros
existentes.
4. Si se elige la opción prior el registro miembro será insertado antes del actual de la
unidad de ejecución.
5. Si se elige la opción next el registro miembro será insertado después del actual de la
unidad de ejecución.
6. Si se elige la opción sorted, en el caso de los conjuntos que se han clasificado de
acuerdo a una llave definida, el registro miembro se insertara respetando dicha
clasificación

Resumen

62
Jerarquica (1:n)

Construcción
Red ( n:n) find …p
Manual
connect mto c
Insertion is

Find ..d
Pertenencia automatic
Store m

Fixed
Relation is mandatory (reconnect )
Optional ( reconnect, disconnect,
Connect )
Conjuntos
DBTG

propietario
Aplicación

Conjunto

Selección set selection value of <campo> in <p>


Miembro is by

Estructural <campo> in
<m> = <campo> in <P>

por omisión
first
last
Ordenamiento order is next
prior
sorted

Conjuntos DBTG agrupan un tipo de registro


Singulares

Ejemplo aplicación:

63
1. Shem name is proveedores y partes
2. .
3. record name is S
4. duplicates are not allowed for nors in S
5. .
6. Nors; type is character 5
7. Nors; type is character 20
8. Estatus; type is fixed decimal 3
9. Ciudad; type is character 15
10. .
11. Record name is P
12. Duplicates are not allowed for Nrop in P
13. .
14. Nrop; type is character 6
15. Nompar; type is character 20
16. Color, type is character 6
17. Peso; type fixed decimal 4, default is –1
18. Ciudad; type is character 15
19. .
20. record name is p
21. duplicates are not allowed for nors in sp, Norp in Sp
22. .
23. Nrop; type is character 5
24. Nrop; type is character 6
25. Ctp; type is fixed decimal 5
26. .
27. set name is S_SP
28. _ owner is S
29. _ order is sorted by defined keys duplicates are not allowed
30.
31. ._ member is SP
32. _ insertion is automatic
33. _ retention is fixed
34. _ key is ascending Nrop is SP
35. _ set selctión is by value of Nros in 6
36. .
37. set name is P_ sp
38. _ ower is p
39. order is sorted by defined key duplicates are not allowed
40. .
41. menber is SP
42. _ insertion is automatic
43. _ retention is fixed
44. key is ascending.. Nrop in SP
45. set selection is by value of Nrop in P

64
Nros noms estatus ciudad

S.SP

Rp:S
r.m: sp
Insertion Nros Nrop ctd
retencion
seleccion
P_PS
llaves
ordenamiento

Nrop Nom p color peso cd

Indicadores de posición actual

Manejo de datos manejo de excepciones


DBTG (DML)

Proposiciones de manejo de datos

Indicadores de posición actual.


Los indicadores de posición actual para una unidad se ejecución dada identifica
la ocurrencia de registro accesado mas recientemente por la unidad de ejecución para
los registros singulares, para los registros actuales correspondientes a la ocurrencia de
cada tipo de conjuntos y para la región definida por todos los registros singulares que es
considerada por la unidad de ejecución. Ejemplo:

S S4 Jiménez 20 X

S_SP

SP S4 P2 500 S4 P8 700

P_SP

P2 Perno Azul 17 2
P

Move s4 to Nros in S

65
Find any S using Nros in S encontramos el renglón S como prop.
Find Firs Sp With in S_SP encontrar el 1er registro miembro
Find owner SP With in P_SP encontrar propietario de SP

Actual de la unidad de ejecución P_P2


Ocurrencia del registro S actual S_S4
Ocurrencia del registro SP actual SP_S4_P2
Ocurrencia del registro P actual P_P2
Ocurrencia del registro S_SP actual S_SP_P4
Ocurrencia del registro D_SP actual P_SP_P2
Registro actual de S_SP SP_S1,P2
Registro actual P_SP P_P2
Ocurrencia actual de la región S,SP,P P_P2

Manejo de excepciones
Dentro del modelo de redes codasyl DBTG el manejo de excepciones hace uso
de un registro especial llamado estado, al cual se le asigna el valor de cero si las
instrucciones se han ejecutado correctamente, en caso contrario el valor asignado es
diferente de cero y es dependiente del tipo de error. Para determinar el tipo de error es
necesario hacer referencia al manual de este sistema.

Proposiciones de manejo de datos:

GET (recuperar) registros


Campos de registros

STORE ( almacenar)  en ocurrencias especificas de conjuntos DBTG

ERASE ( eliminación de registros)

MODIFY(cambios en registros existentes )

FIND (encontrar un archivo determinado)

CONNECT ( colocar un registro en una ocurrencia determinada de un conjunto DBTG)

DISCONNECT (

RECONNECT (

GET ( esta proposición recupera el actual de la unidad de ejecución)

Ejemplo determine toda la información del registro para el proveedor S4

Move ‘S4’ to Nro_s in S


Find any S using nro_S in S
Get S  recupera toda la información del registro sing S y lo pone en la RAM

Recupere solamente la información del nombre del proveedor y el número que le


corresponda.

66
Move ‘S4’ to Nro_ S in S
Find any S using Nro_S in S
Get nom_S in S
Nro_S in S.

STORE ( crea una nueva ocurrencia de registro y lo establece como actual en la unidad
de ejecución)
ejemplo: Crear la ocurrencia de SP: S5 / P6 / 700 y almacenar en los conjuntos S_SP y
P_PS considere una inserción automática.
Ocurrencia del registro S Actual S_S4

S5 P6 700

Move ‘S5’ to Nro_S in SP


Move ‘P6’ to Nro_P in SP
Move ‘700’ to cant in SP
Move ‘ S5’ to Nro_S in S
Find any S using Nro_S in S
Move ‘ P6’ to Nro_P in p
Find any P using Nro_P in P
Store SP

ERASE [ ALL]
Suprime el actual de la unidad de ejecución, suprime además del actual, todos
los registros miembros relacionados con el actual de ejecución.

Retention is optional. Suprime el registro, desconectándose todos


Los miembros del conjunto del cual es dueño;
Sin embargo estos registros pertenecen en la base
Datos

Sensibiliza Retention is fixed . en este caso el registro y los registros


All Miembros son eliminados de la D. B.
Retention is mandatory. Erase falla, el registro no puede
Eliminarse.

Ejemplo suprima la ocurrencia de S en P/ el proveedor S4

Move ‘ S4’ to Nro_S in S


Find any S using Nro_S in S
Erase S

MODIFY ( actualiza la unidad de ejecución)

Ejemplo adicione 10 al estado de proveedor S4

67
Move ‘S4’ to Nro-S in S
Find any S using Nro_S in S
Get S
Add 10 to edo in S
Modify S

CONNECT ( conecta el actual de la unidad de ejecución a una ocurrencia especifica


De un conjunto DBTG)
Ejemplo. Conecte la ocurrencia de S para el proveedor S4 a la ocurrencia del conjunto
X poseída por la ocurrencias x de X

X x

conjunto

S4

Move ‘x’ to Nro_x in X


Find any X using Nro_x in x
Move ‘S4’ to Nro_S in S
Find any S using Nro_S in S
Connect S to Conjunto X

DISCONNECT ( desconecta el actual de ejecución de una ocurrencia DTBG)

Ejemplo: Desconecte la ocurrencia de S pa ra S4 de la ocurrencia del conjunto X que la


contiene.

Move ‘x’ to Nro_ x in X


Find any X using Nro-x in X
Move ‘S4’ to Nro_S in S
Find any S using Nro_S in s
Disconnect S from conjunto x

RECONNECT ( desconecta el actual de la unidad de ejecución de una ocurrencia


DBTG y lo conecta a otra del mismo tipo DBTG )
Ejemplo:
Desconecte la ocurrencia de s de la ocurrencia del conjunto_ x que la contiene (y) y
conéctela a la ocurrencia del conjunto x poseída por la ocurrencia de x de X

X Y X X

Conjuto x Conjuto_x

S S4 S S4
Move ‘x’ to Nro_x in X
Find any X using Nro_x in X

68
Move ‘S4’ to Nro_S in S
Find any S using Nro_S in S
Reconnect S with in conjunto_x

FIND ( localiza una ocurrencia de registro existente y lo establece como el actual en la


unidad de ejecución. )

A) Formato 1. Acceso dentro de un tipo de registro.

Ejemplo. Hallar todas las ocurrencias del registro S en los que el valor de ciudad =
Londres.
Move ‘ Londres ‘ to ciudad in S
Find any S using ciudad in S
Move ‘no’ to No_encontrate
Perform until No_encontrate = ‘Si’
Get S
_______
_______
Find duplicate using ciudad in S
End perform.

B) Formato 2 acceso al propietario

Ejemplo. Supóngase que el registro actual del conjunto P_SP es una ocurrencia
particular de SP, halle la correspondiente ocurrencia de P

P_ SP Find owner with in P_SP

C) formato 3 acceso secuencial dentro de un conjunto o renglón

Ejemplo. Halle los valores de nom_ parte para las partes suministradas por el
proveedor S4

S4

S_ SP

Move ‘S4’ toS4Nro_s


No_Pin SCant
P5 in S 70
Find any S using Nros

69
Move ‘no’ to no- encontrado = ‘si’
Find first SP with in S_SP
Perform until no-encontrado = ‘si’
Get SP
‘ adicionar una lista de números de partes ‘
Find next SP within in S S-SP
End perform

d) Formato 6. Acceso secuencial dentro de un conjunto DBTG.


Ejemplo. Halle la cantidad de la parte P5 suministrada por el proveedor S1.

Move ‘si’ to Nro_s in S


Find any S Nro_S in S
Move ‘PS’ to num_P in SP
Find SP within S_SP current usingnum_P in SP
Get Sp
------- { imprima la cantidad del registro SP
-------
S1

S1 P3 70 S1 P5 80

e) Formato 2
Acceso secuencial dentro de un conjunto DBTG.

Ejemplo: Halle todas las remesas para el proveedor S1 donde la cantidad sea 100
Move ‘S1’ to Nro_S in S
Find any S using Nro_S in S
Move ‘100’ to cant in SP
Find SP within S-SP current using cant in SP
Move ‘ no’ to no-encontrada
Perform until no-encontrada = ‘si’
Get SP
====== { obrener las remesas }
Find duplicate SP within S_SP using cant in SP
End perform

F) Formato 4
Uso de lista de guarda.

Find first / last within nombre de la lista de guarda

Lista de guarda. Es un objeto con nombre cuya función es guardar una lista ordenada
de valores de llave BD; no forman parte de la BD, son locales para la unidad de
ejecución que los usa.
Ejemplo.

70
Data división
DB proveedores within proveedores y partes
LD listaA limit is 15
Ld listaB limit is 20
===
===
Move ‘París’ to ciudad in S
Move zero to M
Move ‘no’ to no encontrado
Find any S using ciudad in S
Perform until no encontrado =‘si’
KEEP USING listaA
If estado in S > M
Move estado in S to M
End if
Find duplicate S using ciudad in S
End perform
Move M to estado in S
Move ‘no’ to listaA_vacio
Perform until listaA_vacia ‘si’
Find first within listaA
Free first within listaA
Modify estado in S
End_perform

Los valores de la llave DB. Se añaden a una lista de guarda por medio de la proposición
keep y se suprime por medio de la proposición free.

G) Uso de la cláusula de retención. ( Retaining)


El efecto de esta cláusula es evitar la actualización del indicador de posición
actual para el conjunto DBTG implicado.

Ejemplo. Para cada proveedor que suministre la parte P4, halle otra parte suministrada
por el mismo proveedor e imprima el número de proveedor, el nombre del proveedor y
el número de la parte (se considera que por proveedor solo existe una parte
diferente a P4)

Move ‘P4’ to Nro_P in P


Find any P using Nro_P in P
Move ‘no’ to no_mas
Perform until no-mas = ‘si’
11 Find next SP within S-SP
If no-mas not = ‘si’
Get S
Move ‘no’ to encontrado
Perform until encontrado = ‘si’
Find next SP within S_SP
Retaining P_SP currency
Get SP

71
If Nro_A in SP not = ‘P4’
Move ‘si’ to encontrado
End if
End perform.
(imprime Nro_S in S, nom S in S, Nomp in SP)
end if
End perform.

Cuando se ejecuta el find en la línea 11 se establece una ocurrencia de SP como la


actual de la unidad de ejecución. Esta ocurrencia, que es la ocurrencia de SP mas
recientemente accesada, también se convierte en el renglón actual de todos los
conjuntos DTBG en los que participa, incluyendo en particular el conjunto DBTG P_SP
Esto a su vez hace ocurrencia actual P_SP sea la que contiene esta concurrencia de SP.
De esta manera cuando se ejecuta el find en la línea 5 en la siguiente iteración del ciclo
exterior ( como un intento por hallar el siguiente proveedor de P4), la ocurrencia de
P__SP referida en esa proposición ya no será poseída por P 4. Para evitar esta situación,
el find de la linea 11 debe ampliarse con la incursión de una frase de retención
Retaining.

Modelo de datos jerárquico

Consiste en un conjunto de registros que se conectan entre si por medio de ligas.


Un registro es un conjunto de campos (atributos), c/u de los cuales contiene un solo
valor. El modelo jerárquico difiere del de red en cuanto a que los registros se organizan
para formar conjuntos de árboles, en vez de gráficas arbitrarias. El contenido de un
registro especifico puede repetirse en varios lugares, esta repetición puede darse tanto
en el mismo árbol como en árboles distintos. La repetición de registro tiene dos
desventajas principales:

a) Puede producirse una inconsistencia de los datos


b) Será inevitable el desperdicio de espacio

Diagrama de estructura de arbol

Especifica la estructura lógica general de la base de datos, se caracteriza por:


a) no tiene ciclos
b) las relaciones entre padre e hijo solo pueden ser 1:n o 1:1.

Ejemplo de un diagrama entidad relación y su correspondiente diagrama de estructura


de árbol.

CUENTA HABIENTE CUENTA


CTAHABC
TA

NOMBRE CD NÚMERO SALDO

72
CALLE

NOMBRE CALLE CD
UENTA HABIENTE

CUENTA NÚMERO SALDO

El esquema de la base de datos representa un conjunto de diagrama de árbol. Por cada


uno de estos diagramas, existe una sola instancia del árbol de B.D. la raíz de este árbol
es un nodo de trabajo. Los hijos de ese nodo son instancias reales de tipo registro, según
se especifique en el dialogo de estructura de árbol correspondiente.

Ejemplo.

CUENTA HABIENTE

BECK MAPLE SN.FCO KATE NORTH SN.JOSE DONE S.HILL P.ALTO

73
CUENTA

200 55 256 100000 347 667 301 10503

74

También podría gustarte