Anda di halaman 1dari 132

UNIVERSIDAD PERUANA LOS ANDES

FACULTAD DE CIENCIAS ADMINISTRATIVAS


CONTABLES
CARRERA PROFESIONAL: CONTABILIDAD Y
FINANZAS




GESTION INFORMATICA II








Huancayo 2013
Material sujeto a modificaciones y actualizaciones durante el desarrollo del curso

Ing. Elvis Guillermo Huarcaya Quispe Pg.

2
Gestin de informtica II




PRESENTACIN
























En un mundo donde se cambia constantemente la tecnologa y la informacin su tratamiento
automatizado no slo es necesaria para el eficiente funcionamiento de toda organizacin, sino que se
ha convertido en uno de los principales elementos de competitividad.

En este contexto, el almacenamiento de la informacin (en forma de datos) y su disponibilidad para las
aplicaciones de negocio se hace indispensable para la normal operacin y funcionamiento de cualquier
empresa. El personal que opera las diferentes aplicaciones rutinarias interacta con "Base de datos". La
Gerencia, que evala y controla la eficiencia de estas operaciones tambin requerir de informacin, de
manera de planificar nuevas tareas y/o corregir aquellas que no vayan con la estrategia de negocio
planteada. A su vez, las personas que deciden las estrategias de negocio (nuevos mercados, nuevas
lneas de negocio, simple supervivencia, etc.) tambin requieren informacin para toma de decisiones.
Se dice que el principal activo de una organizacin es su personal.
Entonces podra decirse que el segundo en importancia sera su informacin, aunque probablemente y
en muchos casos sta ltima sea ms difcil de reemplazar que el primero. Ya sea que la base de datos
sea usada para apoyar alguno de los niveles organizacionales comentados o todos, debe elegirse la
tecnologa adecuada que garantice su permanente y eficiente disponibilidad, as como que facilite el
desarrollo de aplicaciones y la administracin de la base de datos.


El autor



Ing. Elvis Guillermo Huarcaya Quispe Pg.

3
Gestin de informtica II



NDICE

PRESENTACIN
NDICE
COMPETENCIAS DE LA ASIGNATURA
PRIMERA UNIDAD
Definicin de sistema de base de datos
Modelo Relacional
Dominio y Atributo
Transformacin del Modelo Entidad-Relacin al modelo relacional
Algebra Relacional
Modelo Entidad-Relacin
SEGUNDA UNIDAD
Diseo de Base de Datos
Dependencias Funcionales
Normalizacin
Lenguaje de Consulta de Base de Datos Structured Query Language. TSQL (DDL)
Manipulacin de datos (DML)
Administracin de bases de datos, Gestin de Base de Datos y seguridad
Programacin en SQL (Procedimientos Almacenados, funciones y desencadenantes etc.)
BIBLIOGRAFA



Ing. Elvis Guillermo Huarcaya Quispe Pg.

4
Gestin de informtica II




COMPETENCIAS DE LA ASIGNATURA












- Analiza y disea e implementa una base de datos, utilizando el modelo
entidad-relacin, modelo relacional, modelo distribuido de una
organizacin Pblica o Privada con creatividad y responsabilidad.
- Implementa en un gestor de bases de datos basados en arquitectura
Cliente/Servidor y Administra base de datos corporativa


Ing. Elvis Guillermo Huarcaya Quispe Pg.

5
Gestin de informtica II

PRIMERA UNIDAD







SISTEMA DE BASE DE DATOS

1. Introduccin

En una empresa, las entidades estn representadas por los operarios, los empleados, los clientes, los proveedores, las facturas.
En este tipo de organizacin y otras se ha de trabajar con una gran cantidad de datos, lo cual hace surgir la necesidad de
almacenarlos de manera que nos resulten de fcil acceso en cada momento y, por consiguiente, tiles a nuestras actividades.
Si por ejemplo cada da debemos gestionar varias decenas de clientes y facturas, utilizaremos un sistema para memorizar los
datos como, por ejemplo, un fichero, ms bien antes que recurrir nicamente a la memoria. Las fichas aparecen reagrupadas en
archivos, cada uno de los cuales contiene en general las fichas de un slo tipo, las de los proveedores o las de los productos.
Este sistema recibe el nombre de base de datos, que no es ninguna otra cosa ms que una coleccin de informaciones tales
como el catlogo de los ficheros de una biblioteca, un listado telefnico o una enciclopedia.

El trmino de bases de datos fue escuchado por primera vez en 1963, en un simposio celebrado en California USA. La idea
de base de datos surge como una necesidad de mantener datos relacionados.

Para entender mejor el concepto de Base de datos empezaremos con las definiciones siguientes:

- Dato: Conjunto de caracteres con algn significado, pueden ser numricos, alfabticos, o alfanumricos.

- Informacin: Es un conjunto ordenado de datos los cuales son manejados segn la necesidad del usuario, para que un
conjunto de datos pueda ser procesado eficientemente y pueda dar lugar a informacin, primero se debe guardar
lgicamente en archivo

2. Definiciones de BD
Todas las definiciones coinciden en que es un conjunto de datos almacenados
- Un conjunto de informacin relacionada que se encuentra agrupada estructurada.
- Un sistema formado por un conjunto de datos almacenados en discos que permiten el acceso directo a ellos y un conjunto
de programas que manipulen ese conjunto de datos (punto de vista informtico)
- Coleccin de datos interrelacionados almacenados en conjunto sin redundancias perjudiciales o innecesarias; su finalidad
es servir a una o ms aplicaciones de la mejor forma posible; los datos se almacenan de modo que resulten
independientes de los programas que los usan; se emplean mtodos bien determinados para incluir nuevos datos y para
modificar o extraer los datos almacenados. Martin, 1975.
- Coleccin integrada y generalizada de datos, estructurada atendiendo a las relaciones naturales de modo que suministre
todos los caminos de acceso necesarios a cada unidad de datos con objeto de poder atender todas las necesidades de los
diferentes usuarios. Deen, 1985.
- Coleccin de datos integrados, con redundancia controlada y con una estructura que refleje las interrelaciones y
restricciones existentes en el mundo real; los datos, que han de ser compartidos por diferentes usuarios y aplicaciones,
deben mantenerse independientes de stas, y su definicin y descripcin, nicas para cada tipo de datos, han de estar
almacenadas junto con los mismos. Los procedimientos de actualizacin y recuperacin, comunes y bien determinados,
habrn de ser capaces de conservar la integridad, seguridad y confidencialidad del conjunto de los datos. A.de Miguel,
1993.
- Una base de datos consiste en alguna coleccin de datos persistentes e independientes usados por una organizacin
determinada. (Date, 1995)

3. Anlisis del concepto de Base de Datos
El concepto de Base de Datos determina algunas caractersticas propias, por ejemplo:
- El mundo real considera interrelaciones entre datos y restricciones semnticas que deben estar presentes en una
base de datos. Una base de datos no solo debe almacenar entidades y atributos, sino que tambin debe almacenar
COMPETENCIA
Analiza y disea e implementa una base de
datos, utilizando el modelo entidad-relacin,
modelo relacional, modelo distribuido de una
organizacin Pblica o Privada con creatividad y
responsabilidad

Ing. Elvis Guillermo Huarcaya Quispe Pg.

6
Gestin de informtica II
interrelaciones entre datos. Por otro lado, actualmente se le est dando mucha importancia a las restricciones
semnticas, de manera que stas se almacenan junto con los datos.
- La redundancia de datos debe ser controlada, de forma que no existan duplicidades perjudiciales ni innecesarias.
- Las bases de datos pretenden servir a toda la organizacin, es decir a mltiples usuarios y a diferentes aplicaciones.
- La definicin y descripcin del conjunto de datos contenido en la base debe ser nica e integrada con los mismos
datos. En las bases de datos, la descripcin, y en algunos casos, tambin una definicin y documentacin completas
(metadatos) se almacenan junto con los datos, de modo que stos estn documentados, y cualquier cambio que se
produzca en la documentacin debe quedar recogido en el sistema.
- La actualizacin y recuperacin de las bases de datos debe realizarse mediante procesos bien determinados,
incluidos en el SGBD; procedimientos que han de estar diseados de modo que se mantenga la integridad,
seguridad y confidencialidad de la base.

4. Caractersticas elementales de una Base de Datos
El objetivo de disminuir la redundancia de un conjunto de datos determina dos caractersticas fundamentales que poseer
cualquier sistema de Bases de Datos:
a) Integrada
Una base de datos puede considerarse como una unificacin de varios archivos de datos independientes, donde se
elimina parcial o totalmente cualquier redundancia entre los mismos. Ejm: Una BD especfica puede contener registros de
ALUMNO, que incluyen el nombre, direccin, telfono, fecha de nacimiento, etc. y, existir registros de INSCRIPCION que
representan inscripciones de alumnos en cursos de capacitacin. En el caso de llevar acabo el proceso de administracin
de los cursos se necesita conocer la direccin de cada estudiante inscrito, para lo cual, no hay necesidad de incluir este
dato (redundante) en los registro de INSCRIPCION, siempre se podra obtener recurriendo a los registros de ALUMNO
correspondiente.


b) Compartida
Las partes individuales de la Base de Datos pueden compartirse entre varios usuarios distintos, en el sentido que cada uno
de ellos puede tener acceso a la misma parte de la Base de Datos y utilizarla con propsitos diferentes. Tal
comportamiento es en verdad consecuencia del hecho de que la Base de Datos es integrada. En el caso del ejemplo
anterior se tiene que los datos de los registros de ALUMNO es compartido por usuarios del departamento de personal y
capacitacin. Lo cual implica que, diferentes usuarios percibirn de modos muy distintos una base de datos.


5. Ventajas de las Bases de Datos
Referidas a:

Referidas a: Ventajas
Los datos
- Independencia de estos respecto de los tratamientos y viceversa
- Mejor disponibilidad de los mismos para los usuarios
- Mayor eficiencia en la recogida, codificacin y entrada
Los resultados
- Mayor coherencia
- Mayor valor informativo
- Mejor y ms normalizada documentacin de la informacin
Los usuarios
- Acceso ms rpido y sencillo de los usuarios finales
- Ms facilidades para compartir los datos por el conjunto de los usuarios
- Mayor flexibilidad para atender a demandas cambiantes.

Anlisis cuadro anterior
Los datos:
- Independencia de los datos respecto a los tratamientos y viceversa: Esto supone que un cambio en los tratamientos no
imponga un nuevo diseo lgico y/o fsico de la base de datos. Por otro lado, cambios en la incorporacin, desaparicin de
datos, cambios en la estructura fsica o caminos de acceso no deben obligar a alterar los programas. As se evita la
reprogramacin de las aplicaciones.
- Mejor disponibilidad de los datos para el conjunto de los usuarios: En una base de datos ningn usuario es propietario de
los datos, pues stos se comparten entre las aplicaciones, existiendo una mayor disponibilidad.
- Mayor eficiencia en la recogida, codificacin y entrada de datos: Al no existir la redundancia, los datos se recogen y
validan una sola vez, aumentando as la eficiencia.

Los resultados:
- Coherencia de los resultados: Debido a que la informacin de la base de datos se recoge y se almacena una sola vez, en
todos los tratamientos se utilizan los mismos datos, por lo que los resultados de estos son coherentes y comparables. As,
se evitan las divergencias en los resultados.
- Mayor valor informativo: Esto se refiere al concepto de sinergia, en donde el valor informativo del conjunto de datos es
superior a la suma del valor informativo de los elementos individuales.

Ing. Elvis Guillermo Huarcaya Quispe Pg.

7
Gestin de informtica II
- Mejor y ms normalizada documentacin: La mayora de los SGBD proporcionan herramientas para reflejar el contenido
semntico de los datos, es decir, incluyen una descripcin de los datos dentro del sistema.
- Mayor eficiencia en la captura, validacin e ingreso de datos al sistema: al no existir redundancias, los datos se capturan y
validan una sola vez aumentando el rendimiento del proceso previo al almacenamiento
- Reduccin del espacio de almacenamiento: por un lado, la disminucin de redundancias y las tcnicas de compactacin
hacen que disminuya el espacio en disco. Sin embargo, los diccionarios, referencias, punteros, listas invertidas tambin
ocupan espacio.

6. Desventajas de las bases de datos
Las desventajas de una base de datos relativas a:
Referidas a: Desventajas:
La implantacin
- Costosa en equipos (lgico y fsico)
- Implantacin larga y difcil
- Falta de rentabilidad a corto plazo
- Escasa estandarizacin
Los usuarios
- Personal especializado
- Desfase entre teora y prctica

Anlisis del cuadro anterior
- Instalacin costosa: Puede implicar el coste elevado en equipos fsicos (adquisicin de nuevas instalaciones, o
ampliaciones de las existentes), como en el lgico (sistemas operativos, programas, compiladores, etc.) as como el coste
de adquisicin o mantenimiento del SGBD.
- Implantacin larga y difcil: Debido a las causas mencionadas en la instalacin costosa la implantacin de un sistema de
base de datos puede convertirse en una tarea larga y complicada.
- Falta de rentabilidad a corto plazo: Los amplios costes que conlleva la implantacin, implica una rentabilidad no a corto,
sino a medio, o incluso a largo plazo.
- Escasa estandarizacin: Esto supone una dificultad aadida a los usuarios de la base de datos.
- Personal especializado: Es clave la administracin de la base de datos, se requiere de conocimientos especficos.
- Desfase entre teora y prctica: muchos ejecutivos asumen que ciertas funcionalidades son ya un hecho, cuando en
realidad son estudios tericos

7. Componentes de la BD
Un sistema de Base de Datos contempla los siguientes componentes:
- La base de datos
- El Sistema de Gestin de Bases de Datos (SGBD, DBMS) o motor, tal como Oracle, Sybase, SQL Server, Ms-Acces, etc.
- Programas de aplicacin (Visual Basic, Visual Fox Pro, Power Builder, etc.)
- Un conjunto de usuarios (finales, DBA, programadores de aplicaciones, etc.)
- Mquinas o PCs
- Programas utilitarios (generadores de informes, de interfaces, herramientas de desarrollo, de administracin, etc.)

DBMS: Es la sigla en ingls de Sistema de Administracin de Bases de Datos, que corresponde al Software que maneja todos
los accesos a la Base de Datos.

8. Para qu sirve una Base de Datos?
Una base de datos permite la realizacin de consultas, informes filtrado de informacin, entre otros.
Formatos personalizados
Clculos estadsticos
Bsquedas de datos
Clasificacin
Resumen y Reportes impresos
Pginas web

9. Sistemas de Gestin de Base de Datos (SGBD o DBMS)
Un sistema de gestin de bases de datos consiste de una coleccin de datos interrelacionados y un conjunto de programas para
acceder a esos datos. La coleccin de datos es la base de datos, y es la que contiene informacin por ejemplo acerca de una
empresa determinada.

El objetivo principal de un SGBD es proporcionar un entorno que sea a la vez conveniente y eficiente para ser utilizado al
extraer y almacenar informacin en la base de datos.
Toda organizacin puede verse en tres niveles de gestin: operacional, tctico y estratgico. Muchas veces se produce una
desconexin de los sistemas que caracterizan a estos niveles, pues constituyen sistemas aislados, sin relacin entre ellos. Esto
produce un aumento del costo global de creacin y mantenimiento del sistema de informacin, produce redundancias e
incoherencias. Esto impide una gestin racional de los datos.

Ing. Elvis Guillermo Huarcaya Quispe Pg.

8
Gestin de informtica II
La base de datos es un depsito nico de datos para toda la organizacin, por lo que debe ser capaz de integrar los distintos
sistemas y aplicaciones, atendiendo a las necesidades de los usuarios en los tres niveles.
El objetivo del SGBD es suministrar la interfaz entre el conjunto de los datos y dichos usuarios. El SGBD tambin debe
proporcionar a los otros usuarios (analistas, programadores, administradores) las correspondientes herramientas que les
permitan un adecuado desarrollo de sus funciones.



La gestin y las bases de datos.

a) Definicin del SGBD
El SGBD es un conjunto coordinado de programas, procedimientos, lenguajes, etc. que suministra, tanto a usuarios no
informticos como a los analistas, programadores o al administrador, los medios necesarios para describir, recuperar y
manipular los datos almacenados en la base, manteniendo su integridad, confidencialidad y seguridad.

b) Funciones del SGBD
- De Descripcin o Definicin
Debe permitir al administrador de la base especificar los datos que la integran, su estructura y las relaciones que
existen entre ellos, las reglas de integridad semntica, los controles a efectuar antes de autorizar el acceso a la base,
etc., as como las caractersticas de tipo fsico y las vistas lgicas de los usuarios.
Esta funcin la realiza el lenguaje de definicin de datos (LDD), y debe ser capaz de definir las estructuras de datos
a los tres niveles (nivel externo, nivel lgico global o conceptual y nivel interno).
A nivel interno se define:
o Espacio reservado para la base( volmenes, cilindros y pistas)
o Longitud de los campos
o Modo de representacin de los datos (binario, decimal, alfanmerico, etc.)
o Caminos de acceso como punteros e ndices.
A nivel externo y conceptual, la funcin de descripcin proporciona los instrumentos para la definicin de entidades,
su identificacin, atributos, interrelaciones entre ellas, autorizaciones de acceso, restricciones de integridad, etc.
El SGBD, adems de describir, debe permitir la correspondencia o mapping entre estos niveles.

- De Manipulacin
Permite a los usuarios de la base (todos) buscar, eliminar o modificar los datos de la base, de acuerdo a las
especificaciones y normas de seguridad dadas por el administrador. Esto se realiza mediante el lenguaje de
manipulacin de datos (LMD), mediante un conjunto de instrucciones (lenguaje husped) que son admitidas por un
lenguaje de programacin (lenguaje anfitrin), o bien, mediante un lenguaje autocontenido, que posee todas las
instrucciones necesarias para llevar a cabo estas tareas.

- De Utilizacin
Rene todas las interfaces que necesitan los diferentes tipos de usuarios para comunicarse con la base y
proporciona un conjunto de procedimientos para el administrador. Algunas de estas funciones de servicio son:
o Cambiar capacidades de los archivos
o Obtener estadsticas de utilizacin respaldos
o Cargar y descarga de la base
o Seguridad, etc.


Ing. Elvis Guillermo Huarcaya Quispe Pg.

9
Gestin de informtica II
MODELO RELACIONAL
INTRODUCCIN.

El modelo relacional es un modelo de datos basado en la teora de las relaciones, en donde los datos se estructuran lgicamente en
forma de relaciones (tablas), siendo un objetivo fundamental del modelo mantener la independencia de esta estructura lgica
respecto al modo de almacenamiento y a otras caractersticas de tipo fsico.

Este modelo persigue una serie de objetivos, que se pueden resumir en los siguientes:

Independencia fsica: es decir, el modo en el que se almacenan los datos no influya en su manipulacin lgica y, por
tanto, los usuarios que acceden a esos datos no tienen que modificar sus programas por cambios en el almacenamiento fsico.

Independencia lgica: esto es, que el aadir, eliminar o modificar objetos de la base de datos no repercuta en los
programas y/o usuarios que estn accediendo a subconjuntos parciales de los mismos (vistas).

Flexibilidad: en el sentido de poder presentar a cada usuario los datos de la forma en que ste prefiera.

Uniformidad: las estructuras lgicas de los datos presentan un aspecto uniforme, lo que facilita la concepcin y
manipulacin de la base de datos por parte de los usuarios.

Sencillez: las caractersticas anteriores, as como unos lenguajes de usuario muy sencillos, producen como resultado que
el modelo de datos relacional sea fcil de comprender y de utilizar por parte del usuario final.

Para conseguir los objetivos citados, Codd introduce el concepto de "relacin" (tabla) como una estructura bsica del
modelo. Todos los datos de la BD se representan en forma de relaciones cuyo contenido vara en el tiempo.

ESTRUCTURA DEL MODELO RELACIONAL

RELACION

La relacin es el elemento bsico en el modelo relacional. Las relaciones se definen de la siguiente manera:

DIPLOMATICO(Codigo,Nombre,Nacionalidad,Institucin)
y se puede representar como una tabla, como vemos en el siguiente ejemplo:


DIPLOMATICO
Codigo Nombre Nacionalidad Institucion
01 Pepe Espaa O.N.U.
02 John EE.UU. O.M.S.
03 Pierre Francia O.N.U.

En ella podemos distinguir un conjunto de columnas, denominadas atributos o campos, que representan propiedades de la misma y
que estn caracterizadas por un nombre; y un conjunto de filas llamadas tplas que son las ocurrencias de la relacin. Existen
tambin unos dominios donde los atributos toman sus valores.

El nmero de filas de una relacin se denomina cardinalidad de la relacin y el nmero de columnas es el grado de la
relacin.

Una relacin va a tener una serie de elementos caractersticos:

1.- No puede haber filas duplicadas, es decir, todas las tplas tienen que ser distintas.
2.-No puede haber nombre de atributos repetidos.
3.- El orden de las filas es irrelevante.
4.-El orden de las columnas es irrelevante.
5.- La tabla es plana, es decir, en el cruce de una fila y una columna slo puede haber un valor (no se admiten
atributos multivaluados).

DOMINIO Y ATRIBUTO

Un dominio D es un conjunto finito de valores homogneos y atmicos caracterizados por un nombre; decimos homogneos porque
son todos del mismo tipo y atmicos porque son indivisibles.
Todo dominio ha de tener un nombre por el cual nos podamos referir a l y un tipo de datos; as el tipo de datos del
dominio "nacionalidades" es una cadena de caracteres de longitud 10.

El dominio "nacionalidades" tiene valores: Espaola, Francs, Italiana,...

Ing. Elvis Guillermo Huarcaya Quispe Pg.

10
Gestin de informtica II

Un atributo es el papel que tiene un determinado dominio en una relacin.

Es muy usual dar el mismo nombre al atributo y al dominio. En el caso de que sean varios los atributos de una misma tabla
definidos sobre el mismo dominio, habr que darles nombres distintos, ya que una tabla no puede tener dos atributos con el mismo
nombre.

Por ejemplo los atributos precio_compra y precio_venta pueden estar definidos sobre el mismo dominio de enteros de longitud
5.

Claves

Una clave candidata de una relacin es un conjunto no vaco de atributos que identifican unvocamente cada tupla. Una relacin
puede tener ms de una clave candidata.

Una clave primaria es aquella clave candidata mnima que identifica de forma unvoca a la relacin.( ser indica la clave primaria
subrayando el/los atributos; otra notacin es usando el smbolo almohadilla #)

Una clave alternativa es aquella clave candidata que no ha sido elegida para ser primaria.

Se denomina clave ajena (externa, fornea, secundaria) de una relacin R2 al conjunto no vaco de atributos que forman la clave
primaria de otra relacin R1. Que un atributo sea clave ajena en una tabla significa que para introducir datos en ese atributo,
previamente han debido introducirse en la tabla origen. (se indica la clave ajena mediante una lnea discontinua o marejada; otra
notacin es usando el subrayado)

TERMINOLOGA DEL MODELO RELACIONAL

Una base de datos relacional tiene el aspecto de un conjunto de tablas.
Tupla. Es una fila de la tabla que se corresponde con cada ocurrencia de la relacin.
Atributo: Igual que en el esquema ER. Tambin se le llaman columnas de la relacin.
Grado. Es el nmero de atributos de la tabla. Todas las tuplas tienen el mismo nmero de atributos.
Cardinalidad:. Es el nmero de filas de la tabla.
Dominio: El dominio de los atributos tiene que ser simple: no se admiten atributos multivaluados ni compuestos.
a) Relacin
Una relacin es una tabla con columnas y filas. Un SGBD slo necesita que el usuario pueda percibir la base de datos como un
conjunto de tablas. Esta percepcin slo se aplica a la estructura lgica de la base de datos (en el nivel externo y conceptual de
la arquitectura de tres niveles).
ALUMNO matricula nombre Apellidos curso nota
3456 Jos Prez 1 15.25
0101 Mara Antnez 2 17.80
8743 Lourdes Snchez 1 14.50
1234 Antonio Soria 3 16.35
5674 Luis Madrid 1 13.20
Ejemplo de relacin
En este ejemplo se trata de una tabla denominada ALUMNO, en cuyo ejemplo estn presentes cinco tuplas.

La relacin es de grado cinco.

Los cinco dominios son conjuntos de valores que representan respectivamente: el nmero de matrcula, el nombre, los
apellidos, curso y las notas obtenidas por los alumnos. Ejemplo: el Dominio correspondiente a la nota es el conjunto de todas
las notas posibles
La relacin Alumno tiene una cardinalidad de cinco
INTENSIN Y EXTENSIN DE UNA RELACIN
tuplas

Ing. Elvis Guillermo Huarcaya Quispe Pg.

11
Gestin de informtica II
Intensin de una relacin
Parte definitoria y esttica (invariante en el tiempo) de la relacin, es lo que llamaremos esquema de relacin
Ejemplo:
CURSO (Cd_curso: Cdigos, Nombre: Nombres, N_Horas: Horas, Materia: Materias)
Extensin
Conjunto de tuplas que, en un instante determinado satisfacen el esquema de relacin y se encuentran almacenadas en
la base de datos; es lo que se suele llamar, simplemente relacin. La extensin vara en el transcurso del tiempo.
Ejemplo:
CURSO
Cd_curso Nombre N_Horas Materias
00012 DISEO DE BASE DE DATOS 50 Base de Datos
00034 BASE DE DATOS ORIENTADAS A OBJETOS 30 Base de Datos
00167 SISTEMAS OPERATIVOS 30 Sis. Operativos
01521 ALMACENES DE DATOS 25 Base de Datos
00514 INTRODUCCIN AL C++ 25 Lenguajes
ELEMENTOS NO PERMITIDOS: RESTRICCIONES
Son de dos tipos: restricciones inherentes y restricciones semnticas
a) RESTRICCIONES INHERENTES
Son las restricciones derivadas de la misma estructura del modelo, que no tienen que ser definida por el usuario
o No permite la existencia de tuplas duplicadas y de ah la obligatoriedad de una clave primaria
o Integridad de Entidad: Ningn atributo que forme parte de la clave primaria puede tomar valores nulos
b) RESTRICCIONES SEMNTICAS
Son restricciones que tiene que definir el diseador a fin de que el esquema sea un reflejo lo ms fiel posible del mundo
real: de ah la importancia de las restricciones en el diseote la Base de Datos
Por tanto, un Sistema de Gestin de Base de Datos Realacional (SGBDR), al igual que otros sistemas no relacionales,
debe incluir facilidades que permitan:
En la fase de definicin:
- Describir las restricciones con precisin y sencillez
- Las acciones ante una posible violacin de una restriccin
- Verificar la consistencia de las restricciones entre s mismas
En la fase de manipulacin:
- Comprobar que las actualizaciones cumplen las restricciones de integridad
- Poner en marcha las acciones indicadas en el caso de que las restricciones non se cumplan
REGLAS DE INTEGRIDAD
Al definir cada atributo sobre un dominio se impone una restriccin sobre el conjunto de valores permitidos para cada atributo. A este
tipo de restricciones se les denomina restricciones de dominios. Hay adems dos reglas de integridad muy importantes que son
restricciones que se deben cumplir en todas las bases de datos relacionales y en todos sus estados o instancias (las reglas se deben
cumplir todo el tiempo). Estas reglas son la regla de integridad de entidades y la regla de integridad referencial. A

Ing. Elvis Guillermo Huarcaya Quispe Pg.

12
Gestin de informtica II
a) Regla de integridad de entidades
La primera regla de integridad se aplica a las claves primarias de las relaciones base: ninguno de los atributos que
componen la clave primaria puede ser nulo.
Por definicin, una clave primaria es un identificador irreducible que se utiliza para identificar de modo nico las tuplas.
Que es irreducible significa que ningn subconjunto de la clave primaria sirve para identificar las tuplas de modo nico. Si
se permite que parte de la clave primaria sea nula, se est diciendo que no todos sus atributos son necesarios para
distinguir las tuplas, con lo que se contradice la irreducibilidad.
b) Regla de integridad referencial
La segunda regla de integridad se aplica a las claves ajenas: si en una relacin hay alguna clave ajena, sus valores deben
coincidir con valores de la clave primaria a la que hace referencia, o bien, deben ser completamente nulos.
La regla de integridad referencial se enmarca en trminos de estados de la base de datos: indica lo que es un estado
ilegal, pero no dice cmo puede evitarse. La cuestin es qu hacer si estando en un estado legal, llega una peticin para
realizar una operacin que conduce a un estado ilegal? Existen dos opciones: rechazar la operacin, o bien aceptar la
operacin y realizar operaciones adicionales compensatorias que conduzcan a un estado legal.
Por lo tanto, para cada clave ajena de la base de datos habr que contestar a tres preguntas:
- Regla de los nulos: Tiene sentido que la clave ajena acepte nulos?
- Regla de borrado: Qu ocurre si se intenta borrar la tupla referenciada por la clave ajena?
o Restringir: no se permite borrar la tupla referenciada.
o Propagar: se borra la tupla referenciada y se propaga el borrado a las tuplas que la referencian
mediante la clave ajena.
o Anular: se borra la tupla referenciada y las tuplas que la referenciaban ponen a nulo la clave ajena
(slo si acepta nulos).
- Regla de modificacin: Qu ocurre si se intenta modificar el valor de la clave primaria de la tupla referenciada
por la clave ajena?
o Restringir: no se permite modificar el valor de la clave primaria de la tupla referenciada.
o Propagar: se modifica el valor de la clave primaria de la tupla referenciada y se propaga la
modificacin a las tuplas que la referencian mediante la clave ajena.
o Anular: se modifica la tupla referenciada y las tuplas que la referenciaban ponen a nulo la clave ajena
(slo si acepta nulos).
c) Reglas de negocio
Adems de las dos reglas de integridad anteriores, los usuarios o los administradores de la base de datos pueden imponer
ciertas restricciones especficas sobre los datos, denominadas reglas de negocio.
Por ejemplo, si en una oficina de la empresa inmobiliaria slo puede haber hasta veinte empleados, el SGBD debe dar la
posibilidad al usuario de definir una regla al respecto y debe hacerla respetar. En este caso, no debera permitir dar de alta
un empleado en una oficina que ya tiene los veinte permitidos.
TRANSFORMACIN DEL MODELO ENTIDAD-RELACIN AL MODELO RELACIONAL

En el proceso de diseo de una base de datos el primer paso consista en realizar el diseo conceptual para, posteriormente, abordar
el diseo lgico que generaba el esquema de la base de datos en el modelo lgico elegido (relacional, jerrquico, de redes u
orientado a objetos).

Este apartado presenta un procedimiento sistemtico para transformar el esquema conceptual resultante de aplicar el modelo
entidad-relacin al problema de diseo de una base de datos en un esquema relacional.

Para poder llevar a cabo esta transformacin, es necesario realizar previamente determinadas conversiones que eliminen elementos
del modelo entidad-relacin no representables en el modelo relacional.

Antes de pasar al modelo relacional, es conveniente analizar el diagrama entidad-relacin y comprobar que no existen elementos que
no puedan ser representados directamente en el modelo relacional. Para ello pueden seguirse los siguientes pasos:

Preparacin de los esquemas conceptuales


Ing. Elvis Guillermo Huarcaya Quispe Pg.

13
Gestin de informtica II
a) Eliminacin de atributos mltiples o multivaluados
Todos los atributos mltiples; es decir, los atributos que pueden tomar ms de un valor en el dominio en el cual estn
definidos, se transformarn en un tipo de entidad dbil por existencia en la cual mantendr relacin

LIBRO
IdLibro
Edicin
Editorial
Paginas
Fecha
Autor





LIBRO
IdLibro
Edicin
Editorial
Paginas
Fecha
Autor
AUTOR ESCRIBE M N
IdAutor Nombre


b) Eliminacin de atributos compuestos
Todos los atributos compuestos asociados con los tipos de entidad y los tipos de interrelacin
deben ser descompuestos en los atributos simples que formen parte o intervengan en los atributos
compuestos correspondientes. En este proceso se eliminar el atributo compuesto correspondiente,
quedando los atributos simples definidos

Nombre_completo
EMPLEADO
NombrePila Apellido1 Apellido2
dni
direccion
calle
numero
distrito
provincia
departamento







Ing. Elvis Guillermo Huarcaya Quispe Pg.

14
Gestin de informtica II
EMPLEADO
NombrePila Apellido1
Apellido2
dni
calle
numero
distrito
provincia
departamento


c) Eliminacin de jerarquas de generalizacin.
Al hacerlo hay que tener en cuenta que no debe existir prdida de informacin. Existen tres posibilidades para
realizar la conversin:

c.1 Englobar todos los atributos de la entidad y subtipos en una sola relacin. En general se adoptar esta
solucin cuando los subtipos se diferencien en muy pocos atributos y las interrelaciones que los asocian
con el resto de las entidades del esquema sean las mismas para todos (o casi todos los subtipos), lo cual
implica que los subtipos no sean excluyentes

Esta alternativa presenta el inconveniente de generar demasiados valores nulos en los atributos
opcionales. Tambin ralentiza el proceso de bsqueda al tener en cuenta todas las tuplas en vez de las
que pertenecen a la subentidad deseada. Su nica ventaja es que el acceso a una fila que refleje toda la
informacin de una determinada entidad es mucho ms rpido (no hace falta combinar varias relaciones).

c.2 Considerar cada subentidad como entidad. Para ello, se aaden los atributos de la entidad genrica a la
subentidad; y la clave primaria de la genrica pasa a serlo de las nuevas entidades creadas. Esta opcin
es adecuada en el caso de que existan muchos atributos distintos entre los subtipos, adems los
subtipos sean excluyentes

Sus inconvenientes son varios:

a) Se pierde el concepto de la entidad genrica.
b) Los accesos a la entidad genrica deben convertirse en accesos a todas las subentidades.
c) Los atributos de la entidad genrica son repetidos en cada subentidad.
d) Slo es vlida para jerarquas totales y exclusivas.
e) Si la entidad genrica tiene alguna relacin, sta debe propagarse a cada subentidad.
f) En consecuencia, esta alternativa es vlida cuando la jerarqua es total o exclusiva, no importa
el concepto de la entidad genrica en las operaciones y no hay relacin entre la entidad
genrica y otras entidades.


c.3 Considerar relaciones distintas para cada subtipo, que contengan, adems de los atributos propios, los
atributos comunes. Se elegira esta opcin en el caso de que existan muchos atributos distintos entre los
subtipos


Ing. Elvis Guillermo Huarcaya Quispe Pg.

15
Gestin de informtica II

Transformacin de los esquemas conceptuales

1. Transformacin de atributos de entidades
Cada atributo de una entidad se transforma en una columna de la relacin a la que ha dado lugar la
entidad. Pero teniendo en cuenta que tenemos atributos identificador principal, otros que son
identificadores alternativos y el resto de atributos que no son identificadores

1.1 Atributos identificadores
Los identificadores principales pasan a ser la clave primaria de la relacin.
Ejemplo: La relacin PROFESOR, fruto de la transformacin de la entidad del mismo nombre, con
su identificador principal (Cod_prof) que pasa a ser la clave primaria





PROFESOR



1.2 Atributos identificadores alternativos
Respecto a los identificadores alternativos, recoge por medio de la clusula UNIQUE estos objetos,
los cuales son soportados por el modelo relacional
1.3 Atributos no identificadores
Estos atributos pasan a ser columnas, como los anteriores, de la relacin, las cuales tienen
permitido tomar valores nulos a no ser que se indique lo contrario

Aplicando la regla 1.1 y 1.2, la transformacin de la entidad PROFESOR es la siguiente:

CREATE TABLE profesor (Cd_Profesor, Nombre, DNI NOT NULL ,
Direccin, Telfono, Materia, PRIMARY KEY (Cd_Profesor), UNIQUE (DNI))
DNI Nombre Direccin
PROFESOR
DOCTOR NO DOCTOR
(1,1)
(0,1) (0,1)
IdProf
Nombre
Tipo
Ao_doc
Materia_doc
c.1 PROFESOR (IdProf, Nombre, , Tipo, Ao_doc, Materia_doc)


c.2 PROFESOR ( IdProf, Nombre, )

DOCTOR (IdProf, , Ao_doc,Materia_doc)

NO_DOCTOR( IdProf, )


c.3 DOCTOR (IdProf, Nombre,, Ao_doc, Materia_doc)
NO _DOCTOR (IdProf, Nombre,)


PROFESOR (Cd_prof, Nombre, DNI, direccin, Telfono, Materia)
Esquema
relacional
Diagrama
relacional
PROFESOR
Cd_prof
Nombre
DNI
Direccin
Telfono
Materia

Ing. Elvis Guillermo Huarcaya Quispe Pg.

16
Gestin de informtica II

2. Transformacin de interrelaciones

2.1 Interrelaciones N:M
Este tipo de interrelacin se transforma en una relacin que tendr como clave primaria la
concatenacin de los Identificadores principales de los tipos de entidad que asocia















En SQL obtendramos:

CREATE TABLE Imparte
(Cd_Profesor ,
Cd_curso,
primary key(Cd_Profesor,Cd_curso),
foreign key (Cd_Profesor) references Profesor
ON DELETE CASCADE
ON UPDATE CASCADE,
foreign key(Cd_curso) references Curso
ON DELETE CASCADE
ON UPDATE CASCADE
)

2.2 Interrelaciones 1:N
Existen dos soluciones para la transformacin de una interrelacin 1:N

a) Obligatorio - Obligatorio
Se propaga los identificadores principales del tipo de entidad que tiene de cardinalidad mxima
1 a la que tiene N, desapareciendo el nombre de la interrelacin. Este caso se da en la relacin
es del tipo













DEPARTAMENTO
PROFESOR
Cd_prof
Nombre
DNI
Direccin
Telfono
Fecha
Cd_dpto
Nombre_dpto
pertenece
(1,n)
PROFESOR ( Cd_prof, Nombre, , Cd_dpto)

DEPARTAMENTO ( Cd_dpto, Nombre_dpto, fecha)


ME/R
MR
(1,1)
PROFESOR
PROFESOR
Cd_prof
Nombre
DNI
Direccin
Telfono
Materia
Cd_curso
Nombre_curso
imparte
(1,n)
(1,n)
PROFESOR ( Cd_prof, Nombre, DNI, direccin, Telfono, Materia )
IMPARTE ( Cd_curso, Cd_prof )

CURSO ( Cd_curso, Nombre_curso )

ME/R
MR
1:N
No admite
valores
nulos (1,1)

Ing. Elvis Guillermo Huarcaya Quispe Pg.

17
Gestin de informtica II

b) Obligatorio - Opcional
Se transforma en una relacin, como si se tratara de una interrelacin N:M ; sin embargo en
este caso, la clave primaria de la relacin creada es slo la clave primaria de la tabla a la que
le corresponde la cardinalidad N.















Es recomendable esta opcin si el nmero de departamentos es de gran cantidad y no se
admitan valores nulos

c) Opcional-opcional: Este caso se reduce al de relacin obligatoria-opcional.


2.3 Interrelacin 1:1
Una interrelacin de tipo 1:1 es un caso particular de una N:M o tambin de una 1:N, por lo que no
hay regla fija para la transformacin de este tipo de interrelacin al modelo relacional, pudindose
aplicar la regla 2.1 ( con lo que crearamos una relacin) o aplicar la regla 2.2 (esto es, propagar la
clave correspondiente) En este ltimo caso, la propagacin de la clave puede efectuarse en ambos
sentidos.

Los criterios para aplicar una u otra regla se basan en la cardinalidades mnimas:

a) Obligatoria Obligatoria
Se integran las dos entidades en una tabla que contiene los atributos y la clave primaria es
cualquiera de las de E1 y E2. Si coincidiera, slo se incluira una vez en la nueva relacin.


DNI
Nombre
(1,1)



(1,1)
DNI
Denominacin






b) Obligatoria Opcional
ESTUDIANTE
REALIZA
PROYECTO
DEPARTAMENTO
PROFESOR
Cd_prof
Nombre
DNI
Direccin
Telfono
Materia
Cd_dpto
Nombre_dpto
pertenece
( 1, n )
PROFESOR ( Cd_prof, Nombre, DNI, direccin, Telfono, Materia )
DEPARTAMENTO_ PROFESOR ( Cd_dpto, Cod_prof, fecha )
DEPARTAMENTO ( Cd_dpto, Nombre_dpto)


ME/R
MR
( 0, 1 )
1:N
Admite valores nulos,
la clasula NOT NULL
resuelve el problema
ESTUDIANTE ( DNI , Nombre, Denominacin )




ME/R
MR
1:1
Fecha

Ing. Elvis Guillermo Huarcaya Quispe Pg.

18
Gestin de informtica II
Cada entidad se convierte en una relacin representada por una tabla, y a la que tiene
participacin obligatoria se aadira la clave primaria de la opcional. Las claves primarias de
ambas relaciones se mantienen. Suponiendo ESTUDIANTE opcional, el ejemplo resultara:


Cod_prof
Nombre_prof
(1,1)



(0,1)
Cod_dpto
nombre_dpto







c) Opcional-opcional
En este caso, se generarn tres relaciones: una para cada entidad y otra para la
correspondencia entre ambas. Las entidades no sufrira cambios y la nueva relacin incluir las
claves primarias de E1 y E2, as como los atributos de R, si los hubiera. La clave primaria de
esta relacin recin creada ser cualquiera de las de E1 o E2. El ejemplo, sera:


Cod_hombre
Nombre
(0,1)



(0,1)
Cod_mujer
nombre


















PROFESOR
responsable
DEPARTAMENTO
ME/R
MR
1:1
PROFESOR ( Cd_prof, Nombre )
DEPARTAMENTO ( Cod_dpto, nombre_dpto, Cod_prof)




HOMBRE
matrimoni
o
MUJER
ME/R
MR
1:1
HOMBRE ( Cod_hombre, Nombre)
MATRIMONIO ( Cod_mujer, Cod_hombre, fecha )

MUJER ( Cod_mujer, Nombre)


fecha

Ing. Elvis Guillermo Huarcaya Quispe Pg.

19
Gestin de informtica II

3. Transformacin de dependencias en identificacin y en existencia
























4. Transformacin de tipos y subtipos
En lo que respecta a los tipos y subtipo, no son objetos que se puedan representar explcitamente en el
modelo relacional. Ante un tipo de entidad y subtipos caben varias soluciones de transformacin al
modelo relacional.

5. Transformacin de relaciones recursivas

5.1 Relaciones Reflexivas 1:N














Empleado (dni, nombre, dni_supervisor)

dni_supervisor es una clave fornea de dni (de
la misma tabla), refleja quien es el jefe y no admite
NULL.

CORRIDA
TORO
IdGanadera
Ao_nac
Numero
Feria
estoqueado
( 0, 1 )
CORRIDA ( N_orden, Feria, Ao, NombrePlaza )

TORO ( IdGanadera, Ao_nac, Nmero , NombreToro, Color, N_orden, Feria, Ao)

GANADERA (IdGanadera, NombreGan)
ME/R
MR
( 6, n )
N_orden
Ao
NombreToro
NombrePlaza
GANADERA
IdGanadera
NombreGan
pertenece
( 1, n )
( 1, 1 )
Color
(1,1)
(1,N)
1:N
supervisa
EMPLEADO
DNI
nombre

Ing. Elvis Guillermo Huarcaya Quispe Pg.

20
Gestin de informtica II













Empleado (dni, nombre)

Supervisa (dni, dni_supervisor)


5.2 Relaciones Reflexivas M:N














Empleado (dni, nombre)

Supervisa (dni, dni_supervisor)



6. Relaciones n-arias.
Tienen el mismo tratamiento que las relaciones N:M. Cada entidad se transforma en tabla y se aade
una tabla para la asociacin que incluya las claves primarias de las entidades participantes en la
correspondencia y los atributos de la asociacin. La composicin de las claves primarias de las
entidades es la clave primaria de la nueva relacin. Por ejemplo, la siguiente relacin ternaria quedara
del modo que muestra la figura:




(1,N)
(1,N)
M:N
supervisa
EMPLEADO
DNI
nombre
(1,1)
(1,N)
1:N
supervisa
EMPLEADO
DNI
nombre

Ing. Elvis Guillermo Huarcaya Quispe Pg.

21
Gestin de informtica II

CASOS

GESTIN DE UNA BIBLIOTECA
Desarrolle el modelo Entidad Relacin que permita la gestin de una biblioteca con las siguientes caractersticas:
El prstamo slo considera libros ( no incluye: CDS, revistas, o cualquier otro medio)
Para efectos del prstamos todos los libros son iguales
De un mismo libro pueden existir varios ejemplares
Los ejemplares de un libro pueden ser de diferentes ediciones (por ejemplo: del libro Fundamentos de Bases de datos de
Korth, pueden existir cinco ejemplares, uno de la segunda edicin y cuatro de la tercera edicin)
Todos los libros estn en espaol
Un libro puede tener varios autores
Todos los usuarios son iguales y se identifican con un cdigo
Cada usuario tiene derecho a tener prestados hasta 5 libros
Todos los libros prestados deben ser entregados como mximo dos das despus del prstamo. Los usuarios que incumplan
esta regla, quedan suspendidos por una semana
Un libro puede tratar de varios temas (Ejemplo: Base de datos, programacin orientada a objetos, SQL, etc.)

Las consultas ms comunes son:
Cules libros tienen un usuario, y cuando deben regresarlos
Quien tiene un libro determinado
Libros por tema (Ejemplo: Satlites, microondas, telefona celular, etc.)
Historia de los libros prestados por un usuario
Historia de los usuarios que prestan un libro
Informacin general de un libro

Desarrolle el esquema conceptual (Modelo Entidad Relacin) , y el esquema lgico (Modelo Relacional)

ALQUILER Y COMPRA DE INMUEBLES
Se trata de disear una base de datos para una red de agencias franquiciadas a TECHNOHOUSE, empresa especializada en el
alquiler y compra de inmuebles
- Cada agencia tiene un titular propio y un conjunto de vendedores. Tanto el titular como los vendedores slo pueden pertenecer
a una agencia. Sobre las agencias interesa almacenar su direccin, telfonos (que pueden ser varios), fax, etc. Adems, cada
agencia tiene asignada una zona de actuacin que es nica
- Las agencias disponen de inmuebles tanto para alquilar como para comprar (incluso ambas cosas), en el primer caso figurar
el precio de alquiler y la fianza a depositar, mientras que en el segundo caso, adems del precio de venta, se indica si el
inmuebles est o no hipotecado
- Por otro lado, los inmuebles pueden ser locales comerciales, o pisos. En ambos casos se identifican por un cdigo, e interesa
conocer el propietario, la direccin en m2.
- Adems, en el caso de pisos interesa conocer el nmero de habitaciones (incluyendo el saln), el nmero de cuartos de bao,
CONDUCTOR (NCarnet, Nombre, experiencia)
AUTOBUS (matricula, licencia, categoria)
LUGAR ( Provincia, Distrito, actividad)
CON_AUT_LUG ( NCarnet, Matricula, Provincia, Distrito, Fecha)


CONDUCTOR
LUGAR
Provincia
Distrito
actividad
NCarnet
Nombre
conduce
( 1, n )
( 1, n )
Fecha
AUTOBUS
experiencia
Matricula
Licencia
categoria
( 1, n )
N:N:N

Ing. Elvis Guillermo Huarcaya Quispe Pg.

22
Gestin de informtica II
el tipo de gas (natural, butano), y si es interior o exterior. Para los locales comerciales se debe conocer si dispone de licencia
de apertura
- Un cliente puede acudir a varias agencias, en cada una se le asigna un vendedor, que es el encargado de seleccionar los
inmuebles que cumplen las caractersticas deseadas, y en caso de estar interesado, el cliente debe dar una seal para reservar
el inmueble ( o los inmuebles) que desea

Complete los atributos que faltan del modelo Entidad / Relacin y transforme al esquema Lgico empleando el Modelo Relacional




GIMNASIO Siempre en forma
En el gimnasio se quiere implantar una base de datos para llevar el control de los socios, recursos utilizados, etc. Las
especificaciones son las siguientes:
- Existen varias salas, de las cuales se quiere guardar informacin, como los metros cuadrados que ocupa, ubicacin y el tipo de
sala (cardio, general, muscular). Cada sala se identifica por un nmero
- Hay salas que tienen aparatos y salas que no. En las salas se pueden o no impartir clases
- Cada aparato est asignado a una nica sala, y de cada uno de ellos se quiere tener almacenado su cdigo, descripcin y
estado de conservacin
- Tambin se quiere mantener informacin relacionada con las clases que se imparten (descripcin y da / hora en la que se
imparten); cada clase se identifica por un cdigo de clase. Cada clase tiene asignada una sala en la que se imparte y un monitor
- De cada monitor se quiere conocer el DNI, nombre, telfono, si tienen o no titulacin y experiencia profesional, as como las
clases que pueden impartir (preparacin como monitor de aerobic, step, streching, etc.)
- De cada socio se quiere conocer el nmero de socio, nombre, direccin, telfono, profesin y datos bancarios, as como las
clases a las que asiste
- El gimnasio dispone tambin de pistas de squash, de las que se quiere conocer el nmero de pistas, ubicacin y estado. Las
pistas de squash pueden ser utilizadas por socios, y existe un servicio de reserva de pista ( en una fecha y a una hora)

Complete los atributos que faltan del modelo Entidad / Relacin y transforme al esquema Lgico empleando el Modelo Relacional



Ing. Elvis Guillermo Huarcaya Quispe Pg.

23
Gestin de informtica II




























CASOS DE DESARROLLO
Realizar el esquema relacional en base a los siguientes modelos de Entidad Relacin
1. El Gimnasio Siempre en forma del caso anterior impone las siguientes restricciones:
- Las pistas de Squash se consideran salas
- Las clases slo se imparten en salas sin aparatos. Las salas con aparatos siguen clasificndose en sala de cardio,
general, etc,










Ing. Elvis Guillermo Huarcaya Quispe Pg.

24
Gestin de informtica II
2. Colecciones de Mariposas




























3. - Gestin de Biblioteca




4.- Gestin de CDS
Desarrollar un modelo E-R que permita representar el siguiente enunciado

El Seor Juan Prez tiene en su discoteca privada una cantidad considerable de CDS y tiene problemas al acceder a una cancin
en particular dado que emplea mucho tiempo en la bsqueda de esta. A continuacin una serie de preguntas y respuestas que
entregan ms informacin acerca del problema.

- Cuntas canciones tiene un CD?
Cada CD puede tener una o ms canciones
Una cancin puede aparecer en varios CDs
S, adems puede ser interpretada por varios artistas (Grupos o Solistas)

Ing. Elvis Guillermo Huarcaya Quispe Pg.

25
Gestin de informtica II
- Un CD puede tener canciones de varios artistas?
Si, existen CD variados.
- A cuntos gneros puede pertenecer una cancin?
Un solo gnero Por ejemplo: Balada, Rock, Latinoamericanos, etc.
- Cmo se identifican los CDs?
Cada CD tiene un nombre nico que lo identifica de los dems CDs. En el caso de un lbum con varios CDs, suponga
que el lbum tiene un nombre y cada CD se referencia como Vol1, Vol2, VOl3, etc. Cada CD pertenece a una casa
disquera.
- En el caso de CDs variados cmo se maneja?
Cada cancin tiene su intrprete, duracin y gnero

Otros datos:
Una cancin, por ejemplo Valio la pena puede existir en varios CDs interpretada por varios artistas.
Una cancin tiene un solo autor , y para efectos del ejercicio es una sola persona
No hay prestamos de CDs
Todos los CDs son nicamente de msica
Un CD puede tener la misma cancin interpretada por diferentes artistas
Caso extremo: Un CD donde aparezca dos o ms veces la misma cancin interpretada por el mismo artista, Ejemplo: una versin
grabada en estudio, otra grabada en vivo y otra un desconectado





Ing. Elvis Guillermo Huarcaya Quispe Pg.

26
Gestin de informtica II
ALGEBRA RELACIONAL
1.- CONSULTA Y MANIPULACIN DE DATOS

Existen dos tipos de operaciones que se realizan sobre una base de datos:
- Actualizar la base de datos.
- Consultar la base de datos.
Actualizar la Base de Datos

Se entiende por actualizar una base de datos como todas aquellas operaciones que cambian, de alguna manera, la informacin
contenida en la BD. Estas operaciones son tres:

Insercin de nuevos datos (nueva tupla).
Modificacin de datos que ya existan.
Borrado de datos que ya exista.

Consultar la Base de Datos

Incluye todas las operaciones que realizan consultas (preguntas) a la informacin contenida en la base de datos (BD). Al realizar una
consulta no se pueden modificar los datos. Las consultas pueden ser ms o menos complejas y pueden afectar a una o varias tablas.

El lgebra relacional es la tcnica que se utiliza para realizar las consultas de una base de datos relacional. En la fase de Diseo de
Datos, adems de disear las estructuras (tablas) en las que se guardar la informacin, tambin se deben disear las consultas
que se realizarn sobre esas tablas.

.2.- OPERACIONES DEL LGEBRA RELACIONAL.

Las operaciones de lgebra relacional manipulan relaciones. Esto significa que estas operaciones usan una o dos relaciones
existentes para crear una nueva relacin. Esta nueva relacin puede entonces usarse como entrada para una nueva operacin. Esto
hace ms fcil la solucin de las consultas, debido a que se puede experimentar con soluciones parciales hasta encontrar la
proposicin con la que se trabajar.

El lgebra relacional define un conjunto cerrado de operaciones que:
- Actan sobre relaciones.
- Producen relaciones como resultados.
- Pueden combinarse para construir expresiones ms complejas

El lgebra relacional consta de nueve operaciones:

1. Unin
2. Interseccin
3. Diferencia
4. Producto
5. Seleccin
6. Proyeccin
7. Reunin
8. Divisin
9. Asignacin

Las cuatro primeras se toman de la teora de conjunto de las matemticas; las cuatro siguientes son operaciones propias del lgebra
relacional y la ltima es la operacin de dar un valor a un elemento.

3-OPERADORES DE CONJUNTOS

3.1. compatibilidad respeto a la unin o unin compatible.
Se dice que una operacin es compatible respecto a la unin o es unin-compatible si
Para la definicin de las operaciones de conjuntos usaremos las siguientes relaciones R y S:











S=
A B

a
1
b
1
a
2
b
2
a
5
b
5

R=
A B

a
1
b
1
a
2
b
2
a
3
b
2
a
4
b
4


Ing. Elvis Guillermo Huarcaya Quispe Pg.

27
Gestin de informtica II
3.2.-Unin. (R S)
La unin de dos relaciones R y S, es otra relacin que contiene las tuplas que estn en R, o en S, o en ambas, eliminndose las
tuplas duplicadas. R y S deben ser compatibles respecto a la unin.













Interseccin (R S).
La interseccin de dos relaciones R y S, es otra relacin que contiene las tuplas que estn en R y en S a la vez. R y S deben ser
compatibles respecto a la union.








DIFERENCIA (R-S).

La diferencia de dos relaciones R y S, es otra relacin que contiene las tplas que estn en R y no est en S. R y S deben ser
compatibles respecto a la unin.







3.5.- PRODUCTO (R x S).

El producto de dos relaciones R y S, es otra relacin que es la concatenacin de cada una de las filas de la relacin R con cada una
de las filas de la relacin S. Las relaciones han de ser compatibles respecto al producto.

























R S =
A B

a
1
b
1
a
2
b
2
a
3
b
2
a
4
b
4
a
5
b
5

R S =
A B

a
1
b
1
a
2
b
2

R-S=
A B

a
3
b
2
a
4
b
4

A B

a
1
b
1
a
2
b
2
a
3
b
2
a
4
b
4

D
d
1
d
2
d
3


A B

D
a
1
b
1
d
1
a
1
b
1
d
2
a
1
b
1
d
3
a
2
b
2
d
1
a
2
b
2
d
2
a
2
b
2
d
3
a
3
b
3
d
1
a
3
b
3
d
2
a
3
b
3
d
3
a
4
b
4
d
1
a
4
b
4
d
2
a
4
b
4
d
3

=
R S
R X S

Ing. Elvis Guillermo Huarcaya Quispe Pg.

28
Gestin de informtica II
.4.-OPERADORES RELACIONALES.


4.1.-Seleccin ( Predicado( R))

Es un operador unario. Define una relacin con los mimos atributos que R y que contiene solo aquellas filas de R que satisfacen la
condicin especificada (predicado). El predicado est formado por Nombres de atributos.



.4.- Proyeccin ( x(R)).

Es un operador unario. Define una relacin que contiene un subconjunto vertical de R con los valores de los atributos especificados
en x, eliminando las tuplas duplicadas en el
resultado.

.4.-

Define una relacin que tiene como columnas los campos de R que no est en S y como tuplas, las de R (slo los campos
correspondientes) que estn combinadas con todas las tuplas de S. Deben cumplirse las siguientes condiciones:
- grado(R) > grado (S)
-
- R debe tener, al menos, una tupla.
-
El cociente se utiliza cuando se quiere relacionar un elemento (tupla) de una lista con todos los elementos de otra lista.
Ejemplo:
Lo primero que hacemos es extraer en una tabla todos los cdigos de todos los productos, a esta tabla la denominamos A.
R =

Codigo Nombre Ciudad Status
S1 Juan Lopez Granada 20
S2 Jose Sanchez Jaen 15
S3 Antonio Perez Cadiz 20
S4 Jose Lopez Sevilla 25
S6 Carmen Lopez Cordoba 30
S7 Julia Sanchez Granada 25
S8 Juana Perez Jaen 10
S9 Luis Gomez Almeria 35
S10 Maria Galvez Sevilla 30


Codigo Nombre Ciudad Status
S4 Jose Lopez Sevilla 25
S6 Carmen Lopez Cordoba 30
S7 Julia Sanchez Granada 25
S9 Luis Gomez Almeria 35
S10 Maria Galvez Sevilla 30

o
status>=25

(r)=

Ciudad Status
Granada 20
Jaen 15
Cadiz 20
Sevilla 25
Cordoba 30
Granada 25
Jaen 10
Almeria 35
Sevilla 30

t
ciudad,status
(r)=

Ing. Elvis Guillermo Huarcaya Quispe Pg.

29
Gestin de informtica II
Tabla A
Cdigo Producto
1035
2241
2249
5818
En una segunda tabla extraemos, de la tabla de ventas, el cdigo del producto y el comercial que lo ha vendido, lo hacemos con una
proyeccin y evitamos traer valores duplicados. El resultado podra ser el siguiente:
Tabla B
Cdigo Comercial Cdigo Producto
10 2241
23 2518
23 1035
39 2518
37 2518
10 2249
23 2249
23 2241
Si dividimos la tabla B entre la tabla A obtendremos como resultado una tercera tabla que:
1. Los campos que contiene son aquellos de la tabla B que no existen en la tabla A. En este caso el campo Cdigo Comercial
es el nico de la tabla B que no existen en la tabla A.
2. Un registro se encuentra en la tabla resultado si y slo si est asociado en tabla B con cada fila de la tabla A
Tabla Resultado
Cdigo Comercial
23
El comercial 23 es el nico de la tabla B que tiene asociados todos los posibles cdigos de producto de la tabla A.




Unin natural (natural join: R * S o R |x| S): El resultado es una relacin con los atributos de ambas relaciones y se obtiene
combinando las tuplas de ambas relaciones que tengan el mismo valor en los atributos comunes. Normalmente la operacin de join
se realiza entre los atributos comunes de dos tablas que corresponden a la clave primaria de una tabla y la clave fornea
correspondiente de la otra tabla. Mtodo:
- Se realiza el producto cartesiano R x S.
- Se seleccionan aquellas filas del producto cartesiano para las que los atributos comunes tengan el mismo valor.
- Se elimina del resultado una ocurrencia (columna) de cada uno de losatributos comunes
Equivalencia con operadores bsicos: R |x|P S = P(RxS). En este caso

Casos
Resuelva el ejercicio propuesto
EJERCICIOS
Consideremos la instancia siguiente de una BD:



Cul es el resultado de cada una de las siguientes consultas?
1. R S
2. T R

Ing. Elvis Guillermo Huarcaya Quispe Pg.

30
Gestin de informtica II
3. R T
4. R U
5. R R
6. U T
7. R S
8. S R
9. S T
10. R T
11. T R
12. R R
13. [A,B (R)
14. [A (R)
15. [C (R)
16. [A (S)
17. [C (U)
18. oA>=2 (R)
19. oA<1 (R)


Ing. Elvis Guillermo Huarcaya Quispe Pg.

31
Gestin de informtica II
MODELO ENTIDAD-RELACIN

El modelo Entidad Relacin fue propuesto por Meter Chen a mediados de los aos setenta para la representacin
conceptual de los problemas y como un medio para representar la visin de un sistema global.

Las caractersticas actuales de este modelo permiten la representacin de cualquier tipo de sistema y a cualquier nivel
de abstraccin.
Este modelo maneja los siguientes conceptos:

PRINCIPALES ELEMENTOS DEL MODELO

1. ENTIDAD
Una entidad es una "cosa" u "objeto" del mundo real, con existencia independiente y distinguible de los dems
objetos. Cada entidad tiene un conjunto de propiedades y valores que la identifican de forma unvoca. Esta puede
ser tanto tangible (existencia fsica)
Ejemplo: Un carro, como intangible (existencia conceptual), ejemplo: Un curso universitario.



Fig. Representacin de entidades fuertes Fig. Representacin de una entidad dbil

TIPOS DE ENTIDADES:

a) Entidades Fuertes: Son independientes no necesitan la existencia de otras entidades.
Ejemplo: la entidad PERSONA, EMPLEADO

b) Entidades Dbiles: Su existencia depende de otra entidad. Ejemplo: la entidad ocupacion depende la
existencia de una entidad persona, ya que sin esta no tendra sentido.

2. INTERRELACIN
Se entiende por interrelacin una asociacin, vinculacin o correspondencia entre entidades


Fig. Representacin la relacin imparte entre PROFESOR y CURSO

Fig. Dos tipos de entidad entre los que existen dos tipos de interrelacin

3. ATRIBUTO
Las propiedades que califican y le dan vida a la entidad se denominan atributos. Ejemplo: la entidad
persona se puede describir por las siguientes propiedades: cdula, nombre, direccin, sexo, peso, altura,
color, tipo de sangre, salario
CURSO PROFESOR
Imparte
Imparte
CURSO PROFESOR
Recibee
CURSO PROFESOR EDICIN

Ing. Elvis Guillermo Huarcaya Quispe Pg.

32
Gestin de informtica II

TIPOS DE ATRIBUTOS

Simples: No divisible, es decir es un atributo atmico.

Ejemplo: El atributo DNI, su propiedad no tiene sentido dividirla, no tendr significado para la entidad, ya
que la concepcin de este es un nmero indivisible.
A continuacin se muestra dos formas de representar los atributos simples:

Compuesto: Est conformado por un conjunto de partes que en el momento de dividirlas pueden formar
otros atributos sin perder el sentido bsico de la propiedad que est calificando la entidad.
Ejemplo: los atributos nombre, direccin pueden estar conformados en su naturaleza funcional por varias
partes. Si tomramos el atributo nombre con un valor de: JUAN PEREZ CORREA, sin perder la
propiedad del mismo, se podrn crear otros dos atributos simples tales como: primer_apellido,
segundo_apellido. As se tendr: (nombre, JUAN), (primer_apellido, PEREZ), (segundo_apellido,
CORREA).







CURSO

PROFESOR
Imparte
Cod_prof
Nombre
DNI
Direccin
Fecha_nac

Cod_curso
Nombre_curso
Nm_horas

Fecha_inicio

Fecha_terminacin
dni
dni
nPila
pApellido
sApellido

PERSONA
nombre
nombre direccion
PERSONA
telefono
nPila pApellido sApellido
direccion
telefono


Ing. Elvis Guillermo Huarcaya Quispe Pg.

33
Gestin de informtica II
Monovaluados (univalorados): Son atributos que en el transcurso del tiempo slo toman un valor para
una entidad en particular.
Ejemplo: El atributo dni, solo toma un valor para una entidad persona en particular.

Multivaluados (multivalorados): Son atributos que en el transcurso del tiempo pueden tener un
conjunto de valores para una entidad en particular.
Ejemplo: El atributo Grado_Academico para el conjunto de entidades persona puede tomar diferentes
valores desde 0 o primaria o medio, entre otros.


Almacenado
Son atributos cuyo valor no depende de los valores de otros atributos o entidades


Derivado: Son atributos cuyo valor depende de los valores de otros atributos o entidades.
Ejemplo: el atributo salario puede derivarse a partir del clculo de los siguientes valores:
PARAMETROS (salario_base, 5000), NOVEDADES (nro_horas_trabajadas, 240), el valor que tendra el
atributo en un instante en el tiempo ser:
PERSONA (salario,1200000).

4. REPRESENTACIN DE LOS ATRIBUTOS EN LOS TIPOS DE ENTIDAD

1era. Representacin:










Grado_aca
d
Grado_acad
dni
dni
edad
Fech_nac
Fech_nac
Fech_nac
Ao
Num_Matricula
ESTUDIANTE
Cod_Estudiante
Nombre
ESTUDIANTE
Nombre
Direccin
Ao
Num_Matricula
Cod_Estudiante
Direccin
atributo simple
Identificador principal o atributo clave

Ing. Elvis Guillermo Huarcaya Quispe Pg.

34
Gestin de informtica II
2da. Representacin






Cod_estudiante
ESTUDIANTE
Nombre
Direccion
Ao Num_Matricula

5. DOMINIO
Es el conjunto de todos los valores posibles que puede tomar un atributo.
Cada uno de los atributos de una entidad posee un dominio, el que corresponde al tipo del atributo. Por
ejemplo, "matrcula" tiene como dominio al conjunto de los enteros positivos y "nombre" tiene como
dominio al conjunto de caracteres

6. RELACIN
Una relacin se puede definir como una asociacin entre entidades.
Por ejemplo:
- La entidad "libro" puede estar relacionada con la entidad "persona" por medio de la relacin
"est pedido".
- La entidad "alumno" puede estar relacionada con la entidad "curso" por la relacin "est
inscrito".
Una relacin tambin puede tener atributos.
Por ejemplo:
- La relacin "est inscrito" puede tener los atributos "semestre" y "nota de aprobacin".


Usando esta notacin, podemos ahora hacer el diagrama E-R del ejemplo anterior de los alumnos y los
cursos matriculados.

6.1 GRADO
El grado de una relacin es el nmero de tipos de entidad que participan
Ejemplo: Grado 2 (binario) y grado 3 (ternario)

6.2 CARDINALIDAD
- Uno a uno, y se representa 1:1, si a cada ocurrencia de A le corresponde como mximo
una ocurrencia de B, y viceversa
Atributo simple
clave

Ing. Elvis Guillermo Huarcaya Quispe Pg.

35
Gestin de informtica II
- Uno a muchos, y se representa 1:M, si a cada ocurrencia de A le pueden corresponder
varias de B, pero a cada ocurrencia de B slo le corresponde una de A como mximo. Si
la asociacin se entendiera de B con A, la relacin sera M:1.
- Muchos a muchos y se representa M:M, si a cada ocurrencia de A le pueden
corresponder varias de B, y viceversa.

7. TIPOS DE INTERRELACIN
INTERRELACIN REFLEXIVA (RECURSIVA)
Son relaciones unarias y, por tanto, consideran que en el tipo de interrelacin se ve involucrado un
nico tipo de entidad





INTERRELACIN EXCLUSIVA
Existe una interrelacin exclusiva con respecto a un tipo de entidad que participa en ambas
interrelaciones cuando cada ejemplar de dicho tipo de entidad slo puede pertenecer a uno de los
tipos de la interrelacin, pero en el momento en que pertenezca a uno ya no podr pertenecer a
otro.



CASOS
COMPAA:
Suponga que estamos modelando los datos de una COMPAIA. La base de datos COMPAIA debe mantener informacin
sobre los empleados de la compaa, los departamentos y los proyectos. La descripcin del mini-mundo (la parte de la
compaa a ser representada en la base de datos) es la siguiente:
- La compaa est organizada en departamentos. Cada departamento tiene un nombre nico. un nmero nico, y un
empleado particular quien lo administra. Se quiere saber la fecha en que el empleado administrador empez a
hacerse cargo del departamento. Un departamento puede tener varios locales.
- Cada departamento controla un cierto nmero de proyectos. Cada proyecto tiene un nombre y nmero nicos, y un
local.
- Para cada empleado se desea tener su nombre, dni, direccin, salario, sexo y ao de nacimiento. Un empleado es
asignado a un departamento, pero puede trabajar en varios proyectos, los que no son necesariamente controlados
por el mismo departamento. Se quiere saber el nmero de horas semanales que un empleado trabaja en cada
proyecto. Se quiere adems saber cul es el supervisor directo de cada empleado.
- Se desea conocer las personas dependientes de cada empleado para propsitos de seguros. De cada dependiente
se desea conocer el nombre, sexo, fecha de nacimiento y relacin con el empleado.
La siguiente figura muestra el esquema de esta base de datos, a travs de una notacin grfica llamada diagrama ER.


LOS RESIDUOS TXICOS
Se desea abordar la problemtica ambiental de los residuos txicos y peligrosos cuya incorrecta gestin produce daos de gran
importancia en el medio ambiente y en la salud del ser humano. La informacin a contemplar es la que corresponde desde que es
producido el residuo por un centro o una empresa productora hasta que ste se encuentre en un lugar seguro, en donde recibe un
tratamiento especial que puede ser la incineracin, almacenamiento en depsitos de seguridad, etc. En el sistema de informacin
se desea considerar la informacin de los productores de residuos, los residuos, las empresas que transportan los residuos hasta
los lugares seguros y el traslado de los residuos teniendo en cuenta el tipo de transporte, el envase, etc.

Es conveniente tener los siguientes supuestos semnticos:

SUPUESTO1: Una empresa productora produce un nmero amplio de residuos constituido por un nmero variable de
constituyentes qumicos
Imparte
CURSO PROFESOR
Recibee
TEMA
consta
M N
N
M

Ing. Elvis Guillermo Huarcaya Quispe Pg.

36
Gestin de informtica II

SUPUESTO2: Ms de una empresa productora puede producir residuos con igual nmero de constituyentes qumicos y con las
mismas o distintas cantidades

SUPUESTO3: Las empresas productoras asignan un cdigo nico a los residuos que producen, lo que les permite diferenciar
distintas producciones de los mimos productos. Adems ms de una empresa puede asignar el mismo cdigo a los residuos que
produce

SUPUESTO 4: Los residuos pueden ser trasladados en su totalidad (cantidad total del mismo) o en partes, o no ser trasladado
nunca.

SUPUESTO 5: En cada traslado de residuos la cantidad que se traslada de los mismos es enviada a un nico destino

SUPUESTO 6: En una misma fecha las empresas productoras pueden ordenar ms de un traslado de un mismo o distinto residuo
(cantidades parciales del mismo) a un mismo o distinto destino

SUPUESTO 7: En cada traslado puede intervenir ms de una empresa transportista usando el mismo o distinto transporte , por lo
que resulta interesante conocer tanto tanto el medio de transporte utilizado como los kilmetros realizados, as como el coste de
trabajo

SUPUESTO8: El residuo se traslada en un tipo de envase determinado por la empresa productora y que no vara a lo largo de su
traslado

SUPESTO 9: Es interesante conocer la fecha de llegada a destino y el tratamiento a que se someten los residuos una vez
alcanzado el mismo

SUPUESTO10: por seguridad se considera que en un traslado slo puede trasladarse un residuo de una empresa productora


Nombre
EMPLEADO
Sexo
Direccion
NombrePila Apellido1 Apellido2
Salario
NombrePila
FechN
DNI
TRABAJA_PARA N DEPARTAMENTO
Nombre
1
Nmero
Localizaci
ones
ADMINISTRA 1 1
FechInicio
PROYECTO
CONTROLA
1
N
TRABAJA_PARA
Horas
M
N
SUPERVISA
1
N
DEPENDIENTE
TIENE
1
N
Nombre
Nmero
Localizacin
Nombre
Sexo
FechaN
Relacin


En este diagrama los rectngulos representan conjuntos de entidades, los elipses representan atributos y los rombos representan
conjuntos de relaciones


Ing. Elvis Guillermo Huarcaya Quispe Pg.

37
Gestin de informtica II







SEGUNDA UNIDAD


















DISEO DE LA BASE DE DATOS
Introduccin
A finales de la dcada de 1960, cuando las bases de datos entraron por primera vez en el mercado de software,
los diseadores de software actuaban como artesanos, con herramientas muy primitivas: diagramas de bloques y
estructuras de registros y el diseo de Base de datos se confunda frecuentemente con la implantacin de la base
de datos. Dicha situacin ahora ha cambiado: los mtodos y los modelos del diseo de datos han evolucionado
paralelamente con el progreso de la tecnologa en los sistemas de base de datos. Asimismo El diseo de la Base
de datos es una actividad esencial en el desarrollo de Sistemas de Informacin

1. El diseo de la Base de Datos en el ciclo de vida de los sistemas de informacin
- Sistema de Informacin: Es un grupo de personas, procedimientos y equipos diseados, construidos,
operados y mantenidos para recoger, registrar, procesar, almacenar, recuperar y visualizar informacin
- Sistemas de gestin de Base de Datos: Son paquetes de software para la gestin de datos; en particular
para almacenar, manipular y recuperar datos en un computador

Las Bases de datos son slo uno de los componentes de los sistemas de informacin, que tambin incluyen
programas de aplicacin, interfaces para usuarios y otro tipo de paquetes de software. Sin embargo, las bases de
datos son esenciales para la supervivencia de cualquier organizacin, porque los datos estructurados constituyen
un recurso esencial para todas las organizaciones

El tpico ciclo de vida de un sistema de informacin se muestra en la Fig 2.1, a continuacin se detalla las fases:

1. Estudio de Factibilidad: Trata de determinar la rentabilidad de las distintas alternativas de diseo de
sistemas de informacin y las prioridades de los diversos componentes del sistema.
COMPETENCIA
Implementa en un gestor de bases de datos
basados en arquitectura Cliente/Servidor y
Administra base de datos corporativa


Ing. Elvis Guillermo Huarcaya Quispe Pg.

38
Gestin de informtica II
RECOLECCIN Y ANALISIS DE
REQUERIMIENTOS

DISEO CONCEPTUAL
DISEO LGICO
(TRANSFORMACIN DEL MODELO DE DATOS)
Mundo real
2. Recoleccin y anlisis de requerimientos: Se ocupa de la misin del sistema de informacin, es decir las
reas de aplicacin del sistema dentro de una empresa y los problemas a resolver. Los usuarios describen
sus necesidades a los diseadores y esas descripciones se le conoce como especificacin de requerimientos.
3. Diseo: Se ocupa de la especificacin de la estructura del sistema de informacin. Se distingue el diseo de
la base de datos (estructura de la BD) y el diseo de las aplicaciones (programas de aplicacin)
4. Creacin de Prototipos: El prototipo permite a los usuarios verificar si el sistema de informacin satisface
sus necesidades
5. Implantacin: Se refiere la programacin de la versin final y operativa del sistema de informacin
6. Validacin y prueba: Procedimiento mediante el cual se garantiza que cada fase del desarrollo es de
calidad aceptable
7. Operacin: Se empieza con la carga inicial de los datos y termina cuando el sistema se vuelve obsoleto y
tiene que ser reemplazado, adems se necesita mantenimiento para mejorarlo.

2. Fases del diseo de la base de datos
El diseo de la Base de datos se descompone en diseo conceptual, diseo lgico y diseo fsico
como lo muestra la siguiente Fig. 2.2




















Estudio de
factibilidad
Recoleccin y anlisis
de requerimientos
Diseo
Creacin de
prototipos
Implantacin
Validacin
y prueba
Operacin
Fig. 2.1 Ciclo de vida de un Sistema de Informacin
Requerimientos de la base de datos
Esquema conceptual
en un modelo de datos de alto nivel
(por ejemplo: modelo E/R)
Independiente de
S.G.B.D.
Esquema lgico
(en el modelo de datos de S.G.B.D.)

Especfico para
S.G.B.D.

Ing. Elvis Guillermo Huarcaya Quispe Pg.

39
Gestin de informtica II
DISEO FSICO









a) Recoleccin y anlisis de requerimientos
Los diseadores entrevistan a los futuros usuarios de la base de datos para recoger y documentar sus
necesidades de informacin.

b) Diseo conceptual
Parte de la especificacin de todos los requerimientos, el siguiente paso es crear un esquema conceptual
para la base de datos mediante un modelo de datos conceptual de alto nivel. El esquema conceptual contiene
una descripcin detallada de los requerimientos de informacin de los usuarios (informacin de la base de
datos), y contiene descripciones de los tipos de datos, relaciones entre ellos y restricciones.
Para el curso utilizaremos diseo de esquemas conceptuales el modelo E-R (entidad-relacin), que describe
los datos cono entidades, vnculos (relaciones) y atributos.

c) Diseo lgico de la base de datos (transformacin de modelo de datos)
El siguiente paso en el proceso de diseo consiste en implementar de hecho la base de datos con un
S.G.B.D. comercial, transformando el modelo conceptual al modelo de datos empleados por el S.G.B.D.
(jerrquico, red o relacional).
En el desarrollo del curso haremos la implementacin con un S.G.B.D. relacional, por ser el modelo ms
utilizado por las empresas en la actualidad.

d) Diseo fsico de la base de datos
Parte del esquema lgico y da como resultado el esquema fsico. El esquema fsico especifica las estructuras
de almacenamiento internas y los mtodos usados para tener un acceso efectivo a los datos. Por esta razn
el diseo fsico se adapta a un sistema DBMS especfico.
GESTORES DE BASES DE DATOS
1. DEFINICIN
Un Sistema Gestin de Bases de Datos SGBD- (Data Base Management System DBMS) consiste en una
coleccin de datos interrelacionados y un conjunto de programas para acceder a esos datos. El Objetivo
primordial de un SGBD es proporcionar un entorno que sea a la vez conveniente y eficiente para ser utilizado al
extraer y almacenar informacin de la base de datos. (KORTH, 1995)
El sistema de gestin de la base de datos (SGBD) es una aplicacin que permite a los usuarios definir, crear y
mantener la base de datos, y proporciona acceso controlado a la misma. (MRQUES, 2001)

Esquema interno
(para el mismo S.G.B.D.)

Fig. 2.2 Enfoque orientado a los datos para el diseo de la BD

Ing. Elvis Guillermo Huarcaya Quispe Pg.

40
Gestin de informtica II

En el esquema se observa que los usuarios interactan con una aplicacin (por ej. un sistema integrado de
gestin o un paquete contable) que utiliza un SGBD para procesar las consultas, el cual accede a los metadatos
y a la base de datos correspondiente

- Metadatos: Son datos acerca de los datos presentes en la base de datos.








Dato Tipo Longitud
Num Numrico 4
Nombre Alfabtico 20






2. FUNCIONES BSICAS DE UN SGBD
Un SGBD debe incluir por lo menos las siguientes funciones (DATE, 1993):
2.1 Definicin de los Datos. El SGBD debe ser capaz de aceptar las definiciones de datos en versin fuente
y convertirlas en la versin objeto. El SGBD debe incluir componentes procesadores para cada uno de los
lenguajes de definicin de datos (LDD). (DATE, 1993).
2.2 Manipulacin de los Datos. El SGBD debe atender las solicitudes de los usuarios para extraer,
actualizar, adicionar o suprimir datos. El SGBD debe incluir un componente procesador del Lenguaje de
manipulacin de datos (LMD). (DATE, 1993).
2.3 Seguridad e Integridad de los Datos. El SGBD debe supervisar las solicitudes de los usuarios y
rechazar los intentos de violar las medidas de seguridad e integridad definidas por el Administrador de la
Base de Datos DBA. (DATE, 1993).
2.4 Recuperacin y concurrencia de los datos. El principal objetivo de la implantacin de una base de
datos es poner a disposicin de un gran nmero de usuarios en conjunto integrado de datos, estos datos
El tipo de datos puede ser Numrico,
alfabtico, fecha, lgico (S /NO).

La longitud indica la cantidad mxima
de caracteres que puede asumir el
dato.


Ing. Elvis Guillermo Huarcaya Quispe Pg.

41
Gestin de informtica II
podrn ser manipulados por los diferentes usuarios y es ahora cuando se debe garantizar la coherencia
de los datos despus de las diversas manipulaciones. (DATE, 1993).

3. EL MODELO DE ARQUITECTURA DE BASES DE DATOS.
Las bases de datos respetan la arquitectura de tres niveles definida, para cualquier tipo de base de datos, por el
grupo ANSI/SPARC. En esta arquitectura la base de datos se divide en los niveles externo, conceptual e interno
(KORTH y SILBERSCHATZ, 1994:5; MIGUEL y PIATTINI, 1993: 83-107; MOTA, CELMA y CASAMAYOR, 1994:
11-12):

Fig. Niveles de la arquitectura de bases de datos.
a) Nivel interno: Es el nivel ms bajo de abstraccin, y define cmo se almacenan los datos en el soporte fsico,
as como los mtodos de acceso. Se describe la estructura fsica de la base de datos mediante un esquema
interno, se especifica mediante un modelo fsico y describe todos los detalles para el almacenamiento de la
base de datos, as como los mtodos de acceso.
- Estructura fsica de almacenamiento
- Todos los detalles de cmo el DBMS utiliza: el disco duro la memoria, etc.
- Tema principal: El sistema debe ser rpido en responder y ser eficiente en el uso de
espacio
- Administrador de la base de datos

b) Nivel conceptual: Es el nivel medio de abstraccin. Se trata de la representacin de los datos realizada por la
organizacin, que recoge las vistas parciales de los requerimientos de los diferentes usuarios y las
aplicaciones posibles. Se configura como visin organizativa total, e incluye la definicin de datos y las
relaciones entre ellos.
En ocasiones puede encontrarse el nivel conceptual divido en dos niveles, conceptual y lgico. El
primero de ellos corresponde a la visin del sistema global desde un punto de vista organizativo
independiente, no informtico. El segundo correspondera a la visin de la base de datos expresada
en trminos del sistema que se va a implantar con medios informticos.
- Estructura lgica de almacenamiento
- Diseo conceptual de la base de datos: Tablas, columnas, etc.
- Tema principal: El diseo debe reflejar conceptualmente el problema a modelar
- Administradores de datos
c) Nivel externo: Es el nivel de mayor abstraccin. A este nivel corresponden las diferentes vistas parciales que
tienen de la base de datos los diferentes usuarios. En cierto modo, es la parte del modelo conceptual a la que
tienen acceso.
- Vistas sobre las tablas
- Requiere slo acceso parcial a los datos
- Pblico objetivo: Desarrolladores de aplicaciones, Usuarios finales
- Tema principal: Cada vista debe reflejar adecuadamente la parte de los datos que interesa a
cada uno
El modelo de arquitectura propuesto permite establecer el principio de independencia de los datos. Esta
independencia puede ser lgica y fsica. Por independencia lgica se entiende que los cambios en el esquema
lgico no deben afectar a los esquemas externos que no utilicen los datos modificados. Por independencia
fsica se entiende que el esquema lgico no se vea afectado por cambios realizados en el esquema interno,
correspondientes a modos de acceso, etc.
4. LENGUAJES DEL SGBD
El SGBD incorpora como herramienta fundamental dos lenguajes

Ing. Elvis Guillermo Huarcaya Quispe Pg.

42
Gestin de informtica II
- El lenguaje de definicin de datos (DDL, Data Definition Language) provee de los medios necesarios
para definir los datos con precisin, especificando las distintas estructuras.
- Acorde con el modelo de arquitectura de tres niveles, habr un lenguaje de definicin de la
estructura lgica global, otro para la definicin de la estructura interna, y un tercero para la definicin
de las estructuras externas.
- El lenguaje de manipulacin de datos (DML, Data Manipulation/ Management Language), que es el
encargado de facilitar a los usuarios el acceso y manipulacin de los datos. Pueden diferenciarse en
procedimentales (aquellos que requieren qu datos se necesitan y cmo obtenerlos) y no
procedimentales (que datos se necesitan, sin especificar como obtenerlos), y se encargan de la
recuperacin de los datos almacenados, de la insercin y supresin de datos en la base de datos, y
de la modificacin de los existentes.
5. COMPONENTES DE UN SISTEMA DE GESTIN DE BASE DE DATOS.
Un Sistema de Gestin de Base de Datos se divide en mdulos que tratan cada una de las responsabilidades del
sistema general. Los componentes funcionales de un SGBD (KORTH, 1995) incluyen:

a) Procesador de Consultas. Traduce sentencias en un lenguaje de consultas a instrucciones de bajo nivel
que entiende el gestor de la base de datos.
b) Gestor de la Base de Datos. Proporciona la interfase entre los datos de bajo nivel almacenados en la
base de datos y los programas de aplicacin y las consultas que se hacen en el sistema.
c) Gestor de Archivos. Gestiona la asignacin de espacio en la memoria del disco y de las estructuras de
datos usadas para representar la informacin almacenada en disco.
d) Pre compilador del Lenguaje de Manipulacin de Datos DML. Convierte las sentencias en DML
incorporadas en un programa de aplicacin en llamadas normales a procedimientos en el lenguaje principal.
e) Compilador del Lenguaje de Definicin de Datos DDL. Convierte sentencias en DDL en un conjunto de
tablas metadatos o datos sobre datos.
f) Gestor del Diccionario de Datos. Almacena metadatos sobre la estructura de la base de datos.
6. COMPONENTES DEL GESTOR DE LA BASE DE DATOS
Los principales componentes del gestor de la base de datos son los siguientes (MARQUS 2001):
a) Control de autorizacin. Este mdulo comprueba que el usuario tiene los permisos necesarios para llevar
a cabo la operacin que solicita.
b) Procesador de comandos. Una vez que el sistema ha comprobado los permisos del usuario, se pasa el
control al procesador de comandos.

Ing. Elvis Guillermo Huarcaya Quispe Pg.

43
Gestin de informtica II
c) Control de la integridad. Cuando una operacin cambia los datos de la base de datos, este mdulo debe
comprobar que la operacin a realizar satisface todas las restricciones de integridad necesarias.
d) Optimizador de consultas. Este mdulo determina la estrategia ptima para la ejecucin de las consultas.
e) Gestor de transacciones. Este mdulo realiza el procesamiento de las transacciones.
f) Planificador (scheduler). Este mdulo es el responsable de asegurar que las operaciones que se realizan
concurrentemente sobre la base de datos tienen lugar sin conflictos.
g) Gestor de recuperacin. Este mdulo garantiza que la base de datos permanece en un estado consistente
en caso de que se produzca algn fallo.
h) Gestor de buffers. Este mdulo es el responsable de transferir los datos entre memoria principal y los
dispositivos de almacenamiento secundario. A este mdulo tambin se le denomina gestor de datos.

CLASIFICACIN DE LOS SISTEMAS DE GESTIN DE BASE DE DATOS
Los sistemas de Gestin de Base de Datos se clasifican segn:

a) Modelo lgico en el que se basan:
- Modelo Jerrquico.
- Modelo de Red.
- Modelo Relacional.
- Modelo Orientado a Objetos.
b) Nmero de usuarios
- Monousuario.
- Multiusuario.
c) Nmero de sitios
- Centralizados.
- Distribuidos: Homogneos, Heterogneos.
d) mbito de aplicacin
- Propsito General.
- Propsito Especfico

Qu diferencias hay entre los diferentes gestores de bases de datos ?

Oracle:
- Integridad referencial, rapidez en las consultas dada por el nmero de accesos concurrentes que soporta a
una gran cantidad de informacin, se puede realizar una copia de seguridad sin necesidad de paralizar la web
y es multiplataforma
- Oracle para web puede salir por unos 5.000 euros
- Para usarlo tendremos que disponer de un servidor exclusivo para nosotros con las implicaciones que supone
a nivel tcnico y objetivos a largo plazo. La web de una gran empresa, que se puede permitir disponer de
tcnicos para controlar la seguridad del servidor, que necesita soportar mltiples conexiones a su base de
datos, cuyos visitantes interactan con una importante cantidad de informacin, podra, desde luego, elegir
Oracle como su gestor de base de datos.

SQL
- Con SQL tendremos que alojar nuestra web en un servidor con entorno Windows,
- Con SQL tendremos que adquirir la versin que utilicemos

MySql
- MySql puede trabajar tanto con Windows como con Linux
- MySql es un software gratuito
- Consume muy pocos recursos de CPU y memoria. Muy buen rendimiento.
- MySql se encuentra en el otro extremo de la oferta. Es la opcin que nos plantean todos los servidores de
hosting gratuito que soportan bases de datos y es casi impensable encontrar una empresa de hosting de pago
que no lo soporte
- Tamao del registro sin lmite
- Buena integracin con PHP
- Utilidades de administracin (phpMyAdmin)
- Buen control de acceso usuarios-tablas-permisos
MODELOS DE BASE DE DATOS
3.1 Introduccin

Ing. Elvis Guillermo Huarcaya Quispe Pg.

44
Gestin de informtica II

Los modelos de datos son vehculos para describir la realidad, asimismo los programadores usan modelos de
datos para construir esquemas, los cuales son representaciones de la realidad. Las abstracciones ayudan al
programador a entender, clasificar y modelar la realidad. El modelo de Entidad relacin es una herramienta
fundamental que se usa en el diseo de la Base de Datos.

3.2 Abstracciones en el diseo conceptual de bases de datos

Abstraccin: Es un proceso mental que se aplica al seleccionar algunas caractersticas y propiedades de un
conjunto de objetos y excluir otras no pertinentes, es decir se fija la atencin en las propiedades consideradas
esenciales de un conjunto de cosas y desechar sus diferencias.
Ejm: el concepto carro es un proceso de abstraccin, lo que hace excluir todos los detalles de la estructura tales
como: llantas, parabrisas, frenos, etc.

El diseo conceptual de bases de datos se usan tres tipos de abstracciones: clasificacin, agregacin y
generalizacin:

a) Abstraccin de clasificacin
La abstraccin de clasificaciones usa para definir un concepto como una clase de objetos de la
realidad caracterizados por propiedades comunes

Ejm: el concepto de bicicleta es
la clase cuyos miembros son
todas las bicicletas (la bicicleta
roja, la bicicleta de Carla, etc.)
Ejm: Semana

Lunes Martes . Viernes


b) Abstraccin de agregacin
Define una nueva clase a partir de un conjunto de clases que representan sus partes o
componentes

Ejm: a partir de las clases
RUEDA, PEDAL, MANILLAR,
etc. se forma la clase
BICICLETA
Ejm: MESA SILLA MUEBLE MARRN


Mesa Mesa Silla Silla
marrn blanca marrn verde
c) Abstraccin de generalizacin
La clase genrica es como la raz y las sub- clases como hojas. La abstraccin de generalizacin, a
pesar de ser muy comn no se usa en muchos modelos de datos, pero muy til por la cualidad de
herencia (todas as abstracciones para la clase genrica son heredadas por las clases sub
conjuntos
Ejm:
PERSONA


HOMBRE MUJER
Ejm: PERSONA

NOMBRE SEXO HOMBRE

SITUACIN MILITAR

3.3 Modelos de datos
Un modelo de datos es una serie de conceptos que puede utilizarse para describir un conjunto de datos
y las operaciones para manipularlos.
Los modelos de datos se dividen en tres grupos:
- Modelos lgicos basados en objetos.
- Modelos lgicos basados en registros.
- Modelos fsicos de datos.

3.3.1 Modelos lgicos basados en objetos

Ing. Elvis Guillermo Huarcaya Quispe Pg.

45
Gestin de informtica II
Se usan para describir datos en los niveles conceptual y de visin, es decir, con este modelo
representamos los datos de tal forma como nosotros los captamos en el mundo real, tienen una
capacidad de estructuracin bastante flexible y permiten especificar restricciones de datos
explcitamente. Existen diferentes modelos de este tipo, pero el ms utilizado por su sencillez y
eficiencia es el modelo Entidad-Relacin.

Modelo Entidad-Relacin ( E R )
Este modelo representa a la realidad a travs de entidades, que son objetos que existen y
que se distinguen de otros por sus caractersticas, por ejemplo: un alumno se distingue de
otro por sus caractersticas particulares como lo es el nombre, o el numero de control
asignado al entrar a una institucin educativa, as mismo, un empleado, una materia, etc.

El modelo Entidad Relacin, asimismo utiliza conceptos como atributos y relaciones.
- Atributo: Representa alguna propiedad o caracterstica de una entidad Ejm: el
nombre, direccin telfono, grado, grupo, etc. son atributos de la entidad alumno;
Clave, nmero de seguro social, departamento, etc., son atributos de la entidad
empleado
- Relacin: Describe una interaccin entre dos o ms entidades a travs de una
relacin Ejm: la relacin de un alumno y sus notas, trabajo entre un empleado y
su oficina.

Caso:
Consideremos una empresa que requiere controlar a los vendedores y las ventas que ellos
realizan; de este problema determinamos que los objetos o entidades principales a estudiar
son el empleado (vendedor) y el artculo (que es el producto en venta), y las caractersticas
que los identifican son:

Empleado: Artculo:
Nombre Descripcin
Cargo Costo
DNI Stock
Direccin
La relacin entre ambas entidades la podemos establecer como Venta.
Para representar grficamente en un modelo E-R, se emplean smbolos:
Concepto Representacin diagramtica

Entidad





Interrelacin



Atributo




As nuestro ejemplo anterior quedara representado de la siguiente forma:


Ing. Elvis Guillermo Huarcaya Quispe Pg.

46
Gestin de informtica II


Cardinalidades de relaciones

- Relacin Uno a Uno
Es la relacin de pertenencia de uno a uno Ejm: la relacin entre un automvil y tarjeta
de circulacin

- Relacin muchos a muchos.
Es la relacin que se da de muchos a muchos Ejm: la relacin de factura producto


3.3.2 Modelos lgicos basados en registros
Se utilizan para describir datos en los niveles conceptual y fsico.
Estos modelos utilizan registros e instancias para representar la realidad, as como las relaciones
que existen entre estos registros. A diferencia de los modelos de datos basados en objetos, se
usan para especificar la estructura lgica global de la base de datos y para proporcionar una
descripcin a nivel ms alto de la implementacin.
Los tres modelos de datos ms ampliamente aceptados son:
- Modelo Relacional
- Modelo de Red
- Modelo Jerrquico

Modelo relacional
En este modelo se representan los datos y las relaciones entre estos, a travs de una
coleccin de tablas, en las cuales los reglones (tuplas o filas) equivalen a 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 el caso anterior del empleado y el artculo:

Tabla: EMPLEADO

Nombre Cargo DNI Direccin
SALAS ARROYO Mara Vendedor 40950255 Av. Huancavelica No. 875 Hyo
PREZ ALVAREZ Carlos Vendedor 40900055 Jr. Ayacucho No. 142 Hyo
BELTRAN CHAVEZ Karen Vendedor 20802055 Av. Huancavelica No. 275 - Hyo



Tabla: ARTICULO

Codigo Descripcion Costo
A001 LAPICERO 3.00
A002 FOLDER 7.00
A003 HOJAS 15.00

Una vez descrito las tablas estableceremos las relaciones, para lo cual es necesario definir
una llave primaria

Empleado
Vende
Articulo

Descripcin
Costo
Codigo
Nombre
Cargo
Direccin
DNI


Atributos

Ing. Elvis Guillermo Huarcaya Quispe Pg.

47
Gestin de informtica II
Llave primaria: Es un atributo el cual definimos como atributo principal, es una forma nica de identificar a una
entidad.

Ahora si, las formas de representar las relaciones en este modelo son:

Haciendo una tabla que contenga cada una de las llaves primarias de las entidades involucradas en la
relacin Vende.

Tomando en cuenta que la llave primaria del empleado es su DNI, y la llave primaria del articulo es Codigo

DNI Codigo
40950255 A001
40950255 A002
40900055 A003
40900055 A001
20802055 A002

Modelo red
Este modelo representa los datos mediante colecciones de registros
y sus relaciones se representan por medio de relaciones, los cuales pueden verse como registros. Los registros
se organizan en un conjunto de grficas arbitrarias.

Ejemplo:

Juan Prez Vendedor 5,000 PECJ500922XYZ
C001
PECJ500922XYZ
C00
1

Nora Prez Vendedor 5,000 MEAN761014ABC B300

PECJ500922XYZ
B30
0

Modelo jerrquico
Es similar al modelo de red en cuanto a las relaciones y datos, ya que estos se representan por medio de
registros y sus relaciones. La diferencia radica en que estn organizados por conjuntos de rboles en lugar de
grficas arbitrarias.

Juan Prez
Vendedor 5,000 PECJ500922XYZ
C001
PECJ500922XYZ
C00
1

Nora Prez
Vendedor 5,000 MEAN761014ABC B300

PECJ500922XYZ
B30
0

3.3.3 Modelos fsicos de datos
Se usan para describir a los datos en el nivel ms bajo, aunque existen muy pocos modelos de este tipo, bsicamente
capturan aspectos de la implementacin de los sistemas de base de datos. Existen dos clasificaciones de este tipo que
son:
Modelo unificador
Memoria de elementos.

3.4 MODELO ENTIDAD RELACIN
Este modelo se basa en una representacin grfica de una serie de entidades relacionadas entre s, este modelo permite
distinguir a simple vista, las relaciones existentes entre las distintas entidades
Los elementos que lo componen son los siguientes:
Entidades
Es cualquier objeto del mundo real con existencia propia, sobre el cual queremos tener informacin en una
base de datos. Una entidad puede ser un objeto con existencia fsica (PERSONA, CASA, CLIENTE,
EMPLEADO, etc.) o un objeto con existencia conceptual (EMPRESA, CURSO, etc.)



Tipos de entidades
i) Fuertes (o regulares), Son aquellas que tienen existencia por si mismas (Por ejemplo, EMPLEADO).
Las entidades fuertes se representan como se ha dicho con un rectngulo con trazo simple.



Nodo
EMPLEADO DEPARTAMENTO
CLIENTE PROVEEDOR PRODUCTO
Nota: Las entidades
se representan dentro
de un rectngulo

Ing. Elvis Guillermo Huarcaya Quispe Pg.

48
Gestin de informtica II
j) Dbiles, cuya existencia depende de otro tipo de entidad (Por ejemplo, APODERADO depende de
ALUMNO. La desaparicin de un ALUMNO de la base de datos hace que desaparezcan tambin todos
los familiares del mismo). Estos tipos de entidades se representan normalmente con un rectngulo con
lneas de doble trazo. Estas entidades normalmente no tienen suficientes atributos para formar una clave
primaria.




Atributos
Son las propiedades especficas de las entidades. Por ejemplo, una entidad PROVEEDOR puede describirse
por su N de Ruc, su nombre o razn social de la empresa, su telfono, etc. Los.







Al conjunto de valores que puede tomar un atributo se le llama dominio del atributo.
Tipos de atributos:
b) Simples y compuestos:
Los compuestos estn formados por un conjunto de atributos, mientras que los simples no se pueden
dividir.
c) Monovaluados y multivaluados
Los monovaluados slo pueden tener un valor para una entidad particular, mientras que los multivaluados
pueden tener ms de un valor. (Por ejemplo el atributo color de la entidad COCHE es un atributo
multivaluado, pues un coche puede estar pintado de varios colores).








d) Almacenados o derivados:
Los derivados son atributos cuyo valor para una entidad particular puede obtenerse en funcin de los
valores almacenados en otros atributos. Se representan mediante una elipse con trazo discontinuo. (Por
ejemplo el atributo edad de la entidad PERSONA es un atributo derivado porque se puede obtener en
funcin del valor dela tributo fecha_nacimiento).






Clave
La clave de una entidad es un atributo de dicha entidad que identifica unvocamente una ocurrencia de una
entidad, es decir los valores de los atributos claves no se pueden repetir en una misma entidad y no toman
nunca el mismo valor para dos entidades particulares diferentes, a estos atributos se les llaman claves.
En el diagrama E-R los atributos clave deben aparecer destacados; por ejemplo, subrayando su nombre (por
ejemplo, nruc de la entidad PROVEEDOR).





ALUMNO APODERADO

PROVEEDOR

nruc

nombre

telf

PROVEEDOR

nruc

nombre

telf

Entidad Fuerte
Entidad Dbil
Nota: Los atributos se
representan por elipses que
estn conectadas a su
entidad o relacin mediante
una lnea recta
COCHE

matric

modelo

color

PERSONA

DNI

nombre

fecha_nac

edad

Nota: Los multivaluados
se representan mediante
una elipse con trazado
doble.

Ing. Elvis Guillermo Huarcaya Quispe Pg.

49
Gestin de informtica II
Relacin o Vnculo
Se puede definir como una correspondencia, asociacin o conexin entre dos o ms entidades. En los
diagramas E-R se representa grficamente como un rombo y sus nombres son verbos. Por ejemplo: VENDE,
PERTENECE, etc.




Una relacin puede tener atributos descriptivos. Por ejemplo, en la relacin anterior, podra tener como atributo
descriptivo fecha_venta (la fecha en que se hace la venta).







Grado de una relacin
Es el nmero de entidades que participan en la relacin. Se puede restringir el modelo E-R para incluir solo
conjuntos de relaciones binarias, es decir de grado 2 (es aconsejable).

Correspondencia de cardinalidad,
Expresa el nmero mximo de entidades que estn relacionadas con una nica entidad del otro conjunto de
entidades que interviene en la relacin. Aunque normalmente nos interesa slo la cardinalidad mxima, a
veces es til especificar la cardinalidad mnima.
Segn su cardinalidad, podemos clasificar las relaciones de los siguientes tipos:

Tipo Relacin Representacin
1:1 Una a una : La cardinalidad mxima en
ambas direcciones es 1


1:N Una a muchas: La cardinalidad mxima en
una direccin es 1 y en la otra muchos.

N:M Muchas a muchas: La cardinalidad mxima
en ambas direcciones en muchos

Caso I: Gestin de una biblioteca
Se desea establecer un modelo conceptual para la gestin de una biblioteca, para lo cual se desea tener
almacenados todos los libros que la componen
Para este caso se considera los siguientes aspectos:
- Para cada libro interesa conocer el Cdigo del libro, el ttulo, el autor o autores, la editorial, el ao de
publicacin y la materia.
- De cada autor se quiere conocer su nombre, apellidos y nacionalidad
- Un autor podr haber escrito varios libros, de la misma forma que en un libro pueden participar
varios autores. De la editorial se desea saber el nombre y la ciudad
- A dicha biblioteca pueden suscribirse varios socios. De ellos se quiere saber su DNI, nmero de
socio, nombre, apellidos, direccin y telfono.
- Por cuestiones directivas se limita el nmero de ejemplares prestados a cada usuario a uno
- Se dispone a su vez de un nico ejemplar de cada libro, por lo que un libro prestado a un usuario, no
podr ser prestado a otro hasta que se devuelva.
- Deber quedar constancia de la fecha de prstamo de cada ejemplar

Se pide hacer el diagrama E - R para la base de datos que represente esta informacin.






Solucin

PROVEEDOR

PRODUCTO

VENDE

PROVEEDOR

PRODUCTO

VENDE

fecha_venta





1 1
N 1


M
N

Ing. Elvis Guillermo Huarcaya Quispe Pg.

50
Gestin de informtica II


















3.
4.


5. Diseo Lgico
El diseo lgico de una base de datos consta de dos etapas: el diseo lgico estndar y el diseo lgico especfico
En el Diseo lgico estndar, se toma el esquema conceptual resultante de la fase del diseo conceptual Para el
diseo lgico, se toma el esquema conceptual resultante de la fase de diseo conceptual, esta fase se apoya en un
modelo lgico estndar, se construye el diseo lgico estndar, que se apoya en un modelo lgico estndar, que
ser el mismo modelo de datos soportado por el SGBD a utilizar (relacional, jerrquico, etc.),
En el Diseo Lgico Especfico, una vez obtenido el Esquema Lgico Estndar, y considerando el modelo
especfico propio del SGBD a usar (Ms-Acces, Oracle, SQL Server, etc.) se elabora el esquema lgico especfico

Paso del esquema conceptual al esquema lgico
Las reglas que permiten pasar del esquema conceptual (Modelo E/R) obtenido en la primera fase a la fase del
diseo lgico son:
- Cada entidad se transforma en una relacin: esto es en cada entidad se genera un tabla, con sus mismos
atributos, incluyendo las claves
- Cada relacin N- M genera una tabla, las relaciones entre entidades con cardinalidad N-M generan una tabla,
con los atributos de la clave de ambas entidades.
- Cada relacin 1 N importa las claves de la entidad con las que se relaciona: cada relacin con cardinalidad
1- N importa los atributos clave que contiene la entidad con cardinalidad N
- Cada relacin dependiente importa la clave de la otra entidad, como clave

Ejemplo: Del caso anterior referido a una gestin de biblioteca, transformar el esquema conceptual al modelo
lgico

Solucin
El esquema de tablas resultantes es el siguiente de acuerdo a las reglas del esquema conceptual al lgico
- Diseo Lgico estndar


LIBRO
cod_libro
cod_edit
titulo
materia
ao

AUTOR
cod_autor
apellidos
nombre
nacionalidad
LIBRO_AUTOR
cod_libro
cod_autor
LIBRO

AUTOR

escribe

cod_libro
ttulo ao
materia nombre nacionalidad

N M
EDITORIAL

nombre ciudad
SOCIO

dni
direccion nombre
n_socio
apellidos telefono
prestamo

1
N
Fecha_prestamo
apellidos
pertenece

N 1
cod_edit



cod_autor

Ing. Elvis Guillermo Huarcaya Quispe Pg.

51
Gestin de informtica II

PRESTAMO
cod_libro
n_socio
fecha_prestamo


SOCIO
n_socio
apellidos
nombre
DNI
telefono


Tipo interrelacin reflexiva
Llamadas recursivas, las cuales asocian un tipo de entidad consigo misma, en el siguiente ejemplo la entidad TEMA se
asocia con TEMA

Tipo de interrelacin de grado superior a dos
Grado: E s el nmero de tipos de entidad que participan en un tipo de interrelacin


Interrelacin redundante
Se dice que una interrelacin es redundante, cuando su eliminacin no implica prdida semntica de los datos
(significado de los datos) porque existe la posibilidad de realizar la misma asociacin por medio de otras interrelaciones




EDITORIAL
cod_edit
nombre
ciudad
PROFESOR
imparte
CURSO DEPARTAMENTO
pertenece
adscrito
N
M
1 N
1
redundante
Ciclo en el que aparece una interrelacin redundante
PROFESOR
imparte
TEMA
CURSO
TEMA
consta
s
N

Ing. Elvis Guillermo Huarcaya Quispe Pg.

52
Gestin de informtica II


Interrelacin de grado superior a 2
Cuando se presenta un interrelacin de grado superior a 2, es preciso analizar ya que a veces se puede descomponer
en otras de menor grado

Ejemplo:
La interrelacin Imparte que asocia tres entidades, se refiere a que un profesor imparte un tema en un curso, pero si
sustituimos la interrelacin por las tres Imparte1, Trata, Tema, de estas no se puede deducir los temas que trata un
profesor en curso determinado



ESPECIALIZACIN Y GENERALIZACIN

- Se crea una tabla para el conjunto de entidades del nivel ms alto.
- Para conjunto de entidades de nivel. mas bajo, se crea una tabla que incluya una columna para cada
uno de los atributos de ese conjunto de entidades, mas una columna que contendra la clave
primaria del conjunto de entidades de nivel superior.
PROFESOR
imparte
CURSO ESTUDIANTE
Imparte1
Imparte1
asiste
1
N
N M
M
N M M
1
Un tipo de interrelacin de grado 3 que puede ser descompuesta sinr prdida semntica
PROFESOR
imparte
TEMA CURSO
trata
Imparte1
entra
N
M
N M
M
N M M
N
Un tipo de interrelacin de grado 3 que no puede ser descompuesta por prdida semntica
PROFESOR
imparte
CURSO DEPARTAMENTO
pertenece
adscrito
N
M
M N
1
Ciclo en el que no aparece una interrelacin redundante
N

Ing. Elvis Guillermo Huarcaya Quispe Pg.

53
Gestin de informtica II
-




















EJERCICIOS DE MODELADO DE DATOS

CASO I: Universidad
En la secretara de una universidad se desea gestionar la informacin acerca de los alumnos, profesores, las
asignaturas y las carreras ofertadas. Hay que tener en cuenta que:
a) Un alumno puede estar matriculado en muchas asignaturas.
b) Cada asignatura pertenece a una nica carrera, aunque puede haber asignaturas de distintas
carreras con el mismo nombre.
c) Una carrera tiene muchas asignaturas
d) Cada asignatura puede estar impartida por uno o ms profesores.
e) Un profesor puede impartir ms de una asignatura.

CASO II: Caso: Tienda de Accesorios de Computadoras Computienda

COMPUTIENDA, es una empresa que brinda el servicio de ventas de accesorios respecto al rea de
computadoras, a continuacin se muestra el proceso que sigue el cliente:
1. El cliente antes de hacer su pedido, es atendido por una vendedora, quien le muestra los
productos que el cliente solicita
2. Una vez que el cliente determina que productos comprar, le dan un ticket de los productos que
va a comprar, se acerca a caja, hace su pedido, da sus apellidos, nombres, direccin, telfono,
cancela y recibe una Boleta de Venta para recoger su pedido





VEHICULO
matric modelo





COCHE
matric



AUTOBUS
matric plazas




MOTO
matric CC



VEHICULO

matric

modelo

COCHE

AUTOBUS

MOTO

CC

plazas


Ing. Elvis Guillermo Huarcaya Quispe Pg.

54
Gestin de informtica II











Canti
dad
Unid Descripcin
Precio
Unit.
S/.
Valor
de
Venta
02
03
01
Cono x
100
Cono x
100
Cja x 1
Und
CDS SONY
CDS MAXELL
Disquette MAXELL
70.00
50.00
7.00
140.00
150.00
7.00
TOTAL 297.00
3. Luego de unos minutos de espera el cliente se acerca con su Boleta de Venta a recoger su
pedido

En dicha Tienda todo el procedimiento de atencin al cliente es en forma manual
Para este caso desarrolle el Esquema Conceptual y el Esquema Lgico de la Base de Datos

CASO III: VIDEOCLUBS GLOB-GUSTERS
La cadena de Videoclubs Glob-Gusters ha decidido, para mejorar su servicio, emplear una Base de Datos
para almacenar la informacin referente a las pelculas que ofrece en alquiler. Esta informacin es la
siguiente:
- Una pelcula se caracteriza por su ttulo, nacionalidad, productora y fecha (Ejemplo: Quo Vadis,
Estados Unidos, M.G.M. , 1955)
- En una pelcula pueden participar varios actores (nombre, nacionalidad, sexo), algunos de ellos
como actores principales
- Una pelcula est dirigida por un director (nombre, nacionalidad)
- De cada pelcula se dispone de uno o varios ejemplares diferenciados por un nmero de ejemplar y
caracterizados por sus estado de conservacin
- Un ejemplar se puede encontrar alquilado a algn cliente (nombre, direccin, telfono). Se desea
almacenar la fecha de comienzo de alquiler y la de la devolucin
- Cada socio puede alquilar como mximo 4 ejemplares
- Un socio tiene que ser avalado por otro socio que responda de l en caso de tener problemas en
el alquiler

CASO IV: GESTIN DE UNA FARMACIA
La gestin de una farmacia requiere poder llevar el control de los medicamentos existentes, as como de
los que van sirviendo, para lo cual se pretende disear un sistema acorde a las siguientes
especificaciones:
- En la farmacia se requiere una catalogacin de todos los medicamentos existente, para lo cual se
almacenar un cdigo de medicamento, nombre del medicamento, tipo de medicamento (jarabe,
comprimido, pomada, etc.), unidades de stock, unidades vendidas y precio. Existen medicamentos
de venta libre y otros que slo pueden dispensarse con receta mdica
Nombre:
Direccin: Fecha de emisin: / /


RUC N 20485979043


N 0003948
factura

Ing. Elvis Guillermo Huarcaya Quispe Pg.

55
Gestin de informtica II
- La farmacia compra cada medicamento a un laboratorio, o bien los fabrica ella misma. Se desea
conocer el cdigo del laboratorio, o bien los fabrica ella misma. Se desea conocer el cdigo del
laboratorio, nombre, telfono, direccin y fax, as como el nombre de la persona de contacto
- Los medicamentos se agrupan en familias, dependiendo del tipo de enfermedades a las que dicho
medicamento se aplica. De este modo, si la farmacia no dispone un medicamento concreto, puede
vender otro similar de distinto laboratorio
- La farmacia tiene algunos clientes que realizan los pagos de sus pedidos a fin de cada mes
(clientes con crditos). La farmacia quiere mantener las unidades de cada medicamento comprado
(con o sin crdito) as como la fecha de compra . Adems, es necesario conocer los datos
bancarios de los clientes con crdito, as como la fecha de pago de las compras que realizan


1.



Diseo Conceptual

Ing. Elvis Guillermo Huarcaya Quispe Pg.

56
Gestin de informtica II

Diseo Lgico





























PELICULA
IdPelicula
IdDirector
Titulo
Nacionalidad
Productora
Fecha
ACTOR
IdActor
Nomb
Nacionalid
Sexo
DIRECTOR
IdDirector
Nombre
Nacionalid
PARTICIPA
IdPelicula
IdActor
Tipo_partic
EJEMPLAR
IdPeliNumEjemp
IdPelicula
NumEjemp
Estado_con
ALQUILADO
IdPeliNumEjemp
DNI
Fecha_alqui
Fecha_devo
SOCIO
DNI
Nombre
Direcc
Telf
IdSocAval
PELCULA
dirige
DIRECTOR
partcipa
N
ACTOR
Ttulo
Nacionalidad
Productora
Fecha
IdPelicula
IdActor
Nombre Nacionalid
Sexo
M
IdDirector
Nacionalid
ad
Nombre
pertenece
1 N
EJEMPLAR
1
N NumEjemp
Estado_con
IdPeliNumEjemp
alquilado
SOCIO
M
N
Fecha_alqui
Fecha_devo
llu
Avalado_por
1
N
DNI
Nombre
Direcc
Telf
Tipo_partic

Ing. Elvis Guillermo Huarcaya Quispe Pg.

57
Gestin de informtica II
2. FARMACIA



CASO I: GESTIN DE CURSOS DE UNA EMPRESA

SOLUCIN

a) Esquema Conceptual (Modelo E-R)

FAMILIA
.
.
LABORATORIO
.
.
.
.
.
.
MEDICAMENTO
.
.
.
.
.
.
.
.

COMP_CRE
D
.
.
.
.
.

COMP_EFE
.
.
.
.

CLIENTE_CRED
.
.

CLIENTE
.
.
.
.

MEDICAMENTO
FAMILIA LABORATORIO
Pertenece
adquiere
CLIENTE
CLIENTE_CRED
Comp_efe
Comp_cre
IdFamilia

NombreLab
TelefonoLab
DireccionLab
IdLaboratorio
.
NombreMed
TipoMed
UnidStock
..
Precio
.
R.


DNI






Ing. Elvis Guillermo Huarcaya Quispe Pg.

58
Gestin de informtica II






















b) Esquema Lgico:




















CURSO
cod_curso
Desc_curso
PROFESOR
cod_prof
apellidos
nombre
direccion
despacho
PROFESOR_CURSO
cod_prof
cod_curso
ALUMNO_CURSO
cod_curso
cod_alumno
ALUMNO
cod_alumno
cod_ciu
apellidos
nombres
Direccion
telefono
CIUDAD
cod_ciudad
des_ciu
PROFESOR

CURSO

imparte

cod_prof
apellidos direccin
nombres
Desc_curs
o

1 N
Des_ciu
ALUMNO

direccion nombre
Cod_alum
apellidos telefono
asiste

M
N
cod_ciu



cod_curso
CIUDAD

vive


1 N
despacho

Ing. Elvis Guillermo Huarcaya Quispe Pg.

59
Gestin de informtica II
NORMALIZACIN
Los modelos de datos son instrumentos que ayudan a representar la realidad. Cuando se disea una Base de Datos mediante el
modelo relacional, al igual que ocurre en otros modelos de datos, tenemos distintas opciones, es decir, podemos obtener diferentes
esquema relacionales, y no todos ellos son equivalentes, ya que una va a representar la realidad mejor que otros.
La normalizacin convierte una relacin en varias sub-relaciones, cada una de las cuales obedece a reglas. Estas reglas se describen
en trminos de dependencia. Una vez que hayamos examinado las distintas formas de dependencia, encontraremos procedimientos
a aplicar a las relaciones de modo tal que las mismas puedan descomponerse de acuerdo a la dependencia que prevalece. Esto no
llevar indefectiblemente a formar varias subrelaciones a partir de la nica relacin preexistente.
Con la teora de normalizacin se consigue una formalizacin en el diseo lgico de bases de datos relacionales,

NECESIDAD DE UN MTODO FORMAL DE DISEO RELACIONAL

En el modelo relacional, como en los dems modelos de datos, el diseo de una base de datos se puede abordar de dos formas
distintas:

a) Obteniendo el esquema relacional directamente a partir de la observacin del universo, los cuales contendrn los
atributos y restricciones de integridad que representan los objetos y reglas del mudo real
b) Realizando el proceso de diseo en dos fases, en la primera se lleva a cabo el diseo conceptual, por ejemplo en el
modelo E/R, obtenindose el correspondiente esquema conceptual; en la segunda, ste se transforma en un esquema
relacional; siguiendo determinadas reglas de transformacin

Estas relaciones que resultan en el diseo del esquema relacional se pueden presentar algunos problemas tales como:
- Incapacidad de almacenar cierto hechos
- Redundancias y, por tanto, posibilidades de inconsistencias
- Ambigedades
- Prdida de informacin (aparicin de tuplas espurias)
- Existencia de valores nulos
- Prdida de dependencias funcionales es decir ciertas restricciones de integridad que dan lugar a dependencias entre los
datos
- Aparicin, en la base de datos, de estados que no son vlidos en el mundo real (anomalas de insercin, borrado y
modificacin)

Ejemplo:

Cd_Estud Nombre_E Apellido_E DNI Direccin Cd_Beca Nombre Requisito Fecha
012323
763476
763476
763476
012323
987765
012323
987765
012323
232457
.
.
.
Roberto
Luis
Luis
Luis
Roberto
Gregorio
Roberto
Gregorio
Roberto
Mercedes
.
.
.
Hens
Garca
Garca
Garca
Hens
Celada
Hens
Celada
Hens
Garca
.
.
.
456367
345347
345347
345347
456367
885764
456367
885764
456367
809234
.
.
.
Jr. Libertad 452
Av. 13 de Noviembre 142
Av. 13 de Noviembre 142
Av. 13 de Noviembre 142
Jr. Libertad 452
Prol. Pachitea 189
Jr. Libertad 452
Prol. Pachitea 189
Jr. Libertad 452
Jr.Junn 1456
.
.
.
A22321
B56784
A22321
G65434
G65434
G65434
B56784
B56784
A22321
A22321
.
.
.
METRICA
ERASMU
METRICA
HIMMPA
HIMMPA
HIMMPA
ERASMU
ERASMU
METRICA
METRICA
.
.
.
Ing. Tc.
Ing. Tc
Ing. Tc
Ingenie.
Ingenie.
Ingenie.
Ing. Tc
Ing. Tc
Ing. Tc
Ing. Tc
.
.
.
10/10/2005
12/11/2005
14/10/2005
15/09/2005
17/09/2005
21/09/2005
11/11/2005
10/10/2005
12/11/2005
17/09/2005
.
.
.

- Gran cantidad de redundancia
- Anomalas de modificacin
- Anomalas de insercin
- Anomalas de borrado

DEFINICIN DE LAS TRES PRIMERAS FORMAS NORMALES
Los esquemas resultantes de un proceso de descomposicin es que estas relaciones alcancen un nivel de normalizacin superior al
del esquema de origen, a fin de eliminar en lo posible las redundancias y, por tanto, las anomalas de actualizacin
- Se dice que un esquema de relacin est en una determinada forma normal si satisface un cierto conjunto especfico de
restricciones
- Cunto ms alta sea la forma normal, menores sern los problemas que aparecen en el mantenimiento de la base de
datos

a) PRIMERA FORMA NORMAL (1FN)
La primera forma normal (1FN) es una restriccin inherente al modelo relacional, por lo que su cumplimiento es obligatorio y
afecta al nmero de valores que pueden tomar los atributos de una relacin.


Ing. Elvis Guillermo Huarcaya Quispe Pg.

60
Gestin de informtica II
Una relacin est en primera forma normal si, y slo si, todos los dominios de la misma contienen valores atmicos, es decir, no
hay grupos repetitivos. Si se ve la relacin grficamente como una tabla, estar en 1FN si tiene un solo valor en la interseccin
de cada fila con cada columna.

Si una relacin no est en 1FN, hay que eliminar de ella los grupos repetitivos. Un grupo repetitivo ser el atributo o grupo de
atributos que tiene mltiples valores para cada tupla de la relacin. Hay dos formas de eliminar los grupos repetitivos. En la
primera, se repiten los atributos con un solo valor para cada valor del grupo repetitivo. De este modo, se introducen
redundancias ya que se duplican valores, pero estas redundancias se eliminarn despus mediante las restantes formas
normales. La segunda forma de eliminar los grupos repetitivos consiste en poner cada uno de ellos en una relacin aparte,
heredando la clave primaria de la relacin en la que se encontraban.

Definicin:
Un conjunto de relaciones se encuentra en 1FN si ninguna de ellas tiene grupos repetitivos

Ejemplo
La siguiente tabla EMPLEADO, no est en 1FN debido a las columnas NPROY, NOMPROY, y FECINICIO

EMPLEADO
NEmp NomEmp NJefe NomJefe NDpto NomDpto NProy NomProy FecInicio
7369 Prez Juan 7902 Navarro Luis 20 Investigacin 15 Factibilidad 10/05/2005
35 Pruebas 20/05/2005
45 Control 20/06/2005
7499 Sedano Carlos 7698 Poma Carla 30 Ventas 15 Factibilidad 05/05/2005
25 Anlisis 15/05/2005
45 Control 20/06/2005

La solucin es sacar las columnas que dan problema y ponerlas en otra tabla acompaadas de
su determinante:

EMPLEADO
NEmp NomEmp NJefe NomJefe NDpto NomDpto
7369 Prez Juan 7902 Navarro Luis 20 Investigacin
7499 Sedano Carlos 7698 Poma Carla 30 Ventas





ASIGNACIN
NEmp NProy NomProy FecIni
7369 15 Factibilidad 10/05/2005
7369 35 Pruebas 20/05/2005
7369 45 Control 20/06/2005
7499 15 Factibilidad 05/05/2005
7499 25 Anlisis 15/05/2005
7499 45 Control 20/06/2005

b) SEGUNDA FORMA NORMAL (2FN)
La segunda forma normal (2FN) est basada en el concepto de dependencia plena y en las interrelaciones existentes entre los
atributos principales (que se encuentran en alguna de las claves) y no principales (que no se encuentran en ninguna clave) de
una relacin
- Una relacin est en segunda forma normal si, y slo si, est en 1FN y, adems, cada atributo que no est en la clave
primaria es completamente dependiente de la clave primaria.
- La 2FN se aplica a las relaciones que tienen claves primarias compuestas por dos o ms atributos. Si una relacin est en
1FN y su clave primaria es simple (tiene un solo atributo), entonces tambin est en 2FN. Las relaciones que no estn en
2FN pueden sufrir anomalas cuando se realizan actualizaciones.
- Para pasar una relacin en 1FN a 2FN hay que eliminar las dependencias parciales de la clave primaria.
Definicin:
Una tabla est en 2FN si est en 1FN y adems se cumple que toda columna que no es parte de la llave de la tabla depende
funcionalmente de toda la llave.

En la tabla ASIGNACIN las dependencias funcionales son:


Ing. Elvis Guillermo Huarcaya Quispe Pg.

61
Gestin de informtica II
NPROY NOMBPROY
(NEMP, NPROY) FECINI

En la tabla ASIGNACIN la llave es (NEMP, NPROY) por lo tanto la tabla no est en 2FN, ya que, existe una columna que no
es parte de la llave NOMPROY y que no depende de toda la llave.

La solucin es sacar las columnas que dan problema y ponerlas en otra tabla acompaadas de su
determinante.

ASIGNACIN
NEmp NProy FecIni
7369 15 10/05/2001
7369 35 20/05/2001
7369 45 20/06/2001
7499 15 05/05/2001
7499 25 15/05/2001
7499 45 20/06/2001


PROYECTOS
NProy NomProy
15 Factibilidad
25 Anlisis
35 Pruebas
45 Control


c) TERCERA FORMA NORMAL (3FN)
La tercera forma normal est basada en el concepto de dependencia transitiva

Definicin:
Una tabla est en 3FN si est en 2FN y adems se cumple que toda columna que no es parte
de la llave de la tabla depende slo de la llave (dependencia transitiva)

EMPLEADO
NEmp NomEmp NJefe NomJefe NDpto NomDpto
7369
Prez Juan
7902
Navarro Luis
20 Investigacin
7499
Sedano Carlos
7698
Poma Carla
30 Ventas

Las dependencias funcionales son:

NEMP NOMEMP
NJEFE NOMJEFE
NDPTO NOMDPTO
NEMP NJEFE
NEMP NDPTO
NEMP NOMJEFE
NEMP NOMDPTO

La tabla est en 2FN, ya que, todas las columnas que no es parte de la llave dependen funcionalmente
de toda la llave, es decir,
(NEMP) (NOMEMP, NJEFE, NOMJEFE, NDPTO, NOMDPTO)

Pero no est en 3FN debido, por ejemplo, a que NOMDPTO adems de depender de NEMP (que es
parte de la llave) depende de NDPTO (que no es parte de la llave). En este caso, hablamos de que
existe una dependencia transitiva.

Ing. Elvis Guillermo Huarcaya Quispe Pg.

62
Gestin de informtica II

La solucin es sacar las columnas que dan problemas y ponerlas en otra tabla acompaadas de su
determinante.

EMPLEADO
NEmp NomEmp NJefe NomJefe NDpto NomDpto
7369
Prez Juan
7902
Navarro Luis
20 Investigacin
7499
Sedano Carlos
7698
Poma Carla
30 Ventas

Primero se soluciona el problema de la columna NOMDPTO:

DEPARTAMENTO
NDpto NomDpto
20 Investigacin
30 Ventas
Luego se soluciona el problema con la columna NOMJEFE

JEFE
NJefe NomJefe
7902
Navarro Luis
7698
Poma Carla

Y la tabla EMPLEADO queda de la siguiente forma:

EMPLEADO
NEmp NomEmp NJefe NDpto
7369
Prez Juan
7902 20
7499
Sedano Carlos
7698 30

Al proceso de sacar las columnas que dan problemas y ponerlas en otra tabla aparte junto con su
determinante se le llama descomposicin.

La descomposicin de una tabla es correcta si al hacer el JOIN entre las tablas resultantes se vuelve a
obtener la tabla original. Se le llama descomposicin sin prdida de informacin.

Al llevarnos el determinante de las columnas que se estn sacando de la tabla, nos aseguramos que la
descomposicin sea sin prdida de informacin.

EJERCICIO:

El centro de computacin de la Facultad posee un grupo de Consultora dedicado a la atencin de usuarios.
Dicho grupo est formado por alumnos regulares de la Facultad, los que tienen dominio de algn software
especfico. Para cada consultor existe un horario de atencin preestablecido y el propio jefe del grupo est a
cargo de controlar el funcionamiento del servicio.

Se pide normalizar el modelo relacional hasta la 3FN.

Una vez que haya normalizado el modelo relacional, infiera el modelo entidad-relacin, identificando todas
sus componentes.

HORARIO ASISTENCIA
Matricula num_dia cod_mod hora_inicio Hora_fin matricula cod_mod fecha
2039 1 1 08:50 10:00 2039 1 24/11/98
2039 2 2 10:25 11:00 2039 2 25/11/98

Ing. Elvis Guillermo Huarcaya Quispe Pg.

63
Gestin de informtica II
2020 3 1 08:50 10:00 2020 1 25/11/98

CONSULTOR
Cod_dpto Nom_dpto Nombre Matricula cod_soft descripcion
10 Computacin Alfredo 2039 0001 Excel 5,0
0002 Word 6,0
0003 Pascal
0004 Turing
20 Matemticas Claudia 2020 0005 C
0006 PL/SQL
0003 Pascal



SOLUCIN

La tabla asistencia se encuentra en 3FN, ya que estando la llave primaria compuesta por los campos
(fecha,matricula) se tiene la siguiente dependencia funcional:
(fecha,matricula) cod_mod

lo cual indica que todo campo que no pertenece a la llave primaria (en este caso solamente cod_mod)
depende SOLO de la llave primaria.

La tabla horario y consultor, no estn en ninguna forma normal ya que ambas presentan columnas con
valores vectoriales. (no atmicos)

En la tabla horario, estas columnas son hora_inicio,hora_fin por lo tanto hay que llevarlas a otra tabla junto
con su determinante que es cod_mod. Esto se traduce en:

HORARIO_DIARIO MODULO
Matricula num_dia cod_mod cod_mod hora_inicio hora_fin
2039 1 1 1 08:50 10:00
2039 2 2 2 10:25 11:00
2020 3 1

De esta manera ambas tablas quedan en 3FN, siendo sus dependencias funcionales las siguientes:

horario_diario:
Para soportar el caso de que un alumno pueda tener dos mdulos distintos un mismo da, es necesario que
la llave primaria est formada por las tres columnas (matricula,num_dia,cod_mod).

modulo:
Siendo cod_mod la llave primaria, se tienen las dependencias:
cod_mod hora_inicio
cod_mod hora_fin

Para la tabla consultor, primero debemos llevar a otra tabla la columna descripcin con su determinante
cod_soft:

CONSULTOR software
Cod_dpto nom_dpto nombre matricula cod_soft cod_soft Descripcin
10 Computacin Alfredo 2039 0001 0001 Excel
0002 0002 Word
0003 0003 Pascal

Ing. Elvis Guillermo Huarcaya Quispe Pg.

64
Gestin de informtica II
0004 0004 Turing
20 Matemticas Claudia 2020 0005 0005 C
0006 0006 PL/SQL
0003 0003 Pascal

As, la tabla software queda en 3FN. Pero la tabla consultor sigue sin ninguna forma normal, pues la
columna cod_soft tiene datos repetidos. Luego se debe separar en otra tabla junto con su determinante que
es matricula.

consultor conocimiento
Cod_dpto nom_dpto nombre matricula Matricula cod_soft
10 Computacin Alfredo 2039 2039 0001
20 Matemticas Claudia 2020 2039 0002
2039 0003
2039 0004
2020 0005
2020 0006
2020 0003

La tabla conocimiento est en 3FN si la llave primaria est formada por ambos campos (matricula,cod_soft).

Las dependencias funcionales de la tabla consultor si la llave primaria es matricula, son:
matricula nombre
matricula nom_dpto
matricula cod_dpto
cod_dpto nom_dpto

esto nos dice que la tabla est en 2FN (todo campo que no pertenece a la llave primaria, depende
funcionalmente de TODA la llave primaria), pero no est en 3FN ya que, nom_dpto adems de depender de
la llave primaria depende de cod_dpto. Luego la separamos en otra tabla junto con su determinante.

consultor departamento
matricula nombre cod_dpto cod_dpto nom_dpto
2039 Alfredo 10 10 Computacin
2020 Claudia 20 20 Matemticas

De esta forma todo queda en 3FN. Las dependencias funcionales de estas tablas son:

consultor: matricula nombre departamento: cod_dpto nom_dpto
matricula cod_dpto


Ing. Elvis Guillermo Huarcaya Quispe Pg.

65
Gestin de informtica II

BASE DE DATOS ORIENTADO A OBJETOS
Concepto:
En una base de datos orientada a objetos, la informacin se representa mediante objetos como los presentes en la programacin
orientada a objetos. Cuando se integra las caractersticas de una base de datos con las de un lenguaje de programacin orientado a
objetos, el resultado es un sistema gestor de base de datos orientada a objetos (ODBMS, object database management system). Un
ODBMS hace que los objetos de la base de datos aparezcan como objetos de un lenguaje de programacin en uno o ms lenguajes
de programacin a los que d soporte. Un ODBMS extiende los lenguajes con datos persistentes de forma transparente, control de
concurrencia, recuperacin de datos, consultas asociativas y otras capacidades

1.1 Estructuras de Objetos.

El modelo orientado a objetos se basa en encapsular cdigo y datos en una nica entidad, llamada objeto. La interfaz entre un objeto
y el resto del sistema se define mediante un conjunto de mensajes.
El motivo de este enfoque puede ilustrarse considerando una base de datos de documentos en la que los documentos se preparan
usando uno entre varios paquetes de software con formateador de texto. Para imprimir un documento debe ejecutarse el formateador
correcto en el documento. Bajo un enfoque orientado a objetos, cada documento es un objeto que contiene el texto de un documento
y el cdigo que opera sobre el objeto. Todos los objetos del documento responden al mensaje de imprimir pero lo hacen en formas
diferentes. Cada documento responde ejecutando el cdigo de formatear adecuado. Encapsulando dentro del objeto del documento
la informacin acerca de cmo imprimir el documento, podemos tener todos los documentos con el mismo interfaz externo al usuario.


En general, un objeto tiene asociado:
- Un conjunto de variables que contienen los datos del objeto. El valor de cada variable es un objeto.
- Un conjunto de mensajes a los que el objeto responde.
- Un mtodo, que es un trozo de cdigo para implementar cada mensaje. Un mtodo devuelve un valor como respuesta al
mensaje.

El termino de mensaje en un contexto orientado a objetos no implica el uso de un mensaje fsico en una red de computadoras, sino
que se refiere al paso de solicitudes entre objetos sin tener en cuenta detalles especficos de implementacin.

Puesto que el nico interfaz externo que presenta un objeto es el conjunto de mensajes al que responde, es posible modificar la
definicin de mtodos y variables sin afectar otros objetos. Tambin es posible sustituir una variable por un mtodo que calcule un
valor. Por ejemplo, un objeto de documento puede contener una variable de tamao que contenga el numero de bytes de texto en el
documento o bien un mtodo de tamao que calcule el tamao del documento leyendo el documento y contando el numero de bytes.

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.

1.2 Jerarqua de Clases

Normalmente en una base de dato existen muchos objetos similares. Por similar queremos decir que responden a los mismos
mensajes, utilizan los mismos mtodos y tienen variables del mismo nombre y tipo. Sera un trabajo intil definir cada uno de estos
objetos por separado. Por tanto, agrupamos los objetos similares para que formen una clase. A cada uno de estos objetos se les
llama instancias de su clase. Todos los objetos de una clase comparten una definicin comn. Aunque difieran en los valores
asignados a las variables. Ejemplo de clases en las bases de datos del banco son los clientes, las cuentas y los prstamos.

El concepto de clases es similar al concepto de tipos abstractos de datos. Sin embargo, en el concepto de clase exi sten varios
aspectos adicionales ms all de los de los tipos abstractos de datos. Para representar estas propiedades adicionales, tratamos cada
clase como si fuera un objeto. Un objeto clase incluye:
- Una variable con valores es un conjunto cuyo valor es el conjunto de todos los objetos que son instancias de la clase.
- Implementacin de un mtodo para el nuevo mensaje, el cual crea una nueva instancia de la clase.

Un esquema de base de datos orientada a objetos normalmente requiere un gran numero de clases. Sin embargo, a menudo se da el
caso de que varias clases son similares. Por ejemplo, supngase que tenemos una base orientada a objetos para la aplicacin
bancaria. Sera de esperar que la clase de cliente del banco fuera similar a la clase de empleados del banco en la definicin de
variables de nombre, direccin, nmero de telfono, etc. Sin embargo existen variables especificas para los empleados (por ejemplo
tasa-credito). Sera deseable definir una representacin para las variables comunes en un sitio. Esto puede hacerse slo si los
empleados y los clientes estn combinados en una clase.

Para permitir la representacin directa de similaridades entre clases necesitamos colocar clases en una jerarqua de especializacin
como la que se defini en el modelo de datos Entidad - Relacin. Los empleados y los clientes pueden representarse por clases que
son especializaciones de una clase Persona. Las variables y los mtodos especficos de los empleados se asocian a la clase
Empleado. Las variables y los mtodos especficos de los clientes se asocian a la clase Cliente. Las variables y los mtodos que se
aplican tanto a los empleados como a los clientes se asocian a la clase Persona. La siguiente figura muestra una jerarqua de clases
que representan personas implicadas en la operacin del ejemplo bancario. Las variables asociadas a cada clase del ejemplo son:


Ing. Elvis Guillermo Huarcaya Quispe Pg.

66
Gestin de informtica II
- Persona: numero-seguridad-social, nombre, direccin, numero-telefono-particular, fecha-de-nacimiento.
- Cliente: tasa-de-credito, estado-retencion-impuestos, numero-de-telefono-trabajo.
- Empleado: fecha-de-contrato, salario, numero-de-dependientes.
- Director: titulo, numero-despacho, numero-cuenta-de-gastos











Por brevedad no presentamos los mtodos asociados a estas clases, aunque estaran incluidos en la definicin completa de la base
de datos bancaria.

Un objeto que representa a un director contiene todas las variables de la clase Director, Empleado y Persona. Esto se refiere a la
herencia de las propiedades de una clase mas general. Los mtodos se heredan de manera idntica a la herencia de las variables.
Las especializaciones de una clase se denominan subclases. As, por ejemplo, Empleado es una subclase de Persona; Cajero es una
subclase de Empleado. A la inversa, Empleado es una superclase de Cajero y Persona es una superclase de Empleado.

Anteriormente observamos que cada clase es ella misma un objeto y que ese objeto incluye una variable que contiene el conjunto de
todas las instancias de la clase. Es fcil determinar qu objetos estn asociados a clases en las hojas de jerarqua. Por ejemplo,
asociamos a la clase Cliente, el conjunto de todos los clientes del banco. Sin embargo, para las clases que no son hojas, la cuestin
es ms complicada. En la figura anterior hay dos posibles formas de asociar objetos a clases.

- Podramos asociar a la clase Empleado todos los objetos de empleado, incluyendo aquellos que sean instancias de
Director, Cajero y Secretaria.
- Podramos asociar a la clase Empleado solamente aquellos objetos de empleado que no sean instancias de Director,
ni de Cajero, ni de Secretaria.

Normalmente, en sistemas orientados a objetos se elige la ltima forma. Es posible determinar el conjunto de todos los objetos de
empleado en este caso tomando la unin de aquellos objetos asociados a todas las clases en el subrbol con raz en Empleado.

Como observamos anteriormente, la jerarqua de clase/subclase es similar al concepto de especializacin en el modelo entidad
relacin. Decimos que Cajero es una especializacin de Empleado porque el conjunto de todos los cajeros es un subconjunto de
todos los empleados. Es decir, cada cajero es un empleado.

La especializacin permite la posibilidad de que un empleado no sea un cajero, una secretaria, ni un director. Una forma alternativa
de la relacin es el concepto de generalizacin. En el modelo entidad - relacin, la generalizacin es el resultado de tomar la unin de
dos o mas conjunto de entidades (de nivel bajo) para producir un conjunto de entidades de nivel alto. Si aplicamos el concepto de
generalizacin al modelo orientado a objetos, cada objeto debe ser una instancia de una clase hoja en la jerarqua. Esto requerira la
definicin de una subclase de Empleado llamada Otro-Empleado para representar empleados que no fueran cajeros, secretarias ni
directores.

En la mayora de los sistemas orientados a objetos suelen tener implcita la especializacin en vez de la generalizacin. As, en lo
que sigue, supondremos que la jerarqua de clase/subclase est basada en la especializacin.


1.3 Herencia Mltiple

En la mayora de los casos, una organizacin jerrquica de clases es la adecuada para describir aplicaciones. En tales casos, todas
las superclases de una clase son antepasados de otra en la jerarqua. Sin embargo, existen situaciones que no pueden representarse
bien en una jerarqua de clases.

Supngase que queremos distinguir entre cajeros y secretarias a tiempo completo y a tiempos partidos en el ejemplo de la figura ya
mencionada. Adems supngase que necesitamos variables y mtodos diferentes para representar estos dos tipos de empleados.
Podemos crear las subclases: Cajero-tiempo-patido, Cajero-tiempo-completo, Secretaria-tiempo-partido, Secretaria-tiempo-completo.
La jerarqua resultante que se muestra a continuacin no proporciona un buen modelo de la empresa bancaria por varias razones:






Persona
Empleado
Cliente
Director Cajero Secretaria
Persona
Empleado
Cliente

Ing. Elvis Guillermo Huarcaya Quispe Pg.

67
Gestin de informtica II












- Como observamos anteriormente, existen ciertas variables y mtodos especficos de los empleados a tiempo completos y otros
especficos de los de tiempo partido. En la figura anterior las variables y los mtodos para los empleados a tiempo completo
deben estar definidas dos veces, una para Secretaria-tiempo-completo y otra para Cajero-tiempo-completo. Para los empleados
a tiempo partidos existe una redundancia parecida. Esta redundancia no es deseable, ya que cada cambio de las propiedades
de los empleados a tiempo completo o partido debe hacerse en dos sitios, lo que puede conducir a inconsistencias.
- La jerarqua no tiene forma de representar empleados que no sean cajeros ni secretarias, a menos que la ampliemos de manera
que incluya las clases Empleado-tiempo-completo y empleados-tiempo-partido.

Si tuviramos varias clasificaciones de trabajo en vez de las dos de este ejemplo sencillo, las limitaciones del modelo llegaran a ser
ms aparentes.

El concepto de Herencia Mltiple trata los problemas que acabamos de observar en el modelo orientado a objetos; este concepto
de refiere a la capacidad de las clases para heredar variables y mtodos de mltiples superclases. La relacin clase/subclase se
representa por un grafo con raz aciclica dirigido (DAG) en el que una clase puede tener ms de una superclase. Volvamos al ejemplo
bancario. Utilizando un DAG podemos definir propiedades de empleo a tiempo completo y a tiempo partido en un sitio. Como se
muestra en la siguiente figura. Definimos una clase Tiempo-partido que define aquellas variables y mtodos especficos del empleo a
tiempo partido y una clase Tiempo-completo que define aquellas variables y mtodos especficos del empleo a tiempo completo.



































Utilizando DAG en la figura mencionada, podemos representar los empleados a tiempo completo y a tiempo partido que no son
cajeros ni secretarias como instancias de las clases Tiempo-completo y Tiempo-partido, respectivamente.

Director Cajero Secretaria
Cajero a tiempo
completo
Cajero a tiempo
Partido
Secretaria a
Tiempo
Completo
Secretaria a
Tiempo
Partido
Persona
Empleado
Cliente
Director Cajero Secretaria
Cajero a tiempo
completo
Cajero a tiempo
Partido
Secretaria a
Tiempo
completo
Secretaria a
Tiempo
partido
Persona
Empleado
Cliente
Director Cajero Secretaria

Ing. Elvis Guillermo Huarcaya Quispe Pg.

68
Gestin de informtica II
Cuando se emplea la herencia mltiple es posible que se d ambigedad en el caso en que pueda heredarse la misma variable o
mtodo de ms de una superclase. En el ejemplo bancario, supngase que en vez de definir salario para la clase Empleado,
definimos una variable pago para cada una de las clases Tiempo-completo, Tiempo-partido, Cajero y Secretaria como sigue:
- Tiempo-completo: pago es un entero de 0 a 100 000 que contiene el salario anual.
- Tiempo-partido: pago es un entero de 0 a 20 que contiene una fraccin de pago por hora.
- Cajero: pago es un entero de 0 a 20 000 que contiene el salario anual.
- Secretaria: pago es un entero entre 0 a 25 000 que contiene el salario anual.

Considrese la clase Secretaria-tiempo-partido. Podra heredar la definicin de pago de Tiempo-partido o de Secretaria. El resultado
es diferente, dependiendo de la eleccin que se haga. Entre las opciones que pueden elegir las diversas implementaciones del
modelo orientado a objetos estn las siguientes:
- Incluir las dos variables, renombrarlas como Tiempo-partido.pago y Secretaria.pago.
- Elegir una u otra basndose en el orden en el que se crearon las clases Tiempo-partido y Secretaria.
- Obligar al usuario a que haga la eleccin en el momento en que se define la clase secretaria-tiempo-partido.

No se ha aceptado ninguna solucin simple como la mejor. Cabe mencionar que no todos los casos de herencia mltiple conducen a
ambigedad. Si en vez de definir pago, conservamos la definicin de la variable salario en la clase empleado, y no la definicin de la
variable salario en la clase Empleado, y no la definicin en ningn otro sitio, entonces las clases Tiempo-partido, Tiempo-completo,
Secretaria Tiempo-partido, Tiempo-completo, Secretaria y Cajero heredan todas salario de Empleado. Puesto que las cuatro clases
comparten la misma definicin de salario, no resulta ninguna ambigedad cuando la Secretaria-tiempo-partido, Seecretaria-tiempo-
completo, etc., heredan salario.


1.4 Identidad de objetos

Los objetos en una base de datos orientada a objetos, normalmente corresponden a una entidad de la empresa que est modelando
la base de datos. Una entidad conserva su identidad aun cuando algunas de sus propiedades cambien con el tiempo. Igualmente, un
objeto conserva su identidad aun cuando algunos o todos los valores de las variables o las definiciones de los mtodos cambi en con
el tiempo. Este concepto de identidad no se aplica a las tuplas de una base de datos relacional. En los sistemas relacionales, las
tuplas de una relacin se distinguen nicamente por los valores que contienen.

La identidad del objeto es una nocin mas fuerte que la que se encuentra normalmente en los lenguajes de programacin o en los
modelos de datos que no estn basados en la orientacin a objetos. A continuacin ilustramos varias formas de identidad.
- Valor Se utiliza un valor de dato por identidad. Esta es la forma de identidad que se usa en los sistemas relacionales.
- Nombre Se utiliza un nombre facilitado por el usuario por identidad. Esta es la forma de identidad que normalmente se usa para
las variables en los procedimientos. A cada variable se le da un nombre que identifica de manera nica a la variable sin importar
el valor que contenga.
- Incorporacin Una nocin de identidad es incorporar en el modelo de datos el lenguaje de programacin, y no se requiere que el
usuario proporcione ningn indentificador. Esta es la forma de identidad que se usa en los sistemas orientados a objetos.

Un tema relacionado con el tipo de identidad es la permanencia de identidad. Una forma sencilla de lograr incorporar la identidad es
por medio de punteros a localizaciones en memoria. Sin embargo, la asociacin de un objeto a una localizacin fsica en memoria
puede cambiar con el tiempo. A continuacin listamos varios grados de permanencia de identidad.
- Intraprograma. La identidad permanece solamente durante la ejecucin de un nico programa o consulta. Ejemplo de identidad
de interprograma son los nombres de la variable en los lenguajes de programacin y los identificadores de tuplas en SQL.
- Interprograma. La identidad permanece de una ejecucin del programa a otra. Ejemplos de identidad de interprograma son los
nombres de relaciones en un lenguaje de consulta relacional del tipo del SQL.
- Persistente. La identidad permanente no slo entre las operaciones del programa sino tambin entre las reorganizaciones
estructurales de los datos. Las relaciones en SQL no tienen identidad persistente, ya que una reorganizacin de la base de
datos puede resultar en un nuevo esquema de bases de datos con relaciones con nuevos nombres. La forma persistente de
identidad es la que se requiere en los sistemas orientados a objetos.

Estas formas de identidad sirven para distinguir entre identidad en sistemas orientados a objetos y punteros en organizacin fsica de
datos. Los punteros de la memoria principal o de la memoria virtual solamente ofrecen identidad de Intraprograma. Los punteros a
datos de un sistema de archivos en disco solamente ofrecen identidad de interprograma. As, la identidad de objetos es decir, la
identidad persistente es una nocin ms fuerte que la que proporcionan los punteros.

1.5 Contenido de Objetos

Anteriormente observamos que el valor de una variable de un objeto es ella misma un objeto. Esto crea una jerarqua de contenido
entre los objetos. Un objeto O2 es el hijo de un objeto O1 y si O1 contiene O2; es decir, O2 es el valor de una variable de O1. Los
objetos que contienen otros objetos se denominan objetos complejos o compuestos.

Para ilustrar el contenido considrese la base de datos simplificada de diseo de sistemas de computadoras de la siguiente figura. La
base de datos contiene informacin en varios sistemas de computadoras. Cada sistema de computadoras contiene un conjunto de
tarjetas, un conjunto de buses, un conjunto de dispositivos y un conjunto de chips y los buses proporcionan un conjunto de interfaces.

Sistema de computadoras

Ing. Elvis Guillermo Huarcaya Quispe Pg.

69
Gestin de informtica II







La jerarqua de la figura muestra la relacin de contenido entre los objetos de una forma esquemtica listando los nombres de las
clases en vez de los objetos individuales. Considrese la clase Sistema-computadores. Puede incluir las variables nombre-
computador, id-proyecto, gestor, fecha-terminacin, las cuales contienen datos descriptivos acerca de una instancia de la clase.
Aunque los valores de estas variables se consideran objetos, son instancias de tipos de datos estndar (como cadenas de
caracteres) que se han implementado directamente a un nivel bajo por razones de rendimiento. La clase Sistema-computadores
tambin incluyen las variables tarjeta, bus, dispositivo y conjunto-instrucciones. Estas variables toman como valores conjuntos de
objetos de las clases Tarjeta, Bus, Dispositivo y Conjunto-instrucciones, respectivamente.

En determinadas aplicaciones, un objeto puede estar contenido en varios objetos. En tales casos, la relacin de contenido se
representa por un DAG en vez de mediante una jerarqua.

El contenido es un concepto importante en los sistemas orientados a objetos porque permite que distintos usuarios vean los datos en
diferentes granualidades.
Tarjeta Bus Dispositivo
Conjunto
Instrucciones
Chips Interfaces

Ing. Elvis Guillermo Huarcaya Quispe Pg.

70
Gestin de informtica II
LENGUAJE DE CONSULTA DE BASE DE DATOS STRUCTURED QUERY
LANGUAGE

EDICIONES DE SQL SERVER
EDICIONES DE SQL SERVER 2005
Microsoft ha rediseado la familia de productos SQL Server 2005 para satisfacer las necesidades de cada segmento de
clientes con cuatro nuevas ediciones: Express, Workgroup, Standard y Enterprise. Como base de datos central de bajo
coste, SQL Server 2005 aporta valor y funcionalidad sin precedentes en comparacin con las soluciones competitivas.
Las cuatro nuevas ediciones ofrecen una gama de caractersticas, desde alta disponibilidad y slida escalabilidad hasta
herramientas avanzadas de inteligencia comercial, diseadas para ofrecer a los usuarios de una organizacin una
plataforma productiva de gestin de datos ms segura, fiable y productiva. Adems, con el menor tiempo de inactividad
de la aplicacin, su escalabilidad y rendimiento slidos y adems los severos controles de seguridad, SQL Server 2005
representa un avance espectacular al ser compatible con los sistemas empresariales ms exigentes del mundo. Debido
a que SQL Server forma parte del Windows Server System, los clientes tambin reciben los beneficios adicionales de
menor coste total de propiedad y mayor velocidad de desarrollo a travs de una mejor administracin y mayor
integracin que surgen de la estrategia comn de ingeniera implementada en todos los productos Windows Server
System. La tabla siguiente presenta detalles sobre cada una de las distintas ediciones.
Notas: En la tabla siguiente, la columna "Comentarios" brinda comentarios sobre la caracterstica especfica. Los
nmeros al lado de las tildes indican las notas al pie que aparecen en la parte inferior de la pgina. SQL Server 2005
Developer Edition y Evaluation Edition no aparecen en las tablas. Estas ediciones tienen las mismas caractersticas que
la Enterprise Edition; la nica diferencia entre ellas radica en las polticas de otorgamiento de licencia.
Escalabilidad y rendimiento
Caracterstica Express Workgroup Standard Enterprise Comentarios
Nmero de
CPU
1 2 4 Ilimitado Es compatible con procesadores
multincleo
RAM 1 GB 3 GB OS Max OS Max Memoria limitada a un mximo compatible
con el sistema operativo

Admite 64 bits Windows
on
Windows
(WOW)
WOW



Tamao de la
base de datos
4 GB Ilimitado Ilimitado Ilimitado


Particin


Compatibilidad para bases de datos a gran
escala

Operaciones de
ndice paralelo


Procesamiento paralelo de operaciones de
indexacin

Vistas
indizadas


Se admite la creacin de vista indizada en
todas las ediciones. La correspondencia de
vista indizada por el procesador de
consulta slo se admite en la Enterprise
Edition.

Alta disponibilidad
Caracterstica Express Workgroup Standard Enterprise Comentarios
Reflejo de base de
datos
1


2

Solucin avanzada de alta
disponibilidad que incluye
conmutacin rpida por error
y redireccionamiento
automtico del cliente
Organizacin en

3



Ing. Elvis Guillermo Huarcaya Quispe Pg.

71
Gestin de informtica II
Escalabilidad y rendimiento
Caracterstica Express Workgroup Standard Enterprise Comentarios
clsteres de
conmutacin por
error
Transmisin de
registros de
seguridad


Solucin de copia de
seguridad y recuperacin de
datos
Cambios del sistema
en lnea

Incluye Memoria Hot Add,
conexin administrativa
dedicada y otras
operaciones en lnea
Indizacin en lnea



Restauracin en lnea



Recuperacin rpida


Base de datos disponible
cuando comienzan las
operaciones para deshacer
1 nicamente con fines de evaluacin. Uso de produccin programado para el primer semestre de 2006.
2 Siempre estn activados el nico subproceso REDO y la configuracin de seguridad
3 Admite slo dos nodos
http://www.microsoft.com/spain/sql/productinfo/features/compare-features.mspx
COMPARACIN ENTRE ENTERPRISE EDITION Y ESTNDARD EDITION SQL
2008

INTRODUCCIN A SQL SERVER
INTRODUCCION
El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado, utilizado por el motor de base de datos de
Microsoft Jet. SQL se utiliza para crear objetos QueryDef, como el argumento de origen del mtodo OpenRecordSet y como la
propiedad RecordSource del control de datos. Tambin se puede utilizar con el mtodo Execute para crear y manipular directamente
las bases de datos Jet y crear consultas SQL de paso a travs para manipular bases de datos remotas cliente - servidor.

SQL es un lenguaje de consultas hacia bases de datos relacionales. Entre las caractersticas de SQL se tiene:
- Procesa conjuntos de datos como grupos, ms que como unidades individuales.
- Provee navegacin automtica sobre los datos.
- Usa instrucciones que son complejas y poderosas individualmente. Las instrucciones de flujo de control de los otros
lenguajes de programacin estn ausentes en SQL. Sin embargo ellas se proveen por extensiones al SQL, dependientes de
cada fabricante de bases de datos.
COMPONENTES DEL SQL
El lenguaje SQL est compuesto por comandos, clusulas, operadores y funciones de agregado. Estos elementos se combinan en
las instrucciones para crear, actualizar y manipular las bases de datos.
a) Comandos

Ing. Elvis Guillermo Huarcaya Quispe Pg.

72
Gestin de informtica II
Existen dos tipos de comandos SQL:

- Los DLL que permiten crear y definir nuevas bases de datos, campos e ndices.
- Los DML que permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos.
Comandos DLL
Comando Descripcin
CREATE Utilizado para crear nuevas tablas, campos e ndices
DROP Empleado para eliminar tablas e ndices
ALTER Utilizado para modificar las tablas agregando campos o cambiando la definicin de los campos.
Comandos DML
Comando Descripcin
SELECT Utilizado para consultar registros de la base de datos que satisfagan un criterio determinado
INSERT Utilizado para cargar lotes de datos en la base de datos en una nica operacin.
UPDATE Utilizado para modificar los valores de los campos y registros especificados
DELETE Utilizado para eliminar registros de una tabla de una base de datos
b) Clusulas
Las clusulas son condiciones de modificacin utilizadas para definir los datos que desea seleccionar o manipular.
Clusula Descripcin
FROM Utilizada para especificar la tabla de la cual se van a seleccionar los registros
WHERE
Utilizada para especificar las condiciones que deben reunir los registros que se van a
seleccionar
GROUP BY Utilizada para separar los registros seleccionados en grupos especficos
HAVING Utilizada para expresar la condicin que debe satisfacer cada grupo
ORDER BY Utilizada para ordenar los registros seleccionados de acuerdo con un orden especfico
c) Operadores
Operadores Lgicos:
Operador Uso
AND
Es el "y" lgico. Evalua dos condiciones y devuelve un valor de verdad slo si ambas son
ciertas.
OR
Es el "o" lgico. Evala dos condiciones y devuelve un valor de verdar si alguna de las dos es
cierta.
NOT Negacin lgica. Devuelve el valor contrario de la expresin.
Operadores de Comparacin
Operador Uso
< Menor que
> Mayor que
<> Distinto de
<= Menor Igual que
>= Mayor Igual que
= Igual que
BETWEEN Utilizado para especificar un intervalo de valores.
LIKE Utilizado en la comparacin de un modelo
In Utilizado para especificar registros de una base de datos
d) Funciones de Agregado
Las funciones de agregado se usan dentro de una clusula SELECT en grupos de registros para devolver un nico valor que se
aplica a un grupo de registros.

Funcin Descripcin
AVG Utilizada para calcular el promedio de los valores de un campo determinado
COUNT Utilizada para devolver el nmero de registros de la seleccin
SUM Utilizada para devolver la suma de todos los valores de un campo determinado
MAX Utilizada para devolver el valor ms alto de un campo especificado
MIN Utilizada para devolver el valor ms bajo de un campo especificado
EL LENGUAJE DE DEFINICINDE DATOS
(DDL)
Introduccin
El Lenguaje de Definicin de Datos (DDL); permite establecer y/o modificar el esquema relacional el esquema relacional, es decir,
aadir, borrar o actualizar atributos, tablas, ndices, etc.
TIPOS DE DATOS

Ing. Elvis Guillermo Huarcaya Quispe Pg.

73
Gestin de informtica II
Antes de crear una tabla, debe definir los tipos de datos de la tabla. Los tipos de datos especifican el tipo de informacin
(caracteres, nmeros o fechas) que se puede almacenar en una columna, as como la forma en que los datos estn
almacenados. Microsoft SQL Server 2000 proporciona varios tipos de datos del sistema. SQL Server tambin permite tipos
de datos definidos por el usuario que estn basados en los tipos de datos del sistema.
Los tipos de datos definen el valor de datos que se permite en cada columna. SQL Server proporciona varios tipos de datos
diferentes. Ciertos tipos de datos comunes tienen varios tipos de datos de SQL Server asociados. Debe elegir los tipos de datos
adecuados que le permitan optimizar el rendimiento y conservar espacio en el disco.


CREACINDE TABLAS (CREATE TABLE )
Despus de definir todos los tipos de datos de la base de datos, puede crear tablas, agregar y quitar columnas, y generar los
valores de las columnas.
Al crear tablas en SQL Server, debe tener en cuenta los hechos siguientes. Puede tener hasta:
- Dos mil millones de tablas en cada base de datos.
- 1.024 columnas por cada tabla.
- 8060 bytes por fila (esta longitud mxima aproximada no se aplica a los tipos de datos image, text y ntext).
Sintaxis parcial:
CREATE TABLE nombreTabla (
Tipos de
datos
comunes
Tipos de datos del
sistema de SQL
Server.
Sinnimo ANSI Nmero de
bytes
Entero
int

Desde -2 147 483 648
Hasta + 2 147 483 648
4

bigint 8
smallint Desde -32 768
Hasta +32 768
2
tinyint Desde 0 hasta 255 1
Numrico
exacto
decimal[(p[, s])]
numeric[(p[, s])]
Enteros y decimales desde -1.79E308 hasta +1.79E308,
donde p es el conjunto de digitos de la parte entera
(precisin) y s es la parte decimal (escala)
217
Numrico
aproximado
float[(n)] Redondeo de nmeros desde -1.79E308 hasta +1.79E308 8
real Redondeo de nmeros desde -340E38 hasta +340E38 4
Moneda
money, Nmeros con una precisin de cuatro decimales 8
smallmoney Desde -9223372036854475508 hasta -
+9223372036854475508
4
Fecha y
hora
Datetime, Desde 1/01/1753 hasta 31/12/9999 8
smalldatetime Desde 01/01/1900 hasta 06/06/2079 4
Carcter
char[(n)]

Declarable hasta 255 caracteres 1 byte por
carcter
declarado
varchar[(n)]

Declarable hasta 255 caracteres 1 byte por
carcter
declarado
Binario
binary[(n)]

Mximo 255 bytes de longitud n bytes
varbinary[(n)] Mximo 255 bytes de longitud n bytes
Imagen image Mximo 2 GB de longitud 0 a 2 GB
Especial bit, cursor,
uniqueidentifier
timestamp
sysname
table
sql_variant

rowversion



1, 08
8
256
08016

Ing. Elvis Guillermo Huarcaya Quispe Pg.

74
Gestin de informtica II
nombre_ columna1 tipo_dato1 [NULL] | NOT NULL] ,
nombre_ columna2 tipo_dato2 [NULL] | NOT NULL] ,
nombre_ columna3 tipo_dato3 [NULL] | NOT NULL] ,
)
Ejemplo:
El siguiente ejemplo crea la tabla CURSO y se especifican las columnas de la tabla, el tipo de datos de cada columna y si cada
una de las columnas admite valores NULL.
CREATE TABLE Curso (
idCurso CHAR (4) NOT NULL,
nombreCurso VARCHAR (50) NOT NULL,
numVacantes SMALLINT NOT NULL,
numMatriculados SMALLINT NOT NULL,
profesor VARCHAR (50) NULL,
precioCurso MONEY NOT NULL)
Para verificar la definicin de la tabla ejecute la siguiente instruccin:
SP_help Curso
go
1. MODIFICACIN DE TABLAS ( ALTER TABLE )
En una tabla podemos aadir nuevas columnas, eliminar columnas, cambiar las propiedades de una columna, aadir eliminar
restricciones
Sintaxis parcial:
ALTER TABLE nombre_Tabla
ADD nombre_columna propiedades_columna
| DROP COLUMN nombre_columna
| ALTER COLUMN nombre_columna

| ADD CONSTRAINT nombre_restriccin
PRIMARY KEY | UNIQUE | FOREIGN KEY
| DEFAULT | CHECK
| DROP CONSTRAINT nombre_restriccin

- ADD: Permite aadir una nueva columna a la tabla
- DROP COLUMN: Se usa para eliminar una columna
- ALTER COLUMN: Permite modificar la definicin de una columna
- ADD CONSTRAINT: Permite aadir una restriccin PRIMARY KEY, UNIQUE, FOREIGN KEY, DEFAULT CHECK a la
definicin de una tabla
- DROP CONSTRAINT: Se usa para eliminar una restriccin
Ejemplo:
A continuacin crearemos una tabla de prueba, en la cual agregaremos una nueva columna
1. Creamos la tabla
CREATE TABLE TablaPrueba (
columna1 INT NOT NULL,
columna2 CHAR (10) NOT NULL,
columna3 DATETIME NULL)
2. Le aadimos la columna de tipo MONEY con la propiedad NULL
ALTER TABLE TablaPrueba
ADD columna4 MONEY NULL
go
3. Revisamos la nueva definicin de la tabal Tabla_Prueba
sp_help TablaPrueba
go
2. BORRADO DE TABLAS
La sentencia que borra una tabla es la siguiente:
Sintaxis:
DROP TABLE Nombre_Tabla
Ejemplo:
Eliminar la Tabla Tabla_Prueba
DROP TABLE TablaPrueba
3. INTEGRIDAD DE DATOS
Un paso importante en el diseo de una base de datos es decidir la mejor forma de implementar la integridad de los datos. La
integridad de los datos hace referencia a la coherencia y la precisin de los datos que estn almacenados en una base de
datos. Los diferentes tipos de integridad de datos son los siguientes.

Ing. Elvis Guillermo Huarcaya Quispe Pg.

75
Gestin de informtica II
Integridad de dominio:
La integridad de dominio (o columna) especifica un conjunto de valores de datos que son vlidos para una columna y determina
si se permiten valores nulos. La integridad de dominio se suele implementar mediante el uso de comprobaciones de validez y,
tambin, mediante la restriccin del tipo de datos, el formato o el intervalo de los valores posibles permitidos en una columna.
Integridad de entidad:
La integridad de entidad (o tabla) requiere que todas las filas de una tabla tengan un identificador exclusivo, conocido como
clave principal. El que se pueda modificar el valor de la clave principal o eliminar la fila entera depende del nivel de integridad
requerido entre la clave principal y cualquier otra tabla.
Integridad referencial:
La integridad referencial asegura que siempre se mantienen las relaciones entre las claves principales (en la tabla a la que se
hace referencia) y las claves externas (en las tablas que hacen referencia). No se puede eliminar una fila de una tabla a la que
se hace referencia, ni se puede modificar la clave principal, si una clave externa hace referencia a la fila, salvo que se permita la
accin en cascada. Puede definir relaciones de integridad referencial dentro de la misma tabla o entre tablas diferentes
4. LAS RESTRICCIONES ( CONSTRAINTS )
Las restricciones son un mtodo declarativo de definicin de la integridad de datos ya que ellas definen al momento de crear la
tabla o al momento de modificar la definicin de la tabla
La restriccin forma parte de la definicin de un tabla
TIPOS DE RESTRICCIONES
Garantizan que los datos ingresados en las columnas sean valore vlidos y que se mantengan la relaciones entre las tablas
Creacin de la clave primaria (PK)
Sintaxis:
ALTER TABLE nombre_Tabla
ADD CONSTRAINT PK_nombre_tabla
PRIMARY KEY (columnaX, columnaP, )
Nota: Se utiliza la clusula CONSTRAINT en las instrucciones ALTER TABLE y CREATE TABLE para crear o
eliminar ndices

- PK_nombre_tabla: Es el nombre de la restriccin clave primaria. Se recomienda definir como clave primaria, el
nombre de la tabla con el prefijo PK_ . Si no se especifica el nombre de la restriccin, SQL Server le asigna un
nombre.
- ColumnaX, columnaP, : Es la columna combinacin de columnas que se define como clave primaria. Las
columnas involucradas no deben permitir valores nulos, y adems no deben tener valores duplicados. En el
caso de una combinacin de columnas, la combinacin vista como una unidad no debe tener valores
duplicados.
Ejercicio:
Crear en la tabla CURSO definir la columna incurso como clave primaria

ALTER TABLE Curso
ADD CONSTRAINT PK_curso
PRIMARY KEY(idCurso)
Creacin de una clave primaria compuesta
Ejemplo:
En la tabla MATRICULA la clave primaria est conformada por la columna idCurso e idAlumno, ya que para identificar una
matrcula se necesita conocer al alumno matriculado y en qu curso se ha matriculado
ALTER TABLE Matricula
ADD CONSTRAINT PK_Matricula
PRIMARY KEY(idCurso, idalumno)
Tipo de integridad Tipo de restriccin Descripcin
Dominio
DEFAULT Establece el valor predeterminado para una columna cuando al
insertar una fila no se especifica el valor para dicha columna
CHECK Especifica los valores de los datos que se aceptan en una columna

REFERENTIAL Especifica los valores de datos que se aceptan como actualizacin
en funcin de los valores de una columna de otra tabla.
Entidad
PRIMARY KEY Identifica de forma exclusiva cada una de las filas; asegura que los
usuarios no escriban valores duplicados y que se cree un ndice para
aumentar el rendimiento. No se permiten valores nulos.
UNIQUE Impide la duplicacin de claves alternativas (no principales) y
asegura que se cree un ndice para aumentar el rendimiento. Se
permiten valores nulos.
Referencial
FOREIGN KEY Define una columna o combinacin de columnas cuyos valores
coinciden con la clave
CHECK Especifica los valores de los datos que se aceptan en una columna
en funcin de los valores de otras columnas de la misma tabla.

Ing. Elvis Guillermo Huarcaya Quispe Pg.

76
Gestin de informtica II
Go
Ejercicio:
Escriba las instrucciones para crear la clave primaria de las tablas Alumno y Pago, notar de que la clave primaria de la tabla
pago est compuesta por tres columnas
Creacin de la clave fornea
Sintaxis:
ALTER TABLE nombre_Tabla
ADD CONSTRAINT FK_nombre_tabla_tabla_referenciada
FOREIGN KEY (columnaX, columnaP, )
REFERENCES tabla_referenciada
- FK_nombre_tabla_tabla_referenciada: Es el nombre de la restriccin, clave fornea.
- ColumnaX, columnaP, : Es la columna combinacin de columnas que se define como clave fornea.
- tabla referenciada: Es el nombre de la tabla primaria con la que se relaciona la tabla secundaria que tiene la
clave fornea.
Ejemplo:
Creacin de clave fornea en la tabla MATRCULA que referencia a la tabla CURSO
ALTER TABLE Matricula
ADD CONSTRAINT FK_Matricula_Curso
FOREIGN KEY (idCurso)
REFERENCES Curso
go
Ejercicio:
- Creacin de la clave fornea en la tabla MATRICULA que referencia a la tabla ALUMNO
Creacin de restriccin valor no duplicado (UNIQUE)
Sintaxis:
ALTER TABLE nombre_Tabla
ADD CONSTRAINT U_nombre_tabla_nombre_columna
UNIQUE (columnaX, columnaP, )
- U_nombre_tabla_nombre_columna: Es el nombre de la restriccin valor no duplicado o NIQUE.
- ColumnaX, columnaP, : Es la columna combinacin de columnas a la que se le aplica la restriccin.
Ejemplo:
Creacin de restriccin UNIQUE para la columna nombreCurso en la tabla CURSO
ALTER TABLE CURSO
ADD CONSTRAINT U_Curso_nombreCurso
UNIQUE (nombreCurso)
go
Creacin de valor predeterminado (DEFAULT)
Sintaxis:
ALTER TABLE nombre_Tabla
ADD CONSTRAINT DF_nombre_tabla_nombre_columna
DEFAULT valor_predeterminado FOR columnaX

- DF_nombre_tabla_nombre_columna: Es el nombre de la restriccin valor predeterminado DEFAULT..
- Valor_predeterminado: Es el valor que se almacena en columnaX cuando al insertar una fila no se especifica
el valor para esa columna
- ColumnaX: Es la columna a la que se le aplica la restriccin.

Ejemplo:
Creacin de restriccin DEFAULT para la columna numVacantes en la tabla CURSO

ALTER TABLE CURSO
ADD CONSTRAINT DF_Curso_numVacantes
DEFAULT 15 FOR numVacantes
go

Creacin de regla de validacin (CHECK)

Sintaxis:
ALTER TABLE nombre_Tabla
ADD CONSTRAINT CK_nombre_tabla_nombre_columna
CHECK (condicion)

- CK_nombre_tabla_nombre_columna: Es el nombre de la restriccin regla de validacin CHECK.
- condicin: Es la expresin que determina cmo debe ser el valor a ingresar en la columna afectada por la
restriccin

Ing. Elvis Guillermo Huarcaya Quispe Pg.

77
Gestin de informtica II
Ejemplo:
Creacin de restriccin CHECK para la columna precioCurso de la tabla CURSO

ALTER TABLE CURSO
ADD CONSTRAINT CK_Curso_precioCurso
CHECK (precioCurso >0)
Go

Borrado de ndices (DROP INDEX)
La sentencia DROP INDEX sirve para eliminar un ndice de una tabla. Se elimina el ndice pero no las columnas que lo
forman.
Sintaxis:
DROP INDEX nombre_tabla.nombre_indice
Ejemplo:
DROP INDEX curso.pk_curso

EJEMPLOS PRCTICOS DEL USO DEL DDL

----------------------------------
-- Creacin de la base de datos
----------------------------------
USE master
go

CREATE DATABASE MarketWANKA
go

USE MarketWANKA
go

----------------------------
-- Creacin de las tablas
----------------------------

CREATE TABLE GUIA_DETALLE (
IdGuia int NOT NULL,
IdProducto int NOT NULL,
PrecioVenta money NOT NULL,
Cantidad smallint NOT NULL )
go


ALTER TABLE GUIA_DETALLE
ADD PRIMARY KEY (IdGuia, IdProducto)
go

CREATE TABLE ORDEN_DETALLE (
IdOrden int NOT NULL,
IdProducto int NOT NULL,
PrecioCompra money NOT NULL,
CantidadSolicitada smallint NOT NULL,
CantidadRecibida smallint NULL,
Estado varchar(10) NULL )
go

ALTER TABLE ORDEN_DETALLE
ADD PRIMARY KEY (IdOrden, IdProducto)
go

CREATE TABLE PRODUCTO (
IdProducto int IDENTITY,
IdCategoria int NOT NULL,
IdProveedor int NOT NULL,
Nombre varchar(40) NOT NULL,
UnidadMedida varchar(30) NULL,
PrecioProveedor money NULL,
StockActual smallint NULL,

Ing. Elvis Guillermo Huarcaya Quispe Pg.

78
Gestin de informtica II
StockMinimo smallint NULL,
Descontinuado bit )
go

ALTER TABLE PRODUCTO
ADD PRIMARY KEY (IdProducto)
go

ALTER TABLE PRODUCTO
ADD UNIQUE (Nombre, UnidadMedida)
Go

CREATE TABLE PROVEEDOR (
IdProveedor int IDENTITY,
Nombre varchar(40) NOT NULL,
Representante varchar(30) NULL,
Direccion varchar(60) NULL,
Ciudad varchar(15) NULL,
Departamento varchar(15) NULL,
CodigoPostal varchar(15) NULL,
Telefono varchar(15) NULL,
Fax varchar(15) NULL )
go

ALTER TABLE PROVEEDOR
ADD PRIMARY KEY (IdProveedor)
go

CREATE TABLE CATEGORIA (
IdCategoria int IDENTITY,
Categoria varchar(20) NOT NULL,
Descripcion varchar(40) NULL )
go

ALTER TABLE CATEGORIA
ADD PRIMARY KEY (IdCategoria)
go

ALTER TABLE CATEGORIA
ADD UNIQUE (Categoria)
go

CREATE TABLE GUIA (
IdGuia int NOT NULL,
IdLocal int NOT NULL,
FechaSalida datetime NOT NULL,
Transportista varchar(30) NOT NULL )
go

ALTER TABLE GUIA
ADD PRIMARY KEY (IdGuia)
go

CREATE TABLE LOCAL (
IdLocal int NOT NULL,
Direccion varchar(60) NULL,
Distrito varchar(20) NULL,
Telefono varchar(15) NULL,
Fax varchar(15) NULL )
go

ALTER TABLE LOCAL
ADD PRIMARY KEY (IdLocal)
go

CREATE TABLE ORDEN (
IdOrden int NOT NULL,

Ing. Elvis Guillermo Huarcaya Quispe Pg.

79
Gestin de informtica II
FechaOrden datetime NOT NULL,
FechaEntrada datetime NULL )
go

ALTER TABLE ORDEN
ADD PRIMARY KEY (IdOrden)
go


ALTER TABLE GUIA_DETALLE
ADD FOREIGN KEY (IdProducto)
REFERENCES PRODUCTO
go

ALTER TABLE GUIA_DETALLE
ADD FOREIGN KEY (IdGuia)
REFERENCES GUIA
go

ALTER TABLE ORDEN_DETALLE
ADD FOREIGN KEY (IdOrden)
REFERENCES ORDEN
go

ALTER TABLE ORDEN_DETALLE
ADD FOREIGN KEY (IdProducto)
REFERENCES PRODUCTO
go

ALTER TABLE PRODUCTO
ADD FOREIGN KEY (IdProveedor)
REFERENCES PROVEEDOR
go

ALTER TABLE PRODUCTO
ADD FOREIGN KEY (IdCategoria)
REFERENCES CATEGORIA
go

ALTER TABLE GUIA
ADD FOREIGN KEY (IdLocal)
REFERENCES LOCAL
go
CASO:
Supermercados WANKA S.A.C. es una empresa que se dedica a la comercializacin al detalle de diversos productos de consumo
masivo. Cuenta con una cadena de locales de autoservicio en distintas zonas del Valle del Mantaro, y planea expandir su influencia a
otras zonas de Jauja y Tarma.
Todas las reas de la empresa y sus diferentes locales se interconectarn mediante una red. Cada una de las reas tiene
requerimientos especficos y se pretende resolverlos utilizando aplicaciones ofimticas.
Para efectos del desarrollo del presente caso, delimitaremos el rea de estudio a todas las operaciones que llevan a cabo en el
Alamacn Central, y que tienen relacin con l.
La base de datos que se disear registrar todas las operaciones que se ejecutan en el Almacn Central, y estar habilitada para
que todas las reas de la organizacin puedan utilizarla
Almacn Central podr controlar las entradas y salidas de productos, y las dems reas podrn efectuar consultas a las bases de
datos
Procesos principales en el Almacn Central de Supermercados WANKA S.A.C.
Reposicin de mercadera en un Local
1. Si en el Local X, existen productos que necesitan reponerse, el responsable del inventario genera un Pedido en el que
consigna los siguientes datos:
- Nmero del Pedido
- Fecha del Pedido
- Cdigo del Producto
- Descripcin del Producto
- Unidad de Medida
- Cantidad Solicitada
- Cantidad de tems solicitados
Nota de Pedido No. 06845-03

Ing. Elvis Guillermo Huarcaya Quispe Pg.

80
Gestin de informtica II
Fecha: 27 diciembre 2005

Item Cdigo Descripcin Unidad Cantidad
1 P00003 CARAMELOS FRUTAS ARCOR Pqte. 520gr 300
2 P00007 CHOCOLATE DOA PEPA FIELD Pqte. X 6 Unidades 1000
3 P00010 WAFER CHOCOLATE FIELD Pqte. X 9 Unidades 500
4 P00012 CHOCOLATE MOSTRO FIELD Pqte. X 6 Unidades 500
5 P00015 CHOCOLATE BARRA MILK DOVE Unidad 100
6 P00016 CHOCOLATE BARRA DARK DOVE Unidad 100
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
19
20

Total de tems Solicitados: 06

Firma y Sello Autorizacin
El Nmero del Pedido es un correlativo seguido de un guin separador y dos dgitos adicionales. Estos ltimos identifican al
Local que hace el Pedido
2. El Pedido es enviado al Almacn Central
Despacho de mercadera desde el Almacn hasta un Local
3. El Almacn Central recibe la solicitud de mercadera del Local X
4. El Almacn Central verifica el stock de los productos solicitados consultando a su Control de Inventarios. Actualmente el
Almacn Central controla el inventario utilizando una lista de Excel en la que se registra los siguientes datos:
- Cdigo de la Categora del Producto
- Cdigo del Producto
- Descripcin del Producto
- Unidad de Medida
- Precio del Proveedor
- Precio de Venta al Pblico
- Stock Actual
- Stock Mnimo
- Estado del Producto (si descontinuado o no)
- Nombre del Proveedor
5. El Almacn Central verifica el stock de los productos, y genera una Gua de Remisin en la que considera solo los productos
que tienen el nivel de inventario adecuado para cumplir con los requerimientos del local X. En la Gua de Remisin consigna
los siguientes datos:
- Nmero de la Gua de Remisin
- Nmero del Pedido
- Local de Destino
- Fecha de Salida
- Nombre del Transportista
- Cdigo del Producto
- Descripcin del Producto
- Unidad de Medida
- Cantidad despachada
- Precio de venta al pblico (PVP)
- Cantidad de tems despachados
6. Si el Local X no recibe alguno de los productos solicitados debe reiterar su solicitud generando un nuevo Pedido con los
productos no recibidos
Gua de Remisin
No. Gua 001-08937
No. Pedido 06845-03
Fecha 28 diciembre 2005
Transportista Aliaga Vidal, Jeremas Local 03

Item Cdigo Descripcin Unidad Cantidad
1 P00003 CARAMELOS FRUTAS ARCOR Pqte. 520gr 300
2 P00007 CHOCOLATE DOA PEPA FIELD Pqte. X 6 Unidades 1000
3 P00010 WAFER CHOCOLATE FIELD Pqte. X 9 Unidades 500
4 P00012 CHOCOLATE MOSTRO FIELD Pqte. X 6 Unidades 500


.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

Ing. Elvis Guillermo Huarcaya Quispe Pg.

81
Gestin de informtica II
19
20

Total de tems Despachados: 04

Firma y Sello Autorizacin
Solicitud de mercadera a un Proveedor
7. Cuando el Almacn Central detecta un bajo nivel de Inventario de algunos productos del Proveedor Z, genera una Orden de
Compra consignando los siguientes datos:
- Nmero de la Orden de Compra
- Fecha de la Orden
- Nombre del Proveedor
- Cdigo del Producto
- Descripcin del Producto
- Unidad de Medida
- Precio del Proveedor
- Cantidad a Solicitar
Orden de Compra
No. 001-02787
Fecha 28 diciembre 2005
Proveedor Golosinas y antojos Fecha Ingreso

Item Cdigo Descripcin Unidad
Precio
Proveedor
Precio
Compra
Cantidad
solicitada
Cantidad
Recibida
Estado
1 P00013
CHOCOLATE
BARRA MILKY
WAY
Barra
2.15
onzas
0.30 2000

2 P00015
CHOCOLATE
BARRA MILK
DOVE
Unidad 1.30 5000

3 P00016
CHOCOLATE
BARRA DARK
DOVE
Unidad 1.30 5000


.
.
.
.
.
.
.
.
.











.
.
.



.
.
.
19
20

Total de tems Solicitados: 03

Firma y Sello Autorizacin
8. El Almacn Central le enva la Orden de Compra al Departamento de Compras
9. Compras se comunica con el Proveedor para verificar y negociar los precios
10. Compras le enva al Proveedor la Orden de Compra consignando en ella el Precio de Compra del Producto
Orden de Compra
No. 001-02787
Fecha 28 diciembre 2005
Proveedor Golosinas y antojos Fecha Ingreso

Item Cdigo Descripcin Unidad
Precio
Proveedor
Precio
Compra
Cantidad
solicitada
Cantidad
Recibida
Estado
1 P00013
CHOCOLATE
BARRA MILKY
WAY
Barra
2.15
onzas
0.30 0.80 2000

2 P00015
CHOCOLATE
BARRA MILK
DOVE
Unidad 1.30 1.25 5000

3 P00016
CHOCOLATE
BARRA DARK
DOVE
Unidad 1.30 1.25 5000


.
.
.
.
.
.
.
.
.







.
.
.



.
.
.

Ing. Elvis Guillermo Huarcaya Quispe Pg.

82
Gestin de informtica II
19
20

Total de tems Solicitados: 03

Firma y Sello Autorizacin
Recepcin en el Almacn Central de la mercadera enviada por el proveedor
11. El Proveedor despacha todo o parte de lo solicitado segn lo acordado con Supermecados WANKA S.A.C. dependiendo de su
disponibilidad
12. El Almacn central recibe lo despachado por el Proveedor y actualiza la Orden de Compra registrando la siguiente informacin:
- Fecha de ingreso de los productos
- Cantidad recibida
- Estado del Producto en la Orden de Compra
Orden de Compra
No. 001-02787
Fecha 28 diciembre 2005
Proveedor Golosinas y antojos Fecha Ingreso

Item Cdigo Descripcin Unidad
Precio
Proveedor
Precio
Compra
Cantidad
solicitada
Cantidad
Recibida
Estado
1 P00013
CHOCOLATE
BARRA MILKY
WAY
Barra
2.15
onzas
0.30 0.80 2000 0 Agotado
2 P00015
CHOCOLATE
BARRA MILK
DOVE
Unidad 1.30 1.25 5000 5000 Entregado
3 P00016
CHOCOLATE
BARRA DARK
DOVE
Unidad 1.30 1.25 5000 5000 Entregado

.
.
.
.
.
.
.
.
.







.
.
.



.
.
.
19
20

Total de tems Solicitados: 03

Firma y Sello Autorizacin
13. El Almacn actualiza la siguiente informacin en su lista Excel para el Control de Inventarios:
- Stock Actual del Producto
- Precio del Proveedor
14. Almacn enva al Departamento de Compras, la Orden de Compras, y la Gua y Factura del Proveedor
Se desea:
Disear una base de datos que permita solucionar los requerimientos de informacin del Almacn Central

EL LENGUAJE DE MANIPULACIN DE DATOS
(DML)

LA SENTENCIA SELECT
LA CLUSULA WHERE
LA CLUSULA GROUP BY
LAS CLASULA HAVING
LA CLUSULA ORDER BY
LA SENTENCIA INSERT
LA SENTENCIA UPDATE
LA SENTENCIA DELETE

El lenguaje de Manipulacin de Datos permite definir y modificar la estructura de un esquema

1. LA SENTENCIA SELECT
Se emplea en las consultas de seleccin y se utilizan para indicar al motor de datos que devuelva informacin de las bases de
datos, esta informacin es devuelta en forma de conjunto de registros que se pueden almacenar en un objeto recordset. Este
conjunto de registros es modificable

Sintaxis bsica:

SELECT * | lista_columnas

Ing. Elvis Guillermo Huarcaya Quispe Pg.

83
Gestin de informtica II
FROM nombre_tabla
[WHERE condicin_filas]

- lista_columnas: es la lista de columnas a mostrar en el resultado de la consulta. Si se especifica * se mostrarn todas las
columnas de la tabla

- condicin_filas: Es una expresin lgica que indica que las filas a mostrar son aquellas para las que el valor de la
expresin es verdadero

A continuacin se muestra la sintaxis completa:

Sintaxis completa:

SELECT [ ALL | DISTINCT] [ TOP n [ PERCENT ] [WITH TIES] ] lista_columnas
[ INTO nueva_tabla ] FROM tabla_origen
[ WHERE condicin_filas ]
[ GROUP BY [ ALL] expresin_agrupar_por ]
[ WITH CUBE | ROLLUP ]
[ HAVING condicin_grupos ]
[ ORDER BY nombre_columna [ ASC | DESC ], ]
[ COMPUTE AVG | COUNT | MAX | MIN | SUM (expresin) ]

Lectura de todos los datos de una tabla

Ejemplo:

SELECT * FROM Producto


Lectura de campos o columnas seleccionadas de una tabla

Ejemplo:

SELECT idProducto, nombre, unidadMedida, precioProveedor
FROM Producto




Ing. Elvis Guillermo Huarcaya Quispe Pg.

84
Gestin de informtica II
Definiendo alias para los nombres de columna
Define ttulos alternativos para los nombres de la columna. Si el alias es una frase debe escribirse entre comillas.

Ejemplo:

SELECT idProducto AS Cdigo,
nombre AS Descripcin,
unidadMedida AS Unidad,
precioProveedor AS 'Precio unitario'
FROM Producto

Definiendo columnas computadas
Una columna computada es una columna que se muestra en el resultado de una consulta, pero que no existe fsicamente
como tal en la tabla. La columna computada muestra el resultado de ejecutar alguna operacin con las columnas de la tabla


Ejemplo:

SELECT idProducto, nombre, precioProveedor,
'Precio con descuento' = precioProveedor * 0.85
FROM Producto



Concatenando cadenas

Ejemplo:

SELECT nombre, Ubicacin = ciudad + ' - ' + departamento
FROM Proveedor



2. LA CLUSULA WHERE
En la clusula WHERE, condicin_filas es una expresin lgica que establece la condicin que deben cumplir las filas a
mostrar en el resultado de la consulta. Para construir la expresin lgica puede emplear operadores lgicos SQL como LIKE,
BETWEEN e IN.


Tipo de filtro Condicin de bsqueda
Operadores de comparacin =, >, <, >=, <= y <>
Comparaciones de cadenas LIKE y NOT LIKE
Operadores lgicos: combinacin de condiciones AND, OR ,NOT
Intervalo de valores BETWEEN y NOT BETWEEN
Listas de valores IN y NOT IN

Ing. Elvis Guillermo Huarcaya Quispe Pg.

85
Gestin de informtica II
Valores desconocidos IS NULL e IS NOT NULL

Al especificar filas con la clusula WHERE, tenga en cuenta los siguientes hechos e instrucciones:

- Utilice comillas simples para todos los datos de tipo char, nchar, varchar, nvarchar, text, datetime y smalldatetime.
- Utilice una clusula WHERE para limitar el nmero de filas que se devuelven al utilizar la instruccin SELECT.
2.1. Operadores de comparacin:

Ejemplo:
Mostrar la lista de los productos de la categora de higiene personal, cuyo cdigo de categora es 3

SELECT idProducto, nombre
FROM Producto
WHERE idCategoria = 3



Ejemplo:
Mostrar la lista de las categoras de los productos con excepcin de la categora de Licores y gaseosas, cuyo cdigo es 5

SELECT idCategoria, categoria
FROM Categoria
WHERE idCategoria <> 5



Ejemplo:
Mostrar la lista de los productos cuyo precio es menor a 5.00

SELECT idCategoria, nombre, precioProveedor
FROM Producto
WHERE precioProveedor < 5



Ejemplo:
Mostrar una lista de los productos cuyos nombres se encuentran despus o en la posicin de FRUNA SURTIDA
DONOFRIO

SELECT idproducto, Nombre
FROM Producto

Ing. Elvis Guillermo Huarcaya Quispe Pg.

86
Gestin de informtica II
WHERE nombre >= 'FRUNA SURTIDA DONOFRIO'



Ejemplo:
Mostrar las guas cuyas fechas de salida sean anteriores al 30 de marzo del 2006

SELECT idGuia, fechaSalida
FROM Guia
WHERE fechaSalida <= '30/03/2006'

Nota: al ejecutar la consulta ntese de que la guas muestran con una fecha de salida anterior al 30/03/2006, pero las
guas del 30/03/2006 no se muestran, esto es debido a que la fecha de salida de tipo fecha-hora, SQL asume por defecto
30/03/2006 00:00:00

Uso de la funcin CONVERT() con datos de tipo fecha-hora

Sintaxis:
CONVERT ( char ( n), expresin_fecha, estilo )

Convierte expresin_fecha a una cadena de formato de fecha. La cadena tiene longitud n, y el formato del dato se
establece con el valor de estilo

- char (n): Es el tipo y la longitud de la cadena con fomato de fecha resultante
- expresin_fecha: Representa la fecha cuyo formato de presentacin se desea cambiar
- estilo: indica el formato de presentacin de lacadena resultante

El siguiente formato muestra algunos valores de estilo para la funcin CONVERT

Ao con 2 dgitos Ao con 4 dgitos Formato Salida
1 101 USA mm/dd/aa
2 102 ANSI aa.mm.dd
3 103 Britnico/
Francs
dd/mm/aa
4 104 Alemn dd.mm.aa
5 105 Italiano dd-mm-aa
6 106 Dd mes aa
7 107 Mes dd, aa

Ejemplo:
Se desea obtener el listado de las guas cuya fecha de salida es anterior o igual al 30 de marzo del 2006

SELECT idGuia, fechaSalida
FROM Guia
WHERE CONVERT( CHAR(10), fechaSalida, 102 ) <= '2006.03.30'
ORDER BY fechaSalida

2.2. Comparaciones de cadena

El operador LIKE

Sintaxis:
SELECT * | lista_columnas
FROM nombre_tabla
WHERE columna LIKE expresin_cadena_a_buscar

- columna: es la olumna en la que se busca la cadena de caracteres
- expresin_cadena_a_buscar: Indica como debe ser la cadena que se est buscando en columna. La
expresin admite comodines


Ing. Elvis Guillermo Huarcaya Quispe Pg.

87
Gestin de informtica II
Comodines:

Comodn Descripcin
% Indica que en la posicin del comodn puede ir cualquier cadena de caracteres, incluso una cadena
nula
- Indica que en la posicin del comodn puede ir cualquier carcter no nulo
[abc] Establece el conjunto de caracteres vlidos en la posicin del comodn
[a-b] Establece el rango de caracteres vlidos en la posicin del comodn
^ Excluir. Indica que el carcter, conjunto de caracteres, rango de caracteres que sigue al smbolo ^
no debe figurar en el resultado de la consulta.

Ejemplo:
Se desea obtener la relacin de los productos que contienen la cadena gloria en su nombre
SELECT idProducto, nombre
FROM Producto
WHERE nombre LIKE 'gloria'

El resultado de este cdigo mostrar 0 filas, dado que se especifica que el nombre sea exactamente la cadena
gloria.

SELECT idProducto, nombre
FROM Producto
WHERE nombre LIKE '%gloria%

Este cdigo nos muestra fila como resultado dado que se indica que puede empezar con cualquier nombre
seguido de la palabra gloria, y luego puede ser cualquier otra cadena de caracteres

Ejemplo:
Mostrar la lista de productos que contengan la palabra blanc antes del ltimo carcter
SELECT idProducto, nombre
FROM Producto
WHERE nombre LIKE '%blanc_'



Ejemplo:
Mostrar la lista de productos que empiecen con las letras p, d, f
SELECT idProducto, nombre
FROM Producto
WHERE nombre LIKE '[pdf]%'
ORDER BY nombre


Ejemplo:
Mostrar la lista de productos que empiecen con el caracter d hasta el carcter p
SELECT idProducto, nombre
FROM Producto
WHERE nombre LIKE '[d-p]%'
ORDER BY nombre
go

Ejemplo:
Mostrar la lista de productos donde el primer carcter de la columna nombre puede ser cualquiera menos los
caracteres : m, s, j
SELECT idProducto, nombre
FROM Producto
WHERE nombre LIKE '[^msjg]%'
ORDER BY nombre
Go

2.3. Operadores Lgicos: AND, OR, NOT

Ing. Elvis Guillermo Huarcaya Quispe Pg.

88
Gestin de informtica II

2.4. Intervalo de valores BETWEEN y NOT BETWEEN
El Operador BETWEEN
Permite ejecutar consultas que ejecutan bsquedas basadas en el rango de valores numricos, cadenas, o valores de
fecha

Sintaxis:
SELECT * | lista_columnas
FROM nombre_tabla
WHERE columna BETWEEN valor_inicial AND valor_final

- Columna, es la columna en la que se busca segn el rango especificado por valor_inicial y valor_final
- Valor_inicial, vallor_final, establecen los lmites del rango de valores en el que se basa la bsqueda

Ejemplo: Mostrar la lista de PRODUCTOS donde el precio del Proveedor est entre 13.00 y 17.00 Los campos a
mostrar deben ser el cdigo del producto, nombre y precio del proveedor; donde el precio del proveedor.

SELECT idProducto, nombre, precioProveedor
FROM Producto
WHERE precioProveedor BETWEEN 13.76 AND 17.00
ORDER BY precioProveedor





Ejemplo: Mostrar la lista de PRODUCTOS
cuyos nombres se encuentren en el rango que va desde el carcter C hasta el carcter F. Los campos a mostrar
deben ser el cdigo del producto, nombre y precio del proveedor; donde el precio del proveedor.

SELECT idProducto, nombre, precioProveedor
FROM Producto
WHERE nombre BETWEEN 'C' AND 'G'
ORDER BY nombre

Ejemplo: Mostrar la lista de PRODUCTOS cuyos nombres se encuentren en el rango que va desde el carcter C hasta
el carcter F. Los campos a mostrar deben ser el cdigo del producto, nombre y precio del proveedor; donde el precio
del proveedor.

SELECT idProducto, nombre, precioProveedor
FROM Producto
WHERE nombre BETWEEN 'C' AND 'G'
ORDER BY nombre

Ejemplo: Mostrar la GUAS que fueron emitidas respecto a la fecha de salida desde el 20 de marzo del 2006 al 23 de
marzo del 2006

SELECT idGuia, fechaSalida
FROM Guia
WHERE fechaSalida BETWEEN '20/03/2006' AND '23/03/2006'
ORDER BY fechaSalida

Esta instruccin mostrar desde 20/03/2006 hasta el 22/03/2006, dado que SQL por defecto considera 23/03/2006
00:00:00 lo cual cualquier gua emitida el das 23 despus de las 00:00:00 estara fuera del rango

Para incluir el da 23 escribiramos la siguiente consulta:

SELECT idGuia, fechaSalida
FROM Guia
WHERE fechaSalida BETWEEN '20/03/2006' AND '23/03/2006 23:59:59.999'
ORDER BY fechaSalida

2.5. Lista de valores IN y NOT IN
El operador IN
El operador IN permite ejecutar consultas que ejecutan bsquedas basadas en conjuntos de valores numricos, valores
de cadena, valores de fecha.


Ing. Elvis Guillermo Huarcaya Quispe Pg.

89
Gestin de informtica II
Sintaxis:
SELECT * | lista_columnas
FROM nombre_tabla
WHERE columna [NOT ] IN (conjunto_de_valores)

- columna, es la que se busca segn el conjunto de valores especificado en conjunto_de_valores
- conjunto_de_valores, establece el conjunto de valores en el que se basa la bsqueda

Ejemplo: Mostrar el idProducto, nombre, idProveedor de la tabla PRODUCTO cuyos cdigos de Proveedores sean 11, 7
y 13

SELECT idProducto, nombre, idProveedor
FROM Producto
WHERE idProveedor IN ( 11, 7, 13)
ORDER BY idProveedor

2.6. Valores desconocidos IS NULL e IS NOT NULL
Un valor NULL indica que el valor es desconocido, no aplicable o simplemente se registrar posteriormente.

Ejemplo: Crearemos una tabla EMPLEADO, lo cual contendr una columna NULL, y en base a esta tabla realizaremos
una consulta

CREATE TABLE Empleado(
IdEmpleado int PRIMARY KEY,
Apellido varchar(30) not null,
HaberBasico money not null,
PorcentajeComision decimal(3,1) null )
go

INSERT INTO Empleado
VALUES (1, 'CASTRO ARENAS', 1200, 5)
INSERT INTO Empleado
VALUES(2, 'LUNA ESPEJO', 1000, 10)
INSERT INTO Empleado
VALUES(3, 'SOTO BUENO', 1400, NULL)
INSERT INTO Empleado
VALUES(4, 'MARQUEZ ARIZAGA', 1500, NULL)
INSERT INTO Empleado
VALUES(5, 'DAVILA SANCHEZ', 1200, 7.5)
go

Realizando una consulta que muestre todos los campos de la tabla EMPLEADO que tengan un porcentaje de comisin

SELECT idEmpleado, apellido, haberBasico, porcentajeComision
FROM Empleado
WHERE porcentajeComision IS NOT NULL


3. LA CLUSULA GROUP BY
3.1 GROUP BY
La clusula GROUP BY se utiliza para agrupar las filas en base a determinado criterio, y luego ejecutar una operacin que
resume un atributo para cada uno de los grupos as formados. Por ejemplo se puede agrupar las facturas por cliente, y
luego calcular el monto total facturado de cada cliente.
Sintaxis:
SELECT lista_columnas, funcin_agregacin ( columna),
funcin_agregacin ( columna),
FROM nombre_tabla
[ WHERE condicin_filas]
GROUP BY lista_columnas
[HAVING condicin_grupos]
- Las columnas presentes en lista_columnas de la clusula GROUP BY deben necesariamente estar
presentes en la lista_columnas de SELECT
- Cualquier columna presente en SELECT, y que no se encuentre en la lista_columnas de GROUP BY debe
estar afectada por una funcin_agregacin
- condicin_grupos en la clusula HAVING permite establecer una expresin lgica que los grupos a mostrar
en el resultado son aquellos para los que el valor de la expresin es verdadero

Ing. Elvis Guillermo Huarcaya Quispe Pg.

90
Gestin de informtica II
- Una consulta GROUP BY solo entrega una fila por cada grupo generado. Esta fila muestra el resultado de la
funcin_agregacin aplicada sobre el grupo. No muestra el contenido del grupo
- Cuando se utiliza GROUP BY sobre una columna que contiene valores NULL, stos se procesan como un
grupo
Uso de la clusula GROUP BY
a) Cantidad de productos registrados para cada categora
SELECT idCategoria, count(idProducto) as 'No Productos'
FROM PRODUCTO
GROUP BY idCategoria

b) Cantidad de productos por proveedor para las categoras 3 y 4
SELECT idCategoria, idProveedor,count(idProducto) as N_Productos
FROM PRODUCTO
where idCategoria IN (3,4)
group by idCategoria, idProveedor
order by idCategoria


c) Monto total despachado por producto
SELECT idproducto, SUM(precioVenta*cantidad)
FROM GUIA_DETALLE
GROUP BY Idproducto
d) Productos cuyo monto total despachado es mayor a 15,000
SELECT idproducto, SUM(precioVenta*cantidad)AS 'Monto Total'
FROM GUIA_DETALLE
GROUP BY IdProducto
HAVING SUM(precioVenta*cantidad)>=15000



e) Stock Actual total de Productos registrados por cada categora, donde el stock Actual total es mayor o
igual a 5,000
SELECT idCategoria, SUM(stockActual)AS 'Stock Actual Total'
FROM PRODUCTO
GROUP BY IdCategoria
HAVING SUM(stockActual)>=5000

Ing. Elvis Guillermo Huarcaya Quispe Pg.

91
Gestin de informtica II

3.2 Funciones de agregacin
Son funciones que permiten efectuar una operacin aritmtica que resume los valores de una columna de toda la tabla, o
que resume los valores de la columna agrupados segn determinado criterio
Funcin Descripcin
AVG Utilizada para calcular el promedio de los valores de un campo determinado
COUNT Utilizada para devolver el nmero de registros de la seleccin
SUM Utilizada para devolver la suma de todos los valores de un campo determinado
MAX Utilizada para devolver el valor ms alto de un campo especificado
MIN Utilizada para devolver el valor ms bajo de un campo especificado
Uso de la funcin AVG ( )
La media calculada por Avg es la media aritmtica (la suma de los valores dividido por el nmero de valores). La funcin
Avg no incluye ningn campo Null en el clculo.
Sintaxis:
AVG ( [DISTINCT] expresin numrica)
Donde:
- DISTINCT: indica que debe eliminarse los valores duplicados de expresin numrica antes de
evaluar la funcin
a) Ejercicio: Obtener el precio promedio de todos los productos en la tabla PRODUCTO
SELECT AVG(precioProveedor)
FROM PRODUCTO
GO
b) Ejercicio: Obtener el precio unitario promedio de todos los productos de la categora golosinas cuyo cdigo es 1
SELECT AVG(PrecioProveedor)
FROM PRODUCTO
WHERE idcategoria=1
GO


c) Ejercicio: Obtener el stock promedio de los productos cuyo precio unitario se encuentren entre 10.00 y 20.00
SELECT AVG(PrecioProveedor)
FROM PRODUCTO
WHERE PrecioProveedor>=10 and PrecioProveedor<=20
GO
Uso de la funcin COUNT ( )
Sintaxis:
COUNT ( [DISTINCT] expresin)
COUNT(*)
Donde:
- DISTINCT: indica que debe eliminarse los valores duplicados de expresin antes de evaluar la
funcin
- COUNT (expresin): Ignora los valores NULL de expresin
- COUNT (*) : Se utiliza para contar filas, por lo que no ignora los valores NULL
f) Ejercicio: Cuenta la cantidad de productos registrados
SELECT COUNT(*) FROM Producto
GO
g) Ejercicio: Determinar la cantidad de productos despachados a los diferentes locales de la empresa
SELECT COUNT (DISTINCT idProducto)
FROM GUIA_DETALLE
GO


Uso de las funciones MAX( ) y MIN( )
Sintaxis:
MAX(expresin)
MIN( expresin)

Ing. Elvis Guillermo Huarcaya Quispe Pg.

92
Gestin de informtica II
Donde:
- expresin: Indica los valores para los que debe hallar el mximo y el mnimo. Si expresin es de tipo fecha
retorna la fecha final del rango de valores fecha ordenados y MIN retorna la fecha inicial.
Ejercicio: Obtener el precio ms alto y ms bajo de los productos registrados en la tabla producto
SELECT max (PrecioProveedor),
min(precioproveedor)
FROM producto
GO
Ejercicio: Obtener la gua de remisin ms reciente y ms antigua
SELECT MAX (fechaSalida),
MIN (fechaSalida)
FROM GUIA
GO
Ejercicio: Obtener el nombre del primer producto y del ltimo producto si se ordenaran en base al nombre
SELECT MIN (nombre) AS [Primer nombre],
MAX (nombre) AS 'ltimo nombre'
FROM PRODUCTO
GO

Ejercicio: Obtener el menor y el mayor precio del proveedor LACTEOS DEL CENTRO (IdProveedor=1)
SELECT MIN (PrecioProveedor) AS 'Menor Precio',
MAX (PrecioProveedor)AS 'Mayor Precio'
FROM producto
WHERE idproveedor=1
Go
Uso de la funcin SUM( )
Sintaxis:
SUM ( [ DISTINCT] expresin )
- DISTINCT: Indica que debe eliminarse los valores duplicados de expresin antes de evaluar la funcin

a) Ejercicio: Obtener el monto total de los productos salidos del almacn
SELECT SUM (precioVenta*cantidad )
FROM GUIA_detalle
go
b) Ejercicio: Obtener el Total de unidades despachadas del producto
5
SELECT SUM (cantidad)
FROM GUIA_detalle
where idproducto=10
go

4. LA CLUSULA ORDER BY
Adicionalmente se puede especificar el orden en que se desean recuperar los registros de las tablas mediante la clasula
ORDER BY Lista de Campos. En donde Lista de campos representa los campos a ordenar.
Ejemplo:
SELECT CodigoPostal, Nombre, Telefono
FROM Clientes ORDER BY Nombre;
Esta consulta devuelve los campos CodigoPostal, Nombre, Telefono de la tabla Clientes ordenados por el campo Nombre.
Se pueden ordenar los registros por mas de un campo, como por ejemplo:
SELECT CodigoPostal, Nombre, Telefono
FROM Clientes
ORDER BY CodigoPostal, Nombre;
Incluso se puede especificar el orden de los registros: ascendente mediante la clasula (ASC -se toma este valor por defecto)
descendente (DESC)
SELECT CodigoPostal, Nombre, Telefono
FROM Clientes
ORDER BY CodigoPostal DESC , Nombre ASC;

5. LA SENTENCIA INSERT
La sentencia de INSERT se utiliza para aadir registros a las tablas de la base de datos.
Sintaxis:
INSERT INTO nombre_fichero [(nombre_columna, ...)] VALUES (expr, ...)
Donde:
nombre_fichero puede ser nicamente el nombre del fichero o el nombre completo con su camino.
Si se utiliza solo el nombre del fichero se utiliza el directorio donde se encuentran los ficheros de la
aplicacin (C:\geiwin\datos).

Ing. Elvis Guillermo Huarcaya Quispe Pg.

93
Gestin de informtica II
nombre_columna es una lista opcional de nombres de campo en los que se insertarn valores en el
mismo nmero y orden que se especificarn en la clusula VALUES. Si no se especifica la lista de
campos, los valores de expr en la clusula VALUES deben ser tantos como campos tenga la tabla y
en el mismo orden que se definieron al crear la tabla.
expr es una lista de expresiones o valores constantes, separados por comas, para dar valor a los
distintos campos del registro que se aadir a la tabla. Las cadenas de caracteres debern estar
encerradas entre comillas o " y las fechas entre llaves { }.
Ejemplo para aadir un registro a la tabla creada en el ejemplo de CREATE:
INSERT INTO D:\LIBROS (TITULO, PAGINAS, FECHA)
VALUES (Gestin Escolar Integrada, 234,{12/27/95})
Cada sentencia INSERT aade un nico registro a la tabla. En el ejemplo solo se han especificado 3 campos con sus
respectivos valores, el resto de campos quedaran a nulo. Un valor nulo NULL no significa blancos o ceros sino simplemente que
el campo nunca ha tenido un valor.

6. LA SENTENCIA UPDATE
La sentencia UPDATE se utiliza para cambiar el contenido de los registros de una tabla de la base de datos.
Sintaxis:
UPDATE nombre_fichero SET nombre_columna = expr, ...
[WHERE { condicin }]
Donde:
nombre_fichero puede ser nicamente el nombre del fichero o el nombre completo con su camino.
Si se utiliza solo el nombre del fichero se utiliza el directorio donde se encuentran los ficheros de la
aplicacin (C:\geiwin\datos).
nombre_columna es el nombre de columna o campo cuyo valor se desea cambiar. En una misma
sentencia UPDATE pueden actualizarse varios campos de cada registro de la tabla.
expr es el nuevo valor que se desea asignar al campo que le precede. La expresin puede ser un
valor constante o una subconsulta. Las cadenas de caracteres debern estar encerradas entre
comillas o " y las fechas entre llaves { }. Las subconsultas entre parntesis.
La clusula WHERE sigue el mismo formato que la vista en la sentencia SELECT y determina que registros se modificarn.
Por ejemplo, subir el precio de compra de la tabla de libros un 10% de aquellos que tengan ms de 250 pginas, sera:
UPDATE D:\LIBROS SET PRECIO = PRECIO * 1.1
WHERE PAGINAS > 250
Otro ejemplo, para fijar la fecha de matrcula de todos aquellos alumnos que la tienen vaca a la fecha de hoy, se pondra:
UPDATE MATRICUL SET FECHA_MATRICULA = TODAY()
WHERE FECHA_MATRICULA IS NULL
Ejemplo utilizando una subconsulta:
UPDATE D:\LIBROS SET PRECIO = (SELECT AVG(PRECIO)
FROM D:\LIBROS WHERE PRECIO IS NOT NULL)
WHERE PRECIO IS NULL
Con esta ltima sentencia se ha puesto precio a todos los libros que no lo tenan. Ese precio ha sido el resultante de calcular la
meda entre los libros que si lo tenan
7. LA SENTENCIA DELETE
La sentencia DELETE se utiliza para borrar registros de una tabla de la base de datos.
Sintaxis:
DELETE FROM nombre_fichero [WHERE { condicin }]
En donde:
nombre_fichero puede ser nicamente el nombre del fichero o el nombre completo con su camino.
Si se utiliza solo el nombre del fichero se utiliza el directorio donde se encuentran los ficheros de la
aplicacin (C:\geiwin\datos).
La clusula WHERE sigue el mismo formato que la vista en la sentencia SELECT y determina que registros se borrarn.
Cada sentencia DELETE borra los registros que cumplen la condicin impuesta o todos si no se indica clusula WHERE.
DELETE FROM D:\LIBROS
WHERE MOD(TODAY - FECHA,365) > 20
Con el ejemplo anterior se borraran todos los registros de la tabla libros cuya antigedad, desde la fecha de adquisicin, fuera
mayor de 20 aos.
Para borrar las notas de evaluaciones que, no sean la Final, de los alumnos de aos anteriores se utilizara la sentencia:
DELETE FROM NOTAS
WHERE ANNO < 1995 AND EVALUACION <> F
CONSULTAS MULTITABLAS
En la mayora de los casos, la recuperacin de los datos que los usuarios necesitan para trabajar implica la lectura de muchas tablas
para que la informacin obtenida sea de utilidad.
Consultas Correlacionadas
Un join, combinacin consulta correlacionada, es la consulta que selecciona columnas de dos tablas o conjuntos de filas, y las
entrega en un nico conjunto de resultados. Las filas de las tablas o conjuntos de filas se combinan relacionando valores comunes,
tcamente valores de clave primaria y clave fornea.
Sintaxis General:
SELECT lista_columnas

Ing. Elvis Guillermo Huarcaya Quispe Pg.

94
Gestin de informtica II
FROM tabla1 Tipo_join JOIN tabla2
ON condicion_del_join
- lista_columnas: Es la lista de columnas a mostrar en el resultado de la consulta. Se recomienda que cada columna sea
calificada con el alias de la tabla al cual pertenece
- tipo_join: Indica si el join es interior (INNER), exterior (OUTER) o irrestricto (CROSS)
- condicion_del_join: es una expresin que indica en base a qu columnas de cada una de las tablas se establece la
relacin entre ellas

Una combinacin (join) puede ser de cualquiera de los siguientes tipos:
- inner join
- left outer join
- right outer join
- full outer join
- outer join
- cross join

Inner Join
Un inner join es la consulta correlacionada que combina todas las filas que estn relacionadas de las dos tablas conjuntos de
tablas

Ejemplo: Obtener una lista de los productos que registran salida del almacn, los campos a mostrar de la lista deben ser el cdigo
del producto, y el nombre del producto

SELECT DISTINCT Guia_detalle.idproducto, nombre
FROM Guia_detalle INNER JOIN Producto
ON Guia_detalle.idProducto=Producto.IdProducto
ORDER BY Guia_detalle.idproducto
go

Simplificando tenemos:

SELECT DISTINCT gd.idproducto, p.nombre
FROM Guia_detalle gd INNER JOIN Producto p
ON gd.idProducto = p.IdProducto
ORDER BY gd.idproducto
go



Ejemplo: Escriba una consulta que lista el catlogo de productos de la empresa. Los campos a mostrar debe ser categora,
Improducto, Nombre, UnidadMedida, PrecioProveedor, adems debe estar ordenado por categora, y luego por el cdigo del producto



Ejemplo: Escribir una consulta que muestre los datos de la cabecera de la gua de remisin de nmero 27, y adems su monto total

Ing. Elvis Guillermo Huarcaya Quispe Pg.

95
Gestin de informtica II

SELECT Guia.IdGuia, Guia.IdLocal, Guia.FechaSalida,
sum(Guia_detalle.PrecioVenta* Guia_detalle.Cantidad) AS Monto Total
FROM Guia INNER JOIN Guia_detalle
ON Guia.IdGuia = Guia_detalle.IdGuia
GROUP BY Guia.IdGuia, Guia.IdLocal, Guia.FechaSalida
HAVING Guia.IdGuia=15



Ejemplo: Escribir la consulta anterior que muestre la direccin del local al que se enviaron los productos registrados en la gua de
remisin nmero 18

SELECT Guia.IdGuia, Local.Direccion,Guia.FechaSalida,
sum(Guia_detalle.PrecioVenta* Guia_detalle.Cantidad) AS 'Monto Total'
FROM Guia INNER JOIN Guia_detalle
ON Guia.IdGuia = Guia_detalle.IdGuia
INNER JOIN Local
ON Guia.IdLocal=Local.IdLocal
GROUP BY Guia.IdGuia, Local.Direccion, Guia.FechaSalida
HAVING Guia.IdGuia=18



Ejemplo: Escribir la consulta que muestre el monto total enviado a cada Distrito

SELECT Local.Distrito, Monto =
SUM(Guia_detalle.precioVenta * Guia_detalle.cantidad)
FROM Local INNER JOIN Guia
ON Local.idLocal = Guia.idLocal
INNER JOIN Guia_detalle
ON Guia.idGuia = Guia_detalle.idGuia
GROUP BY Local.Distrito



Ejemplo: Escribir la consulta que muestre el total de Unidades despachados al mes del producto de Cdigo 7
SELECT YEAR(Guia.fechaSalida) AS Ao,
MONTH(Guia.fechaSalida) AS Mes,
SUM (Guia_detalle. cantidad) As Unidades
FROM Guia INNER JOIN Guia_detalle
ON Guia.idGuia = Guia_detalle.idGuia
WHERE Guia_detalle.idProducto = 7
GROUP BY YEAR(Guia.fechaSalida) , MONTH(Guia.fechaSalida)
ORDER BY Ao, Mes

Ejemplo: Escribir la consulta que muestre el total de Unidades mensuales de cada producto

SELECT producto.idproducto, Producto. nombre, YEAR(Guia.fechaSalida) AS Ao, MONTH(Guia.fechaSalida) AS Mes,
SUM(Guia_detalle.cantidad) As Unidades
FROM Guia INNER JOIN Guia_detalle
ON Guia.idGuia = Guia_detalle.idGuia
INNER JOIN Producto
ON Guia_detalle.idProducto = producto.idproducto
GROUP BY producto.idproducto, Producto. nombre, YEAR(Guia.fechaSalida), MONTH(Guia.fechaSalida)

Ing. Elvis Guillermo Huarcaya Quispe Pg.

96
Gestin de informtica II
ORDER BY producto.idproducto, Ao, Mes



Outer Join
Un outer join es la consulta correlacionada que entrega todas las filas que estn relacionadas, y adems:
- las filas no relacionadas de la tabla izquierda (LEFT OUTER JOIN),
- las filas no relacionadas de la tabla derecha (RIGHT OUTER JOIN),
- las filas no relacionadas de ambas tablas (FULL OUTER JOIN)

Se considera como la tabla izquierda, a aquella que se menciona primero en la clusula FROM.

Ejemplo: Escribir la consulta de los productos que NO registran salida del almacn. .

SELECT producto.idproducto, Producto. nombre
FROM Producto LEFT OUTER JOIN Guia_detalle
ON producto.idproducto = Guia_detalle.idProducto
ORDER BY Producto.idproducto



Al haber ejecutar la consulta se puede observar que el producto 4 aparece varias veces en el resultado. Esto indica que del producto
4 se tienen varias salidas registradas en la tabla Guia_detalle. Recuerde que una consulta OUTER JOIN entrega filas relacionadas y
filas no relacionadas.
La consulta es LEFT OUTER JOIN porque estamos buscando valores de idProducto que se encuentran en la tabla Producto, pero
que no estn en la tabla Guia_detalle.
Aadimos a la consulta anterior la columna cantidad de la tabla Guia_detalle.

SELECT producto.idproducto, Producto. nombre,
Guia_detalle.cantidad
FROM Producto LEFT OUTER JOIN Guia_detalle
ON producto.idproducto = Guia_detalle.idProducto
ORDER BY producto.idproducto


Note que para el producto 5, el valor en cantidad es NULL. Este producto es uno de los productos que NO registra salida del
almacn.

Modifique la consulta anterior para que muestre solo los productos que NO registran salida del almacn.

Ing. Elvis Guillermo Huarcaya Quispe Pg.

97
Gestin de informtica II

SELECT producto.idproducto, producto.nombre
FROM Producto LEFT OUTER JOIN Guia_detalle
ON producto.idproducto = Guia_detalle.idProducto
WHERE Guia_detalle.cantidad IS NULL
ORDER BY Producto.idProducto



Hay 72 productos que NO tienen registrada salida del almacn, que sumados a los 66 productos que tienen salida registrada, nos da
un total de 138 productos.

Ejemplo: Escribir la consulta que muestre el reporte de unidades despachadas de cada producto

SELECT producto.idproducto, Producto. nombre,
SUM(Guia_detalle.cantidad) AS Unidades
FROM Producto INNER JOIN Guia_detalle
ON producto.idproducto = Guia_detalle.idProducto
GROUP BY producto.idproducto, Producto. nombre
ORDER BY producto.idproducto

Note que el resultado no muestra todos los productos. Para que se muestren todos los productos convierta la consulta INNER JOIN
en una consulta OUTER JOIN, y para los productos en los que cantidad es NULL que se muestre O (cero) como el valor en cantidad.

SELECT Producto.idProducto, Producto.nombre,
ISNULL(SUM(Guia_detalle.cantidad) , 0) AS Unidades
FROM Producto LEFT OUTER JOIN Guia_detalle
ON producto.idProducto = Guia_detalle.idProducto
GROUP BY producto.idproducto, Producto.nombre
ORDER BY producto.idproducto




La instruccin SELECT...INTO
Puede colocar el resultado de cualquier consulta en una nueva tabla usando la sentencia SELECT...INTO.
Use la sentencia SELECT...INTO para crear nuevas tablas en la base de datos. Tambin puede usar la sentencia SELECT INTO
para solucionar problemas en los que requiere leer datos desde varias fuentes.

Sintaxis:

SELECT lista_columnas
INTO nombre_nueva_tabla
FROM tabla
WHERE condicin_filas

- SELECT...INTO siempre crea la tabla destino. Si el nombre especificado en nombre_nueva_tabla ya existe se produce
un error.


Ing. Elvis Guillermo Huarcaya Quispe Pg.

98
Gestin de informtica II
Ejemplo: Escribir la consulta que cree una tabla de nombre Monto_guias que registre el monto de cada una de las guas de
remisin.

SELECT Guia.idGuia, Guia.fechaSalida,
SUM(Guia_detalle.precioVenta * Guia_detalle.cantidad) AS Monto
INTO Monto_guias
FROM Guia INNER JOIN Guia_detalle
ON Guia.idGuia = Guia_detalle.idGuia
GROUP BY Guia.idGuia, Guia.fechaSalida
ORDER BY Guia.idGuia
Go

Revisando la tabla:

SELECT * from Monto_guias
Go



Ejemplo: Crear una tabla temporal que contenga los siguientes columnas: el cdigo de Orden de Compra, y su fecha respectiva,
adems del monto por cada nmero de Orden

Cuando en una instruccin que crea una tabla se especifica el nombre de la tabla precedido del smbolo #, el objeto se crea como
una tabla temporal.

SELECT Orden.idOrden, Orden.fechaOrden,
SUM(Orden_detalle.precioCompra *Orden_detalle.cantidadRecibida)
AS Monto
INTO #Monto_ordenes
FROM Orden INNER JOIN Orden_detalle
ON Orden.idOrden = Orden_detalle.idOrden
GROUP BY Orden.idOrden, Orden.fechaOrden
ORDER BY Orden.idOrden

Para consultar la tabla temporal, ejecute:

SELECT * FROM #Monto_ordenes


Consulta autojoin
Es una consulta correlacionada en la que una tabla se combina consigo misma para generar un nuevo conjunto de resultados.

Ejemplo:
Para ilustrar este tipo de consulta crearemos una tabla que tenga una autorelacin. .
Esta tabla contiene una clave fornea que apunta a la clave primaria en la misma
tabla.

Ing. Elvis Guillermo Huarcaya Quispe Pg.

99
Gestin de informtica II

Ejecute las siguientes instrucciones para crear y cargar los datos en la tabla.

-- Consulta autojoin, creacin de la tabla con autorelacin

CREATE TABLE Trabajador
( idTrabajador int NOT NULL PRIMARY KEY,
Apellidos varchar(30) NOT NULL,
Jefe int NULL )
Go

ALTER TABLE Trabajador
ADD CONSTRAINT fk_Trabajador_Trabajador
FOREIGN KEY(Jefe)
REFERENCES Trabajador
Go

INSERT INTO Trabajador VALUES(102, 'Ardiles Soto', NULL)
INSERT INTO Trabajador VALUES(101, 'Camacho Saravia',102)
INSERT INTO Trabajador VALUES(105, 'Vilchez Santos',102)
INSERT INTO Trabajador VALUES(103,'Snchez Aliaga',101)
INSERT INTO Trabajador VALUES(104,'Castro Avila',101)
INSERT INTO Trabajador VALUES(107,'Urrunaga Tapia',101)
INSERT INTO Trabajador VALUES(106,'Jurez Pinto',105)
go

SELECT * FROM Trabajador
Go



La columna jefe de la tabla Trabajador registra el cdigo del jefe de un trabajador. Por ejemplo, el trabajador 101 (Camacho
Saravia) es el jefe de los trabajadores 103, 104 Y 107.

Se desea crear una consulta que muestre una lista de trabajadores. La lista debe mostrar los apellidos del jefe de cada trabajador.

SELECT Tr.idTrabajador, Tr.apellidos,
Trj.apellidos AS Jefe
FROM Trabajador Tr INNER JOIN Trabajador Trj
ON Tr.jefe = Trj.idTrabajador


Ing. Elvis Guillermo Huarcaya Quispe Pg.

100
Gestin de informtica II


Note que el resultado muestra a todos los trabajadores con su respectivo jefe, pero el trabajador 102 (Ardiles Soto) no aparece en la
lista porque l no tiene jefe.

Modificar la consulta para que se muestre tambin el trabajador 102

SELECT Tr.idTrabajador, Tr.apellidos,
Trj.apellidos AS Jefe
FROM Trabajador Tr LEFT OUTER JOIN Trabajador Trj
ON Tr.jefe = Trj.idTrabajador


SUBCONSULTAS
Un subconsulta es una declaracin SELECT anidada dentro una sentencia SELECT, INSERT, UPDATE o DELETE o dentro de otra
subconsulta.
Si la respuesta a un requerimiento de datos requiere la ejecucin de una serie de pasos lgicos, utilice subconsultas para tratar de
resolver el requerimiento con una sola sentencia.

Las subconsultas son de los tipos siguientes:
- Subconsulta que entrega un solo valor (1 fila, 1 columna)
- Subconsulta que entrega un conjunto de valores (varias filas, 1 columna)

Una subconsulta se especifica entre parntesis, y se puede especificar en cualquier parte donde la sintxis permite una expresin.

Subconsulta que entrega un solo valor (1 fila, 1 columna)
Cuando la subconsulta se especifica:
- en la lista de columnas del SELECT externo,
- en la clusula WHERE del SELECT externo usando un operador relacional (test de comparacin),
la subconsulta debe ser una que entregue un solo valor.

Ejemplo: Escribir una consulta que entregue la lista de precios de todos los productos, especificando en una columna adicional la
diferencia entre el precio de cada producto y el precio promedio de todos los productos.
Primero, especifique la consulta que entrega el precio promedio de todos los productos.

SELECT AVG(precioProveedor) FROM Producto
go


Ahora, escriba la consulta que entrega la lista de precios solicitada teniendo en cuenta la frmula que determina la diferencia entre el
precio de cada producto y el precio promedio de todos los productos.

SELECT idproducto, nombre, precioProveedor,
Diferencia = precioProveedor - (SELECT AVG(precioProveedor) FROM Producto)
FROM Producto

Ing. Elvis Guillermo Huarcaya Quispe Pg.

101
Gestin de informtica II
Go




Ejemplo: Escribir una consulta que muestre el Porcentaje de unidades despachadas de cada producto de la categora 4 respecto al
total despachado de la categora

Primero, escriba la consulta que calcula el total despachado para la categora 4.

SELECT SUM(cantidad)
FROM Guia_detalle INNER JOIN Producto
ON Guia_detalle.idProducto = producto.idproducto
WHERE Producto.idCategoria = 4
Go



Ahora, escriba la consulta que, utilizando la consulta anterior, presente el listado requerido.

SELECT producto.idproducto, Producto. nombre,
Despachado = ISNULL(SUM(Guia_detalle.cantidad), 0),
Porcentaje = CONVERT(float, ISNULL(SUM(Guia_detalle.cantidad), 0)) /
(SELECT SUM(cantidad)
FROM Guia_detalle INNER JOIN Producto
ON Guia_detalle.idProducto = producto.idproducto
WHERE Producto.idCategoria = 4)
* 100
FROM Producto LEFT OUTER JOIN Guia_detalle
ON producto.idproducto = Guia_detalle.idProducto
WHERE Producto.idCategoria = 4
GROUP BY producto.idproducto, Producto. nombre
go





Ejemplo: Escriba una consulta que entregue una lista de los productos
que se despacharon en la fecha que se despach la ltima salida del almacn. Tenga en cuenta que en dicha fecha se puede haber
registrado ms de una salida.

Primero, obtenga la fecha de la ltima salida

SELECT MAX(fechaSalida) FROM Guia
go


Ahora, utilizando adecuadamente la consulta anterior, escriba la consulta que responde al requerimiento especificado.

SELECT DISTINCT Guia_detalle.idProducto, Producto. nombre
FROM Guia_detalle
INNER JOIN Producto ON Guia_detalle.idProducto = Producto.idproducto
INNER JOIN Guia ON Guia_detalle.idGuia = Guia.idGuia
WHERE CONVERT(char(10), Guia.fechaSalida, 103) =
(SELECT CONVERT(char(10), MAX(fechaSalida), 103) FROM Guia)

Ing. Elvis Guillermo Huarcaya Quispe Pg.

102
Gestin de informtica II
go



Subconsulta que entrega un conjunto de valores (varias filas, 1 columna)

Cuando la subconsulta se define en la clusula WHERE del SELECT externo utilizando el operador IN (test de pertenencia), puede
ser una subconsulta que entrega un conjunto de valores.


Ejemplo: Escriba una consulta que entregue una lista de los productos que no registran salida del almacn. Use la clusula NOT IN

SELECT idProducto, nombre
FROM Producto
WHERE idProducto NOT IN
(SELECT idproducto FROM Guia_detalle)
ORDER BY idproducto
go



Subconsulta correlacionada

Se presenta cuando la consulta externa debe entregar datos a la consulta interna para que se pueda ejecutar.
La consulta interna se evala repetidamente, una vez por cada fila de la consulta externa.
Se puede definir en la clusula WHERE de la consulta externa usando el operador EXISTS (Test de existencia).

Ejemplo: Genere la lista de productos que registran salida del almacn.

SELECT producto.idproducto, Producto. nombre
FROM Producto
WHERE EXISTS
(SELECT * FROM Guia_detalle
WHERE producto.idproducto = Guia_detalle.idProducto)
ORDER BY producto.idproducto
go


Ing. Elvis Guillermo Huarcaya Quispe Pg.

103
Gestin de informtica II
ADMINISTRACIN DE BASES DE DATOS
GESTIN DE BASE DE DATOS

- Bases de datos predeterminadas en SQL Server
- Archivos de una base de datos
- Creacin de una Base de Datos
- Recopilacin de informacin de la Base de Datos
- Configuracin de opciones de la Base de Datos
- Administracin de los archivos de la Base de Datos
- Renombrar una Base de Datos
- Trabajar con grupos de archivos de Base de Datos
- Eliminacin de una Base de Datos

Una Base de datos es una coleccin de tablas que contienen datos y adems otros objetos tales como vistas, ndices, procedimientos
almacenados, funciones definidas por el usuario, definidos para soportar las operaciones a ejecutar con los datos.

Bases de datos Predeterminadas
Despus de instalar SQL Server 2000, se instalan las bases de datos siguientes

- Bases de datos del Sistema
Estas bases de datos del sistema no las puede quitar
- Master: Es la clave para ejecutar SQL Server
- Model: Es como si fuera una plantilla para la creacin de una nueva base de datos. Por lo tanto cualquier
objeto que exista en la base de datos model se copia a la nueva base de datos
- Tempdb: Es el lugar donde se realizan los ordenamientos, las uniones y dems actividades que requieren un
espacio temporal

- Base de Datos Ejemplos
Las siguientes Bases de datos son ejemplos propios de SQL Server, si desea puede quitarles y no ocasionar problemas
en sus servidores SQL Server

- Pubs: Es una herramienta de aprendizaje acerca de una editorial que incluye informacin acerca de los autores,
libros y ventas
- Northwind (Neptuno): Ha sido la base de datos de ejemplo que se proporciona con Microsoft Access

Archivos de una Base de Datos
Una Base de Datos SQL est formada por tres tipos de archivos:

a) Archivo primario
Es el archivo de inicio de una base de datos. Almacena las tablas de sistema de la base de datos, y puede tambin
almacenar las tablas de usuario y otros objetos de la base de datos. Cada base de datos tiene un solo archivo primario,
siendo .mdf la extensin del archivo

b) Archivos secundarios
Se usan para almacenar tablas de usuario y dems objetos de la base de datos. Si el archivo primario almacena todos los
objetos, entonces el uso de los archivos secundarios no es necesario. Sin embargo en ocasiones, la base de datos es
muy grande siendo necesario distribuir en mltiples archivos secundarios, pudiendo distribuirse en diferentes discos. La
extensin de los archivos secundarios es .ndf

c) Archivo de registro de transacciones (transact log)
Este archivo registra todas las transacciones a ejecutar sobre la base de datos y es un mecanismo de seguridad para
recuperar la base de datos ante la eventualidad de una falla en el sistema. Toda Base de Datos debe tener por lo menos
un archivo de transacciones. La extensin del archivo es .ldf

Cmo trabaja el registro de transacciones?
El archivo de registro de transacciones almacena todas las transacciones llevadas a cabo con las sentencias INSERT,
UPDATE, y DELETE; es decir graba todas las modificaciones de datos a medida que se producen


Ing. Elvis Guillermo Huarcaya Quispe Pg.

104
Gestin de informtica II


SQL Server graba todas las transacciones en un registro de transacciones para mantener la coherencia de la base de
datos y facilitar la recuperacin. El registro es un rea de almacenamiento que efecta automticamente el seguimiento de
todos los cambios en la base de datos. SQL Server graba las modificaciones al registro en disco cuando se ejecutan,
El proceso de registro es el siguiente:
1. La aplicacin enva una modificacin de datos.
2. Cuando la modificacin se ejecuta, las pginas de datos afectadas se cargan en la cach del bfer desde el disco.
3. Cada instruccin de modificacin de datos se graba en el registro mientras se ejecuta. El cambio siempre se graba en el
registro y se escribe en disco antes de hacer la modificacin en la base de datos. Este tipo de registro se denomina
registro de preescritura.
4. De forma repetitiva, el proceso de punto de comprobacin escribe en disco todas las transacciones completadas en la
base de datos.

Si se produce un error del sistema, el proceso automtico de recuperacin utiliza el registro de transacciones para aplicar
todas las transacciones confirmadas y deshacer las transacciones incompletas.

CREACIN DE UNA BASE DE DATOS
Puede definir una base de datos mediante el Administrador corporativo de SQL Server o mediante la instruccin CREATE
DATABASE en el Analizador de consultas SQL. El proceso de definicin de una base de datos crea tambin un registro de
transacciones para esa base de datos.

Sintaxis:
CREATE DATABASE nombre_base_datos
ON [ PRIMARY] (
NAME = nombre_lgico_data,
FILENAME = ubicacin _y_nombre_archivo_data,
SIZE= tamao [KB|MB|GB|TB],
MAXSIZE= tamao_mximo [KB|MB|GB|TB|UNLIMITED %],
FILEGROWTH=incremento_crecimiento [KB|MB|%]
)
LOG ON (
NAME = nombre_lgico_log,
FILENAME = ubicacin _y_nombre_archivo_log,
SIZE= tamao [KB|MB|GB|TB],
MAXSIZE= tamao_mximo [KB|MB|GB|TB|UNLIMITED %] ,
FILEGROWTH=incremento_crecimiento [KB|MB|%]
)
Donde:
- ON PRIMARY: Define las propiedades del archivo primario. El grupo de archivos principal o primario contiene todas
las tablas del sistema de la base de datos. Todas las bases de datos tienen un archivo de datos principal.
- LOG ON: Define las propiedades del archivo de registro de transacciones
- nombre_lgico_data, nombre_lgico_log: Es el nombre a utilizar cuando en una sentencia SQL se tiene que
hacer referencia al archivo de datos o al archivo log respectivamente
- ubicacin _y_nombre_archivo: es una cadena que incluye la ruta y el nombre de archivo
- tamao: especifica el tamao del archivo, el tamao especificado para el archivo de datos principal debe ser, al
menos, como el tamao del archivo principal de la base de datos model

Ing. Elvis Guillermo Huarcaya Quispe Pg.

105
Gestin de informtica II
- tamao_mximo: es el mximo tamao que puede alcanzar el archivo si se requiere de espacio adicional, Si no se
especifica el tamao, el archivo crece hasta que el disco est lleno.
- incremento_crecimiento: es la cantidad de espacio que se aade al archivo cada vez que se necesita espacio
adicional. El valor de FILEGROWTH de un archivo no puede sobrepasar el valor de MAXSIZE. Un valor de 0 indica
que no hay crecimiento.

Ejemplo: El siguiente ejemplo crea una base de datos denominada BDEjemplo con un archivo de datos principal de 10 MB con un
20 % de crecimiento, con tamao mximo de 15 MB y un archivo de registro de 3 MB


CREATE DATABASE BDEjemplo
ON PRIMARY (
NAME=BDEjemplo_Data,
FILENAME='C:\Archivos de programa\Microsoft SQL Server\MSSQL\Data\BDEjemplo_Data.mdf',
SIZE=10 MB,
MAXSIZE= 15MB,
FILEGROWTH=20%
)

LOG ON (
NAME=BDEjemplo_log,
FILENAME='C:\Archivos de programa\Microsoft SQL Server\MSSQL\Data\BDEjemplo_Log.ldf',
SIZE=3MB,
MAXSIZE=5MB,
FILEGROWTH=1MB
);

Nota: Cuando se crea una Base de Datos se aade una entrada con el nombre de la base de datos en la tabla de sistema
sysdatabases de la base de datos master

Ejemplo: Crear una Base de Datos de nombre AlquilerVideos que almacene dos archivos de datos, con tamao normal de 8MB
con un mximo tamao de 15MB, y un crecimento del 18%. Debe almacenar tambin dos archivos de registros de tamao normal de
4MB

CREATE DATABASE AlquilerVideos
ON PRIMARY
( NAME=AlquilerVideos_Data1,
FILENAME='C:\Archivos de programa\Microsoft SQL Server\MSSQL\Data\AlquilerVideos_Data1.mdf',
SIZE=8MB,
MAXSIZE=15MB,
FILEGROWTH=18% ),
( NAME=AlquilerVideos_Data2,
FILENAME='C:\Archivos de programa\Microsoft SQL Server\MSSQL\Data\AlquilerVideos_Data2.ndf',
SIZE=8MB,
MAXSIZE=15MB,
FILEGROWTH=18% )
LOG ON
( NAME=AlquilerVideos_Log1,
FILENAME='C:\Archivos de programa\Microsoft SQL Server\MSSQL\Data\AlquilerVideos_Log1.ldf',
SIZE=4MB,
MAXSIZE=15MB,
FILEGROWTH=1MB ),

( NAME=AlquilerVideos_Log2,
FILENAME='C:\Archivos de programa\Microsoft SQL Server\MSSQL\Data\AlquilerVideos_Log2.ldf',
SIZE=4MB,
MAXSIZE=10MB,
FILEGROWTH=2MB )
GO


RECOPILACIN DE INFORMACIN DE LA BASE DE DATOS

Ing. Elvis Guillermo Huarcaya Quispe Pg.

106
Gestin de informtica II
Puede recopilar informacin de su base de datos de varias formas. Puede utilizar el Administrador Corporativo o el Analizador de
Consultas de SQL Server y ejecutar algunos procedimientos almacenados del sistema.





Ejemplo:

EXEC sp_helpdb
Go



Ejemplo:

EXEC sp_helpdb AlquilerVideos
Go



CONFIGURACIN DE OPCIONES DE LA BASE DE DATOS
Despus de haber creado una base de datos, puede definir opciones de base de datos con el Administrador corporativo de SQL
Server o por medio de la instruccin ALTER DATABASE.
Puede configurar varias opciones de base de datos, pero slo se puede hacer en una sola base de datos al mismo tiempo. Para que
las opciones afecten a todas las bases de datos nuevas, cambie la base de datos model.

Mediante el Administrador Corporativo
1. Ubicar la Base de Datos con la que desea trabajar (Emplearemos la Base de Datos Alquiler de Videos)
2. Hacer clic con el botn derecho y seleccionar la opcin Propiedades del men contextual
3. Luego se mostrar el cuadro de dilogo Propiedades
4. Hacer clic en la ficha opciones
5. Activar el acceso como un nico usuario

EXEC sp_helpdb
EXEC sp_helpdb baseDeDatos


Ing. Elvis Guillermo Huarcaya Quispe Pg.

107
Gestin de informtica II



ADMINISTRACIN DE LOS ARCHIVOS DE LA BASE DE DATOS

ALTER DATABASE ..
Permite aadir o eliminar archivos de una base de datos. Se puede utilizar tambin para modificar los atributos de los archivos, tales
como el nombre o el tamao de un archivo. Tambin se puede usar para cambiar el nombre de una base de datos, y para configurar
las opciones de configuracin de una base de datos.

Sintaxis:
ALTER DATABASE nombre_base_datos
ADD FILE especificacin_archivo,
| ADD LOG FILE especificacin_archivo
| REMOVE FILE nombre_lgico_archivo
| MODIFY FILE especificacin archivo

- especificacin_archivo: son los atributos del archivo de base de datos tal como se definieron en el comando CREATE
DATABASE
- opcin_configuracin_base_datos: es una de las opciones de configuracin de base de datos definidas en el
procedimiento sp_dboption

Ejemplo: Incrementar el tamao de la Base de Datos BDEjemplo:

1. Visualizamos el tamao de la Base de Datos
USE Master
go
sp_helpdb BDEjemplo
go

Ing. Elvis Guillermo Huarcaya Quispe Pg.

108
Gestin de informtica II


2. Cambiamos el tamao del archivo primario
ALTER DATABASE BDEjemplo
MODIFY FILE (
NAME=BDEjemplo_Data,
SIZE=20MB )
go

sp_helpdb BDEjemplo
go



Ejercicio: Incrementar el tamao de la Base de Datos AlquilerVideos

Ejemplo: Aadir un archivo secundario a la Base de Datos BDEjemplo

ALTER DATABASE BDEjemplo
ADD FILE (
NAME=BDEjemplo_Data2,
FILENAME='C:\Archivos de programa\Microsoft SQL Server\MSSQL\Data\BDEjemplo_Data2.ndf',
SIZE=5MB,
MAXSIZE=10MB,
FILEGROWTH=1MB
)
Go

sp_helpdb BDEjemplo
go



Ejemplo: Aadir un archivo de registro de tamao 6MB a la base de datos BDEjemplo

ALTER DATABASE BDEjemplo
ADD LOG FILE (
NAME=BDEjemplo_Log2,
FILENAME='C:\Archivos de programa\Microsoft SQL Server\MSSQL\Data\BDEjemplo_Log2.ldf',
SIZE=6MB,
MAXSIZE=10MB,
FILEGROWTH=2MB

Ing. Elvis Guillermo Huarcaya Quispe Pg.

109
Gestin de informtica II
)

sp_helpdb BDEjemplo
go



Ejemplo: Eliminacin de un archivo de la base de datos BDEjemplo

ALTER DATABASE BDEjemplo
REMOVE FILE BDEjemplo_Data2
Go


RENOMBRAR UNA BASE DE DATOS
Para cambiar el nombre de la base de datos deber ejecutar el siguiente procedimiento almacenado del sistema llamado
sp_renamedb

Sintaxis:

EXEC sp_renamedb nombre_anterior , nombre_nuevo

Previamente debe tomar en cuenta lo siguiente:
- Algunas secuencia de comando de SQL podran depender del nombre de la base de datos para ejecutarse correctamente
- La base de datos debe encontrarse en modo de un nico usuario
- Si cambia el nombre de la base de datos los nombres de los archivos, as como los de los grupos de archivos no saldrn
afectados
- Para ejecutar el procedimiento almacenado del sistema llamado sp_renamedb, debe encontrarse en la base de datos
Master


REDUCCIN DEL TAMAO DE UNA BASE DE DATOS

La instruccin DBCC SHRINKFILE
Reduce el tamao de un archivo de base de datos para la base de datos activa

Sintaxis:
DBCC SHRINKFILE ( nombre_lgico_archivo, tamao_final_en_MB)

Solo pueden ejecutar esta instruccin los miembros del rol fijo de servidor sysadmin y del rol fijo de base de datos db_owner

La instruccin DBCC SHRINKDATABASE
Reduce el tamao de los archivos de datos de la base de datos especificada

Sintaxis:
DBCC SHRINKDATABASE (nombre_base_datos, porcentaje_espacio_libre_despus_reduccin)

Solo pueden ejecutar esta instruccin los miembros del rol fijo de servidor sysadmin y del rol fijo de base de datos db_owner

Ejemplo: Reducir el tamao del archivo primario de la base de datos BDEjemplo hasta
10MB
Use BDEjemplo
Go

DBCC SHRINKFILE(BDEjemplo_Data, 10)
Go

Ing. Elvis Guillermo Huarcaya Quispe Pg.

110
Gestin de informtica II


Ejemplo: Reducir el tamao de registros BDEjemplo_Log2 hasta 4MB

DBCC SHRINKFILE(BDEjemplo_Log2, 4)
Go

Sp_helpdbBDEJEMPLO
Go


Ejemplo: Reducir toda la Base de Datos hasta que quede slo 50% de espacio libre

DBCC SHRINKDATABASE (BDEjemplo, 50)

ELIMINACIN DEL TAMAO DE UNA BASE DE DATOS
Cuando eliminamos una base de datos, se eliminan los archivos que conforman la base de datos. Si no se dispone de copia de
seguridad de estos archivos, la base de datos se pierde definitivamente

La instruccin DROP DATABASE
Elimina una o ms bases de datos de un servidor SQL. La operacin elimina los archivos que conforman la base de datos.

Sintaxis:
DROP DATABASE nombre_base_datos,

GESTIN DE LA SEGURIDAD DE BASE DE DATOS
1. IMPLEMENTACIN DEL MODO DE AUTENTICACIN
Se puede proteger SQL Server 2000 mediante la implementacin del Modo de autenticacin o del Modo mixto de Windows.
Proceso de autenticacin
SQL Server puede delegar en Windows la autenticacin de las cuentas de inicio de sesin o puede autenticar las cuentas
de inicio de sesin por s mismo.

Ing. Elvis Guillermo Huarcaya Quispe Pg.

111
Gestin de informtica II

Cmo procesa SQL Server las cuentas de inicio de sesin que autentica Windows?
A continuacin se describe cmo procesa SQL Server las cuentas de inicio de sesin que autentica Windows :
- Cuando un usuario se conecta con SQL Server, el cliente abre una conexin de confianza con SQL Server, que
pasa las credenciales de seguridad de Windows del usuario a SQL Server.
- Como el cliente tiene abierta una conexin de confianza, SQL Server sabe que Windows ya ha validado la
cuenta de inicio de sesin.
- Si SQL Server encuentra la cuenta de usuario o de grupo de Windows del usuario en la lista de cuentas de
inicio de sesin de SQL Server que se encuentra en la tabla del sistema sysxlogins, acepta la conexin.
SQL Server no necesita volver a validar la contrasea porque Windows 2000 ya la ha validado.

Cmo procesa SQL Server las cuentas de inicio de sesin que l mismo autentica?
SQL Server emplea los siguientes pasos para procesar las cuentas de inicio de sesin que l mismo autentica:
- Cuando un usuario conecta con una cuenta de inicio de sesin y contrasea de SQL Server, ste comprueba si
existe la cuenta de inicio de sesin en la tabla sysxlogins y si la contrasea especificada coincide con la
contrasea registrada.
- Si SQL Server no tiene configurada una cuenta de inicio de sesin para el usuario, la autenticacin falla y la
conexin se rechaza.

Eleccin del modo de seguridad o autenticacin de SQL Server
SQL Server proporciona dos modos de seguridad distintos:
a) El Modo Integrado de Windows
b) El Modo Mixto (Autenticacin integrada de Windows como autenticacin de SQL Server)
Los modos de seguridad determina si slo Windows, o tanto Windows como SQL Server son responsables de validar
solicitudes de conexin de SQL Server
Modo de Autenticacin SQL Server
Es el modo en el cual acepta un ID de inicio de sesin y una contrasea de un usuario, y verifica la validacin sin ayuda de
Windows.
Si se conecta por medio del inicio de sesin, entonces est utilizando el Modo de autenticacin SQL Server. Por lo tanto la
tabla de sistema sysxlogins contiene una entrada para el ID de inicio de sesin sa, junto con una contrasea

Contrasea: Las contraseas de inicio de sesin en Modo autenticacin de SQL Server se mantienen en la
columna password de la tabla en la base de datos master
Use Master




Ing. Elvis Guillermo Huarcaya Quispe Pg.

112
Gestin de informtica II
go

SELECT name, password
FROM sysxlogins
Go


BUILTIN\ Administradores: Representa el grupo local de administradores de Windows
sa: Se agrega de manera predeterminada en el momento de la instalacin, para este caso la contrasea es nula
(NULL)
carla: tiene una contrasea representada por el texto cifrado

Ventajas del Modo de autenticacin de Windows
Utilice el modo de Autenticacin de Windows en entornos de red en los que todos los clientes admiten conexiones de
confianza.
La autenticacin de Windows ofrece varias ventajas frente a la autenticacin de SQL Server, ya que:
- Proporciona ms caractersticas, como la validacin y el cifrado seguros de contraseas, la auditoria, la
caducidad de las contraseas, la longitud mnima de la contrasea y el bloqueo de las cuentas despus de
contraseas no vlidas.
- Permite agregar grupos de usuarios a SQL Server con slo agregar una nica cuenta de inicio de sesin.
- Permite que los usuarios tengan acceso a SQL Server rpidamente, sin necesidad de recordar otra cuenta de
inicio de sesin y contrasea.

Ventajas del Modo mixto
- Un usuario puede conectarse a SQL Server utilizando ya sea el Modo integrado de Windows, o el Modo de
autenticacin de SQL Server
- Es la mejor seleccin para obtener compatibilidad con versiones anteriores de SQL Server.
- Proporciona mayor conectividad con clientes que no utilicen Windows que estn conectados en red, como los
usuarios Novell Netware
Cifrado
El cifrado es un mtodo de proteccin de la informacin confidencial que se crea pasando los datos a un formato ilegible.
Garantiza la seguridad de los datos, incluso si se ven directamente.
Cifrado interno
SQL Server puede cifrar:
- Las contraseas de inicio de sesin almacenadas en SQL Server.

Cifrado de red
SQL Server permite que se cifren los datos que se envan entre el cliente y el servidor. Esto garantiza que cualquier
aplicacin o usuario que intercepte los paquetes de datos de la red no pueda ver los datos confidenciales, por ejemplo,
contraseas enviadas a travs de la red cuando los usuarios inician sesin en SQL Server, o datos personales que
contienen informacin acerca de los salarios.

Pasos para implementar un modo de autenticacin

Ing. Elvis Guillermo Huarcaya Quispe Pg.

113
Gestin de informtica II

Creacin de cuentas de inicio de sesin

Puede crear cuentas de inicio de sesin a partir de usuarios y grupos de Windows existentes, o puede crear nuevas
cuentas de inicio de sesin en SQL Server. Tambin puede utilizar una de las cuentas de inicio de sesin
predeterminadas. Las cuentas de inicio de sesin estn almacenadas en la tabla del sistema master.sysxlogins.
Cuentas de inicio de sesin predeterminadas
SQL Server tiene dos cuentas de inicio de sesin predeterminadas:
- BUILTIN\Administradores: Se proporciona como cuenta de inicio de sesin predeterminada para todos los
administradores de Windows. Tiene todos los derechos sobre SQL Server y todas las bases de datos.
- El administrador del sistema (sa): Es una cuenta de inicio de sesin especial que tiene todos los derechos
sobre SQL Server y todas las bases de datos.
Configurar el modo de seguridad
Para establecer qu modo de seguridad est utilizando su servidor, inicie el Administrador Corporativo ya haga clic con el
botn derecho del Mouse en su servidor, el cual se encuentra en el panel izquierdo. Seleccione la opcin Propiedades del
men contextual y haga clic en la ficha de seguridad


Agregar una cuenta de inicio de sesin de Windows XP a SQL Server
Puede utilizar el Administrador corporativo de SQL Server o el procedimiento almacenado del sistema sp_grantlogin para
permitir que una cuenta de usuario o de grupo de Windows se conecte con SQL Server. Slo los administradores del
sistema o de seguridad pueden ejecutar sp_grantlogin.

Ing. Elvis Guillermo Huarcaya Quispe Pg.

114
Gestin de informtica II
El nombre especificado al crear una cuenta es el nombre del usuario o grupo de Windows que se va a agregar.

a) Configuracin de grupos y usuarios de Windows XP
b) Otorgar permiso a las cuentas de Windows XP para iniciar sesin en SQL Server
Despus de establecer los usuarios y grupos, se otorga a esos grupos el acceso a SQL Server. Hay dos formas
utilizando procedimientos almacenados y mediante el administrador corporativo
Utilizando procedimientos almacenados de sistema
sp_grantlogin inicio_sesin Otorga el derecho de iniciar sesin en SQL Server al grupo o usuarios
de de Windows
sp_revokelogin inicio_sesin Permite quitar el derecho de inicio de sesin en SQL Server a un
usuario o grupo de usuarios
Sp_denylogin inicio_sesin Niega el derecho de iniciar sesin en SQL Server a un usuario o grupo
de usuarios

Agregar una cuenta de inicio de sesin de SQL Server
Puede utilizar el Administrador corporativo de SQL Server o el procedimiento almacenado del sistema sp_addlogin para
crear una cuenta de inicio de sesin de SQL Server. Slo los administradores del sistema o de seguridad pueden ejecutar
sp_addlogin.
Al crear una nueva cuenta de inicio de sesin de SQL Server se agrega un registro a la tabla sysxlogins de la base de
datos master.

sp_addlogin sunombre, su_contrasea Otorga el derecho de iniciar sesin en SQL Server
sp_password anterior, nueva, ini_sesin Cambia la contrasea de inicio sesin en SQL
Server

Los administradores del sistema pueden cambiar la contrasea de cualquier usuario mediante sp_password con NULL
como contrasea antigua. Los usuarios y administradores del sistema tambin pueden cambiar las contraseas con
Propiedades de inicio de sesin.

SQL Server tiene dos tipos de inicio de sesin:
- Inicios de sesin de Windows, ya sea por medio de IDs de usuarios individuales o grupos
- Inicio de sesin de SQL Server, los cuales se guardarn en la tablas sysxlogins que se encuentra en la base de
datos Master

2. ASIGNACIN DE CUENTAS DE INICIO DE SESIN A USUARIOS Y FUNCIONES
Despus de agregar cuentas de inicio de sesin a SQL Server puede asignarlas a cuentas de usuarios o funciones de cada una
de las bases de datos a las que los usuarios tengan acceso

Ing. Elvis Guillermo Huarcaya Quispe Pg.

115
Gestin de informtica II

Despus de agregar cuentas de inicio de sesin a SQL Server, puede asignarlas a cuentas de usuario o funciones en cada una
de las bases de datos a las que los usuarios tengan acceso.
La tabla del sistema sysusers de una base de datos contiene una fila por cada usuario de Windows, grupo de Windows,
usuario de SQL Server o funcin de la base de datos. Los permisos se aplican a las entradas de la tabla sysusers y se
almacenan en la tabla sysprotects de la base de datos actual.
2.1 ASIGNACIN DE CUENTAS DE INICIO DE SESIN A CUENTAS DE USUARIOS DE BASES DE DATOS
Una vez configurada la seguridad de inicio de sesin y establecidos los inicios de sesin, puede empezar a configurar el
acceso a las bases de datos. Tener un inicio de sesin en SQL Server no le proporciona acceso a ninguna base de datos
al servidor. Para ello debe tener un nombre de usuario de base de datos.
Para tener acceso a una base de datos, una cuenta de inicio de sesin puede ser utilizada a una cuenta de usuario
asignada o una predeterminada.
a) Agregar cuentas de usuario a una base de datos
Para agregar una cuenta de usuario a una base de datos, puede utilizar el Administrador corporativo de SQL Server o
ejecutar el procedimiento almacenado del sistema sp_grantdbaccess. Tambin puede agregar cuentas de usuario a
bases de datos al crear cuentas de inicio de sesin. Slo los propietarios de la base de datos o los administradores
del acceso a la base de datos pueden ejecutar el procedimiento sp_grantdbaccess.
En el rbol de consola del Administrador corporativo de SQL Server, cada base de datos tiene una carpeta Users.
Aqu se muestra la lista de usuarios actual de la base de datos y se le permite agregar y quitar usuarios y
personalizar sus propiedades.
En la tabla siguiente se enumeran otros procedimientos almacenados del sistema que se pueden utilizar para
administrar el acceso a la base de datos.
Procedimiento almacenado de sistema Descripcin
sp_grantdbaccess inicio_de_sesin Otorga una cuenta de seguridad a la base de datos actual.
Sp_revokedbaccess inicio_de_sesin Quita una cuenta de seguridad de la base de datos actual.
sp_helpuser Visualiza la informacin de todos los usuarios que tienen acceso
a la Base de Datos
sp_helpuser [nombre_usuario] Obtiene un informe para un informe para un usuario especfico

b) Cuenta de usuario dbo
Al crear una base de datos, ya se tiene un usuario. Uno de estos se llama dbo (propietario de la base de datos). El
usuario dbo asigna de manera predeterminada al inicio de sesin sa. Al instalar SQL Server, el inicio de sesin sa

Ing. Elvis Guillermo Huarcaya Quispe Pg.

116
Gestin de informtica II
considera como el propietario de todas las bases de datos. Si otro inicio de sesin crea una base de datos, ese inicio
de sesin es el propietario de base de datos
Cualquier objeto que cree un administrador del sistema pertenece automticamente a dbo. El usuario dbo es una
cuenta predeterminada y no se puede eliminar.



c) Cuenta de usuario guest
La cuenta de usuario guest permite inicios de sesin sin cuentas de usuario para tener acceso a una base de datos.
Las cuentas de inicio de sesin asumen la identidad del usuario guest cuando se cumplen las dos condiciones
siguientes:
Se pueden aplicar permisos al usuario guest como si se tratara de cualquier otra cuenta de usuario. Puede eliminar y
agregar el usuario guest a cualquier base de datos excepto a las bases de datos master y tempdb.
Nota: Al iniciar una sesin puede acceder a todas las bases de datos del sistema, as como a las bases de datos
Pubs y Northwind, esto es gracias al nombre de usuario guest
2.2 ASIGNACIN DE CUENTAS DE INICIO DE SESIN A FUNCIONES
Las funciones proporcionan un medio para agrupar usuarios en una sola unidad a la que se pueden aplicar permisos.
SQL Server proporciona funciones de servidor y de base de datos predefinidas para las funciones administrativas
comunes, de forma que pueda conceder fcilmente una seleccin de permisos administrativos a un usuario especfico.
a) Funciones fijas de servidor
Las funciones fijas del servidor permiten agrupar los privilegios administrativos en el nivel del servidor. Se administran
de forma independiente de las bases de datos de usuario en el nivel del servidor y se almacenan en la tabla del
sistema master.sysxlogins.


b) Funciones fijas de base de datos
Las funciones fijas de base de datos permiten agrupar los privilegios administrativos en el nivel de base de datos. Las
funciones fijas de base de datos estn almacenadas en la tabla del sistema sysusers de cada base de datos.

Ing. Elvis Guillermo Huarcaya Quispe Pg.

117
Gestin de informtica II

La funcin public
La funcin public es una funcin de base de datos especial a la que pertenecen todos los usuarios de la base de
datos y que no se puede quitar. La funcin public:
- Mantiene todos los permisos predeterminados de los usuarios de una base de datos.
- No puede tener usuarios, grupos o funciones asignados, ya que los usuarios, grupos y funciones ya
pertenecen a ella de forma predeterminada.
- Se encuentra en todas las bases de datos, incluidas las bases de datos master, msdb, tempdb, model y
todas las bases de datos de usuario.
- No se puede eliminar.
Asignacin de una cuenta de seguridad a una funcin fija de base de datos
Para agregar una cuenta de seguridad como miembro de una funcin fija de base de datos, utilice el Administrador
corporativo de SQL Server o el procedimiento almacenado del sistema sp_addrolemember. Slo los miembros de la
funcin db_owner pueden ejecutar el procedimiento almacenado del sistema sp_addrolemember para cualquier
funcin de la base de datos.
Al asignar cuentas de seguridad a una funcin fija de base de datos, tenga en cuenta los siguientes hechos:
- Las funciones fijas de base de datos no se pueden agregar, modificar ni quitar.
- Cualquier miembro de una funcin fija de base de datos puede agregar otras cuentas de inicio de sesin a
esa funcin.
Tambin puede utilizar el procedimiento almacenado del sistema sp_droprolemember para eliminar una cuenta de
seguridad de una funcin.

c) Funciones de base de datos definidas por el usuario
La creacin de una funcin de base de datos definida por el usuario permite crear un grupo de usuarios con un
conjunto de permisos comunes. Debe agregar una funcin definida por el usuario a la base de datos en los casos
siguientes:
- Cuando un grupo de personas necesite realizar un conjunto de actividades especificado en SQL Server y
no exista un grupo de Windows 2000 aplicable.
- Si no tiene permisos para administrar las cuentas de usuario de Windows 2000.

Creacin de una funcin de base de datos definida por el usuario
Para crear una nueva funcin de base de datos, utilice el Administrador corporativo de SQL Server o el procedimiento
almacenado del sistema sp_addrole. Por cada funcin definida por el usuario se agrega una entrada a la tabla
sysusers de la base de datos actual. Slo los miembros de la funcin db_securityadmin o db_owner pueden
ejecutar sp_addrole.


Ing. Elvis Guillermo Huarcaya Quispe Pg.

118
Gestin de informtica II
Al crear una funcin de base de datos, tenga en cuenta lo siguiente:
- Cuando aplique permisos a la funcin, todos los miembros de la funcin obtendrn el efecto del permiso, igual
que si el permiso se hubiera aplicado directamente a las propias cuentas de los miembros.
Asignacin de una cuenta de seguridad a una funcin de base de datos definida por el usuario
Despus de crear una funcin, utilice el Administrador corporativo de SQL Server o el procedimiento almacenado del
sistema sp_addrolemember para agregar usuarios o funciones como miembros de la funcin. Slo los miembros de
la funcin fija del servidor sysadmin o de las funciones fijas de base de datos db_securityadmin y db_owner, o el
propietario de la funcin pueden ejecutar sp_addrolemember para agregar un miembro a una funcin de base de
datos definida por el usuario.

En la tabla siguiente se enumeran procedimientos almacenados del sistema adicionales que se pueden utilizar para
administrar funciones de base de datos.

Procedimiento almacenado de sistema Descripcin
sp_addrole funcin Agrega una funcin de SQL Server de la base de datos
actual.
sp_droprole funcin Quita una funcin de SQL Server de la base de datos actual.
sp_addrolemember funcin, usuario Agrega un miembro a una funcin de base de datos definida
por el usuario
sp_droprolemember funcin, usuario Quita un miembro a una funcin de base de datos definida
por el usuario

3. ASIGNACIN DE PERMISOS A USUARIOS Y FUNCIONES
Despus de haber asignado cuentas de inicio de sesin a cuentas de usuario y funciones, debe asignar permisos para exigir la
seguridad de la base de datos.
Los permisos especifican para qu objetos de la base de datos tienen autorizacin los usuarios y qu pueden hacer los usuarios
con esos objetos. Los permisos que un usuario tiene en una base de datos dependen de los permisos de la cuenta de usuario y
de las funciones a las que pertenezca el usuario. Es importante disear los permisos que vaya a conceder a cada usuario o
cada grupo. Todas las bases de datos tienen su propio sistema de permisos independiente.
Tipos de permisos




a) Permisos de instruccin
Las actividades relativas a la creacin de bases de datos o de elementos en una base de datos requieren una
clase de permisos llamada permisos de instruccin. Los permisos de instruccin ofrecen a los usuarios el privilegio
de emitir ciertas instrucciones Transact-SQL. Los permisos de instruccin, como CREATE DATABASE, se aplican

Ing. Elvis Guillermo Huarcaya Quispe Pg.

119
Gestin de informtica II
a la misma instruccin, no al elemento especfico que se define en la base de datos. Slo los miembros de la
funcin sysadmin, db_owner o db_securityadmin pueden conceder permisos de instruccin.
b) Permisos de objeto
Las actividades relacionadas con los datos o la ejecucin de procedimientos requieren una clase de permisos
conocida como permisos de objeto.
c) Permisos predefinidos
Slo los miembros de funciones fijas o los propietarios de los objetos de base de datos pueden desempear
ciertas actividades. Los permisos que ejecutan dichas actividades se conocen como permisos predefinidos o
implcitos.
Concesin, denegacin y revocacin
Los permisos de un usuario o una funcin pueden estar en uno de tres estados: concedido, denegado o revocado. Los
permisos que no se han concedido ni denegado a un usuario son neutros, como si se hubieran revocado. Los permisos
se almacenan como entradas de la tabla del sistema sysprotects en cada base de datos.

En la tabla siguiente se describen los tres estados de un permiso.
Instruccin Estado de la entrada en la tabla
sysprotects
Descripcin
GRANT Positivo Puede ejecutar una accin.
DENY Negativo No puede ejecutar una accin y no
puede ser sobrescrito por la
pertenencia a una funcin.
REVOKE Ninguno No puede ejecutar una accin, pero
puede ser sobrescrito por la
pertenencia a una funcin.

Los permisos concedidos son acumulativos; los usuarios pueden ejecutar todas las acciones para las que se les haya
concedido permiso individualmente y todas las acciones para las que se haya concedido permiso a las funciones a las
que pertenezcan.
La instruccin DENY impide que los usuarios realicen acciones. Sobrescribe un permiso de una funcin a la que el
usuario pertenece, tanto si se ha concedido el permiso al usuario directa como indirectamente.
Los usuarios tienen permiso para ejecutar una accin si se dan las dos condiciones siguientes:

Ing. Elvis Guillermo Huarcaya Quispe Pg.

120
Gestin de informtica II
- Se les ha concedido el permiso directamente o pertenecen a una funcin a la que se ha concedido el
permiso.
- El permiso no se ha denegado directamente al usuario o a una de las funciones a las que el usuario
pertenece.

Concesin de permisos para permitir el acceso

Puede conceder permisos a cuentas de seguridad y permitir que las cuentas realicen actividades o trabajen con los
datos de una base de datos.
Al conceder permisos, tenga en cuenta los siguientes hechos:
- Slo puede conceder permisos en la base de datos actual.
- El derecho para conceder permisos corresponde de forma predeterminada a los miembros de las funciones
sysadmin, db_owner y db_securityadmin, y a los propietarios de objetos.

Puede conceder permisos con el Administrador corporativo de SQL Server o con la instruccin GRANT.
Los permisos disponibles varan en funcin de los objetos seleccionados. Por ejemplo, un procedimiento almacenado
tiene permisos EXECUTE; una tabla o una vista tienen los permisos SELECT, INSERT, UPDATE, DELETE y permisos
de integridad referencial; y las columnas individuales de una tabla o vista tienen los permisos SELECT y UPDATE.
Denegacin de permisos para impedir el acceso
Puede que, ocasionalmente, desee limitar los permisos de un usuario o una funcin; para ello, puede denegar los
permisos a esa cuenta de seguridad. La denegacin de permisos de una cuenta de seguridad:
- Quita los permisos previamente concedidos al usuario o funcin.
- Desactiva los permisos heredados de otra funcin.
- Asegura que el usuario o funcin no herede permisos de otra funcin en el futuro.


Al denegar permisos, tenga en cuenta los siguientes hechos:
- Slo puede denegar permisos en la base de datos actual.
- El permiso para denegar permisos corresponde de forma predeterminada a los miembros de las funciones
sysadmin, db_owner y db_securityadmin, y a los propietarios de los objetos.
Para denegar permisos, puede utilizar el Administrador corporativo de SQL Server o la instruccin DENY.

Revocacin de permisos

Ing. Elvis Guillermo Huarcaya Quispe Pg.

121
Gestin de informtica II

Para desactivar un permiso concedido o denegado, puede revocarlo. La revocacin de permisos es similar a la
denegacin de permisos en que ambas acciones quitan un permiso concedido. La diferencia estriba en que mientras la
revocacin de un permiso quita un permiso concedido, no impide que el usuario o la funcin hereden ese permiso en el
futuro.
Para quitar un permiso previamente concedido o denegado, puede utilizar el Administrador corporativo de SQL Server
o la instruccin REVOKE.

Ing. Elvis Guillermo Huarcaya Quispe Pg.

122
Gestin de informtica II
PROGRAMACIN EN SQL
1. Introduccin a los procedimientos almacenados
Definicin de procedimientos almacenados
Un procedimiento almacenado son instrucciones precompiladas de Transact-SQL que se almacena en la base de datos
del servidor. Debido a que los procedimientos almacenados son precompilados, por lo general ofrecen mejor desempeo
que cualquier consulta.
Los procedimientos almacenados en SQL Server son similares a los procedimientos de otros lenguajes de programacin
ya que pueden:
- Contener instrucciones que realizan operaciones en la base de datos; incluso tienen la capacidad de llamar a otros
procedimientos almacenados.
- Aceptar parmetros de entrada.
- Devolver un valor de estado a un procedimiento almacenado que realiza la llamada para indicar que se ha ejecutado
correctamente o que se ha producido algn error
- Devolver varios valores al procedimiento almacenado o al proceso por lotes que realiza la llamada en forma de
parmetros de salida.
Procesamiento y ejecucin de los procedimientos almacenados
El procesamiento de un procedimiento almacenado conlleva crearlo y ejecutarlo la primera vez, lo que coloca su plan de
consultas en la cach de procedimientos. La cach de procedimientos es un bloque de memoria que contiene los planes
de ejecucin de todas las instrucciones de Transact-SQL que se estn ejecutando actualmente. El tamao de la cach de
procedimientos flucta dinmicamente de acuerdo con los grados de actividad. La cach de procedimientos se encuentra
en el bloque de memoria que es la unidad principal de memoria de SQL Server. Contiene la mayor parte de las estructuras
de datos que usan memoria en SQL Server.

Creacin
Cuando se crea un procedimiento almacenado, las instrucciones que hay en l se analizan para ver si son correctas desde
el punto de vista sintctico. A continuacin, SQL Server almacena el nombre del procedimiento almacenado en la tabla del
sistema sysobjects y su texto en la tabla del sistema syscomments en la base de datos activa. Si se detecta un error de
sintaxis, se devuelve un error y no se crea el procedimiento almacenado.
Ejecucin (por primera vez o recompilacin)
La primera vez que se ejecuta un procedimiento almacenado o si el procedimiento almacenado se debe volver a compilar,
el procesador de consultas lo lee en un proceso llamado resolucin.
Ciertos cambios en una base de datos pueden hacer que un plan de ejecucin sea ineficaz o deje de ser vlido. SQL
Server detecta estos cambios y vuelve a compilarlo automticamente cuando se produce alguna de las situaciones
siguientes:
- Se realiza algn cambio estructural en una tabla o vista a la que hace referencia la consulta (ALTER TABLE y ALTER
VIEW).
- Se quita un ndice usado por el plan de ejecucin.
- Se realizan cambios importantes en las claves (la instruccin INSERT o DELETE) de una tabla a la que hace
referencia una consulta.
Optimizacin
Cuando un procedimiento almacenado pasa correctamente la etapa de resolucin, el optimizador de consultas de SQL
Server analiza las instrucciones de Transact-SQL del procedimiento almacenado y crea un plan que contiene el mtodo
ms rpido para obtener acceso a los datos. Para ello, el optimizador de consultas tiene en cuenta lo siguiente:
- La cantidad de datos de las tablas.
- La presencia y naturaleza de los ndices de las tablas, y la distribucin de los datos en las columnas indizadas.
- Los operadores de comparacin y los valores de comparacin que se usan en las condiciones de la clusula
WHERE.
- La presencia de combinaciones y las clusulas UNION, GROUP BY u ORDER BY.

Ing. Elvis Guillermo Huarcaya Quispe Pg.

123
Gestin de informtica II
Compilacin
La compilacin hace referencia al proceso consistente en analizar el procedimiento almacenado y crear un plan de
ejecucin que se encuentra en la cach de procedimientos. La cach de procedimientos contiene los planes de ejecucin
de los procedimientos almacenados ms importantes. Entre los factores que aumentan el valor de un plan se incluyen los
siguientes:
- Tiempo requerido para volver a compilar (costo de compilacin alto)
- Frecuencia de uso

Ventajas de los procedimientos almacenados
Los procedimientos almacenados ofrecen varias ventajas. Pueden:
- Compartir la lgica de la aplicacin con las restantes aplicaciones, lo que asegura que el acceso y la modificacin de
los datos se hace de una forma coherente.
Los procedimientos almacenados pueden encapsular la funcionalidad del negocio. Las reglas o directivas
empresariales encapsuladas en los procedimientos almacenados se pueden cambiar en una sola ubicacin. Todos
los clientes pueden usar los mismos procedimientos almacenados para asegurar que el acceso y modificacin de los
datos es coherente.
- Apartar a los usuarios de la exposicin de los detalles de las tablas de la base de datos. Si un conjunto de
procedimientos almacenados permite llevar a cabo todas las funciones de negocio que los usuarios necesitan, los
usuarios no tienen que tener acceso a las tablas directamente.
- Proporcionar mecanismos de seguridad. Los usuarios pueden obtener permiso para ejecutar un procedimiento
almacenado incluso si no tienen permiso de acceso a las tablas o vistas a las que hace referencia.
- Mejorar el rendimiento. Los procedimientos almacenados implementan muchas tareas como una serie de
instrucciones de Transact-SQL. Se puede aplicar lgica condicional a los resultados de las primeras instrucciones de
Transact-SQL para determinar cules son las siguientes que deben ejecutarse. Todas estas instrucciones de
Transact-SQL y la lgica condicional pasa a ser parte de un nico plan de ejecucin del servidor.
- Reducir el trfico de red. En lugar de enviar cientos de instrucciones de Transact-SQL por la red, los usuarios pueden
realizar una operacin compleja mediante el envo de una nica instruccin, lo que reduce el nmero de solicitudes
que se pasan entre el cliente y el servidor.

Recomendaciones para la creacin de procedimientos almacenados
- Evitar situaciones en las que el dueo de un procedimiento almacenado y el dueo de las tablas referenciadas sean
distintos, se recomienda que los usuarios estn mapeados como dbo, para todos los objetos de una base de datos
Debe tener permisos apropiados en todas las tablas o vistas que son referenciadas
Evite situaciones en las que el dueo de un procedimiento almacenado y el dueo de las tablas referenciadas
sean distintos
- Disee el procedimiento almacenado de manera tal que ejecute una sola tarea
- Cree, pruebe, y ponga a punto a su procedimiento almacenado en el servidor; luego prubelo en el cliente
- Para distinguir fcilmente a un procedimiento almacenado del sistema de un procedimiento creado por el usuario ,
evite el uso del prefijo sp_ al nombrar el procedimiento
- Si no desea que los usuarios puedan ver el texto de sus procedimientos almacenados, debe crearlos con la opcin
WITH ENCRYPTION. Si no usa WITH ENCRYPTION, los usuarios pueden usar el procedimiento almacenado del
sistema sp_helptext para ver el texto de procedimientos almacenados en la tabla de sistema syscomments

2. Creacin, ejecucin, definicin, modificacin y eliminacin de procedimientos almacenados
Creacin y ejecucin de procedimientos almacenados
Debe crear el procedimiento almacenado en la base de datos actual. La creacin de un procedimiento almacenado es
similar a la creacin de una vista. Primero, escriba y pruebe las sentencias Transact-SQL que desea incluir en el
procedimiento almacenado. A continuacin, si recibe los resultados esperados, cree el procedimiento almacenado
Uso de CREATE PROCEDURE
Los procedimientos almacenados se crean con la instruccin CREATE PROCEDURE. Considere los hechos siguientes
cuando cree procedimientos almacenados:

- Los procedimientos almacenados pueden hacer referencia a tablas, vistas, funciones definidas por el usuario y otros
procedimientos almacenados, as como a tablas temporales.
- Si un procedimiento almacenado crea una tabla local temporal, la tabla temporal slo existe para atender al
procedimiento almacenado y desaparece cuando finaliza la ejecucin del mismo.
- Una instruccin CREATE PROCEDURE no se puede combinar con otras instrucciones de Transact-SQL en un solo
proceso por lotes.
- La definicin de CREATE PROCEDURE puede incluir cualquier nmero y tipo de instrucciones de Transact-SQL, con
la excepcin de las siguientes instrucciones de creacin de objetos: CREATE DEFAULT, CREATE PROCEDURE,
CREATE RULE, CREATE TRIGGER y CREATE VIEW. En un procedimiento almacenado se pueden crear otros
objetos de la base de datos y deben calificarse con el nombre del propietario del objeto.
- Para ejecutar la instruccin CREATE PROCEDURE, debe ser miembro de la funcin de administradores del sistema
(sysadmin), de la funcin de propietario de la base de datos (db_owner) o de la funcin de administrador del
lenguaje de definicin de datos (db_ddladmin), o debe haber recibido el permiso CREATE PROCEDURE.
- El tamao mximo de un procedimiento almacenado es 128 megabytes (MB), segn la memoria disponible

Ing. Elvis Guillermo Huarcaya Quispe Pg.

124
Gestin de informtica II

Procedimiento que no recibe ni devuelve parmetros

Sintaxis:
CREATE PROCEDURE nombre_procedimiento
[WITH ENCRYPTION]
AS
sentenciasSQL

Ejemplo: Crear un procedimiento almacenado que genere la lista de precios de los Productos de Minimarket

USE Minimarket
go

CREATE PROCEDURE usp_ListaPrecios
AS
SELECT c.Categoria,p.IdProducto, p.Nombre, p.UnidadMedida
FROM PRODUCTO as p INNER JOIN CATEGORIA as c
ON p.IdCategoria=c.IdCategoria
ORDER BY 1,3
go

Para ejecutar el procedimiento:
EXEC usp_ListaPrecios
go

Ejemplo: Crear un procedimiento almacenado que genere la lista de precios de los Productos de que registran salida del
almacn, los campos a mostrar de la lista deben ser el cdigo del producto, y el nombre del producto. El usuario no debe
ver el texto del procedimiento
Use Minimarket
go

CREATE PROCEDURE usp_ListaProductosSalidaAlmacen
WITH ENCRYPTION
AS
SELECT DISTINCT Guia_detalle.idproducto, nombre
FROM Guia_detalle INNER JOIN Producto
ON Guia_detalle.idProducto=Producto.IdProducto
ORDER BY Guia_detalle.idproducto
go

Para ejecutar el procedimiento:
EXEC usp_ListaProductosSalidaAlmacen
go

Procedimientos que reciben parmetros
Sintaxis:
CREATE PROCEDURE nombre_procedimiento
@parmetro1 tipo_dato [ = valor],
@parmetro2 tipo_dato [ = valor],
AS
sentenciasSQL

Ejemplo: Crear un procedimiento que entregue la lista de productos del proveedor X, respecto a una determinada
categora de producto Y, donde x es el cdigo del proveedor e y es el cdigo de la categora del producto
USE Minimarket
go

CREATE PROCEDURE usp_ListaProveedorCategoria
@proveedor int, @categoria int
AS
SELECT idProducto, nombre
FROM PRODUCTO
WHERE idProveedor=@proveedor AND idCategoria=@categoria
go

--Para ejecutar el procedimiento

Ing. Elvis Guillermo Huarcaya Quispe Pg.

125
Gestin de informtica II
DECLARE @codProv int, @codCat int
SET @codProv =14
SET @codCat=1
EXEC usp_ListaProveedorCategoria @codProv,@codCat
go

--Otra forma de ejecutar el procedimiento
EXEC usp_ListaProveedorCategoria 14,1
go
--Tambin tenemos
EXEC usp_ListaProveedorCategoria
@categoria=1,
@proveedor=14
go

Ejemplo: Crear un procedimiento que muestre el cdigo de la Gua de remisin, la direccin del local, la fecha de salida,
el monto total de la gua de remisin X, donde x es el cdigo de la gua de remisin
CREATE PROCEDURE usp_Guia_direccion_fecha
@nguia int
AS
SELECT Guia.IdGuia, Local.Direccion, Local.Distrito, Guia.FechaSalida,
sum(Guia_detalle.PrecioVenta* Guia_detalle.Cantidad) AS 'Monto Total'
FROM Guia INNER JOIN Guia_detalle
ON Guia.IdGuia = Guia_detalle.IdGuia
INNER JOIN Local
ON Guia.IdLocal=Local.IdLocal
GROUP BY Guia.IdGuia, Local.Direccion,Local.Distrito, Guia.FechaSalida
HAVING Guia.IdGuia=@nguia

--Para ejecutar el procedimiento
DECLARE @n_guia int
SET @n_guia=4
EXEC usp_Guia_direccion_fecha @n_guia
go

--Otra forma de ejecutar el procedimiento
EXEC usp_Guia_direccion_fecha 4
go
--Tambin tenemos
EXEC usp_Guia_direccion_fecha @nguia=4
Go

Procedimientos que recibe y entrega parmetros
Sintaxis:
CREATE PROCEDURE nombre_procedimiento
@parmetro1 tipo_dato [ = valor],
@parmetro2 tipo_dato [ = valor],
@parmetro3 tipo_dato [ = valor] OUTPUT,
AS
sentenciasSQL

Ejemplo: Crear un procedimiento que devuelva el monto mensual total de las guas de remisin correspondientes al ao Y
respecto al mes Z
USE Minimarket
go

CREATE PROCEDURE usp_MontoGuiasMes
@ao int, @mes int, @monto money OUTPUT
AS
SELECT @monto=
( SELECT
sum(Guia_detalle.cantidad*Guia_detalle.precioVenta)
FROM Guia_detalle INNER JOIN Guia
ON Guia_detalle.idGuia=Guia.idGuia
WHERE year(Guia.fechaSalida)=@ao AND
month(Guia.fechaSalida)=@mes)
go

Ing. Elvis Guillermo Huarcaya Quispe Pg.

126
Gestin de informtica II

--Para ejecutar el procedimiento
DECLARE @monto1 money
EXEC usp_MontoGuiasMes 2006,03,@monto1 OUTPUT
SELECT 'Monto Marzo 2005'=@monto1
go

Obtencin de la definicin de un procedimiento almacenado
Puede usar los procedimientos almacenados del sistema para obtener informacin sobre la definicin de los
procedimientos almacenados de la base de datos

Tabla del Sistema Almacena Procedimiento
sys.sysobjects Nombre del procedimiento almacenado
sp_help nombre_procedimiento
sp_stored_procedures
sys.sysdepends
Nombre de los objetos dependientes al
procedimiento almacenado
sp_depends nombre_procedimiento
sys.syscomments
Sentencia que defini al procedimiento
almacenado
sp_helptext nombre_procedimiento

Ejemplo: Obtener la informacin del procedimiento almacenado usp_MontoGuiasMes

Use Minimarket;
EXEC sp_help usp_MontoGuiasMes;



Ejemplo: Obtener los nombres de los procedimientos almacenados de la base de datos Minimarket

Use Minimarket;
EXEC sp_stored_procedures;


Ejemplo: Obtener los objetos dependientes del procedimientos almacenado usp_MontoGuiasMes de la base de datos
Minimarket

Use Minimarket;
EXEC sp_depends usp_MontoGuiasMes;



Ejemplo: Obtener la sentencia que defini el procedimiento almacenado usp_MontoGuiasMes de la base de datos
Minimarket
Use Minimarket;
EXEC sp_helptext usp_MontoGuiasMes;


Ing. Elvis Guillermo Huarcaya Quispe Pg.

127
Gestin de informtica II


Modificacin y eliminacin de procedimientos almacenados

Modificacin de un procedimiento almacenado
Para modificar un procedimiento almacenado conservando su asignacin de permisos, ejecute la sentencia ALTER
PROCEDURE. La definicin previa del procedimiento ser reemplazada por la definicin establecida en ALTER
PROCEDURE

Sintaxis:
ALTER PROCEDURE nombre_procedimiento
@parmetro1 tipo_dato [ =valor],
@parmetro2 tipo_dato [ =valor],
@parmetro3 tipo_dato [ =valor] OUTPUT,
AS
sentenciasSQL

Eliminacin de un procedimiento almacenado (DROP PROCEDURE)
Use la sentencia DROP PROCEDURE para eliminar los procedimientos almacenados definidos por el usuario de la base
de datos actual
Antes de eliminar un procedimiento almacenado, ejecute el procedimiento almacenado sp_depends para determinar los
objetos que dependen del procedimiento almacenado

Sintaxis:
DROP PROCEDURE nombreProcedimiento

DESENCADENADORES (TRIGGERS)

Definicin de desencadenadores
Funcionamiento de los desencadenadores
Ejemplos de desencadenadores
Consideraciones acerca del rendimiento

1. Introduccin a los desencadenadores
Definicin de desencadenadores
Un desencadenador es una clase especial de procedimiento almacenado que se ejecuta siempre que se intenta
modificar los datos de una tabla que el desencadenador protege. Los desencadenadores estn asociados a tablas
especficas.
Asociacin a una tabla
Los desencadenadores se definen para una tabla especfica, denominada tabla del desencadenador.
Invocacin automtica
Cuando se intenta insertar, actualizar o eliminar datos de una tabla en la que se ha definido un desencadenador para
esa accin especfica, el desencadenador se ejecuta automticamente. No es posible evitar su ejecucin.
Imposibilidad de llamada directa
A diferencia de los procedimientos almacenados del sistema normales, no es posible invocar directamente los
desencadenadores, que tampoco pasan ni aceptan parmetros.

Uso de los desencadenadores


Consideraciones acerca de los desencadenadores
Tipos de desencadenantes DML
a) Desencadenantes AFTER

Ing. Elvis Guillermo Huarcaya Quispe Pg.

128
Gestin de informtica II
Son disparados despus que una accin INSERT, UPDATE DELETE es ejecutada. Este tipo de
desencadenante slo se puede especificar para tablas
b) Desencadenantes INSTEAD OF
Son ejecutadas en lugar de la accin de disparo habitual. Este desencadenante se puede definir tambin
sobre vistas que tienen una o ms tablas subyacentes

Creacin de desencadenadores DML
Los desencadenantes son creados con la declaracin CREATE TRIGGER. La declaracin especifica la tabla en la que
el desencadenante se define, los eventos que hacen que se ejecute, y las instrucciones particulares para el
desencadenante

Sintaxis:
CREATE TRIGGER nombre_desencadenante
ON nombre_tabla | nombre_vista
FOR [INSERT] [,] [UPDATE] [,][DELETE]
| AFTER [INSERT] [,] [UPDATE] [,] [DELETE]
| INSTEAD OF [INSERT] [,] [UPDATE] [,] [DELETE]

AS
sentenciasSQL

- FOR y AFTER definen desencadenantes AFTER, FOR se conserva por compatibilidad con versiones
anteriores de SQL Server
- Los dueos de las tablas, as como los miembros de los roles db_owner y sysadmin, tienen permiso para
crear un desencadenante
- SQL Server no permite usar las declaraciones siguientes en una definicin de desencadenante:
- CREATE DATABASE, ALTER DATABASE y DROP DATABASE
- LOAD DATABASE Y LOAD LOG
- RESTORE DATABASE
- RESTORE LOG
- RECONFIGURE

Preparacin de las tablas:

Ejemplo: Crear una base de datos de Prueba que contendr la tablas en la que disearn y probarn los
desencadenantes






Luego actualice mediante las instrucciones transact SQL el monto de la tabla Factura
Use Prueba
go

Ing. Elvis Guillermo Huarcaya Quispe Pg.

129
Gestin de informtica II

UPDATE Factura
SET MontoFactura =
( SELECT SUM (PrecioUnitario*Cantidad)
FROM DetalleFactura
WHERE DetalleFactura.IdFactura=Factura.IdFactura)
Go

Al ejecutar tenemos:


Desencadenante AFTER INSERT

Ejemplo: Crear un desencadenante AFTER INSERT que recalcule y actualice el monto de una factura cada vez que
se inserta un detalle para dicha factura

Use Prueba
go

CREATE TRIGGER tg_insert_DetalleFactura
ON DetalleFactura AFTER INSERT
AS
DECLARE @nfactura int
DECLARE @nmonto money
SET @nfactura=( SELECT IdFactura FROM inserted)
SET @nmonto = ( SELECT sum(PrecioUnitario*Cantidad)
FROM DetalleFactura
WHERE DetalleFactura.IdFactura=@nfactura )
UPDATE Factura
SET MontoFactura=@nmonto
WHERE IdFactura=@nFactura
go

Para probar el desencadenante codifique y ejecute los siguientes batch

-- Registrando la factura 3
SET DATEFORMAT dmy ;
INSERT INTO Factura VALUES (3,06/07/2006, C003, NULL) ;
-- Insertando los valores para probar el desencadenante
INSERT DetalleFactura VALUES (3, 1001, 12.5, 20);
INSERT DetalleFactura VALUES (3, 1002, 20.5, 40);
-- verificando la actualizacin del monto de la tabla factura
SELECT * FROM factura;



Mecanismo de un desencadenante AFTER INSERT La tabla INSERTED
Cuando se ejecuta una declaracin INSERT en una tabla que tiene definido un desencadenante AFTER INSERT, se
crea automticamente una tabla temporal INSERTED que tiene la misma estructura que la tabla con el
desencadenante.
La tabla temporal INSERTED contiene una copia de la fila insertada por la declaracin INSERT ejecutada en la tabla
con el desencadenante.

TABLA: INSERTED
Idfactura Improducto PrecioUnitario Cantidad
3 1001 12.5 20

Desencadenante AFTER DELETE

Ing. Elvis Guillermo Huarcaya Quispe Pg.

130
Gestin de informtica II
Crear un desencadenante AFTER DELETE que recalcule y actualice el monto de una factura cada vez que se
elimina un detalle para dicha factura

Use Prueba
go

--Desencadenante por ELIMINACIN para Detallefactura
--Recalcule el monto de la factura por cada detalle eliminado

CREATE TRIGGER tg_delete_DetalleFactura
ON DetalleFactura AFTER DELETE
AS
DECLARE @nfactura int
DECLARE @nmonto money
SET @nfactura=( SELECT IdFactura FROM deleted)
SET @nmonto = ( SELECT sum(PrecioUnitario*Cantidad)
FROM DetalleFactura
WHERE DetalleFactura.IdFactura=@nfactura )
UPDATE Factura
SET MontoFactura=@nmonto
WHERE IdFactura=@nFactura
go

-- Prueba del desencadenante mediante la eliminacin
-- del primer detalle de la factura 1

DELETE FROM DetalleFactura
WHERE IdFactura=1 AND IdProducto=1001;

-- Verificando la data
SELECT * FROM DetalleFactura;
SELECT * FROM Factura;



Mecanismo de un desencadenante AFTER DELETE La tabla DELETED
Cuando se ejecuta una declaracin DELETE en una tabla que tiene definido un desencadenante AFTER DELETE, se
crea automticamente una tabla temporal DELETED que tiene la misma estructura que la tabla con el
desencadenante.
La tabla temporal DELETED contiene a las filas que la declaracin DELETE ejecutada en la tabla con el
desencadenante ha eliminado.

TABLA: DELETED
Idfactura Improducto PrecioUnitario Cantidad
3 1001 12.5 20

Desencadenante AFTER UPDATE
Crear un desencadenante AFTER UPDATE que recalcule el monto de una factura cada vez que se actualiza la
cantidad o l precio de un detalle de dicha factura

Use Prueba
go


Ing. Elvis Guillermo Huarcaya Quispe Pg.

131
Gestin de informtica II
--Desencadenante por ACTUALIZACIN para Detallefactura
--Recalcule el monto de la factura por cada detalle actualizado respecto al ---
--precio y a la cantidad

CREATE TRIGGER tg_update_DetalleFactura
ON DetalleFactura AFTER UPDATE
AS
IF UPDATE (PrecioUnitario) OR UPDATE(cantidad)
BEGIN
DECLARE @nfactura int
DECLARE @nmonto money
SET @nfactura=( SELECT IdFactura FROM inserted)
SET @nmonto = ( SELECT sum(PrecioUnitario*Cantidad)
FROM DetalleFactura
WHERE DetalleFactura.IdFactura=@nfactura )
UPDATE Factura
SET MontoFactura=@nmonto
WHERE IdFactura=@nFactura
END
go
--Probando el desencadenante triplicando la cantidad para
--el segundo producto (1008) del detalle de la factura N2

UPDATE Detallefactura
SET cantidad=cantidad*3
WHERE IdFactura =2 AND IdProducto=1008
go

--Verificando la data
SELECT * FROM DetalleFactura;
SELECT * FROM Factura;


Mecanismo de un desencadenante AFTER UPDATE
Cuando se ejecuta una declaracin UPDATE en una tabla que tiene definido un desencadenante AFTER UPDATE, se
crea automticamente las tabla temporales INSERTED y DELETED que tiene la misma estructura que la tabla con el
desencadenante.
La tabla temporal DELETED contiene a las filas afectadas por la declaracin UPDATE, pero con los valores anteriores
a la ejecucin de UPDATE. La tabla temporal INSERTED contiene las filas afectadas pero con los valores actualizados.

Ing. Elvis Guillermo Huarcaya Quispe Pg.

132
Gestin de informtica II





BIBLIOGRAFA






















Date C.J. Introduccin a los Sistemas de Base de Datos, Edicin Pearson Education 7 .
Ed. Mxico 2001
JHONSON, JAMES L. , Base de Datos. Ediciones Oxford University Press- Mexico 2000
LUQUE IRENE/ GOMEZ NIETO NGEL / LOPEZ ENRIQUE / CERRUELA GONZALO,
Base de Datos desde Chen hasta Codd con Oracle. Edicin AlfaOmega - Espaa 2002
DE MIGUEL ADORACION /PIATTINI MARIO/ ESPERANZA MARCOS. Diseo de base
de datos relacional edicin alfaomega Espaa 2000.
RECURSOS DE INTERNET:
http://www.monografias.com
http://www.solocursos.net
http://www.programacion.com

Anda mungkin juga menyukai