Professional Documents
Culture Documents
Facultad de Ingeniera
1
Base de Datos
2.
3.
Base de Datos
5.
6.
7.
Base de Datos
Base de Datos
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.
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
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.
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.
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
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
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.
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:
segn ANSI
Nivel Externo ---->
Perspectiva
Personal del
Programador
Nivel Conceptual
Perspectiva de la
Comunidad de
Usuarios
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
10
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.
11
Base de Datos
12
Base de Datos
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.
13
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
14
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).
15
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.
16
Base de Datos
17
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.
18
2.2.2.
Base de Datos
Los diagramas entidad relacin son esquemas que nos permitan representar conjunto de entidades y sus
relaciones mediante la siguiente simbologa
19
Base de Datos
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.
20
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:
21
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).
22
Base de Datos
23
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
Entonces
las
tablas
resultantes
siguiendo
la
descripcin
anterior
son:
Tabla Empleado
Nombre Puesto
Salario
RFC
Tefilo Vendedor
2000
TEAT701210XYZ
Cesar
1200
COV741120ABC
Auxiliar
24
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
2. Incluyendo en alguna de las tablas de las entidades involucradas, la llave de la otra tabla.
25
Base de Datos
2.
3.
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.
26
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
27
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.
28
Base de Datos
Descripcin
Dominio
codCli
Cadena(4)
nombre
Cadena(40),
{letras}
balance
Real
lmiteCrdito
descuento
direccin, dirEnvio
codPed
Cdigo de pedido
Cadena(6)
lnea
cantidadPedida
cantidadEnviada
codArt
Cadena(6)
nomArt
Cadena(20),sub(nomArt,i,1)
{letras}
descripcin
Cadena(255),
sub(descripcin,i,1) {letras}
codPlanta
Cadena(2)
cantidadExistencia
riesgo
sub(nombre,i,1)
29
Base de Datos
Algebra relacional
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
30
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".
31
Base de Datos
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
88
91
Robt. Flores
22
Fume Blanc
Robt. Mondavi 87
90
25
86
89
30
87
90
43
12
92
50
Pinot Noir
Mirassou
82
90
51
Pinot Noir
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.
32
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
situacin sea
33
Base de Datos
ACTIVIDADES Y RECURSOS
Una base de datos de una importante empresa contiene las siguientes tablas:
34
Base de Datos
Edad
Cdula
Hora
Tabla Atiende
Afiliacin Fecha
35
Base de Datos
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
36
Base de Datos
implementado directamente en algn manejador de base de datos. Dentro de esta fase es comn el uso del
modelo Entidad - Relacin.
37
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
38
Base de Datos
39
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.
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.
DEPARTAMENTO
# nodepto
* departamento
* num_localidad1 nom_local1
o num_localidad2 nom_local2
o num_localidad3 nom_local3
40
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
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
41
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
42
Base de Datos
43
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:
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
44
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
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
45
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
46
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 )
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
47
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
48
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
49
Base de Datos
2.
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.
50
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.
51
Base de Datos
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.
52
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.
53
Base de Datos
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.
54
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)
55
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.
56
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.
57
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.
58
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.
59
Base de Datos
60
Base de Datos
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;
61
Base de Datos
1.- Constraints
a nivel tabla
o columna
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;
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,
62
Base de Datos
/*Indice no agrupado */
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.
varchar(30)
63
Base de Datos
title
varchar(80),
price
money
default null,
total_sales
int
default 0) /*Valor 0 por omisin */
Objeto:Reglas
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.
64
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
Los procedimientos almacenados estn disponibles para administrar SQL Server y mostrar
informacin acerca de bases de datos y usuarios.
truncate table
update statistics
reconfigure
select into
create trigger forinsertrig1
on salesdetail
for insert as
if (select count(*)
65
Base de Datos
66
Base de Datos
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.
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:
67
Base de Datos
Descripcin
NumC
NombreC
DescC
Creditos
Costo
Depto
NombreC
DescC
A01
Liderazgo
S01
Creditos
Costo
Depto
Para
pblico 10
General
100.00
Admn.
Para ISC y LI
90.00
Sistemas.
C01
Construccin de torres
Para
IC
Arquitectura
0.00
Ciencias
B01
80.00
Bioqumica
E01
IE e II
10
100.00
Electromecnica.
S02
Tecnologa OLAP
Para ISC y LI
100.00
Sistemas
C02
Para IC
10
100.00
Ciencias
B02
Para IB
10
0.00
Bioqumica
E02
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
Para ISC y LI
10
150.00
Informtica
10
y 8
Consultas simples
OBTENCIN DE UNA TABLA ENTERA
*
CURSO
68
Base de Datos
NumC
NombreC
DescC
C01
Construccin de torres
Para
IC
Arquitectura
B02
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.
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
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.
69
Base de Datos
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
Sistemas.
C01
Construccin de torres
Ciencias
B01
Bioqumica
E01
Electromecnica.
S02
Tecnologa OLAP
Sistemas
C02
Ciencias
B02
Bioqumica
E02
Electromecnica
S03
Estructura de datos
Sistemas
A01
Diseo bioclimtico
Arquitectura
C03
Matemticas discretas
Ciencias
S04
Circuitos digitales
Sistemas
S05
Arquitectura de Computadoras
Sistemas
I01
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
70
Base de Datos
SUM ( ): Obtiene el valor total que implican los valores obtenidos en la columna establecida.
Ejemplos:
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.
71
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
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
C2
C3
CA
CB
AAA
10
10
DDD
20
20
72
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;
73
Base de Datos
74
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.
75
Base de Datos
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.
76
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)
77
Base de Datos
78
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.
79
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.
80
Base de Datos
Descripcin
NumC
NombreC
DescC
Creditos
Costo
Depto
DescC
Creditos Costo
A01
Liderazgo
Para
General
S01
Para ISC y LI
C01
Construccin de torres
Para
IC
Arquitectura
B01
E01
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
Para IC
10
100.00 Ciencias
B02
Para IB
10
0.00
E02
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
la Para IB
10
Depto
y 8
Bioqumica
81
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.
82
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.
83
Base de Datos
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 (_).
84
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.
85
Base de Datos
86
Base de Datos
87
Base de Datos
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:
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.
88
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
89
Base de Datos
90
Base de Datos
91
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
92
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.
--------------------------------------------------------------------------------
93
Base de Datos
94
Base de Datos
95
Base de Datos
96
Base de Datos
97
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
98
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
99
Base de Datos
Archivos Indexados
6.2.
6.3.
Archivos de Autentificacin
6.4.
Arboles B
Respaldo y Recuperacin
El DBA realizar calendarizacin y monitoreo de respaldos y recuperaciones de base de datos.
100
Base de Datos
h)
Guas de Programacin
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.
Estar pendiente de las necesidades de los usuarios, as como mantenerlos informados sobre
cambios en los ambientes de produccin, desarrollo, etc.
k)
Ejemplos de actividades diarias
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.
101
Base de Datos
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.
102
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 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.
103
Base de Datos
Figura
Rectngulo
Tringulo
Profesor
Investigador
Profesor
universitario
-Escala
Sonido
Grficos
-Resolucin
Multimedia
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.
104
Base de Datos
Hija
Generalizacin
Hija
Especializacin
105
Base de Datos
Coche
es_parte_de
Transmisin
Motor
Chasis
Empresa
tiene_un
Depto.
tiene_un
Seccin
http://www.odbmsfacts.com/articles/object-oriented_databases.html
Direccion de varios articulos sobre OODBMS.
106
Base de Datos
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.
107
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.
108
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.
109