Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PROGRAMA GENERAL:
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.
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
2
BASE DE DATOS I
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.
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.
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 .
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.
6
II CLASIFICACIÓN DE LOS MODELOS DE DATOS.
MODELOS DE DATOS.
MODELO ENTIDAD-RELACIÓN
Registro. Nombre
Cuenta habiente Dirección
No. Ch
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
Relación 1:n
Producto Registro hijo
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
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
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.
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
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
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.
Clienta Transacciones
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:
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
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
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.
14
Ejercicio1:
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.
Desglose de conceptos
Total:____________
Total:_______________
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
10 1 12
2 1
1
5
13 conceptos 1
4
16 17 puestos
18 19
2
0
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:
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
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
19
4) Jerarquía con el mismo tipo de registro de mas de un nivel.
EJ
EMP
ENLACE
EMP X
E1 E2
EMP 4
ENLACE
EMP
X
E12 E13
Ejemplos de redes.
20
E1 E2
E
LLAVE F DIS D1 D2
F D
DIS D2
D1
CLAVE F
a) Cualquier caso.
R
R
1 LLAVE- LLAVE R1 R2
E1 - E2
E1 E2
R
LLAVE
LLAVE- R - E2
E1 2
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
R1 R2
NO-CLIENTE CVE-APARATO CVE-EMP CVE-EQUIPO
R3 Apar-ref
Ejemplo:
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.
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.
R1 cliente R2 cargo
No-cliente nombre estado estado cargo-ent
C01 Juan P Gro V Qro
Puede ser igual
(a) puede ser nulo
23
Ejemplos:
Partes proveedor
No. Parte Nombre color peso ciudad No-prov. Nombre edo ciudad
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.
24
Arquitectura del SYSTEM- R
Nivel
Conceptual TABLA DE TABLA DE TABLA DE TABLA DE
BASE B1 BASE B2 BASE B3 BASE B4
Ambiente de programación
SQL inmerso es mezclar
- Esquema conceptual instrucciones en DML en
el lenguaje anfitrión (PLI,
COBOL).
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.
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
Intersección de relaciones.
Cliente A intersección Cliente _B
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.
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:
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.
Selección.
Se selecciona una tupla de la relación que cumpla con ciertas condiciones.
Definición. Relación donde condición
Ejemplo.
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 :
Clientes Cargos
29
C5 Robles Jal. Mex. 65
x
Ordenes Productos
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.
Sánchez
Rojas
.
.
.
6. Los nombres de los clientes que tienen un cargo por entrega > 7
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]
32
Clientes veces Cargos donde (clientes. Edo = Cargo. edo)
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
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.
Ejercicios:
Operaciones de recuperación
1. Recuperación simple
Condiciones
=
>/< And
Op. relacionales >= Op. Lógicos.
33
<= Or
<>
Ejemplo:
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))
34
Order Descending edo.
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
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
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)
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 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’)
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
Select Nom_ S
From S
Where Not Exists
(Select *
From SP
Where S_ num = S. S_ num
And P_ num = ‘P2’ )
36
13. Referencias por bloques, subconsultas y uso de operador IN considerando los
dos enunciados anteriores.
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)
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
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
Ningún P se selecciona Significa que este proveedor no tiene ninguna parte que
37
No provea todas las partes
Obtenga los números de los proveedores que suministran al menos todas las partes
suministradas por el proveedor S2.
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’)
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.
38
Select Count (*)
From S
20 Uso de Group by
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
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’)
Suprima el proveedor S1
Delete . Delete
From S From Sp
Where S_ Núm.= ‘S1’ Where S_ Núm. = ‘ S1’
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
Productos ordenados
P1 Floppy 88 1 06/05
P3 H. Disk 450 2 10/23
Ordenes – clientes
No. Nombre Edo. Cargo * No. Nombre p. Unit cantidad fecha
entidad
42
La normalización de una tabla requiere satisfacer un conjunto especifico de
restricciones: formas normales
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
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
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.
43
Diagrama de dependecias funcionales completas
Nombre
Nom_ prod
No_cliente
Estado
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
Atributo
Ordenes
44
No_ clientes Cantidad
Producto Cliente
precio_unit nombre
Cargo_ ent
Ordenes
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
P1 88 Floppy
P2 150 Monitor
P3 450 Hard disk
P4 349 CPU
Clientes
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
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’
Ordenes
46
No_ producto Fecha
Producto
Precio_ unit
No_producto
Nomb_ prod
Cliente
nombre
No_cliente estado
Estado
Tablas después de aplicar la 1ª, 2ª y 3ª forma normal y son las tablas normalizadas
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
P1 88 Floppy
P2 150 Monitor
P3 450 Hard disk
P4 349 CPU
47
Clientes
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
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
48
Ordenes (No_ cliente, Nombre, No_ producto, cantidad)
Factorizar:
Cliente ordenes
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
49
c) En caso necesario factorice tablas para que las formas normales sean
satisfechas
M
P
E
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
R1
cargos
Diagrama Elka.
(estado)
51
Definición de tablas
Cargos Clientes
Productos
Ordenes
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
No_emp
nombre RFC Depto
Relación fuerte
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)
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
53
9. No_ grupo 19. No_ ctrol
10. Horario 20. Nombre
Diagrama elka
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
Maestro Materia
Grupos
Departamento Alumno
54
Especialidad lista
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)
1
1 2
1 D 1 R
B 3 3
5
4
1 1
4 5 1 1
6 7
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
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
D_ B Bienes
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.
Subesquema Subesquema
A B
Construida y DBM
Mantenida S
Esquema
el admón.
De datos
esquema
de almacenamiento
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
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
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
miembro
Número saldo
Suc Cta
propietario
Nombre saldo edo
Suc Cta
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
Insertion
Automatic Manual
Retention
S_ SP
Seleccionar la ocurrencia P1
S_ SP Insertar en la ocurrencia
DBTG del conjunto S_SP
61
1) Set selection is by application
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
Estructural <campo> in
<m> = <campo> in <P>
por omisión
first
last
Ordenamiento order is next
prior
sorted
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
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
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.
DISCONNECT (
RECONNECT (
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
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.
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
X x
conjunto
S4
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
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.
Ejemplo. Supóngase que el registro actual del conjunto P_SP es una ocurrencia
particular de SP, halle la correspondiente ocurrencia de P
Ejemplo. Halle los valores de nom_ parte para las partes suministradas por el
proveedor S4
S4
S_ SP
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
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.
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.
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)
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.
72
CALLE
NOMBRE CALLE CD
UENTA HABIENTE
Ejemplo.
CUENTA HABIENTE
73
CUENTA
74