Documente Academic
Documente Profesional
Documente Cultură
Copyright 2003-2005, todos los derechos reservados por Rogelio Cesar Rodriguez Cervantes
Informacion de contacto: e-mail 1 : cesarrdz@gmail.com e-mail 2 : cesarrdz@excite.com Sito web: http://cesar.crbyte.com Visita: http://cesar.crbyte.com para mas tutoriales de C++, lenguaje C, programas con codigo fuente, etc. http://crbyte.com para juegos de computadora que puedes bajar gratis
Contenido
I. Fundamentos de base de datos 1.1 Objetivos de los sistemas de bases de datos 1.2 Abstraccin de la informacin 1.3 Modelo de datos 1.4 Instancias y esquemas 1.5 Independencia de los datos 1.6 Lenguaje de definicin de los datos 1.7 Lenguaje de manejo de datos 1.8 Manejador de la base de datos 1.9 Administrador de la base de datos 1.10 Usuarios de la base de datos 1.11 Estructura general del sistema II. Modelo entidad-relacion 2.1 Entidades y conjunto de entidades 2.2 Relaciones y conjunto de relaciones 2.3 Limitantes de mapeo 2.4 Llaves primarias 2.5 Diagramas entidad-relacin 2.6 Reduccin de diagramas E-R a tablas 2.7 Generalizacin y especializacin 2.8 Agregacin III. Modelo relacional 3.1 Estructura de la base de datos relacionales 3.2 Lenguaje formal de consulta 3.3 Lenguaje comercial de consulta 3.4 Modificacin de la base de datos 3.5 Vistas IV. Diseo de base de datos relacionales 4.1 Riesgos en el diseo de base de datos relacionales 4.2 Normalizacin por medio de dependencias funcionales 4.3 Normalizacin por medio de valores mltiples 4.4 Normalizacin por medio de dependencias de producto
Proposiciones en DDl
Compilacion
Conjunto de tablas
El conjunto de tablas Se almacena en un archivo llamado diccionario de datos, este archivo contiene meta datos, es decir, datos a cerca de los datos. Este archivo se consulta antes de actualizar los datos reales en la base de datos.
Consultas
Procesador de consultas
S. M. B. D.
II Modelo Entidad-Relacin
Definicin Se basa en una percepcin de un mundo real que consiste en un conjunto de objetos bsicos llamados entidades y de relaciones entre estos objetos. Una de las caractersticas de este modelo es que permite representar con claridad las limitantes de los datos. El modelo Entidad-Relacin es en esencia una herramienta para representar el mundo real por medio de simbologas y expresiones determinadas
2. Dependencia de existencia Nos permiten definir que un conjunto de entidades esta condicionado a la existencia de otro. Un ejemplo de este condicionamiento se da entre una entidad alumno y la entidad calificacin. A esta limitante se le denomina dependencia por existencia. Si una entidad Y requiere de una entidad X para existir se dice que Y es dependiente por existencia de X; esto implica que si eliminamos a la entidad X; deber eliminarse la entidad Y. Para el caso anterior, se nombrara a X como la entidad dominante, y a Y como entidad subordinada.
Nota: ncred y clave son las llaves primarias. Las entidades dbiles no pueden ser conocidas por s solas; con el objeto de diferenciarlas se seleccionan algunos de sus atributos para formar un discriminador. Este discriminador se asocia con las llaves primarias de las entidades fuertes a las que se encuentre subordinada para formar as su llave primaria propia. Los conjuntos de relaciones tambin tienen llaves primarias. Estas se conforman por las llaves primarias de los conjuntos de entidades que se asocian en la relacin y todos los atributos descriptivos de la relacin.
1: m uno a muchos
m : 1 muchos a uno
n: m muchos a muchos
Ejemplos:
control alumno
nombre am
am control
nmero
desc
materia
numer o materia numero desc
10
saldo 60000
cuenta
ISA
cta-ahorros
Cuenta num-cta 01 02
cta-cheques
tipo-cta 1 2
tasa-interes 20 ---
saldo --60000
Especializacin Es el inverso de la generalizacin. hace resaltar la distincin entre los conjuntos de entidades de alto nivel y de bajo nivel. los atributos son lo que los distinguen. Esto se realiza mediante la herencia de atributos. Se dice que los conjuntos de entidades de bajo nivel heredan los atributos de los conjuntos de entidades de alto nivel. Ejemplo: cuenta-ahorros y cuenta-cheques heredan los atributos de cuenta. la especializacin permite la posibilidad de que una entidad cuenta no sea ni una entidad cuenta-cheques ni una entidad cuenta-ahorros. cuenta num-cta 01 02 tipo-cta 1 2 tasa-inters 20 --saldo --60000
11
ISA
cta-ahorros
cta-cheques
tasa-interes 20
saldo 60000
La generalizacin y la especializacin se representan por medio de un componente tringulo marcado "isa" es un (a), en ingls "is a" y representa, que una cuenta de ahorros "es una" cuenta. Se distingue por el grosor de la lneas que conectan el tringulo "isa".
12
X U -
Descripcin Elegir Proyectar Producto cartesiano Unin Diferencia PRSTAMO nom-suc centro perifrico sur norte CUENTA nun-cuenta 100 150 num-prstamo 15 25 30 35 saldo 6000 9000 nom-cliente Lpez Jimnez Gutirrez Salas importe 1500 2000 2500 2000
13
( nom-cliente ( 1 nom-suc = "centro " ( DEPOSITO ))) U ( nom-cliente ( 1 nom-suc = " centro " ( PRSTAMO ))) Resultado : Lpez
14
A-B
A-B
Todo lo que esta en A pero que no esta en B ( nom-cliente ( 1 nom-suc = "centro" ( DEPOSITO ))) ( nom-cliente ( 1 nom-suc = "centro" ( PRSTAMO))) Resultado: Ramos.
La estructura bsica de una expresin en S.Q.L. se compone de tres clusulas que son las siguientes: SELECT ( ELEGIR ) FROM ( DE ) WHERE ( DONDE ) SELECT Corresponde a la operacin de proyeccin del lgebra relacional. FROM Es una lista de tablas que se van a examinar durante la ejecucin de una expresin. WHERE Corresponde al predicado de seleccin del lgebra relacional.
15
La forma de una consulta en S.Q.L. equivale a la expresin del lgebra relacional siguiente : ( A1,A2,...,An ( Tp ( r1 X r2 X r3 X ... X rn.)) UNION Una unin permite consultar los resultados de dos o mas tablas en una sola salida; cuando los resultados de las tablas son semejantes (muestran la misma informacin) se suprimen las salidas redundantes, operando asi como una unin de conjuntos. SELECT <lista de campos> FROM <tabla1> WHERE <condicion1> UNION SELECT <lista campos2> FROM <tabla2> WHERE <condicion2> LIKE Consulta por coincidencia parcial en cadenas SELECT <nombre _ campo> FROM <tablas> WHERE <campo char> LIKE <cadena de coincidencia> caracteres validos en <cadena de coincidencia> "-" un carcter cualquiera. "%" una secuencia de caracteres cualquiera. Ejemplos en S.Q.L. Ejemplo 1 Hacer una consulta que muestre solamente los nombres de sucursales de la tabla DEPOSITO. Solucin: SELECT num-suc FROM deposito Ejemplo 2 Hacer una consulta que muestre los nombres de los clientes que tienen una cuenta de deposito en la sucursal centro. Solucin: SELECT nom-cliente FROM deposito WHERE num-suc = " centro " Ejemplo 3 Nombre de los clientes que tengan una cuenta de deposito, un prstamo o ambas cosas en la sucursal centro. Solucin: ( SELECT nom-cliente FROM deposito WHERE nom-suc. = " centro " ). UNION ( SELECT nom-cliente FROM prstamo WHERE nom-suc. = " centro " ). Ejemplo 4
16
Ejemplo 6 Encontrar el nombre del cliente y la ciudad donde viven todos aquellos que tengan un prstamo en la sucursal centro. Solucin : SELECT clientes.nom-clientes, ciudad FROM prestamo, clientes WHERE (clientes.nom-clientes = prstamo.nom-clientes) AND (nom-suc = "centro" ) Conectores en S.Q.L. Permiten comparar un solo valor con los miembros de todo un conjunto 1. in 2. any 3. all IN Verifica si pertenece a una tabla. Donde la tabla es un grupo de valores producidos por la clusula SELECT. Ejemplo Encontrar los nombres de clientes que tienen prstamo en la sucursal centro y tienen cuenta de deposito. SELECT nom-cliente FROM prstamo WHERE nom-suc = "centro" AND nom-cliente IN ( SELECT nom-cliente FROM deposito WHERE nom-suc = "centro" ) Resultado : Lpez
ANY Verifica que el valor de la tupla sea por lo menos un miembro de todos los valores del conjunto.
17
Solucin : SELECT nom-suc FROM sucursal WHERE ciudad <> "Torreon" AND activo > any ( SELECT activo FROM sucursal WHERE ciudad = "Torren" ) La comparacin > any en la clusula WHERE del SELECT externo es verdad si el activo de la tupla es mayor que por lo menos un miembro del conjunto de todos los valores del activo de la ciudad de Torren. ALL Verifica que el valor es igual/mayor/menor que todos los miembros de todos los valores del conjunto. Ejemplo Se modifica ligeramente la consulta anterior, si se buscan todas las soluciones que tengan un activo mayor que todas las sucursales de Torren. SELECT nom-suc FROM sucursal WHERE ciudad <> "Torren" AND activo >
all
Funciones de S.Q.L. standard: 1. AVG Promedio 2. MAX Mximo 3. MIN Mnimo 4. COUNT # de tuplas ORDER BY Hace que las tuplas en el resultado de una consulta aparezcan en orden de menor a mayor. Ejemplo SELECT nom-cliente FROM prstamo ORDER BY nom-cliente GROUP BY Sirve para formar grupos, las tuplas que tengan el mismo valor para un atributo se colocan en grupo.
18
19
20
3.5 Vistas
Son una especie de tablas virtuales; es decir no existen fsicamente sino que forman mediante la seleccin y/o filtrado de los componentes de otras tablas, una vista puede ser definida en base a una vista previa. Esto significa que pueden crearse dependencia entre las vistas. Formato de definicin de vistas DEFINE VIEW <nombre vista> [(identif_campo1, identif_campo2,...)] AS <operacin de consulta> Ejemplo: se desea crear una vista para obtener los nombres y domicilios de los clientes adultos es deseable el establecimiento de las cabeceras nombre del cliente, domicilio del cliente. DEFINE VIEW cliente_adulto (nombre del cliente, domicilio del cliente) AS (SELECT nombre,domicilio FROM clientes WHERE estado = 'adulto') Como puede verse, la especificacin de los identificadores es opcional; si estos se omiten se asumiran los nombres de los campos extrados en la consulta. La operacin de consulta permite todos los formatos validos de consulta en SQL con execepcin del group by. Cuando una vista es definida en base a otra, se se dice que es dependiente de esta por lo tanto, se suprimira automticamente la vista dependiente si se suprime la vista original. Eliminacin de vistas Drop view <nombre tabla> Ejemplo: suponga que se desea crear una vista dependiente de la vista cliente adulto que contenga solamente a los clientes que viven sobre forjadores. Se desean los mismos campos y la vista sera llamada cliente_adulto_forjadores. DEFINE VIEW cliente_adulto_forjadores AS (SELECT * FROM cliente_adulto WHERE domicilio_del_cliente LIKE 'forjadores%') DROP VIEW cliente_adulto (se eliminara tambien la vista cliente_adulto_forjadores, puesto que es dependiente de cliente_adulto.) La eliminacin de una tabla provoca tambien la eliminacin automatica de todas las listas que se hayan definido haciendo referencia a ella.
21
Ejemplo 1 EMPLEADO (NUM_EMP, APELLIDO, NOMBRE, PUESTO, SALARIO) Es: APELLIDO = f(NUM_EMP) ? (Es apellido funcionalmente dependiente de NUM_EMP?, No, Pueden haber varios empleados con el mismo apellido) Ejemplo 2 ARTICULO (NUM_PROV, NUM_ART, COSTO) Dependencia funcional: COSTO = F(NUM_PROV, ARTICULO)
22
Primera forma normal Definicin formal: Una relacin R se encuentra en 1FN si y solo s por cada rengln columna contiene valores atmicos. Abreviada como 1FN, se considera que una relacin se encuentra en la primera forma normal cuando cumple lo siguiente: 1. Las celdas de las tablas poseen valores simples y no se permiten grupos ni arreglos repetidos como valores, es decir, contienen un solo valor por cada celda. 2. Todos los ingresos en cualquier columna (atributo) deben ser del mismo tipo. 3. Cada columna debe tener un nombre nico, el orden de las columnas en la tabla no es importante. 4. Dos filas o renglones de una misma tabla no deben ser idnticas, aunque el orden de las filas no es importante. Por lo general la mayora de las relaciones cumplen con estas caractersticas, as que podemos decir que la mayora de las relaciones se encuentran en la primera forma normal.
23
Ntese que las llaves primarias estn representadas con doble cuadro, las flechas nos indican que de estos atributos se puede referenciar a los otros atributos que dependen funcionalmente de la llave primaria. Dependencia transitiva: En una afinidad (tabla bidimensional) que tiene por lo menos 3 atributos (A,B,C) en donde A determina a B, B determina a C pero no determina a A. Tercera forma normal Consiste en eliminar la dependencia transitiva que queda en una segunda forma normal, en pocas palabras una relacin esta en tercera forma normal si est en segunda forma normal y no existen dependencias transitivas entre los atributos, nos referimos a dependencias transitivas cuando existe ms de una forma de llegar a referencias a un atributo de una relacin. Por ejemplo, consideremos el siguiente caso:
Tenemos la relacin alumno-cursa-materia manejada anteriormente, pero ahora consideramos al elemento maestro, grficamente lo podemos representar de la siguiente manera:
24
Podemos darnos cuenta que se encuentra graficado en segunda forma normal, es decir que todos los atributos llave estn indicados en doble cuadro indicando los atributos que dependen de dichas llaves, sin embargo en la llave Necono tiene como dependientes a 3 atributos en el cual el nombre puede ser referenciado por dos atributos: Necono y RFC (Existe dependencia transitiva), Para convertirla a tercera forma normal hay que en eliminar las dependencias transitivas separando los atributos, entonces tenemos:
Forma normal de Boyce Codd Determinante: Uno o ms atributos que, de manera funcional, determinan otro atributo o atributos. En la dependencia funcional (A,B)-->C, (A,B) son los determinantes. Denominada por sus siglas en ingles como BCNF; Una tabla se considera en esta forma si y slo s cada determinante o atributo es una llave candidato. Continuando con el ejemplo anterior, si consideramos que en la entidad alumno sus atributos control y nombre nos puede hacer referencia al atributos esp., entonces decimos que dichos atributos pueden ser llaves candidato. Grficamente podemos representar la forma normal de Boyce Codd de la siguiente forma:
25
Suponemos que los estudiantes pueden inscribirse en varias especialidades y en diversos cursos. El estudiante con clave S01 tiene su especialidad en sistemas y Bioqumica y toma los cursos de Natacin y danza, el estudiante B01 tiene la especialidad en Bioqumica y toma el curso de Guitarra, el estudiante con clave C03 tiene la especialidad de Civil y toma el curso de natacin. En esta tabla o relacin no existe dependencia funcional porque los estudiantes pueden tener distintas especialidades, un valor nico de clave puede poseer muchos valores de especialidades al igual que de valores de cursos. Por lo tanto existe dependencia de valores mltiples. Este tipo de dependencias produce redundancia de datos, como se puede apreciar en la tabla anterior, en donde la clave S01 tiene tres registros para mantener la serie de datos en forma independiente lo cual ocasiona que al realizarse una actualizacin se requiera de demasiadas operaciones para tal fin. Existe una dependencia de valores mltiples cuando una afinidad tiene por lo menos tres atributos, dos de los cuales poseen valores mltiples y sus valores dependen solo del tercer atributo, en otras palabras en la afinidad R (A,B,C) existe una dependencia de valores mltiples si A determina valores mltiples de B, A determina valores mltiples de C, y B y C son independientes entre s. En la tabla anterior Clave determina valores mltiples de especialidad y clave determina valores mltiples de curso, pero especialidad y curso son independientes entre s. Las dependencias de valores mltiples se definen de la siguiente manera: Clave ->->Especialidad y Clave>->Curso; Esto se lee "Clave multidetrmina a Especialidad, y clave multidetermina a Curso" Para eliminar la redundancia de los datos, se deben eliminar las dependencias de valores mltiples. Esto se logra construyendo dos tablas, donde cada una almacena datos para solamente uno de los atributos de valores mltiples. Para nuestro ejemplo, las tablas correspondientes son: Tabla Especialidad Clave S01 B01 C03 Tabla ECurso Especialidad Sistemas Bioqumica Civil
26
Quinta forma normal Definicin formal: Un esquema de relaciones R est en 5FN con respecto a un conjunto D de dependencias funcionales, de valores mltiples y de producto, si para todas las dependencias de productos en D se cumple por lo menos una de estas condiciones: * (R1, R2, R3, ... Rn) es una dependencia de producto trivial. * Toda Ri es una superllave de R. La quinta forma normal se refiere a dependencias que son extraas. Tiene que ver con tablas que pueden dividirse en subtablas, pero que no pueden reconstruirse
27