Vous êtes sur la page 1sur 95

UNIVERSIDAD VERACRUZANA

FACULTAD DE ESTADÍSTICA E INFORMÁTICA

Experiencia Educativa:
Taller de Integración III

Maestro:
PhD. David Sarmiento Cervantes

Documentación para RTF

Proyecto:
Sistema de Gestión de Proyectos

Equipo 6:
Francisco Javier Pérez Domínguez
Hugo Durán Hernández
Armando Luna Sánchez

Xalapa, Ver., a 20 de Noviembre de 2015


ÍNDICE
Conceptos de Base de Datos ..............................................................................................................................4

Conceptos Fundamentales ...................................................................................................................................4

Conceptos de SQL Server......................................................................................................................................8

Conceptos de Oracle.......................................................................................................................................... 11

1. Contexto del Sistema.................................................................................................................................... 13

2. Análisis ............................................................................................................................................................. 13

2.1. Modelo Entidad-Relación ....................................................................................................................... 14

2.2. Esquema de Fragmentación ................................................................................................................. 14

2.3. Esquema de Ubicación .......................................................................................................................... 15

3. Diseño .............................................................................................................................................................. 15

3.1. Diseño de la Base de Datos .................................................................................................................. 16

3.2. Diccionario de Datos .............................................................................................................................. 16

4. Implementación .............................................................................................................................................. 20

4.1. Script de Creación en MySQL............................................................................................................... 21

4.2. Instalación de SQL Server 2008 ........................................................................................................... 23

4.3. Script de Creación en SQL Server ....................................................................................................... 33

4.4. Replicación en SQL Server ................................................................................................................... 36

4.5. Funcionalidades de Base de Datos en SQL Server .......................................................................... 45

4.5.1. Vistas ................................................................................................................................................. 45

4.5.2. Funciones.......................................................................................................................................... 45

4.5.3. Procedimientos Almacenados ....................................................................................................... 46

4.5.4. Triggers ............................................................................................................................................. 47

4.6. Instalación de Oracle 10 XE .................................................................................................................. 50

4.7. Script de Creación en Oracle ................................................................................................................ 53


4.8. Funcionalidades de Base de Datos en Oracle ................................................................................... 59

4.8.1. Vistas ................................................................................................................................................. 59

4.8.2. Funciones.......................................................................................................................................... 60

4.8.3. Procedimientos Almacenados ....................................................................................................... 61

4.8.4. Triggers ............................................................................................................................................. 62

5. Pruebas ............................................................................................................................................................ 62

5.1. Herramienta ETL ..................................................................................................................................... 62

5.2. Carga de Datos en SQL Server ............................................................................................................ 63

5.3. Pruebas Funcionales en SQL Server .................................................................................................. 72

5.3.1. Vistas ................................................................................................................................................. 72

5.3.2. Funciones.......................................................................................................................................... 72

5.3.3. Procedimientos Almacenados ....................................................................................................... 74

5.3.4. Triggers ............................................................................................................................................. 77

5.4. Carga de Datos en Oracle ..................................................................................................................... 80

5.5. Pruebas Funcionales en Oracle ........................................................................................................... 82

5.5.1. Vistas ................................................................................................................................................. 82

5.5.2. Funciones.......................................................................................................................................... 83

5.5.3. Procedimientos Almacenados ....................................................................................................... 84

5.5.4. Triggers ............................................................................................................................................. 85

6. Creación de la aplicación ADF. ................................................................................................................... 87


Conceptos de Base de Datos

Conceptos Fundamentales

Conceptos Concepto en español Descripción en español Referencia


Lock Bloqueo El comando Lock bloquea un objeto, https://msdn.microsoft.com/es-
para uso compartido o exclusivo, es/library/ms187193(v=sql.120).aspx
dentro del contexto de la transacción
actualmente activa. Solo los
administradores de bases de datos o
de servidores pueden ejecutar
explícitamente un comando Lock.

Roll Back Retroceso Un rollback es una operación que http://www.prograweb.com.m


devuelve a la base de datos a algún
x/admonBD/0401RollBackCo
estado previo. Los Rollbacks son
importantes para la integridad de la mmit.php
base de datos y son cruciales para la
recuperación de caídas de un servidor
de BD.

DBA Administrador de bases Es la persona responsable de los http://introbd2.blogspot.mx/


de datos aspectos ambientales de una base de
datos. En general esto incluye:
recuperabilidad, integridad, seguridad,
disponibilidad, desempeño, desarrollo
y soporte a pruebas.

DBMS Sistemas de gestión de Es un conjunto de programas que se


bases de datos encargan de manejar la creación y https://plataformasistemas.word
todos los accesos a las bases de datos, press.com/bases-de-datos/ques-
está compuesto por: DDL (Lenguaje es-un-dbms/
de Definición de Datos), DML
(Lenguaje de Manipulación de Datos)
y SQL (Lenguaje de Consulta). Los
DBMS más comunes son Oracle, SQL
Server, MySQL, PostgreSQL, etc.

ACID Atomicidad, ACID es un grupo de 4 propiedades http://www.dosideas.com/noticias/base-de-


Consistencia, que garantizan que las transacciones datos/973-acid-en-las-bases-de-datos.html
Aislamiento y en las bases de datos se realicen de
Durabilidad forma confiable.

Repository Repositorio Es un sitio centralizado donde se http://es.slideshare.net/YOSMAR050


almacena y mantiene información
8/repositorio-de-datos
digital, habitualmente bases de datos.
Los repositorios pueden estar en
internet, en un medio extraíble como
un CD, en el disco duro, etc.

Dead Lock Interbloqueo Un interbloqueo se produce cuando


dos o más tareas se bloquean entre sí http://basesdatosdistribuidas.blo
permanentemente teniendo cada tarea gspot.mx/2012/11/disciplinas-
un bloqueo en un recurso que las otras del-interbloqueo.html
tareas intentan bloquear.

Commit Finalización de Esta instrucción de SQL se utiliza http://www.gayatlacomulco.com/tut


transacción para confirmar como permanentes las
orials/tallerdebasesdedatos/t44.htm
modificaciones realizadas en una
transacción.

Transaction Transacción Es un conjunto de instrucciones que http://basededatosfrancisbrito.blogsp


se ejecutan formando una unidad de
ot.mx/2012/09/propiedades-
trabajo, es decir, en forma indivisible
o atómica. Un ejemplo de una acid.html
transacción compleja es la
transferencia de fondos de una cuenta
a otra, la cual implica múltiples
operaciones individuales.
Concurrency Concurrencia Se refiere al hecho de que los DBMS
permiten que muchas transacciones https://es.scribd.com/doc/55240694
puedan accesar a una misma base de /Concurrencia-en-Base-de-Datos
datos a la vez. En un sistema de estos
se necesitan algún tipo de
mecanismos de control de
concurrencia para asegurar que las
transacciones concurrentes no
interfieran entre sí.

Fragmentation Fragmentación Es el proceso de dividir una relación http://www.monografias.com/trabajos82/base-


(tabla) en pequeñas porciones datos-distribuidas/base-datos-
llamadas fragmentos. Las razones distribuidas.shtml
principales para la fragmentación son
el incremento del nivel de
concurrencia y el desempeño del
sistema.

Horizontal Fragmentation Fragmentación Consiste en particionar las tuplas http://base-de-


Horizontal (filas, registros) de una relación global datos0.tripod.com/unidad_3.htm
en subconjuntos. Cada subconjunto
puede contener datos con propiedades
comunes. Esto se puede definir
expresando cada fragmento como una
operación de selección (SL), de una
relación global.

Vertical Fragmentation Fragmentación Vertical Es la subdivisión de sus atributos http://base-de-


(columnas) en grupos. La datos0.tripod.com/unidad_3.htm
fragmentación vertical de R involucra
la definición de varios subconjuntos,
los cuales se obtienen por
proyecciones (PJ) de la relación
global R.

Derived Horizontal Fragmentación Este tipo de fragmentación particiona http://carlosproal.com/bda/bda05.html


Fragmentation Horizontal Derivada una tabla en base a un atributo(s) que
está presente en otra tabla(s).
Database Distribution Bases de Datos Son una colección de múltiples bases http://es.slideshare.net/MaxPerez1/base-de-
Distribuidas de datos interrelacionadas datos-distribuidas-12292104
lógicamente y distribuidas por una red
de computadores, formando una única
gran BD.

Replication Replicación Consiste en copiar y administrar http://chavez-atienzo-


objetos de base de datos, tales como 2013.blogspot.mx/2013/04/replicacion.html
tablas, hacia múltiples bases de datos
en localidades remotas que son parte
de un sistema de bases de datos
distribuido. Los cambios ejecutados
en una localidad son capturados y
guardados localmente antes de ser
aplicados a las localidades remotas.
Conceptos de SQL Server

Conceptos Concepto en español Descripción en español Referencia


SQL Lenguaje de Consulta Es el lenguaje utilizado para definir, http://www.aulaclic.es/sqls
Estructurado controlar y acceder a los datos
erver/t_2_1.htm
almacenados en una base de datos
relacional. SQL es un lenguaje
universal que se emplea en cualquier
sistema gestor de bases de datos
relacional. En SQL Server la versión
de SQL que se utiliza se llama
TRANSACT-SQL.

Query Consulta Un query es una consulta, puede ser http://dabds.blogspot.mx/2012/05/que-


una revisión o búsqueda de algún dato es-un-query.html
en una base de datos. En forma
genérica, query también puede tratarse http://www.alegsa.com.ar/Dic/query.php
de una inserción, actualización, y/o
eliminación en una base de datos.

Primary Key Llave primaria Se utiliza para definir la clave principal http://www.aulaclic.es/sql/t_8_2.htm
de la tabla. Las columnas que forman
la clave principal no pueden contener
valores nulos ni puede haber valores
duplicados de la combinación de
columnas.

Foreign Key Llave foránea Sirve para definir una clave foránea http://www.aulaclic.es/sql/t_8_2.htm
sobre una columna o una combinación
de columnas. Una clave foránea es una
columna o conjunto de columnas que
contiene un valor que hace referencia a
una fila de otra tabla.
Join Combinación La cláusula JOIN permite combinar https://emic8a.wordpress.com/201
registros de dos o más tablas en una
1/01/21/funciones-de-agrupacion/
base de datos relacional. Hay tres tipos
de JOIN: interno, externo, y cruzado.

View Vista Una vista es una alternativa para http://www.sqlserverya.com.ar/tem


mostrar datos de varias tablas. Una
arios/descripcion.php?cod=109&pu
vista es como una tabla virtual que
almacena una consulta. Los datos nto=103
accesibles a través de la vista no están
almacenados en la base de datos como
un objeto.

User Defined Function Funciones definidas por el Las funciones definidas por el usuario https://msdn.microsoft.com/es-
usuario de SQL Server son rutinas que aceptan es/library/ms191007(v=sql.120).aspx
parámetros, realizan una acción, como
un cálculo complejo, y devuelven el
resultado de esa acción como un valor.
El valor devuelto puede ser un valor
escalar único o un conjunto de
resultados.

Store Procedure Procedimiento almacenado Es un objeto perteneciente a una base https://es.scribd.com/doc/10325656


de datos, que contiene un conjunto de
/Procedimientos-Almacenados-y-
instrucciones SQL, tanto de consulta,
como de manipulación de datos, como Triggers-en-SQL-Server
de control de la secuencia del
programa, asociados a un nombre, y
que son ejecutados en conjunto. Puede
contener parámetros tanto de entrada
como de salida, así como devolver un
valor de retorno.

Trigger Disparador El trigger es un tipo especial de


procedimiento almacenado que se
https://es.scribd.com/doc/10325656
ejecuta automáticamente al intentarse
efectuar una modificación de los datos, /Procedimientos-Almacenados-y-
en la tabla a la que se encuentran Triggers-en-SQL-Server
asociados. Las operaciones o eventos
que pueden “disparar” un trigger son:
INSERT, UPDATE y DELETE.

DDL Lenguaje de Definición de Es el que se encarga de la modificación http://oracleuamericas.blogspot.mx


Datos de la estructura de los objetos de la
/2011/12/ddl-dml.html
base de datos. Incluye órdenes para
modificar, borrar o definir las tablas en
las que se almacenan las bases de
datos. Existen cuatro operaciones
básicas: CREATE, ALTER, DROP y
TRUNCATE.

DML Lenguaje de Manipulación Las sentencias DML son aquellas http://es.slideshare.net/heber/lenguaje-


de Datos utilizadas para insertar, borrar, de-manipulacin-de-datos
modificar y consultar los datos de una
base de datos. Estas sentencias son:
SELECT, INSERT, UPDATE,
DELETE.
Conceptos de Oracle

Conceptos Concepto en español Descripción en español Referencia


Index Organized Tables (IOT) Tablas organizadas de Tabla cuyos datos están ordenados https://msdn.microsoft.com/es-
índice físicamente en el disco por orden de es/library/ms152563(v=sql.120).aspx
índice; es similar a una tabla de Microsoft
SQL Server con un índice clúster. Una
tabla IOT se replica en un suscriptor como
una tabla con un índice clúster.

Instance Instancia La instancia se compone de la memoria y https://msdn.microsoft.com/es-


los procesos en segundo plano que es/library/ms152563.aspx
respaldan la base de datos. Una instancia
de Oracle se asigna siempre a una única
base de datos, mientras que una instancia
de SQL Server puede contener varias
bases de datos. Existen ocasiones en las
que una base de datos Oracle puede tener
varias instancias.

Oracle Listener Escucha de Oracle Controla el tráfico de red entrante de una https://msdn.microsoft.com/es-
instancia de base de datos Oracle. Al es/library/ms152563.aspx
configurar la conectividad de red de una
base de datos Oracle, se especifica el
protocolo mediante el que se envía el
tráfico y el puerto en el que el Listener
escucha el tráfico.

Row Id Identificador de fila Es un puntero que señala la ubicación de https://msdn.microsoft.com/es-


una fila concreta de una base de datos. es/library/ms152563.aspx
Puesto que recuperar filas usando ROWID
es más rápido que utilizar un recorrido de
tabla o índice.
Sequence Secuencia Objeto de base de datos que se utiliza para https://msdn.microsoft.com/es-
generar números exclusivos. La es/library/ms152563.aspx
replicación utiliza secuencias para ordenar
los cambios efectuados en las tablas
publicadas.

SQL Plus Interfaz de línea de Aplicación que se utiliza para obtener https://msdn.microsoft.com/es-
comandos de Oracle acceso y realizar consultas en bases de es/library/ms152563.aspx
datos Oracle. Es similar a la utilidad
sqlcmd de SQL Server.

Synonym Sinónimo Un sinónimo en Oracle, es una https://orlandoolguin.wordpress.c


representación local o pública de un objeto
om/2009/02/22/manejo-de-
perteneciente a un esquema. Sirve para
poder hacer referencia a aquel objeto sin sinonimos/
tener que anteponer su esquema. Un
sinónimo público puede ser visto por
todos los usuarios, pero uno privado, sólo
por el usuario que lo creó.

TNS Service Name Nombre de servicio Es una capa de comunicación que utilizan https://msdn.microsoft.com/es-
TNS las bases de datos Oracle. TNS Service es/library/ms152563.aspx
Name es el nombre por el que se conocen
las instancias de una base de datos Oracle
en una red. Se asigna un nombre a este
servicio cuando se configura la
conectividad de la base de datos Oracle.

User Schema Esquema de usuario Puede considerarse como un usuario de https://msdn.microsoft.com/es-


base de datos que es propietario de un es/library/ms152563.aspx
conjunto de objetos de base de datos
concreto.
1. Contexto del Sistema
Se desea diseñar una base de datos que ayude a la gestión de una base de datos de una empresa que
almacena información sobre los empleados, departamentos y proyectos que ésta realiza.

Se debe considerar que la empresa está está organizada en departamentos. Cada departamento controla cierto
número de proyectos y también en cada departamento se tiene asignado un empleado.

Cada uno de estos elementos tiene características que son necesarias para el control de los mismos.

De los departamentos la información que se registra es nombre del departamento, empleado que lo dirige así
como también un número único el cual servirá como identificador. De la misma manera se requiere llevar un
seguimiento de la fecha en la que dicho empleado comenzó a dirigir el departamento, siendo también
importante que un departamento puede estar distribuido en varios lugares.

Se sabe que cada departamento controla proyectos de los cuales se necesita saber nombre del proyecto,
ubicación donde se está desarrollando y un número único que sea el identificador de cada uno.

De los empleados los datos que se tienen son nombre del empleado, CURP, dirección, sueldo, sexo y su fecha
de nacimiento. Como antes se mencionó cada empleado está asignado a un departamento y a su vez puede
trabajar en diferentes proyectos aunque no pertenezcan al mismo departamento. Otro punto importante que se
debe registrar es el número de horas por semana que cada empleado labora en cada proyecto y quién es su
supervisor.

Se necesita también información sobre las personas a cardo de cada empleado. Por cada persona a cargo o
subordinado, se registrará su nombre, sexo, fecha de nacimiento y relación con el empleado.

2. Análisis
Consiste en relevar la información actual y proponer los rasgos generales de la solución que se propondrá a la
problemática mencionada en el contexto del sistema.
2.1. Modelo Entidad-Relación

Figura 1.- Modelo Entidad-Relación

Éste modelo representa de manera gráfica mediante entidades y relaciones el diseño de una base de datos
partiendo de una percepción del planteamiento de un problema.

2.2. Esquema de Fragmentación


Fragmentación Horizontal de la tabla Departamento:
DEPT1 = SL idDepartamento = 1 (DEPARTAMENTO)
DEPT2 = SL idDepartamento = 2 (DEPARTAMENTO)
DEPT3 = SL idDepartamento = 3 (DEPARTAMENTO)

Fragmentación vertical de la tabla Empleado:


EMP1 = PJ idEmpleado, nombre, Apellidomaterno, Apellidopaterno, dirección, sueldo, FechaNac (EMP)
EMP2 = (EMP)
Fragmentación Horizontal Derivada de empleado y departamento:

EMPD1 = EMP SJ idDepartamento = idDepartamento DEPT1


EMPD2 = EMP SJ idDepartamento = idDepartamento DEPT2
EMPD3 = EMP SJ idDepartamento = idDepartamento DEPT3

Fragmentación Horizontal Derivada de proyecto y departamento:

PROY1 = PROYECTO SJ idDepartamento = idDepartamento DEPT1


PROY2 = PROYECTO SJ idDepartamento = idDepartamento DEPT2
PROY3 = PROYECTO SJ idDepartamento = idDepartamento DEPT3

Fragmentación Horizontal Derivada de ubicación y departamento:

Ubicación1 = Ubicación SJ idUbicación = idUbicación DEPT1


Ubicación2 = Ubicación SJ idUbicación = idUbicación DEPT2
Ubicación3 = Ubicación SJ idUbicación = idUbicación DEPT3

2.3. Esquema de Ubicación

Sitio 1 Sitio 2 Sitio 3


(Xalapa) (Cardel) (Veracruz)
DEPARATMENTO DEPT1 DEPT2 DEPT3
EMPLEADO EMP2 EMP1
EMP3
EMPLEADO_DEPARTAMENTO EMPD1 EMPD2
EMPD3
PROYECTO PROY1
PROY2
PROY3
UBICACIÓN UBICACIÓN3 UBICACIÓN1 UBICACIÓN2

3. Diseño
El diseño consiste en definir la estructura de todas las partes del sistema que se está trabajando.
3.1. Diseño de la Base de Datos

3.2. Diccionario de Datos


Un diccionario de datos contiene las características lógicas de los datos que se van a utilizar en el sistema que
se está llevando a cabo. Se incluye nombre de la tabla, nombre de cada campo que contiene así como su tipo y
qué es lo que representa.

SEXO

Campo Tipo Tamaño Valor por Descripción


defecto

IDsexo Integer 10 No nulo Identificador del tipo de sexo.

Sexo Varchar 10 Nulo Define el sexo del empleado como


hombre o mujer.
PROYECTO

Campo Tipo Tamaño Valor por Descripción


defecto

IDProyectos Integer 10 No nulo Identificador del proyecto.

NombreProyecto Varchar 45 Nulo Nombre del proyecto que se


trabaja.

IDubicación Integer 10 No nulo Es una llave foránea que


identifica el lugar en el que se
trabaja el proyecto.

idDepartamento Integer 10 No nulo Es una llave foránea que


identifica el departamento
encargado del proyecto.

RELACIÓN

Campo Tipo Tamaño Valor por Descripción


defecto

IDRelación Integer 10 No nulo Identificador del tipo de


relación.

Tiporelación Varchar 30 Nulo Este campo identifica cual es


la relación que tiene un
empleado con otro dentro de
la empresa.
RELACIÓNEMPLEADOS

Campo Tipo Tamaño Valor por Descripción


defecto

IDEmpleado Integer 10 No nulo Llave foránea de un


empleado principal del cual se
habla.

IDRelacionado Integer 10 No nulo Llave foránea de un


empleado con el cual tiene la
relación.

IDRelación Integer 10 No nulo Llave foránea del tipo de


relación que tienen ambos
empleados.

DEPARTAMENTO

Campo Tipo Tamaño Valor por Descripción


defecto

IDDepartamento Integer 10 No nulo Identificador único del


departamento.

NombreDpto Varchar 45 nulo Da un nombre al


departamento de la empresa.

FechaDirige Date nulo Describe la fecha desde la


cual un empleado dirige el
departamento.

IDubicación Integer 10 No nulo Llave foránea que identifica el


lugar en el que se encuentra
el departamento.

Dirigente Integer 10 No nulo Llave foránea que identifica al


empleado que dirige el
departamento.
EMPLEADO_HAS_PROYECTO

Campo Tipo Tamaño Valor por Descripción


defecto

IDEmpleado Integer 10 No nulo Llave foránea que identifica


al empleado que trabaja en
el proyecto.

IDProyectos Integer 10 No nulo Llave foránea que identifica


al proyecto en el cual se
está trabajando.

NumHorasSemana Integer 10 No nulo Número de horas que un


empleado trabaja en un
proyecto por semana

EMPLEADO

Campo Tipo Tamaño Valor por Descripción


defecto

IDEmpleado Integer 10 No nulo Identificador único del


empleado.

CURP Varchar 18 Nulo Registro único nacional que


pertenece al empleado en
cuestión.

NombreEmp Varchar 30 Nulo Nombre del empleado.

PaternoEmp Varchar 30 Nulo Apellido paterno del


empleado.

MaternoEmp Varchar 30 Nulo Apellido materno del


empleado.

Dirección Varchar 70 Nulo Dirección del empleado.

Sueldo Float Nulo Sueldo que tiene el empleado


por hora.

FechaNacimiento Date Nulo Fecha de nacimiento del


empleado.

IDsexo Integer 10 No nulo Llave foránea que identifica si


el empleado es hombre o
mujer.

IDdepartamento Integer 10 No nulo Llave foránea que identifica el


departamento al cual
pertenece un empleado.

UBICACIÓN

Campo Tipo Tamaño Valor por Descripción


defecto

IDubicación Integer 10 No nulo Identificador del lugar en el que


se encuentra el departamento.

Ubicación Varchar 40 Nulo Lugar en el que se encuentra del


departamento.

4. Implementación
La realización de una especificación técnica o algoritmos como un programa, componente software, u otro
sistema de cómputo. Muchas implementaciones son dadas según a una especificación o un estándar. En éste
caso se implementa todo lo diseñado en SQL.
4.1. Script de Creación en MySQL
Paso 1: ya teniendo el Modelo Relacional en workbench (Figura 1), vamos a FILEExport
forward Enginner SQL CREATE SCRIPT y presionamos para comenzar a crear el script.

Figura 1. Entorno de workbench para crear el script.

PASO 2: nos aparecerá una ventana (Figura 2) damos clic en browse para dar una dirección
en la cual lo guardaremos, le pondremos un nombre al archivo de salida el cual será el script
y damos en Next.

Figura 2. Ventana SQL Export Options.


PASO 3: Aparecerá otra ventana (Figura 3) en la cual podremos ver lo que se exportará en
el script, damos click en Next.

Figura 3. Ventana Filter Object.

PASO 4: En la siguiente imagen (Figura 5) vemos las tablas que contendrá nuestro script
(ósea, lo que exportará). Damos click en Finish.

Figura 2. Ventana SQL


Export Options.

Figura 4. Ventana Review Generate


4.2. Instalación de SQL Server 2008
SQL Server 2008 Express es una edición gratuita de SQL Server y es una plataforma de
datos ideal para aprender y ejecutar pequeñas aplicaciones de servidor y de escritorio, y para
su redistribución a través de IS.
Link de descarga: https://www.microsoft.com/es-mx/download/details.aspx?id=1695

Paso 1: Se nos presenta una pantalla (Figura 1) con varias opciones, en el menú izquierdo
escogemos “Instalación” y luego la primera opción del menú derecho “Instalar SQL Server o
agregar características.

Figura 1. Centro de
Instalación.

Paso 2: Ahora nos presenta una ventanita (Figura 2) la cual nos indica que está realizando
las operaciones indicadas.

Figura 2. PopUp de
operación.
Paso 3: Debemos instalar las reglas de soporte (Figura 3), las cuales nos indican si existe
algún componente que evite la instalación de SQL Server, esperamos unos segundos y
damos clic en OK.

Figura 3. Reglas de soporte para instalación.

Paso 4: En la siguiente pantalla (Figura 4) vemos que ya tenemos una llave de producto
predefinida y solo damos clic en Next.

Figura 4. Llave
del producto.
Paso 5: La siguiente ventana (Figura 5) nos muestra los términos de licencia, damos en
aceptar licencia y después en Next.

Figura 5. Términos de licencia del software.

Paso 6: Instalamos los archivos de soporte (Fig. 6) y damos clic en Instalar.

Figura 6. Archivos de soporte.


Paso 7: Terminada la instalación de archivos, nos mostrará un resumen de las
características agregadas (Fig. 6) y seleccionamos Siguiente.

Figura 7. Características agregadas.

Paso 8: La siguiente ventana (Fig. 8) es la más importante, en la cual debemos seleccionar


todas las características, por lo cual damos en “Seleccionar todos” y después en Next.

Figura 8. Selección de
características a instalar.
Paso 9: La pantalla a continuación (Fig. 9) nos muestra la instancia que queremos instalar, la
dejamos igual como esta y damos en Next.

Figura 9. Configuración de Instancia.

Paso 10: Vemos la siguiente pantalla (Fig. 10) en la cual verifica la cantidad de espacio en
disco, sin problema alguno damos clic en Next.

Figura 10. Requerimientos


de espacio en disco.
Paso 11: En esta parte (Fig. 11) si solo damos en Siguiente nos produce un error, por lo cual
en donde dice cuenta debemos darle el valor de Authority System (Autoriación\Sistema) y clic
en Next.

Figura 11. Configuración de cuenta.


Paso 12: En la siguiente ventana (fig. 12) tenemos 2 opciones de autenticación, en este caso
escogemos el modo mixto y en donde dice Enter password ingresamos una contraseña (que
recordemos bien), después damos en Agregar cuenta de usuario y al final damos clic en
Next.

Figura 12. Configuración


de administración de BD.
Paso 13: Para el servicio de análisis (fig. 13) debemos agregar un usuario, en este caso
damos clic en agregar usuario y después en Next.

Figura 13. Configuración de análisis de servicios.

Paso 14: En la siguiente ventana (fig. 14) seleccionamos el modo de instalación que
queramos, en este caso elegimos “Configuración nativa” y “Next”.

Figura 14. Configuración


de reporte de servicios.
Paso 15: En la siguiente ventana (Fig. 15) seleccionamos si queremos enviar reportes de
errores o características de Microsoft, si desean que si marcamos las casillas sino solo
damos en Next.

Figura 15. Reporte de errores.

Paso 16: Ahora ya está todo listo para la instalación, vemos el resumen de componentes
(Fig. 16), y si está todo bien damos clic en Instalar.

Figura 16. Listo


para instalar.
Paso 17: Inicia nuestra instalación (Fig. 17), esto tomará alrededor de unos 30 minutos,
dependiendo de las características del hardware del equipo.

Figura 17. Proceso de Instalación.


Paso 18: Después de completar la instalación (Fig. 18), nos mostrará si existieron errores
sino fue así, seleccionamos Next.

Figura 18. Proceso de instalación completo.


Paso 19: La pantalla final (Fig. 19), nos avisa que SQL Server 2008 está operando e
instalado correctamente. Damos clic en Close.

Figura 19. Instalación correcta de SQL Server 2008.

Paso 20: Buscamos “Microsoft SQL Server Management Studio” y le damos doble clic y nos
aparece primero la pantalla de login y enseguida la ventana de inicio, en donde creamos las
BD.

Figura 20.1. Ventana de acceso a SQL Server 2008.


Figura 20.2. Entorno de SQL Server 2008.

4.3. Script de Creación en SQL Server


Procedemos a abrir Microsoft SQL Server Management Studio e importamos el Script
de sql. El primer paso es crear una base de datos, seleccionaremos en donde dice
“Base de datos”, daremos clic derecho y en la primera opción “Nueva Base de datos”,
tal y como se muestra en la siguiente imagen:
Después nos abrirá una ventana, en donde nos pedirá un nombre para la base de
datos, para este caso la nombraremos “taller3” y damos clic en el botón “aceptar”
como se muestra en la siguiente imagen:

Posteriormente de haber creado la BD, nos aparecerá en el menú de la izquierda, en


la parte de debajo de la opción de “Instantáneas de bases de datos”, como en la
siguiente imagen:
Una vez creada la base de datos, importaremos el script SQL, para eso nos iremos al
menú de archivo, abrirarchivo, como se muestra en la imagen siguiente:

Después de haber seleccionado y abierto el archivo .sql en Microsoft SQL Server


Management Studio, tendremos la sintaxis del script como se muestra en la siguiente
imagen:
Nota importante: La sintaxis de SQL Server varía un poco con respeto a la sintaxis de
MySQL, es por ello que se realizaron algunos cambios en la sintaxis para poder crear el
script de manera correcta, los cambios que se hicieron a cada una de las tablas fueron los
siguientes:

 Se tuvo que borrar todos los set @old_unique_checks

 Se borraron los Drop Schema If

 A partir de los Create Schema se borrara lo que prosiga.

 Sustituimos los “mydb”, para ello seleccionamos y presionamos las teclas Ctrl + h y
nos abrirá una ventana, donde pondremos la palabra “dbo” el cual será por el que lo
reemplacemos y daremos clic en el botón reemplazar todo.

 Se borraron los “if no exists”.

 Se borraron los “SET SQL_MODE=@OLD_SQL_MODE, además de las ultimas 3


líneas”.

 Se borraron todos los inodb de todas las tablas.

 Se borraron todos los index de todas las tablas.

 La palabra auto_increment se cambió por la palabra IDENTITY.

 Se borró la palabra “unique” de las tablas que la contenga.

 Finalmente, todos los atributos que estaban entre ` ` se les tuvo que borrar.

4.4. Replicación en SQL Server


Se crea una BD con un nombre diferente a la que tenemos donde están almacenados
nuestros datos. Ubicamos la carpeta de replicación y seleccionamos configurar distribución.
 Aparecerá la siguiente pantalla, dar clic en Siguiente

 Seleccionar el servidor responsable de realizar la replicación y dar clic en siguiente.


En la siguiente pantalla configuraremos el servicio del Agente SQL Server en servidor para
que se inicie el servicio automáticamente o manualmente al iniciar el equipo y dar clic en
“siguiente”.

 Especificar la ruta donde se ubicaran las instantáneas.


 Clic en siguiente hasta que aparezca la siguiente pantalla de finalización de asistente,
de clic en “Finalizar”.

 Esperar unos segundos a que el asistente termine de configurar, si todo fue realizado
con éxito parecerán 3 palomitas como se ve en la siguiente pantalla:
El siguiente paso es dar clic derecho sobre la carpeta replicación y seleccionar Nuevo
Publicación. Y se ejecutará un asistente que nos ayuda en la configuración y dar clic en
siguiente.

A continuación se elige la base de datos que se desea replicar en nuestro caso es la BD


Taller3 y de clic en “Siguiente”.
El siguiente paso es seleccionar el tipo de publicación, en nuestro caso realizaremos una
publicación de mezcla y clic en siguiente.

Especificamos el tipo de suscriptor o versión de SQL Server, y marcamos “SQL Server 2008”
y clic en siguiente.
Ahora seleccionaremos las tablas y otros objetos que deseemos publicar. De la BD Taller3,
en nuestro caso seleccionaremos todos.

En el agente de instantáneas, debemos especificar cuándo se debe de ejecutar el asistente


de instantáneas.
 Aquí se debe especificar el dominio y la cuenta del equipo con que se ejecutará el
proceso del agente de instantáneas, se da clic en configuración de seguridad.

 Marcamos la opción “Ejecutar en la cuenta de servicio del agente SQL Server y dar
clic en Aceptar.
Ahora escribiremos el nombre de la publicación para poder Finalizar el asistente de
configuración y dar clic en Finalizar.
NOTA: Para ver que todo ha salido bien, expándenos la carpeta de Replicación 
Publicaciones locales, y ahí dentro de esa carpeta se encuentra el nodo de replicación.

4.5. Funcionalidades de Base de Datos en SQL Server

4.5.1. Vistas
En la ventana que aparece en la seccion de consulta copiamos el siguiente script para
seleccionar los datos que deseamos de nuestra base de datos, los cuales componen la vista:
Create view Horastrabajadas as select
Empleado.curp as IDEmpleado,
Empleado.Nombre as NombreEmpleado,
Empleado.Apaterno as ApellidoPaterno,
Empleado.Amaterno as ApellidoMaterno,
Departamento.Nombre as NombreDepartamento,
ubicacion.Estado as UbicacionDepartamento,
CatalogoPuesto.Descripcion as Puesto,
Proyectos.Numero_de_horas as HrsSemana,
Proyectos.Nombre as NombreProyecto,
Ubicacion.ciudad as UbicacionProyecto

from Empleado INNER JOIN Departamento ON


Empleado.Departamento_idDepartamento=Departamento.idDepartamento
INNER JOIN Empleado_has_Proyecto on Empleado.curp=Empleado_has_Proyecto.Empleado_curp
INNER JOIN Proyectos on Empleado_has_Proyectos.Proyectos_idProyectos=Proyectos.Proyectos_idProyectos
INNER JOIN Empleado_has_Empleado on Empleado.curp=Empleado_has_Empleado.Empleado_curp
INNER JOIN CatalogoPuesto on Empleado_has_Empleado.Puesto_idPuesto=CatalogoPuesto.Puesto_idPuesto
INNER JOIN ubicacion on Departamento.idDepartamento=ubicacion.Departamento_idDepartamento
INNER JOIN Proyectos x on ubicacion.idubicacion=x.ubicacion_idubicacion

4.5.2. Funciones
En la ventana que aparece en la seccion de consulta copiamos el siguiente script para crear
la función.
CREATE FUNCTION dbo.hratrabajada
(
@idEmpleado int,
@idProyecto int
)
RETURNS float
AS
BEGIN
declare @res float
if @idEmpleado is null and @idProyecto is null BEGIN
select @res = sum(NumhorasSemana) from Tiempo_proyecto
END
else
if @idEmpleado is not null and @idProyecto is null BEGIN
select @res = sum(NumhorasSemana) from Tiempo_proyecto where
idEmpleado=@idEmpleado
END
else
if @idEmpleado is null and @idProyecto is not null BEGIN
select @res = sum(NumhorasSemana) from Tiempo_proyecto where
idProyecto=@idProyecto
END
else
if @idEmpleado is not null and @idProyecto is not null BEGIN
select @res = sum(NumhorasSemana) from Tiempo_proyecto where
idEmpleado=@idEmpleado and idProyecto=@idProyecto
END
return @res
END;
GO

4.5.3. Procedimientos Almacenados


Para crear un procedimiento almacenado en SQL Server se empieza por abrir el panel
izquierdo en la base de datos en nuestro caso taller3ProgramaciónProcedimientos
almacenados, dando click derecho en el sub folder y la opción “Nuevo procedimiento
almacenado” de la siguiente manera:
Posteriormente en la ventana del Script se agregan estas líneas de código para hacer los
select dependiendo de los parámetros que se envíen:

Ahora se da click en el botón ejecutar y se puede ver el procedimiento almacenado en la


carpeta de la BD:

4.5.4. Triggers
Para la creación de un trigger en SQL Server 2008, es necesario tener la base de datos
creada, en nuestro caso llamada “taller3” y dirigirse al menú lateral izquierdo en el menú
Bases de datostaller3TablasEmpleado_has_ProyectoDesencadenadores, cabe
mencionar que el trigger se creará especialmente para esta tabla llamada
“Empleado_has_Proyecto”, en este sub menú le damos click derecho y seleccionamos la
opción “Nuevo desencadenado” de la siguiente manera:
Ahora en este momento nos saldrá una ventana en el panel de consultas con un script pre
creado en donde solo modificaremos los parámetros principales dándole nombre al trigger,
tabla sobre la cual será creado y sobre qué eventos trabajara, quedando el encabezado de la
siguiente manera:

Ahora después de las sentencias “AS BEGIN”, se agregará este script, el cual se anexa
completo a modo de ejemplificar la forma final de la creación del trigger:

CREATE TRIGGER desencadenador_bitacora


ON Tiempo_proyecto
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
DECLARE @i INT, @d INT;
DECLARE @id_emp INT, @id_proy INT, @horas FLOAT, @tipo VARCHAR, @tiempo DATETIME;
SELECT @i = COUNT(*) FROM inserted;
SELECT @d = COUNT(*) FROM deleted;

IF @i + @d > 0
BEGIN
IF @i > 0 AND @d = 0
begin
set @id_emp = (select idEmpleado from INSERTED)
set @id_proy = (select idProyecto from INSERTED)
set @horas = (select Tiempo from INSERTED)
set @tiempo = GetDate()
set @tipo = 'INSERT'
insert into dbo.Bitacora (tiempo,tipo,idProyecto,idEmpleado,Horas) values
(@tiempo,@tipo,@id_proy,@id_emp,@horas)
end
IF @i > 0 AND @d > 0
begin
set @id_emp = (select idEmpleado from INSERTED)
set @id_proy = (select idProyecto from INSERTED)
set @horas = (select Tiempo from INSERTED)
set @tiempo = GetDate()
set @tipo = 'UPDATE'
insert into dbo.Bitacora (tiempo,tipo,idProyecto,idEmpleado,Horas) values
(@tiempo,@tipo,@id_proy,@id_emp,@horas)
end
IF @i = 0 AND @d > 0
begin
set @id_emp = (select idEmpleado from DELETED)
set @id_proy = (select idProyecto from DELETED)
set @horas = (select Tiempo from DELETED)
set @tiempo = GetDate()
set @tipo = 'DELETE'
insert into dbo.Bitacora (tiempo,tipo,idProyecto,idEmpleado,Horas) values
(@tiempo,@tipo,@id_proy,@id_emp,@horas)
end
END;

END
GO
4.6. Instalación de Oracle 10 XE

Paso 1. Para el comienzo de la instalación, primero debemos ejecutar el instalador de


Oracle, OracleXEUniv.exe. Después de poder ejecutar el instalador se iniciará el asistente.

Paso 2. Una vez que cargado el instalador, nos aparecerá una imagen como la siguiente y
pulsaremos “Siguiente”

Paso 3. Pulsamos en “Aceptar términos de licencia” seguido de pulsar el botón “Siguiente”.


Paso 4. Marcamos Oracle Database 10g Express Edition y si queremos especificar la ruta
de instalación damos clic en el botón examinar y seleccionamos donde queremos que se
instale, por defecto viene marcado para instalarse en la unidad C:/oracleexe.

Paso 5. En la siguiente ventana nos pedirá una contraseña que debemos colocar para el
usuario SYSTEM, después de haber confirmado la contraseña daremos clic en “Siguiente”.

Paso 6. Después nos aparecerá otra ventana con las opciones que ya hemos elegido para la
instalación, y procederemos a dar clic en “Instalar”.
Paso 7. Después el asistente de instalación empezara a instalar y hacer la configuración
adecuada para la instalación de la base de datos de Oracle Database 10g Express Editión.

Paso 8. Después de haber finalizado la instalación, nos aparecerá esta ventana, y tendremos
marcado la opción de iniciar la página inicial de la base de datos, que nos abrirá en el
navegador para poder acceder a Oracle. Daremos clic en “Terminar”.

Paso 9. Existen dos formas de acceder a Oracle: una mediante la línea de comandos de
Oracle y la otra a través de APEX (desde el navegador), como se muestra a continuación:
4.7. Script de Creación en Oracle
Paso 1. Entrar a la página de Oracle e iniciar sesión con nuestro nombre de usuario y
contraseña correspondiente, en este caso nuestro nombre de usuario es “System”.

Paso 2. Nos dirigimos a la consola de SQL, damos clic en la opción comandos SQL,
Introducir comando como se muestra en la imagen siguiente:

Paso 3. Posteriormente crearemos la Base de Datos y le daremos permisos para poder


modificarla. Lo que haremos es colocar 3 scripts en los comandos de SQL y le daremos clic
en ejecutar donde nos mostrara un mensaje de éxito, como se muestra en las imágenes
siguientes:
Paso 4. Después de haber realizado los 3 scripts anteriores, regresaremos al inicio de la
página y en la parte inferior derecha nos mostrara que tenemos dos BD, la base que tiene
por defecto Oracle y la otra es la que acabamos de crear llamada “taller3”.
Paso 5. Comprobamos que las 2 bases de datos efectivamente se encuentran dentro de
Oracle si damos clic en donde nos marca las 2 base de datos, nos aparecerá la siguiente
imagen:

Paso 6. Después de haber comprobado las BD, le daremos clic en la base de datos que
acabamos de crear “taller3” nos aparecerá lo que se muestra en la siguiente imagen:

Nota: Damos clic donde dice activar todo y marcaremos los campos de CONNECT,
RESOURCE y DBA. Con esto le damos permiso al usuario para poder hacer modificaciones
a toda la base de datos y finalmente hacemos clic en “Modificar Usuario”. Cerramos sesión, y
volvemos a iniciar sesión, pero con el usuario taller3.
Paso 7. Ahora procedemos a crear las tablas, para ello modificamos el código que tenemos
del script de SQL server, haciéndole algunos cambios, empezando por la “dbo” se cambiara
por el nombre de la base de datos que creamos “TALLER3”, también borraremos la palabra
“IDENTITY”, y por último la líneas de “on delete no action, on update no action”, y el script
nos quedaría de la siguiente manera:
-- -----------------------------------------------------
-- Table TALLER3.Sexo
-- -----------------------------------------------------
CREATE TABLE TALLER3.Sexo (
idSexo INT NOT NULL ,
sexo VARCHAR(45) NULL,
PRIMARY KEY (idSexo))
;

-- -----------------------------------------------------
-- Table TALLER3.Ubicacion
-- -----------------------------------------------------
CREATE TABLE TALLER3.Ubicacion (
idUbicacion INT NOT NULL ,
ubicacion VARCHAR(45) NULL,
PRIMARY KEY (idUbicacion))
;

-- -----------------------------------------------------
-- Table TALLER3.Departamento
-- -----------------------------------------------------
CREATE TABLE TALLER3.Departamento (
idDepartamento INT NOT NULL ,
nombreDepartamento VARCHAR(45) NULL,
fechaDirige TIMESTAMP NULL,
Dirigente INT NOT NULL,
idUbicacion INT NOT NULL,
PRIMARY KEY (idDepartamento),

CONSTRAINT fk_Depto_Ubi1
FOREIGN KEY (idUbicacion)
REFERENCES TALLER3.Ubicacion (idUbicacion)

)
;

-- -----------------------------------------------------
-- Table TALLER3.Empleado
-- -----------------------------------------------------
CREATE TABLE TALLER3.Empleado (
idEmpleado INT NOT NULL ,
idSexo INT NOT NULL,
idDepartamento INT NOT NULL,
curp VARCHAR(18) NOT NULL,
nombre VARCHAR(45) NULL,
apellidoPaterno VARCHAR(45) NULL,
apellidoMaterno VARCHAR(45) NULL,
calle VARCHAR(45) NULL,
colonia VARCHAR(45) NULL,
numero INT NULL,
ciudad VARCHAR(45) NULL,
sueldo FLOAT NULL,
fechaNacimiento TIMESTAMP NULL,
PRIMARY KEY (idEmpleado),

CONSTRAINT fk_Empleado_Sexo
FOREIGN KEY (idSexo)
REFERENCES TALLER3.Sexo (idSexo)

,
CONSTRAINT fk_Emp_Depto1
FOREIGN KEY (idDepartamento)
REFERENCES TALLER3.Departamento (idDepartamento)

)
;

-- -----------------------------------------------------
-- Table TALLER3.Proyecto
-- -----------------------------------------------------
CREATE TABLE TALLER3.Proyecto (
idProyectos INT NOT NULL ,
nombreProyecto VARCHAR(45) NULL,
idUbicacion INT NOT NULL,
idDepartamento INT NOT NULL,
PRIMARY KEY (idProyectos),

CONSTRAINT fk_Proy_Ubi1
FOREIGN KEY (idUbicacion)
REFERENCES TALLER3.Ubicacion (idUbicacion)

,
CONSTRAINT fk_Proy_Depto1
FOREIGN KEY (idDepartamento)
REFERENCES TALLER3.Departamento (idDepartamento)

)
;

-- -----------------------------------------------------
-- Table TALLER3.Empleado_has_Proyecto
-- -----------------------------------------------------
CREATE TABLE TALLER3.Empleado_has_Proyecto (
idEmpleado INT NOT NULL,
idProyectos INT NOT NULL,
numHorasSemana INT NULL,
PRIMARY KEY (idEmpleado, idProyectos),

CONSTRAINT fk_Emp_Proy_Empl1
FOREIGN KEY (idEmpleado)
REFERENCES TALLER3.Empleado (idEmpleado)

,
CONSTRAINT fk_Emp_Proy_Proy1
FOREIGN KEY (idProyectos)
REFERENCES TALLER3.Proyecto (idProyectos)

)
;
-- -----------------------------------------------------
-- Table TALLER3.Relacion
-- -----------------------------------------------------
CREATE TABLE TALLER3.Relacion (
idRelacion INT NOT NULL,
tipoRelacion VARCHAR(45) NULL,
PRIMARY KEY (idRelacion))
;

-- -----------------------------------------------------
-- Table TALLER3.RelacionEmpleados
-- -----------------------------------------------------
CREATE TABLE TALLER3.RelacionEmpleados (
idEmpleado INT NOT NULL,
idRelacionado INT NOT NULL,
idRelacion INT NOT NULL,
PRIMARY KEY (idEmpleado, idRelacionado),

CONSTRAINT fk_Emp_Empl_Empl1
FOREIGN KEY (idEmpleado)
REFERENCES TALLER3.Empleado (idEmpleado)

,
CONSTRAINT fk_Emp_Empl_Empl2
FOREIGN KEY (idRelacionado)
REFERENCES TALLER3.Empleado (idEmpleado)

,
CONSTRAINT fk_RelEmpl_Rel1
FOREIGN KEY (idRelacion)
REFERENCES TALLER3.Relacion (idRelacion)

)
;
4.8. Funcionalidades de Base de Datos en Oracle

4.8.1. Vistas
Para crear vistas en Oracle, tenemos que entrar a http://127.0.0.1:8080/apex donde nos
aparecerá el menú principal de Oracle, y después solo daremos clic en la opción comandos
SQL Introducir comando como se muestra en las siguientes imágenes:

Posteriormente ingresamos el siguiente código:


CREATE OR REPLACE FORCE VIEW "HORASTRABAJADAS"("IDEMPLEADO", "NOMBREEMPLEADO",
"APELLIDOPATERNO","APELLIDOMATERNO",
"NOMBREDEPARTAMENTO","UBICACIONDEPARTAMENTO","PUESTO","HRSSEMANA","NOMBREP ROYECTO
","UBICACIONPROYECTO") AS
select Empleado.curp as IDEmpleado, Empleado.Nombre as NombreEmpleado, Empleado.Apaterno as
ApellidoPaterno, Empleado.Amaterno as ApellidoMaterno, Departamento.Nombre as
NombreDepartamento, ubicacion.Estado
as UbicacionDepartamento, CatalogoPuesto.Descripcion as Puesto, Proyectos.Numero_de_horas as
HrsSemana, Proyectos.Nombre
as NombreProyecto, Ubicacion.ciudad as UbicacionProyecto

from Empleado INNER JOIN Departamento ON


Empleado.Departamento_idDepartamento=Departamento.idDepartamento
INNER JOIN Empleado_has_Proyecto on Empleado.curp=Empleado_has_Proyectos.Empleado_curp
INNER JOIN Proyectos on
Empleado_has_Proyectos.Proyectos_idProyectos=Proyectos.Proyectos_idProyectos
INNER JOIN Empleado_has_Empleado on Empleado.curp=Empleado_has_Empleado.Empleado_curp
INNER JOIN CatalogoPuesto on
Empleado_has_Empleado.Puesto_idPuesto=CatalogoPuesto.Puesto_idPuesto
INNER JOIN ubicacion on Departamento.idDepartamento=ubicacion.Departamento_idDepartamento
INNER JOIN Proyectos x on ubicacion.idubicacion=x.ubicacion_idubicacion /
4.8.2. Funciones
Para crear funciones en Oracle se realiza el mismo paso que el de las vistas, entramos a
http://127.0.0.1:8080/apex y damos clic en la opción comandos SQL Introducir comando
como se muestra en las siguientes imágenes:

Posteriormente ingresamos el siguiente código:


create or replace FUNCTION hratrabajada (Curp in varchar2, idProyectos in NUMBER) RETURN NUMBER is
resultado NUMBER; BEGIN IF ((curp IS NOT NULL) AND (idProyectos IS
NOT NULL)) THEN SELECT SUM(NumhorasSemana)INTO resultado from Empleado_has_Proyecto WHERE
Empleado_has_Proyecto.idEmpleado=idEmpleado AND
Empleado_has_Proyecto.idProyectos=idProyectos; END IF; IF((curp IS NOT NULL) AND (idProyectos IS
NULL))THEN SELECT SUM(NumhorasSemana) INTO resultado
FROM Empleado_has_Proyecto WHERE Empleado_has_Proyecto.idEmpleado=idEmpleado; END IF; IF((curp IS
NULL) and (idProyectos IS NOT NULL)) THEN select
SUM(NumhorasSemana) INTO resultado from Empleado_has_Proyecto where
Empleado_has_Proyecto.idProyectos=idProyectos; end IF; IF ((curp is NULL) AND(
idProyectos IS NULL)) THEN select SUM(NumhorasSemana) INTO resultado from Empleado_has_Proyecto; end
IF; RETURN resultado; END;
4.8.3. Procedimientos Almacenados
Para crear procedimientos almacenados(Stored Procedure) en Oracle se realiza el mismo
paso que el de las vistas y las funciones, entramos a http://127.0.0.1:8080/apex y damos clic
en la opción comandos SQL Introducir comando como se muestra en las siguientes
imágenes:

Posteriormente ingresamos el siguiente código:


create or replace procedure p_nulos
(idemp in NUMBER, idpro in Number)

is
begin

IF idemp IS NOT NULL AND idpro IS NOT NULL then


select *from horastrabajadas where idemp=idempleado and idpro=idproyectos;
END IF;

IF idemp IS NULL AND idpro IS NOT NULL then


select *from horastrabajadas where idpro=idproyectos;
END IF;

IF idemp IS NOT NULL AND idpro IS NULL then


select *from horastrabajadas where idemp=idempleado;
END IF;

IF idemp IS NULL AND idpro IS NULL then


select *from horastrabajadas;
END IF;
END;
4.8.4. Triggers
Se crearon 3 triggers distintos (uno para cada evento "insert","delete","update") que se
realizaron sobre las horas trabajadas en la tabla Empleado_has_Proyecto. A continuación se
presenta el código de los triggers:
create or replace trigger triInsertar
AFTER insert on Empleado_has_Proyecto
FOR EACH ROW

begin
insert into Bitacora values (SYSTIMESTAMP,'INSERT', :new.idProyectos, :new.idEmpleado,
:new.numHorasSemana);
end;
---------------------------------------------------------------------------------------------------------------------------
create or replace trigger triActualizar
AFTER update on Empleado_has_Proyecto
FOR EACH ROW

begin
insert into Bitacora values (SYSTIMESTAMP,'INSERT', :new.idProyectos, :new.idEmpleado,
:new.numHorasSemana);
end;
---------------------------------------------------------------------------------------------------------------------------
create or replace trigger triEliminar
AFTER delete on Empleado_has_Proyecto
FOR EACH ROW

begin
insert into Bitacora values (SYSTIMESTAMP,'INSERT', :old.idProyectos,
:old.idEmpleado, :old.numHorasSemana);
end;

5. Pruebas

5.1. Herramienta ETL


Viene de inglés de las siglas Extract-Transform-Load que significan Extraer, Transformar y Cargar y se refiere a
los datos en una empresa. ETL es el proceso que organiza el flujo de los datos entre diferentes sistemas en una
organización y aporta los métodos y herramientas necesarias para mover datos desde múltiples fuentes a un
almacén de datos, reformatearlos, limpiarlos y cargarlos en otra base de datos, data mart ó bodega de datos.
5.2. Carga de Datos en SQL Server
Paso 1. Iniciamos la herramienta Pentaho y seleccionamos “No repository”.

Paso 2. Creamos una nueva transformación. Para ello nos vamos a File New
Transformation.

Paso 3. Seleccionamos una tabla de Excel de donde están los datos. Input Excel
InputArrastrar hasta el panel central.
Paso 4. Seleccionamos la tabla de salida, que será a SQL Server. Para ello nos vamos a
Output Table output Arrastramos hasta el panel central.

Paso 5. Damos doble clic en la figurita del Excel y nos parecerá una nueva ventana como la
que se muestra a continuación:
Paso 6. Damos clic en “Browse”, localizamos nuestro archivo y damos clic en abrir.

Paso 7. En la ventana, nos aparecerá el archivo en el apartado “File o directory”.

Paso 8. Ahora damos clic en “add” para cargar el archivo, el cual nos aparecerá en la
ventanita de abajo “Selected files”. Después damos clic en la pestaña “!Sheets”.
Paso 9. Se nos presenta la ventana de Sheets, damos clic en “Get sheetnames”, la cual nos
mostrará una ventana de opciones (tablas de nuestra base de BD), escogemos una y damos
clic en “>” para seleccionarlo, después damos “OK”.
Paso 10. Estando en la misma ventana seleccionamos la pestaña “Fields”, damos clic en “Get fields
from header row”, la cual nos mostrará el nombre de las columnas de nuestra tabla seleccionada
anteriormente y damos clic en OK.

Paso 11. Teniendo presionado shift y con el mouse arrastrando de Excel a “Table output”,
generaremos la relación entre los componentes (origen-destino).

Paso 12. A continuación vamos a modificar el “Table output”. Vamos a realizar una nueva
conexión y damos clic en “New”.
Paso 13. En la ventana de la nueva conexión, configuramos los siguientes datos, en tipo de
conexión escogemos MS SQL SERVER, en los campos de arriba como de al lado ponemos
los datos correspondientes, nombre de la conexión (cualquiera), localhost (ya que el SQL
SERVER se está ejecutando en nuestra computadora), la BD que estamos migrando y los
datos de usuario y contraseña en SQL SERVER, finalizando todo esto damos clic en “Test”
para probar la conexión. Finalmente damos clic en OK.

Paso 14. Ya que tenemos la conexión, debemos decirle el nombre de la tabla de la cual
pasaremos los datos, para esto damos clic en “browse” en la fila “Target table”, en la ventana
desplegamos la carpeta conexión  TablesSexo (en este caso, nuestra tabla que
queremos pasar), y clic en OK.
Paso 15. Posteriormente damos clic en “Specify database field” especificar campos de la
base de datos, seleccionamos la pestaña de abajo “Database fields” y damos clic en “Get
fields” del lado derecho, aparecerán las columnas en la tabla, debemos verificar que estas
sean iguales, si es asi, damos OK.

Paso 16. Ya teniendo la conexión origen-destino, presionamos “ejecutar” y mostrará una


ventana de ejecución, damos clic en “Launch”.
Paso 17. Nos pide guardar la transformación, ponemos nombre y damos en guardar.

Paso 18. Se ejecutará, pero nos marcará un error en la pestaña de “Step Metrics” como se
muestra en la siguiente imagen:

Paso 19. Para quitar ese error, abrimos SQL SERVER, nos conectamos a nuestra BD,
localizamos nuestra BD, desplegamos las tablas, ubicamos “Sexo”, damos clic derecho y clic
en Diseño.
Paso 20. En la ventana siguiente, en la parte de abajo buscamos la opción “Especificación
de identidad”, damos doble clic en “identidad” y esta opción cambiará a “no” y guardamos los
cambios.

Paso 21. Hecho lo anterior volvemos a ejecutar las instrucciones, el cual dará resultado
positivo, esta vez saldrá una palomita verde. Nos regresamos a SQL Server seleccionamos
las primeras 1000 filas y se mostrarán los datos ya cargados. Para las tablas restantes es
el mismo proceso.
5.3. Pruebas Funcionales en SQL Server

5.3.1. Vistas

Ahora para hacer uso de la vista creada en SQL Server, solo procederemos a hacer un
SELECT * hacia la vista para demostrar que efectivamente está creada, el comando sería el
siguiente:
SELECT * FROM dbo.horastrabajadas;

5.3.2. Funciones

Para probar la función en SQL Server creada con anterioridad se creará una nueva consulta
en SQL Server 2008 Management Studio, y el script que se usó para esta prueba es el
siguiente:

Los datos de estudio serán, el id de empleado = 16 y el id de proyecto = 16, demostrando las


cuatro combinaciones:
use SDEmp
DECLARE @Resultado float
SET @Resultado = dbo.horasTrabajadas(null, null)

PRINT @Resultado

El resultado con los datos idEmpleado=null, idProyecto=null, es:


Caso idEmpleado = 16, idProyecto = null:
use SDEmp
DECLARE @Resultado float
SET @Resultado = dbo.horasTrabajadas(16, null)

PRINT @Resultado

El resultado es:

Caso idEmpleado = null, idProyecto = 16:


use SDEmp
DECLARE @Resultado float
SET @Resultado = dbo.horasTrabajadas(null, 16)

PRINT @Resultado

El resultado es:

Caso idEmpleado = 16, idProyecto = 16:


use SDEmp
DECLARE @Resultado float
SET @Resultado = dbo.horasTrabajadas(16, 16)

PRINT @Resultado

El resultado es:
5.3.3. Procedimientos Almacenados
El procedimiento almacenado es una consulta capaz de consumirse mandando únicamente
los parámetros correspondientes al procedimiento, para probarlo en SQL Server 2008
Management Studio basta con dar click derecho sobre el nombre del procedimiento
almacenado y dar click en la opción “Ejecutar procedimiento almacenado” como se muestra
en la siguiente manera:

Ahora saldrá una ventana emergente en la cual se configuran los parámetros que recibe el
procedimiento almacenado, en esta parte ingresamos los datos, por ejemplo idProyecto = 5,
idEmpleado = NULL de la siguiente manera:
 Ahora damos click en aceptar y nos mostrará el resultado:

 En el caso de idEmpleado 5, idProyecto = NULL este es el resultado:


Para el caso de ambos id = 5:

Finalmente en el caso de ambos id = NULL:

 En este caso nos da todas las filas de la vista requerimiento de la cual es de


donde se recupera la información.
5.3.4. Triggers
El trigger o desencadenador se ejecuta al momento de que se cumple la condición sobre la
tabla que tiene creado dicho lanzador, en este caso la tabla se llama
“Empleado_has_Proyecto, para realizar la prueba se generarán primero un INSERT para
verificar que en la tabla Bitácora se almacene la tupla correspondiente y de la misma forma
se documentará el UPDATE y el DELETE, primero ejecutamos esta sentencia:
INSERT INTO dbo.Empleado_has_Proyecto(idEmpleado,idProyecto,NumHorasSemana) VALUES
(4,20,20.5);

 Al dar click en ejecutar veremos que nos da un mensaje de que se vieron afectadas
dos filas:

Posteriormente veremos los datos en la tabla Bitácora con un SELECT * FROM BITACORA,
podemos ver que se almacenó una letra I para hacer referencia que la acción fue un INSERT
y la información de la fecha junto con la que se acaba de insertar:
Verificaremos que realmente este el registro insertado:

Ahora modificamos ese mismo registro con la siguiente sentencia:


UPDATE dbo.Tiempo_proyecto SET Tiempo = 100 WHERE idEmpleado=4 and idProyecto=20;

Y vemos que nuevamente el mensaje nos dice que se afectaron dos filas:

Hacemos un select en la Bitácora y vemos que ahora hay dos registros y el segundo tiene
una letra U haciendo referencia a un UPDATE:
Debido a que las horas trabajadas son las que modificamos vamos a consultar en la tabla
para estar seguros de que el cambio se realizó correctamente:

Por último vamos a comprobar el Delete sobre ese mismo registro con este script:
DELETE FROM Tiempo_proyecto WHERE idEmpleado=4 and idProyecto=20

Nuevamente se afectan dos filas:

Revisamos la bitácora y efectivamente hay un nuevo registro pero en este caso se identifica
con una letra D:

Ahora consultamos la tabla y comprobamos que el registro ya no existe:


5.4. Carga de Datos en Oracle
Nota: Antes de comenzar debemos seleccionar primero las tablas que no tengan
dependencia de otras, y guardar los archivos de todas las tablas en excel con el formato CSV
(delimitado por comas).
Paso 1. Nos dirigimos a la página principal de Oracle (http://127.0.0.1:8080/apex) y damos
clic en la opción de “Utilidades” seguido de Carga/Descarga de DatosCargar, como lo
muestra la siguiente imagen:

Paso 3. Después nos llevará a otra ventana donde tendremos 3 opciones que son: Cargar
Datos de Texto, Cargar Datos de Hoja de Cálculo, Cargar Datos XML. Nosotros elegiremos
la segunda opción para cargar los datos desde Excel.

Paso 4. Al darle clic en Cargar Datos de Hoja de Cálculo nos desplegara otra ventana, en
donde marcaremos la opción de “tabla existente” y también marcaremos la opción de
“archivo de carga (Separada por Comas o Delimitado por Tabuladores)”, que es el
formato CSV en el que guardamos las tablas desde Excel, y clic en siguiente.
Paso 5. Seguido de otro clic en siguiente nos aparecerá un combobox, en donde elegiremos
la tabla de donde queremos obtener los datos, en este caso “UBICACION” y de ahí damos
clic de nuevo en siguiente.

Paso 6. Nos aparecerá otra ventana, donde seleccionaremos el archivo CSV de Excel y
después damos clic en “siguiente”, automáticamente cargará los datos de la tabla y nos
mostrará la tabla con los datos obtenidos, por último daremos clic en el botón “Cargar Datos”,
como nos muestra la siguiente imagen:
Paso 7. Finalmente después de dar clic en “Cargar Datos” nos aparecerá el repositorio de la
carga de datos de cada una de las tablas de la BD, como se muestra a continuación:

5.5. Pruebas Funcionales en Oracle

5.5.1. Vistas
Primero nos aseguramos de que la vista haya sido creada correctamente como a
continuación se muestra en la siguiente imagen:
Como segundo paso, ejecutamos la vista con la siguiente sentencia:
SELECT *FROM HORASTRABAJADAS;

5.5.2. Funciones
Para observar el funcionamiento de nuestra función, simplemente entramos a la página para
introducir comandos, como se muestra a continuación:

En esta página, introducimos el siguiente comando:

DECLARE
c number;

BEGIN
c := horasTrabajadas(4,4);
dbms_output.put_line('Total de horas: ' || c);
END;
 La función recibe como parámetros, el id del empleado, y el id del proyecto, y regresa
un valor numérico, en caso de que no se encuentre la información, regresa el valor -
99.

5.5.3. Procedimientos Almacenados


Para crear nuestro procedimiento almacenado, simplemente entramos a la página para
introducir comandos, como se muestra a continuación:
Introducimos el siguiente script:
create or replace procedure p_nulos
(idemp in NUMBER, idpro in Number)

is
begin

IF idemp IS NOT NULL AND idpro IS NOT NULL then


select *from horastrabajadas where idemp=idempleado and idpro=idproyectos;
END IF;

IF idemp IS NULL AND idpro IS NOT NULL then


select *from horastrabajadas where idpro=idproyectos;
END IF;

IF idemp IS NOT NULL AND idpro IS NULL then


select *from horastrabajadas where idemp=idempleado;
END IF;

IF idemp IS NULL AND idpro IS NULL then


select *from horastrabajadas;
END IF;
END;

5.5.4. Triggers
El trigger o desencadenador se ejecuta al momento de que se cumple la condición sobre la
tabla que tiene creado dicho lanzador, en este caso la tabla se llama
“Empleado_has_Proyecto”, para realizar la prueba se generarán primero un INSERT para
verificar que en la tabla Bitácora se almacene la tupla correspondiente y de la misma forma
se documentará el UPDATE y el DELETE.
Las diferencias con el script de los triggers de SQL Server son las siguientes:

 Se cambia el tipo de dato fecha a timestamp.

 La hora del sistema se obtiene con la función SYSTIMESTAMP.

 La asignación de los valores nuevos y viejos se hace con "NEW" y "OLD".


A continuación se presentan los triggers para los eventos "INSERT", "UPDATE" y "DELETE":
a) Creación exitosa del trigger INSERT:

b) Creación exitosa del trigger UPDATE:

c) Ceración exitosa del trigger DELETE:


6. Creación de la aplicación ADF.
Paso 1: tenemos que hacer es crear un módulo de aplicación se da click en el menú
FILE newApplication.

Paso 2: A continuación se muestra la siguiente ventana, se selecciona la categoría


Applications y se da click en ADF Fusion Web Application.
Paso 3: Al seleccionar esta opción se abrirá la ventana de creación de la aplicación donde
en primer lugar se escribe el nombre de la aplicación.

Paso 4: Después de haber puesto un nombre a la aplicación, se le da nombre al proyecto


que se está creando. Y se da click en siguiente.
Paso 5: En este paso se escribe el nombre del modelo y se da click en “Next”.

Paso 6: Al dar click en siguiente nos manda a donde se nombra la vista, que por defecto
tiene el nombre de viewController y clic en “Next”.

Paso 7: En la siguiente ventana se activa el checkBotton con la opción JDeveloper’s Default.


Paso 8: Se da click en el botón Finish y se empieza a crear nuestra aplicación.(puede tardar
algunos minutos).

Paso 9: Al terminar de crearse la aplicación no aparecerá la siguiente ventana donde


daremos clic en la conexión a la base de datos.
Paso 10: Se despliega la siguiente ventana donde se podrá crear la conexión con nuestra
base de datos.

Paso 11: Se da click en el botóncréate a Database Connection y nos mostrara la siguiente


ventana. En esta ventana se escribe el nombre de nuestra base de datos y su contraseña.
Se da click en el botón “Test Connection” para comprobar que la conexión haya sigo exitosa.
Paso 12: Después de haber creado la conexión a la base de datos se pasa al paso donde se
da click en la pestaña Build Bussinnes Services y se da click en el botón Create Entity
Objects an Associations.

Paso 13: Se selecciona el modelo y se da click en el botón OK.

Paso 14: Aparecerá nuevamente una ventana en esta ventana se pone el nombre del
paquete donde se encuentra la aplicación. Se da click en botón Finish y empieza la consulta
a la base de datos.
Se espera unos minutos.

Paso 15: Al finalizar muestra la siguiente pantalla donde se pueden ver las tablas que
contiene nuestra BD y se eligen las que vamos a utilizar para la aplicación que creamos.

Paso 16: Se empieza a editar la vista viewController clic derecho nueva página o en adf-
Config.xml  aquí se define el flujo de los componentes de la vista .
Paso 17: Agregamos un view y arrastramos una vista. Se le da doble clic.

Paso 18: Escogemos algún templateCopy quick star layout 2 columnas. Damos en OK y
comenzara a crear la página con una estructura a partir del Layot escogido.
Paso 19: Para comenzar a editar la vista se agrega un Panel accordeon.

Paso 20: Arrastrar data control a departamentos y escogemos ADF FORM y configuramos
row navigations, marcamos read- only form y podemos poner etiquetas personalizadas.

Vous aimerez peut-être aussi