You are on page 1of 109

Universidad Nacional Autnoma de Mxico

Facultad de Ingeniera
1

Base de Datos

INTRODUCCIN A LAS BASES DE DATOS..........................................................................4


1.1.
SISTEMAS DE INFORMACIN ......................................................................................................... 4
1.1.1 Seguridad de la Informacin .................................................................................................... 4
1.2.
DEFINICIN DE UNA BASE DE DATOS ............................................................................................ 5
1.3.
CARACTERISTICAS DE LAS BASES DE DATOS .................................................................................. 5
1.3.1.
Seguridad ............................................................................................................................. 5
1.3.2.
Concurrencia........................................................................................................................ 6
1.3.3.
Integridad............................................................................................................................. 6
1.4.
VENTAJAS Y DESVENTAJAS ........................................................................................................... 7
1.5.
CONCEPTOS DE UN SISTEMA MANEJADOR DE BASES DE DATOS .................................................... 7
Atomicidad (Atomicity) ......................................................................................................................... 8
Consistencia (Consistency)................................................................................................................... 8
Aislamiento (Isolation) ......................................................................................................................... 8
Permanencia (Durability)..................................................................................................................... 9
Ventajas de un DBMS ............................................................................................................................ 9
Desventajas de un DBMS ...................................................................................................................... 9
LENGUAJES DE BASES DE DATOS ................................................................................................................ 9
1.5.1.
Lenguaje de Definicin de Datos ......................................................................................... 9
1.5.2.
Lenguaje de Manipulacin de Datos.................................................................................... 9
1.5.3.
Lenguaje de Control de Datos.............................................................................................. 9
1.5.4.
Administrador de la Base de Datos.................................................................................... 10
1.5.5.
Arquitectura de tres capas o Niveles de abstraccion ......................................................... 10
1.5.6.
Definicin y Caractersticas del Diccionario de Datos ..................................................... 11
1.6.
MODELOS DE DATOS ................................................................................................................... 13
1.6.1.
Modelo Jerarquico ............................................................................................................. 13
1.6.2.
Modelo de Red ................................................................................................................... 14
1.6.3.
Modelo Entidad Relacin................................................................................................. 14
1.6.4.
El modelo relacional .......................................................................................................... 15
1.6.5.
Lenguaje de Modelado Unificado (ppt: bsicos, introUML2) ........................................... 17
1.6.6.
Modelo Orientado a Objetos (ppt: introoo) ....................................................................... 17

2.

ANALISIS DE LA BASE DE DATOS .....................................................................................18


2.1.
REQUERIMIENTOS ........................................................................................................................ 18
2.2.
UTILIZACIN DE DIAGRAMAS DE ANLISIS .................................................................................. 18
2.2.1.
Diagrama Jerarquico Funcional........................................................................................ 18
2.2.2.
Diagrama Entidad Relacin............................................................................................... 19
2.2.3.
Diagrama de Flujo de Datos.............................................................................................. 22
2.3.
HERRAMIENTAS CASE ................................................................................................................. 23

3.

EL MODELO RELACIONAL ................................................................................................24


3.1.
PRINCIPIOS DEL MODELO RELACIONAL ....................................................................................... 24
3.2.
MAPEO DEL ESQUEMA CONCEPTUAL AL ESQUEMA RELACIONAL ................................................ 24
3.3.
INTEGRIDAD REFERENCIAL .......................................................................................................... 27
3.4.
LENGUAJES DE CONSULTA DE DATOS .......................................................................................... 29
3.4.1.
Algebra relacional.............................................................................................................. 30
CAVA ...................................................................................................................................................... 32
PROVEEDORES Y PARTES.................................................................................................................. 33
PROYECTOS .......................................................................................................................................... 34
MEDICAMENTOS ................................................................................................................................. 34
ACTIVIDADES Y RECURSOS.............................................................................................................. 34
3.4.2.
Clculo Relacional............................................................................................................. 36
3.4.3.
SQL..................................................................................................................................... 36

Recopil: Dra. Maria del Pilar Angeles

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera
4.

Base de Datos

DISEO DEL ESQUEMA CONCEPTUAL ............................................................................36


Anlisis de Requerimientos.................................................................................................................. 36
Diseo Conceptual............................................................................................................................... 36
Diseo Lgico...................................................................................................................................... 38
Diseo Fsico ....................................................................................................................................... 38
4.1.
DEPENDENCIAS FUNCIONALES .................................................................................................... 38
Propiedades de la Dependencia funcional .......................................................................................... 38
Dependencia funcional Reflexiva ........................................................................................................ 38
Dependencia funcional Aumentativa ................................................................................................... 38
Dependencia funcional transitiva ........................................................................................................ 39
4.2.
NORMALIZACION (PPTS: EJERNORMA1, EJERNORMA2, EJERNORMA3).......................................... 39
4.3. DISEO DE BASE DE DATOS ............................................................................................................... 54
4.3. DISEO DE BASE DE DATOS ............................................................................................................... 54

5.

LENGUAJE DE CONSULTA ESTRUCTURADO (SQL) .......................................................58


5.1.
LENGUAJE DE DEFINICIN DE DATOS EN SQL (DDL) (PPT: DDL) ................................................ 58
5.2.
LENGUAJE DE MANIPULACION DE DATOS (PPT: DML)............................................................... 82
5.3.
CONSULTAS EN LENGUAJE PROCEDURAL .................................................................................... 83
Creacin de un cursor ......................................................................................................................... 84
Apertura de un cursor.......................................................................................................................... 85
Recobro de una fila.............................................................................................................................. 85
Cierre de un cursor.............................................................................................................................. 85
Desasignacin de un cursor ................................................................................................................ 85
Ejemplo: Uso de un cursor .................................................................................................................. 86
5.4.
LENGUAJE DE CONTROL DE DATOS ............................................................................................. 87
5.5.
OPTIMIZACIN DE CONSULTAS .................................................................................................... 90
5.6.
LENGUAJE DE CONSULTA A OBJETOS .......................................................................................... 96
5.7.
RESPALDO Y RECUPERACIN DE LA INFORMACIN (PPT: SDBA_TALLER_DIA3 SLIDE 94) ......... 97

6.

ORGANIZACION FISICA DE LA BASE DE DATOS .......................................................... 100


6.1.
6.2.
6.3.
6.4.

7.

ARCHIVOS INDEXADOS .............................................................................................................. 100


ARCHIVOS CON DISPERSIN ...................................................................................................... 100
ARCHIVOS DE AUTENTIFICACIN .............................................................................................. 100
ARBOLES B ................................................................................................................................ 100

EXTENSIONES DE LAS BASES DE DATOS....................................................................... 100


7.1.
ADMINISTRACIN DE BASE DE DATOS (PRESENTACIN DBA.PPT)............................................. 100
7.2.
BASES DE DATOS DISTRIBUIDAS ................................................................................................ 101
7.3.
BASES DE DATOS ORIENTADAS A OBJETOS ............................................................................... 101
Introduccin y conceptos bsicos (presentacin introoo.ppt) .......................................................... 102
Conceptos bsicos del modelo bsico de BDOO: ............................................................................. 102
Polimorfismo ..................................................................................................................................... 103
Objetos Compuestos .......................................................................................................................... 103
Herencia ............................................................................................................................................ 103
Tipos de herencia............................................................................................................................... 103
Polimorfismo (sobrecarga con anulacin)....................................................................................... 104
Jerarqua de clases............................................................................................................................ 104
CARACTERSTICAS DE UN LPOO ............................................................................................................ 104
RELACIN DE GENERALIZACIN............................................................................................................. 105
Caractersticas................................................................................................................................... 105
Tipos de herencia............................................................................................................................... 105
Ventajas de la herencia mltiple........................................................................................................ 105

Recopil: Dra. Maria del Pilar Angeles

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Inconvenientes de la herencia mltiple.............................................................................................. 105


Mtodos de resolucin de colisiones (herencia mltiple).................................................................. 106
Tipos de agregacin .......................................................................................................................... 106
APLICACIONES AVANZADAS (DEPSITOS DE DATOS, MINERA DE DATOS, INTERNET, ETC.). ................ 107
Bodegas de Datos .............................................................................................................................. 107
Usos tpicos de la Tecnologa de Bodega de Datos........................................................................... 107
Integracin Empresarial de Aplicaciones (EAI)................................................................................ 108
Usos tpicos de la Tecnologa de Integracin Empresarial de Aplicaciones (EAI) ........................... 108

Recopil: Dra. Maria del Pilar Angeles

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Introduccin a las Bases de Datos


Objetivo: El alumno explicar los conceptos y principios que sustenten las bases de datos, as como las
metodologas existentes.
1.1. Sistemas de Informacin
Un sistema de informacin es un conjunto organizado de recursos informticos y de comunicacin,
personas, datos y actividades o tcnicas de trabajoque interactan entre si para procesar los datos y la
informacin (incluyendo procesos manuales y automticos) y distribuirla de la manera ms adecuada
posible en una determinada organizacin en funcin de sus objetivos. En un sentido general, un sistema de
informacin no requiere que esta se encuentre en una computadora.
1.1.1
Seguridad de la Informacin
El problema de la seguridad consiste en lograr que los recursos de un sistema sean, bajo toda circunstancia,
utilizados para los fines previstos.
Un aspecto importante de la seguridad es el de impedir la prdida de informacin, la cual puede producirse
por diversas causas: fenmenos naturales, guerras, errores de hardware o de software, o errores humanos.
La solucin es una sola: mantener la informacin respaldada, de preferencia en un lugar lejano.
Otro aspecto importante de la seguridad, es el que tiene que ver con el uso no autorizado de los recursos:
Lectura de datos, modificacin de datos, destruccin de datos y uso de recursos: ciclos de CPU, impresora,
almacenamiento.
Dado que los Sistemas de Informacin se forman de varios elementos como personas, computadoras,
procesos, datos, sistemas operativos, redes de comunicaciones, etc. La seguridad de la Informacin incluye
aspectos de tipo:
Legales, sociales y ticos
Polticas de la empresa, niveles de informacin publica y privada
Controles de tipo fsico, acceso a las instalaciones
Identificacin de usuarios: voz, retina del ojo, etc.
Controles de sistema operativo.
1.1.1.1. Definicin
La Seguridad de la Informacin se refiere a la Confidencialidad, Integridad y Disponibilidad de la
informacin y datos. De manera general, la seguridad de la informacin debe ser independientemente de la
forma que los datos pueden tener: electrnicos, impresos, audio u otras formas.
1.1.1.2. Confidencialidad
La confidencialidad es la propiedad de prevenir la divulgacin de informacin a personas o sistemas no
autorizados.
1.1.1.3. Disponibilidad
La Disponibilidad de la informacin se refiere a que esta debe encontrarse a disposicin de quienes deben
acceder a ella, ya sean personas, procesos o aplicaciones.
1.1.1.4. Autenticacion
Para poder accesar a los datos, se debe proporcionar una prueba de identidad; puede ser algo que se sabe
(password), que se es (un rol autorizado), se tiene o una combinacin de todas.
Integridad
Caracteristica de los datos de ser modificados por las personas o procesos autorizados.
1.1.1.5. Aspectos que vulneran la seguridad
Existen diversos aspectos que vulneran la seguridad y por tanto deben existir medidas de seguridad a todos
los niveles, como por ejemplo:
Fsicas: Controlar el acceso al equipo. Tarjetas de acceso, etc
Personal: Acceso slo del personal autorizado. Evitar sobornos, etc.
SO: Seguridad a nivel de SO

Recopil: Dra. Maria del Pilar Angeles

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

SGBD: Uso herramientas de seguridad que proporcione el SGBD. Perfiles de usuario, vistas, restricciones
de uso de vistas, etc.
1.1.1.5.1.

Medidas preventivas y correctivas

Existen varios servicios y tecnologas relacionadas con la seguridad. Accede a cada una de ellas para
conocer qu tecnologas son las ms interesantes:
Autenticacin: Se examinan las capacidades de logon nico a la red, autenticacin y seguridad. Adems,
se proporciona informacin sobre el interfaz Security Support Provider Interface (SSPI) para obtener
servicios de seguridad integrados del sistema operativo. Kerberos es el protocolo por defecto en Windows
2000 para autenticacin en red.
Sistema de Archivos Encriptado: Utilizar tecnologa de encriptacin de archivos para almacenar archivos
encriptados en disco.
Seguridad a nivel de Protocolo de Red: Proporcionar a los administradores de redes un elemento
estratgico de defensa para la proteccin de sus redes.
Servicios de seguridad a nivel Sistema Operativo: Para examinar los procedimientos relacionados con la
gestin de cuentas, autenticacin de red a nivel corporativo, as como el Editor de Polticas de Seguridad.
Seguridad a nivel Manejador de Base de Datos: Los manejadores cuentan con un subsistema de
seguridad y autorizacin que se encarga de garantizar la seguridad de porciones de la BD contra el acceso
no autorizado.
Discrecional: garantiza privilegios a usuarios incluyendo la capacidad de acceso, modificacin a
los datos.
Mandatorio: Establece un esquema de seguridad por capas y posteriormente forza el seguimiento
de determinadas reglas dependiendo del nivel de seguridad.
Control de flujo:Encriptado: Los datos son encriptados y por tanto ilegibles para aquellos que no
tengan la llave de desencriptamiento.
Seguimiento: Se monitorea constantemente los cambios y accesos a los datos para determinar
quien acceso a que datos y que les hizo, como estaban antes y despus, hora, maquina, usuario, etc.
Otras medidas preventivas y correctivas son a travs del uso de tecnologas referentes a la seguridad de la
informacin, como por ejemplo: Cortafuegos, Administracin de cuentas de usuarios, Deteccin y
prevencin de intrusos, Antivirus, etc.
1.2. Definicin de una Base de Datos
Una base de datos es un conjunto de datos organizados de modo tal que resulte fcil acceder a ellos,
gestionarlos y actualizarlos.
Un sistema de base de datos se encuentra dividido en mdulos cada uno de los cuales controla una parte
de la responsabilidad total de sistema. En la mayora de los casos, el sistema operativo proporciona
nicamente los servicios ms bsicos y el sistema de la base de datos debe controlar el manejo correcto de
los datos. As el diseo de un sistema de base de datos debe incluir la interfaz entre el sistema de base de
datos y el sistema operativo.
1.3. Caracteristicas de las bases de datos
1.3.1.

Seguridad

Los datos deben permanecer resguardados y seguros, no suceptibles a accesos o modificaciones no


autorizados.
LAS TRES PRINCIPALES CARACTERSTICAS DE LA SEGURIDAD
Que se deben mantener en una base de datos son la confidencialidad, la integridad y la disponibilidad de
la informacin. - Los datos contenidos en una Base de Datos pueden ser individuales o de una
Organizacin. Sean de un tipo o de otro, a no ser que su propietario lo autorice, no deben ser desvelados. Si
esta revelacin es autorizada por dicho propietario la confidencialidad se mantiene. Es decir, asegurar la
confidencialidad significa prevenir/ detectar/ impedir la revelacin impropia de la informacin.
Los siguientes requisitos son esenciales para la seguridad de la base de datos:

Recopil: Dra. Maria del Pilar Angeles

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

La base de datos debe ser protegida contra el fuego, el robo y otras formas de destruccin.
Los datos deben ser reconstruibles, porque por muchas precauciones que se tomen, siempre
ocurren accidentes.
Los datos deben poder ser sometidos a procesos de auditoria. La falta de auditoria en los sistemas
de computacin ha permitido la comisin de grandes delitos.
El sistema debe disearse a prueba de intromisiones. Los programadores, por ingeniosos que sean,
no deben poder pasar por alto los controles.
Ningn sistema puede evitar de manera absoluta las intromisiones malintencionadas, pero es posible hacer
que resulte muy difcil eludir los controles. El sistema debe tener capacidad para verificar que sus acciones
han sido autorizadas. Las acciones de los usuarios deben ser supervisadas, de modo tal que pueda
descubrirse cualquier accin indebida o errnea.
Mecanismos de Seguridad:
Identificar y autorizar a los usuarios: uso de cdigos de acceso y palabras claves, exmenes,
impresiones digitales, reconocimiento de voz, barrido de la retina, etc.
Autorizacin: usar derechos de acceso dados por el terminal, por la operacin que puede realizar o por la
hora del da.
Uso de tcnicas de cifrado: para proteger datos en BD distribuidas o con acceso por red o internet.
Diferentes tipos de cuentas: en especial la del ABD con permisos para: creacin de cuentas,
concesin y revocacin de privilegios y asignacin de los niveles de seguridad.
Manejo de la tabla de usuarios con cdigo y contrasea, control de las operaciones efectuadas en
cada sesin de trabajo por cada usuario y anotadas en la bitcora, lo cual facilita la auditora de la
BD.
1.3.2. Concurrencia
Se da en ambiente multi-usuario, tratando de acceder aun objeto de datos al mismo tiempo.
Ocurre cuando el sistema es multiusuario y no se establecen los controles adecuados para sincronizar los
procesos que afectan a la base de datos. Comnmente se refiere a la poca o nula efectividad de los
procedimientos de bloqueo o manejo de candados.
Granularidad: que es el tamao de las unidades aseguradas. Ej: Los candados pueden proteger un campo,
un registro, un archivo, una tabla, etc.
Dead-look(bloqueo): es la tcnica que evita errores de concurrencia, se da cuando se desarrolla una espera
circular entre dos transacciones y cada una de estas solicita una actualizacin sobre el mismo archivo, no
permite a otros usuarios el recurso hasta que trmine el proceso, se da la espera circular.
1.3.3.

Integridad

Integridad: conjunto de seguridades que son utilizadas para mantener los datos correctos.
Ocurre cuando no existe a travs de todo el sistema procedimientos uniformes de validacin para los
datos.
Fuente de Error: estas fuentes de error se origina si el programa de entrada de datos no esta validado. Ej:
fallas de hardware, actualizaciones incompletas, defectos del software, insercin de datos no vlidos,
errores humanos.
Una tcnica que usa el BDMS de una entrada de datos no vlida es la validacin.
Validacin: es proteger los datos, validar los datos en la entrada de datos. Existen tipos de validaciones:
Tipo de Dato: es si se define un campo como carcter char y no puede ingresar nmeros enteros.
Valor de Dato: si se define un valor entero se puede especificar un rango y no se puede pasar de
ese valor.
Valores Claves / No Nulos: asegura registros nicos y cuyos valores no sean nulos.
Integridad Referencial: asegura al DBMS que no existan registros hijos sin sus registros padres
correspondientes.

Recopil: Dra. Maria del Pilar Angeles

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

1.3.3.1. No redundancia y Consistencia


En bases de datos, la redundancia hace referencia al almacenamiento de los mismos datos varias veces en
diferentes lugares. La redundancia de datos puede provocar problemas como:
Incremento del trabajo: como un mismo dato est almacenado en dos o ms lugares, esto hace que
cuando se graben o actualicen los datos, deban hacerse en todos los lugares a la vez.
Desperdicio de espacio de almacenamiento: ya que los mismos datos estn almacenados en varios
lugares distintos, ocupando as ms bytes del medio de almacenamiento. Este problema es ms evidente en
grandes bases de datos.
Inconsistencia de datos: esto sucede cuando los datos redundantes no son iguales entre s. Esto
puede suceder, por ejemplo, cuando se actualiza el dato en un lugar, pero el dato duplicado en otro lugar no
es actualizado.
Si una base de datos est bien diseada, no debera haber redundancia de datos (exceptuando la
redundancia de datos controlada, que se emplea para mejorar el rendimiento en las consultas a las bases de
datos).
1.4. Ventajas y Desventajas
Los Sistemas de archivos no proporcionan seguridad, consistencia, concurrencia, integridad y son
redundantes. Las Bases de Datos requieren un manejador que garantice lo anterior.
1.5. Conceptos de un Sistema Manejador de Bases de Datos
El sistema manejador de bases de datos es la porcin ms importante del software de un sistema de base
de datos. Un DBMS es una coleccin de numerosas rutinas de software interrelacionadas, cada una de las
cuales es responsable de alguna tarea especfica.
El DBMS es conocido tambin como Gestor de Base de datos.

La figura muestra el DBMS como interfase entre la base de datos fsica y las peticiones del usuario. El
DBMS interpreta las peticiones de entrada/salida del usuario y las manda al sistema operativo para la
transferencia de datos entre la unidad de memoria secundaria y la memoria principal.
En s, un sistema manejador de base de datos es el corazn de la base de datos ya que se encarga del
control total de los posibles aspectos que la puedan afectar.
Los principales objetivos de un DBMS son los siguientes:
Independencia de datos es proteger nuestro programa de aplicaciones frente a las modificaciones en la
estructura de datos y viceversa, ya sea en forma fsica lgica.
Independencia lgica y fsica de los datos: se refiere a la capacidad de modificar una definicin de
esquema en un nivel de la arquitectura sin que esta modificacin afecte al nivel inmediatamente superior.
Para ello un registro externo en un esquema externo no tiene por qu ser igual a su registro correspondiente
en el esquema conceptual.6
Redundancia mnima: se trata de usar la base de datos como repositorio comn de datos para distintas
aplicaciones.
Acceso concurrente por parte de mltiples usuarios: control de concurrencia mediante tcnicas de bloqueo
o cerrado de datos accedidos.
Distribucin espacial de los datos: la independencia lgica y fsica facilita la posibilidad de sistemas de
bases de datos distribuidas. Los datos pueden encontrarse en otra habitacin, otro edificio e incluso otro
pas. El usuario no tiene por qu preocuparse de la localizacin espacial de los datos a los que accede.

Recopil: Dra. Maria del Pilar Angeles

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Integridad de los datos: se refiere a las medidas de seguridad que impiden que se introduzcan datos
errneos. Esto puede suceder tanto por motivos fsicos (defectos de hardware, actualizacin incompleta
debido a causas externas), como de operacin (introduccin de datos incoherentes).
Consultas complejas optimizadas: la optimizacin de consultas permite la rpida ejecucin de las
mismas.
Seguridad de acceso y auditora: se refiere al derecho de acceso a los datos contenidos en la base de datos
por parte de personas y organismos. El sistema de auditora mantiene el control de acceso a la base de
datos, con el objeto de saber qu o quin realiz una determinada modificacin y en qu momento.
Respaldo y recuperacin: se refiere a la capacidad de un sistema de base de datos de recuperar su estado
en un momento previo a la prdida de datos.
Acceso a travs de lenguajes de programacin estndar: se refiere a la posibilidad ya mencionada de
acceder a los datos de una base de datos mediante lenguajes de programacin ajenos al sistema de base de
datos propiamente dicho.
Una base de datos tpica conlleva la existencia de tres tipos de usuario con relacin a su diseo, desarrollo y
uso:
El administrador de bases de datos (DBA: Database Administrator): disea y mantiene la DB.
El desarrollador de aplicaciones (programador): implementa las transacciones e interfaces.
Los usuarios finales: consultan y editan los datos de la DB mediante un lenguaje de consulta de alto nivel.

Propiedades ACID
ACID es un conjunto de caractersticas o propiedades que se deben garantizar durante la ejecucin de las
transacciones en una base de datos.
El trmino ACID expresa la funcin que las transacciones desarrollan en aplicaciones crticas para una
misin. Acuado por los pioneros en el procesamiento de transacciones, el acrnimo ACID responde a los
trminos atomicidad (atomicity), coherencia (consistency), aislamiento (isolation) y permanencia
(durability).
Estas propiedades garantizan un comportamiento predecible, reforzando la funcin de las transacciones
como proposiciones de todo o nada diseadas para reducir la carga de administracin cuando hay muchas
variables.
Atomicidad (Atomicity)
Una transaccin es una unidad de trabajo en la que se produce una serie de operaciones entre las
instrucciones BEGIN TRANSACTION y END TRANSACTION de una aplicacin. Una transaccin se
ejecuta exactamente una vez y tiene carcter "atmico" (de subdivisin), es decir, el trabajo se realiza en su
totalidad o no se realiza en ningn caso.
Las operaciones asociadas a una transaccin comparten normalmente un objetivo comn y son
interdependientes. Si el sistema ejecutase nicamente una parte de las operaciones, podra poner en peligro
el objetivo final de la transaccin. La atomicidad elimina la posibilidad de procesar un subconjunto de
operaciones.
Consistencia (Consistency)
Una transaccin es una unidad de integridad porque mantiene la consistencia de los datos, transformando
un estado coherente de datos en otro estado de datos igualmente consistente.
La consistencia requiere que los datos enlazados mediante una transaccin se mantengan en trminos de
semntica. Una parte de la responsabilidad para mantener la consistencia recae en el programador de la
aplicacin que debe asegurarse de que sta exija todas las restricciones de integridad conocidas. Por
ejemplo, en el desarrollo de una aplicacin en la que se transfiere dinero, se debe evitar el desplazamiento
arbitrario de los puntos decimales durante la transferencia.
Aislamiento (Isolation)
Una transaccin es una unidad de aislamiento, permitiendo que transacciones concurrentes se comporten
como si cada una fuera la nica transaccin que se ejecuta en el sistema.
El aislamiento requiere que parezca que cada transaccin sea la nica que manipula el almacn de datos,
aunque se puedan estar ejecutando otras transacciones al mismo tiempo. Una transaccin nunca debe ver
las fases intermedias de otra transaccin.
Las transacciones alcanzan el nivel mximo de aislamiento cuando se pueden serializar. En este nivel, los
resultados obtenidos de un conjunto de transacciones concurrentes son idnticos a los obtenidos mediante

Recopil: Dra. Maria del Pilar Angeles

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

la ejecucin en serie de las transacciones. Como un alto grado de aislamiento puede limitar el nmero de
transacciones concurrentes, algunas aplicaciones reducen el nivel de aislamiento en el intercambio para
mejorar el rendimiento.
Permanencia (Durability)
Una transaccin tambin es una unidad de recuperacin. Si una transaccin se realiza satisfactoriamente, el
sistema garantiza que sus actualizaciones se mantienen aunque el equipo falle inmediatamente despus de
la confirmacin. El registro especializado permite que el procedimiento de reinicio del sistema complete las
operaciones no finalizadas, garantizando la permanencia de la transaccin.
Ventajas de un DBMS
Al minimizar redundancia, disminuye el margen de error y su inconsistencia
Aisla al usuario del cambio de equipo (entre equipos compatibles)
Independencia entre hardware y datos
Independencia entre datos y programas de aplicacin
Los datos son concentrados, lo cual reduce los gastos de mantenimiento
Los datos pueden compartirse (concurrencia)
Disminuye el tiempo de programacin de rutinas de intercomunicacin con el usuario y reportes (
velocidad de implementacin)
Agregar nuevas aplicaciones, ms sencillo, menos costoso
Mecanismos de seguridad superiores a los convencionales
Fcilmente recupera informacin cuando el sistema se cae a medio camino
Los programas son fcilmente interpretados por otros programadores ya que el cdigo se apega a los
estndares que impone el manejador
El programador no se preocupa por la localizacin fsica de los datos
Desventajas de un DBMS

Necesita hardware adicional (ms memoria tanto primaria como secundaria)


Mayor costo
Centralizacin de datos ( sistema ms vulnerable a catstrofes fsicas)
Requerimiento de personal ms capacitado (DBA capacitado)
Lenguajes de Bases de Datos
Son los lenguajes en el que los usuarios solicitan informacin de la base de datos. Estos lenguajes son
generalmente de ms alto nivel que los lenguajes de programacin. Los lenguajes de consulta pueden
clasificarse como procedimentales y no procedimentales;
En el lenguaje del tipo procedimental el usuario da las instrucciones al sistema para que realice una
secuencia de operaciones en la base de datos para calcular el resultado deseado.
En el lenguaje no procedimental, el usuario describe la informacin deseada sin dar un procedimiento
especfico para obtener dicha informacin.
1.5.1.

Lenguaje de Definicin de Datos

El lenguaje de definicin de datos, denominado por sus siglas como: DDL(Data definition Language).
Permite definir un esquema de base de datos por medio de una serie de definiciones que se expresan en un
lenguaje especial, el resultado de estas definiciones se almacena en un archivo especial llamado diccionario
de datos. El administrador de la base de datos y/o el programador utiliza este lenguaje.
1.5.2. Lenguaje de Manipulacin de Datos
La manipulacin de datos se refiere a las operaciones de insertar, recuperar, eliminar o modificar datos;
dichas operaciones son realizadas a travs del lenguaje de manipulacin de datos (DML, Data Manipulation
Language), que es quin permite el acceso de los usuarios a los datos.
1.5.3. Lenguaje de Control de Datos
Est conformado por sentencias que controlan la integridad, atomicidad y en general la seguridad de los
datos.

Recopil: Dra. Maria del Pilar Angeles

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Usuarios
Usuarios: Existen tres grandes clases de usuarios:
Programador: Encargado de escribir programas de aplicacin que utilizan la base de datos, estos
programas hacen por lo general lecturas, modificaciones, borrados y captura a la base de datos.
Usuario Final: Accesa a la base de datos, empleando tal vez un lenguaje de consulta o bien con ayuda
de la aplicacin creada por el programador.
Administrador de la Base de Datos: Encargado de la consistencia, integridad, concurrencia,
seguridad y durabilidad de los datos a travs del uso de las herramientas que le proporciona el Manejador
de la Base de Datos.
1.5.4. Administrador de la Base de Datos
El rol o papel de administrador de base de datos es el responsable de la integridad, disponibilidad y
seguridad de la base de datos, utilizando el lenguaje de control de datos.
Persona o grupo de personas encargada del control general del sistema de base de datos: mencionar
algunas de sus responsabilidades:

Decidir la estructura de almacenamiento y la estrategia de acceso

Vincularse con los usuarios

Definir los controles de autorizacin y procedimientos de validacin

Definir estrategia de respaldo y recuperacin

Controlar el desempeo y responder a los cambios de requerimientos.


1.5.5.

Arquitectura de tres capas o Niveles de abstraccion

segn ANSI
Nivel Externo ---->
Perspectiva
Personal del
Programador

Nivel Conceptual
Perspectiva de la
Comunidad de
Usuarios

----> Nivel interno


Perspectiva del
Almacenamiento
Fisico

externo
(vista de los usuarios
individuales)
conceptual
(vista de la comunidad de usuarios)

interno
(vista del almacenamiento)
Nivel Interno: Es el nivel ms cercano al almacenamiento fsico, es decir, el que conscierne a la manera
como los datos se almacenan en realidad
Nivel externo: Es el nivel referente a los usuarios , es decir concierne a la manera como ven los usuarios a
los datos

Recopil: Dra. Maria del Pilar Angeles

10

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Nivel Conceptual: Es el nivel de mediacin entre los otros dos. Si el nivel externo relaciona con las vistas
de los usuarios individuales, el nivel conceptual puede considerarse como el que define la vista de la
comunidad de usuarios.
Ejemplo:
En el nivel conceptual, la base de datos contiene informacin sobre un tipo de entidad llamada
EMPLEADO, cada empleado tiene un NUMERO_EMPLEADO (seis caracteres), un
NUMERO_DEPARTAMENTO (cuatro caracteres) y un SALARIO (cinco dgitos).
En el nivel interno, los empleados se representan por un tipo de registro almacenado de nombre
EMP_ALMCDO, de 18 bytes de longitud. EMP_ALMCDO contiene cuatro tipos de campo almacenado,
un prefijo de 6 bytes (que en teora contiene informacin de control como apuntadores y banderas) y tres
campos de datos que corresponden a las tres propiedades de EMPLEADO. Adems , los registros de
EMP_ALMCDO estn indicados en el campo EMP por medio de un ndice llamado EMPX.
De igual manera el usuario de C, tiene una vista externa de la base de datos donde cada empleado
representa es representado por un registro de C que contiene dos campos, los nmeros de departamento no
tienen inters para este usuario, por lo que se omiten en la vista.
Nota: Los nombres de los objetos correspondientes pueden tener diferente nombre en cada nivel.
Independencia de Datos
Inmunidad de las aplicaciones a los cambios de estructura de almacenamiento y de la estrategia de acceso,
es decir las aplicaciones no dependen de ninguna estructura de almacenamiento ni estrategia de acceso
especial.
Se refiere a la proteccin contra los programas de aplicacin que puedan originar modificaciones cuando
se altera la organizacin fsica o lgica de la base de datos. Existen 2 niveles de independencia de datos.
Independencia fsica de datos:
Es la capacidad de modificar el esquema fsico sin provocar que se vuelvan a escribir los
programas de aplicacin. Es decir, los cambios en el almacenamiento fisico de la base de datos solo
influye en el esquema interno, por tanto los programas de aplicacion no sufren cambios.
Independencia lgica de datos:
Capacidad de modificar el esquema conceptual sin provocar que se vuelvan a escribir los
programas de aplicacin. Es decir, cambios en la estructura conceptual de la base de datos solo influyen del
esquema conceptual hacia abajo, por lo tanto los programas de aplicacion no sufren cambios
1.5.6.

Definicin y Caractersticas del Diccionario de Datos

Base de datos que almacena las descripciones de los datos (metadatos)

Proporciona informacin al DBA, programador y al usuario final


Debe incluir todo lo que el DBA quiera saber acerca de la base:
Descripciones interna, conceptual y externo de la base de datos.

Recopil: Dra. Maria del Pilar Angeles

11

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

INTRODUCCION AL CURSO DE BASE DE DATOS


Este curso se trata del Analisis, Modelado y Diseo de Bases de Datos Relacionales y consta de los
siguientes pasos.
0) Anlisis de Base de Datos y Modelo Relacional (Temas 2 y 3)
1) Diseo Conceptual (Tema4) Identificacin de entidades, atributos e interrelaciones.
a) Como primer paso del diseo conceptual, analizamos la descripcin del problema y obtenemos las
entidades, atributos e interrelaciones de la tabla.
b) como segundo paso, especificamos el tipo de datos y otras caractersticas de los atributos.
Elaboramos el diccionario de datos.
c) Antecedindonos a la construccin del diagrama, asociamos a los atributos con las entidades e
interrelaciones (elaboracin de Diagrama E-R). Tema 2
d) En la segunda fase del diseo conceptual se aplica la normalizacin para generar los esquemas 3FN.
(Tema 4)
Resumen: Durante el diseo conceptual seguimos los pasos de identificacin de entidades, atributos e
interrelaciones, construccin del diccionario de atributos, identificacin de roles y construccin del
diagrama.
2) En el diseo lgico transformamos el diagrama Entidad-relacin en esquemas de relacin (Tema 3)
3) En el diseo fsico, finalmente obtenemos el esquema fsico para el manejador de base de datos,
aplicando el lenguaje de definicin de datos. (Tema 5)

Recopil: Dra. Maria del Pilar Angeles

12

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

1.6. Modelos de Datos


Para introducirnos en este tema, empezaremos definiendo que es un modelo.
Modelo:
Es una representacin de la realidad que contiene las caractersticas generales de algo que se va a realizar.
En base de datos, esta representacin la elaboramos de forma grfica.
Qu es modelo de datos?
Es una coleccin de herramientas conceptuales para describir los datos, las relaciones que existen entre
ellos, semntica asociada a los datos y restricciones de consistencia.
Los modelos de datos ms comunes son:
Modelo Jerrquico
Modelo de Red
Modelo de Entidad-Relacin
Modelo Relacional
Lenguaje Unificado de Modelado (UML)
Modelo Orientado a objetos.
1.6.1.

Modelo Jerarquico

CONCEPTOS BASICOS
Una base de datos jerrquica consiste en una coleccin de registros que se conectan entre si por medio de
ligas. Los registros y las ligas son similares a los del modelo de red, pero en el modelo jerrquico se
organiza en forma de rbol con raz (donde la raz es nodo ficticio); de tal manera que una base de
datos jerrquica es una coleccin de arboles de este tipo, formando un bosque.
A cada rbol con raz con raz se le denomina rbol de base de datos.
En este modelo un registro puede tener que repetirse en varios sitios que puede ocasionar los siguientes
problemas:
* Riesgos de la inconsistencia al llevar a cabo actualizaciones.
* Inevitable desperdicio de espacio en el medio de almacenamiento secundario
DIAGRAMAS DE ESTRUCTURAS DE RBOL
Un diagrama de estructura de rbol es el esquema de una base de datos jerrquica. Tiene dos
componentes bsicos:
REGISTROS y LIGAS
Estos diagramas son similares a los de estructura de datos en el modelo de red. La diferencia radica en
que en el modelo de red los registros se organizan en forma de un grafo arbitrario mientras que en el
modelo jerrquico se organiza en forma de un rbol con raz.
Las reglas para la formacin del rbol son:
1.-No hay ciclos
2.-De padre a hijos son validas las relaciones de uno a uno a uno a muchos.
El esquema de una base de datos jerrquica se representa como una coleccin de diagramas de
estructuras de rbol. Para cada diagrama existe una nica instancia del rbol de base de datos. La raz de
este rbol es un nodo ficticio. Los hijos de ese nodo son instancias del tipo de registros adecuado.
REGISTROS VIRTUALES.
Dado que en las relaciones muchos a muchos existe demasiada repeticin de datos, se maneja el
concepto de registro virtual. Un registro virtual es aquel que no se escribe fsicamente en el medio, sino que
es una referencia (liga) a un registro existente en forma previa su representacin es :
La razn de utilizar registros virtuales es evitar la repeticin de los datos, lo cual traera consigo los
siguientes inconvenientes:
-Redundancia, en consecuencia desperdicio de espacio de almacenamiento.
-Alto riesgo de inconsistencia durante las actualizaciones.

Recopil: Dra. Maria del Pilar Angeles

13

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera
1.6.2.

Base de Datos

Modelo de Red

El modelo de datos en red general representa las entidades en forma de nodo de un grafo, y las asociaciones
o interrelaciones entre stas mediante los arcos que unen dichos nodos.

I1

BB
n
I4
m

1
I3
N

1
I2

I7

C
n
I6
1

n
I5
m

Esta representacin no impone en principio ninguna restriccin ni al tipo ni al nmero de los arcos
permitindote el modelado de estructuras de datos tan complejas como se desee. Podemos definir el
modelo en red general con una mayor formalizacin, como un conjunto finito de tipos de entidades {E 1,E2,
... ,En} con sus respectivas propiedades (atributos): {A11,A12,A13...,Anm} y un conjunto finito de
interrelaciones (al igual que las entidades y que los atributos tienen un nombre {Ihj,k...n}.Con la notacin
anterior representamos la interrelacin entre los elementos j,k...,n (bien sean entidades y / u otras
interrelaciones), donde el superndice h permite diferenciar dos interrelaciones distintas entre los mismos
elementos, ya que se refiere al nombre de la interrelacin.
El esquema representa los aspectos estticos, la estructura de los datos (tipos de entidades, tipos de
interrelaciones, etc...), mientras que una ocurrencia del esquema (base de datos) son los m valores que
toman los elementos del esquema en un determinado momento, los cuales irn variando a lo largo del
tiempo por el efecto de aplicar los operadores de manipulacin de datos a una ocurrencia del esquema.
El modelo en red general es muy flexible debido a la inexistencia de restricciones inherentes, pero tambin
por esta misma razn su instrumentacin fsica resulta difcil y poco eficiente. Esta es la causa de que se le
suela introducir restricciones al llevarlo a la practica. El modelo jerrquico y el modelo CODASYL son
modelos que responden a estructuras del tipo de red pero con restricciones bastante fuertes.
1.6.3. Modelo Entidad Relacin
Componentes del modelo
Una entidad es un objeto que existe y se distingue de otros objetos de acuerdo a sus caractersticas
llamadas atributos. Las entidades pueden ser concretas como una persona o abstractas como una fecha.
Un conjunto de entidades es un grupo de entidades del mismo tipo. Por ejemplo el conjunto de entidades
CUENTA, podra representar al conjunto de cuentas de un banco X, o ALUMNO representa a un conjunto
de entidades de todos los alumnos que existen en una institucin.
Una entidad se caracteriza y distingue de otra por los atributos, en ocasiones llamadas propiedades, que
representan las caractersticas de una entidad. Los atributos de una entidad pueden tomar un conjunto de
valores permitidos al que se le conoce como dominio del atributo. As cada entidad se describe por medio
de un conjunto de parejas formadas por el atributo y el valor de dato. Habr una pareja para cada atributo
del conjunto de entidades.
Ejemplo:
Hacer una descripcin de la entidad alumno con los atributos No_control, Nombre y Especialidad.
Nombre_atributo, Valor
No_control , 84233631
Nombre
, Angeles Maria del Pilar
Esp
, Ingeniero en Computacion

Recopil: Dra. Maria del Pilar Angeles

14

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Hacer una descripcin de la entidad Vendedor cuyos aributos son: RFC, Nombre, Salario.
Nombre_atributo, Valor
RFC
, GOCV670819B82
Nombre
, Victor Gonzalez Castro
Salario
, 30000
Una relacin es la asociacin que existe entre dos o ms entidades.
Un conjunto de relaciones es un grupo de relaciones del mismo tipo.
La cantidad de entidades en una relacin determina el grado de la relacin, por ejemplo la relacin
ALUMNO-MATERIA es de grado 2, ya que intervienen la entidad ALUMNO y la entidad MATERIA, la
relacin PADRES, puede ser de grado 3, ya que involucra las entidades PADRE, MADRE e HIJO.
Aunque el modelo E-R permite relaciones de cualquier grado, la mayora de las aplicaciones del modelo
slo consideran relaciones del grado 2. Cuando son de tal tipo, se denominan relaciones binarias.
Ejemplos de relaciones binarias usando notacin de conjuntos.
UNA A UNA

UNA A MUCHAS

MUCHAS A UNA

MUCHAS A MUCHAS

Alumnos Tesis
A
B

Carreras Alumnos
A
B

Alumnos Carreras
A
B

Alumnos Materias
A
B

Dependencia de existencia.
Refirindonos a las mismas entidades A y B, decimos que si la entidad A depende de la existencia de la
entidad B, entonces A es dependiente de existencia por B, si eliminamos a B tendramos que eliminar por
consecuente la entidad A, en este caso B es la entidad Dominante y A es la entidad subordinada.
1.6.4. El modelo relacional
En este modelo todos los datos son almacenados en relaciones, y como cada relacin es un conjunto de
datos, el orden en el que estos se almacenen no tiene mayor relevancia (a diferencia de otros modelos como
el jerrquico y el de red). Esto tiene la considerable ventaja de que es ms fcil de entender y de utilizar por
un usuario no experto. La informacin puede ser recuperada o almacenada por medio de consultas que
ofrecen una amplia flexibilidad y poder para administrar la informacin.
Este modelo considera la base de datos como una coleccin de relaciones. De manera simple, una relacin
representa una tabla que no es ms que un conjunto de filas, cada fila es un conjunto de campos y cada
campo representa un valor que interpretado describe el mundo real. Cada fila tambin se puede denominar
tupla o registro y a cada columna tambin se le puede llamar campo o atributo.
Para manipular la informacin utilizamos un lenguaje relacional, actualmente se cuenta con dos lenguajes
formales el Algebra Relacional y el Calculo Relacional. El lgebra relacional permite describir la forma de
realizar una consulta, en cambio, el Clculo relacional slo indica lo que se desea devolver.
El lenguaje ms comn para construir las consultas a bases de datos relacionales es SQL, Structured Query
Language o Lenguaje Estructurado de Consultas, un estndar implementado por los principales motores o
sistemas de gestin de bases de datos relacionales.
Esquema
Un esquema es la definicin de una estructura (generalmente relaciones o tablas de una base de datos), es
decir, determina la identidad de la relacin y que tipo de informacin podr ser almacenada dentro de ella;
en otras palabras, el esquema son los metadatos de la relacin. Todo esquema constar de:
Nombre de la relacin (su identificador).

Recopil: Dra. Maria del Pilar Angeles

15

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Nombre de los atributos (o campos) de la relacin y sus dominios; el dominio de un atributo o campo
define los valores permitidos para el mismo, es equivalente al tipo de dato por ejemplo character, integer,
date, string, etc.
Instancias
Una instancia de manera formal es la aplicacin de un esquema a un conjunto finito de datos. En palabras
no tan tcnicas, se puede definir como el contenido de una tabla en un momento dado, pero tambin es
valido referirnos a una instancia cuando trabajamos o mostramos nicamente un subconjunto de la
informacin contenida en una relacin o tabla, como por ejemplo:
Ciertos caracteres y nmeros (una sola columna de una sola fila).
Algunas o todas las filas con todas o algunas columnas
Cada fila es una tupla. El nmero de filas es llamado cardinalidad.
El nmero de columnas es llamado aridad o grado.
Base de datos relacional
Una base de datos relacional es un conjunto de una o ms tablas estructuradas en registros (lneas) y
campos (columnas), que se vinculan entre s por un campo en comn, en ambos casos posee las mismas
caractersticas como por ejemplo el nombre de campo, tipo y longitud; a este campo generalmente se le
denomina ID, identificador o clave. A esta manera de construir bases de datos se le denomina modelo
relacional.
Las bases de datos relacionales pasan por un proceso al que se le conoce como normalizacin de una base
de datos, el cual es entendido como el proceso necesario para que una base de datos sea utilizada de manera
ptima.
Entre las ventajas de este modelo estn:
Garantiza herramientas para evitar la duplicidad de registros, a travs de campos claves o llaves.
Garantiza la integridad referencial: As al eliminar un registro elimina todos los registros relacionados
dependientes.
Favorece la normalizacin por ser ms comprensible y aplicable.
Ejemplo:
Considerando el ejemplo del vendedor que vende artculos, esquema e instancia segn nuestro ejemplo,
quedara:
Esquema:
{ Vendedor : Nombre, puesto, salario, RFC }
{ Articulo : Clave, costo, descripcin }
Instancia:
Como podemos observar el esquema nos muestra la estructura en el cual se almacenaran los datos, en
este caso en registros cuyos nombres de campos son: por parte del vendedor (Nombre, puesto,salario, RFC)
y por el artculo (Clave, costo,descripcin); La instancia representa a una serie de datos almacenados en los
registros establecidos por el esquema, estos datos varan, no permanecen fijos en el tiempo.
Campo almacenado: Unidad de datos con nombre ms pequea que se halla almacenada en la base de
datos. Este tendr muchas ocurrencias o instancias de cada uno de los diversos tipos de campos
almacenados, ej. Nombre.
Registro almacenado: Conjunto de campos almacenados relacionados entre si, una ocurrencia o instancia
de registro almacenado se compone de un conjunto de ocurrencias de campos almacenados relacionados
entre si. Por ejemplo datos de un estudiante. Nombre, direccin, edad, hobbies, carrera, etc., en conjunto.
Archivo almacenado: Conjunto con nombre de todas las ocurrencias de un tipo de registro almacenado.
Por ejemplo Archivo de estudiantes.

Recopil: Dra. Maria del Pilar Angeles

16

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

1.6.5. Lenguaje de Modelado Unificado (ppt: bsicos, introUML2)


UML es un lenguaje grfico que sirve para:
visualizacin
especificacin
construccin
documentacin
De productos derivados de un sistema de software.
Se usanlos diagramas para visualizar, especificar, construir, documentar aspectos estticos del sistema.
diagrama de clases
diagram de paquetes
diagrama de objetos
diagrama de componentes
diagrama de distribucin
1.6.6. Modelo Orientado a Objetos (ppt: introoo)
Objeto: Entidad del mundo real que se representa por un objeto al cual est asociado un estado y un
comportamiento.
Estado: Valores de los atributos del objeto.
Mtodos: Procedimientos que actan sobre el estado del objeto cuando se invocan las operaciones
correspondientes
Clases: Todos los objetos que comparten el mismo conjunto de atributos y mtodos se agrupan en clases.
Cada objeto pertenece (es una instancia/ ejemplar) a una clase.
Encapsulamiento: cada objeto contiene y define los mtodos y la interfaz mediante la cual se puede acceder
a l y otros objetos pueden manipularlo.
IDO Identificador de objeto, la identidad de un objeto, tiene una existencia independiente de los valores de
los atributos del objeto.
Objetos Complejos: Estn construidos mediante algunos ms simples mediante la aplicacin de
constructores a ellos. Los Objetos ms simples son objetos como: Integer, Carcter, String de Bytes de
cualquier longitud, booleanos punto flotante y algunos pueden ser de tipo atmico.

Recopil: Dra. Maria del Pilar Angeles

17

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera
2.

Base de Datos

Analisis de la Base de Datos

Objetivo: El alumno explicar los pasos y elementos necesarios para el diseo lgico de la base de datos,
asi como las herramientas.
2.1. Requerimientos
El anlisis de requerimientos para una base de datos incorpora las mismas tareas que el anlisis de
requerimientos del software. Es necesario un contacto estrecho con el cliente; es esencial la identificacin
de las funciones e interfaces; se requiere la especificacin del flujo, estructura y asociatividad de la
informacin y debe desarrollarse un documento formal de los requerimientos.
En esta etapa se recoge y analiza los requerimientos de los usuarios y de las reas de aplicacin. Esta
informacin se la puede recoger de varias formas:
Entrevistando el personal de la empresa concretamente aquellos que son considerando expertos en la rea
que se de.
Observando el funcionamiento de la empresa.
Examinando documentos sobre todo aquellos que se utilizan para recoger o visualizar la informacin.
Utilizando cuestionario para recoger informacin de grandes grupos de usuarios.
Utilizan la experiencia adquirida en el Diseo de Sistemas similares.
Esta etapa tiene como resultado en conjunto de documentos con las especificaciones de requisitos de los
usuarios en donde se describen las operaciones que se realizan en la empresa desde distintos puntos de
vista.
Los requisitos de desarrollo involucran el software y hardware necesario para la implementacin, los
recursos humanos necesarios (tanto internos como externos), la formacin al personal.
2.2. Utilizacin de diagramas de anlisis
Existen varios software para la elaboracin de diagramas que permitan el anlisis y diseo de la base de
datos, como Oracle Database Designer, Rational UML, PowerDesigner, etc.
2.2.1.

Diagrama Jerarquico Funcional

El Diagrama de Jerarqua Funcional (DJF) permite representar la funcionalidad deseada de un sistema en


un esquema jerrquico. La funcionalidad que se representa en el diagrama de jerarqua funcional
corresponde a aquella que desea el usuario o la que se necesita para satisfacer los requerimientos. No se
deben incluir funciones (en trminos de programacin) ya que estas son definidas en el diseo.
Normalmente los DJF permiten representar la interaccin que es posible realizar con el usuario por medio
de mens. Inicialmente los DJF fueron utilizados para representar la interaccin con sistemas de tipo
consola en los cuales las opciones eran presentadas por pantalla y el usuario deba elegir una opcin para
acceder a otro men o para realizar la accin correspondiente. En la actualidad esta interaccin puede ser
apreciada en los cajeros automticos. En la Figura 2 se muestra un ejemplo de jerarqua funcional para un
cajero automtico.

Recopil: Dra. Maria del Pilar Angeles

18

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

2.2.2.

Base de Datos

Diagrama Entidad Relacin

Los diagramas entidad relacin son esquemas que nos permitan representar conjunto de entidades y sus
relaciones mediante la siguiente simbologa

Utilizando diagramas entidad-relacion, podemos representar los ejemplos alumno-materia y madre-padrehijo.

Recopil: Dra. Maria del Pilar Angeles

19

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

2.2.2.1. Analisis y sntesis de entidades y atributos


Relaciones binarias utilizando diagramas entidad-relacion:
Existen 4 tipos de relaciones binarias que pueden establecerse entre entidades, las cuales establecen con
cuantas entidades de tipo B se pueden relacionar una entidad de tipo A:
Relacin uno a uno.
Se presenta cuando existe una relacin uno a uno. Una entidad del tipo A solo se puede relacionar con
una entidad del tipo B, y viceversa, (matrimonio).
Por ejemplo: la relacin asignacin de automvil que contiene a las entidades EMPLEADO, AUTO, es
una relacin 1 a 1, ya que asocia a un empleado con un nico automvil por lo tanto ningn empleado
posee ms de un automvil asignado, y ningn vehculo se asigna a ms de un trabajador.
Es representado grficamente de la siguiente manera:

A: Representa a una entidad de cualquier tipo diferente


a una entidad B.
R: en el diagrama representa a la relacin que existe entre las entidades.
El extremo de la flecha que se encuentra punteada indica el uno de la relacin, en este caso, una entidad A
ligada a una entidad B.
Relacin uno a muchos.
Significa que una entidad del tipo A puede relacionarse con cualquier cantidad de entidades del tipo B, y
una entidad del tipo B solo puede estar relacionada con una entidad del tipo A.
Su representacin grfica es la siguiente:

Ntese en este caso que el extremo punteado de la flecha de la relacin de A y B, indica una entidad A
conectada a muchas entidades B.
Muchos a uno.
Indica que una entidad del tipo B puede relacionarse con cualquier cantidad de entidades del tipo A,
mientras que cada entidad del tipo A solo puede relacionarse con solo una entidad del tipo B.

Muchas a muchas.
Establece que cualquier cantidad de entidades del tipo A pueden estar relacionados con cualquier
cantidad de entidades del tipo B.

A los tipos de relaciones antes descritos, tambin se le conoce como cardinalidad.

Recopil: Dra. Maria del Pilar Angeles

20

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

La cardinalidad nos especifica los tipos de relaciones que existen entre las entidades en el modelo E-R y
establecer con esto las validaciones necesarias para conseguir que los datos de la instancia (valor nico en
un momento dado de una base de datos) correspondan con la realidad.
Relacion Recursiva
Una instancia de una entidad se asocia con instancia de si misma, es opcional en los dos extremos,es decir,
no hay el carcter de obligatorio. Ej:

Algunos ejemplos de cardinalidades de la vida comn pueden ser:


Uno a uno. El noviazgo, el RFC de cada persona, El CURP personal, El acta de nacimiento, ya que solo
existe un solo documento de este tipo para cada una de las diferentes personas.
Uno a muchos. Cliente Cuenta en un banco, Padre-Hijos, Camin-Pasajeros, zoologico- animales, rbol
hojas.
Muchos a muchos. Arquitecto proyectos, fiesta personas, estudiante materias.
Llaves primarias.
La distincin de una entidad entre otra se debe a sus atributos, lo cual lo hacen nico. Una llave
primaria es aquel atributo el cual consideramos clave para la identificacin de los dems atributos que
describen a la entidad. Por ejemplo, si consideramos la entidad ALUMNO, podramos tener los siguientes
atributos: Nombre, Semestre, Especialidad, Direccin, Telfono, Nmero de control, de todos estos
atributos el que podremos designar como llave primaria es el nmero de control, ya que es diferente para
cada alumno y este nos identifica en la institucin.
Llaves secundarias
Claro que puede haber ms de un atributo que pueda identificarse como llave primaria en este caso se
selecciona la que consideremos ms importante, los dems atributos son denominados llaves secundarias.
Una clave o llave primaria es indicada grficamente en el modelo E-R con una lnea debajo del nombre
del atributo.
Recordemos la notacion de los diagramas de entidad-relacion en que un rectngulo nos representa a las
entidades; una elipse a los atributos de las entidades, y una etiqueta dentro de un rombo nos indica la
relacin que existe entre las entidades, destacando con lneas las uniones de estas y que la llave primaria de
una entidad es aquel atributo que se encuentra subrayado.
Ejercicios
A continuacin mostraremos algunos ejemplos de modelos E-R, considerando las cardinalidades que
existen entre ellos:
Relacin Uno a Uno.
Problema:
Disear el modelo E-R, para la relacin Registro de automvil que consiste en obtener la tarjeta de
circulacin de un automvil con los siguientes datos:- Automvil- Modelo, Placas, Color - Tarjeta de
circulacin -Propietario, No_serie, Tipo.

Recopil: Dra. Maria del Pilar Angeles

21

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Indicamos con este ejemplo que existe una relacin de pertenencia de uno a uno, ya que existe una tarjeta
de circulacin registrada por cada automvil.
En este ejemplo, representamos que existe un solo presidente para cada pas.

Relacin

muchos

muchos.

El siguiente ejemplo indica que un cliente puede tener muchas cuentas, pero que una cuenta
puede llegar a pertenecer a un solo cliente (Decimos puede, ya que existen cuentas registradas a favor de
ms de una persona).

2.2.3. Diagrama de Flujo de Datos


Los diagramas de flujo de datos (OFO) permiten desarrollar los modelos del mbito de la informacin y del
mbito funcional al mismo tiempo. Los OFO's muestran el flujo de la informacin (datos) y la
transformacin (mediante procesos) de sta en el sistema. Es gracias a los OFO que el anlisis estructurado
posee las cualidades de ser grfico, conciso y particionado. Los OFO estn compuestos por cuatro
elementos: el flujo de datos, el proceso, el repositorio, y el productor/consumidor.
Los DFD pueden ser refinados para reflejar mayor conocimiento sobre el sistema. El DFD de nivelO debe
reflejar el sistema como una sola burbuja. Para el desarrollo de los siguientes refinamientos se deben tomar
en cuenta las siguientes consideraciones:
1. Se debe anotar cuidadosamente la(s) entrada(s) y la(s) salida(s) principal(es). El refinamiento debe
comenzar asilando procesos, los elementos de datos y los almacenes de datos que sean candidatos a ser
representados en el siguiente nivel.
3. Todas las flechas deben ser rotuladas con nombres significativos.
4. Se deben refinar las burbujas de una en una.
Los procesos deben ser refinados de tal manera de generar un DFD para cada proceso. La descomposicin
no debe reflejar demasiados detalles o aspectos procedurales sobre la informacin. Se debe refinar hasta un
nivel que permita aislar o describir plenamente cada proceso. Para evitar confusiones se pueden numerar
los procesos como se muestra en la Figura

Recopil: Dra. Maria del Pilar Angeles

22

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

2.3. Herramientas Case


Las herramientas CASE (Computer Aided Software Engineering, Ingeniera de Software Asistida por
Ordenador) son conjunto de herramientas que facilitan la ejecucin de los pasos necesarios en el ciclo de
vida de desarrollo del software, principalmente en tareas de diagramacin y diseo de proyectos, calculo de
costes, implementacin de parte del cdigo automticamente con el diseo dado, compilacin automtica,
documentacin o deteccin de errores entre otras. Las herramientas case tienen como objetivo aumentar la
productividad en el desarrollo de software reduciendo el coste de las mismas en trminos de tiempo y de
dinero.
La siguiente clasificacin es la ms habitual basada en las fases del ciclo de desarrollo que cubren:
Upper CASE : Planificacin, anlisis de requisitos y estrategia del desarrollo, usando, entre otros diagramas
UML.
Middle CASE: Automatizacin de tareas en el anlisis y diseo de la aplicacin.
Lower CASE (L-CASE): Semiautomatizacion de generacin de cdigo, crean programas de deteccin de
errores, soportan la depuracin de programas y pruebas. Adems automatizan la documentacin completa
de la aplicacin. Aqu pueden incluirse las herramientas de Desarrollo_rpido_de_aplicaciones.
Existen herramientas tambin incluyen el modelado, diseo e implementacin de bases de datos.
Las herramientas case ms comunes a nivel base de datos son: DBDesigner (gratuito), MySQL Workbench
(gratuito), Oracle Designer (Oracle), Power Designer (Sybase), etc.

Recopil: Dra. Maria del Pilar Angeles

23

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

3. El Modelo Relacional
Objetivo: El alumno explicara los principios y elementos que componen la estructura del modelo relacional
para que implemente aplicaciones asociadas al modelo.
3.1. Principios del Modelo Relacional
La estructura del modelo relacional, Tablas, columnas, registros, relaciones.
En este modelo se representan los datos y las relaciones entre estos, a travs de una coleccin de tablas, en
las cuales los renglones (tuplas) equivalen a los cada uno de los registros que contendr la base de datos y
las columnas corresponden a las caractersticas(atributos) de cada registro localizado en la tupla;
Considerando nuestro ejemplo del empleado y el artculo:
Tabla del empleado

3.2. Mapeo del esquema Conceptual al esquema Relacional


Un diagrama E-R, puede ser representado tambin a travs de una coleccin de tablas. Para cada una de
las entidades y relaciones existe una tabla nica a la que se le asigna como nombre el del conjunto de
entidades y de las relaciones respectivamente, cada tabla tiene un nmero de columnas que son definidas
por la cantidad de atributos y las cuales tienen el nombre del atributo.
La transformacin de nuestro ejemplo Venta en la que intervienen las entidades de Vendedor con los
atributos RFC, nombre, puesto, salario y Artculo con los atributos Clave, descripcin, costo.
Cuyo diagrama E-R es el siguiente:

Entonces

las

tablas

resultantes

siguiendo

la

descripcin

anterior

son:

Tabla Empleado
Nombre Puesto

Salario

RFC

Tefilo Vendedor

2000

TEAT701210XYZ

Cesar

1200

COV741120ABC

Auxiliar

Recopil: Dra. Maria del Pilar Angeles

24

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

ventas
Tabla artculo
Clave

Descripcin Costo

A100

Abanico

C260

Colcha
1200
matrimonial

460

Tabla Venta
RFC

Clave

TEAT701210XYZ C260
COV741120ABC A100
Ntese que en la tabla de relacin - Venta -, contiene como atributos a las llaves primarias de las
entidades que intervienen en dicha relacin, en caso de que exista un atributo en las relaciones, este atributo
es anexado como una fila ms de la tabla;
Por ejemplo si anexamos el atributo fecha a la relacin venta, la tabla que se originaria sera la siguiente:
RFC

Clave Fecha

TEAT701210XYZ C260 10/12/96


COV741120ABC A100 11/12/96

Representacion de las relaciones entre entidades en el modelo


Ahora te preguntaras cmo se representan las relaciones entre las entidades en este modelo?
Existen dos formas de representarla; pero para ello necesitamos definir que es una llave primaria: Es un
atributo el cual definimos como atributo principal, es una forma nica de identificar a una entidad. Por
ejemplo, el RFC de un empleado se distingue de otro por que los RFC no pueden ser iguales.
Ahora si, las formas de representar las relaciones en este modelo son:
1. Haciendo una tabla que contenga cada una de las llaves primarias de las entidades involucradas en la
relacin.
Tomando en cuenta que la llave primaria del empleado es su RFC, y la llave primaria del articulo es la
Clave.

2. Incluyendo en alguna de las tablas de las entidades involucradas, la llave de la otra tabla.

Recopil: Dra. Maria del Pilar Angeles

25

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Mapeo de Modelo Entidad Relacin a Modelo Relacional


1.

Toda entidad se transforma en una tabla

2.

Todo atributo se transforma en una columna dentro de la tabla a la que pertenece

3.

El identificador de la entidad se convierte en la clave primaria de la tabla

4.

Toda relacin N:M se convierte en una tabla que tendr como clave primaria las dos claves
primarias de las entidades que se asocian

5.

En las relaciones 1:N la clave primaria de la entidad con cardinalidad 1 pasa a la tabla de la
entidad cuya cardinalidad es N

6.

En las relaciones N:M existen tres posibilidades: Si la cardinalidad es (0,1) en ambas entidades, se
crea tabla. Mientras que si la cardinalidad de una es (0,1) y de la otra es (1,1) se suele pasar la
clave primaria de (1,1) a la de (0,1). Si la cardinalidad de ambas es (1,1) se pasa la clave de
cualquiera de ellas a la otra.

Para este modelo de entidad-relacin el paso a tablas quedara de la siguiente forma:

Reglas de Formacin de Base de Datos


1.
2.
3.

Cada relacin o tabla contiene un solo tipo de fila o tupla.


Cada tupla tiene un nmero fijo de atributos o columnas.
No se permiten atributos compuestos o grupos repetitivos.

Recopil: Dra. Maria del Pilar Angeles

26

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

4.
Cada tupla es nica y se identifica con su clave primaria.
5.
Un atributo o grupo de ellos que identifiquen unvoca e inequvocamente cada tupla de la relacin
es una clave candidata.
6.
La clave primaria de una relacin se selecciona entre las claves candidatas.
7.
Si un atributo A R1 es tambin la clave primaria de R2, entonces A es un atributo forneo de
R1.
8.
El orden de las tuplas en la relacin es irrelevante.
9.
Los valores de los atributos deben pertenecer al dominio de cada atributo definido en ella.
10.
Un mismo dominio puede ser usado por diferentes atributos.
11.
A partir de una o ms tablas se pueden producir nuevas tablas diferentes mediante el uso de las
operaciones del lgebra relacional.
Reglas de integridad

De la relacin: ningn componente de un valor de los atributos que conforman la clave primaria
puede ser nulo.

De referencia: sea A la clave primaria de R1 y tambin un atributo forneo de R2, entonces para
toda tupla de R2 donde A no sea nulo debe existir la tupla correspondiente en R1.

De los valores de un atributo: son los predicados definidos por el administrador de bases de
datos sobre los valores de los atributos usando el lenguaje de definicin de datos.
Ejemplo:
fechaInicio fechaFin
restricciones de integridad de
fechaInscripcin fechaInicio
los valores de los atributos.
Semestre

cdigo

fechaInicio

fechaFin

fechaInscripcin

tupla

A98`

02/03/98

17/07/98

22/2/98

B98`

14/09/98

30/01/99

07/09/98

A99`

15/03/99

23/07/99

08/03/99

Informacin incompleta y valores nulos


Cohesin en los registros.
Concepto nulo en los registros
3.3. Integridad Referencial
La integridad referencial es un sistema de reglas que utilizan la mayora de las bases de datos relacionales
para asegurarse que los registros de tablas relacionadas son vlidos y que no se borren o cambien datos
relacionados de forma accidental produciendo errores de integridad.
- La Base de Datos no debe contener valores de clave ajena sin concordancia.
- Es decir, para cualquier valor no nulo de la clave ajena existe un valor asociado en la clave primaria de la
relacin objetivo.
Restricciones de integridad (ppts: controlintegri)
Tarea: Investigar los tipos de restricciones de integridad, ejemplos y programas.

Alta de Laves Primarias


Para dar de alta una llave primaria este atributo se declara como llave candidata y debe identificar de
manera nica a la entidad. Por tanto no se puede dar de alta una llave que ya se encuentra en la base de
datos.

Recopil: Dra. Maria del Pilar Angeles

27

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Cuando se define una columna como clave fornea, las filas de la tabla pueden contener en esa columna o
bien el valor nulo (ningn valor), o bien un valor que existe en la otra tabla, un error sera asignar a un
habitante una poblacin que no est en la tabla de poblaciones. Eso es lo que se denomina integridad
referencial y consiste en que los datos que referencian otros (claves forneas) deben ser correctos. La
integridad referencial hace que el sistema gestor de la base de datos se asegure de que no hayan en las
claves forneas valores que no estn en la tabla principal.
La integridad referencial se activa en cuanto creamos una clave fornea y a partir de ese momento se
comprueba cada vez que se modifiquen datos que puedan alterarla.
Cundo se pueden producir errores en los datos?
Cuando insertamos una nueva fila en la tabla secundaria y el valor de la clave fornea no existe en la tabla
principal. insertamos un nuevo habitante y en la columna poblacion escribimos un cdigo de poblacion que
no est en la tabla de poblaciones (una poblacin que no existe).
Ejemplos de errores

Cuando modificamos el valor de la clave principal de un registro que tiene 'hijos', modificamos el
codigo de Valencia, sustituimos el valor que tena (1) por un nuevo valor (10), si Valencia tena habitantes
asignados, qu pasa con esos habitantes, no pueden seguir teniendo el codigo de poblacin 1 porque la
poblacin 1 ya no existe, en este caso hay dos alternativas, no dejar cambiar el codigo de Valencia o bien
cambiar el codigo de poblacin de todos los habitantes de Valencia y asignarles el cdigo 10.
Cuando modificamos el valor de la clave fornea, el nuevo valor debe existir en la tabla principal. Por
ejemplo cambiamos la poblacin de un habitante, tena asignada la poblacin 1 (porque estaba
empadronado en valencia) y ahora se le asigna la poblacin 2 porque cambia de lugar de residencia. La
poblacin 2 debe existir en la tabla de poblaciones.

Cuando queremos borrar una fila de la tabla principal y ese registro tiene 'hijos', por ejemplo
queremos borrar la poblacin 1 (Valencia) si existen habitantes asignados a la poblacin 1, estos no se
pueden quedar con el valor 1 en la columna poblacin porque tendran asignada una poblacin que no
existe. En este caso tenemos dos alternativas, no dejar borrar la poblacin 1 de la tabla de poblaciones, o
bien borrarla y poner a valor nulo el campo poblacion de todos sus 'hijos'.
Asociada a la integridad referencial estn los conceptos de actualizar los registros en cascada y eliminar
registros en cascada.
Actualizacin y borrado en cascada
El actualizar y/o eliminar registros en cascada, son opciones que se definen cuando definimos la clave
fornea y que le indican al sistema gestor qu hacer en los casos comentados en el punto anterior
Actualizar registros en cascada:
Esta opcin le indica al sistema gestor de la base de datos que cuando se cambie un valor del campo clave
de la tabla principal, automticamente cambiar el valor de la clave fornea de los registros relacionados en
la tabla secundaria.

Por ejemplo, si cambiamos en la tabla de poblaciones (la tabla principal) el valor 1 por el valor 10
en el campo codigo (la clave principal), automticamente se actualizan todos los habitantes (en la tabla
secundaria) que tienen el valor 1 en el campo poblacion (en la clave ajena) dejando 10 en vez de 1.
Si no se tiene definida esta opcin, no se puede cambiar los valores de la clave principal de la tabla
principal. En este caso, si intentamos cambiar el valor 1 del codigo de la tabla de poblaciones , no se
produce el cambio y el sistema nos devuelve un error o un mensaje que los registros no se han podido
modificar por infracciones de clave.
Eliminar registros en cascada: Esta opcin le indica al sistema gestor de la base de datos que cuando se
elimina un registro de la tabla principal automticamente se borran tambin los registros relacionados en la
tabla secundaria.

Por ejemplo: Si borramos la poblacin Onteniente en la tabla de poblaciones, automticamente


todos los habitantes de Onteniente se borrarn de la tabla de habitantes.
Si no se tiene definida esta opcin, no se pueden borrar registros de la tabla principal si estos tienen
registros relacionados en la tabla secundaria. En este caso, si intentamos borrar la poblacin Ontenyente, no
se produce el borrado y el sistema nos devuelve un error o un mensaje que los registros no se han podido
eliminar por infracciones de clave.
RESUMEN
Borrado de Llaves Primarias

Recopil: Dra. Maria del Pilar Angeles

28

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

- La decisin depende de los requerimientos, existiendo tres posibilidades:


- Restringida (Restricted). No se puede borrar un tupla si est referenciada.
- Se Propaga (Cascades). Se borra la tupla junto con las tuplas que la referencian.
- Anula (Nillifies). Se borra la tupla y se pone a nulo la clave ajena de las tuplas que la
referencian, siempre y cuando los acepte.
Modificacin de Llaves Primarias
- La decisin depende de los requerimientos, existiendo tres posibilidades:
- Restringida (Restricted). Una tupla no se puede modificar si est referenciada.
- Se Propaga (Cascades). Se modifica la tupla junto con las tuplas que la referencian.
- Anula (Nullifies). Se modifica la tupla y se pone a nulo la clave ajena de las tuplas que la referencian,
siempre y cuando los acepte.
Ejemplo de una base de datos relacional
Cliente( codCli, nombre, balance, lmiteCrdito, descuento)
Envio( direccin, codCli)
Pedido( codPed, lnea, dirEnvio, codArt, cantidadPedida, cantidadEnviada)
Artculo( codArt, nomArt, descripcin)
Inventario( codArt, codPlanta, cantidadExistencia, riesgo)
Atributo

Descripcin

Dominio

codCli

Cdigo del cliente

Cadena(4)

nombre

Nombre del cliente

Cadena(40),
{letras}

balance

Balance actual de la cuenta del cliente

Real

lmiteCrdito

Lmite de crdito actual del cliente

Real siempre positivo

descuento

Descuento actual que se le aplica al cliente

Real siempre positivo

direccin, dirEnvio

Direccin de envo del cliente (un cliente puede tener Cadena(80),sub(direccin,i,1)


varias)
{letras} {/,-,} con i desde 1
hasta 80

codPed

Cdigo de pedido

Cadena(6)

lnea

Lnea del pedido

Entero corto siempre positivo

cantidadPedida

Cantidad pedida del artculo

Entero siempre positivo

cantidadEnviada

Cantidad enviada del artculo

Entero siempre positivo

codArt

Cdigo del artculo

Cadena(6)

nomArt

Nombre del artculo

Cadena(20),sub(nomArt,i,1)
{letras}

descripcin

Descripcin del artculo

Cadena(255),
sub(descripcin,i,1) {letras}

codPlanta

Cdigo de la planta que tiene el artculo

Cadena(2)

cantidadExistencia

Cantidad actual en existencia del artculo

Entero siempre positivo

riesgo

Cantidad mnima del artculo en inventario

Entero siempre positivo

sub(nombre,i,1)

3.4. Lenguajes de Consulta de Datos

Recopil: Dra. Maria del Pilar Angeles

29

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera
3.4.1.

Base de Datos

Algebra relacional

El lgebra relacional es un lenguaje de consulta formal procedimental, el lgebra relacional define


operadores que funcionan sobre las tablas (de una manera similar a los operadores +,-,etc. del lgebra
comn ) para llegar al resultado deseado. El lgebra relacional es difcil de utilizar, debido en parte a que es
procedimental, esto es, al utilizar el lgebra relacional no slo debemos saber lo que queremos, tambin
cmo obtenerlo.
En el proceso de bases de datos comerciales el lgebra relacional se utiliza de manera poco frecuente.
Aunque unos cuantos productos exitosos DBMS s tienen opciones del lgebra relacional, stas son poco
utilizadas en vista de su complejidad.
El lgebra relacional toma dos o ms tablas como entrada produce una nueva tabla como resultado de la
serie de operaciones. Las operaciones fundamentales en el lgebra relacional son seleccionar, proyectar,
producto cartesiano, renombrar, unin y diferencia de conjuntos. Adems de las operaciones
fundamentales existen otras operaciones como son: interseccin de conjuntos, producto natural, divisin y
asignacin.
Unin, interseccin y diferencia
* La operacin Unin.
Construye una relacin formada por todas las tuplas de la primera relacin y todas las tuplas de la
segunda relacin. El requisito es que ambas relaciones sean del mismo tipo.
Nom_TablaA UNION Nom_tablaB
* La operacin interseccin.
Construye una nueva tabla compuesta por todas las tuplas que estn en la primera y segunda tabla.
Nom_TablaA INTERSEC Nom_tablaB
* La operacin Diferencia.
Construye una relacin formada por todas las tuplas (filas) de la primera relacin que no aparezcan en la
segunda de las dos relaciones especificadas. Se representa con la orden MINUS.
Nom_tablaA MINUS NomTablaB;
**

Operaciones
fundamentales
**
Las operaciones seleccionar, proyectar y renombrar, son denominadas operaciones unitarias ya que
operan sobre una tabla. Las otras operaciones operan sobre pares de relaciones y, por tanto se llaman
operaciones binarias.
Seleccin
Esta operacin selecciona tuplas (filas) que satisfacen una instruccin(condicin) dada de una tabla. Se
representa por medio de parntesis.
(nombre_tabla WHERE condicin);
La oracin de la instruccin despus de la clusula WHERE puede incluir condiciones de igualdad como
=,=,<,>,>=,<=,adems que se puede hacer una oracin ms compleja usando los conectores y (^) y o (v).
Proyeccin
Consiste en identificar las columnas (atributos en el modelo E-R) que nos interesa conocer. Se representa
por medio de corchetes. Si este se omite indicara que se desea obtener todas las columnas de la tabla en
cuestin.
(nombre_tabla WHERE condicin) [Nombre_atributo];
Producto cartesiano.
Consiste en multiplicar todas las tuplas entre tablas, obteniendo como resultado una tabla que contiene
todas las columnas de ambas tablas. Se especifica con la orden TIMES.
Nombre_tabla TIMES Nombre_tabla;
Join
Consiste en obtener el producto (multiplicacin) de todas las tuplas de una tabla con las de la otra, para
posteriormente evaluar aquellas cuyo campo en comn sea igual generando como resultado una nueva tabla
que tiene como tuplas (renglones) que cumplen con la condicin establecida. Se representa con la orden
JOIN. La orden Join es colocada entre las dos tablas a multiplicar despus de que la primera especifica la
operacin de seleccin y proyeccin.
(Tabla)[atributo] JOIN (Tabla)[Atributo];
Division

Recopil: Dra. Maria del Pilar Angeles

30

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Toma dos relaciones, una binaria y la otra unaria, construye una relacin formada por todos los valores
de un atributo de la relacin binaria que concuerdan (en el otro atributo) con todos los valores de la relacin
unaria. Se representa con la orden DIVIDEBY.
NomTablaBin DIVIDEBY NomTablaUna
Consultas en lgebra relacional
Ejemplos:
Para
ejemplificar
las
notaciones
anteriores
consideremos
el
ejemplo
ALUMNO cursa
- MATERIA, que tienen los siguientes atributos:
NControl
NControl
Clave
NombreA
Clave
NombreM
Especialidad Calif
Crditos
Direccin
Representando en tablas a los atributos quedaran de la siguiente forma:
Tabla alumno:
NControl NombreA Especialidad Direccin
Tabla cursa:
NControl Clave

Calif

Tabla materia:
Clave

NombreM Crditos

1.- Obtener el nombre de todos los alumnos que estn inscritos en la Institucin.
(Alumno) [NombreA];
2.- Obtener el nombre de los alumnos que cursan la materia Base de datos 1 cuya clave es SCB9333
(Alumno) JOIN (Cursa where Clave='SCB9333') [NombreA];
3.- Obtener los nombres de los alumnos de la especialidad de Ing. Sistemas que cursan la materia Base de
datos 2.
((Alumno)[especialidad,NombreA,NControl]
JOIN
(Cursa)
where
especialidad
=
'ISC')[Clave,NombreA])
JOIN (Materia where NombreM='BD2')[NombreA];

En el lgebra relacional no solo debemos saber lo que queremos si no tambin como obtenerlo, al realizar
las consultas debemos especificar el nombre de la tabla a utilizar en caso de que deseemos realizar una
operacin con un atributo que las otras tablas no tienen debemos "arrastrar" dicho atributo para poder
utilizarlo, como lo es en el caso anterior, en donde requerimos el nombre del alumno que solamente lo tiene
la tabla alumno, pro tambin deseamos que se cumpla la condicin NombreM=BD2, como no podemos
relacionar directamente a ambas tablas empleamos la tabla cursa de donde obtenemos la clave de las
materias y mantenemos el nombre del alumno (NombreA) finalmente con la orden JOIN se combinan las
tablas por el campo comn que tienen que es clave as que obtenemos una tabla con todas las materias que
cursan los alumnos de ISC, de donde seleccionamos solo aquella que se llame BD2 con la orden Join
obtenemos esta nueva tabla de donde por ltimo proyectamos el atributo NombreA que hemos venido
"arrastrando".

Planteamiento y Solucin a problemas de algebra relacional.

Recopil: Dra. Maria del Pilar Angeles

31

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Considere el modelo E-R del caso Mdico - atiende - Paciente.


Realizar:
*
La
conversin
a
tablas
del
modelo
E-R.
* Las siguientes consultas en lgebra relacional.
1.- Obtener el nombre de Todos los mdicos.
2.- Obtener el nombre de todos los pacientes > de 18 aos.
3.- Obtener todos los datos de todos los pacientes.
4.- Obtener los nombres de todos los pacientes que consultan con el mdico con cdula profesional
ABC001.
5.- Obtener los nombres de los mdicos que atienden al paciente John Smith.
6.- Suponiendo que el hospital de la Ciudad de la Paz tiene una tabla de pacientes similar a la del hospital
de San Jos, obtener el nombre y la afiliacin de estos pacientes.
7.- Obtener las combinaciones de pacientes y mdicos excepto la de aquellos mdicos cuya especialidad
sea Oftalmologa.
Recuerde que tenemos que indicar las tablas a utilizar entre parntesis y los atributos a proyectar entre
corchetes, despus podemos utilizar las ordenes Times, Join, Divide, Minus, Union, Intersec, segn sea el
caso a resolver; si requiere manipular atributos que no tengan las otras tablas "arrstrelos" proyectando
siempre entre cada operacin dicho atributo. De cada operacin o combinacin que realice entre las tablas
se genera una tabla nueva que cumple con las condiciones que establece.
CAVA
De acuerdo con la siguiente tabla relacional conteste las preguntas sobre AR que se formulan ms abajo.
CAVA
ANAQ VINO

PRODUCTOR AO BOTELLAS LISTO COMENTARIOS

Chardonnay

Buena Vista

88

91

Chardonnay

Louis Martini

89

90

Chardonnay

Chappellet

87

91

11

Jo. Riesling

Jekel

89

10

92

12

Jo. Riesling

Buena Vista

87

92

Cosecha tar.

16

Jo. Riesling

Sattui

87

89

Muy seco

21

Fume Blanc

Ch. St. Jean

88

91

Robt. Flores

22

Fume Blanc

Robt. Mondavi 87

90

25

Borgoa Blanco Mirassou

86

89

30

Gewurztraminer Buena Vista

87

90

43

Cab. Sauvignon Robt. Mondavi 82

12

92

50

Pinot Noir

Mirassou

82

90

51

Pinot Noir

Ch. St. Jean

86

92

64

Zinfandel

Mirassou

84

92

72

Gamay

Robt. Mondavi 85

90

Da de grac.

Cosecha

Aniversario

1. Obtener el nmero de anaquel, nombre del vino y nmero de botellas de todos los vinos de Mirassou.
2. Obtener el nmero de anaquel y el nombre de todos los vinos con ms de cinco botellas en existencia.
3. Obtener el nmero de anaquel de todos los vinos tintos.

Recopil: Dra. Maria del Pilar Angeles

32

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

PROVEEDORES Y PARTES
De acuerdo con la siguiente base de datos relacional conteste las preguntas sobre AR que se formulan ms
abajo.
PROVEEDORES
CODPROV NOMBRE SITUACION CIUDAD
S1

Salazar

20

Londres

S2

Jaramillo

10

Pars

S3

Bernal

30

Pars

S4

Caicedo

20

Londres

S5

Aldana

30

Atenas

PARTES
CODPARTE NOMBRE COLOR PESO CIUDAD
P1

Tuerca

Rojo

12

Londres

P2

Perno

Verde

17

Pars

P3

Tornillo

Azul

17

Roma

P4

Tornillo

Rojo

14

Londres

P5

Leva

Azul

12

Pars

P6

Rueda

Rojo

19

Londres

SUMINISTRA
CODPROV CODPARTE CANTIDAD
S1

P1

300

S1

P2

200

S1

P3

400

S1

P4

200

S1

P5

100

S1

P6

100

S2

P1

300

S2

P2

400

S3

P3

200

S4

P2

200

S4

P4

300

S4

P5

400

1. Obtener el codprov y la situacin de todos los proveedores de Pars.


2. Obtener los codprov y los nombres de los proveedores radicados en Londres y cuya

Recopil: Dra. Maria del Pilar Angeles

situacin sea

33

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

mayor que 20.


3. Obtener todas las combinaciones de (codprov, codparte), tales que el proveedor y la parte estn en la
misma ciudad.
4. Obtener los nombres de los proveedores que suministran la parte P2.
5. Obtenga los codprov y la ciudad de los proveedores que suministran al menos una parte roja.
6. Obtenga todas las parejas de codprov, tales que los proveedores en cuestin est
PROYECTOS
Una base de datos de una importante empresa incluye las siguientes tablas:

Empleado (codemp, nombre, salario)

TrabajaEn (codproy, codemp)

Proyecto (codproy, presupuesto)

Director (codproy, codemp)


Utilizando AR responda las siguientes preguntas:
1. Obtener codemp y salario de todos los directores de proyecto.
2. Obtener nombre y salario de todos los empleados que trabajan en todos los proyectos.
3. Obtener nombre de los empleados asignados a proyectos que no tienen director.
MEDICAMENTOS
Una base de datos farmacolgica contiene medicamentos, sealando para qu patologa estn indicados, y
qu laboratorios los producen (indicando el nombre comercial que cada laboratorio le asigna). Adems, se
tiene una lista de medicamentos incompatibles entre s. Esta informacin se almacena en las siguientes
tablas:

Medicamentos (codmed, desmed)

Proveedores (codmed, nomlab, nommed)

Indicadores (codmed, patologia)

Incompatibles (codmed1, codmed2)


Utilizando AR responda las siguientes preguntas:
1. Obtener nombre de todos los medicamentos que sirven para el resfro comn y que se pueden ingerir
junto con Aspirina.
2. Obtener todos los pares de medicamentos que sirven para una misma enfermedad.
3. Obtener todos los nombres de laboratorios que no producen ninguna forma de cido acetil salislico.

ACTIVIDADES Y RECURSOS
Una base de datos de una importante empresa contiene las siguientes tablas:

Departamento (coddepto, nomdepto)

Actividad (codact, nomact)

Recurso (codrec, nomrec)

Autorizacion (coddepto, codact)

Permiso (codact, codrec)

Valor (codrec, mes, precio)

Consumo (coddepto, codact, codrec, cantrec, mes)


Utilizando AR responda las siguientes preguntas:
1.Obtener el nombre de los departamentos qu estn autorizados a realizar todas las actividades.
2.Obtener los precios de los recursos utilizados por el departamento de Mantencin durante el mes de
marzo.
3. Obtener los nombres de los departamentos que han realizado alguna actividad sin tener autorizacin.

Recopil: Dra. Maria del Pilar Angeles

34

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

La conversin a tablas del modelo Medico-atiende-Paciene resulta:


Tabla Mdico
Cdula NombreM Especialidad
Tabla Paciente
Afiliacin NombreP Sexo

Edad

Cdula

Hora

Tabla Atiende
Afiliacin Fecha

La solucin a las consultas son:


1.- (Medico)[NombreM];
2.- (Paciente where Edad>'18')[NombreP];
3.- (Paciente);
4.- (Paciente)[NombreP] JOIN (Atiende where Cdula='ABC001')[NombreP];
5.- ((Mdico)[NombreM] JOIN (Atiende) JOIN (Paciente where NombreP='John Smith' )) [NombreM];
6.- Consideremos 2 tablas de pacientes, Paciente1 y Paciente2, entonces:
((Paciente1) UNION (Paciente2))[NombreP,Afiliacin];
7.- ((Paciente) TIMES (Mdico where especialidad<> 'Oftalmologa'));

Recopil: Dra. Maria del Pilar Angeles

35

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

3.4.2. Clculo Relacional


Dominio del clculo relacional
Se puede decir que el clculo es descriptivo y que el lgebra es prescriptivo.
- Tambin se puede decir que el clculo plantea el problema y el lgebra lo resuelve.
Panorama General del Clculo
- El clculo relacional se fundamenta en una rama de la lgica matemtica denominada
Clculo de Predicados.
- Una caracterstica fundamental del clculo relacional es la denominada Variable de Tuplas
o Variable de Recorrido.
- Una variable de Tuplas se asocia a una relacin y sus nicos valores permitidos son las
tuplas de dicha relacin.

3.4.3.

SQL

SQL (Structured Query Language - Lenguaje estructurado de consultas) es un lenguaje de alto nivel para
sistemas de bases de datos relacionales. Desarrollado originalmente por el Laboratorio de Investigacin de
IBM en San Jos a finales de los aos 70, SQL ha sido adoptado y adaptado en muchos sistemas de
administracin de bases de datos relacionales. Ha sido aprobado como norma oficial para lenguajes de
consultas relacionales por parte del American National Standards Institute (ANSI) y la International
Organizacion for Standardization (ISO).
4. Diseo del Esquema Conceptual
Objetivo: El alumno aplicara la normalizacin en la eficiencia de las operaciones de la base de datos
especialmente en la optimizacin de consultas.
Introduccin
Uno de los retos en el diseo de la base de datos es el de obtener una estructura estable y lgica tal que:
1.
El sistema de base de datos no sufra de anomalas de almacenamiento.
2.
El modelo lgico pueda modificarse fcilmente para admitir nuevos requerimientos.
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.
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.

Anlisis de Requerimientos
La fase de anlisis de requerimientos produce una descripcin operacional de la base de datos. Su objetivo
es asegurar que la base de datos contenga los datos necesarios para las funciones y aplicaciones donde se
usara la base de datos. Esta fase es realizada normalmente por los diseadores de bases de datos a travs de
entrevistas con los usuarios del sistema que ser realizado. En este sentido se dice que esta fase es una fase
de: Adquisicin de Conocimiento. La salida de esta fase (valga la redundancia) son los requerimientos del
sistema.
Diseo Conceptual
La fase de Diseo Conceptual se alimenta del Anlisis de Requerimientos y produce un diseo que trata de
reflejar como son los datos. Es una prctica comn que estas dos primeras fases sean hechas de manera
participativa y a travs de refinamientos sucesivos a travs de la interaccin de los diseadores y los
usuarios del sistema. El diseo conceptual trata de crear un Modelo Parcial del Universo donde se trata de
capturar lo suficiente para poder soportar todas las funciones a las que servir el sistema final. El resultado
final de esta fase es un Esquema de la Base de Datos. No necesariamente este esquema puede ser

Recopil: Dra. Maria del Pilar Angeles

36

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

implementado directamente en algn manejador de base de datos. Dentro de esta fase es comn el uso del
modelo Entidad - Relacin.

Recopil: Dra. Maria del Pilar Angeles

37

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Diseo Lgico
Tomando el esquema de la base de datos de la fase de Diseo Conceptual, esta fase produce un diseo que
se acerca ms a la implementacin en un Sistema Manejador de Base de Datos. En esencia esta fase
transforma el modelo Entidad - Relacin en tablas que podrn ser implementadas en un sistema manejador
de base de datos particular. El modelo de datos que usaremos para esta etapa es el modelo ELKA(Entity
Link Key Attribute). Una vez que el modelo Entidad - Relacin es transformado a tablas y produce el
modelo ELKA, se eliminan ciertas anomalas, debidas principalmente a la redundancia, el proceso a travs
del cul se da esto se conoce como NORMALIZACIN. Es importante comentar que el proceso de
NORMALIZACIN es un Medio y no un Fin.
Diseo Fsico
Una vez que tenemos las tablas resultantes del Diseo Lgico es importante el decidir tanto la estructura de
almacenamiento y las estrategias de acceso. La estructura de almacenamiento se refiere a como almacenar
los datos, y la estrategia de acceso se refiere a como llegar a los datos. Algunos ejemplos de estructuras de
almacenamiento son: Archivos Planos, Archivos Comprimidos, Archivos Codificados, Formatos
Especficos (DBF, DAT, DBM, etc.). Las estrategias de acceso pueden ser: Acceso Secuencial, Acceso
Binario, Acceso Heap, Acceso usando Btrees, etc.
Cada vez es ms comn que los sistemas manejadores de base de datos tengan ya predefinida la estructura
de almacenamiento y como estrategia de acceso tengan solo dos: Acceso Secuencial y Acceso usando BTrees. Entonces esta etapa se reduce en trminos simples a la seleccin de los INDICES para acelerar el
acceso. En ocasiones por eficiencia es posible que en esta fase del proceso se realice una
DESNORMALIZACIN, es decir aceptar una Forma Normal de Menor Nivel que a la que se puede llegar,
recurdese que la NORMALIZACIN es un medio y no un fin.
4.1. Dependencias Funcionales
Una dependencia funcional es una conexin entre uno o ms atributos. Por ejemplo, si conocemos la fecha
de nacimiento de alguien, entonces saber su edad.
Consideremos FECNAC como un atributo que corresponde a la fecha de nacimiento del empleado y a edad
otro atributo que corresponde al numero de aos cumplidos de dicho empleado. Entonces si a las
dependencias funcionales del sistema se escriben utilizando una flecha, se tiene
FECNAC edad
Dado que la fecha de nacimiento determina la edad, entonces FECNAC es un determinante.
Como la edad depende de la fecha de nacimiento, entonces edad es funcionalmente dependiente.
Estas dependencias funcionales deben conservarse cuando se tenga implementada la base de datos y por
eso se realiza la normalizacin, tema que veremos mas adelante.
Propiedades de la Dependencia funcional
Consideremos dos atributos X yY, existen 3 axiomas de Armstrong:
Dependencia funcional Reflexiva
Si "y" esta incluido en "x" entonces x
y
Consideremos ID un atributo que contiene el nombre, direccin del empleado.
Si la direccin o el nombre de una persona estn determinados en el ID, entonces con el podemos
determinar la direccin o su nombre.
Dependencia funcional Aumentativa
entonces
ID
telefono
ID,telefono
nombre,telefono
Si con el ID se determina el nombre de una persona, entonces con el ID ms el telefono tambin se
determina el nombre o su telefono

Recopil: Dra. Maria del Pilar Angeles

38

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Dependencia funcional transitiva

Dependencia funcional transitiva.


Sean X, Y, Z tres atributos (o grupos de atributos) de la misma entidad. Si Y depende funcionalmente de X y
Z de Y, pero X no depende funcionalmente de Y, se dice que Z depende transitivamente de X.
Simblicamente sera:
X
Y
Z entonces X
Z
FechaDeNacimiento
Edad
Edad
Conducir
FechaDeNacimiento
Edad
Conducir
Entonces tenemos que FechaDeNacimiento determina a Edad y la Edad determina a Conducir,
indirectamente podemos saber a travs de FechaDeNacimiento a Conducir (En muchos pases , una
persona necesita ser mayor de cierta edad para poder conducir un automvil, por eso se utiliza este
ejemplo).
Una dependencia funcional es completamente funcional si al eliminar los atributos A de X significa que
la dependencia no es mantenida.
Una dependencia funcional es una dependencia parcial si hay algunos atributos que pueden ser
removidos de X y la dependencia todava se mantiene, esto es A X, (X {A}) -> Y .
Por ejemplo {SSN, PNUMBER} HOURS es completamente dependiente dado que ni SSN HOURS ni
PNUMBER HOURS mantienen la dependencia. Sin embargo {SSN, PNUMBER} ENAME es
parcialmente dependiente dado que SSN ENAME mantiene la dependencia.
4.2. Normalizacion (ppts: ejernorma1, ejernorma2, ejernorma3)
La normalizacin es el proceso de simplificar la relacin entre los campos de un registro.
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. La normalizacin se lleva a cabo por cuatro
razones:
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.
En otras palabras, las bases de datos relacionales se normalizan para evitar redundancia de los datos,evitar
problemas de actualizacin de los datos en las tablas y proteger la integridad de los datos.
En general, las primeras tres formas normales son suficientes para cubrir las necesidades de la mayora de
las bases de datos. El creador de estas 3 primeras formas normales (o reglas) fue Edgar F. Codd.
Pasos de la normalizacin:
1.
Descomponer todos los grupos de datos en registros bidimensionales.
2.
Eliminar todas las relaciones en la que los datos no dependan completamente de la llave primaria
del registro.
3.
Eliminar todas las relaciones que contengan dependencias transitivas.
Precondicin a la Normalizacin:
0FN: Para que exista una entidad, sta debe contener atributos.
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.

Recopil: Dra. Maria del Pilar Angeles

39

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Formas normales.
Son las tcnicas para prevenir las anomalas en las tablas. Dependiendo de su estructura, una tabla puede
estar en primera forma normal, segunda forma normal o en cualquier otra.
Relacin entre las formas normales:
Primera forma normal.
Definicin formal:
Una relacin R se encuentra en 1FN si y solo s por cada rengln columna contiene valores atmicos.

Todos los atributos son atmicos. Un atributo es atmico si los elementos del dominio son
indivisibles, mnimos.

La tabla contiene una clave primaria.

La tabla no contiene atributos nulos.

Si no posee ciclos repetitivos.


Una columna no puede tener mltiples valores. Los datos son atmicos. (Si a cada valor de X le pertenece
un valor de Y, entonces a cada valor de Y le pertenece un valor de X)
Esta forma normal elimina los valores repetidos dentro de una BD
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.
Para ejemplificar como se representan grficamente las relaciones en primera forma normal
consideremos la relacin alumno cursa materia cuyo diagrama E-R es el siguiente:

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.
Primera Forma Normal (1NF): Remover atributos repetidos o grupos de atributos.
Si hay ms de un valor a un tiempo para un atributo ms de un atributo con el mismo nombre, nosotros
definimos una nueva entidad, la cual es descrita por el atributo. El UID de sta nueva entidad comprende
uno de los atributos que fueron migrados y una relacin de muchos a uno hacia la entidad original.

Ejemplo: Se tiene una relacin DEPARTAMENTO.


En una localidad existe solo un departamento, pero un departamento puede existir en varias localidades.

DEPARTAMENTO
# nodepto
* departamento
* num_localidad1 nom_local1
o num_localidad2 nom_local2
o num_localidad3 nom_local3

Recopil: Dra. Maria del Pilar Angeles

40

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Nodepto
Depto
NumLoc1
Localidad1
1
Investigacin
1
D.F.
2
Desarrollo
6
Tijuana
3
Administracion
7
Merida
Se normaliza con una tabla departamento y una localidad

DEPARTAMENTO
# no_depto
* departamento

DEPARTAMENTO
No_de
pto
1

departamento

Desarrollo

Administraci
n

Investigacin

Base de Datos

NumLoc2
2
4
8

Localidad2
Monterrey
Morelia
Veracruz

NumLoc3
3
5

Localidad3
Guadalajara
Guanajuato

LOCALIDAD
# no_localidad
* Localidad
no_depto

LOCALIDAD
No_localidad

No_depto

Localidad

D.F.

Monterrey

Guadalajara

Morelia

Guanajuato

Tijuana

Merida

Veracruz

Segunda forma normal.


Para definir formalmente la segunda forma normal requerimos recordar que es una dependencia
funcional: Consiste en edificar que atributos dependen de otro(s) atributo(s).

Definicin
formal:
Una relacin R est en 2FN si y solo si est en 1FN y los atributos no primos dependen
funcionalmente de la llave primaria.
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.
Dependencia Funcional. Una relacin est en 2FN si est en 1FN y si los atributos que no forman parte de
ninguna clave dependen de forma completa de la clave principal. Es decir que no existen dependencias
parciales.
En otras palabras podramos decir que la segunda forma normal est basada en el concepto de dependencia
completamente funcional

Recopil: Dra. Maria del Pilar Angeles

41

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Segunda Forma Normal (2NF): Remover atributos que dependen de una parte de la llave nica.
Si una entidad tiene un UID compuesto por ms de un atributo y/o relacin, y si otro atributo depende de
solo una parte de la llave compuesta, entonces el atributo y la parte de sta sobre la cual es dependiente,
debern formar parte de otro entidad y una relacin de 1 a Muchos hacia la entidad original

EMP-PROY
# Noemp
#cod-proy
localidad-proy
horas-proy
nombre

nom-proy

EMPROY
noemp

Cod-proy

Horas-proy

Nombre

Nom-proy

Localidadproy

12345

23.8

Juan

Siracusa

Moron

67890

23.8

Roberto

Siracusa

Moron

98765

42.5

Maria

Finanzas

D.F.

Se normalizara como

PROYECTO
# cod-proy
nomproy
horas-proy
TABLA
PROYECTO
localidad-proy

EMPLEADO
# Noemp
nombre
cod-proy

TABLA EMPLEADO
noemp

Nombre

Cod-proy

12345

Juan

67890

Roberto

98765

Maria

Cod-proy

Horas-proy

Nom-proy

Localidad-proy

23.8

Siracusa

Moron

42.5

Finanzas

D.F.

TABLA PROYECTO

Recopil: Dra. Maria del Pilar Angeles

42

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Tercera forma normal y la forma normal de Boyce Codd.


Para definir formalmente la 3FN necesitamos definir 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.
Por ejemplo, la dependencia SSN->DMGRSSN es una dependencia transitiva en EMP_DEPT de la
siguiente figura. Decimos +son mantenidas, y DNUMBER no es un subconjunto de la clave de
EMP_DEPT. Intuitivamente, podemos ver que la dependencia de DMGRSSN sobre DNUMBER es
indeseable en EMP_DEPT dado que DNUMBER no es una clave de EMP_DEPT.
Tercera forma normal.
Definicin formal:
Una relacin R est en 3FN si y solo si esta en 2FN y todos sus atributos no primos dependen no
transitivamente de la llave primaria.
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:

Recopil: Dra. Maria del Pilar Angeles

43

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

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), podemos solucionar esto
aplicando la tercera forma normal que consiste en eliminar estas dependencias 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.
Definicin formal:
Una relacin R esta en FNBC si y solo si cada determinante es una llave candidato.
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:

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.
Tercera Forma Normal (3NF): Remover atributos que dependen de atributos que no son parte del
UID.
Si un atributo de una entidad, es dependiente de otro atributo, el cual no es parte del UID, entonces stos
atributos deben formar las bases para una nueva entidad, la cual tiene una relacin de 1 a Muchos hacia la
entidad original. El UID de la nueva entidad es aquel atributo del cual otro es dependiente
EMPLEADO
noemp
Nombre
Fec-nac
Normalizado, se convierte en dos relaciones

Direccion

Depto

nodepto

Cant-emp

12345

Arroyo 12

Ventas

23

Juan

12/12/67

Recopil: Dra. Maria del Pilar Angeles

44

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

EMPLEADO
# noemp
nombre
fec-nac
direccin
nodepto

DEPARTAMENTO
#nodepto
depto
cant-emp

EMPLEADO
Noemp

Nombre

Fec-nac

Direccion

nodepto

12345

Juan

12/12/67

Arroyo 12

DEPARTAMENTO

nodepto

Depto

Cant-emp

Ventas

23

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 Especialidad Curso
S01

Sistemas

Natacin

S01

Bioqumica

Danza

S01

Sistemas

Natacin

B01

Bioqumica

Guitarra

C03

Civil

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

Recopil: Dra. Maria del Pilar Angeles

45

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

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 Especialidad
S01

Sistemas

B01

Bioqumica

C03

Civil

Tabla Curso
Clave Curso
S01

Natacin

S01

Danza

B01

Guitarra

C03

Natacin

Cuarta Forma Normal: Toda dependencia multivaluada entre A y B en la RElacion R tiene la caracterstica
de que los atributos de R dependenc funcionalmente de A. DEBE existir HASTA UNA dependencia
MULTIVALUADA (MVD) por cada relacin.
Figura
Color
GEOMETRIA
TAMAO
COLOR
Figura
Color
Tamao
Figura
Tamao
Cuadrado Rojo
Cuadrado Rojo
Grande
Cuadrado Grande
Circulo
Blanco Mediano
Circulo
Mediano
Circulo
Blanco
Circulo
Azul
chico
Circulo
chico
Circulo
Azul

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.

Recopil: Dra. Maria del Pilar Angeles

46

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

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
Una relacion esta en quinta forma normal si toda dependencia de join possible en R, se puede obtener a
partir de las claves candidatas de R.

Ejercicios de Normalizacion:

Se listan todos los datos del sistema, describiendo las tablas, llaves primarias y llaves forneas que sern
tiles para hacer los enlaces entre las tablas. Se examinan aquellos datos que tienen el resultado de un
clculo porque regularmente stos no se almacenan en la base de datos, como seria por ejemplo el total de
sueldos devengados por departamento.
1. Ejemplo: A continuacin se detalla el estado inicial de las tablas:
Empleados
Cdigo Empleado
o Apellido
o Nombre
o Cdigo de Depto.
o Nombre del Depto.
o Cdigo del Puesto
o Cdigo Especializacin 1..3
o Descripcin Especializacin 1..3
o Establecimiento 1..3
o Ao obtenido 1..3
Categora de Puesto
o Cdigo de Puesto
o Nombre
o Requisito 1..3
o
( Las llaves primarias estn subrayadas y sobreimpresas. Las llaves forneas estn subrayadas )

PRIMERA FORMA NORMAL


Es en la primera forma normal donde se eliminan las columnas que son redundantes en la misma fila y se
crea una o ms tablas y relaciones con los datos eliminados de la tabla original. Se alcanza la primera forma
normal cuando ya no existen grupos de datos que se repiten.
En el caso de las tablas antes mencionadas la informacin redundante estaba en las siguientes tablas:

Empleados: cdigo de especializacin, establecimiento y ao en el que se obtuvo ya que para cada


empleado puede tener hasta tres diplomas o ttulos.

Categora de Puestos: Se tena de 0 a 3 requisitos que debe cumplir el candidato al puesto

Despus de detectados los datos que estn redundantes se procede a eliminarlos de la tabla original y se
crea una nueva con sus relaciones a otras tablas.
(1) 1..3 porque se puede tener hasta 3 especialidades por empleado, registrando el cdigo, descripcin,
establecimiento y ao en el que se obtuvo cada uno de ellos.
(2) 1..3 porque se puede tener hasta 3 requisitos para que una persona desempee el puesto.
Con estas nuevas tablas ya no se tendr limitado a 3 el nmero de diplomas, ttulos o especialidades por
empleado de igual manera para cada puesto puede tenerse ms de 3 requisitos que debe cumplir el
candidato al puesto.
Empleado

Recopil: Dra. Maria del Pilar Angeles

47

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Cdigo Empleado
Apellido
Nombre
Cdigo de Depto.
Nombre del Depto.
Cdigo del Puesto
Especializacin
Cdigo Empleado
Cdigo Especializacin
Descripcin Especializacin
Establecimiento
Ao obtenido
Categora de Puesto
Cdigo de Puesto
Nombre
Cdigo de Requisito
Requisitos
Cdigo de Requisito
Descripcin

SEGUNDA FORMA NORMAL


Se aplica para tablas cuya llave primaria es compuesta y se eliminan las columnas que depende slo de una
parte de la llave creando una o varias tablas con los datos que se removieron dejando nicamente los datos
dependientes.
Si se examinan cada una de las tablas que se encuentran en primera forma normal se puede observar que
slo la tabla de especializacin cuenta con una llave primaria compuesta y que las columnas
establecimiento y ao obtenido dependen completamente de la llave primaria y no de una parte de ella Por
que?, porque el establecimiento y ao en el que un empleado obtuvo una especializacin tiene relacin
directa con el empleado y con el identificador de la especializacin y no puede ser relacionado slo con uno
de ellos. Sin embargo, la descripcin de la especializacin depende slo del cdigo de especializacin, por
lo que deber sacarse de esta tabla y crear una nueva, Catlogo Acadmico, quedando la segunda forma
normal as:
Empleados
Cdigo Empleado
Apellido
Nombre
Cdigo de Depto.
Nombre de Depto.
Cdigo del puesto
Categora de Puesto
Cdigo de Puesto
Nombre
Cdigo Requisito
Catlogo Acadmico
Cdigo de Especialidad
Descripcin
Especializacin
Cdigo Empleado
Cdigo Especializacin

Recopil: Dra. Maria del Pilar Angeles

48

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Establecimiento
Ao Obtenido
Requisitos
Cdigo Requisito
Descripcin
( Las llaves primarias estn subrayadas y sobreimpresas.
Las llaves forneas estn subrayadas )
TERCERA FORMA NORMAL
Para que los datos se encuentran en tercera forma normal, las columnas no llave, no deben ser dependientes
transitivos de la llave primaria.
En una tabla se dice que tiene dependencia transitivas si:
La columna A es dependiente de la columna B y
la columna B depende de la columna C, entonces
la columna A depende de la columna C, siendo C la llave primaria.
Este tipo de dependencia puede provocar problemas si no se elimina, ya que de desconocer tal caracterstica
de los datos se pueden eliminar datos inapropiadamente, como seria el caso si se elimina C siendo A y B
dependientes de C, tambin se borrarn.
Para las tablas del sistema de informacin de empleados los datos ya se encuentran en segunda forma
normal y s tienen dependencia transitiva en la tabla de Empleados. La llave primaria de la tabla de
Empleados es cdigo empleado. Los atributos apellido, nombre, cdigo de Depto. y cdigo del puesto
dependen directamente del cdigo empleado. Sin embargo, el nombre de Depto. depende directamente del
cdigo de Depto. y no de cdigo empleado, por lo que se deber crear otra tabla llamada Departamento,
quedando el diseo en tercera forman normal, as:
Empleados
Cdigo Empleado
Apellido
Nombre
Cdigo de Depto.
Cdigo del Puesto
Departamento
Cdigo de Depto.
Nombre
Categora de Puesto
Cdigo de Puesto
Nombre
Cdigo Requisito
Catlogo Acadmico
Cdigo Especialidad
Descripcin
Especializacin
Cdigo Empleado
Cdigo Especializacin
Requisitos
Cdigo Requisito
Descripcin

Recopil: Dra. Maria del Pilar Angeles

49

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

( Las llaves primarias estn subrayadas y sobreimpresas.


Las llaves forneas estn subrayadas )

2.

Ejemplo: A continuacin se detalla el estado inicial de las tablas.

Se tienen los datos en segunda forma normal, encontrando que los datos de producto terminado son
dependientes de los datos de materia prima y los datos de materia prima son dependientes de proveedor,
entonces productos terminados son dependientes de proveedor como se puede visualizar en la figura de
abajo. Debido a la transitividad si se borra un proveedor se borran los datos de productos terminados y los
datos de materia prima, situacin que no seria conveniente.
Producto
Terminado
Materia
Prima
Proveedor
Productos
Cdigo de Producto
Cdigo de Proveedor
Cdigo de Materia Prima
Nombre del Proveedor
Direccin del Proveedor
Descripcin del Producto
Descripcin de Materia Prima
Valor Producto
( Las llaves primarias estn subrayadas y sobreimpresas )
Para eliminar este problema se procede a eliminar de la tabla los datos de materia prima y de proveedores;
con esos datos se crean dos tablas nuevas llamadas Proveedores y Materia Prima.
Productos
Cdigo Producto
Descripcin Producto
Valor Producto
Proveedores
Cdigo Proveedor
Nombre Proveedor
Direccin del Proveedor
Materia Prima
Cdigo Materia Prima
Descripcin Materia Prima
( Las llaves primarias estn subrayadas y sobreimpresas )
Para poder realizar este trabajo el diseador debe tener conocimiento de la relacin entre los datos y de las
actividades de la empresa donde stos son utilizados.

Recopil: Dra. Maria del Pilar Angeles

50

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Evaluacion
1. La normalizacin tiene como objetivo:
Simplificar la redundancia.
Eliminar la inconsistencia de los datos.
Simplificar la relacin entre los campos de un registro.
2. Las formas normales se disearon para:
Prevenir anomalas en las tablas implicadas en un modelo.
Facilitar la representacin grfica de los modelos.
Bsicamente para manejar la relacin como una tabla de datos.
Top of Form
3. Una afinidad (tabla) se encuentra en 1FN si:
Todos sus atributos determinantes son atmicos.
La tabla contiene valores mltiples por cada rengln columna que la conforman.
La tabla contiene valores simples por cada rengln columna que la conforman.
Top of Form
4. Una tabla esta en 2FN cuando:
En la tabla todos sus atributos son llaves.
En la tabla todos sus atributos no llaves dependen de las que si lo son.
En la tabla los valores multivaluados determinan a otra atributo.
Top of Form
5. Podemos decir que una afinidad esta en 3FN si:
Existe una dependencia transitiva en la afinidad.
No existen dependencias transitivas en la afinidad.
todos los atributos dependen funcionalmente de otros y existe dependencia transitiva.

Recopil: Dra. Maria del Pilar Angeles

51

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

TAREA: Investigar las 12 reglas de Codd.


Reglas de Codd Codd se percat de que existan bases de datos en el mercado las cuales decan ser
relacionales, pero lo nico que hacan era guardar la informacin en las tablas, sin estar estas tablas
literalmente normalizadas; entonces ste public 12 reglas que un verdadero sistema relacional debera
tener, en la prctica algunas de ellas son difciles de realizar. Un sistema podr considerarse "ms
relacional" cuanto ms siga estas reglas.
Regla No. 1 - La Regla de la informacin [editar]Toda la informacin en un RDBMS est explcitamente
representada de una sola manera por valores en una tabla.
Cualquier cosa que no exista en una tabla no existe del todo. Toda la informacin, incluyendo nombres de
tablas, nombres de vistas, nombres de columnas, y los datos de las columnas deben estar almacenados en
tablas dentro de las bases de datos. Las tablas que contienen tal informacin constituyen el Diccionario de
Datos. Esto significa que todo tiene que estar almacenado en las tablas.
Toda la informacin en una base de datos relacional se representa explcitamente en el nivel lgico
exactamente de una manera: con valores en tablas. Por tanto los metadatos (diccionario, catlogo) se
representan exactamente igual que los datos de usuario. Y puede usarse el mismo lenguaje (ej. SQL) para
acceder a los datos y a los metadatos (regla 4)

Regla No. 2 - La regla del acceso garantizado [editar]Cada tem de datos debe ser lgicamente accesible al
ejecutar una bsqueda que combine el nombre de la tabla, su clave primaria, y el nombre de la columna.
Esto significa que dado un nombre de tabla, dado el valor de la clave primaria, y dado el nombre de la
columna requerida, deber encontrarse uno y solamente un valor. Por esta razn la definicin de claves
primarias para todas las tablas es prcticamente obligatoria.

Regla No. 3 - Tratamiento sistemtico de los valores nulos [editar]La informacin inaplicable o faltante
puede ser representada a travs de valores nulos.
Un RDBMS (Sistema Gestor de Bases de Datos Relacionales) debe ser capaz de soportar el uso de valores
nulos en el lugar de columnas cuyos valores sean desconocidos o inaplicables.
Regla No. 4 - La regla de la descripcin de la base de datos [editar]La descripcin de la base de datos es
almacenada de la misma manera que los datos ordinarios, esto es, en tablas y columnas, y debe ser
accesible a los usuarios autorizados.
La informacin de tablas, vistas, permisos de acceso de usuarios autorizados, etc, debe ser almacenada
exactamente de la misma manera: En tablas. Estas tablas deben ser accesibles igual que todas las tablas, a
travs de sentencias de SQL (o similar).
Regla No. 5 - La regla del sub-lenguaje Integral [editar]Debe haber al menos un lenguaje que sea integral
para soportar la definicin de datos, manipulacin de datos, definicin de vistas, restricciones de integridad,
y control de autorizaciones y transacciones.
Esto significa que debe haber por lo menos un lenguaje con una sintaxis bien definida que pueda ser usado
para administrar completamente la base de datos.
Regla No. 6 - La regla de la actualizacin de vistas [editar]Todas las vistas que son tericamente
actualizables, deben ser actualizables por el sistema mismo.
La mayora de las RDBMS permiten actualizar vistas simples, pero deshabilitan los intentos de actualizar
vistas complejas.

Recopil: Dra. Maria del Pilar Angeles

52

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Regla No. 7 - La regla de insertar y actualizar [editar]La capacidad de manejar una base de datos con
operandos simples aplica no slo para la recuperacin o consulta de datos, sino tambin para la insercin,
actualizacin y borrado de datos'.
Esto significa que las clusulas para leer, escribir, eliminar y agregar registros (SELECT, UPDATE,
DELETE e INSERT en SQL) deben estar disponibles y operables, independientemente del tipo de
relaciones y restricciones que haya entre las tablas.
Regla No. 8 - La regla de independencia fsica [editar]El acceso de usuarios a la base de datos a travs de
terminales o programas de aplicacin, debe permanecer consistente lgicamente cuando quiera que haya
cambios en los datos almacenados, o sean cambiados los mtodos de acceso a los datos.
El comportamiento de los programas de aplicacin y de la actividad de usuarios va terminales debera ser
predecible basados en la definicin lgica de la base de datos, y ste comportamiento debera permanecer
inalterado, independientemente de los cambios en la definicin fsica de sta.
Regla No. 9 - La regla de independencia lgica [editar]Los programas de aplicacin y las actividades de
acceso por terminal deben permanecer lgicamente inalteradas cuando quiera que se hagan cambios (segn
los permisos asignados) en las tablas de la base de datos.
La independencia lgica de los datos especifica que los programas de aplicacin y las actividades de
terminal deben ser independientes de la estructura lgica, por lo tanto los cambios en la estructura lgica no
deben alterar o modificar estos programas de aplicacin.

Regla No. 10 - La regla de la independencia de la integridad [editar]Todas las restricciones de integridad


deben ser definibles en los datos, y almacenables en el catalogo, no en el programa de aplicacin.
Las reglas de integridad Ningn componente de una clave primaria puede tener valores en blanco o nulos.
(esta es la norma bsica de integridad).
Para cada valor de clave fornea deber existir un valor de clave primaria concordante. La combinacin de
estas reglas aseguran que haya Integridad referencial.
Regla No. 11 - La regla de la distribucin [editar]El sistema debe poseer un lenguaje de datos que pueda
soportar que la base de datos est distribuida fsicamente en distintos lugares sin que esto afecte o altere a
los programas de aplicacin.
El soporte para bases de datos distribuidas significa que una coleccin arbitraria de relaciones, bases de
datos corriendo en una mezcla de distintas mquinas y distintos sistemas operativos y que est conectada
por una variedad de redes, pueda funcionar como si estuviera disponible como en una nica base de datos
en una sola mquina.
Regla No. 12 - Regla de la no-subversin [editar]Si el sistema tiene lenguajes de bajo nivel, estos
lenguajes de ninguna manera pueden ser usados para violar la integridad de las reglas y restricciones
expresadas en un lenguaje de alto nivel (como SQL).
Algunos productos solamente construyen una interfaz relacional para sus bases de datos No relacionales, lo
que hace posible la subversin (violacin) de las restricciones de integridad. Esto no debe ser permitido.
Referencias [editar] A Relational Model of Data for Large Shared Data Banks Communications of the
ACM, Vol. 13, No. 6, June 1970, pp. 377-387 [1]
E.F.Codd (junio 1970). "A Relational Model of Data for Large Shared Databanks". Communications of the
ACM.
C.J.Date (1994). "An Introduction to Database Systems". Addison-Wesley.

Recopil: Dra. Maria del Pilar Angeles

53

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

4.3. Diseo de Base de Datos


Ejemplos de diseo de Base de Datos
FORMATO DE ENTREGA:
Hoja de requerimientos.
Diagrama Entidad - Relacin
Modelo Relacional
A continuacion se presentan los proyectos correspondientes a Diseo de Base de Datos Relacionales.

1.- La Direccin General de Reclusorios ha decidido crear una Base de Datos con informacin sobre sus
reclusos. Las clases y atributos son:
RECLUSO
Atributos:
NOMBRE
Es el nombre del recluso.
ESCOLARIDAD
la escolaridad del recluso:
-Analfabeta,
-Primaria Incompleta,
-Primaria Completa,
-Secundaria,
-Preparatoria,
-Licenciatura,
-Postgrado.
DELITO
Atributos:
NOM_DELITO Es el nombre del delito.
GRUPO Es el nombre del grupo donde se incluye el delito:
-Delitos contra la salud,
-Violencia,
-Delitos administrativos,
-Otros.
JUEZ
Atributos:
NOM_JUEZ Es el nombre del juez
AOS__EXP Aos de experiencia.
PENA
DAS Es algn nmero de das. Este conjunto se forma por valores naturales consecutivos de 1 < 100,000.
por cada uno de los delitos cometidos.
i)
Dado el nombre del recluso, obtener quien fue el juez que lo juzgo y cuntos das deber
cumplir por condena.
ii)
Dado el nombre del juez, obtener el nombre de los reclusos que ha juzgado as como el
promedio de das que suele poner por condena a estos reclusos.
iii)
Dado el nombre del delito, obtener el nmero de reclusos que estn cumpliendo condena por
ese mismo delito.
iv)
Dado el nmero de das obtener el nombre de los reclusos que cumplen una pena del mismo
nmero de das.

Recopil: Dra. Maria del Pilar Angeles

54

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

2.- El Departamento de Trnsito de cierta ciudad desea un Sistema de Base de Datos que le permita
controlar las infracciones cometidas por los propietarios de los automviles registrados en dicho
Departamento.
El Sistema debe contestar a las siguientes preguntas:
i)

ii)
iii)
iv)

Dado el nmero de placas de cierto automvil conocer el nombre y domicilio de todas


aquellas personas que han sido propietarios de ste automvil (propietarios anteriores y
propietario actual.
Dado el nombre de un propietario, conocer la marca y modelo de todos los automviles que
actualmente posee.
Dado el nombre de un propietario, conocer el folio y el monto de la multa de cada una
de las infracciones que ha cometido.
Dado el nmero de placas de un automvil, conocer el folio y el monto de la multa de cada
una de las infracciones que se le han levantado, as como el nombre y domicilio de los
propietarios que cometieron cada una de estas infracciones.

Recopil: Dra. Maria del Pilar Angeles

55

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

3.- Cierta escuela decide automatizar el Control Bibliotecario de Prstamo de Libros a sus Alumnos.
El sistema debe contestar las siguientes preguntas:
i)
Dada la matrcula de un alumno, conocer el ttulo, autores y editorial del libro que tiene
dicho alumno en calidad de prstamo.
ii)
Dado el nmero de clasificacin de un libro conocer el nombre, domicilio y nmero
telefnico de los alumnos que tienen este libro en calidad prstamo.
iii)
Dado el nmero de clasificacin de un libro, conocer la fecha en que debern ser
devueltos cada uno de los ejemplares prestados de este libro.
iv)
Conocer el nmero de clasificacin y ttulo de aquellos libros para los cuales todos sus
ejemplares estn prestados.
Al disear esta base de datos, usted debe tomar en cuenta lo siguiente:
Por poltica de la escuela, cada alumno puede tener solamente un libro en calidad de
prstamo.
Un libro puede tener varios autores y cada autor pudo haber escrito varios libros.
El nmero de clasificacin es el mismo para todos los ejemplares de un mismo libro, pero
distinto para dos libros en los cuales el titulo, autores o editorial difieren.

Recopil: Dra. Maria del Pilar Angeles

56

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

4.- La Universidad decidi automatizar la gestin sobre sus ex alumnos. El sistema debe contestar las
siguientes preguntas;
i)
Dada una carrera, conocer la matrcula y domicilio de todos los ex alumnos que cursaron esta
carrera.
ii)
Dado el nombre de una empresa y el nombre de una de sus sucursales, conocer el nombre de
todos los ex alumnos que trabajan o trabajaron en esta sucursal.
iii)
Dada la matrcula de un ex alumno, conocer los datos sobre las empresas en las que ha
trabajo (nombre, RFC y pas de origen de la empresa, as como el nombre, domicilio y
telfono de la sucursal correspondiente).
iv)
Dada la matricula de un ex alumno, conocer los nombres de todos sus familiares que tambin
sean ex alumnos de la Universidad, as como los niveles de las carreras (licenciatura,
maestra o diplomado) y las correspondientes carreras estudiadas por cada uno de estos
familiares.

Recopil: Dra. Maria del Pilar Angeles

57

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

5.- Se desea crear un Sistema de Base de Datos que permita obtener informacin sobre los equipos
conectados a las diversas redes de comunicacin (entre computadoras) que existen en el mundo. El
sistema debe contestar las siguientes preguntas:
i)
ii)
iii)

iv)

Dado el nombre de una institucin, conocer la marca y modelo de las computadoras que
posea, as como tamao de la memoria principal de cada una de stas computadoras.
Dado el nombre de un paquete de software, conocer el nombre y domicilio de las
instituciones que tengan este paquete en alguna de sus computadoras
Dado el nombre de una institucin X, conocer el nombre de las instituciones cuyas
computadoras estn conectadas a las mismas redes que las computadoras de la institucin
X (suponga que una institucin tiene comunicacin con una red, todas las computadoras de
esta institucin forma parte de dicha red).
Dado el nombre de una institucin X, conocer nombre de las instituciones (conectadas a
las mismas redes a las que pertenece la institucin X que tengan una impresora de cierto tipo
y velocidad (por ejemplo: lser de 500 hojas por minuto, de lneas de 600 lpm. etc), as como
la marca y modelo de las computadoras a las que estn conectadas a dichas impresoras.

5. Lenguaje de Consulta Estructurado (SQL)


Objetivo: El alumno aplicar la normalizacin en la eficiencia de las operaciones de la base de datos,
especialmente en la optimizacin de consultas.
Un lenguaje de consulta comercial proporciona una interfaz ms amigable al usuario. Un ejemplo de este
tipo de lenguaje es el SQL, (Structured Query Languaje, Lenguaje de Consulta Estructurado).
Las partes ms importantes del SQL son:
DDL: Lenguaje de definicin de datos (que nos permite crear las estructuras )
DQL: Lenguaje de consulta de datos (nos permite accesar a los datos a travs de criterios de seleccin,
agrupacin, ordenamiento, etc.)
DML: Lenguaje de manipulacin de datos (que nos permite tener acceso a las estructuras para suprimir,
modificar e insertar)
DCL: Lenguaje de control de acceso a los datos (nos permite dar permisos de acceso a los usuarios
autorizados)

5.1. Lenguaje de Definicin de datos en SQL (DDL) (ppt: ddl)

Recopil: Dra. Maria del Pilar Angeles

58

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Como se mencion al inicio de este apartado del SQL, est cuenta con mdulos DDL, para la definicin
de datos que nos permite crear o modificar la estructura de las tablas.
En este curso se ver Transact-SQL de Sybase, el cual es compatible con IBM SQL y con la mayora de las
dems implementaciones comerciales de SQL, y tambin proporciona importantes capacidades y funciones
adicionales.

Recopil: Dra. Maria del Pilar Angeles

59

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Recopil: Dra. Maria del Pilar Angeles

Base de Datos

60

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

En este curso se vern algunos comandos mas importantes de Transact SQL.


http://manuals.sybase.com/onlinebooks/group-asarc/svs11001/sqlrefsp/@ebtlink;pt=62;lang=es?target=%25N%15_59548_START_RESTART_N%25
CREATE TABLE: Nos permite crear una tabla de datos vaca.
CREATE INDEX: Crea un ndice que nos puede auxiliar para las consultas.
DROP TABLE: Permite borrar una tabla.
DROP INDEX: Borra el ndice indicado.
Para ejemplificar las instrucciones anteriores consideremos el ejemplo
ALUMNO cursa
- MATERIA, que tienen los siguientes atributos:
NControl
NControl
Clave
NombreA
Clave
NombreM
Especialidad Calif
Creditos
Direccin
Creacin y borrado de tablas
* Estructura de la sentencia CREATE TABLE.
CREATE TABLE <Nombre de la tabla>
(
Atributo1: tipo de dato longitud ,
Atributo2: tipo de dato longitud ,
Atributo3: tipo de dato longitud ,
:
:
Atributon: tipo de dato longitud ,
PRIMARY KEY (Opcional) ) ;
Los campos pueden definirse como NOT NULL de manera opcional excepto en la llave primaria para lo
cual es obligatorio. Adems al definir la llave primaria se genera automticamente un ndice con respecto al
campo llave; para definir la llave la denotamos dentro de los parntesis de PRIMARY KEY.
Ejemplo:
Crear la tabla alumno con los atributos antes descritos, tomando como llave el numero de control.
CREATE TABLE Alumno
(
NControl char(8) NOT NULL,
NombreA char(20),
Especialidad char(3),
Direccin char(30),
PRIMARY KEY (NControl) );
Tabla Alumno:
NControl NombreA Especialidad Direccin

Pueden existir ms de una llave primaria, esto es si se requiere, se crearn tantos ndices como llaves
primarias se establezcan.
Pueden existir tantos campos Not Null (No nulos) como se requieran; En si estructurar la creacin de una
tabla es siempre parecida al ejemplo anterior.
Borrado de tablas
* Estructura de la sentencia DROP TABLE
DROP TABLE Nombre de la tabla a borrar;
Ejemplo:
Borrar la tabla Alumno creada anteriormente.
DROP TABLE Alumno;

Recopil: Dra. Maria del Pilar Angeles

61

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Implementacion del Control de Integridad

Existen dos mtodos para el control de la integridad de los datos:

1.- Constraints
a nivel tabla
o columna

2.- Objetos de bases de datos


asociados a diversas tablas y columnas.

Ventajas y desventajas de estos mtodos:


Estos mtodos son mutuamente excluyentes en algunos casos.
Los constraints estn ms limitados que los defaults, reglas, indices, procedimientos almacenados y
triggers, no pueden contener subconsultas o funciones agregadas.

Los triggers proporcionan un manejo y control ms complejo de la integridad.

Las reglas o defaults pueden ser utilizados para mas tablas con sp_bindrule.
Constraints
Se pueden crear los siguientes tipos de restricciones:
Unique: Evita duplicidad en los valores del campo especificado
Se crea unique nonclustered index por default;

Clustered, Nonclustered Index : Generacin de indices.

Primary key: Evita valores nulos para el campo especificado. Primary key constraints crea unique
clustered index por default.
Ejemplo: create table my_sales
(stor_id char(4),
ord_num
varchar(20),
date
datetime,
unique clustered (stor_id, ord_num))

References (Integridad Referencial): Requiere que los datos que estn siendo insertados, existan
ya en determinada tabla.columna,(sp_helpconstraint para saber las tablas referenciadas).

Valores nulos o no nulos (NULL, NOT NULL): Se condiciona que determinado campo pueda
tomar valor Nulo o no.
create table stores
(stor_id char(4) notnull,
stor_name varchar(40) null,
stor_address varchar(40) null,
city
varchar(20) null,
state
char(2) null,
country varchar(12) null,
postalcode char(10) null,

/* No puede tomar valor nulo*/


/*Puede tomar valor nulo*/

Recopil: Dra. Maria del Pilar Angeles

62

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera
payterms varchar(12) null,
unique nonclustered (stor_id))

Base de Datos

/*Indice no agrupado */

create table store_employees


(stor_id char(4) null
references stores(stor_id),
emp_id
id not null,
mgr_id
id null
references store_employees(emp_id),
emp_lname varchar(40) not null,
emp_fname varchar(20) not null,
phone
char(12) null,
address
varchar(40) null,
city
varchar(20) null,
state
char(2) null,
country varchar(12) null,
postalcode varchar(10) null,
unique nonclustered (emp_id))

Check: Limita los valores insertados en las columnas


Ejemplo:
create table my_publishers
(pub_id char(4) constraint my_chk_constraint
check (pub_id in ("1389", "0736", "0877")), /* dominio de valores*/
pub_name varchar(40))

Foreign Key: Especifica que columnas de la tabla actual, son llaves forneas cuyas claves
corresponden a las listadas en la sentencia references.
Ejemplo
constraint sales_detail_constr
foreign key (stor_id, ord_num)
references my_salesdetail(stor_id, ord_num)
Creando mensajes de error
Se puede crear un mensaje de error y asociarlo a un constraint.
-- sp_addmessage 25001,
"The publisher ID must be 1389, 0736, or 0877"
-- sp_bindmsg my_chk_constraint, 25001
-- insert my_publishers values
("0000", "Reject This Publisher");
Msg 25001, Level 16, State 1:
Server 'snipe', Line 1:
The publisher ID must be 1389, 0736, or 0877
Command has been aborted.

Se puede eliminar la liga del mesaje al constraint


Sp_unbindmessage my_chk_constraint
Sp_dropmessage 25001

Valores por Default


- Expresin constante
o
- User (que puede tomar el user name como default
o
- Null (que tome valor nulo por omisin)
Ejemplo:
create table my_titles
(title_id
char(6),

Recopil: Dra. Maria del Pilar Angeles

varchar(30)

63

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

title
varchar(80),
price
money
default null,
total_sales
int
default 0) /*Valor 0 por omisin */
Objeto:Reglas

Permiten especificar que usuarios pueden o no pueden accesar a determinada columna o a


cualquier columna con un tipo de dato definido por el usuario.
Para poder usarlas se requiere de los siguientes pasos:
a) Crear la regla
b) Asociarla a una columna o tipo de datos de usuario
Sintaxis:
create rule [owner.]rule_name
as condition_expresin
Ejemplo:
create rule pub_idrule
as @pub_id in ("1389", "0736", "0877", "1622", "1756")
or @pub_id like "99[0-9][0-9]"
create rule agerule
as @age between 1 and 120 and @age ! = 17
Para asociar las reglas:
sp_bindrule rulename, objname [, futureonly]
ejemplo:
sp_bindrule pub_idrule, "publishers.pub_id"
Creacin de valores por omisin:
create default [owner.]default_name
as constant_expression
Ejemplo:
create default phonedflt as "UNKNOWN"
sp_bindefault phonedflt, "authors.phone"
Otro:
create default todays_date as getdate()
drop default, sp_unbindefault
Objeto:Indices

Indices compuestos:Aquellos que se generan a travs del orden lgico de varias columnas.

Indices nicos:No permiten que la columna que corresponde al ndice tenga valores duplicados.

Indices clustered: El orden fsico de los datos corresponde al orden lgico marcado por la
columna. Esto forza al manejador a estar constantemente redistribuyendo y ordenando los datos
fsicamente.

Indices non clustered: Se realiza un ordenamiento lgico basndose en la columna o columnas


indicadas, pero no corresponde con el orden en el que son almacenados fsicamente los datos.
create [unique] [clustered | nonclustered]
index index_name
on [[database.]owner.]table_name (column_name
[, column_name]...)
[with {{fillfactor | max_rows_per_page} = x,
ignore_dup_key, sorted_data,
[ignore_dup_row | allow_dup_row]}]
[on segment_name] [with consumers = x]

Recopil: Dra. Maria del Pilar Angeles

64

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Ejemplos:
create index au_id_ind
on authors(au_id)
create unique clustered index phone_ind
on friends_etc(phone)
with ignore_dup_key
Objeto:Procedimiento almacenado

Coleccin precompilada de instrucciones de Transact-SQL almacenadas bajo un nombre y


procesadas como una unidad.

Los procedimientos almacenados estn disponibles para administrar SQL Server y mostrar
informacin acerca de bases de datos y usuarios.

Los procedimientos almacenados proporcionados por SQL Server reciben el nombre de


procedimientos almacenados del sistema.
create procedure mathtutor @mult1 int, @mult2 int,
@result int output
as select @result = @mult1 * @mult2

Si queremos que imprima el resultado deberemos:


declare @result int
exec mathtutor 5, 6, @result output
(return status = 0)
Return parameters:
----------30
Objeto: Trigger
Es un procedimiento almacenado que tiene efecto cuando se inserta, borra o actualiza datos en una tabla y
sirve para realizar cambios automticos como:
a) Cambios en cascada a travs de tablas relacionadas
b) Forzar restricciones a nivel columna
c) Comparar resultados de modificaciones de datos
d) Mantener integridad referencial en la base de datos
create trigger [owner.]trigger_name
on [owner.]table_name
{for {insert , update , delete}
as SQL_statements
Sentencias que no pueden ser utilizadas dentro de un trigger
create database, create table, create index, create procedure, create default, create rule, create trigger,
and create view

Todos los commandos drop

alter table and alter database

truncate table

grant and revoke

update statistics

reconfigure

load database and load transaction

select into
create trigger forinsertrig1
on salesdetail
for insert as
if (select count(*)

Recopil: Dra. Maria del Pilar Angeles

65

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

from titles, inserted


where titles.title_id = inserted.title_id) !=
@@rowcount /* Cancel the insert and print a message.*/
begin
rollback transaction
print "No, the title_id does not exist in
titles."
end /* Otherwise, allow it. */
else print "Added! All title_id's exist in titles."
create trigger delcascadetrig
on titles
for delete as
delete titleauthor
from titleauthor, deleted
where titleauthor.title_id = deleted.title_id
/* Remove titleauthor rows that match deleted ** (titles) rows.*/
delete salesdetail
from salesdetail, deleted
where salesdetail.title_id = deleted.title_id
/* Remove salesdetail rows that match deleted ** (titles) rows.*/
delete roysched
from roysched, deleted where roysched.title_id = deleted.title_id
/* Remove roysched rows that match deleted ** (titles) rows.*/
Previniendo borrado de llaves primarias
create trigger deltitle
on titles
for delete
as
if (select count(*)
from deleted, salesdetail
where salesdetail.title_id =
deleted.title_id) > 0
begin
rollback transaction
print "You cannot delete a title with sales."
End
En actualizacin de datos:
create trigger cascade_utrig
on titles
for update as
if update(title_id)
begin
update titleauthor
set title_id = inserted.title_id from titleauthor, deleted, inserted
where deleted.title_id =
titleauthor.title_id
update roysched
set title_id = inserted.title_id from roysched, deleted, inserted
where deleted.title_id =
roysched.title_id
update salesdetail
set title_id = inserted.title_id from salesdetail, deleted, inserted where deleted.title_id =
salesdetail.title_id
end

Recopil: Dra. Maria del Pilar Angeles

66

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Lenguaje de Consulta de Datos (ppt: dql)


La forma declarativa de SQL
La estructura bsica de una expresin en SQL contiene 3 partes, Select, From y Where.
La clusula Select se usa para listar los atributos que se desean en el resultado de una consulta.
From, Lista las relaciones que se van a examinar en la evaluacin de la expresin.
Where, es la definicin de las condiciones a las que puede estar sujeta una consulta.
La consulta tpica de SQL tiene la siguiente forma:
Select A1,A2,A3...An
From r1,r2,r3...rm
Where Condicin(es)
GROUP BY [column - identifier ]...
{HAVING having - condition}}
{ORDER BY [ordering] ... }

Cada instruccin SELECT tiene que tener al menos una clusula SELECT y una FROM. Las otras cuatro
clusulas (WHERE, GROUP BY, HAVING, ORDER BY) pueden ser opcionales. El orden de las clusulas
no es aleatorio, sino que tienen un orden especifico, por ejemplo una clusula GROUP BY nunca puede ir
antes que la clusula WHERE o FROM y la clusula ORDER BY siempre es la ltima clusula. Una
clusula HAVING puede ser utilizada solamente si otra clusula GROUP BY est presente tambin. En la
siguiente figura se muestra el orden en el cual SQL procesa las diferentes clusulas.

Figura Procesamiento de las clusulas en un Query.


Donde:
A1,A2,A3...An:

Representan
a
cada
atributo(s)
o
campos
de
las
tablas
de
la
base
de
datos
relacional.
R1,r2,r3...rm:
Representan
a
la(s)
tabla(s)
involucradas
en
la
consulta.
Condicin: Es el enunciado que rige el resultado de la consulta.
Si se omite la clusula Where, la condicin es considerada como verdadera, la lista de atributos
(A1,A2..An) puede sustituirse por un asterisco (*), para seleccionar todos los atributos de todas las tablas
que aparecen en la clusula From.
Funcionamiento del SQL.
El SQL forma el producto cartesiano de las tablas involucradas en la clusula From, cumpliendo con la
condicin establecida en la orden Where y despus proyecta el resultado con la orden select.
Para nuestros ejemplos consideremos una tabla llamada CURSO, que contiene los siguientes campos:

Recopil: Dra. Maria del Pilar Angeles

67

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Nombre del campo

Descripcin

NumC

Nmero del curso, nico para identificar cada curso

NombreC

Nombre del curso, tambin es nico

DescC

Descripcin del curso

Creditos

Crditos, nmero de estos que gana al estudiante al cursarlo

Costo

Costo del curso.

Depto

Departamento acadmico que ofrece el curso.

Datos contenidos en la tabla CURSO


NumC

NombreC

DescC

A01

Liderazgo

S01

Creditos

Costo

Depto

Para
pblico 10
General

100.00

Admn.

Introduccin a la inteligencia artificial

Para ISC y LI

90.00

Sistemas.

C01

Construccin de torres

Para
IC
Arquitectura

0.00

Ciencias

B01

Situacin actual y perspectivas de la alimentacin y Para IB


la nutricin

80.00

Bioqumica

E01

Historia presente y futuro de la energa solar

IE e II

10

100.00

Electromecnica.

S02

Tecnologa OLAP

Para ISC y LI

100.00

Sistemas

C02

Tecnologa del concreto y de las Estructuras

Para IC

10

100.00

Ciencias

B02

Metabolismo de lpidos en el camarn

Para IB

10

0.00

Bioqumica

E02

Los sistemas elctricos de potencia

Para IE

10

100.00

Electromecnica

S03

Estructura de datos

Para ISC y LI

0.00

Sistemas

A01

Diseo bioclimtico

Para
Arquitectura

10

0.00

Arquitectura

C03

Matemticas discretas

General

0.00

Ciencias

S04

Circuitos digitales

Para ISC

10

0.00

Sistemas

S05

Arquitectura de Computadoras

Para ISC

10

50.00

Sistemas

I01

Base de Datos Relacionales

Para ISC y LI

10

150.00

Informtica

10
y 8

Consultas simples
OBTENCIN DE UNA TABLA ENTERA

Obtener toda la informacin disponible sobre un curso donde Costo sea 0.


SELECT
FROM
WHERE Costo=0.00
Resultado de la consulta anterior.

Recopil: Dra. Maria del Pilar Angeles

*
CURSO

68

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

NumC

NombreC

DescC

C01

Construccin de torres

Para
IC
Arquitectura

B02

Metabolismo de lpidos en el camarn

Para IB

S03

Estructura de datos

A01
C03

Creditos

Costo

Depto

0.00

Ciencias

10

0.00

Bioqumica

Para ISC y LI

0.00

Sistemas

Diseo bioclimtico

Para
Arquitectura

10

0.00

Arquitectura

Matemticas discretas

General

0.00

Ciencias

y 8

Colocamos un * debido a que no nos limitan la informacin de la tabla, es decir nos piden que
mostremos todos los datos atributo de la tabla CURSO.
Como la nica condicin en la sentencia WHERE es que la tarifa del curso sea igual a 0, esta consulta
regresa todas las tuplas donde se encuentre que Costo = 0.00.
Debido a que Costo es un campo numrico, la condicin solo puede comparar con campos del mismo
tipo. Para representar valores negativos se antepone a la izquierda el signo (-), en este ejemplo se considera
solo el signo (=) para establecer la condicin, sin embargo otros operadores que se pueden utilizar son:
Menor que <
Mayor que >
Menor o igual que <=
Mayor o igual que >=
Diferente <>
Adems de los operadores booleanos AND, NOT, OR.
Cabe sealar que en la sentencia Where cuando se requiere establecer condiciones con cadenas, estas son
delimitadas por apstrofos (). Las expresiones de cadenas son comparadas carcter por carcter, dos
cadenas son iguales solo si coinciden todos los caracteres de las mismas.

Ejemplos de consultas con cadenas:

Obtener toda la informacin sobre cualquier curso que ofrezca el departamento de Ciencias.
SELECT
*
FROM
CURSO
WHERE Depto = 'Ciencias';
Resultado de la consulta.
NumC NombreC

DescC

C01

Construccin de torres

Para IC y 8
Arquitectura

C02

Tecnologa del concreto y de las Para IC


Estructuras

S04

Circuitos digitales

Para ISC

Creditos Costo

Depto

0.00

Ciencias

10

100.00

Ciencias

10

0.00

Sistemas

Las condiciones que se presentan dentro de una clusula WHERE pueden ser de los siguientes tipos:

De comparacin simple.

Condiciones con AND, OR y NOT.

Con el operador BETEWEEN.

Con el operador LIKE.

Con el operador NULL.

Con el operador IN en un subquery.

Con los operadores de comparacin en un subquery.

Con los operadores ANY y ALL.

Recopil: Dra. Maria del Pilar Angeles

69

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Con el operador EXIST.

VISUALIZACIN DE COLUMNAS ESPECIFICADAS.


En los ejemplos anteriores obtenamos toda la tabla completa, ahora veremos como mostrar solo algunos
atributos especficos de una tabla.

Obtener los valores NumC,NombreC y Depto, en este orden de toda la tabla curso.
SELECT NumC, NombreC, Depto
FROM CURSO;
Resultado de la consulta:
NumC

NombreC

Depto

A01

Liderazgo

Admn.

S01

Introduccin a la inteligencia artificial

Sistemas.

C01

Construccin de torres

Ciencias

B01

Situacin actual y perspectivas de la alimentacin y la nutricin

Bioqumica

E01

Historia presente y futuro de la energa solar

Electromecnica.

S02

Tecnologa OLAP

Sistemas

C02

Tecnologa del concreto y de las Estructuras

Ciencias

B02

Metabolismo de lpidos en el camarn

Bioqumica

E02

Los sistemas elctricos de potencia

Electromecnica

S03

Estructura de datos

Sistemas

A01

Diseo bioclimtico

Arquitectura

C03

Matemticas discretas

Ciencias

S04

Circuitos digitales

Sistemas

S05

Arquitectura de Computadoras

Sistemas

I01

Base de Datos Relacionales

Informtica

Observamos que en este caso no se tiene la sentencia Where, no existe condicin, por lo tanto, todas las
filas de la tabla CURSO se recuperan, pero solo se visualizaran las tres columnas especificadas.
As mismo, empleamos la (,) para separar los campos que deseamos visualizar.

Sentencias de Agrupacin
GROUP BY [column - identifier ]...
{HAVING having - condition}}
{ORDER BY [ordering] ...
Funciones agregadas
Existen funciones que permiten la agilizacin de consultas similares a una hoja de clculo, ya que
trabajan en base a renglones y columnas.
COUNT ( ): Cuenta el nmero de tuplas en la columna establecida
MIN ( ): Localiza el valor mnimo de la columna establecida
MAX ( ): Localiza el valor mximo de la columna establecida.
AVG ( ): Obtiene el promedio de valores de la columna establecida

Recopil: Dra. Maria del Pilar Angeles

70

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

SUM ( ): Obtiene el valor total que implican los valores obtenidos en la columna establecida.
Ejemplos:

Obtener el nmero de alumnos que existen en la carrera de Ingeniera en Sistemas


Computacionales.
SELECT Count (*)
FROM Alumno
WHERE especialidad=Computacion;
Consultas de Conjunto
VISUALIZACIN DE UN SUBCONJUNTO DE FILAS Y COLUMNAS

Seleccionar los valores NumC, Depto y Costo para todos los cursos que tengan un Costo inferior a
$100
SELECT NumC, Depto, Costo
FROM CURSO
WHERE Costo < 100.00
Como resultado de esta consulta se obtendrn todas aquellas tuplas que tengan un costo en CTARIFA
menor que 100, y se visualizaran solo los campos de NumC, Depto,Costo.
Podemos observar que este ejemplo cubre el formato general de una consulta SQL.
La palabra clave DISTINCT
DISTINCT, es una palabra reservada que elimina las filas que duplicadas en el resultado de una consulta.

Visualizar todos los departamentos acadmicos que ofrezcan cursos, rechazando los valores
duplicados.
SELECT DISTINCT Depto
FROM CURSO;
Resultado de la consulta
Depto
Administracin
Sistemas
Ciencias
Bioqumica
electromecnica
Arquitectura
Informtica
La palabra DISTINCT va estrictamente despus de la palabra SELECT.
De no haberse utilizado la palabra DISTINCT, el resultado hubiera mostrado todas las tuplas del atributo
Depto que se encontraran, es decir, se hubiera visualizado la columna de Depto completamente.
EMPLEO DE LOS CONECTORES BOOLEANOS (AND, OR, NOT)
Para emplear las condiciones mltiples dentro de la sentencia WHERE, utilizamos los conectores
lgicos.
El conector AND.
Este conector pide al sistema que seleccione una sola columna nicamente si ambas condiciones se
cumplen.

Obtener toda la informacin sobre todos los cursos que ofrece el departamento Sistemas que
tengan una tarifa igual a 0.
SELECT
*
FROM
CURSO
WHERE Depto=Sistemas AND Costo=0.00;
El resultado de esta consulta sera todas aquellas tuplas que cumplan exactamente con las dos
condiciones establecidas.
El conector OR.

Recopil: Dra. Maria del Pilar Angeles

71

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Este conector al igual que el AND permite conectar condiciones mltiples en la sentencia WHERE, a
diferencia del conector AND, el OR permite la seleccin de filas que cumplan con una sola de las
condiciones establecidas a travs de este conector.

Obtener toda la informacin existente sobre cualquier curso ofrecido por los departamentos
Arquitectura o Bioqumica.
SELECT *
FROM CURSO
WHERE Depto = Arquitectura OR Depto= Bioqumica;
El resultado de esta consulta ser la de visualizar todas aquellas tuplas donde se cumpla cualquiera de las
2 condiciones, es decir mostrara todas las tuplas que tengan en el atributo Depto=Arquitectura o
Bioqumica.
El conector NOT
Este nos permite marcar aquellas tuplas que por alguna razn no deseamos visualizar.

Obtener el nombre del curso y del departamento de todos los cursos que no sean ofrecidos por el
departamento Sistemas.
SELECT NombreC, Depto
FROM CURSO
WHERE NOT (Depto=Sistemas);
JERARQUIA DE OPERADORES BOOLEANOS.
En orden descendente (de mayor a menor prioridad) NOT AND OR
Join de Consultas

Existen dos formas para realizar consultas: Join de Querys y Subquerys.


Cuando en la sentencia From colocamos los nombres de las tablas separados por comas se dice que
efectuamos una consulta de la forma Join de Querys, en este caso se requiere anteponer el nombre de la
tabla y un punto al nombre del atributo. En el Join de Querys el resultado que se produce con las tablas que
intervienen en la consulta es la concatenacin de las tablas, en donde los valores de una columna de la
primera tabla coinciden con los valores de una segunda tabla, la tabla de resultado tiene una fila por cada
valor coincidente que resulte de las dos tablas originales.
Para ejemplificar esto, consideremos 2 tablas: Tabla1 y Tabla2, entonces:
C1

C2

C3

CA

CB

AAA

10

35

BBB

45

10

CCC

55

65

DDD

20

20

EEE

20

90

FFF

90

90

GGG

15

75

HHH

90

90

35

Resultado de la operacin Join:


C1

C2

C3

CA

CB

AAA

10

10

DDD

20

20

Recopil: Dra. Maria del Pilar Angeles

72

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

EEE

20

20

FFF

90

90

FFF

90

90

FFF

90

90

HHH

90

90

HHH

90

90

HHH

90

90

Como podemos observar, la comparacin se efectu por las columnas C3 y CA, que son donde se
encontraron valores iguales, el resultado muestra una tupla por cada coincidencia encontrada.
Consultas anidadas
Cuando las consultas se anidan se conoce como Subquerys o subconsultas. Este tipo de consulta obtiene
resultados parciales reduciendo el espacio requerido para realizar una consulta.
Nota: Todas las consultas que se resuelven con subquerys pueden resolverse con Join de Querys, pero no
todas las consultas hechas con Join de Querys pueden resolverse utilizando Subquerys.
Para ejemplificar lo anterior consideremos el ejemplo
ALUMNO cursa
- MATERIA, que tienen los siguientes atributos:
NControl
NControl
Clave
NombreA
Clave
NombreM
Especialidad Calif
Creditos
Direccin
Representando en tablas a los atributos quedaran de la siguiente forma:
Tabla alumno:
NControl NombreA Especialidad Direccin
Tabla cursa:
NControl Clave

Calif

Tabla materia:
Clave

NombreM Creditos

Obtener el nombre de la materia que cursa el alumno con nmero de control 97310211 con
crditos igual a ocho.
SELECT NombreA
FROM Materia
WHERE creditos=8 and clave in(SELECT clave
FROM cursa
WHERE NControl=97310211;

Obtener el nmero de control del alumno que tenga alguna calificacin igual a 100
SELECT DISTINCT(NControl)
FROM Cursa
WHERE Calif=100;

Recopil: Dra. Maria del Pilar Angeles

73

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Obtener el nombre de las materias que cursa el alumno Salvador Chvez.


SELECT NombreM
FROM Materia
WHERE Clave in (SELECT DISTINC (Clave)
FROM Cursa
WHERE NControl in (SELECT NControl)
FROM Alumno
WHERE NombreA=Salvador
Chvez));

Obtener la mximo calificacin que ha obtenido J.M. Cadena.


SELECT Max(Calif)
FROM Cursa
WHERE NControl IN (SELECT NControl
FROM Alumno
WHERE NombreA= J.M. Cadena );

Obtener el promedio de calificaciones de Salvador Chvez.


SELECT Avg (Calif)
FROM Cursa
WHERE NCotrol IN (SELECT NControl
FROM Alumno
WHERE NombreA=Salvador Chvez);

Obtener la suma total de las calificaciones obtenidas por Daniel Coln.


SELECT Sum (Calif)
FROM Cursa
WHERE NControl IN (SELECT NControl
FROM Alumno
WHERE NombreA=Daniel Coln);
Hasta aqu hemos visto el manejo sencillo de realizar consultas con SQL, hay que destacar que en la
realizacin de consultas anidadas se tiene que poner cuidando a la prioridad de los operadores, teniendo
cuidado tambin al momento de agrupar los parntesis que involucran las condiciones con los operadores.

Recopil: Dra. Maria del Pilar Angeles

74

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Tarea

ALUMNO

MATERIA
M

ALUMNO
#no_cta
984433
990122
970204
990124

CURSA

NombreA
Juan Rodrguez Olvera
Jos Ortega Martinez
Laura Sandoval Rodrguez
Lucia Orta Mendez

MATERIA
NombreM
Finanzas
Base de Datos
Estructura de Datos
Contabilidad
Psicometra
Psicologa empresarial
Derecho Administrativo
Derecho I
CURSA
#no_cta
984433
990122
970204
990124
984433
990122
970204
990124

M
Especialidad
Informtica
Derecho
Psicologa
Administracin

Direccin
Abasolo no. 133
Independencia 26
Oriente 42
San Antonio 23-2

claveM
AD001
IN001
IN002
AD002
PS001
PS002
DE001
DE002

crditos
6
5
6
5
6
5
6
5

#claveM
IN001
DE001
PS001
AD001
IN002
DE002
PS002
AD002

Calificacin
10
9
7
5
9
7
9
10

1.
Creacin de tablas Alumno, Materia y Cursa, PK, NOT NULL,etc.
2.
Creacin de ndices para no_cta, claveM y no_cta+claveM
3.
Creacin de constraint o trigger para integridad referencial:
a.
Cuando borre Alumno, que borre cursa
b.
Cuando borre Materia que verifique que no haya nadie en cursa y/o Borre materia solo
cuando no hay la misma claveM en cursa.
c.
Insert en Alumno, no_cta no sea nulo y no sea duplicado
d.
Insert en Cursa con no_cta y claveM existentes en Alumno y Materia respectivamente,
que no se dupliquen ambos como llave.
e.
Insert en Materia, que no existe duplicidad en claveM y que no sea nulo.

Recopil: Dra. Maria del Pilar Angeles

75

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Ejemplos de implementacin a Base de Datos Relacional:

Listados de programas en SQL que contengan lo siguiente:


Creacin de base de datos.
Creacin de usuario
Creacin de tablas.
Insercion de datos en las tablas.
Creacin de consultas, que satisfagan la hoja de requerimientos.
Altas de registros a la BD
Actualizaciones de registros de BD
Eliminacin de registros en BD
Triggers, stored procedures e indices necesarios para integridad de la
informacin.

Interface grfica: Realizar las pantallas para la realizacin de altas, bajas, modificaciones y consultas.
A continuacion se retoman los proyectos correspondientes a Diseo de Base de Datos Relacionales que en
esta ocasin se implementaran en SQL.
1.- La Direccin General de Reclusorios ha decidido crear una Base de Datos con informacin sobre sus
reclusos. Las clases y atributos son:
RECLUSO
Atributos:
NOMBRE
Es el nombre del recluso.
ESCOLARIDAD
la escolaridad del recluso:
-Analfabeta,
-Primaria Incompleta,
-Primaria Completa,
-Secundaria,
-Preparatoria,
-Licenciatura,
-Postgrado.
DELITO
Atributos:
NOM_DELITO Es el nombre del delito.
GRUPO Es el nombre del grupo donde se incluye el delito:
-Delitos contra la salud,
-Violencia,
-Delitos administrativos,
-Otros.
JUEZ
Atributos:
NOM_JUEZ Es el nombre del juez
AOS__EXP Aos de experiencia.
PENA
DAS Es algn nmero de das. Este conjunto se forma por valores naturales consecutivos de 1 < 100,000.
por cada uno de los delitos cometidos.
v)
Dado el nombre del recluso, obtener quien fue el juez que lo juzgo y cuntos das deber
cumplir por condena.
vi)
Dado el nombre del juez, obtener el nombre de los reclusos que ha juzgado as como el
promedio de das que suele poner por condena a estos reclusos.
vii)
Dado el nombre del delito, obtener el nmero de reclusos que estn cumpliendo condena por
ese mismo delito.
viii)
Dado el nmero de das obtener el nombre de los reclusos que cumplen una pena del mismo
nmero de das.

Recopil: Dra. Maria del Pilar Angeles

76

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

2.- El Departamento de Trnsito de cierta ciudad desea un Sistema de Base de Datos que le permita
controlar las infracciones cometidas por los propietarios de los automviles registrados en dicho
Departamento.
El Sistema debe contestar a las siguientes preguntas:
v)

vi)
vii)
viii)

Dado el nmero de placas de cierto automvil conocer el nombre y domicilio de todas


aquellas personas que han sido propietarios de ste automvil (propietarios anteriores y
propietario actual.
Dado el nombre de un propietario, conocer la marca y modelo de todos los automviles que
actualmente posee.
Dado el nombre de un propietario, conocer el folio y el monto de la multa de cada una
de las infracciones que ha cometido.
Dado el nmero de placas de un automvil, conocer el folio y el monto de la multa de cada
una de las infracciones que se le han levantado, as como el nombre y domicilio de los
propietarios que cometieron cada una de estas infracciones.

Recopil: Dra. Maria del Pilar Angeles

77

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

3. Cierta escuela decide automatizar el Control Bibliotecario de Prstamo de Libros a sus


Alumnos. El sistema debe contestar las siguientes preguntas:
v)
Dada la matrcula de un alumno, conocer el ttulo, autores y editorial del libro que tiene
dicho alumno en calidad de prstamo.
vi)
Dado el nmero de clasificacin de un libro conocer el nombre, domicilio y nmero
telefnico de los alumnos que tienen este libro en calidad prstamo.
vii)
Dado el nmero de clasificacin de un libro, conocer la fecha en que debern ser
devueltos cada uno de los ejemplares prestados de este libro.
viii)
Conocer el nmero de clasificacin y ttulo de aquellos libros para los cuales todos sus
ejemplares estn prestados.
Al disear esta base de datos, usted debe tomar en cuenta lo siguiente:
Por poltica de la escuela, cada alumno puede tener solamente un libro en calidad de
prstamo.
Un libro puede tener varios autores y cada autor pudo haber escrito varios libros.
El nmero de clasificacin es el mismo para todos los ejemplares de un mismo libro, pero
distinto para dos libros en los cuales el titulo, autores o editorial difieren.

Recopil: Dra. Maria del Pilar Angeles

78

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

4.- La Universidad decidi automatizar la gestin sobre sus ex alumnos. El sistema debe contestar las
siguientes preguntas;
v)
Dada una carrera, conocer la matrcula y domicilio de todos los ex alumnos que cursaron esta
carrera.
vi)
Dado el nombre de una empresa y el nombre de una de sus sucursales, conocer el nombre de
todos los ex alumnos que trabajan o trabajaron en esta sucursal.
vii)
Dada la matrcula de un ex alumno, conocer los datos sobre las empresas en las que ha
trabajo (nombre, RFC y pas de origen de la empresa, as como el nombre, domicilio y
telfono de la sucursal correspondiente).
viii)
Dada la matricula de un ex alumno, conocer los nombres de todos sus familiares que tambin
sean ex alumnos de la Universidad, as como los niveles de las carreras (licenciatura,
maestra o diplomado) y las correspondientes carreras estudiadas por cada uno de estos
familiares.

Recopil: Dra. Maria del Pilar Angeles

79

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

5.- Se desea crear un Sistema de Base de Datos que permita obtener informacin sobre los equipos
conectados a las diversas redes de comunicacin (entre computadoras) que existen en el mundo. El
sistema debe contestar las siguientes preguntas:
v)
vi)
vii)

viii)

Dado el nombre de una institucin, conocer la marca y modelo de las computadoras que
posea, as como tamao de la memoria principal de cada una de stas computadoras.
Dado el nombre de un paquete de software, conocer el nombre y domicilio de las
instituciones que tengan este paquete en alguna de sus computadoras
Dado el nombre de una institucin X, conocer el nombre de las instituciones cuyas
computadoras estn conectadas a las mismas redes que las computadoras de la institucin
X (suponga que una institucin tiene comunicacin con una red, todas las computadoras de
esta institucin forma parte de dicha red).
Dado el nombre de una institucin X, conocer nombre de las instituciones (conectadas a
las mismas redes a las que pertenece la institucin X que tengan una impresora de cierto tipo
y velocidad (por ejemplo: lser de 500 hojas por minuto, de lneas de 600 lpm. etc), as como
la marca y modelo de las computadoras a las que estn conectadas a dichas impresoras.

Recopil: Dra. Maria del Pilar Angeles

80

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Seguridad en Bases de Datos


Vistas
Una vista se define en SQL usando la orden CRETE VIEW. Para definir una vista debemos dar a la vista
un nombre y declarar la consulta que calcula la vista. Una vez que establecemos una vista, podemos
ejecutar una sentencia SELECT que referencie a esa vista. El sistema asociar la vista SQL con una tabla
base y extraer y visualizar, entonces, los datos de la tabla base.
Esto significa que una vista no contiene datos duplicados de una tabla base. No tiene absolutamente
ningn dato, puesto que no es una tabla real, todo el proceso se realiza con los datos almacenados en la
tabla base. Es decir se percibe como una tabla virtual.
Las ordenes que se utilizan para la manipulacin de vistas son:
CREATE
VIEW:
Crea
una
tabla
virtual.
DROP VIEW: Elimina una vista creada anteriormente.
Estructura de la sentencia CREATE VIEW.
CREATE VIEW Nombre de la vista AS (Expresin de consulta);
Para nuestros ejemplos consideremos de nuevo la tabla llamada CURSO, que contiene los siguientes
campos:
Nombre del campo

Descripcin

NumC

Nmero del curso, nico para identificar cada curso

NombreC

Nombre del curso, tambin es nico

DescC

Descripcin del curso

Creditos

Crditos, nmero de estos que gana al estudiante al cursarlo

Costo

Costo del curso.

Depto

Departamento acadmico que ofrece el curso.

Que contiene los siguientes datos:


NumC NombreC

DescC

Creditos Costo

A01

Liderazgo

Para
General

S01

Introduccin a la inteligencia artificial

Para ISC y LI

C01

Construccin de torres

Para
IC
Arquitectura

B01

Situacin actual y perspectivas


alimentacin y la nutricin

E01

Historia presente y futuro de la energa solar

S02

pblico 10

100.00 Admn.
90.00

Sistemas.

0.00

Ciencias

80.00

Bioqumica

IE e II

10

100.00 Electromecnica.

Tecnologa OLAP

Para ISC y LI

100.00 Sistemas

C02

Tecnologa del concreto y de las Estructuras

Para IC

10

100.00 Ciencias

B02

Metabolismo de lpidos en el camarn

Para IB

10

0.00

E02

Los sistemas elctricos de potencia

Para IE

10

100.00 Electromecnica

S03

Estructura de datos

Para ISC y LI

0.00

Sistemas

A01

Diseo bioclimtico

Para Arquitectura

10

0.00

Arquitectura

C03

Matemticas discretas

General

0.00

Ciencias

S04

Circuitos digitales

Para ISC

10

0.00

Sistemas

S05

Arquitectura de Computadoras

Para ISC

10

50.00

Sistemas

de

Recopil: Dra. Maria del Pilar Angeles

la Para IB

10

Depto

y 8

Bioqumica

81

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera
I01

Base de Datos Relacionales

Base de Datos
Para ISC y LI

10

150.00 Informtica

Ejemplos:
* Crear una vista (tabla virtual), denominada CursosS, que contenga las filas solo correspondientes a
cursos ofrecidos por el departamento Sistemas. La vista deber contener todas las columnas de la tabla
CURSO, con la excepcin de la columna Depto, la secuencia, de izquierda a derecha de las columnas,
deber ser: NombreC, NumC, Creditos, Costo Y DescC.
CREATE VIEW CursosS AS
SELECT NombreC,NumC,Creditos,Costo,DescC
FROM CURSO
WHERE DescC=Sistemas;
Observemos que despus del nombre de la vista ponemos la sentencia AS, esto para definir la estructura
de la vista, la estructura en si de la vista esta formada por la consulta anteriormente vista utilizando la orden
SELECT.
* Crear una vista denominada CursosCaros, correspondientes a las filas de la tabla CURSO, en donde la
tarifa exceda de $150, las columnas de la vista debern tener los nombres ClaveCurso, NombreCurso y
CostoCaro.
CREATE VIEW CursosSCaros(ClaveCurso,NombreCurso,CostoCaro) As
SELECT NumC,NombreC, Costo
FROM Curso
WHERE Costo > 150;
Observamos que despus del nombre de la vista CursosCaros ponemos los nombres que se nos pidieron
tuvieran los campos de la vista(ClaveCurso,...), despus se realiza la consulta correspondiente para generar
el resultado deseado.
Borrado de vistas
Como si fuera una tabla normal, las vistas tambin pueden borrarse, para ello utilizamos la sentencia
DROP VIEW.
Estructura de la sentencia DROP VIEW.
DROP VIEW Nombre de la vista a borrar;
Ejemplo: Borrar la vista CursosCaros creada anteriormente.
DROP VIEW CursosCaros;
Vistas en consultas
Creamos una tabla virtual que contiene los datos de las consultas que deseamos, ahora nos falta
visualizar estos datos, para ello utilizamos la sentencia SELECT y realizamos la consulta:
SELECT *
FROM CursosCaros;
De esta consulta podemos observar que mostramos todos los campos que la vista contiene, aunque
podemos visualizar solo alguno de ellos, tambin observamos que sustituimos el nombre de la vista por el
de la tabla junto a la sentencia FROM, esto es por que una vista es una tabla virtual, pero guarda los datos
como cualquier tabla normal.

5.2. Lenguaje de Manipulacion de Datos (ppt: dml)


INSERT: Permite almacenar registros en una tabla creada.
DELETE: Borra un registro entero o grupo de registros de una tabla.
UPDATE: Permite modificar datos de registros almacenados en la tabla.
Inserciones
* Estructura de la sentencia INSERT
INSERT
INTO Nombre de la tabla a la que se le va a insertar el registro
VALUES (Conjunto de valores del registro ) ;

Recopil: Dra. Maria del Pilar Angeles

82

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Ejemplo:
Insertar en la tabla Alumno, antes creada los datos del alumno Daniel coln, con numero de control
95310518 de la especialidad de Ingeniera civil, con domicilio Abasolo Norte #45.
INSERT
INTO Alumno
VALUES("95310518","Daniel Coln","IC","Abasolo Norte #45") ;
Ntese que la insercin de los datos se realiza conforme la estructura que se implanto en la tabla, es decir
en el orden en que se creo dicha tabla. En caso de querer omitir un dato que no sean no nulos solamente se
ponen las comillas indicando el vaco de la cadena.
Borrado
* Estructura de la sentencia DELETE
DELETE
FROM Nombre de la tabla
WHERE Condicin;
Ejemplos:
- Borrar el registro cuyo nmero de control es 95310386.
DELETE
FROM Alumno
WHERE Control=95310386;
- Borrar todos los registros de la tabla alumno.
DELETE
FROM Alumno;
En el primer ejemplo, se borrara todo el registro(todos los datos), del alumno con nmero de control =
95310386.
En el segundo ejemplo se borraran todos los registros de la tabla alumno, pero sin borrar la estructura de
la tabla, ya que la orden Delete solo borra registros, la sentencia Drop Table es la que borra toda la
estructura de la tabla junto con los registros de la misma.
Actualizacin
* Estructura de la sentencia UPDATE
UPDATE Nombre de la tabla en donde se modificaran los datos.
SET Valores
WHERE (Condicin);
Ejemplo:
Modificar el nmero de control del registro de Daniel Coln de la Tabla alumno por el nmero
96310518.
UPDATE Alumno
SET NControl 96310518
WHERE NombreA=Daniel Coln;
5.3. Consultas en Lenguaje Procedural
Como se coment anteriormete el SQL es un lenguaje declarativo. Sin embargo, existen casos en donde las
consultas o control de integridad exigen mayor complejidad, para lo cual existen varias opciones:
a)
Programar en algn lenguaje procedural y embeber sentencias SQL para el acceso a
los datos. (Java, C, etc.)
b)
Dependiendo de cada proveedor de base de datos, se han incorporado al SQL
sentencias para el control de flujo, procedimientos almacenados, cursores, etc.

Recopil: Dra. Maria del Pilar Angeles

83

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Palabras reservadas para el control de Flujo

Tarea: Buscar la funcionalidad de cada uno de las palabras anteriores asi como un ejemplo de estas
SQL Server Reference Manual:
http://manuals.sybase.com/onlinebooks/group-asarc/srg1100e/sqlref/@ebtlink;pt=61182;lang=es?target=%25N%15_61182_START_RESTART_N%25
espaol
http://manuals.sybase.com/onlinebooks/group-asarc/svs11001/sqlrefsp/@ebtlink;pt=62;lang=es?target=%25N%15_59548_START_RESTART_N%25
CURSORES
Un cursor proporciona acceso al conjunto de filas devueltas por una consulta de SQL. Un cursor es un
nombre simblico asociado con una instruccin select . Los cursores habilitan el acceso a las filas
individuales de los datos devueltos por SQL Server. Los cursores consisten en dos partes: el conjunto de
resultados del cursor y la posicin del cursor .
El conjunto de resultados de un cursor es el conjunto de filas devueltas por la instruccin select definida
para el cursor. La posicin del cursor es el puntero actual a una fila dentro del conjunto de resultados.
Creacin de un cursor
Para crear un cursor, utilice la instruccin declare cursor :
declare cursor_name cursor
for select_statement
[for {read only | update [of column_name_list ]}]
cursor_name es el nombre del cursor. Debe ser un identificador vlido de SQL Server no superior a 30
caracteres y debe empezar con una letra, con # o con el carcter de subrayado (_).

Recopil: Dra. Maria del Pilar Angeles

84

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

select_statement es la consulta que define el conjunto de resultados del cursor. Consulte select para obtener
informacin sobre sus opciones.
La opcin for read only especifica que el conjunto de resultados del cursor no puede actualizarse. Como
contraste, la opcin for update especifica que el conjunto de resultados del cursor es actualizable. Es
posible especificar of column_name_list despus de for update con la lista de columnas indicadas en la
select_statement definida como actualizable.
El siguiente ejemplo define un conjunto de resultados para el cursor authors_crsr que contiene todos los
autores de la tabla authors que no residen en California:
declare authors_crsr cursor
for select au_id, au_lname, au_fname
from authors
where state != 'CA'
La instruccin declare cursor debe preceder a la instruccin open de ese cursor. No es posible incluir otras
instrucciones con declare cursor en el mismo lote de Transact-SQL, excepto cuando el cursor se utiliza
dentro de un procedimiento almacenado.
Apertura de un cursor
Para abrir un cursor:
open cursor_name
Recobro de una fila
Despus de abrir un cursor, es posible recobrar una fila:
fetch cursor_name [into fetch_target_list ]
SQL Server mueve la posicin del cursor una o ms filas hacia abajo en el conjunto de resultados del
cursor. Recupera los datos de cada fila del conjunto de resultados y almacena la posicin actual, lo que
permite posteriores recobros hasta que alcanza el final del conjunto de resultados.
into fetch_target_list especifica que los datos de columna devueltos deben colocarse en las variables
especificadas. La lista fetch_target_list debe consistir en parmetros o variables locales de Transact-SQL
que se hayan declarado anteriormente.
Por ejemplo, despus de declarar las variables @id , @lname y @fname , es posible recobrar filas del
cursor authors_crsr como sigue:
fetch authors_crsr into @id, @lname, @fname
De forma predeterminada, el comando fetch slo devuelve una fila cada vez. La opcin cursor rows del
comando set puede utilizarse para cambiar el nmero de filas que devuelve fetch . Sin embargo, esta opcin
no afecta un fetch que contenga una clusula into .
Cierre de un cursor
Cuando se termina de usar el conjunto de resultados de un cursor, es posible cerrarlo:
close cursor_name
El cierre del cursor no cambia su definicin. Se puede abrir otra vez, y SQL Server crea un nuevo conjunto
de resultados del cursor usando la misma consulta que antes.
Desasignacin de un cursor
Si se desea desechar el cursor, hay que desasignarlo:
dealsy
locate cursor cursor_name
La desasignacin de un cursor libera cualquier recurso asociado con ste, incluido el nombre del cursor. No
se puede volver a utilizar un nombre de cursor hasta que se desasigne. Si se desasigna un cursor abierto,
SQL Server lo cierra automticamente. La terminacin de una conexin cliente a un servidor tambin cierra
y desasigna los cursores que haya abiertos.

Recopil: Dra. Maria del Pilar Angeles

85

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Ejemplo: Uso de un cursor


El siguiente procedimiento almacenado verifica en la tabla sales si algn libro de un autor en particular se
ha vendido bien. Utiliza un cursor para examinar cada fila y luego imprime la informacin. Sin el cursor,
seran necesarias varias instrucciones select para realizar la misma tarea.
create procedure au_sales (@author_id id)
as
/* declarar variables locales usadas para fetch */
declare @title_id tid
declare @title varchar(80)
declare @ytd_sales int
declare @msg varchar(120)
/* declarar el cursor que obtiene cada libro
** escrito por el autor dado */
declare author_sales cursor for
select ta.title_id, t.title, t.total_sales
from titleauthor ta, titles t
where ta.title_id = t.title_id
and ta.au_id = @author_id
open author_sales
fetch author_sales
into @title_id, @title, @ytd_sales
if (@@sqlstatus = 2)
begin
print "We do not sell books by this author."
close author_sales
return
end
/* si el conjunto resultados del cursor no est
** vaco, procesar cada fila de informacin */
while (@@sqlstatus = 0)
begin
if (@ytd_sales = NULL)
begin
select @msg = @title +
" had no sales this year."
print @msg
end
else if (@ytd_sales < 500)
begin
select @msg = @title +
" had poor sales this year."
print @msg
end
else if (@ytd_sales < 1000)
begin
select @msg = @title +
" had mediocre sales this year."
print @msg
end
else
begin
select @msg = @title +

Recopil: Dra. Maria del Pilar Angeles

86

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

" had good sales this year."


print @msg
end
fetch author_sales into @title_id, @title,
@ytd_sales
end
/* si hay un error, llamar a un manipulador */
if (@@sqlstatus = 1) exec error_handle
close author_sales
deallocate cursor author_sales
return

5.4. Lenguaje de Control de Datos


Definicin de ndice
Los ndices ayudan a SQL Server a localizar datos. Aceleran el proceso de recuperacin de informacin
indicando a SQL Server la posicin que ocupan los datos de una columna de tabla en el disco. Las tablas
pueden tener ms de un ndice.
Los ndices son transparentes para los usuarios. SQL no incluye ninguna sintaxis para hacer referencia a un
ndice en una consulta. Slo es posible crear u omitir ndices de una tabla; SQL Server decide si usarlos o
no para cada una de las consultas ejecutadas para esa tabla. A medida que los datos de una tabla van
cambiando con el tiempo, SQL Server puede cambiar los ndices de la tabla de modo que reflejen esas
modificaciones. Tambin estos cambios son transparentes para los usuarios, SQL Server lleva a cabo esta
tarea por su cuenta.
SQL Server admite los siguientes tipos de ndices:
Indices compuestos: estos ndices abarcan ms de una columna. Este tipo de ndice se usa cuando es ms
conveniente buscar dos o ms columnas como unidad, debido a la relacin lgica existente entre ellas.
UNIQUE INDEX, Indices nicos: estos ndices no permiten que dos filas de las columnas especificadas
tengan el mismo valor. SQL Server verifica si existen valores duplicados cuando se crea el ndice (si ya
existen datos) y cada vez que se aaden datos.
NON CLUSTERED AND CLUSTERED INDEXES, Indices agrupados o no agrupados: los ndices
agrupados obligan a SQL Server a que ordene y vuelva a ordenar continuamente las filas de la tabla de
modo que su orden fsico sea siempre el mismo que el orden lgico (o indexado). Slo se permite un ndice
agrupado por tabla. Los ndices no agrupados no requieren que el orden fsico de las filas sea el mismo que
el orden indexado. Todos los ndices no agrupados pueden proporcionar acceso a los datos con un criterio
de ordenacin diferente.
Comparacin de las dos formas de creacin de ndices
Es posible crear ndices en las tablas usando la instruccin create index (descrita en este captulo), o bien
usando las restricciones de integridad unique o primary key del comando create table . Sin embargo, estas
restricciones de integridad estn limitadas de las siguientes formas:

No podr crear ndices no nicos.


No podr usar las opciones proporcionadas por el comando create index para adaptar el
funcionamiento de los ndices.
Slo podr omitir estos ndices como una restriccin usando la instruccin alter table .

create [unique] [clustered | nonclustered]


index index_name on [[ database .] owner .]
table_name ( column_name
[, column_name ]...) [with {{fillfactor | max_rows_per_page}= x,
ignore_dup_key, sorted_data, [ignore_dup_row | allow_dup_row]}] [on segment_name ]

Recopil: Dra. Maria del Pilar Angeles

87

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

* Estructura de la Sentencia CREATE INDEX


CREATE INDEX Nombre que se le asignara al ndice.
ON Nombre de la taba a la cual se le creara el ndice (Campo(s) por el cual se creara el ndice);
Ejemplo:
Crear un ndice de la tabla Alumno por el campo Especialidad.
CREATE INDEX Indice1
ON Alumno(Especialidad);
Este ndice contendr a todos los alumnos ordenados por el campo especialidad.
CREATE INDEX UNIQUE INDEX Indice2
ON Alumno (Especialidad);
En la creacin de este ndice utilizamos la sentencia UNIQUE, es un indicador para permitir que se cree
un ndice nico por especialidad, esta sentencia siempre se coloca antes de CREATE INDEX. En este
ejemplo se creara un ndice que contenga un alumno por especialidad existente.
* Estructura de la sentencia DROP INDEX
DROP INDEX Nombre del ndice a borrar;
Ejemplo:
Borrar el ndice Indice1 creado anteriormente.
DROP INDEX Indice1;
Control de Acceso
Recursos y privilegios
La informacin almacenada en la base de datos debe de estar protegida contra accesos no autorizados,
destruccin o alteracin con fines indebidos y la introduccin accidental de inconsistencia.
El mal uso que se haga de la base de datos puede ser intencionado (con fines indebidos) o accidental. La
prdida de la consistencia de los datos puede deberse a:

Cadas durante el procesamiento de las transacciones.

Anomalas por acceso concurrente a la base de datos.

Anomalas que resultan de la distribucin de los datos entre varias computadoras.

Un error lgico que viola la suposicin de que las transacciones respetan las protecciones de
consistencia de la base de datos.
Algunas formas de acceso indebido a las bases de datos son las siguientes:

Lectura de datos sin autorizacin (robo de informacin).

Modificacin de los datos sin autorizacin.

Destruccin no autorizada de los datos.


No es posible proteger a la base de datos contra un manejo indebido, pero puede hacerse que el coste para
el autor sea tan alto que frene prcticamente todos los intentos de acceder a la base de datos sin la
autorizacin debida.
El trmino seguridad de la base de datos. Normalmente se refiere a la proteccin contra el acceso mal
intencionado, mientras que la integridad se refiere a la proteccin contra una prdida accidental de
consistencia.
Para proteger la base de datos es necesario adoptar medidas de seguridad en varios niveles:

Fsico. La localidad o localidades que contienen a los sistemas de computadoras deben de


protegerse fsicamente contra la penetracin armada o clandestina de intrusos.

Humano. Debe de tenerse mucho cuidado al conceder autorizacin a los usuarios para reducir la
probabilidad de que un usuario autorizado permita el acceso a un intruso a cambio de sobornos u otros
favores.

Sistema operativo. El sistema operativo puede servir para obtener acceso sin autorizacin a la
base de datos debido a que casi todos los sistemas de bases de datos permiten acceso remoto a travs de
terminales o redes.

Sistemas de base de datos. Puede darse el caso de que algunos usuarios solo tengan acceso a
cierta parte de la base de datos. Es posible que algunos usuarios solo puedan hacer consultas, pero se le
prohibe modificar la base de datos. El sistema de la base de datos tiene la responsabilidad de garantizar que
no se violen estas restricciones.

Recopil: Dra. Maria del Pilar Angeles

88

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Identificacin y autentificacin.
Debido a que la base se comparte extensamente, el DBMS protege los datos individuales de cada usuario
contra la intrusin o destruccin o autorizada.
El DBA controla los derechos de acceso de los programadores a ciertas porciones de la base de datos
declarando los elementos de datos apropiados en un subesquema. Los elementos de los datos no incluidos
en un subesquema sern inaccesibles a los programas que usen tal subesquema.
El control de acceso de datos comienza con la identificacin del usuario, este es llamado "sujeto " de
control de acceso. Este puede ser identificado como un usuario humano o un usuario intermedio como
puede ser una terminal o un programa.
Un identificador es la primera pieza de informacin que el sistema recibe de una solicitud y este puede ser
un nombre o un nmero. El identificador habilita el sistema para localizar la correspondiente entrada en el
almacenamiento de los perfiles de los usuarios o la tabla de autorizaciones.
Instrucciones para otorgar y revocar privilegios (ppt: Taller_SDBA_dia3 slide 11)
El lenguaje de definicin de datos SQL incluye mandatos para conceder y revocar privilegios. El SQL
estndar incluye los privilegios delete, insert, select y update. Incluye tambin el privilegio references
(referencias) que restringe la habilidad del usuario para crear relaciones. Si la relacin que va a ser creada
incluye una clave exterior que referencia los atributos de otra relacin, el usuario debe de tener el privilegio
references sobre los atributos. Para conceder la autorizacin se utiliza la sentencia grant (conceder). La
forma ms bsica es la siguiente:
grant < lista de privilegios > on < nombre de la relacin o vista > to < lista de usuarios >
La lista de privilegios permite conceder varios privilegios en un solo mandato. La siguiente sentencia grant
concede a los usuarios U1, U2 y U3 la autorizacin select sobre la relacin sucursal: grant select on
sucursal to U1,U2,U3
La siguiente sentencia permite una actualizacin de la relacin deposito, sobre el atributo saldo a los
usuarios U1,U2,U3. grant update (saldo) on deposito to U1,U2,U3
La siguiente sentencia grant permite a el usuario U1 crear relaciones que referencian la clave exterior
nombre-sucursal, sobre la relacin sucursal. grant references (nombre-sucursal) on sucursal to U1
La sentencia revoke (revocar) se utiliza para anular la autorizacin su formato es muy parecido a la opcin
grant: revoke < lista de privilegios > on < nombre de la relacin o vista > from < lista de usuarios >
ejemplo:
revoke select on sucursal from U1,U2,U3
revoke update (saldo) on deposito from U1,U2,U3
revoke references (nombre-sucursal) on sucursal from U1
GRANT privilege [, ...] ON object [, ...]
TO { PUBLIC | GROUP group | username }
REVOKE privilege [, ...]
ON object [, ...]
FROM { PUBLIC | GROUP groupname | username }
Transacciones
Un bloque de transacciones comienza con un BEGIN y si la transaccin fu vlida se cierra con COMMIT
y END. Si la transaccin falla, se cierra con ABORT y ROLLBACK. Esta es una manera segura de
garantizar integridad de la informacin. Digamos que estamos haciendo un sistema de inventarios y que,
por definicin, al retirar un artculo de la bodega, lo tenemos que dar de alta en el inventario de la tienda.
No puede ocurrir una accin sin la correspondiente, es decir, si lo damos de baja de la bodega
necesariamente tiene que ser cargado al inventario de la tienda y de igual manera, si lo damos de alta en el
inventario de la tienda, tiene que haber sido descontado del inventario de la bodega. Si una de las dos
acciones falla, nos deja un estado inconsistente. En metacdigo esto queda representado por:
BEGIN [ WORK | TRANSACTION ]
COMMIT [ WORK | TRANSACTION ]
END [ WORK | TRANSACTION ]
ROLLBACK [ WORK | TRANSACTION

Recopil: Dra. Maria del Pilar Angeles

89

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

5.5. Optimizacin de Consultas


La manera en que se escriban las consultas puede marcar una gran diferencia en rendimiento. Dos consultas
distintas que hagan lo mismo pueden desempearse de manera distinta. Son pocas las cosas absolutas en lo
que a mejorar el rendimiento se refiere, pero estos trucos pueden ayudar.Estos trucos no son lo nico que
hay que saber acerca de rendimiento
Dada la consulta: select * from tab where x > 3 con un ndice en x. Esta consulta trabaja utilizando el
ndice para encontrar el primer valor donde x = 3, y realizando una bsqueda secuencial hacia adelante
(forward scan).
Suponga que existen muchas filas en tab para las que x = 3. En ste caso, el servidor tendra que leer
muchas pginas antes de encontrar la primera fila para la que x > 3.
Es ms eficiente escribir la consulta de sta manera:
select * from tab where x >= 4
------------------------------------------------------------------------------Exists versus Not Exists (I)
En subconsultas y sentencias IF, el EXISTS y el IN son ms rpidos que NOT EXISTS y NOT IN.
Con sentencias IF, se pueden evitar fcilmente NOT EXISTS:
if not exists (select * from ...)
begin /* Statement group 1 */
...
end else begin /* Statement group 2 */
...
end
puede ser reescrita como:
if exists (select * from ...)
begin /* Statement group 2 */
...
end else begin /* Statement group 1 */
...
end
-------------------------------------------------------------------------------Exists versus Not Exists (II)
An sin una clusula ELSE, es posible evitar NOT EXISTS en sentencias IF:
if not exists (select * from ...)
begin
/* Statement group */
...
end
...
puede ser reescrita como:
if exists (select * from ...)
begin
goto exists_label
end
/* Statement group */
...
exists_label:
...

Recopil: Dra. Maria del Pilar Angeles

90

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

------------------------------------------------------------------------------Consultas Correlacionadas con Outer Joins Restrictivo (I)


Adaptive Server Enterprise procesa sub consultas "de adentro hacia afuera" . Para subconsultas
correlacionadas (join), crea una tabla de trabajo que contiene los resultados de la subconsulta
La tabla de trabajo se agrupa con las tablas del join
-------------------------------------------------------------------------------Consultas Correlacionadas con Outer Joins Restrictivos (Ejemplo)
select w from outer where x =
(select sum(a) from inner
where inner.b = outer.z)
se convierte en:
select outer.z, summ = sum(inner.a)
into #work
from outer, inner
where inner.b = outer.z
group by outer.z
select outer.w
from outer, #work
where outer.z = #work.z
and outer.x = #work.summ
-------------------------------------------------------------------------------Consultas Correlacionadas con Outer Joins Restrictivos (Ejemplo)
Adaptive Server Enterprise copia las clusulas de bsqueda de la consulta externa a la subconsulta para
mejorar el rendimiento:
select w from outer
where y = 1
and x = (select sum(a)
from inner
where inner.b = outer.z)
se convierte en:
select outer.z, summ = sum(inner.a)
into #work
from outer, inner
where inner.b = outer.z and outer.y = 1
group by outer .z
select outer.w
from outer, #work
where outer.z = #work.z and outer.y = 1 and outer.x =#work.summ
-------------------------------------------------------------------------------Consultas Correlacionadas con Outer Joins Restrictivos (II)
Adaptive Server Enterprise no copia clusulas del join a las consultas correlacionadas, como lo hace con
clusulas de bsqueda.
El copiar las clusulas de bsqueda siempre har que la consulta corra ms rpidamente, pero el copiar una
clusula de join puede causar que corra ms lento.
El copiar la clusula del join es til solo si la clusula del join es muy restrictiva.
Slo el optimizador de consultas sabe si una clusula de join es restrictiva, pero Adaptive Server rompe la
consulta en pasos antes de la optimizacin.

Recopil: Dra. Maria del Pilar Angeles

91

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Dado que usted conoce sus datos, usted puede copiar clusulas de join en subconsultas, cuando usted sabe
que eso ayudar.
-------------------------------------------------------------------------------Consultas Correlacionadas con Outer Joins Restrictivos (Ejemplo)
Un ejemplo de cuando copiar la clusula del join:
select *
from huge_tab, single_row_tab
where huge_tab.unique_column = single_row_tab.a
and huge_tab.b = (select sum
from inner
where huge_tab.d = inner.e)
puede ser reescrita como:
select *
from huge_tab, single_row_tab
where huge_tab.unique_column = single_row_tab.a
and huge_tab.b = (select sum
from inner
where huge_tab.d = inner.e
and huge_tab.unique_column = single_row_tab.a)
-------------------------------------------------------------------------------Consultas Correlacionadas con Outer Joins Restrictivos (Ejemplo)
Un ejemplo de cuando NO copiar una clusula de join:
select *
from huge_tab, single_row_tab
where huge_tab.many_duplicates_in_column = single_row_tab.a and
single_row_tab.b = (select sum
from inner
where single_row_tab.d = inner.e)
NO debe ser reescrita como:
select *
from huge_tab, single_row_tab
where huge_tab.many_duplicates_in_column = single_row_tab.a and
single_row_tab.b = (select sum
from inner
where single_row tab.d = inner .e
and huge_tab.many_duplicates_in_column = single_row_tab.a)
-------------------------------------------------------------------------------Creacin de Tablas Dentro de Procedimientos Almacenados
Cuando usted crea una tabla dentro del mismo procedimiento almacenado en el que sta es utilizada, el
optimizador de consultas no puede saber qu tan grande es la tabla.
El optimizador asume que dicha tabla tiene 10 pginas de datos y 100 filas.
Si la tabla es realmente grande, esta suposicin puede hacer que el optimizador seleccione un plan de
consulta por debajo del ptimo.
En casos como ste, es mejor crear la tabla fuera del procedimiento, lo que le permite que el optimizador
vea qu tan grande es la tabla.
-------------------------------------------------------------------------------Creacin de Tablas Dentro de Procedimientos Almacenados (Ejemplo)
create proc p as
select * into #huge_result from ...
select * from tab, #huge_result where

Recopil: Dra. Maria del Pilar Angeles

92

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

...
puede ser reescrito como:
create proc p as
select * into #huge_result from ...
exec s
create proc s as
select * from tab, #huge_result where
-------------------------------------------------------------------------------Variables versus Parmetros en la Clusula Where
El optimizador de consultas no puede predecir el valor de una variable declarada.
La consulta sabe el valor de un parmetro de un procedimiento almacenado en el momento de compilacin.
El saber los valores de la clusula WHERE de una consulta puede ayudar el optimizador a tomar mejores
decisiones.
Para evitar poner variables en las clusulas WHERE, uno puede partir los procedimientos almacenados.
-------------------------------------------------------------------------------Variables versus Parmetros en la Cpsula Where (Ejemplo)
Por ejemplo:
create procedure p as
declare @x int
select @x = col from tab where ...
select * from tab2 where col2 = @x
puede ser rescrito como:
create procedure p as
declare @x int
select @x = col from tab where ...
exec s @x
create procedure s @x int as
select * from tab2 where col2 = @x
-------------------------------------------------------------------------------Count versus Exists (I)
Es posible utilizar la funcin agregada COUNT en una subconsulta para realizar una verificacin de
existencia:
select * from tab where 0 <
(select count(*) from tab2 where ...)
Es posible escribir la misma consulta utilizando EXISTS (o IN):
select * from tab where exists
(select * from tab2 where ...)
-------------------------------------------------------------------------------Count versus Exists (II)
Utilizar COUNT para realizar una verificacin de existencia es ms lento que utilizar EXISTS
Cuando usted utiliza COUNT, Adaptive Server Enterprise no sabe que usted est realizando una
verificacin de existencia. Cuanta todos los valores resultantes.
Cuando usted utiliza EXISTS, Adaptive Server Enterprise sabe que usted est realizando una verificacin
de existencia, as que para al encontrar el primer valor correspondiente.
Lo mismo aplica al utilizar COUNT en vez de IN o ANY.
-------------------------------------------------------------------------------Or versus Union
Adaptive Server Enterprise no puede optimizar Joins con clusulas encadenadas con OR.
Adaptive Server Enterprise puede optimizar SELECTs que estn encadenados con UNION.
El resultado de un OR es, de alguna manera, como el resultado de UNION, excepto en el tratamiento que se
le da a las filas duplicadas y a las tablas vacas.
--------------------------------------------------------------------------------

Recopil: Dra. Maria del Pilar Angeles

93

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Or versus Union (Ejemplo)


select * from tab1, tab2
where tab1.a = tab2.b
or tab1.x = tab2.y
puede ser escrito como:
select * from tab1, tab2
where tab1.a = tab2.b
union all
select * from tab1, tab2
where tab1.x = tab2.y
Usted puede utilizar UNION en vez de UNION ALL si usted quiere eliminar duplicados, pero esto
eliminar todos los duplicados. Es posible que no se obtenga el mismo conjunto de duplicados de la
consulta reescrita.
-------------------------------------------------------------------------------Funciones Agregadas MAX y MIN (I)
Adaptive Server Enterprise utiliza optimizaciones especiales para las funciones agregadas MAX y MIN
cuando existe un ndice en la columna agregada.
Para MIN, para la bsqueda para en la primera fila que califica.
Para MAX, va directamente al final del ndice para ubicar la ltima fila.
La optimizacin no se aplica si:
La expresin dentro del MAX o MIN es distinta de una columna.
La columna dentro del MAX o MIN no es la primera columna del ndice.
Existe otra funcin agregada en la consulta.
Existe una clusula GROUP BY.
Adicionalmente, la optimizacin del MAX no es aplicada si existe una clusula WHERE.
-------------------------------------------------------------------------------Funciones Agregadas MAX y MIN (Ejemplo)
Si se tiene una funcin agregada MAX o MIN optimizable, puede pagar ponerla en una consulta separada
de otras funciones agregadas. Por ejemplo:
select max(x), min(x) from tab
resultara en una bsqueda completa de tab, an si existiera un ndice sobre x. La consulta puede ser
reescrita como:
select max(x) from tab
select min(x) from tab
Esto puede tener como resultado utilizar el ndice dos veces, en vez de realizar un recorrido de toda la tabla
una vez.
-------------------------------------------------------------------------------Funciones Agregadas MAX y MIN (II)
La optimizacin MIN puede repercutir negativamente si la clusula where es muy selectiva. Por ejemplo:
select min(index_col)
from tab
where
col_in_other_index = "value only at end of first index"
La optimizacin MIN puede resultar en casi un recorrido del ndice completo.
Esto no es muy intuitivo. Entre ms selectivo el WHERE, ms lenta la consulta.
-------------------------------------------------------------------------------Funciones Agregadas MAX y MIN (III)
En casos como ste, puede pagar deshabilitar la optimizacin del MIN combinndola con otra funcin
agregada:

Recopil: Dra. Maria del Pilar Angeles

94

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

select min(index_col), max(index_col)


from tab
where
col_in_other_index = "value only at end of first index"
Esto convence al optimizador de no utilizar la optimizacin del MIN, as que utiliza el siguiente mejor plan,
que puede ser el otro ndice.
-------------------------------------------------------------------------------Joins y Tipos de Datos (I)
Cuando se hace un join entre dos tablas utilizando columnas de distintos tipos de datos, una de las
columnas debe ser convertida al tipo de dato de la otra.
El Commands Reference Manual muestra la jerarqua de los tipos de datos.
La columna cuyo tipo es menor en jerarqua es la que es convertida.
El optimizador de consultas no puede utilizar un ndice sobre la columna convertida.
-------------------------------------------------------------------------------Joins y Tipos de Datos (Ejemplo)
Por ejemplo:
select *
from tab1, tab2
where tab1.float_column = tab2.int_column
En ste caso, ningn ndice sobre tab2.int_column puede ser utilizado, ya que es menor en jerarqua que
float.
Note que CHAR NULL es realmente VARCHAT, y BINARY NULL es realmente VARBINARY.
El hacer un join entre CHAR NOT NULL y CHAR NULL involucra una conversin (tambin para
BINARY).
-------------------------------------------------------------------------------Joins y Tipos de Datos (II)
Es mejor evitar problemas de tipos de datos en joins diseando el esquema consistentemente.
Si un join entre distintos tipos de datos es inevitable, y el rendimiento se ve afectado, es posible forzar la
conversin para que se haga en el otro lado del join.
Por ejemplo:
select *
from tab1, tab2
where tab1.char_column = convert(char(75),tab2.varchar_column)
-------------------------------------------------------------------------------Joins y Tipos de Datos (III)
Sea cuidadoso! Esta tctica puede cambiar el significado de la consulta.
Por ejemplo:
select *
from tab1, tab2
where tab1.int_column = convert(int, tab2.float_column)
Esto no retornar los mismos resultados que el join sin el convert. Puede ser solucionado agragando:
and tab2.float_column = convert(int, tab2.float_column)
Esto asume que todos los valores en tab2.float_column pueden ser convertidos a int.
------------------------------------------------------------------------------Parmetros y Tipos de Datos
El optimizador de consultas puede utilizar el valor de los parmetros de procedimientos almacenados para
ayudar a determinar costos.
Si un parmetro no es del mismo tipo que la columna del WHERE con la que est siendo comparado, el
servidor debe convertir el parmetro.

Recopil: Dra. Maria del Pilar Angeles

95

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

El optimizador no puede utilizar el valor de un parmetro convertido.


Puede pagar el asegurarse que los parmetros tengan el mismo tipo de dato que la columna con la que se
estn comparando.
-------------------------------------------------------------------------------Parmetros y Tipos de Datos (Ejemplo)
Por ejemplo:
create proc p @x varchar(30) as
select * from tab where char_column = @x
puede obtener un pero resultado que:
create proc p @x char(30) as
select * from tab where char_column = @x
Recuerde que CHAR NULL es realmente VARCHAT, y BINARY NULL es realmente VARBINARY
5.6. Lenguaje de Consulta a Objetos
En este captulo se describen los procedimientos almacenados de catlogo que recuperan informacin de
las tablas del sistema en formato tabular. Acceso al Diccionario de Datos.
Los procedimientos almacenados de catlogo recuperan informacin de las tablas del sistema en formato
tabular.
Al igual que los procedimientos del sistema, los procedimientos almacenados de catlogo, creados por
installmaster durante la instalacin, se ubican en la base de datos sybsystemprocs y son propiedad del
administrador del sistema, pero muchos de ellos pueden ejecutarse desde cualquier base de datos.
Referencia en Espaol.
http://manuals.sybase.com/onlinebooks/group-asarc/svs11001/sqlrefsp/@ebtlink;pt=62;lang=es?target=%25N%15_59548_START_RESTART_N%25

Recopil: Dra. Maria del Pilar Angeles

96

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

5.7. Respaldo y Recuperacin de la informacin (ppt: SDBA_Taller_dia3 slide 94)


ASE Reference Manual capitulo commands
http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.commands/html/commands/c
ommands54.htm
System Administration Guide
http://manuals.sybase.com/onlinebooks/group-as/asg1250e/sag/@Generic__BookView
Para bajar el manual
http://www.database-books.us/sybase_0007.php
1. Dar de alta el servidor de respaldos dentro del servidor de datos.
Syntax:
sp_addserver logical_name [, {local | NULL} ] {, physical_name }
Example:
sp_addserver SYB_BACKUP, NULL, VIOLET_back
logical_name
SYB_BACKUP para el Backup Server local
local/NULL
siempre NULL para todos los Backup Servers (y todos los ASE remotos)
physical_name
El nombre del Backup Server local en el archive de interfaces
VIOLET_back es el nobre del Backup Server en el archive de interfaces
2. Start Backup Server
UNIX / LINUX:
Con el commando startserver
Example:

Recopil: Dra. Maria del Pilar Angeles

97

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

startserver -f RUN_VIOLET_back
Windows:
START-->SETTINGS-->CONTROL PANEL-->Services
Selecciona el nombre del servidor y seleccionar Start
Configurar Adaptive Server para acceso remoto, si es necesario
Por omission el servidor ya esta configurado para acceso remote
Verificar que el usuario de SO (sybase) tenga permisos de hacer respaldos
Dar de alta el dispositivo para respaldo
Syntax:
sp_addumpdevice {"tape" | "disk" }, logical_name, "physical_name" [, tapesize ]
Examples:
sp_addumpdevice "tape", tape3, "/dev/nrmt4",300
sp_addumpdevice "disk",disk1, "/usr/backups/disk.dump"
On most platforms, Adaptive Server automatically installs in sysdevices one or two aliases for tape
devices
Examples:
tapedump1 /dev/nrmt4
tapedump2 /dev/nrst0
sp_addumpdevice agrega alias adicionales
Realizar el respaldo de la base de datos con el commando dump database
dump database respalda base de datos y log de transacciones
Puede realizarse con los usuarios activos
Durante el proceso de respaldo se realiza lo siguiente:
Se realiza un checkpoint
Las paginas sucias se copian de cache a disco
Copia las paginas alojadas al dispositivo de respaldo
Capture el estado de la base de datos cerca del final del proceso de respaldo
a)Opcion multi stripe
dump database db1 to "/dev/nrmt4"
stripe on "/dev/nrmt5"
stripe on "/dev/nrmt0"
c)

Opcion multitape

dump database pubs2 to "/dev/nrmt0"


Respalda la base de datos pubs2 a dump device. Dado que init no se especifico, el respaldo se escribe
despus de los archivos existentes.
dump database pubs2 to "/dev/nrmt0" with init
Inicializa la cinta, respalda pubs2 y sobreescribe los archives existents en el dispositivo de respaldo.
dump database pubs2 to "/dev/nrmt0" stripe on "/dev/nrmt1"
Respalda a dos dispositivos una mitad de respaldo en cada uno
dump database pubs2 to dump_dev
Respalda a un dispositivo logico de nombre dump_dev
dump database pubs2 to "/dev/nrmt0" at SHANTI_back
Respalda el dispositivo controlado por un servidor de respaldos remoto
Recuperacion de la base de datos ppt: slide 112

Recopil: Dra. Maria del Pilar Angeles

98

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

La bd no debe estar en uso, ya debe existir, debe ser tan grande como el tamao del archivo de respaldo,
usar sp_helpdb para saber el tamao de la bd.
Usar load database ... with headeronly par aver el tamao del archivo de respaldo
Al recuperar la base de datos, pone la bd fuera de linea.
Secuencia de los comandos
load database database_name from
<pathname_where_dump_is_stored>
online database database_name
Ejemplos de load:
load database pubs2
from "data_dev1"
load database pubs2
from "/dev/nrmt0"
load database pubs2
from "/dev/rmt4" at SHANTI_back
stripe on "/dev/rmt5" at SHANTI_back

Recopil: Dra. Maria del Pilar Angeles

99

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

6. Organizacion Fisica de la Base de Datos


Objetivo: El alumno explicar los conceptos de los tipos de archivos en las Base de Datos, as como los
diferentes tipos de ndices.
6.1.

Archivos Indexados

6.2.

Archivos con Dispersin

6.3.

Archivos de Autentificacin

6.4.

Arboles B

7. Extensiones de las Bases de Datos


Objetivo: El alumno explicar las nuevas tendencias tecnolgicas en Bases de Datos.
7.1.

Administracin de Base de Datos (presentacin dba.ppt)

Obligaciones y responsabilidades del Administrador de Base de datos


o
Definicin del Esquema Conceptual
o
Definicin del Esquema interno
o
Involucramiento con los usuarios
o
Control de autorizacin y procedimientos de validacin
o
Estrategia de respaldos y recuperacin
o
Control de desempeo y cambios de requerimientos
o
Control de versiones y mantenimiento
Detalle de sus responsabilidades
a)
Es responsable de las operaciones tcnicas de las base de datos de la organizacin.
b)
Creacin y diseo fsico

El DBA colaborar con Analistas de Sistemas

Revisar esquemas generados.

Asistir en el diseo de esquemas previos a la creacin del Modelo Interno (fisico)


c)
Soporte a Produccin

En conjuncin con el administrador del sistema operativo, el DBA soportar y solucionar


problemas referentes a la base de datos

Resolver conflictos de alojamiento de recursos

Decidir sobre el ambiente de produccin, ej. Nmero de bases de datos a crear.


d)
Afinacin de Rendimiento (Performance Tunning)

En conjuncin con el administrador del sistema operativo, el DBA examinar y realizar


recomendaciones sobre problemas de rendimiento.

Conducir investigaciones necesarias para la deteccin de problemas y cuellos de botella.


e)
La afinacin de aplicaciones se espera sea realizada por los desarrolladores en conjunto con las
recomendaciones del DBA
f)
Privilegios de acceso

EL DBA otorgar permisos y restricciones de acceso de manera apropiada a la comunidad de


usuarios.

EL DBA asistir a los desarrolladores en la asignacin de roles de usuario y proveer seguridad a


las aplicaciones.
g)

Respaldo y Recuperacin
El DBA realizar calendarizacin y monitoreo de respaldos y recuperaciones de base de datos.

Recopil: Dra. Maria del Pilar Angeles

100

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

h)
Guas de Programacin

Realizar guas de programacin para permitir a los desarrolladores el ms eficiente desarrollo de


las aplicaciones

Actualizacin de software (Upgrade)

En conjuncin con el administrador del sistema operativo, el DBA examinar las nuevas versiones
y releases de sistemas y software de base de datos, entender las mejoras, nuevas facilidades as como la
estabilida que ofrece cada nuevo producto.

Recomendar si se realiza el upgrade o se espera a una nueva versin/release ms estable, con ms


mejoras que merezcan el esfuerzo necesario para la actualizacin.
i)
Ejemplos de tareas administrativas:

Estar pendiente de las necesidades de los usuarios, as como mantenerlos informados sobre
cambios en los ambientes de produccin, desarrollo, etc.

Proporcionar espacios comunes para la explotacin y mantenimiento de llaves, diccionarios de


datos,etc.
j)
Ejemplos de tareas de seguridad:

Monitorear y mantener seguridad de la base de datos, software de BD, aplicacin, roles,


programas, tablas, vistas, columnas,etc. En colaboracin con dems administradores.

Proporcionar, revocar y monitorear accesos a la informacin.

Proteger licencias del software de la organizacin.

k)
Ejemplos de actividades diarias

Mantener ambientes de pruebas, desarrollo y produccin, tirar y levantar base de datos

Monitorear y optimizar los recursos y rendimiento de la base de datos.

Mantener disponibilidad e integridad de la BD. Incluyendo integridad referencial y esquemas de


mltiples accesos (candados/locks).
l)
Instalacin de software de BD, en conjuncin con los administradores de sistema operativo y
redes.
m)
Monitoreo y manejo de respaldos de base de datos, cargas masivas de informacin o carga de
BD a otra plataforma (migracin).
n)
Ejemplos de actividades de planeacin

Planeacin de capacidades: capacidades de proceso, almacenamiento, respaldo.

Planeacin de esquemas de seguridad e integridad de la informacin.

Revisin y desarrollo de modelo de datos y diseo de base de datos, normalizacin


denormalizacin indexado y definicin de vistas.
7.2.

Bases de Datos distribuidas

Las Bases de Datos Distribuidas corresponden a una Base de datos virtual compuesta por varias Bases de
Datos reales que se encuentran ubicadas en lugares fsicos diferentes. Cada sitio tiene su base de datos, sus
usuarios, su manejador de base de datos. Soportan transacciones distribuidas que garantizan la consistencia
cuando las aplicaciones accedan mas de una sola base de datos en tiempo real. Esto se logra usando el
protocolo de compromiso de dos fases (2PC).
Las Bases de Datos Distribuidas fueron diseadas para soportar una sola aplicacin en donde los datos
estn fsicamente distribuidos y tomar ventaja de los sistemas de comunicacin, de las facilidades del
particionamiento, replicacin, y los mecanismos de control de concurrencia y procesamiento distribuido
entre otros, proporcionando un mejor rendimiento y tiempo de respuesta. En este tipo de sistemas de bases
de datos es en donde existe mayor interdependencia entre las bases de datos componentes y se disean
estos componentes desde el principio, utilizando el mismo Sistema Manejador de Bases de Datos en los
sitios implicados a fin de evitar traducciones de un modelo de datos a otro.
7.3.

Bases de Datos Orientadas a Objetos

Recopil: Dra. Maria del Pilar Angeles

101

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Introduccin y conceptos bsicos (presentacin introoo.ppt)


Las BDOO almacenan y manipulan informacin que puede ser digitalizada (representada) por objetos,
proporcionan una estructura flexible con acceso gil, rpido, con gran capacidad de modificacin.
Una base de datos orientada a objetos (BDOO) da un ambiente para el desarrollo de aplicaciones con un
depsito persistente listo para su explotacin.
Permiten que el mismo modelo conceptual se aplique al anlisis, diseo, programacin, definicin y acceso
a la base de datos. Esto reduce el problema del operador de traduccin entre los diferentes modelos a
travs de todo el ciclo de vida.
Conceptos bsicos del modelo bsico de BDOO:
Objeto e identidad: Cada entidad del mundo real se modelo como un objeto. Cada objeto est asociado
con un identificador nico.
Cada entidad del mundo real se representa por un objeto al cual est asociado un estado y un
comportamiento.
Estado: Valores de los atributos del objeto.
Comportamiento: Mtodos que actan sobre el estado del objeto cuando se invocan las operaciones
correspondientes.
Un objeto es cualquier cosa real abstracta acerca de la cual almacenamos datos y los mtodos que
controlan dichos datos. Por ejemplo, En una empresa EMPLEADO se aplica a los objetos que son personas
empleadas por alguna organizacin alguna INSTANCIA podra ser Juan Prez, Mara Snchez etc.
IDO Identificador de objeto, la identidad de un objeto, tiene una existencia independiente de los valores de
los atributos del objeto. Utilizando el IDO, los objetos pueden compartir otros objetos y se pueden construir
redes de objetos.
Objetos complejos: Un conjunto de atributos o variables de instancia est asociado a cada objeto; el valor
de un atributo puede ser un objeto o un conjunto de objetos. Esta caraterstica permite definir objetos
arbitrariamente complejos en trminos de otros objetos
Encapsulamiento: cada objeto contiene y define los procedimientos (mtodos) y la interfaz mediante la
cual se puede acceder a l y otros objtos pueden manipularlo.
En otras palabras, el encapsulado es el resultado ( o acto) de ocultar los detalles de implantacin de un
objeto respecto de su usuario.

Interfaz de un objeto: consiste en un conjunto de operaciones que pueden ser invocadas sobre el objeto.
El estado de un objeto (atributos) es manipulado mediante los mtodos invocados por las operaciones
correspondientes.
Clases: Todos los objetos que comparten el mismo conjunto de atributos y mtodos se agrupan en clases.
Cada objeto pertenece (es una instancia/ ejemplar) a una clase. En otras palabras, es una implantacin de
un tipo de objetos. Especifica una estructura de datos y los mtodos operativos permisibles que se aplican
a cada uno de sus objetos.
Herencia: Una clase se puede definir como especializacin de una o ms clases existentes y heredar los
atributos y mtodos de tales clases. La clase as definida puede llamarse subclase, mientras que las clases a
partir de las que ha sido definida se denominan superclases.
En otras palabras: Herencia: Una clase implanta el tipo de objeto. Una Subclase hereda propiedades de
su clase padre, una subclase puede heredar la estructura y los mtodos algunos de los mtodos.

Recopil: Dra. Maria del Pilar Angeles

102

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Sobrecarga overloading , suplantacin o anulacin overriding y ligadura tarda (late binding) con estas
funciones se pueden asociar diferentes mtodos a un mismo nombre de operacin, dejando que sea el
sistema quien determine qu mtodo es el que debe ser utilizado para ejecutar determinada operacin.
Las funciones virtuales permiten que clases derivadas de una misma base (clases hermanas), puedan tener
diferentes versiones de un mtodo de la base comn. Observe que esta posibilidad de que diversas
descendientes de una base comn puedan exhibir diversos comportamientos para una misma funcin
origen, es precisamente lo que posibilita y define el polimorfismo.
Polimorfismo: capacidad de referirse a objetos de clases distintas en una jerarqua utilizando el mismo
elemento de programa para realizar la misma operacin, pero de formas distintas.
Anulacin o sustitucin: cuando redefino un mtodo heredado en la subclase, se dice que estoy anulando o
sustituyendo dicho mtodo. Sera deseable una "herencia selectiva": seleccionar lo que se requiere heredar
es la mejor forma de anulacin.
Sobrecarga: Propiedad que puede darse tambin sin herencia. Es designar varios elementos
(identificadores) con el mismo nombre. No es anulacin.
Polimorfismo (sobrecarga con anulacin) es la forma de invocar a distintos mtodos utilizando el
mismo elemento de programa.
Polimorfismo
Polimorfismo es invocar mtodos distintos con el mismo mensaje (ligadura en tiempo de ejecucin).
Para ello es necesaria una jerarqua de herencia: una clase base que contenga un mtodo polimrfico, que
es redefinido en las clases derivadas (no anulado).
Se permite que los mtodos de los hijos puedan ser invocados mediante un mensaje que se enva al padre.
Este tipo de clase que se usa para implementar el polimorfismo se conoce como clase abstracta.
Objetos Compuestos
Los objetos pueden contener a su vez objetos de otras clases dentro de s (esto es lo que da la potencia a la
POO).
El contenido la mayora de las veces no es el objeto en s, sino una referencia (puntero) al objeto; con la
ventaja de que el objeto contenido puede cambiar de contenido o posicin sin afectar al objeto que
contiene.
El objeto contenido puede, adems, estar en varios objetos a la vez.
Al mismo tiempo que se crea un objeto, se crean los objetos que contiene.
Estructura de objetos.
El modelo orientado a objetos se basa en encapsular cdigo y datos en una nica unidad, llamada objeto.
El interfaz entre un objeto y el resto del sistema se define mediante un conjunto de mensajes.
Un objeto tiene asociado:

un conjunto de variables que contienen los datos del objeto. El valor de cada variable es un objeto.

Un conjunto de mensajes a los que el objeto responde.

Un mtodo, que es un trozo de cdigo para implementar cada mensaje. Un mtodo devuelve un
valor como respuesta al mensaje.
El trmino mensaje en un contexto orientado a objetos, no implica el uso de un mensaje fsico en una red
de computadoras, si no que se refiere al paso de solicitudes entre objetos sin tener en cuenta detalles
especficos de implementacin.
La capacidad de modificar la definicin de un objeto sin afectar al resto del sistema est considerada
como una de las mayores ventajas del modelo de programacin orientado a objetos.
Herencia
Herencia es la capacidad de un objeto (clase) para utilizar las estructuras y los mtodos existentes en
antepasados o ascendientes.
Es la reutilizacin de cdigo desarrollado anteriormente.
Cuando usamos herencia decimos que hacemos programacin por herencia: Definicin de nuevos tipos a
partir de otros con los que comparten algn tipo de caracterstica.
Tipos de herencia
Herencia simple: un tipo derivado se crea a partir de una nica clase base.

Recopil: Dra. Maria del Pilar Angeles

103

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Figura

Rectngulo

Tringulo

Herencia mltiple: una clase tienen ms de una ascendiente inmediato.


Persona

Profesor

Investigador

Profesor
universitario

La herencia mltiple puede plantear 2 tipos de problema:


La herencia repetida: ej.: "profesor universitario hereda 2 veces los atributos de persona"
Produce ambigedad respecto a los atributos o los mtodos. En la clase base pueden haber
atributos que se llamen igual.
EscalaResolucin-

-Escala
Sonido

Grficos

-Resolucin

Multimedia

Slo 2 lenguajes incorporan herencia mltiple: Eiffel y C++


Polimorfismo (sobrecarga con anulacin)
Es la forma de invocar a distintos mtodos utilizando el mismo elemento de programa.
Jerarqua de clases.
En una base de datos existen objetos que responden a los mismos mensajes, utilizan los mismos mtodos
y tienen variables del mismo nombre y tipo. Sera intil definir cada uno de estos objetos por separado por
lo tanto se agrupan los objetos similares para que formen una clase, a cada uno de estos objetos se le llama
instancia de su clase. Todos los objetos de su clase comparten una definicin comn, aunque difieran en los
valores asignados a las variables.
As que bsicamente las bases de datos orientados a objetos tienen la finalidad de agrupar aquellos
elementos que sean semejantes en las entidades para formar un clase, dejando por separado aquellas que no
lo son en otra clase.

Caractersticas de un LPOO
1.
Tipificacin fuerte: comprobacin de tipos en tiempo de compilacin. Hay una excepcin:
Smalltalk.
2.
Ocultacin: de las caractersticas de los objetos.

Recopil: Dra. Maria del Pilar Angeles

104

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera
3.
4.
5.
6.
7.
8.
9.

Base de Datos

Compilacin Incremental: compilacin separada.


Genericidad: reutilizacin de cdigo.
Paso de mensajes.
Polimorfismo: basado en la ligadura dinmica.
Excepciones: sistema seguro.
Concurrencia: "el mundo real es concurrente".
Datos compartidos: entre varios objetos.

Existen 3 tipos de relaciones entre clases/objetos:


Generalizacin
Agregacin
Asociacin
Relacin de Generalizacin
Permite una estructuracin jerrquica de las clases que comparten estructuras o comportamientos. Son
relaciones del tipo "es_un" o "un_tipo_de". Son relaciones de herencia.
Desde el punto de vista de la clase ascendiente (padre), se trata de una generalizacin de las hijas en el
padre.
Desde el punto de vista de las clases descendientes (hijas), se trata de una especializacin de la clase base.
Padre

Hija

Generalizacin

Hija

Especializacin

Una relacin de herencia es siempre transitiva (Padre_Hijo_Nieto).


Caractersticas
Incrementa la flexibilidad y la eficiencia de los programas: nos hacen escribir menos cdigo a la
vez que se mejora la abstraccin.
La velocidad del programa puede relentizarse si hay que buscar las funciones asociadas en tiempo
de ejecucin.
Tipos de herencia
Herencia simple: slo hay 1 clase base.
Herencia mltiple: hay 2 o ms clases base.
La herencia mltiple se tiende a sustituir por clases genricas para eliminar problemas que origina.
Ventajas de la herencia mltiple
Permite modelar ms objetos y ms variados.
Es sencilla, es elegante, es flexible.
La reutilizacin de cdigo es mayor.
Permite modificar las clases sin que por ello se tenga que modificar el interface de la clase
derivada.
Inconvenientes de la herencia mltiple
Confusin y comportamiento impredecible: se puede heredar 2 veces la misma caracterstica y
tener mtodos y atributos con el mismo nombre.
Aumento del tiempo de ejecucin; debido a que se tienen que resolver colisiones.

Recopil: Dra. Maria del Pilar Angeles

105

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Mtodos de resolucin de colisiones (herencia mltiple)


1.
Smalltalk y Eiffel no permiten semnticamente la ambigedad de datos o mtodos. Adems
Eiffel permite renombrar los datos y mtodos que se heredan en la clase hija.
2.
CLOS permite ambigedad, y es resuelta por el compilador.
3.
Con datos repetidos, C++ obliga a cualificarlos con el nombre de la clase a la que pertenecen.
Tipos de agregacin
Por contenido fsico o por valor
El contenedor contiene el objeto en s. Cuando creamos un objeto contenedor, se crean tambin
automticamente los contenidos.

Coche
es_parte_de

Transmisin

Motor

Chasis

Agregacin conceptual o por referencia


Se tienen punteros a objetos. No hay un acoplamiento fuerte. Los objetos se crean y se destruyen
dinmicamente.

Empresa
tiene_un
Depto.
tiene_un
Seccin

http://www.odbmsfacts.com/articles/object-oriented_databases.html
Direccion de varios articulos sobre OODBMS.

Recopil: Dra. Maria del Pilar Angeles

106

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

Consultas orientadas a objetos:


Los lenguajes de programacin orientados a objetos requieren que toda la interaccin con objetos se
realiza mediante el envo de mensajes.
Consideremos el ejemplo de alumno-cursa-materia deseamos realizar la consulta de los alumnos que
cursan la materia de Base de Datos 1, para realizar esta consulta se tendra que enviar un mensaje a cada
instancia alumno
As un lenguaje de consultas para un sistema de bases de datos orientado a objetos debe incluir tanto el
modelo de pasar el mensaje de objeto a objeto como el modelo de pasar el mensaje de conjunto en
conjunto.
Complejidad de Modificacin.
En base de datos orientados a objetos pueden existir los siguientes cambios:

Adicin de una nueva clase: Para realizar este proceso, la nueva clase debe colocarse en la
jerarqua de clase o subclase cuidando las variables o mtodos de herencia correspondientes.

Eliminacin de una clase: Se requiere la realizacin de varias operaciones, se debe de cuidar los
elementos que se han heredado de esa clase a otras y reestructurar la jerarqua.
En s la estructuracin de modelos orientados a objetos simplifica una estructura evitando elementos o
variables repetidas en diversas entidades, sin embargo el precio de esto es dedicarle un minucioso cuidado a
las relaciones entre las clases cuando en modelo es complejo, la dificultad del manejo de objetos radica en
la complejidad de las modificaciones y eliminaciones de clases, ya que de tener variables que heredan otros
objetos se tiene que realizar una reestructuracin que involucra una serie de pasos complejos.

Aplicaciones Avanzadas (Depsitos de Datos, Minera de Datos, Internet, etc.).


Bodegas de Datos
Integrar la informacin relevante proveniente de diversas fuentes de datos almacenndola en una bodega de
datos o repositorio. Se han desarrollado herramientas de Extraccin Transformacin y Carga (ETL) para
poblar una bodega de datos (datawarehouse), a travs de las cuales se extraen datos de la operacin
(usualmente mediante procesos por lotes), se transforman los datos para adecuarlos a ciertos procesos
determinados. Sin embargo, la extraccin de datos de diversas fuentes, los procesos de limpieza,
transformacin y carga as como el acceso a la informacin no es en tiempo real. El objetivo de la
tecnologa ETL es la toma de decisiones a partir de datos histricos almacenados en bodegas de datos,
razn por la cual estas herramientas no son las ptimas para el acceso en tiempo real a fuentes de datos
heterogneas.

Usos tpicos de la Tecnologa de Bodega de Datos


La integracin de datos en una bodega de datos a travs de los procesos de extraccin transformacin y
carga (ETL) es apropiada cuando se requiere integrar y procesar grandes cantidades de informacin,
permite reutilizacin de cdigos de transformacin , existe una metodologa para su diseo y proporciona
soporte a metadatos, incluyendo anlisis de impacto. Las herramientas ETL estn orientadas a conjuntos,
transformacin de datos que reflejan un punto en el tiempo (no datos en tiempo real) se requieren

Recopil: Dra. Maria del Pilar Angeles

107

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

transformacin para migrar, consolidar la informacin hacia un repositorio. Con las herramientas ETL se
puede realizar cargas de informacin de manera calendarizada, concurrente y paralela ofreciendo un buen
rendimiento y escalabilidad, el anlisis puede ser planeado con anticipacin o orientado a eventos,
proporciona integracin con los procesos de negocio.
Integracin Empresarial de Aplicaciones (EAI).
Integrar los procesos de negocio de las aplicaciones corporativas a travs de programas interface entre
aplicaciones (APIS). A esto se le conoce como Integracin Empresarial de Aplicaciones (EAI). La EAI
proporciona integracin proceso a proceso y ayuda a ejecutar transacciones y flujos de proceso, pero no
est diseada para procesar consultas complejas a diferentes fuentes de datos, ni para la agregacin de
subconjuntos y presentacin de un solo conjunto resultado.

Usos tpicos de la Tecnologa de Integracin Empresarial de Aplicaciones (EAI)


Es conveniente para la integracin de datos de aplicacin basndose en procesos, su proceso se basa en
transacciones.
La integracin empresarial de aplicaciones esta basada en mensajes que interpretan el requerimiento, lo
transforman y lo envian de una aplicacin a otra a travs de programas de interface entre aplicaciones
(API). Este mecanismo simplifica la integracin de aplicaciones al reducir el conocimiento detallado y
especifico que se requiere de las aplicaciones por parte de los usuarios.
Los beneficios que la integracin de aplicaciones ofrece son bsicamente enfocados a la integracin de
procesos y datos a nivel de negocio. Cuando existen procesos de negocios y datos que se requiere distribuir
o reutilizar dentro de la corporacin.
Integracin de Informacin Empresarial (EII)
Integrar los datos en tiempo real a travs de un acceso estandarizado. A esta tecnologa se le conoce como
Integracin de Informacin Empresarial (EII) Un producto que obedezca a la integracin de informacin
empresarial deber proporcionar herramientas que permitan una fcil integracin tanto para programadores
como para usuarios finales, y al mismo tiempo que proporcionan una herramienta de programacin para el
caso de mtodos de transformacin y agregacin para casos de integracin compleja de datos. Tambin
debe proporcionar acceso a una amplia variedad de fuentes de datos como bases de datos relacionales,
archivos planos, servicios de web, documentos XML, aplicaciones, etc. La integracin de datos requiere de
un catalogo de fuentes de datos e integraciones que puedan ser buscadas y reutilizadas, para evitar costos
de re programacin. Es ideal para aplicaciones que requieren informacin generada en tiempo real que es
selectivamente integrada a partir de mltiples fuentes. El producto de integracin empresarial deber

Recopil: Dra. Maria del Pilar Angeles

108

Universidad Nacional Autnoma de Mxico


Facultad de Ingeniera

Base de Datos

proporcionar una seccin de administracin de la seguridad que verifique la autenticidad de los usuarios y
sus perfiles de autorizacin para la creacin, modificacin y ejecucin de las consultas definidas. Los
dueos de los datos deben de tener una interface que les permita definir qu datos pondrn disponibles a
quien y bajo qu condiciones.
Usos tpicos de la tecnologa EII
El uso de la integracin de informacin empresarial ha aumentado en los ltimos aos en aquellos sectores
en donde se requiere de la habilidad de consultar e integrar datos en tiempo reala partir de fuentes
heterogneas para tomar decisiones de negocios. Las tecnologas anteriormente descritas no proporcionan
esta habilidad.
Ejemplos de uso de EII En general, esta tecnologa presenta ventajas a aquellas empresas que presentan
diversas lneas de negocio y requieren obtener una visin general orientada por usuarios, en donde se pueda
compartir la informacin de un cliente a lo largo de las diversas lneas de negocio que se manejan para
proporcionar un mejor nivel de servicio.
Por ejemplo, un cliente de un banco que tiene una cuenta de cheques en donde recibe su salario, no desea
proporcionar informacin confidencial una vez ms si desea tramitar un crdito hipotecario en la misma
institucin bancaria en donde maneja su salario. Una opcin inteligente en este caso sera que la propia
institucin consulte la informacin sobre los ingresos y egresos de este cliente a fin de tomar una decisin
sobre la factibilidad de un prstamo hipotecario. Los datos visibles al empleado deben ser actuales,
comprensibles e incluir informacin de mltiples divisiones y aplicaciones.
La integracin de datos empresarial debe soportar la ejecucin de consultas definidas con anterioridad por
aplicaciones existentes, consultas no planeadas y aquellas que se requieran al momento de la integracin de
la informacin.
El rendimiento de esta tecnologa debe ser excelente, porque maneja datos que pueden cambiar
constantemente, el nmero de fuentes de datos integradas puede tambin aumentar y por tanto debe ser
escalable.
Para proteger las fuentes de datos de cargas excesivas, mejorar el tiempo de respuesta y proporcionar datos
actualizados se requiere del uso de reas de cache.
Procesamiento de consultas inteligente en donde el optimizador de consultas que permita la planeacin de
consultas distribuidas y la integracin de stas y en el caso de afinacin de consultas permita a los
desarrolladores analizar el rendimiento y afinarlas como se requiera.
Los beneficios de EII incluyen:
El mantenimiento a las aplicaciones es mucho ms sencillo, porque no tienen que ser re-escritas cuando un
nuevo dato necesita integrarse o la localizacin fsica de las fuentes de datos ha cambiado. Nuevas fuentes
de datos pueden ser agregadas incrementalmente sin afectar las aplicaciones existentes.
Los desarrolladores pueden encontrar consultas o servicios que ya han sido desarrollados y re-utilizarlos si
es apropiado en lugar de crearlos de nuevo. EII proporciona ahorros significativos, porque los
desarrolladores se pueden enfocar en la lgica del negocio y no en el cdigo de acceso.
Los dueos de la informacin pueden ver que datos especficos han puesto a disponibilidad de las
aplicaciones que las requieren, as como tambin controlar el acceso y la carga de datos a sus fuentes de
datos. Adems, es posible el seguimiento del uso de los datos que los usuarios externos le estn dando.

Recopil: Dra. Maria del Pilar Angeles

109

You might also like