Sunteți pe pagina 1din 27

Tutorial de Base de Datos Relacionales

por Cesar Rodriguez


Este tutorial es gratuito, puedes distribuirlo libremente siempre que sea en forma gratuita y en forma completa sin alteracin alguna. La distribucin en cualquier medio de este tutorial comercialmente queda estrictamente prohibida sin consentimiento por escrito del autor.

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

Base de datos relacionales


4.5 Forma normal de dominio-llave 4.5 Valores atmicos Bibliografia Fundamentos de base de datos Henry F. Korth Abraham Silberschatz McGraw Hill

Base de datos relacionales

I Fundamentos de base de datos


Definicin de Base de Datos Conjunto de archivos relacionados entre si, sin redundancias perjudiciales y diseados para servir a una aplicacin de la mejor manera posible. DBMS (DataBase management System) Sistema Manejador de Base de Datos Un DBMS consiste de una base de datos y un conjunto de aplicaciones (programas) para tener acceso a ellos. El objetivo primordial de una DBMS es crear un ambiente en el que sea posible almacenar y recuperar informacin en forma eficiente y conveniente.

1.1 Objetivo de los sistemas de base de datos


1. Evitar redundancia e inconsistencia de datos 2. Facilidad para tener acceso a los datos 3. Implementar la seguridad en los datos 4. Permitir en forma simple la modificacin de los archivos

1.2 Abstraccin de la informacin


Para ocultar la complejidad de las estructuras de datos se deben definir varios niveles de abstraccin. 1. Nivel fsico Este es el nivel mas bajo de abstraccin, en el que se describe como se almacenan realmente los datos 2. Nivel conceptual Se describe a toda la base de datos en trminos de unas cuantas estructuras sencillas 3. Nivel de visin Nivel de abstraccin mas alto, en el cual se describe solamente una parte de la base de datos. El sistema puede proporcionar muchas vistas diferentes de la misma base de datos

1.3 Modelos de datos


Es un grupo de herramientas conceptuales para describir los datos, sus relaciones, su semntica y sus limitantes. Grupos de modelos de datos a) Lgicos basados en objetos Se utilizan para describir los datos en los niveles conceptual y de visin se caracterizan por el hecho de que hacen posible especificar claramente las limitantes de los datos. b) Lgicos basados en registros Se utilizan para describir los datos en los niveles conceptual y de visin A diferencia de los modelos de datos basados en objetos, estos modelos no permiten especificar en forma clara las limitantes de los datos. Ejemplos: 1. Relacional 2. Redes 3. Jerrquico c) Fsicos de los datos Sirven para describir los datos en el nivel mas bajo de abstraccin.

Base de datos relacionales 1.4 Instancias y esquemas


Instancia Conjunto de informacin almacenado en la base de datos en cierto momento. Esquema Diseo general de la base de datos Los esquemas se dividen de acuerdo con los niveles de abstraccin mencionados a) Esquema fsico b) Esquema conceptual c) Sub-Esquemas

1.5 Independencia de los datos


Es la capacidad de modificar una definicin de esquema en un nivel sin obligar a que se vuelvan a escribir los programas de aplicaciones. Tipos de independencia de datos a) Independencia fsica Capacidad de modificar el esquema fsico sin obligar a que se vuelvan a escribir los programas de aplicaciones. b) Independencia lgica Capacidad de modificar el esquema conceptual sin obligar a que se vuelvan a escribir los programas de aplicacin.

1.6 Lenguaje de definicin de datos (DDL)


Forma parte de un manejador de base de datos, es un lenguaje especial que sirve para definir un esquema de base de datos por medio de una serie de definiciones.

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.

1.7 Lenguaje de manejo de datos (DML)


Los niveles de abstraccin tambin se aplican al manejo de los datos; esta manipulacin consiste en: a) La recuperacin de informacin almacenada en la base de datos. b) La insercin de informacin nueva en la B.D. c) La eliminacin de inf. en la B.D. Tipos de DML a) De procedimientos Necesitan que el usuario especifique cuales datos quiere y como deben obtenerse. b) Sin procedimientos Requiere que el usuario especifique cuales datos quiere sin especificar como obtenerlos.

Base de datos relacionales 1.8 Manejador de base de datos


a) Definicin b) Objetivo c) Caractersticas a) Definicin Un manejador de la B.D. es un modulo de programas que constituye la interfaz entre los datos de bajo nivel almacenados en la B.D. y los programas de aplicaciones. Manejador de Base de Datos DDL, DML, LC, Reporteadores, Utileras Lenguaje de consulta (LC) Sirve para realizar consultas a la B.D. de manera muy sencilla. b) Objetivo Crear un ambiente en el cual se pueda recuperar la informacin de forma conveniente y eficiente. c) Caractersticas 1. Interaccin con el manejador de archivos: El manejador de B.D. se encarga realmente del almacenamiento, recuperacin, y actualizacin de los datos en la B.D., funciones que normalmente realiza el Sistema Operativo. 2. Implementacin de la integridad: Los valores de los datos almacenados en la B.D. deben satisfacer las limitantes de consistencia. 3. Puesta en practica de la seguridad: No es preciso que todos los usuarios de la B.D, tengan acceso a todo su contenido, es labor del manejador que se cumplan los requisitos de seguridad. 4. Respaldo y recuperacin: Un sistema de computo como cualquier otro dispositivo mecnico u electrnico esta sujeto a fallas, en caso de una falla se pierde informacin de la B.D. es responsabilidad del manejador detectar las fallas y restaurar la B.D. 5. Control de concurrencia Es necesario que el sistema controle la interaccin entre los usuarios concurrentes; lograr dicho control tambin es tarea del manejador. El uso de un manejador de B.D. que cumpla con todas estas caractersticas se justifica cuando se manejan grandes volmenes de inf. en un equipo multiusuario o en una red.

1.9 Administrador de la base de datos


Definicin Es una persona que tiene control sobre el sistema de base de datos. Funciones del administrador 1. Definicin de esquema: Creacin del esquema original de la base de datos. 2. Definicin de la estructura de almacenamiento y mtodos de acceso. 3. Modificacin del esquema y de la organizacin fsica. 4. Concesin de autorizacin para el acceso a los datos. 5. Especificacin de las limitantes de integridad.

Base de datos relacionales 1.10 Usuarios de la base de datos


Existen tres tipos de usuarios y se distinguen por el modo de que interactan con el sistema y son los siguientes: - Usuarios casuales: Interactan con el sistema sin escribir programas, escriben sus consultas utilizando el lenguaje de consultas. - Usuarios Ingenuos: Interactan con el sistema llamando alguno de los programas de aplicaciones ya escritos. - Usuarios especializados: Son aquellos que escriben aplicaciones para la B.D. muy complejas. Ejemplo: Diseo por computadora, sistemas expertos, etc.

1.11 Estructura general de una B. D. (Multiusuario)


Usuarios Programadores Usuarios ingenuos de aplicaciones Casuales Programas de aplicaciones Llamadas al sistema Administrador de la B. D. Esquema de la B. D.

Consultas

Precompilador de lenguaje de manejo de datos Codigo objeto de los programas de aplicacion

Procesador de consultas

Precompilado r de lenguaje de definicion de datos

Manejador de datos Manejador de Aarchivos

S. M. B. D.

Archivo de datos Diccionario de datos

Base de datos relacionales

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.1 Entidades y conjunto de entidades


Entidad Es un objeto que existe y puede distinguirse de otros objetos. Se compone de un conjunto de atributos - identifica en forma nica un objeto. - puede ser concreta, por ejemplo: una persona o un libro. - puede ser abstracta, por ejemplo: un da festivo o un concepto. Conjunto de entidades Es un grupo de entidades del mismo tipo - una entidad puede ser una materia. - un conjunto de entidades puede ser la retcula de sistemas. - las entidades pueden estar en diferentes conjuntos a la vez. - una entidad materia puede pertenecer al conjunto retcula de administracin. Atributos Una entidad esta representada por un conjunto de atributos. - los posibles atributos de la entidad materia pueden ser nmero de materia y nombre. - para cada atributo existe un rango de valores permitidos, llamados dominio del atributo. Ejemplo: - nombre solo puede contener nombre de materias menor a 30 caracteres. - nmero solo nmeros positivos.

2.2 Relaciones y conjunto de relaciones


Relacin Asociacin entre varias entidades, tambin puede tener atributos.

Conjunto de relaciones Grupo de relaciones del mismo tipo.

Base de datos relacionales 2.3 Limitantes de Mapeo


El modelo E-R permite definir una serie de limitantes aplicables en la informacin contenida en la base de datos bsicamente, pueden definirse dos tipos de limitantes 1. Cardinalidad del mapeo Es aquella mediante la cual puede especificarse la cantidad de entidades que podrn asociarse mediante una relacin. La CARDINALIDAD del mapeo se aplica generalmente sobre dos conjuntos de entidades. Cardinalidades a) 1:1 Una a una Una entidad de A puede asociarse nicamente con una entidad de B b) 1:m Una a muchas Una entidad de a puede asociarse con cualquier cantidad de entidades de B c) m:1 Muchas a una Cualquier cantidad de entidades de A puede asociarse con una entidad de B. d) m:m Muchas a muchas Cualquier cantidad de entidades de a puede asociarse con cualquier cantidad de entidades en B Ejemplo: UNA A UNA UNA A MUCHAS MUCHAS A UNA Alumnos Tesis Carreras Alumnos Alumnos Carreras A B A B A B MUCHAS A MUCHAS Alumnos Materias A B

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.

2.4 Llaves primarias


Uno de los procesos de mayor relevancia en la manipulacin de una base de datos es el de distinguir entre las diversas entidades y relaciones que son manipuladas. Entendemos como una llave al medio que nos permite identificar en forma unvoca (nica e inequvoca) a una entidad dentro de un conjunto de entidades.

Base de datos relacionales


Tipos de llaves a) Sper-llave Es un conjunto de atributos mediante los cuales es posible reconocer a una entidad. Este tipo de llaves contiene comnmente atributos ajenos; es decir; atributos que no son indispensables para llevar a cabo el reconocimiento del registro. Ejemplo: Conjunto de entidades: Cursos Atributos Sper llaves *Nombre materia Nombre, mat, carrera, semestre *Carrera Nombre, mat, carrera, unidades *Semestre Nombre, mat, carrera, semestre, periodo *Periodo Nombre, mat, carrera *Unidades -Si el conjunto de atributos X es una sper llave entonces cualquier conjunto de X ser sper-llave. b) Llave candidato Son aquellas sper llaves que no contienen atributos ajenos; es decir, aquellos conjuntos de atributos que no tienen un subconjunto menor que pueda considerarse como sper llave. c) Llave primaria Es aquella llave que el diseador de la base de datos selecciona entra las llaves candidatos encontradas. Forma principal de identificar a las entidades dentro de un conjunto de estas. Entidad dbil Conjunto de entidades que no tiene suficientes atributos para formar una llave primaria. Entidad fuerte Es una entidad que cuenta con una llave primaria. Ejemplo:

Fuerte NCred Nom Dir Tel

Dbil Fecha Dias

Fuerte Clave Titulo Clasif

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.

Base de datos relacionales 2.5 Diagrama E-R: (Entidad-Relacin)


Representacin de la estructura lgica general de una b.d. 1. Rectngulos que representan conjunto de entidades. 2. Elipses que representan atributos. 3. Rombos que representan conjunto de relaciones. 4. Lneas que conectan a los atributos con los conjuntos de entidades y a los conjuntos de entidades con los conjuntos de relaciones. Tipo de relacin entre archivos 1:1 uno a uno

1: m uno a muchos

m : 1 muchos a uno

n: m muchos a muchos

Ejemplos:

nombre num-cte clientes domicilio cc num-cta cuenta saldo

control alumno

nombre am
am control

nmero

desc

materia
numer o materia numero desc

alumno contro nombr l e

10

Base de datos relacionales 2.6 Reduccin de los diagramas E-R a tablas


Una base de datos que se ajuste a un diagrama e-r , puede representarse por medio de un conjunto de tablas. para cada conjunto de entidades y de relaciones en la base de datos, existe un tabla nica que recibe el nombre de conjunto de entidades o de relaciones correspondientes. cada tabla tiene un nmero de columnas, que tambin tienen nombres nicos.

2.7 Generalizacin y especializacin


Generalizacin Es el resultado de la unin de dos o ms conjuntos de entidades de bajo nivel para producir un conjunto de entidades de ms alto nivel. Se utiliza para hacer resaltar las semejanza entre los tipos de entidades de bajo nivel y para ocultar sus diferencias. cta-ahorros num-cta 01 cta-cheques num-cta 02 tasa-interes 20

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

Base de datos relacionales


cuenta

ISA

cta-ahorros

cta-cheques

cta-ahorros num-cta 01 cta-cheques num-cta 02

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

Base de datos relacionales

III Modelos de datos relacional


3.1 Estructura de las bases de datos
Una B.D. relacional consiste en un conjunto de tablas las cuales tienen asignado un nombre nico. En este modelo los datos y sus relaciones se representan por medio de tablas. En terminologa relacional una fila en una relacin representa un registro o una entidad; Cada columna en una relacin representa un campo o un atributo.

3.2 Lenguajes formales de consulta


lgebra relacional Lenguaje de consulta de procedimientos que cuenta con cinco operaciones fundamentales. Operador


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

Operacin elegir ( ) Consiste en escoger tuplas que satisfagan cierto predicado.

nom-suc = "centro" (prstamo)


Resultado: centro 15 Lpez 1500

13

Base de datos relacionales


Operacin proyectar ( ) Consiste en mostrar solo ciertas columnas de una tabla.

num-prestamo, nom-cliente (prstamo).


Resultado: 15 Lpez 25 Jimnez 30 Gutirrez 35 Salas Ejemplo:

nom-cliente (importe > 1500 (prstamo))


Resultado: Jimnez Gutirrez Salas Operacin producto cartesiano (X). Consiste en crear otra tabla a partir del producto cartesiano de 2 tablas. Ejemplo: a1 b1 a1 b2 a1 b1 A = a2 B = A X B = a2 b1 a3 b2 a2 b2 a3 b1 a3 b2 PRSTAMO X CUENTA nom-suc num-prestamo Centro Centro Perifrico Perifrico Sur Sur Norte Norte 15 15 25 25 30 30 35 35

nom-cliente Lpez Lpez Jimnez Jimnez Gutirrez Gutirrez Salas Salas

importe 1500 1500 2000 2000 2500 2500 2000 2000

numcuenta 100 150 100 150 100 150 100 150

saldo 6000 9000 6000 9000 6000 9000 6000 9000

om-suc = "centro" ( PRSTAMO X CUENTA )


Operacin Unin ( U ) Consiste en crear otra tabla a partir de la unin de dos tablas. DEPOSITO nom-suc centro sur norte centro num-cuenta 300 305 310 315 nom-cliente Ramos Flores Aguero Lpez saldo 150 450 500 200

( nom-cliente ( 1 nom-suc = "centro " ( DEPOSITO ))) U ( nom-cliente ( 1 nom-suc = " centro " ( PRSTAMO ))) Resultado : Lpez

14

Base de datos relacionales


Ramos Operacin Diferencia ( - ) Consiste en encontrar las tuplas que estn en una tabla pero que no estn en otra. Ejemplo: A B A B

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.

3.3 Lenguaje de Consulta Comercial


S.Q.L. ( Structured Query Lenguaje ) S.Q.L. Se introdujo como lenguaje de consulta del sistema R, es una combinacin del lgebra relacional y construcciones del calculo relacional.

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

Base de datos relacionales


Forma de una consulta en S.Q.L. SELECT A1, A2.,An. FROM r1, r2.,rn. WHERE p1,p2,...,pn. A: r: p: Representan atributos. Representan tablas. Representan predicados.

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

Base de datos relacionales


Nombre de los clientes que tienen tanto un prstamo como una cuenta de deposito en la sucursal centro. Solucin : ( SELECT nom-cliente FROM deposito WHERE nom-suc = "centro" ) INTERSECT ( SELECT nom-cliente FROM prstamo WHERE nom-suc = "centro" ) Ejemplo 5 Nombre de clientes de la sucursal centro que tienen cuenta de deposito ah pero que no han recibido prstamo en ese sucursal. Solucin : ( SELECT nom-cliente FROM deposito WHERE nom-suc = "centro" ) MINUS ( SELECT nom-cliente FROM prstamo WHERE nom-suc = "centro" ) CLIENTES Nom-cliente Lpez Jimnez Gutirrez Salas Flores Aguero calle Madero Allende Aldama Hidalgo Abasolo Madero ciudad Saltillo Saltillo Torren Torren Saltillo Monclova

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

Base de datos relacionales


Ejemplo Encontrar todos los nombres de sucursales que tienen un activo mayor que alguna de las sucursales situadas en la ciudad de Torren. SUCURSAL nom-suc centro sur norte centro sur norte centro sur norte ciudad Saltillo Saltillo Saltillo Torren Torren Torren Monclova Monclova Monclova activo 300000 400000 200000 210000 270000 350000 100000 150000 600000

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

( SELECT activo FROM sucursal WHERE ciudad = "Torren" )

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

Base de datos relacionales


Ejemplo Encontrar el saldo promedio de todas las cuentas de deposito en cada una de las sucursales incluir el nombre de las sucursales. Solucin : SELECT nom-suc FROM deposito GROUP BY nom-suc

3.4 Modificacin de la base de datos


La modificacin de la base de datos se expresa usando el operador asignacin. Las asignaciones se hacen a relaciones ya existentes en la base de datos. Eliminacin Una solicitud de eliminacin se expresa de forma muy parecida a una consulta. Sin embargo, en vez de presentar tuplas al usuario, quitamos las tuplas seleccionadas de la base de datos. Slo podemos eliminar tuplas completas; no podemos eliminar nicamente valores de determinados atributos. Insercin Para insertar datos en una relacin, bien especificamos la tupla que sa va a insertar o escribimos una consulta cuyo resultado sea un conjunto de tuplas que se va a insertar. Actualizacin En ciertas ocasiones podemos querer cambiar un valor en una tupla sin cambiar todos los valores de la tupla. Si hacemos estos cambios usando eliminacin e insercin, es posible que no podamos conservar los valores que no queremos cambiar. En lugar de ello, usamos el operador actualizacin. Creacin de Tablas CREATE TABLE<nombre de la tabla> ( <campo1> (<tipo>[,NO NULL]), <campo2> (<tipo>[,NO NULL]),... ) Tipos de Datos CHAR (<LONG>)[VAR] FLOAT INTEGER SMALLINT

19

Base de datos relacionales


Creacion de Indices CREATE [UNIQUE] INDEX <nom.indice> ON < nom>tabla> ( <nomcampo1> [ASC/DES], <nomcampo2> [ASC/DES],... ) Modificar Tablas (expandirlas) EXPAND TABLE <nom.tabla> ADD FIELD <nom.campo> (<TIPO>[NO NULL]) Eliminar Tablas DROP TABLE <nom.tabla> Eliminar Indices DROP <nom.indice> Ejemplos Creacion de Tablas (SQL standard) CREATE TABLE persona ( nombre(CHAR(40) VAR, NO NULL), edad(SMALLINT, NONULL), estatura(FLOAT, NO NULL), telefono(CHAR(7)) ) Creacion de Tablas (SQL Access) CREATE TABLA Cuenta ( Num_cuenta integer Not NULL, Saldo flota ) Creacion de Indices Por nombre CREATE INDEX ind_nom ON persona ( nombre ) Insertar datos INSERT INTO <nom.tabla> [(<campo1>,<campo2>...):] < <valor1>,<valor2>...> Modificar datos UPDATE <nom.tabla> SET <campo1> = <campo1>, <campo2> = <campo2>,... [WHERE <condicion>] Eliminar datos DELETE<nom.tabla> [WHERE <condicion>] Ejemplo Insertar (SQL Standard) Insert into persona < 'juan',15,1,75,'2-15-15','forjadores'>

20

Base de datos relacionales


Ejemplo Insertar (SQL Access) INSERT INTO Cuenta (num_cuenta, saldo) VALUES (10, 6000) ncrementar edad de todas las tuplas Update persona Set edad=edad+1

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

Base de datos relacionales

IV Diseo de Bases de Datos Relacinales


4.1 Riesgos en el diseo de las bases de datos relacionales
Existen diversos riesgos en el diseo de las bases de datos relacionales que afecten la funcionalidad de la misma, los riesgos generalmente son la redundancia de informacin y la inconsistencia de datos. Retos en el diseo de la base de datos Uno de los retos es el de obtener una estructura estable y lgica tal que: - El sistema de base de datos no sufra de anomalas de almacenamiento. - El modelo lgico pueda modificarse fcilmente para admitir nuevos requerimientos. Ventajas de un buen Diseo Una base de datos implantada sobre un modelo bien diseado tiene mayor esperanza de vida aun en un ambiente dinmico, que una base de datos con un diseo pobre. En promedio, una base de datos experimenta una reorganizacin general cada seis aos, dependiendo de lo dinmico de los requerimientos de los usuarios. Una base de datos bien diseada tendr un buen desempeo aunque aumente su tamao, y ser lo suficientemente flexible para incorporar nuevos requerimientos o caractersticas adicionales.

4.2 Normalizacin por medio de dependencias funcionales


Dependencias funcionales Por cualquier instancia dada de una relacin, sus atributos dependientes solo pueden tener un y solo un valor para ciertos valores de los atributos de los cuales es dependientes. Nota: Es la relacin de uno a uno entre el atributo y los atributos dependientes. dependencia funcional: Consiste en edificar que atributos dependen de otro(s) atributo(s).

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)

4.6 Valores Atmicos


Un dominio es atmico si se considera a los elementos del dominio como unidades indivisibles.

22

Base de datos relacionales 4.2, 4.3, 4.4 Normalizacin


Es el proceso de simplificar la relacin entre los campos de un registro. Tal que todos los dominios de los atributos deben consistir solo de valores atmicos, evitando los grupos repetitivos, y no debe de haber valores con multi-valores. Por medio de la normalizacin un conjunto de datos en un registro se reemplaza por varios registros que son ms simples y predecibles y, por lo tanto, ms manejables. Razones para llevar a cabo la normalizacin Estructurar los datos de forma que se puedan representar las relaciones pertinentes entre los datos. Permitir la recuperacin sencilla de los datos en respuesta a las solicitudes de consultas y reportes. Simplificar el mantenimiento de los datos actualizndolos, insertndolos y borrndolos. Reducir la necesidad de reestructurar o reorganizar los datos cuando surjan nuevas aplicaciones. Formas normales La teora de normalizacin tiene como fundamento el concepto de formas normales; se dice que una relacin est en una determinada forma normal si satisface un conjunto de restricciones.

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

Base de datos relacionales


Como esta relacin maneja valores atmicos, es decir un solo valor por cada uno de los campos que conforman a los atributos de las entidades, ya se encuentra en primera forma normal, grficamente as representamos a las relaciones en 1FN. Segunda forma normal Una relacin se encuentra en segunda forma normal, cuando cumple con las reglas de la primera forma normal y todos sus atributos que no son claves (llaves) dependen por completo de la clave . De acuerdo con est definicin, cada tabla que tiene un atributo nico como clave, esta en segunda forma normal. La segunda forma normal se representa por dependencias funcionales como:

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

Base de datos relacionales

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

Base de datos relacionales


Obsrvese que a diferencia de la tercera forma normal, agrupamos todas las llaves candidato para formar una global (representadas en el recuadro) las cuales hacen referencia a los atributo que no son llaves candidato. Cuarta forma normal Definicin formal: Un esquema de relaciones R est en 4FN con respecto a un conjunto D de dependencias funcionales y de valores mltiples s, para todas las dependencias de valores mltiples en D de la forma X->->Y, donde X<=R y Y<=R, se cumple por lo menos una de estas condiciones: * X->->Y es una dependencia de valores mltiples trivial. * X es una superllave del esquema R. Para entender mejor an esto consideremos una afinidad (tabla) llamada estudiante que contiene los siguientes atributos: Clave, Especialidad, Curso tal y como se demuestra en la siguiente figura: Clave S01 S01 S01 B01 C03 Especialidad Sistemas Bioqumica Sistemas Bioqumica Civil Curso Natacin Danza Natacin Guitarra Natacin

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

Base de datos relacionales


Clave S01 S01 B01 C03 Curso Natacin Danza Guitarra Natacin

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

S-ar putea să vă placă și