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/espara 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 devuelve a la base de datos a algún estado previo. Los Rollbacks son importantes para la integridad de la base de datos y son cruciales para la recuperación de caídas de un servidor de BD.
DBA
Administrador de bases de datos
Es la persona responsable de los http://introbd2.blogspot.mx/ 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 bases de datos
Es un conjunto de programas que se encargan de manejar la creación y todos los accesos a las bases de datos, está compuesto por: DDL (Lenguaje de Definición de Datos), DML (Lenguaje de Manipulación de Datos) y SQL (Lenguaje de Consulta). Los
http://www.prograweb.com.m x/admonBD/0401RollBackCo mmit.php
https://plataformasistemas.word press.com/bases-de-datos/queses-un-dbms/
DBMS más comunes son Oracle, SQL Server, MySQL, PostgreSQL, etc. ACID
Atomicidad, Consistencia, Aislamiento y Durabilidad
ACID es un grupo de 4 propiedades http://www.dosideas.com/noticias/base-deque garantizan que las transacciones datos/973-acid-en-las-bases-de-datos.html en las bases de datos se realicen de forma confiable.
Repository
Repositorio
Es un sitio centralizado donde se almacena y mantiene información 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í permanentemente teniendo cada tarea un bloqueo en un recurso que las otras tareas intentan bloquear.
Commit
Finalización de transacción
Esta instrucción de SQL se utiliza para confirmar como permanentes las modificaciones realizadas en una transacción.
http://www.gayatlacomulco.com/tut orials/tallerdebasesdedatos/t44.htm
Transaction
Transacción
Es un conjunto de instrucciones que se ejecutan formando una unidad de trabajo, es decir, en forma indivisible o atómica. Un ejemplo de una transacción compleja es la transferencia de fondos de una cuenta a otra, la cual implica múltiples operaciones individuales.
http://basededatosfrancisbrito.blogsp ot.mx/2012/09/propiedadesacid.html
http://es.slideshare.net/YOSMAR050 8/repositorio-de-datos
http://basesdatosdistribuidas.blo gspot.mx/2012/11/disciplinasdel-interbloqueo.html
Concurrency
Concurrencia
Se refiere al hecho de que los DBMS permiten que muchas transacciones puedan accesar a una misma base de 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-datosllamadas fragmentos. Las razones distribuidas.shtml principales para la fragmentación son el incremento del nivel de concurrencia y el desempeño del sistema.
https://es.pdfcoke.com/doc/55240694 /Concurrencia-en-Base-de-Datos
Horizontal Fragmentation Fragmentación Horizontal
Consiste en particionar las tuplas http://base-de(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
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
Fragmentación Vertical
global R. Derived Horizontal Fragmentation
Fragmentación Horizontal Derivada
Este tipo de fragmentación particiona http://carlosproal.com/bda/bda05.html una tabla en base a un atributo(s) que está presente en otra tabla(s).
Database Distribution
Bases de Datos Distribuidas
Son una colección de múltiples bases http://es.slideshare.net/MaxPerez1/base-dede 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-atienzoobjetos 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 Estructurado
Es el lenguaje utilizado para definir, controlar y acceder a los datos 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/queuna 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.
http://www.aulaclic.es/sqls erver/t_2_1.htm
Join
Combinación
La cláusula JOIN permite combinar registros de dos o más tablas en una base de datos relacional. Hay tres tipos de JOIN: interno, externo, y cruzado.
https://emic8a.wordpress.com/201 1/01/21/funciones-de-agrupacion/
View
Vista
Una vista es una alternativa para mostrar datos de varias tablas. Una vista es como una tabla virtual que almacena una consulta. Los datos accesibles a través de la vista no están almacenados en la base de datos como un objeto.
http://www.sqlserverya.com.ar/tem arios/descripcion.php?cod=109&pu nto=103
User Defined Function
Funciones definidas por el usuario
Las funciones definidas por el usuario https://msdn.microsoft.com/esde 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 de datos, que contiene un conjunto de instrucciones SQL, tanto de consulta, como de manipulación de datos, como 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
https://es.pdfcoke.com/doc/10325656 /Procedimientos-Almacenados-yTriggers-en-SQL-Server
procedimiento almacenado que se https://es.pdfcoke.com/doc/10325656 ejecuta automáticamente al intentarse efectuar una modificación de los datos, /Procedimientos-Almacenados-yen 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 Datos
Es el que se encarga de la modificación de la estructura de los objetos de la 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 de Datos
Las sentencias DML son aquellas http://es.slideshare.net/heber/lenguajeutilizadas para insertar, borrar, de-manipulacin-de-datos modificar y consultar los datos de una base de datos. Estas sentencias son: SELECT, INSERT, UPDATE, DELETE.
http://oracleuamericas.blogspot.mx /2011/12/ddl-dml.html
Conceptos de Oracle
Conceptos
Concepto en español
Descripción en español
Referencia
Index Organized Tables (IOT)
Tablas organizadas de índice
Tabla cuyos datos están ordenados https://msdn.microsoft.com/esfí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/eslos 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/esinstancia 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/esuna 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/esgenerar 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 comandos de Oracle
Aplicación que se utiliza para obtener https://msdn.microsoft.com/esacceso 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 representación local o pública de un objeto perteneciente a un esquema. Sirve para poder hacer referencia a aquel objeto sin 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 TNS
Es una capa de comunicación que utilizan https://msdn.microsoft.com/eslas 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/esbase de datos que es propietario de un es/library/ms152563.aspx conjunto de objetos de base de datos concreto.
https://orlandoolguin.wordpress.c om/2009/02/22/manejo-desinonimos/
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
DEPARATMENTO EMPLEADO EMPLEADO_DEPARTAMENTO PROYECTO
UBICACIÓN
Sitio 1 (Xalapa) DEPT1 EMP2
Sitio 2 (Cardel) DEPT2 EMP1 EMP3 EMPD1
Sitio 3 (Veracruz) DEPT3
EMPD2 EMPD3
PROY1 PROY2 PROY3 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 defecto
Descripción
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 defecto
IDProyectos
Integer
Descripción
10
No nulo
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.
Identificador del proyecto.
RELACIÓN Campo
Tipo
Tamaño
Valor por defecto
IDRelación
Integer
10
No nulo
Tiporelación
Varchar
30
Nulo
Descripción
Identificador relación.
del
tipo
de
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 defecto
Descripción
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 defecto
Descripción
IDDepartamento
Integer
10
No nulo
Identificador departamento.
único
del
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 defecto
Descripción
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 defecto
Descripción
IDEmpleado
Integer
10
No nulo
Identificador 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 empleado.
paterno
del
MaternoEmp
Varchar
30
Nulo
Apellido empleado.
materno
del
Dirección
Varchar
70
Nulo
Dirección del empleado.
Sueldo
Float
Nulo
Sueldo que tiene el empleado
único
del
por hora. FechaNacimiento Date
Nulo
Fecha de empleado.
nacimiento
del
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 defecto
Descripción
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 FILEExport 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, abrirarchivo, 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 taller3ProgramaciónProcedimientos 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 datostaller3TablasEmpleado_has_ProyectoDesencadenadores, 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 InputArrastrar 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 TablesSexo (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 DatosCargar, 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 newApplication.
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óncré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 adfConfig.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 templateCopy 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.