257
1 Escuela de Ingeniería de Sistemas e Informática Curso de Bases de datos Prof. Jaime Octavio Albarracín Ferreira

Data Bases One I-2011

Embed Size (px)

Citation preview

Escuela de Ingeniera de Sistemas e Informtica

Curso de Bases de datosProf. Jaime Octavio Albarracn Ferreira1

Objetivos del curso El estudiante aprender en este primer curso de Bases de datos, los conceptos tericos fundamentales: 1. Los conceptos matemticos relacionales 2. El lenguaje SQL para la descripcin, administracin y consulta de Bases de datos 3. Los conceptos de normalizacin de Bases de datos 4. El diseo de Bases de datos segn el modelado semntico 5. Los conceptos de integridad de las Bases de datos 6. La construccin de una base de datos especfica para una empresa de la regin2

Contenido del curso1. Introduccin a las Bases de datos 1.1 Definicin de una Base de datos (DB) 1.2 Definicin de un DBMS 1.3 Tipos de usuarios de una DB 1.4 Operaciones de entrada y salida en una DB 1.5 Apuntadores 2. Organizaciones bsicas de archivos 2.1 Organizacin consecutiva 2.2 Organizacin secuencial 2.3 Organizacin relativa3

2.4 Organizacin directa 2.5 Organizacin secuencial indexada 3. Organizaciones de archivos para DBMS 3.1 Organizacin inversa 3.2 Organizacin multilista 3.3 Organizacin multianillo 4. Niveles de una Base de datos 4.1 Nivel interno 4.2 Nivel conceptual 4.3 Nivel externo 4.4 Mapeo de datos

4

5. Propiedades de una Base de datos 5.1 Independencia de datos 5.2 Seguridad 5.3 Integridad 5.4 Respaldo y recuperacin 5.5 Control de redundancia 5.6 Consistencia 5.7 Auditoria 5.8 Control de concurrencia 5.9 Rutas de acceso

5

6. Software complementario de un DBMS 6.1 Administrador de la Base de datos (DBA) 6.2 Diccionario de datos 6.3 Lenguajes de la Base de datos 6.3.1 DDL (Lenguaje de descripcin de datos) 6.3.2 DML (Lenguaje de manejo de datos) 7. Clases de DBMS 7.1 Enfoque jerrquico 7.2 Enfoque en red 7.3 Enfoque relacional

6

8. Modelo relacional 8.1 Nivel conceptual 8.2 Nivel externo o vistas 8.3 Nivel interno 8.4 El lenguaje de datos 9. Algebra relacional 9.1 Operaciones de conjunto 9.2 Operaciones unarias 9.3 Operaciones adicionales 10. Clculo relacional 10.1Variables de tuplas 10.2 Condiciones de comparacin7

10.3 Condiciones de pertenencia 10.4 Condiciones compuestas 10.5 Cuantificador existencial 10.6 Cuantificador universal 10.7 Expresiones 10.8 Tipos de variables de tuplas 10.9 Ejemplos 11. Lenguajes para el manejo de datos: Oracle y SQL 11.1 Consultas simples 11.2 Consultas de reunin 11.3 Funciones integradas

8

11.4 Caractersticas avanzadas de SELECT 11.5 Proposiciones de actualizacin 11.6 SQL embebido 12. Diseo de Bases de datos: El modelo relacional y la normalizacin. 12.1 La relacin universal 12.2 Primera forma normal (1FN) 12.3 Dependencia funcional 12.3.1 Clave candidata 12.3.2 Clave principal 12.3.3 Clave fornea9

12.3.4 Claves alternas 12.4 Normalizacin de la relacin 1FN 12.5 Segunda forma normal (2FN) 12.6 Normalizacin de las relaciones 2FN 12.7 Tercera forma normal (3FN) 12.8 Forma normal de Boyce & Codd (BCNF) 12.9 Cuarta forma normal (4FN) 13. El modelo semntico o modelo E/R 13.1 Las reglas lgicas o reglas del negocio 13.2 Entidades e interrelaciones 13.3 Grado de las interrelaciones 13.4 Correspondencia de las interrelaciones10

13.5 Cardinalidad de las interrelaciones 13.6 Diagramas E/R 13.7 Conversin de un diagrama E/R a un diagrama referencial (tablas) 13.8 Valores de claves forneas segn cardinalidad 13.9 El modelo E/R extendido 13.1.8.1 La generalizacin 13.1.8.2 La agregacin 13.10 Verificacin del grado de normalidad 14. Integridad de una Base de datos 14.1 Restricciones de dominio 14.2 Integridad de las entidades 14.3 Integridad referencial11

Sistema de notas: (Todos los previos con igual valor)Primer previo: Captulos 1 - 10 (pupitre e individual): 14 de abril de 2011 Segundo previo: Captulo 11 (computador e individual): 12 de mayo de 2011 Tercer previo: Captulos 12 - 14 (pupitre e individual): 9 de junio de 2011 Cuarto previo: Quices orales (en cualquier clase) Trabajo: Sustentable (en grupos no mayores a 3) al finalizar el semestre.

Textos: Diapositivas del curso. C. J. Date; Introduccin a los sistemas de bases de datos, Prentice Hall, Sptima edicin, ISBN:968-444-419-2. Siberschatz; Fundamentos de bases de datos, McGraw Hill, Quinta edicin, ISBN: 84-481-4644-1. SQL, manual de referencia, Groff & Weinberg, McGraw Hill, ISBN 84-481-3930-5.

12

Bibliografa James R. Groff & Paul N. Weinberg; SQL Manual de referencia, McGrawHill, ISBN: 0-07-222559-9 C. J. Date; Introduccin a los sistemas de Bases de datos, PrenticeHall, ISBN: 968-444-419-2, sptima edicin Abraham Silberschatz & Henry Korth; Fundamentos de Bases de datos, McGrawHill, ISBN: 0-07-295886-3, quinta edicin Ramakrishnan Raghu & Gehrke Johannes; Sistemas de gestin de Bases de datos, McGrawHill, ISBN: 978-84-481-5638-1, tercera edicin Ramez Elmasri & Shamkant B. Navathe; Fundamentos de sistemas de Bases de datos, Pearson Addison Wesley, ISBN: 978-84-7829-085-7, quinta edicin Gillenson Mark L.; Administracin de Bases de datos, Limusa Wiley, ISBN-13: 978-968-18-6595-2 Mario G. Piattini & otros; Tecnologa y diseo de Bases de datos; Alfaomega-Rama, ISBN: 978-970-15-1268-5 Prez Csar; Oracle PL/SQL, Alfaomega-Rama, ISBN: 978-970-151374-3 Rodriguez Almeida Miguel; Bases de datos, McGrawHill, ISBN: 847615-807-613

1. Introduccin a las Bases de datos1.1 Definicin de una Base de datos Una Base de datos es un conjunto de archivos almacenados de forma integrada y compartida, el cual implica el uso de un software manejador (DBMS). 1.2 Definicin de un DBMS Un DBMS es un software que tiene las siguientes funciones:14

Funciones de un DBMSa. b. c. d. e. f. g. h. Crear y organizar la Base de datos Establecer ndices y mantener rutas de acceso Agregar archivos nuevos a la Base de datos Insertar registros nuevos en archivos existentes Obtener datos de archivos existentes Actualizar datos en archivos existentes Borrar registros en archivos existentes Eliminar archivos de la Base de datos15

Concurso de un DBMS en la E/S

1

2

316

1.3 Tipos de usuarios de una Base de datosa) El programador de aplicaciones b) El usuario final c) El administrador de la Base de datos (DBA)

17

1.4 Operaciones de E/S en una Base de datosX

DBMS

FS Disco Driver bloques

18

1.5 ApuntadoresHay tres clases de apuntadores: 1. Direccin relativa. Es un entero entre 0 o 1 hasta el nmero mximo de registros de un archivo. Debe ser traducida en direccin absoluta. 2. Direccin fsica o absoluta. Es la posicin real de un registro dentro del disco, es decir, el nmero de bloque ocupado por el registro. No necesita ser traducida. 3. ndices: Es un campo propio al registro (clave principal) que lo identifica en forma nica y exclusiva. Deben ser traducidos en direccin absoluta.19

2. Organizaciones bsicas de archivosa) Consecutiva b) Secuencial (SAM) c) Relativa d) Directa (DAM) e) Secuencial indexada (ISAM)

2.1 Organizacin consecutiva.Cdula 2345 1234 6781 5667 3030 1893 4567 Apellido Gmez Serrano Peralta Flrez Durn Peralta Rico Nombre Andrs Rosa Javier Luis Carmen Carlos Omar Dpto. Categora A A B A C B A 1 3 2 1 2 4 120

2.2 Organizacin secuencial (SAM).Cdula 1234 1893 2345 3030 4567 5667 6781 Apellido Serrano Peralta Gmez Durn Rico Flrez Peralta Nombre Rosa Carlos Andrs Carmen Omar Luis Javier Dpto. Categora A B A C A A B 3 4 1 2 1 1 2

21

Lote

$

%

Grabacin

Movimiento Transaccin Clasificacin Movimiento clasificado Actualizacin Errores Maestra actualizada Cinta maestra

Actualizacin de archivos secuenciales22

Correccin Digitacin Trascripcin Transaccin Si Si No

Prevencin No No No

De los errores al actualizar archivos secuenciales(para lo cual se utilizaba el procesamiento por lotes)

23

2.3 Organizacin relativaDir. Rel. Cdula 1 2 3 4 5 6 7 8 9 10 1234 1893 2345 3030 4567 5667 6781 1295 1486 3827 Apellido Serrano Peralta Gmez Durn Rico Flrez Peralta Prez Mantilla Duarte Nombre Rosa Carlos Andrs Carmen Omar Luis Javier Nubia Miguel Felipe Dpt Cat. Enlace A B A C A A B A B C 3 4 1 2 1 1 2 4 3 5 8 3 4 10 6 7 # 9 2 5

Un archivo con organizacin relativa se puede procesar en forma secuencial o en forma directa24

Al procesar un archivo en forma directa surgen tres inconvenientes: 1. Cmo conocer previamente la direccin relativa? 2. Casi nunca el valor de una clave principal tendr relacin con su direccin relativa. 3. Habra que transformar el valor de la clave principal en su direccin relativa, y el de sta en su direccin absoluta.

25

Para convertir el valor de la clave principal en direccin relativa, los mtodos ms usados son: a) Direccionamiento directo b) Direccionamiento por tablas c) Direccionamiento por algoritmos (hashing)

26

a) Direccionamiento directoD. relativa 1 2 3 4 5 Cdula (Clave principal) 1012 1013 1014 1015 1016

D. Relativa = clave principal clave ms pequea + 1 Problema: Casi nunca las claves principales son valores consecutivos27

b) Direccionamiento por tablasClave principal 1000 1037 1039 1050 1078 D. relativa 5 2 9 7 10

Problema: No es prctico mantener la tabla en orden lgico

28

c) Direccionamiento por algoritmos. Los pasos son:Primero Convertir la clave principal en valor numrico Segundo Aplicar un algoritmo de transformacin para obtener un valor del mismo orden que el nmero de registros Tercero Ejemplo Multiplicar por un factor para obtener una direccin relativa permitida dentro del rango [0, # de registros] Aplicando un algoritmo como el de la divisin, a un archivo de 20.000 registros:

Clave principal = 1.897642.159 N de registros = 20.000 Factor (k) = 0.2 (k=20.000/99.999) Primo prximo al nmero de registros = 19.997 1.897642.159 19.997 = 94.896,340.2 = 18.979,2 Direccin relativa = 18979 Los sinnimos se guardan por separado en un rea de overflow29

2.4 Organizacin directa (DAM).

Los registros no se almacenan, ni por clave, ni por direccin relativa, sino por direcciones absolutas, o sea direcciones de bloque en el disco.

30

2.5 Organizacin secuencial indexada (ISAM)Archivo de ndicesDir. rel. 1 2 3 4 5 6 7 8 9 10 Cdula 1234 1295 1486 1893 2345 3030 3827 4567 5667 6781 Enlace 2 3 4 5 6 7 8 9 10 # Puntero 1 8 9 2 3 4 10 5 6 7 Dir. rel. 1 2 3 4 5 6 7 8 9 10 Cdula 1234 1893 2345 3030 4567 5667 6781 1295 1486 3827

Archivo de datosApellido Serrano Peralta Gmez Durn Rico Flrez Peralta Prez Mantilla Duarte Nombre Rosa Carlos Andrs Carmen Omar Luis Javier Nubia Miguel Felipe Dpt A B A C A A B A B C Cat. 3 4 1 2 1 1 2 4 3 5

31

Archivo secuencial indexado con una insercinArchivo de ndicesDir. rel. 1 2 3 4 5 6 7 8 9 10 11 Cdula 1234 1295 1486 1893 2345 3030 3827 4567 5667 6781 2500 Enlace 2 3 4 5 6 7 8 9 10 # 6 Puntero 1 8 9 2 3 4 10 5 6 7 11 Dir. rel. 1 2 3 4 5 6 7 8 9 10 11 Cdula 1234 1893 2345 3030 4567 5667 6781 1295 1486 3827 2500

Archivo de datosApellido Serrano Peralta Gmez Durn Rico Flrez Peralta Prez Mantilla Duarte Mantilla Nombre Rosa Carlos Andrs Carmen Omar Luis Javier Nubia Miguel Felipe Diana Dpt A B A C A A B A B C D Cat. 3 4 1 2 1 1 2 4 3 5 1

Archivo secuencial indexado simple y con ndices completos32

Archivo de datos Archivo de ndices de primer nivelDir. rel. 1 2 3 4 5 6 7 Cdula 1295 1893 2472 2800 3827 5667 6781 Enlace 2 3 4 5 6 7 # Puntero 15 9 20 14 4 5 19Dir. rel. 1 2 3 4 5 6 7 8 9 10 11 12 13 Cdula 1234 1893 2345 3030 4567 5667 6781 1295 1486 3827 2500 1621 2472 2485 1190 5000 2800 3500 6500 2000 Apellido Serrano Peralta Gmez Durn Rico Flrez Peralta Prez Mantilla Duarte Mantilla Lpez Serrano Plata Manzur Mantilla Rincn Correa Echeverry Marn Nombre Rosa Carlos Andrs Carmen Omar Luis Javier Nubia Miguel Felipe Diana Julio Miguel Mara Helga Felipe Patricio Daro Esperanza La Dpt A B A C A A B A B C D A A B C A B C B D Cat. 3 4 1 2 1 1 2 4 3 5 1 5 3 5 2 2 2 3 3 4 Enlace 8 20 13 18 16 19 # 9 12 5 17 2 14 11 1 6 4 10 7 3

Archivo de ndices de segundo nivelDir. rel. 1 2 3 Cdula 2472 5667 6781 Enlace 2 3 # Puntero 1 4 7

14 15 16 17 18 19 20

Archivo secuencial indexado compuesto y con ndices escasos33

$

%

Transaccin

Valida y actualiza

Archivo ISAM

Actualizacin de archivos ISAMCorreccin Digitacin Trascripcin Transaccin Si Si No Prevencin Si No No

De los errores al actualizar archivos ISAM(Lo cual se haca en lnea)34

3. Organizacin de archivos para DBMS Con los archivos bsicos solo es posible el acceso directo si se conoce una clave principal. organizaciones bsicas de archivos. Un DBMS permite establecer acceso por claves mltiples en uno o varios archivos. Un DBMS emplea las siguientes organizaciones de archivos: a) Organizacin inversa b) Organizacin multilista c) Organizacin multianillo35

Buscar acceso por claves mltiples, es difcil con las

3.1 Organizacin inversaArchivo de ndices de segundo nivelD. R. 1 2 Cdula 5000 6500 Enlace 2 # Puntero 1 4 D. R. 1 2

Archivo de nombresNombre Departamento Categora Enlace 2 # Puntero 1 5

Archivo de ndices de primer nivelD. R. 1 2 3 4 Cdula 1893 3030 5000 6500 Enlace 2 3 4 # Puntero 1 4 7 10 D.R. 1 2 3 4 5 6 7 8

Archivo de valoresValor A B C D 1 2 3 4 Enlace 2 3 4 5 6 7 8 # 2 3 1 5 5 1 2 3Contina en la siguiente diapositiva

punteros 4 10 6 7 8 9

8 6 4 9 7 10

36

Archivo de datosD. R. 1 2 3 4 5 6 7 8 9 10 Cdula 1190 1234 1893 2472 2500 3030 3500 4567 5000 6500 Apellido Manzur Serrano Peralta Serrano Mantilla Durn Correa Rico Mantilla Echeverry Nombre Helga Rosa Carlos Miguel Diana Carmen Daro Omar Felipe Esperanza Dpto. C A B A D C C A A B Cat. 2 3 4 3 1 2 3 1 2 3 Enlace 2 3 4 5 6 7 8 9 10 #

37

Archivo con organizacin inversa con una insercinArchivo de ndices de segundo nivelD. R. 1 2 Cdula 5000 9876 Enlace 2 # Puntero 1 4 D. R. 1 2

Archivo de nombresNombre Departamento Categora Enlace 2 # Puntero 1 5

Archivo de ndices de primer nivelD. R. 1 2 3 4 Cdula 1893 3030 5000 9876 Enlace 2 3 4 # Puntero 1 4 7 10 D.R. 1 2 3 4 5 6 7 8

Archivo de valoresValor A B C D 1 2 3 4 Enlace 2 3 4 5 6 7 8 # 2 3 1 5 5 1 2 3 8 6 4 11 38 9 7 10 punteros 4 10 6 8 11 7 9

Contina en la siguiente diapositiva

Archivo de datosD. R. 1 2 3 4 5 6 7 8 9 10 11 Cdula 1190 1234 1893 2472 2500 3030 3500 4567 5000 6500 9876 Apellido Manzur Serrano Peralta Serrano Mantilla Durn Correa Rico Mantilla Echeverry Nstor Nombre Helga Rosa Carlos Miguel Diana Carmen Daro Omar Felipe Esperanza Surez Dpto. C A B A D C C A A B B Cat. 2 3 4 3 1 2 3 1 2 3 4 Enlace 2 3 4 5 6 7 8 9 10 11 #

Archivo con organizacin inversa despus de insertar un nuevo registro39

Archivo con organizacin inversa con una eliminacinArchivo de ndices de segundo nivelD. R. 1 2 Cdula 5000 6500 Enlace 2 # Puntero 1 4 D. R. 1 2

Archivo de nombresNombre Departamento Categora Enlace 2 # Puntero 1 5

Archivo de ndices de primer nivelD. R. 1 2 3 4 Cdula 1893 2500 5000 6500 Enlace 2 3 4 # Puntero 1 4 7 10 D.R. 1 2 3 4 5 6 7 8

Archivo de valoresValor A B C D 1 2 3 4 Enlace 2 3 4 5 6 7 8 # 2 3 1 5 5 1 2 3Contina en la siguiente diapositiva

punteros 4 10 6 7 8 9

8 6 4 9 7 10

40

Archivo de datosD. R. 1 2 3 4 5 6 7 8 9 10 Cdula 1190 1234 1893 2472 2500 FFFF 3500 4567 5000 6500 Apellido Manzur Serrano Peralta Serrano Mantilla Durn Correa Rico Mantilla Echeverry Nombre Helga Rosa Carlos Miguel Diana Carmen Daro Omar Felipe Esperanza Dpto. C A B A D C C A A B Cat. 2 3 4 3 1 2 3 1 2 3 Enlace 2 3 4 5 6 7 8 9 10 #

Archivo con organizacin inversa despus de eliminar un registro41

Archivo con organizacin inversa con una modificacinArchivo de ndices de segundo nivelD. R. 1 2 Cdula 5000 6500 Enlace 2 # Puntero 1 4 D. R. 1 2

Archivo de nombresNombre Departamento Categora Enlace 2 # Puntero 1 5

Archivo de ndices de primer nivelD. R. 1 2 3 4 Cdula 1893 3030 5000 6500 Enlace 2 3 4 # Puntero 1 4 7 10 D.R. 1 2 3 4 5 6 7 8

Archivo de valoresValor A B C D 1 2 3 4 Enlace 2 3 4 5 6 7 8 # 2 3 1 5 5 1 2 3Contina en la siguiente diapositiva

punteros 4 10 6 8 7 7 9

8 6 4 9 7 10

42

Archivo de datosD. R. 1 2 3 4 5 6 7 8 9 10 Cdula 1190 1234 1893 2472 2500 3030 3500 4567 5000 6500 Apellido Manzur Serrano Peralta Serrano Mantilla Durn Correa Rico Mantilla Echeverry Nombre Helga Rosa Carlos Miguel Diana Carmen Daro Omar Felipe Esperanza Dpto. C A B A D C B A A B Cat. 2 3 4 3 1 2 3 1 2 3 Enlace 2 3 4 5 6 7 8 9 10 #

Archivo con organizacin inversa despus de modificar un registro43

D. R. 1 2 3 4 5 6 7 8 9 10

Valor A A B C D 1 2 3 3 4

Enla ce 2 3 4 5 6 7 8 9 10 # 2 9 3 1 5 5 1 2

Punteros 4 10 6 8 6 4 9 7 7 8

Bandera S N N N N N N S N N

10 3

Archivo de valores con registros de longitud fija para una organizacin inversa44

3.2 Organizacin multilistaArchivo de ndices de segundo nivelD. R. 1 2 Cdula 5000 6500 Enlace 2 # Puntero 1 4 D. R. 1 2

Archivo de nombresNombre Departamento Categora Enlace 2 # Puntero 1 5

Archivo de ndices de primer nivelD. R. 1 2 3 4 Cdula 1893 3030 5000 6500 Enlace 2 3 4 # Puntero 1 4 7 10 D.R. 1 2 3 4 5 6 7 8

Archivo de valoresValor A B C D 1 2 3 4 Enlace 2 3 4 5 6 7 8 # Punteros 2 3 1 5 5 1 2 3 Contador 4 2 3 1 2 3 4 1 45

Contina en la siguiente diapositiva

Archivo de datosD. R. 1 2 3 4 5 6 7 8 9 10 Cdula 1190 1234 1893 2472 2500 3030 3500 4567 5000 6500 Apellido Manzur Serrano Peralta Serrano Mantilla Durn Correa Rico Mantilla Echeverry Nombre Helga Rosa Carlos Miguel Diana Carmen Daro Omar Felipe Esperanza Dpto. C A B A D C C A A B Cat. 2 3 4 3 1 2 3 1 2 3 Enlace 2 3 4 5 6 7 8 9 10 # Enla ce D 6 4 10 8 # 7 # 9 # # Enla ce C 6 4 # 7 8 9 10 # # #

46

El archivo de datos en una organizacin multilista tiene un apuntador por cada clave secundaria, que apunta al siguiente registro que la cumple. El contador del archivo de valores en una organizacin multilista es usado por el DBMS para procesar consultas por claves mltiples con el operador AND, pues comenzando por el contador ms pequeo minimiza la bsqueda. Con el operador OR utiliza una tabla de referencia adicional en donde va guardando los registros que cumplen, en las diferentes sublistas, la condicin de las claves en forma simultnea.Dir. Relat. del registro 8 Enlace de categora #

Tabla de referencia para consulta de departamento = A OR categora = 147

3.3 Organizacin multianillo Un anillo es una lista enlazada en donde el ltimo nodo se encadena con el primeroA B C D

Para bsquedas en ambas direcciones se necesita un apuntador adicional que contenga la direccin del nodo anterior. As el primer nodo se encadena con el ltimoA B C D48

A

B

C

D

1234

2472

4567

5000

1893

6500

1190

3030

3500

2500

3

1

2

4

Archivo con organizacin multianillo49

$

%

Transaccin

Valida y actualiza

Base de datos

Actualizacin de una Base de datos

Correccin Digitacin Trascripcin Transaccin Si Si Si

Prevencin Si Si Si

De los errores al actualizar una Base de datos(Lo cual se suele hacer en tiempo real)50

4. Niveles de una Base de datosNivel externo Esquema Vista de c/usuario externoEsquema externo Esquema externo

Nivel conceptual Vista de todos los usuarios

Esquema conceptual

Nivel interno Vista del sistema operativo

Esquema interno

51

4.1 Nivel interno de una Base de datos Est constituido por el conjunto de bloques de disco, con sus diferentes registros y sus respectivas direcciones, apuntadores, contadores y datos. El nivel interno es el que toca al sistema operativo (el servidor del disco) y a la tarjeta controladora del disco, por lo cual es un esquema fsico binario, en la intimidad del hardware.

52

4.2 Nivel conceptual de una Base de datos Es el que corresponde a la percepcin de datos comn a todos los usuarios de una organizacin. Por lo tanto se ve como un conjunto universal de entidades vinculadas entre si, y cada una con sus propios atributos. La apariencia de este nivel salta a la vista aunque no tiene existencia fsica.

53

4.3 Nivel externo de una Base de datos Es el que corresponde a la percepcin de datos que individualmente o en grupo tienen los usuarios de una misma rea funcional de una empresa. Es una vista o subconjunto del conjunto universal, que describe nicamente la parte de los datos de inters para cada usuario y que tampoco tiene existencia fsica. Cada vista puede omitir uno o ms registros, atributos o relaciones del esquema conceptual, o tambin cambiar su orden. A diferencia de los otros esquemas, el esquema externo es mltiple.54

4.4 Mapeo de datos La existencia de tres niveles impone al DBMS la necesidad de transformar los datos de un formato a otro. Existiendo tres niveles, existirn dos formatos de transformacin: Conceptual-interno y conceptualexterno. Tanto el formato conceptual-interno como el conceptual-externo opera en los dos sentidos: De lo conceptual a lo interno y viceversa, y de lo conceptual a lo externo y viceversa. El DBA debe indicar la correspondencia entre formatos mediante las reglas de correspondencia (mapping rules)55

5. Propiedades de una Base de datos5.1 Independencia de los datos. Es la capacidad de modificar los esquemas interno o conceptual sin causar cambios en los programas (que usan esquemas externos). La independencia entre lo externo y lo interno se llama Independencia fsica y, entre lo externo y lo conceptual Independencia lgica La independencia lgica sirve para el mantenimiento pero fomenta la separacin entre la estructura y la funcionalidad organizacional.56

5.2 Seguridad. Los datos deben estar protegidos contra accesos no autorizados, y adems reservados en diferentes rangos de permisividad para accesos autorizados. 5.3 Integridad. Los datos, apuntadores, direcciones, enlaces, ndices y contadores, deben mantenerse siempre incorruptibles. La corrupcin puede aparecer por fallas del hardware, defectos del software, actualizaciones incompletas o invlidas, o la violacin a las reglas de integridad referencial.

57

5.4 Respaldo y recuperacin. Es la facilidad para obtener copias de la Base de datos (backups de respaldo) que permitan recuperar la Base de datos ante cualquier falla. 5.5 Control de redundancia. Es la propiedad por medio de la cual, la repeticin de datos es mnima y es controlable. El proceso de normalizacin busca precisamente reducir al mximo la redundancia de datos, aunque nunca al 100%

58

5.6 Consistencia. Es la propiedad que impide las contradicciones entre datos. Si la redundancia estuviera descontrolada, un mismo dato repetido en lugares diferentes podra tener valores diferentes, y por tanto inconsistentes. 5.7 Auditora. Es el examen de la Base de datos y su entorno, a fin de comprobar que se ajusta a lo establecido. Este examen no es solo a posteriori sino que tambin es a priori

59

5.8 Control de concurrencia. Es la capacidad para ejercer un riguroso control en la ejecucin simultnea de transacciones con el fin de proteger la consistencia de las actualizaciones y consultas a la Base de datos. Veamos lo que ocurrira si no hubiese control de concurrencia. Supongamos en un banco, la ejecucin simultnea de una transaccin de consignacin de un cheque de 100 (T1) en una ventanilla, y una transaccin de retiro de 50 en efectivo (T2) en otra ventanilla. Los pasos que se sucederan en Ram se muestran en la siguiente diapositiva.60

Registro inicialTiempot=0

SAL CON RET 200 0 0 T2 Lea cuentas RET = RET 50 Regrabe cuentas

T1 Lea cuentas

CON = CON + 100 Regrabe cuentast=n

Registro final SAL CON RET 200 100 061

Observamos que el saldo en el sistema es de 300 (SAL = SAL + CON RET), mientras que el saldo real debe ser 250. Para evitar estas inconsistencias los DBMS conforman sus transacciones atmicamente por medio de seguros (locks) y puntos de sincronizacin (commit/rollback). 5.9 Rutas de acceso. Es la facilidad para obtener diferentes rutas de acceso, por medio de claves primarias y secundarias, pudiendo obtener respuesta a diferentes consultas aplicando diversos criterios de bsqueda.62

6. Software complementario de un DBMSPara poder llevar a cabo su funcin en forma ptima, un DBMS se apoya en: 6.1 Un administrador de la Base de datos (DBA) 6.2 Un diccionario de datos 6.3 Lenguajes de la Base de datos

63

6.1 El administrador de la Base de datos (DBA). El DBA es la persona o equipo de personas que se encarga de mantener en regla el entorno de una Base de datos (BD), para lo cual utiliza el siguiente software: a) b) c) d) e) f) De carga para crear inicialmente la BD. De reorganizacin de la BD (para liberar espacio). De registro de transacciones en bitcora (log). De recuperacin despus de un fallo. De anlisis de estadsticas de desempeo. De manejo de autorizaciones de acceso.

64

6.2 El diccionario de datos. El diccionario de datos es el conjunto de datos que describen la BD, y contiene: a) La descripcin de todos los esquemas (Externo, conceptual e interno). b) La descripcin de todos los campos (o atributos), registros (o tuplas) y referencias cruzadas entre las tuplas de varios archivos (o tablas, varrels o entidades). c) Los cdigos de autorizacin y seguridad de los datos y sus redefiniciones con las que puedan ser referidos con nombres diferentes en programas diferentes.65

6.3 Lenguajes de una Base de datos. Estos lenguajes permiten primero (DDL) describir, y despus (DML) manipular o sea consultar y actualizar la BD. Adems proporcionan interfaces con lenguajes de programacin como Cobol, PL/1, Fortran, C, o Java, ya que los lenguajes de BD no son por si mismos de programacin, excepto por los PSM o mdulos almacenados persistentes.6.3.1 DDL. Con este leguaje nos valemos para describir los esquemas conceptual y externo. El compilador DDL al compilar los esquemas produce el diccionario de datos y los esquemas conceptual y externo. 6.3.2 DML. Con DML nos valemos para insertar, modificar, borrar o seleccionar tuplas o atributos de una BD.66

Las solicitudes en DML son precompiladas (o interpretadas) resultando cdigo de tercera generacin (en Cobol, PL/1, Fortran, C, Java,). Existen dos tipos de DML: a) Procedimental, con el cual el usuario especifica al DBMS, qu quiere y cmo debe hacerlo. b) No procedimental, con el cual el usuario nicamente especifica lo que quiere. SQL es un lenguaje de 4 generacin o sea 4GL (en realidad conformado por DDL y DML), por ser no procedimental. Inicialmente SQL era un sublenguaje pero con la incorporacin de los PSM (Persistent Stored Modules) en 1996, ahora es un lenguaje ms completo. Por lo tanto ya no hay necesidad de combinar SQL con algn lenguaje anfitrin.67

7. Clases de DBMSs. Hasta el da de hoy ha habido cuatro clases de DBMS: Jerrquicos, en Red, Relacionales y de Objetos. Los dos primeros ya han quedado obsoletos, mientras que el modelo relacional se mantiene en vigor todava. Hasta la fecha el modelo de objetos no es ms que una extensin del modelo relacional. Sin embargo, el modelo semntico contiene al modelo relacional, y sin ste, el semntico no existira.

68

7.3 El enfoque relacional. El enfoque relacional, sin lugar a dudas, es el fundamento de la tecnologa moderna de BD, y lo que hace que este campo sea una ciencia. El modelo relacional se ocupa de tres aspectos principales: Su estructura, La manipulacin de datos, La integridad. De aqu en adelante, toda la teora de este curso har referencia exclusiva al enfoque relacional.69

8. El modelo relacional de Bases de datosEl modelo relacional ha evolucionado a partir de lo publicado por Edgar Frank Codd en 1970. El modelo relacional no opera sobre registros individuales como los lenguajes de programacin, sino sobre relaciones completas Las relaciones del modelo relacional equivalen a los archivos de los lenguajes de programacin, a las tablas de SQL, a las entidades del modelo semntico, o a los objetos de los actuales modelos de objetos.70

De acuerdo a las recomendaciones ANSI/SPARC, el modelo est conformado por las siguientes partes: el nivel conceptual, el nivel externo, el nivel interno y el lenguaje de datos. 8.1 Nivel conceptual. Est representado por todo el conjunto de tablas descritas en SQL, cada una de las cuales tiene existencia por si sola, y se traducen en un archivo almacenado a nivel fsico. C. J. Date diferencia una tabla de una varrel. La sentencia SQL para crear una tabla es create table cuyo formato se observa en la siguiente diapositiva.

71

create table nombre-tabla (nom-col1 tipo-dato [not null] tipo-dato [not null] [, nom-col2 [, primary key (nom-col1 [, nom-col2] ) [, foreign key (nom-col-ajena1) references tabla-objetivo1 [, foreing key (nom-col-ajena2) references tabla-objetivo2 ); Ejemplo: Supongamos las relaciones S (proveedores), y P (partes), en donde un proveedor puede haber suministrado varias partes, y una parte puede haber sido suministrada por varios proveedores. Estas tablas (con los mismos datos) sern utilizadas durante todo el curso.72

SS# snombre edo 20 10 30 20 30 ciudad Londres Pars Pars Londres Atenas S1 Salazar S2 Jaimes S3 Bernal S4 Corona S5 Aldana

SPS# S1 S1 S1 S1 S1 S1 S2 pnombre Tuerca Perno Birlo Birlo Leva Engrane color Rojo Verde Azul Rojo Azul Rojo peso 12 17 17 14 12 19 ciudad Londres Pars Roma Londres Pars Londres73

P# P1 P2 P3 P4 P5 P6 P1 P2 P2 P2 P4 P5

cant 300 200 400 200 100 100 300 400 200 200 300 400

PP# P1 P2 P3 P4 P5 P6

S2 S3 S4 S4 S4

Cuando una asociacin es muchos a muchos como se ve en lo subrayado atrs (las reglas del negocio), se requiere una tercera relacin adems de las relaciones S y P, para poder averiguar los proveedores que han suministrado cada parte, y las partes que han sido suministradas por cada proveedor. En este caso, como las reglas del negocio estn en pasado, la historia de envos, SP, puede satisfacer el requisito en cuestin. De este modo, la asociacin entre S y SP es uno a muchos, y entre P y SP uno a muchos tambin. La creacin en SQL de estas tablas est en la siguiente diapositiva.74

create table S (s# char(2) not null, snombre char(10) not null, edo smallint not null, ciudad char(10) not null, primary key (s#)); create table P (p# char(2) not null, pnombre char(10) not null, color char(10) not null, peso smallint not null, ciudad char(12) not null, primary key (p#)); create table SP (s# char(2) not null, p# char(2) not null, cant integer, primary key (s#, p#), foreign key (s#) references S, foreign key (p#) references P);

75

Null es algo indefinido que no es igual a nada, no es igual a cero, no es igual a blanco, ni siquiera es igual a null. Por ejemplo, s# y p# deben tener valores definidos o si no sern rechazados, pero cant debe ser null para cuando no se conozca la cantidad enviada. Para modificar una tabla ya existente, est la sentencia alter table. Si queremos agregar una columna, la sentencia tendra la forma alter table nombre-tabla add nom-col tipo-dato; Ejemplo: alter table S add descuento smallint;

76

Al aadir a la tabla S el atributo descuento, S crece en lo conceptual, pero el nuevo atributo ser nulo, pues esta sentencia no permite especificar not null. Crecer en lo conceptual significa que la expansin de los registros no se da en lo fsico sino que solo se modifica su descripcin en el diccionario de datos. Al introducir un nuevo proveedor s crecer fsicamente, excepto que su descuento siga siendo nulo. Tambin se puede alterar una tabla eliminando o modificando columnas. Una tabla se puede eliminar con drop table que tiene el formato: drop table nombre-tabla;77

8.2 Nivel externo: vistas. En este nivel la BD se percibe como una vista externa propia, o escenario particular a cada usuario. Una vista se crea en SQL con la sentencia create view cuyo formato es create view nombre-vista [(columna [, columna] )] as select columna [,columna] from nombre-tabla where condicin Una vista no existe fsicamente pero en el diccionario de datos si est guardada su definicin. Una vista es un subconjunto de una tabla.78

Ejemplo: Obtener la vista de la tabla P cuyas partes sean de color rojo.create view partes_rojas (codigo, nombre, peso, ciudad) as select p#, pnombre, peso, ciudad from P where color = rojo;

Por medio de las vistas se logra la independencia lgica de los datos. Adems permiten a diferentes usuarios ver los mismos datos, de distintas maneras, al mismo tiempo. Finalmente, las vistas protegen los datos, pues los no visibles para un usuario, estn a salvo de accesos indebidos.79

Una vista se puede borrar del diccionario de datos mediante la sentencia drop que tiene el siguiente formato: drop view nombre-vista 8.3 Nivel interno: ndices. Con las sentencias SQL create index y drop index se crea y se destruye ndices, pero stas son las nicas sentencias que los manejan, pues los DBMS relacionales lo hacen en forma automtica. La sintaxis de la sentencia create index es: create [unique] index nombre-ndice on nombre-tabla (columna [orden] [,columna [orden]]) [cluster] En donde el orden puede asc (ascendente) o desc (descendente).80

La opcin cluster indica que el ndice es de agrupamiento, o sea que los datos para un mismo ndice son reunidos en secuencia fsica igual a la lgica. Ejemplo: create unique index xsp on SP (s#, p# desc) cluster; As se crea el ndice xsp sobre la tabla SP, en el cual las entradas se ordenan segn s# ascendentemente, y segn p# descendentemente. Con unique se asegura que el ndice no se repita. Con la sentencia drop index se destruye un ndice previamente creado. El nivel interno es pues el mismo conjunto de tablas del nivel conceptual, pero almacenadas como archivos indexados.81

El modelo relacional permite as crear, alterar y destruir tablas, vistas e ndices, en cualquier momento, pues es muy tolerante. 8.4 El lenguaje de datos. SQL incluye tanto sentencias de especificacin o descripcin de datos (DDL), como sentencias de manipulacin (DML). SQL tiene fundamentos del lgebra relacional por lo cual en algunos aspectos es procedimental. Tambin del clculo relacional por lo cual en otros aspectos es no procedimental. De ah que para continuar con SQL, sea necesario estudiar lgebra relacional y clculo relacional.82

9. lgebra relacionalEl lgebra relacional deriva del lgebra de conjuntos, por lo cual consta de operandos (que son relaciones) y operaciones sobre relaciones. Cada operacin produce siempre como resultado una nueva relacin y la relacin resultado se puede someter a nuevas operaciones. Las operaciones del lgebra relacional se clasifican en tres categoras: a) Operaciones de conjunto (unin, diferencia, y producto cartesiano). b) Operaciones unarias (proyeccin y seleccin). c) Operaciones adicionales (reunin, interseccin, y divisin). 83

9.1 Operaciones de conjunto. Estas operaciones son binarias ya que operan sobre dos relaciones para producir una tercera relacin. Unin. Construye una relacin formada por todas las tuplas que aparecen en cualquiera de las dos relaciones A y B especificadas. Se puede denotar como A U B, o A unin B.

Lo sombreado es A U B A B

84

Ejemplo

A S# s1 s4 B S# s1 s2

snombre Salazar Corona

edo 20 20

ciudad Londres Londres

snombre Salazar Jaimes

edo 20 10

ciudad Londres Pars

AUB S# snombre s1 s2 s4 Salazar Jaimes Corona

edo 20 10 20

ciudad Londres Pars Londres85

Diferencia. Construye una relacin formada por todas las tuplas de la primera relacin A que no aparezcan en la segunda B, de las dos relaciones especificadas. Se denota A B

A B Lo sombreado es A - B

86

Ejemplo

A S# s1 s4 B S# s1 s2

snombre Salazar Corona

edo 20 20

ciudad Londres Londres

snombre Salazar Jaimes

edo 20 10 B-A S# s2

ciudad Londres Pars

A-B S# s4

snombre Corona

edo 20

ciudad Londres

snombre Jaimes

edo 10

ciudad Pars

87

Producto cartesiano. Construye una relacin a partir de dos relaciones A y B especificadas, que contiene todas las combinaciones posibles de tuplas de cada relacin. Se denota A x B o A times BAxB ax B x y ay bx by cx cy

A a b c

88

Ejemplo. Sean las relaciones S y P de la diapositiva 71. S x P es:SxP S#... P#... s1p1 s1 p2 s1 p3 s1 p4 s1 p5 s1 p6 s2... p1 s2 p2 s2 p3 s2 p4 S x P continuacin s2 p5 s2 p6 s3 p1 s3 p2 s3 p3 s3 p4 s3 p5 s3 p6 s4 p1 s4 p2 s4 p3 S x P continuacin s4 p4 s4 p5 s4 p6 s5 p1 s5 p2 s5 p3 s5 p4 s5 p5 s5 p6

S y P deben ser disyuntos (sin atributos comunes) por lo que se debe renombrar primero la ciudad en S o en P as: S rename ciudad as sciudad;89

9.2 Operaciones unarias. Las operaciones unarias se realizan sobre una relacin y dan como resultado una nueva relacin. Proyeccin. Extrae los atributos especificados de una relacin A dada, eliminando los duplicados. Se denota A[x, y] o x, yA u x v y w

Lo sombreado es la proyeccin sobre x y y, A[x, y] A[u, x, v, y, w] da la proyeccin identidad. A[ ] da la proyeccin nula

90

EjemploS[ciudad] ciudad Londres Pars Atenas P[color, ciudad] color rojo verde azul azul ciudad Londres Pars Roma Pars

91

Seleccin. Extrae las tuplas especificadas de una relacin A dada, que cumple la condicin. Se denota con where condicin o condicinA Lo sombreado es la seleccin A where condicin

Ejemplo1, S where ciudad = 'Londres'S S# s1 s4 snombre Salazar Corona edo 20 20 ciudad Londres Londres92

Ejemplo2, P where peso < 14P# p1 p5 pnombre Tuerca Leva color Rojo Azul peso 12 12 ciudad Londres Pars

Ejemplo3, SP where s# = ' s1 ' and p# = ' p1 'S# P# s1 p1 cant 300

A where c1 and c2 equivale a A where c1 or c2 equivale a A where not c equivale a

(A where c1)(A where c2) (A where c1)U(A where c2) A (A where c)93

9.3 Operaciones adicionales. Son operaciones complementarias que ayudan a simplificar algunas consultas. Reunin (join). Toma dos relaciones que tengan en comn una o ms columnas y crea una nueva relacin concatenando tuplas que coincidan en un mismo valor en una determinada columna. La operacin join realiza el producto cartesiano especificando una condicin, o sea SxPcondicin = S join P Cuando la condicin es diferente a la igualdad, el join se conoce como reunin y se denota S x P, siendo la condicin.94

Cuando la condicin expresa igualdad, el join se llama equireunin. Si a la equireunin se le suprimen las columnas iguales, se llega al producto natural que se denota S * P Si en el producto natural las relaciones no tienen ningn campo en comn, S * P = S x P El producto natural es tan importante que en general S join P se toma S * Pa1 a2 a3 b1 b1 b2 b1 c1 c2 c3 a1 b1 b1 b2 c1 c1 c2

*

b2 b3

=

a2 a3

95

Ejemplo: S join Ps# s1 s1 s1 s2 s2 s3 s3 s4 s4 s4 snombre edo Salazar Salazar Salazar Jaimes Jaimes Bernal Bernal Corona Corona Corona 20 20 20 10 10 30 30 20 20 20 ciudad P# pnombre Tuerca Birlo Engrane Perno Leva Perno Leva Tuerca Birlo Engrane color peso Rojo Rojo Rojo Verde Azul Verde Azul Rojo Rojo Rojo 12 14 19 17 12 17 12 12 14 19 Londres p1 Londres p4 Londres p6 Pars Pars Pars Pars p2 p5 p2 p5

Londres p1 Londres p4 Londres p6

96

Interseccin. Construye una relacin con las tuplas comunes a las dos relaciones especificadas A y B. Se denota como A B o A intersect BLo sombreado es A B o A intersect B

Ejemplo: Si A y B son las relaciones del la diapositiva Su interseccin esAB s# s1 snombre Salazar edo 20 ciudad Londres

83

97

Comprobar que A B = A (A B) = A join B, si los atributos de A y B son comunes. Si no son comunes, A join B = A x B. Divisin. Sea A de grado m+n (m+n columnas) y B de grado n. La divisin entre A y B es el conjunto de tuplas (cociente) de m columnas que concatenadas con las tuplas de B producen tuplas contenidas en A.A a a a b c

x y z x y98

B x z

AB a

Si A es de grado m+n, y B de grado n, y tomando la relacin T = A[1,2,,m], la divisin tambin se puede expresar en funcin de la proyeccin, el producto cartesiano, y la diferencia, as: T = ((T x B) A)[1,2,,m] = A B Ejemplo1: Sea el dividendo A = SP[s#, p#], para los sucesivos divisores mostrados en la siguiente diapositiva, los respectivos cocientes son:

99

B A s# p# s1 s1 s1 s1 s1 s1 s2 s2 s3 s4 s4 s4 p1 p2 p3 p4 p5 p6 p1 p2 p2 p2 p4 p5 B p# p2 p4 B p# p1 p2 p3 p4 p5 p6 p# p1

AB s# s1 s2 AB s# s1 s4

AB s# s1

100

Ejemplos. Las tablas estn en1 Calcular S join SP join P

71

2 Obtener el cdigo de los proveedores de Pars cuyo estado sea > 20. 3 Obtener los nombres de los proveedores que suministran la parte p2 4 Obtener los nombres de los proveedores que suministran todas las partes. 5 Obtener los nombres de los proveedores que no suministran la parte p2. 6 Obtener todas las parejas de nmeros de proveedor, digamos sx y sy, tales que suministren cada una, el mismo conjunto de partes.101

7 Calcular la siguiente expresin algebraica(((SP[s#,p#]) rename s# as sx) ((SP[p#,s#]) rename s# as sy) (((SP[s#,p#]) rename s# as sy) ((SP[p#,s#]) rename s# as sx)

Ejercicios. Las tablas estn en

71

1 Obtener los nombres de los proveedores y su ciudad, cuyo estado es < 20. 2 Obtener los nombres de las partes cuyo color sea azul, o se almacenen en Roma. 3 Obtener los nombres de las partes cuyos envos hayan sido inferiores a 200 unidades. 4 Listar los nombres de los proveedores que hayan suministrado alguna parte, indicando los nombres de las partes, excepto la parte p2. 102

5 Listar los nombres de los proveedores que no hayan suministrado la parte p2, pero si alguna otra parte. 71 6 Listar los nombre de los proveedores que no hayan suministrado la parte p2. 7 Listar los nombres de las partes suministradas por todos los proveedores 7 Listar los nombres de los proveedores que suministran todas las partes 8 Listar el color y el nombre de las partes que no hayan sido an suministradas por algn proveedor. 9 Obtener los envos mayores de 200, indicando el nombre del proveedor, el nombre de la parte y la ciudad desde donde se ha hecho el despacho.103

A

CodigoA 05600 05700 06078 06150 07100 07203 07301

NombreA Rueda Durn Gmez Surez Lpez Prez Ardila

Cred 180 130 180 150 120 160 120

Carrera Civil Elctrica Petrleos Elctrica Sistemas Sistemas Civil

104

M

CodigoM NombreM 1436 Fsica 1520 Clculo 1670 Ondas 1700 Historia 1745 Mecnica 1815 Qumica 1820 Algebra

Cred Requisito 8 120 12 120 8 180 6 0 10 180 10 30 12 0

105

C

CodigoM Horario CodigoA 1520 A1 05700 1520 A1 07100 1670 H1 05600 1670 H1 06078 1700 D1 05600 1700 D1 07203 1815 J1 06078 1815 J2 07100 1815 J2 07301 1820 E1 06150 1820 E1 07100

Nota 4.7 3.9 3.9 3.6 3.8 5.0 4.7 4.8 2.8 4.0 4.1106

10 Sean las relaciones A (alumnos), M (materias), C (cursos) mostradas en las anteriores diapositivas: Obtener el cdigo y el nombre de los estudiantes de Sistemas que tengan ms de 120 crditos. 11 Obtener el cdigo y el nombre de los estudiantes que estn viendo clculo. 12 Obtener el cdigo y el nombre de los estudiantes que no estn viendo historia. 13 Listar las notas de los diferentes estudiantes indicando el nombre de la materia, y el cdigo del estudiante y su nombre. 14 Obtener el cdigo y el nombre de los estudiantes que estn viendo todas las materias. 15 Obtener el cdigo y el nombre de las materias cursadas por todos los estudiantes.107

10. Clculo relacionalSiendo el clculo relacional no procedimental, las operaciones para obtener un relacin deseada a partir de relaciones ya existentes, son implcitas a su notacin. As por ejemplo, para obtener los nombres de los proveedores que suministran la parte p2 (problema #3), una expresin de clculo formula algo como: Obtener el snombre de los proveedores para los cuales exista un envo sp con el mismo valor en s# y con el valor de p2 en p#. En cambio, algebraicamente, este problema exiga explicitar una serie de pasos (un procedimiento) consistente en: primero un join entre S y SP, segundo la seleccin de las tuplas de la parte p2, y tercero la proyeccin del resultado sobre snombre. 108

Note que en clculo, el usuario se limita a expresar las caractersticas que definen el resultado deseado, tocndole al sistema decidir exactamente cules operaciones ejecutar para construir el resultado. Mientras el clculo solo plantea el problema, el lgebra proporciona un procedimiento para resolver ese problema. Una expresin de clculo relacional (de tuplas), tiene la forma {t/P(t)} la cual se lee el conjunto de tuplas t tal que el predicado P se cumple para t. El predicado es la expresin del criterio de seleccin en la recuperacin de los datos. Una expresin se forma con variables (de tuplas), condiciones y cuantificadores.109

10.1 Variables de tuplas. Son variables que recorren las tuplas de una relacin, las cuales son su nico dominio. Se escriben en minscula (t, u, v, ) y su notacin t[nombre-campo] denota el valor de t en el atributo. Sea t la primera tupla de la relacin S mostrada en la diapositiva 71 . Entonces t[s#] = s1 y t[snombre] = Salazar Tambin vale t[1] para indicar el valor del primer atributo en la tupla dada: t[1] = s1 y t[2] = Salazar. Etc Siendo una relacin un conjunto de tuplas, se utiliza la notacin de conjuntos t S para indicar que la tupla t est en S.

110

10.2 Condiciones de comparacin. Estas comparan componentes de tuplas o tuplas enteras, combinando variables y constantes con operadores de comparacin y aritmticos, dando como resultado el valor verdadero o falso, o nulo. Ejemplo: t[1] > t[2], t[3] = 10, t[1] = t[1] + u[2]. 10.3 Condiciones de pertenencia. Se denotan con la notacin S(t), que significa: Si la tupla t pertenece a la relacin S, entonces la condicin S(t) toma el valor verdadero, y falso en caso contrario. 10.4 Condiciones compuestas. Combinan las condiciones de comparacin y las de pertenencia con los operadores lgicos and, or y not, pudiendo ser el resultado verdadero falso.111

Ejemplos: (t[1] > t[2]) and (t[3] = 10) (S(t) or (t[1] > 10) 10.5 Cuantificador existencial. Este se representa por t(Q(t)) y significa que existe una tupla t, tal que cumple la condicin Q(t). Toma el valor verdadero si al menos hay una tupla en la que se cumple la condicin, y falso en caso contrario. 10.6 Cuantificador universal. Se representa por _ Vt(Q(t)), que significa que para todas las tuplas t se cumple la condicin Q(t). Si para todos los valores de la variable t se cumple la condicin, el resultado ser verdadero, y falso en caso contrario. E

112

10.7 Expresiones. En general, una expresin en clculo relacional tiene la forma {t/F(t)} en donde F es una frmula bien formada o WFF (Well Formed Formula), la cual se construye con condiciones, operadores lgicos y cuantificadores. Recursivamente se define que: a) Si F es una frmula bien formada, lo es not F b) Si F y G son frmulas bien formadas, tambin lo son (F and G) y (F or G) 10.8 Tipos de variables de tuplas. En una frmula puede haber diversas variables de tuplas que pueden ser: a)Variables libres si no estn ligadas a un cuantificador b) Variables acotadas si estn unidas a un cuantificador.

113

10.9 Ejemplos. Sean sx, sy y sz variables de tuplas que recorren la relacin S, px, py y pz que reocrren P, y spx, spy, y spz que reocrren SP. Ver tablas en diapositiva 711) Obtener los nmeros de los proveedores de Pars cuyo estado sea mayor que 20 2) Obtener los nombres de los proveedores que suministran la parte p2 3) Obtener los nombres de los proveedores que suministran todas las partes 4) Obtener los nombres de los proveedores que no suministran la parte p2 5) Obtener los nombres de los proveedores que suministran al menos una parte roja.114

Problemas. (tablas en

71

)

1) Obtener los nombres de los proveedores y su ciudad cuyo estado es menor que 20 2) Obtener los nombres de las partes cuyo color sea azul, o se almacenen en Roma 3) Obtener los nombres de las partes con envos inferiores a 200 unidades 4) Listar los nombres de los proveedores que hayan suministrado alguna parte, indicando los nombres de las partes, excepto la parte p2 5) Listar los nombres de los proveedores que no hayan suministrado la parte p2 pero si alguna otra parte 6) Listar los nombres de los proveedores que no hayan suministrado la parte p2115

7) Listar los nombres de las partes suministradas por todos los proveedores. (Tablas en 71 ) 8) Listar el color y los nombres de las partes que no hayan sido an suministradas por algn proveedor 9) Obtener los envos mayores de 200 indicando el nombre del proveedor, el nombre de la parte, y la ciudad desde donde se ha hecho el despacho 10) Sean las relaciones alumnos A , materias M y cursos C : Obtener el cdigo y el nombre de los estudiantes de Sistemas que tengan ms de 120 crditos. 11) Obtener el cdigo y el nombre de los estudiantes que estn viendo clculo 12) Obtener el cdigo y el nombre de los estudiantes que no estn viendo historia116

13) Listar las notas de los diferentes estudiantes indicando el cdigo y el nombre del estudiante, as como el nombre de la materia. Tablas en A M C 14) Obtener el cdigo y el nombre de los estudiantes que estn viendo todas las materias 15 Obtener el cdigo y el nombre de las materias cursadas por todos los estudiantes.

117

11. Lenguajes para el manejo de datos: SQLSi el lgebra y el clculo relacional preparan para el estudio de SQL, SQL prepara y predispone para el estudio de modelar y disear Bases de datos. SQL est constituido por dos grupos de instrucciones: De definicin de datos (DDL) ya estudiadas atrs, y las de manipulacin de datos (DML) SQL ofrece cuatro proposiciones DML para manipular tablas y vistas: Select (seleccionar), Update (actualizar), Delete (eliminar) e Insert (insertar).118

11.1 Consultas simples. Ante todo, el formato de la instruccin select es el siguiente: select [distinct] atributos from relaciones [where condicin] [group by atributos] [having condicin] [order by atributos]; Ejemplos: 1. Obtener el cdigo y el estado de todos los proveedores de Pars (tablas en 71 ): select s#, edo from S where ciudad = Pars;119

El ejemplo anterior tambin pudiera haber sido escrito: select S.s#, edo from S where S.ciudad = Pars; Un nombre calificado de campo se compone de un nombre de tabla (o nombre de variable de recorrido) y un nombre de campo, separados por punto (.) 2. Obtener el cdigo de la parte de todas las partes suministradas: select distinct p# from SP;Probar con y sin la opcin distinct.120

71

3. Obtener de las partes el cdigo de la parte y su peso en gramos (estando en la tabla el peso en libras y siendo una libra igual a 454 grs.): select P.p#, peso en gramos = , peso*454 from P; 4. Obtener todos los datos de los proveedores: select * from S; tambin select s#, snombre, edo, S.ciudad from S;121

71

5. Obtener los cdigos de los proveedores de Pars cuyo estado sea mayor que 20: select s# form S where ciudad = Paris and edo > 20;71

6. Obtener el cdigo y el estado de los proveedores radicados en Pars en orden descendente de estado: select s#, edo from S where ciudad = Paris order by edo desc;122

7. Obtener de las partes, el nmero de parte y su peso en gramos en orden ascendente por el peso en gramos: select P.p#, peso en gramos = , peso *454 from P 71 order by 3; 11.2 Consultas de reunin. Una reunin ocurre cuando la consulta se obtiene de ms de una tabla: 8. Obtener todo de los proveedores y partes que estn situados en la misma ciudad: select S.*, P.* from S, P where S.ciudad = P.ciudad;123

En la anterior consulta se repiten las columnas ciudad, por lo que se llama equireunin simple. 9. Obtener de los proveedores el cdigo, el nombre, el estado, y su ciudad, y de las partes el cdigo, el nombre, el color y su peso, donde los proveedores radiquen en la misma ciudad donde se almacena la parte: select s#, snombre, edo, S.ciudad, p#, pnombre, color, peso from S, P 71 where S.ciudad = P.ciudad; En este resultado no se repiten las columnas ciudad, por lo que se llama equireunin natural.124

10. Obtener todo de los proveedores y partes donde la ciudad del proveedor siga a la ciudad de la parte en orden alfabtico: select S.*, P.* from S, P where S.ciudad > P.ciudad

71

11. Obtener todo de los proveedores y partes que estn en la misma ciudad, pero omitiendo los proveedores cuyo estado sea 20: select S.*, P.* from S, P where S.ciudad = P.ciudad and edo 20;125

12. Obtener todas las parejas de ciudades tal que un proveedor situado en la primera ciudad suministre una parte almacenada en la segunda ciudad: select distinct S.ciudad, P.ciudad from S, SP, P where S.s# = SP.s# and P.p# = SP.p#;

71

13. Obtener todas las parejas de cdigo de proveedor tal que ambos proveedores estn en la misma ciudad: select primera.s#, segunda.s# from S primera, S segunda where primera.ciudad = segunda.ciudad and primera.s# < segunda.s#126

Las anteriores variables primera y segunda son de recorrido sobre la misma tabla S. Adems, la condicin primera.s# < segunda.s# suprime las parejas de la forma (x, x) y deja una sola de las parejas (x, y) (y, x). 11.3 Funciones integradas. Aunque la instruccin select ya es poderosa, no es adecuada por si sola para consultas tan sencillas como cuntos proveedores hay? Para cosas como estas existen las funciones integradas: Count, cuenta el nmero de valores de una columna. Sum, suma los valores de una columna. Avg, promedia los valores de una columna. Max, toma el valor ms grande de una columna. Min, toma el valor ms pequeo de una columna127

1. Obtener la cantidad total de proveedores: select count (*) from S; Count ir con distinct si no debe contar los duplicados. 2. Obtener la cantidad total de proveedores que suministran partes en la actualidad: select count (distinct s#) 71 from SP; 3. Obtener la cantidad de envos de la parte p2: select count (*) from SP where p# = p2;128

4. Obtener la cantidad total suministrada de la parte p2: select sum (cant) from SP where p# = p2; 5. Obtener el cdigo de parte y la cantidad total suministrada de cada parte: select p#, sum(cant) from SP 71 group by p#; 6. Obtener los cdigos de partes suministradas por ms de un proveedor: select p# from SP group by p# having count (*) > 1;129

La clusula having siempre va con group by pues trabaja con grupos lo mismo que where con las tuplas. Cmo sera la respuesta sin having? 11.4 Caractersticas avanzadas de select. 1. Obtener todas las partes cuyos nombres comiencen con la letra b select P.* 71 from P where pnombre like b%; Los atributos usados en like deben ser de tipo char o graphic. El comodn _ representa cualquier carcter individual. % representa cualquier cadena de caracteres. Los dems caracteres se representan as mismos. Tambien se puede usar not like (diferente a)130

2. Supongamos que el proveedor s5 tiene un nulo en el campo edo, en lugar de 30. Obtener el cdigo de los proveedores cuyo estado sea mayor que 25: select s# from S 71 where edo > 25; El resultado ser s3 porque en s5 el resultado es desconocido, pues edo no es > 25, ni edo es < 25, ni edo es = 25, ni edo es 25, ni edo es = null, ni edo es null. Para detectar la presencia de nulos habra que decir: select s# from S where edo is null;131

3. Obtener los nombres de los proveedores que suministran la parte p2: select snombre from S where s# in (select s# from SP where p# = p2); select snombre from S where s# in (s1, s2, s3, s4); select snombre fron S, SP where S.s# = SP.s# and SP.p# = p2;

71

132

4. Obtener los nombres de los proveedores que suministren por lo menos una parte roja select snombre from S where s# in (select s# from SP where p# in (select p# from P where color = rojo)); select distinct S.snombre from S, SP, P where S.s# = SP.s# and P.p# = SP.p# and P.color = rojo;133

71

5. Obtener el cdigo de los proveedores situados en la misma ciudad que el proveedor s1: select s# from S where ciudad = (select ciudad 71 from S where s# = s1); Si el resultado de una subconsulta es exactamente un valor se puede utilizar un operador como =, >, etc, en vez de in. 6. Obtener los cdigos de los proveedores cuyo estado sea menor que el valor mximo actual de estado: select s# from S where edo < (select max(edo) from S);134

7. De nuevo, obtener los nombres de los proveedores que suministran la parte p2. select snombre from S where exists 71 (select * from SP where s# = S.s# and p# = p2); Nota: exists es el cuantificador existencial que implica una bsqueda. As para cada snombre en S se busca en SP una tupla que satisfaga la condicin de la subconsulta.E135

8. Obtener los nombres de los proveedores que no suministran la parte p2. select snombre from S where no exists (select * from SP where s# = S.s# and p# = p2); select snombre from S where s# not in (select s# from SP where p# = p2);136

71

9. Obtener los nombres de los proveedores que suministran todas las partes. select snombre from S where not exists (select * 71 from P where not exists (select * from SP where s# = S.s# and p# = P.p#)); Da lo mismo decir no existe una condicin en un conjunto que todo el conjunto cumple la no condicin. Por ejemplo no existen partes que no estn en envos es igual a todas las partes estn en envos. not exists no es igual, aqu, a not in porque las subconsultas sobre P y SP no dan conjuntos definidos de valores. En general in se puede expresar con exists pero no al contrario.137

10. Obtener los cdigos de los proveedores que suministran por lo menos todas las partes suministradas por el proveedor s2. select distinct s# from SP spx where not exists (select * from SP spy where s# = s2and not exists ( select * from SP spz where spz.s# = spx.s# and spz.p# = spy.p#));

71

138

11. Obtener los cdigos de las partes que pesen ms de 16 libras o sean suministradas por el proveedor s2, o las dos cosas. select p# from P where peso > 16 union select p# from SP where s# = s2;

71

139

12. Obtener los cdigos de las partes que pesen ms de 16 libras y sean suministradas por el proveedor s2. select p# from P where peso > 16 intersect select p# from SP where s# = s2;

71

140

13. Obtener los cdigos de las partes que pesen ms de 16 libras que no sean suministradas por el proveedor s2. select p# from P where peso > 16 minus select p# from SP where s# = s2;

71

11.5 Proposiciones de actualizacin. update tabla set campo = expresin [, campo = expresin] [where condicin];141

1.Cambiar a amarillo el color de la parte p2, aumentar su peso en 5, e indicar que su ciudad es desconocida (null). update P set color = marillo, peso = peso + 5, ciudad = null 71 where p# = p2;Si se omitiera la clusula where se modificaran todas tuplas de la tabla.

142

2. Duplicar el estado de todos los proveedores de Londres update S set edo = 2*edo where ciudad = Londres; 3. Poner en ceros la cantidad enviada por todos los proveedores de Londres update SP set cant = 0 where Londres = (select ciudad from S where S.s# = SP.s#);71

143

4. Cambiar el cdigo del proveedor s2 a s9. update S set s# = s9 where s# = s2; update SP set s# = s9 where s# = s2;

71

Con update solo se puede actualizar una tabla, siendo entonces necesarios tantos update como tablas se deseen modificar. Por lo tanto cada update, insert delete ponen en peligro cada vez la integridad referencial.144

insert into tabla [(campo [, campo] )] values (literal [, literal] );

insert into tabla [(campo [,campo] )] subconsulta;En el primer formato se inserta en la tabla una tupla tal que a cada campo de la tabla le corresponda un literal, en el mismo orden. En el segundo formato se evala la subconsulta y se insertan las tuplas del resultado en la tabla. La i-sima columna del resultado es el i-simo campo de la tabla. Omitir la lista de campos equivale a especificar todos los campos de la tabla de izquierda a derecha.145

1. Aadir la parte p7 (ciudad Atenas, peso 24, nombre y color desconocidos) a la tabla P. insert into P (p#, ciudad, peso) values (p7, Atenas, 24);El nombre y el color se crean nulos asumiendo que en create table no se hubiera especificado not null.71

2. Aadir la parte p8 con nombre cadena, color rosa, peso 14 y ciudad Niza, a la tabla P. insert into P values (p8, cadena,rosa, 14, Niza);146

3. Insertar un nuevo envo con cdigo de proveedor s20, cdigo de parte p20, y cantidad 1000. insert into SP (s#, p#, cant) 71 values (s20, p20, 1000);Esto causara problemas con la integridad referencial si antes no se inserta el proveedor s20 en S, y la parte p20 en P.

delete from tabla [where condicin];147

1. Eliminar el proveedor s5. delete from S where s# = s5;Este resultado tambin violara la integridad referencial si en SP hubiese un envo de s5.

2. Eliminar todos los envos cuya cantidad sea mayor que 300. 71 delete from SP where cant > 300;

148

3. Eliminar todos los embarques. delete from SP;Este resultado deja la tabla vaca. Con drop se eliminara tambin la tabla.

4. Eliminar todos los envos de los proveedores situados en Londres. 71 delete from SP where Londres = (select ciudad from S where S.s# = SP.s#);149

5. Eliminar todos los proveedores que no hayan suministrado partes rojas. delete from S where not exists (select * 71 from SP where S.s# = SP.s# and SP.p# in (select p# from P where color = rojo));Cuando se usa el SQL embebido dentro de un lenguaje husped, es necesario usar ciclos y cursores para apuntar a cada tupla, por la des-adaptacin de impedancias entre SQL y los lenguajes de tercera generacin, pues estos solo entienden registros por vez y no tablas.150

Problemas 1.Obtener los nombres de los proveedores y su ciudad, cuyo estado sea menor que 30. 71 2. Obtener los nombres de las partes cuyo color sea azul, o se almacenen en Roma. 3. Obtener los nombres de las partes con envos inferiores a 200 unidades. 4. Listar los nombres de los proveedores que hayan suministrado alguna parte, indicando los nombres de las partes, excepto el de la parte p2. 71 5. Listar los nombres de los proveedores que no hayan suministrado la parte p2 pero si alguna otra parte.151

6. Listar los nombres de los proveedores que no hayan suministrado la parte p2. 71 7. Listar los nombres de las partes suministradas por todos los proveedores. 8. Listar el color y el nombre de las partes, que no hayan sido an suministradas por algn proveedor 9. Obtener los envos mayores de 200 indicando el nombre del proveedor, el nombre de la parte, y la ciudad desde donde se ha hecho el despacho. 10. Sumar 5 a la cantidad enviada por todos los proveedores de tuercas. 71 11. Eliminar todos los proveedores que hayan suministrado partes verdes almacenadas en Pars.152

12. Insertar el proveedor de cdigo s20, nombre Ulloa, estado 10, y residente en Girn. 71 13. Sean las tablas A alumnos, M materias y C cursos. Obtener el cdigo y el nombre de los estudiantes de sistemas que tengan ms de 120 crditos. 14. Obtener el cdigo y el nombre de los estudiantes que estn viendo clculo. 15. Obtener el cdigo y el nombre de los estudiantes que no estn viendo historia. 16. Listar las notas de los estudiantes cuyo promedio sea mayor o igual a 3.8, agrupando y ordenando ascendentemente por cdigos de estudiante, indicando su cdigo, su nombre, su promedio, y el nombre de cada materia.153

17. Obtener el cdigo y el nombre de los estudiantes que estn viendo todas las materias. 18. Obtener los cdigos de los estudiantes que estn viendo alguna materia vista por el estudiante de cdigo 07100.A

19. Sumar 0.5 a la nota de clculo obtenida por todos los estudiantes de sistemas.M

20. Eliminar todos los estudiantes que hayan obtenido notas inferiores a 1.0 en lgebra.C

21. Insertar la materia con cdigo 1900, deportes, de 2 crditos y sin requisitos.154

12. Diseo de Bases de datos: El modelo relacional y la normalizacinCmo poder conseguir las relaciones o tablas ms adecuadas a las exigencias de un problema real? Y cmo poder determinar los atributos que deben pertenecer a cada una de estas relaciones o tablas? En general, Cmo plantear un conjunto conceptual de relaciones con el cual mantener todos los datos de una empresa, con un mnimo de redundancia, pero al mismo tiempo con la mayor facilidad para su actualizacin y recuperacin? Para resolver estos interrogantes hay dos caminos:155

Uno intuitivo y natural que se aproxima a objetos en cuanto determina la estructura de las tablas (los atributos que les pertenecen y las identifican), pero no su funcionalidad. Este camino produce, relaciones bastante normales por si solas. El otro camino aunque extrao es ms oficial, y es el seguido en este captulo. Parte de una mezcla anormal de todos los atributos posibles en una misma relacin, la cual es llamada la relacin universal. Por este motivo es necesario hacer normal (normalizar) la relacin universal, mediante una serie de pasos de descomposicin. As pues, la normalizacin consiste en descomponer tablas aislando atributos y reagrupndolos en nuevas relaciones que se parezcan ms a objetos de la vida real. 156

12.1 La relacin universal. Supongamos que se desea implantar una Base de datos (simplificada al extremo) para el suministro de partes a una empresa. Los datos (atributos) a mantener son los siguientes: La identificacin del proveedor (s#), el nombre del proveedor (snombre), el estado del proveedor (edo), la ciudad donde reside el proveedor (ciudad), la cantidad suministrada por el proveedor en cada envo (cant), la identificacin de cada parte (p#), el nombre de cada parte (pnombre), su color (color), su peso (peso), y la ciudad en donde se almacena la parte (ciudad). Todos estos atributos arreglados en una misma tabla produce la relacin universal (U).157

Us# snombre edo 20 ciudad cant p# pnombre p1 tuerca p2 perno p3 birlo p4 birlo p5 leva p6 engrane p1 tuerca p2 perno p2 perno p2 perno p4 birlo p5 leva 200 400 200 100 100 s2 Jaimes s3 Bernal s4 Corona 10 30 20 Pars Pars 300 400 200 300 400 Londres 200 color rojo azul rojo azul rojo rojo peso 12 17 14 12 19 12 ciudad Londres Pars Roma Londres Pars Londres Londres Pars Pars Pars Londres Pars158

s1 Salazar

Londres 300

verde 17

verde 17 verde 17 verde 17 rojo azul 14 12

La principal anormalidad de la relacin U consisten en que para cada proveedor se abre una lista de partes enviadas, por lo cual los atributos cant, p#, pnombre, color, peso y ciudad, no son atmicos, o sea que se pueden dividir en varias sub-tuplas. Adems, en algunas tuplas los atributos s#, snombre, edo y ciudad no quedan definidos, pero en otras tuplas si. As, con DDL no podra ser creada la tabla U expresando null y simultneamente not null, en estos atributos. La correccin de las anteriores anomalas normalizar la relacin U, resultando una nueva relacin que se suele llamar la relacin 1NF (First Normal Form).159

12.2 La primera forma normal (1NF).

Una relacin est en primera forma normal cuando el valor de sus atributos en cada tupla es atmico.En otras palabras, en la interseccin de cada tupla con cada columna, siempre hay exactamente un valor, nunca un conjunto de valores. Entonces, para obtener la 1NF es necesario determinar valores nicos o atmicos en cada interseccin. As, la relacin U queda transformada en la relacin 1NF que se muestra en la siguiente diapositiva. Para las explicaciones subsiguientes, se ha incluido el atributo fecha, y el estado de s3 se ha cambiado de 30 a 10. Adems, es necesario repasar los conceptos de claves y dependencia funcionales.160

1NFs# s1 s1 s1 s1 s1 s1 s2 s2 s3 s4 s4 s4 snombre Salazar Salazar Salazar Salazar Salazar Salazar Jaimes Jaimes Bernal Corona Corona Corona edo 20 20 20 20 20 20 10 10 30 20 20 20 ciudad cant fecha 10/5 10/8 11/9 p# p1 p2 p4 pnombre tuerca perno birlo birlo leva engrane tuerca perno perno perno birlo leva color rojo verde azul rojo azul rojo rojo verde verde verde rojo azul peso 12 17 17 14 12 19 12 17 17 17 14 12 ciudad Londres Pars Roma Londres Pars Londres Londres Pars Pars Pars Londres Pars Londres 300 Londres 200 Londres 400 Londres 200 Londres 100 Londres 100 Pars Pars Pars 300 400 200

10/12 p3 11/15 p5 11/18 p6 10/7 10/2 11/3 11/8 p1 p2 p2 p4 10/10 p2

Londres 200 Londres 300 Londres 400

11/10 p5

161

12.3 Qu es una dependencia funcional (DF)? El concepto de dependencia funcional viene de las matemticas, y significa que si el valor de una variable y est siempre determinado por el valor de otra variable x, se dice que y est en funcin de x, y se denota y = f(x). Entonces, dados dos atributos A y B de una relacin R, B ser funcionalmente dependiente de A si para cada valor de A existe un valor de B y solo uno, o sea que al conocer el valor de A se podr conocer el valor de B. Esto se denota tambin A B. A y B deben pertenecer a la misma relacin pues no tiene sentido la dependencia funcional entre atributos de diferentes relaciones.162

Al analizar las dependencias funcionales de los atributos entre si, se encontrarn atributos simples o compuestos cuyos valores son nicos, y entonces pueden ser usados para identificar las tuplas de una relacin. Tales atributos se llaman claves. Existen diferentes clases de claves. 12.3.1 Clave candidata. Es cualquier atributo simple o compuesto que puede ser utilizado para identificar las tuplas de una relacin, por lo que su valor debe ser nico an en el caso de ser compuesto. 12.3.2 Clave principal. Es la clave candidata elegida como identificador, en la que ningn componente puede tomar el valor nulo. Toda relacin debe tener una calve principal. 12.3.3 Clave fornea. Tambin llamada clave ajena o clave externa, es un campo de una relacin que acta como clave principal en otra relacin.163

12.3.4 Clave alterna. Es la clave candidata que no es clave principal. Como s# es nico en S, es una clave candidata. Si snombre fuera nico, tambin sera una clave candidata. Si se elige s# como clave principal, snombre sera una clave alterna. Toda relacin tiene al menos una clave candidata ya que ninguna relacin puede contener tuplas repetidas. Los dems atributos no clave deben depender funcionalmente de la clave candidata. 12.4 Normalizacin de la relacin 1NF. La relacin 1NF tiene una estructura indeseable. Para apreciar esto se utilizan los llamados diagramas de dependencias funcionales o diagramas DF. El diagrama DF para la relacin 1NF es el siguiente:164

Diagrama DF de la relacin 1NFsnombre2 3

edo5

s# cant1

4

ciudad p# fecha6 7 8 9

pnombre color peso ciudad

165

Sobre el diagrama DF anterior vemos que la nica clave candidata es el atributo compuesto (s#, p#, fecha). En una relacin normal cualquier atributo no clave debe depender funcionalmente de la clave candidata, pero esto no se cumple en la relacin 1NF. El nico atributo que depende por completo de la clave candidata es cant pero los dems no, como se ve en el diagrama DF. Si hay atributos no clave que no dependen de la clave candidata, entonces para qu la clave candidata? Sin embargo, se ve cierta dependencia no completa de los restantes atributos a la clave candidata: flechas 2, 3, 4, 6, 7, 8, 9.166

Una dependencia funcional completa se define cuando un atributo B depende funcionalmente de A, pero no de ningn subconjunto propio de A. Por ejemplo, snombre depende de la clave candidata (s#, p#, fecha) pero no completamente porque tambin depende de s# solo. Estas otras dependencias diferentes a la clave candidata hacen anormal la relacin 1NF, generando redundancias obvias: Por ejemplo, todas las tuplas con s# = s1 indican que la ciudad es Londres; y las tuplas con ciudad de proveedor = Londres indican que el estado (edo) es 20. Estas redundancias provocan las conocidas anomalas de actualizacin, que son problemas surgidos al actualizar la Base de datos con insert, delete o update.167

La primera redundancia se origina por la dependencia no completa s# ciudad (flecha4) y causa que no se pueda insertar (insert) un nuevo proveedor hasta que no suministre al menos una parte. De ah que en la relacin 1NF no se haya podido incluir el proveedor s5 situado en Atenas, pues sin un suministro no se puede tener una valor apropiado para la clave primaria. Adems, al eliminar (delete) la nica tupla de un cierto proveedor se perder no solo la informacin del envo sino tambin la del proveedor. De ah que al eliminar la tupla cuyo s# = s3 se eliminen los datos del envo pero tambin los del proveddor en los que dice que s3 est en Pars. El problema radica en que la relacin 1NF contiene demasiados datos y as, al eliminar una tupla de elimina demasiado.168

La solucin a este problema es desempacar, o sea separar los datos de envos en una relacin y los de proveedores en otra. As pues, la normalizacin es un proceso de desempaque que coloca datos separados en relaciones separadas. Igualmente, no se puede actualizar (update) la relacin 1NF sin tener que recorrer todas sus tuplas para evitar las inconsistencias. Por ejemplo, si el proveedor s1 se cambia de Londres a Amsterdam. La correccin de todas estas anormalidades transforma la relacin 1NF en un conjunto de relaciones en segunda forma normal (2NF), en las cuales los datos quedan desempaquetados al eliminar las dependencias funcionales no completas.169

12.5 La segunda forma normal (2NF).

Una relacin est en segunda forma normal (2NF) si y solo si est en 1NF y todos sus atributos no clave dependen por completo de la clave principal.Se puede ver que las siguientes relaciones corresponden a las relaciones 2NF, en las cuales, s es posible incluir datos del proveedor s5 aunque no haya hecho envos. Adems, las redundancias han desaparecido y se pueden aplicar operaciones insert, delete y update sin los problemas ya vistos.

170

SS# snombre edo ciudad S1 Salazar S2 Jaimes S3 Bernal S4 Corona S5 Aldana 20 Londres 10 Pars 10 Pars 20 Londres 30 Atenas

SPS# S1 S1 S1 S1 S1 S1 pnombre Tuerca Perno Birlo Birlo Leva Engrane color Rojo Verde Azul Rojo Azul Rojo peso 12 17 17 14 12 19 ciudad Londres Pars Roma Londres Pars Londres171

P# P1 P2 P3 P4 P5 P6 P1 P2 P2 P2 P4 P5

fecha 10/5 10/8 10/12 11/9 11/15 11/18 10/7 10/10 10/2 11/3 11/8 11/10

cant 300 200 400 200 100 100 300 400 200 200 300 400

PP# P1 P2 P3 P4 P5 P6

S2 S2 S3 S4 S4 S4

Finalmente es posible apreciar en la relaciones 2NF que las dependencias funcionales son completas, como se muestra en los diagramas DF a continuacin: SP2

snombre s# p# fecha1

Ss# cant

3 4

edo5

P

ciudad p#6 7 8 9

pnombre color peso ciudad172

Las relaciones 2NF representan mejor el mundo real que la relacin 1NF y cualquier informacin derivable de sta lo ser tambin de las relaciones 2NF, aunque lo contrario no se cumple. Por ejemplo, el proveedor s5 no puede ser representado en la relacin 1NF. 12.6 Normalizacin de las relaciones 2NF. Aunque las relaciones P y SP son satisfactorias, la relacin S tiene todava una dependencia mutua entre sus atributos no clave (flecha 5 en el diagrama DF de la 2NF). En trminos ms especficos, la dependencia del atributo edo con respecto a s#, aunque es funcional y completa, es transitiva a travs de ciudad.173

Si en una relacin R, R.A R.B y R.B R.C, por transitividad R.A R.C Por causa de la transitividad no se puede insertar (insert) el estado de una ciudad hasta que no haya un valor no nulo para la clave s#. Por ejemplo, no se puede insertar Roma con edo 50, si no hay un proveedor all. Tampoco se puede eliminar (delete) una tupla sin perder ms datos de la cuenta. Por ejemplo, si se elimina Aldana se pierde la ciudad Atenas y tambin el hecho de que a Atenas le corresponde el estado 30. Como S todava tiene redundancias es necesario recorrerla toda al actualizar (update) algo, para no dejar inconsistencias. Por ejemplo, si a Londres se le cambia el estado de 20 a 40.174

La correccin de la transitividad transforma la

relacin S en dos relaciones 3NF, las cuales desempaquetan ms datos eliminando las dependencias transitivas.

12.7 Tercera forma normal (3NF).

Una relacin est en tercera forma normal (3NF) si y solo si est en segunda forma normal (2NF) y todos los atributos no clave dependen de manera no transitiva de la clave principal.175

SS# S1 S2 S3 S4 S5 snombre Salazar Jaimes Bernal Corona Aldana ciudad Londres Pars Pars Londres Atenas

Cciudad Atenas Londres Pars Roma edo 30 20 10 50

Ahora s es posible incluir el estado 50 para Roma. Se puede eliminar Aldana sin borrar los datos de Atenas. Las redundancias desaparecieron bastando modificar el estado de Londres en una sola tupla.176

As, las dependencias transitivas han desaparecido, como se puede observar en los diagramas DF para las relaciones S y la nueva relacin C (ciudad): Ss#4

2

snombre ciudad

Cciudad edo

Si en 3NF se puede representar datos que en 2NF no se poda, 3NF representa mejor el mundo real que 2NF.

177

12.8 Forma Normal de Boyce & Codd (BCNF). Pero, la 3NF originalmente debida a Codd, no satisface el caso en el cual una relacin tiene: a) Varias claves candidatas b) Claves candidatas compuestas c) Claves candidatas traslapadas Por esto, la definicin original de 3NF se sustituy por una definicin ms adecuada que tuviese en cuenta el caso abc. Pero como Ronald Fagin ya haba definido la 4NF, la nueva 3NF no se pudo llamar 4NF sino Forma Normal de Boyce & Codd o BCNF.

Las condiciones abc casi no se dan en la prctica ycuando no existen, BCNF se reduce a la antigua 3NF.178

Cuando un atributo depende por completo de otro atributo, ste determina al primero y se le llama un determinante. Por ejemplo, el snombre y la ciudad del proveedor dependen por completo de s# en la relacin S. Tambin el pnombre, el color, el peso y la ciudad de las partes dependen por completo de p# en P. Igualmente en SP, la cantidad enviada depende por completo de (s#, p#, fecha). Y en C, el estado depende por completo de ciudad. Por lo tanto, s#, p#, (s#, p#, fecha) y ciudad son todos determinantes en sus respectivas relaciones.179

Una relacin est en forma normal de Boyce y Codd (BCNF), si y solo si todo determinante es una clave candidata. Esta definicin es ms sencilla que la antigua 3NF puesto que no hace referencia explcitamente a la 1NF, ni a la 2NF, ni a la dependencia transitiva. De acuerdo a esta definicin, las relaciones S, P, SP y C, estn en 3NF, pero tambin en BCNF. Pero la relacin 1NF (ver su diagrama DF) contiene 4 determinantes, s#, p#, ciudad y (s#, p#, fecha), de los cuales solo (s#, p#, fecha) es clave candidata, y por esto que la relacin 1NF n est en BCNF.180

Tampoco las relaciones en 2NFestn en BCNF porque ciudad es determinante pero no es clave candidata (ver el respectivo diagrama DF). Las relaciones S, P, SP, y C por el contrario, estn todas en BCNF porque en todos los casos la clave principal es el nico determinante en cada relacin. Pero consideremos ahora un caso en que haya varias claves candidatas (sin atributos comunes). Supongamos que en la relacin S cada s# tiene un nombre nico. Entonces el diagrama DF sera:s# ciudad snombre181

Ahora, aunque hay varias claves candidatas, los nicos determinantes son dichas claves candidatas, o sea que las nicas flechas son las que salen de las claves candidatas, lo cual significa que la relacin S est en BCNF. Consideremos ahora la relacin estudiante (E) para el caso en que haya varias claves candidatas que se traslapan (que tienen atributos comunes). Supngase que E tiene los atributos cdigo de estudiante (ce), nit (n#), cdigo de carrera (cc) y promedio (p), es decir, E(ce, n#, cc, p). Las claves candidatas son (ce, cc) y (n#, cc). Est E en BCNF? No porque contiene dos determinantes, ce y n#, que no son claves candidatas, pero si se determinan el uno al otro.182

La relacin E est en 3NF porque ningn atributo no clave es transitivamente dependiente de la clave principal, y el atributo no clave (p) es totalmente dependiente de la clave principal, ya sea (ce, cc) (n#, cc). Sin embargo, E no est en BCNF. Admtase la relacin E con los siguientes datos:ce071 071 071 072 072

n# ccn1 n1 n1 n2 n2 10 11 12 10 13

p3.7 3.9 3.5 3.8 3.3183

Puede verse que la relacin E contiene el mismo tipo de redundancias vistas atrs y por lo tanto est sujeta al mismo tipo de anomalas de actualizacin. La solucin es normalizar la relacin E, es decir, descomponer la relacin en dos proyecciones, que en este caso seran las proyecciones Estudiantes (E) y Promedios (P), de la siguiente manera: E(ce, n#) y P(ce, cc, p) o bien E(ce, n#) y P(n#, cc, p). En la siguiente diapositiva se muestran de la relacin E, los diagramas DF, primero en 3NF pero n en BCNF, y segundo en BCNF.184

ce cc n#Diagrama DF de E en 3NF pero no en BCNF

p

ce ce n# ccDiagrama de E en BCNF185

p

12.9 Cuarta Forma Normal (4NF). A veces se presentan en la vida real, relaciones muy singulares, en las cuales no es posible identificar las dependencias funcionales convencionales. Por ejemplo, sea la relacin con los atributos curso, profesor, texto, por lo cual se puede denominar la relacin CPT (curso, profesor, texto). Se puede observar que: Dado un curso, no se puede saber, ni el profesor, ni el texto, porque un curso puede ser dictado por varios profesores y utilizar varios textos. Tambin que, dado un profesor, no se puede saber, ni el curso, ni el texto, porque un profesor puede dictar varios cursos, y utilizar varios textos.186

Finalmente que, dado un texto, no se puede saber, ni el curso, ni el profesor, porque un texto puede ser utilizado por varios profesores en distintos cursos. Al tabular algunos datos, la relacin CPT no normalizada se vera as: CPTcurso Fsica profesor Rosas Ramos Matemticas Rosas texto Mecnica ptica Mecnica ptica Mecnica Vectores Funciones187

La nica operacin normalizadora disponible sera aplanar la relacin CPT, de la siguiente manera: CPTcurso Fsica Fsica Fsica Fsica Matemticas Matemticas Matemticas profesor Rosas Rosas Ramos Ramos Rosas Rosas Rosas texto Mecnica ptica Mecnica ptica Mecnica Vectores Funciones

188

Las redundancias que muestra la relacin CPT lleva a anomalas de actualizacin, a pesar de que CPT est en BCNF al ser toda clave. Pero no se puede utilizar DF para descomponer CPT ya que no existen DF. Solo hasta 1977 Ronald Fagin estableci el concepto de dependencias multivaluadas (DMV), con el cual es posible normalizar la relacin CPT. Una DMV es una generalizacin de DF, ya que toda DF es una DMV, aunque no al contrario. En CPT se puede considerar las siguientes DMV:CPT.curso CPT.profesor CPT.curso CPT.texto189

La primera DMV significa que aunque un curso no es determinante de un profesor, de cualquier manera un curso determina un conjunto muy bien definido de profesores. De la misma manera se interpreta la segunda DMV.

Una relacin est en 4NF si y solo si est en BCNF y no contiene dependencias multivaluadas (DMV). Aunque de CPT no se puede eliminar las DMV, s se puede descomponer para eliminar las redundancias y las anomalas de actualizacin.190

En general, una relacin R(A, B, C) con las DMV, AB, y AC, se puede descomponer sin prdidas en R1(A, B) y R2(A, C). De ah que la relacin CPT se haya descompuesto en las relacioes CP (curso, profesor) y CT (curso, texto), o sea: CT CPCurso Fsica Fsica Matemticas Profesor Rosas Ramos Rosas Curso Fsica Fsica Matemticas Matemticas Texto Mecnica ptica Mecnica Vectores

Matemticas Funciones191

Al ir ms all de esta descomposicin, para este caso, se salta a la conversin de cada uno de los atributos de CP y CT en relaciones individuales, cada una, a su vez, con sus propios atributos. O sea las relaciones: C (cursos) con sus propios atributos, P (profesor) con sus propios atributos, y T (textos) con sus propios atributos. Al concebir, en otra alternativa, entidades normales en lugar de relaciones anormales susceptibles de ser descompuestas, el diseo de una BD puede ajustarse mejor a un mundo real compuesto de objetos, ya que una entidad es una aproximacin a un objeto,

192

En el siguiente captulo se tratar el modelo semntico, en el cual se habla de entidades mas no de relaciones, por lo que al modelo semntico tambin se le llama modelo entidad/relacin.

193

Taller 1-12: Analizar las DF de las relaciones Bancos (B), Cuentas (C), Cheques (Ch) y Transacciones (T).Bnit nombre telefono saldo

Ccuenta# retiros consignaciones saldo nit

Chcheque# Valor_ch Fecha_ch cuenta#

Ttr fecha_tr horatr usuatr valortr cheque#

194

Taller 2-12: Analizar las DF de las relaciones Depositarios (D), Contratos (C), Hatos (H) y Ventas (V).Dcedula nombre_d val_con_d telef_d

Ccontra# fechac clasec valorc cedula

Hcontra# nombre_h cab_h kilos_h

Vcontra# nombre_h fechav valorv cabv kilosv

195

13 El Modelo semntico o modelo E/R.

E/R = Entity (Entidad), Relacin o Tabla E/R = Vnculo o interrelacin, NO Relacin

Modelo semntico = {entidades, interrelaciones}

196

13.1 Las reglas lgicas o reglas del negocio:Reglas del Negocio describen las polticas, normas, operaciones, definiciones y restricciones presentes en una organizacin. Las organizaciones funcionan siguiendo mltiples reglas de negocio, explcitas o tcitas, que estn embebidas en procesos, aplicaciones informticas, documentos, etc. Pueden residir en la cabeza de algunas personas o en el cdigo fuente de programas informticos. En las reglas del negocio se esconde el modelo E/R: Los sustantivos pertinentes al negocio son entidades y/o atributos de las entidades (rectngulos) Los verbos son interrelaciones (flechas, rombos, tringulos o recuadros) Las restricciones (la correspondencia entre entidades y su cardinalidad) sern las restricciones de dominio y de integridad En la siguiente URL se encuentra el manifiesto de las reglas del negocio:http://www.businessrulesgroup.org/brmanifesto/BRManifiesto%5Bv1%5B1%5D.0%5D.pdf197

Las

13.2 Entidades e interrelacionesUna entidad es aproximadamente un objeto, con: Identidad (clave primaria) Estructura (atributos) Pero sin funcionalidad o comportamiento Al igual que un objeto, una entidad puede ser concreta como un cliente, una factura, una materia, o abstracta como un concepto.

Una entidad se representa por un rectngulo:

198

Una interrelacin es un enlace entre entidades y describe: Asociacin: Oficina y representante Generalizacin: Cliente, representante Agregacin: Pedido y producto (tem), Computador, pantalla y teclado Una interrelacin es representada por flechas y rombos, tringulos y recuadros.

199

13.3 Grado de las interrelacionesEs el nmero de entidades participantes en la interrelacin, y puede ser binario directo, binario indirecto o n-ario.

Entidad 1

Entidad 2

Entidad 1

vnculo

Entidad 2

grado binario directo

grado binario indirecto

Entidad 1

Entidad 2

entidad n

vnculo

grado n-ario

200

13.4 Correspondencia de las interrelacionesExpresa el nmero de tuplas que de una entidad corresponden a las de otra entidad. La correspondencia de la cardinalidad puede ser Una a una, 1:1 Una a muchas, 1:N Muchas a muchas (grado dos), M:N Muchas a muchas a muchas (grado tres), etc. L:M:N Una a una. Es cuando a cada tupla de la entidad 1 le corresponde a lo sumo una tupla de la entidad 2, y a cada tupla de la entidad 2 le corresponde a lo sumo una tupla de la entidad 1 1:1oficina director

201

Una a muchas. Es cuando a cada tupla de una entidad 1 le corresponden varias tuplas de una entidad 2, pero a cada tupla de la entidad 2 le corresponde a lo sumo una tupla de la entidad 1. 1:Nclientes pedidos

Muchas a muchas (grado dos). Es cuando a cada tupla de una entidad 1 le corresponde varias tuplas de una entidad 2, y a cada tupla de la entidad 2 le corresponde varias tuplas de la entidad 1. M:Nclientes productos

202

Muchas a muchas a muchas (grado tres), etc. Es cuando a cada tupla de una entidad 1 le corresponde varias tuplas de una entidad 2 y varias tuplas de una entidad 3, y a cada tupla de la entidad 2 le corresponde varias tuplas de la entidad 1 y varias tuplas de la entidad 3, y a cada tupla de la entidad 3 le corresponde varias tuplas de la entidad 1 y varias tuplas de la entidad 2. L:M:Nclientes repventas

productos

13.5 Cardinalidad de las interrelacionesEn todas las correspondencias anteriores, adems se considera la cardinalidad misma que expresa un mnimo y un mximo de tuplas que de una entidad le corresponden a cada tupla de la otra, o de las otras entidades. Se acostumbra anotar como un par entre parntesis: (mnimo, mximo).203

13.6 Diagramas E/R (Entity/Relationship) El diagrama E/R es sacado de las reglas del negocio, pero esta fuente no es suficiente y es necesario completar con otras fuentes como la investigacin organizacional y el descubrimiento de requisitos. Un elemento de la ingeniera del software es la especificacin de requisitos o ingeniera de requisitos. sta ingeniera es una gua para extraer, analizar, especificar y validar los requisito