(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