Está en la página 1de 61

Tarea 4 –

Componente práctico - Práctica Simulada

Carlos G. Herrera Meza


Juan Manuel Grisales Ortiz
Saray Daniela Rocha Maestre
Grupo: 9

Tutor
Mariano Esteban Romero

Universidad Nacional Abierta y a Distancia


Escuela de Ciencias Básicas, Tecnología e Ingeniería ECBTI
Ingeniería de Sistemas
noviembre de 2023
ii

Índice
1. Introducción ........................................................................................................... viii

2. Objetivo general ....................................................................................................... ix

2.1. Objetivos específicos ........................................................................................ ix

3. Ejercicio 1 ............................................................................................................... 10

3.1. 1. Consultas condicionales .............................................................................. 10

3.2. 2. Vistas ........................................................................................................... 10

3.3. 3. Disparadores – Triggers............................................................................... 11

3.4. 4. Procedimientos almacenados ....................................................................... 12

3.5. 5. Transacciones .............................................................................................. 12

4. Ejercicio 2 ............................................................................................................... 13

4.1. Crear las tablas de la base de datos.................................................................. 15

4.1.1. Creación de la tabla trabajos ........................................................................ 16

4.1.2. Creación de la tabla regiones ....................................................................... 17

4.1.3. Creación de la tabla paises ........................................................................... 18

4.1.4. Creación de la tabla ...................................................................................... 20

4.1.5. Creación de la tabla departamentos .............................................................. 21

4.1.6. Creación de la tabla empleados .................................................................... 23

4.1.7. Creación de la tabla dependientes ................................................................ 25

4.2. Listar todas las tablas ....................................................................................... 27


iii

4.3. Insertar los datos a las tablas creadas .............................................................. 27

4.3.1. /*Datos para la tabla trabajos …*/ ............................................................... 28

4.3.2. /*Datos para la tabla regiones …*/ .............................................................. 28

4.3.3. /*Datos para la tabla paises …*/ .................................................................. 29

4.3.4. /*Datos para la tabla ubicaciones …*/ ......................................................... 30

4.3.5. /*Datos para la tabla departamentos …*/ .................................................... 30

4.3.6. /*Datos para la tabla empleados …*/ ........................................................... 31

4.3.7. /*Datos para la tabla dependientes …*/ ....................................................... 32

4.4. Consulta de datos ............................................................................................. 32

5. Conclusiones ........................................................................................................... 60

6. Bibliografía ............................................................................................................. 61
iv

Índice de Figuras

Figura 1 SHOW DATABASES; ......................................................................................... 13

Figura 2 CREATE DATABASE bdrh; ............................................................................... 14

Figura 3 USE bdrh; ........................................................................................................... 15

Figura 4 CREATE TABLE trabajos .................................................................................. 16

Figura 5 CREATE TABLE regiones .................................................................................. 17

Figura 6 CREATE TABLE paises ...................................................................................... 19

Figura 7 CREATE TABLE ubicaciones............................................................................. 20

Figura 8 CREATE TABLE departamentos ........................................................................ 22

Figura 9 CREATE TABLE empleados............................................................................... 23

Figura 10 CREATE TABLE dependientes ......................................................................... 25

Figura 11 SHOW TABLES; ............................................................................................... 27

Figura 12 DESCRIBE trabajos; ........................................................................................ 28

Figura 13 DESCRIBE regiones; ....................................................................................... 28

Figura 14 DESCRIBE paises ............................................................................................ 29

Figura 15 DESCRIBE ubicaciones; .................................................................................. 30

Figura 16 DESCRIBE departamentos; ............................................................................. 30

Figura 17 DESCRIBE empleados; .................................................................................... 31

Figura 18 DESCRIBE dependientes; ................................................................................ 32

Figura 19 SELECT * FROM trabajos; ............................................................................. 33

Figura 20 SELECT * FROM regiones; ............................................................................. 33

Figura 21 SELECT * FROM paises; ................................................................................. 34


v

Figura 22 SELECT * FROM ubicaciones;........................................................................ 34

Figura 23 SELECT * FROM departamentos; ................................................................... 35

Figura 24 SELECT * FROM empleados;.......................................................................... 35

Figura 25 SELECT * FROM dependientes; ...................................................................... 35

Figura 26 Consulta que liste nombre del departamento, dirección, ciudad de los

departamentos ubicados en Colombia. ......................................................................................... 36

Figura 27 Consulta para listar nombres, apellidos, número telefónico y nombre del

trabajo de los empleados del departamento de Ventas ................................................................ 37

Figura 28 Consulta para listar nombres, apellidos y los años que llevan trabajando los

empleados del departamento de Sistemas..................................................................................... 37

Figura 29 Consulta del promedio de años que llevan trabajando los empleados del

departamento de Marketing .......................................................................................................... 38

Figura 30 Empleados trabajando en la oficina de Bogotá ............................................... 38

Figura 31 consulta que listan las ubicaciones de la región América ............................... 39

Figura 32 Consulta que listan los trabajos del departamento de Marketing ................... 39

Figura 33 Vista para listar los países de la región de América del Sur ........................... 40

Figura 34 Listar los empleados y sus dependientes .......................................................... 41

Figura 35 Vista que permita listar los empleados del departamento de Ventas ............... 42

Figura 36 Vista que permita listar los empleados y sus trabajos ..................................... 43

Figura 37 Trigger de Validación para Inserción de Ubicaciones en la Base de Datos de

Recursos Humanos........................................................................................................................ 44

Figura 38 Si el país existe impedirá su actualización ....................................................... 45

Figura 39 Impide la eliminación de regiones con países asociados ................................. 46


vi

Figura 40 Inserción de departamento ............................................................................... 47

Figura 41 Modificación de dependientes .......................................................................... 48

Figura 42 Eliminación de trabajos ................................................................................... 49

Figura 43 Procedimiento almacenado que lista los países por región ............................. 50

Figura 44 Procedimiento almacenado para listar los departamentos de una ubicación

específica....................................................................................................................................... 51

Figura 45 Procedimiento almacenado que obtenga los datos de los empleados del país

“US” ............................................................................................................................................. 52

Figura 46 Procedimiento almacenado que obtiene el salario de un empleado ................ 53

Figura 47 Procedimiento que recupere dirección, ciudad, estado de una ubicación,

dándole como valor de entrada el id de la ubicación ................................................................... 55

Figura 48 Devolver dependiente de los empleados........................................................... 56

Figura 49 INSERT ............................................................................................................. 57

Figura 50 INSERT ............................................................................................................. 57

Figura 51 UPDATE ........................................................................................................... 58

Figura 52 UPDATE ........................................................................................................... 58

Figura 53 DELETE ........................................................................................................... 59

Índice de Tablas

Tabla 1 CREATE TABLE .................................................................................................. 17

Tabla 2 CREATE TABLE regiones ................................................................................... 18

Tabla 3 CREATE TABLE paises ....................................................................................... 19

Tabla 4 CREATE TABLE ubicaciones .............................................................................. 21


vii

Tabla 5 CREATE TABLE departamentos ......................................................................... 22

Tabla 6 CREATE TABLE empleados ................................................................................ 24

Tabla 7 CREATE TABLE dependientes ............................................................................ 26


viii

1. Introducción

Las bases de datos relacionales y el lenguaje SQL son fundamentales en la gestión y

análisis de datos en la actualidad. En este trabajo se presenta una práctica para aplicar diversos

conceptos de SQL mediante la creación de una base de datos de recursos humanos para una

empresa.

Inicialmente se define la estructura de la base de datos, creando las tablas necesarias para

almacenar información sobre ubicaciones, departamentos, empleados, trabajos y dependientes.

Luego se insertan registros de prueba en cada tabla.

Posteriormente, se realizan varias consultas, vistas, triggers y procedimientos

almacenados para ejercitar operaciones básicas e intermediarias en SQL. Entre estas se incluyen

consultas condicionales, cálculo de estadísticas, validaciones de datos, listados dinámicos y

manejo transaccional.

La práctica busca reforzar conceptos sobre el poderoso lenguaje de consultas SQL y su

aplicación en ambientes empresariales reales de gestión de información. Se espera que el lector

pueda utilizar este trabajo como base para desarrollar sus propias habilidades en el uso de bases

de datos.
ix

2. Objetivo general

Aplicar los conceptos fundamentales de SQL en la creación y gestión de una base de

datos de recursos humanos.

2.1. Objetivos específicos

✓ Diseñar el modelo de base de datos estableciendo las tablas y relaciones necesarias

para la gestión de información de recursos humanos.

✓ Implementar el modelo físico creando las tablas en SQL e insertando registros de

prueba.

✓ Ejecutar consultas básicas para validar la correcta creación de la base de datos y sus

relaciones.

✓ Aplicar consultas avanzadas utilizando condicionales y funciones para obtener

requerimientos informativos específicos.

✓ Desarrollar vistas que provean acceso simplificado a datos cruciales de recursos

humanos.

✓ Crear triggers para asegurar la integridad y consistencia de los datos ante operaciones

riesgosas.

✓ Construir procedimientos almacenados que automaticen tareas repetitivas en la base

de datos.

✓ Utilizar transacciones y puntos de salvaguarda para proteger la información y


recuperación ante fallos.
10

3. Ejercicio 1

Realiza explicación de la fundamentación de Consultas y Operaciones SQL. Realizar la

conceptualización de las siguientes temáticas:

3.1. 1. Consultas condicionales

“SQL Conditional Statements: Statements in SQL that allow operations to be performed

based on specified conditions.” [ Sentencias condicionales de SQL: sentencias de SQL que

permiten realizar operaciones en función de condiciones especificadas](Studysmarter, s/f).

Por lo tanto, al utilizar sentencias condicionales en SQL, los desarrolladores pueden

diseñar consultas dinámicas y adaptativas que respondan de manera inteligente a la variabilidad

de los datos. Esto no solo mejora la eficiencia de las operaciones, sino que también permite la

creación de informes más precisos y personalizados.

3.2. 2. Vistas

“A view is a well-known feature in SQL. It allows you to create a virtual table based on

an SQL query referring to other tables in the database. A view stores an SQL query that is

executed whenever you refer to the view. This is a convenient way to get the desired data

because it is easier to run a query stored in a view than to type a query from scratch. Hence, it is

essential to be able to apply this feature efficiently.” [Una vista es una característica bien

conocida en SQL. Permite crear una tabla virtual basada en una consulta SQL que hace

referencia a otras tablas de la base de datos. Una vista almacena una consulta SQL que se ejecuta

cada vez que se hace referencia a la vista. Esta es una forma cómoda de obtener los datos
11

deseados, ya que es más fácil ejecutar una consulta almacenada en una vista que escribir una

consulta desde cero. Por lo tanto, es esencial poder aplicar esta función de manera

eficiente](Sławińska, 2020).

Además de su conveniencia, las vistas en SQL ofrecen ventajas significativas en términos

de seguridad y modularidad en el diseño de bases de datos. Al crear vistas, se puede restringir el

acceso a ciertas columnas o filas, lo que garantiza que los usuarios solo vean la información

relevante para sus responsabilidades y permisos asignados.

3.3. 3. Disparadores – Triggers

“A trigger is a stored procedure in a database that automatically invokes whenever a

special event in the database occurs. For example, a trigger can be invoked when a row is

inserted into a specified table or when specific table columns are updated in simple words a

trigger is a collection of SQL statements with particular names that are stored in system

memory.” [Un desencadenador es un procedimiento almacenado en una base de datos que se

invoca automáticamente cada vez que se produce un evento especial en la base de datos. Por

ejemplo, se puede invocar un desencadenador cuando se inserta una fila en una tabla

especificada o cuando se actualizan columnas de tabla específicas en palabras simples, un

desencadenador es una colección de instrucciones SQL con nombres particulares que se

almacenan en la memoria del sistema](bilal-hungund, 2018).

Estos desencadenadores desempeñan un papel crucial en la gestión de la base de datos al

permitir la ejecución automática de acciones específicas en respuesta a eventos predeterminados.

Al utilizar una combinación de instrucciones SQL, los desencadenadores pueden realizar tareas
12

como la validación de datos, la actualización de registros relacionados o la ejecución de

operaciones complejas que van más allá de las capacidades de una única consulta.

3.4. 4. Procedimientos almacenados

“A stored procedure is a prepared SQL code that you can save, so the code can be reused

over and over again.”[Un procedimiento almacenado es un código SQL preparado que se puede

guardar, por lo que él código se puede reutilizar una y otra vez](W3schools, s/f).

Estos procedimientos almacenados ofrecen una eficiente modularidad en la programación

de bases de datos al permitir la encapsulación de lógica de negocio compleja en una única

entidad ejecutable. Al ser precompilados y almacenados en la base de datos, estos

procedimientos no solo mejoran la reutilización del código, sino que también optimizan el

rendimiento al reducir la necesidad de transmitir grandes bloques de código desde la aplicación

al servidor de base de datos.

3.5. 5. Transacciones

“A transaction is a single unit of work. If a transaction is successful, all of the data

modifications made during the transaction are committed and become a permanent part of the

database. If a transaction encounters errors and must be canceled or rolled back, then all of the

data modifications are erased.” [Una transacción es una sola unidad de trabajo. Si una

transacción se realiza correctamente, todas las modificaciones de datos realizadas durante la

transacción se confirman y se convierten en una parte permanente de la base de datos. Si una

transacción encuentra errores y debe cancelarse o revertirse, se borran todas las modificaciones

de datos](rwestMSFT, 2023).
13

Esta capacidad de garantizar la integridad de los datos, incluso en situaciones de error, es

esencial para mantener la coherencia y fiabilidad en entornos de bases de datos, asegurando que

las operaciones se realicen de manera controlada y segura.

4. Ejercicio 2

Crear una base de datos que se denomina bdrh, el motor de bases de datos que se

manejará es MySQL Workbench.

Se debe crear la base de datos de Recursos Humanos esta gestiona los datos de bdrh de

las pequeñas empresas, A continuación, se sugiere utilizar las sentencias SQL de la forma

ilustrada para realizar la práctica:

Figura 1

SHOW DATABASES;

Nota. La sentencia lista las bases de datos contenidas en SQL. Elaboración propia.
14

Figura 2

CREATE DATABASE bdrh;

Nota. Sentencia que crea la base de datos bdrh. Elaboración propia.


15

Figura 3

USE bdrh;

Nota. Sentencia que carga la base de datos a ser utilizada en este ejemplo la base de datos bdrh.

Elaboración propia.

SHOW DATABASES;

Utilizando nuevamente el comando se evidencia la creación de la nueva base de datos

bdrh.

4.1. Crear las tablas de la base de datos

En esta sección se crean las 7 tablas de las bases de datos bdrh, se ejecutan diferentes

sentencias de la creación de las tablas en las bases de datos.


16

4.1.1. Creación de la tabla trabajos

1 CREATE TABLE trabajos (


2 id_trabajo INT(11) NOT NULL,
3 trabajo_nombre VARCHAR(35) NOT NULL,
4 salario_min DECIMAL(10,2) NOT NULL,
5 salario_max DECIMAL(10,2) NOT NULL,
6 PRIMARY KEY (id_trabajo))
7 ENGINE = InnoDB;

Figura 4

CREATE TABLE trabajos

Nota: El mensaje de advertencia indica que la indicación del ancho de visualización para el tipo de datos

INT está en desuso y será eliminado en futuras versiones, además, las sentencias anteriores crean la tabla

trabajos la cual almacena los datos de los puestos de trabajo, incluyendo el título del puesto y el rango

salarial.
17

4.1.1.1. características de cada una de las columnas

Tabla 1

CREATE TABLE

LÍNEA DESCRIPCIÓN
No
1 CREATE TABLE trabajos ( Define el inicio de la creación de la tabla "trabajos".
2 id_trabajo INT(11) NOT NULL, Columna para el identificador único del trabajo. Tipo de dato: INT(11) no
nulo.
3 trabajo_nombre VARCHAR(35) NOT Columna para el nombre del trabajo. Tipo de dato: VARCHAR(35) no nulo.
NULL,
4 salario_min DECIMAL(10,2) NOT NULL, Columna para el salario mínimo del trabajo. Tipo de dato: DECIMAL(10,2)
no nulo.
5 salario_max DECIMAL(10,2) NOT NULL, Columna para el salario máximo del trabajo. Tipo de dato: DECIMAL(10,2)
no nulo.
6 PRIMARY KEY (id_trabajo)) Establece id_trabajo como clave primaria, garantizando su unicidad.
7 ENGINE = InnoDB; Define el motor de almacenamiento InnoDB para la tabla.
Nota. Descripción del código SQL de la tabla trabajo. Elaboración propia.

4.1.2. Creación de la tabla regiones

1 CREATE TABLE regiones (


2 id_region INT(11) NOT NULL,
3 region_nombre VARCHAR(45) NOT NULL,
4 PRIMARY KEY (id_region))
5 ENGINE = InnoDB;

Figura 5

CREATE TABLE regiones


18

Nota. Las sentencias anteriores crean la tabla regiones, almacena los datos de regiones como Asia, Europa,

América del Norte, America del Sur, África, Oceania. Elaboración propia.

4.1.2.1. características de cada una de las columnas

Tabla 2

CREATE TABLE regiones

No LÍNEA DESCRIPCIÓN
1 CREATE TABLE regiones ( Define el inicio de la creación de la tabla
"regiones".
2 id_region INT(11) NOT NULL, Columna para el identificador único de la región.
Tipo de dato: INT(11) no nulo.
3 region_nombre VARCHAR(45) Columna para el nombre de la región. Tipo de dato:
NOT NULL, VARCHAR(45) no nulo.
4 PRIMARY KEY (id_region)) Establece id_region como clave primaria,
garantizando su unicidad.
5 ENGINE = InnoDB; Define el motor de almacenamiento InnoDB para la
tabla.
Nota. Descripción del código SQL de la tabla regiones. Elaboración propia.

4.1.3. Creación de la tabla paises

1 CREATE TABLE paises (


2 id_pais CHAR(2) NOT NULL,
3 id_region INT(11) NOT NULL,
4 pais_nombre VARCHAR(50) NOT NULL,
5 PRIMARY KEY (id_pais),
6 FOREIGN KEY (id_region) REFERENCES regiones (id_region)
7 ON DELETE CASCADE
8 ON UPDATE CASCADE)
9 ENGINE = InnoDB;
19

Figura 6

CREATE TABLE paises

Nota: Las sentencias anteriores crean la tabla paises, almacena los datos de los países

como Colombia (CO), Mexico (MX), Estados Unidos (US), España (ES) en los que opera la

empresa,

4.1.3.1. Características de cada una de las columnas en la siguiente tabla

Tabla 3

CREATE TABLE paises

No LÍNEA DESCRIPCIÓN
1 CREATE TABLE paises ( Define el inicio de la creación de la tabla
"paises".
2 id_pais CHAR(2) NOT NULL, Columna para el identificador único del país.
Tipo de dato: CHAR(2) no nulo.
3 id_region INT(11) NOT NULL, Columna para el identificador de la región
asociada al país. Tipo de dato: INT(11) no
nulo.
4 pais_nombre VARCHAR(50) NOT Columna para el nombre del país. Tipo de dato:
NULL, VARCHAR(50) no nulo.
5 PRIMARY KEY (id_pais), Establece id_pais como clave primaria,
garantizando su unicidad.
6 FOREIGN KEY (id_region) Establece una clave foránea que referencia a la
REFERENCES regiones (id_region) tabla "regiones" y el campo "id_region".
7 ON DELETE CASCADE Define la acción de cascada en caso de
eliminación de la región asociada.
8 ON UPDATE CASCADE) Define la acción de cascada en caso de
actualización del id_region asociado.
20

9 ENGINE = InnoDB; Define el motor de almacenamiento InnoDB


para la tabla.
Nota. Descripción del código SQL de la tabla paises. Elaboración propia.

4.1.4. Creación de la tabla

1 CREATE TABLE ubicaciones (


2 id_ubicacion INT(11) NOT NULL,
3 direccion VARCHAR(40) NOT NULL,
4 codigo_postal VARCHAR(12) NULL,
5 ciudad VARCHAR(30) NOT NULL,
6 estado_provincia VARCHAR(25) NOT NULL,
7 id_pais CHAR(2) NOT NULL,
8 PRIMARY KEY (id_ubicacion),
9 FOREIGN KEY (id_pais) REFERENCES paises (id_pais)
10 ON DELETE CASCADE
11 ON UPDATE CASCADE)
12 ENGINE = InnoDB;

Figura 7

CREATE TABLE ubicaciones

Nota: Las sentencias anteriores crean la tabla ubicaciones, almacena la ubicación de los

departamentos de la empresa. Elaboración propia.


21

4.1.4.1. Características de cada una de las columnas

Tabla 4

CREATE TABLE ubicaciones

No LÍNEA DESCRIPCIÓN
1 CREATE TABLE ubicaciones ( Define el inicio de la creación de la tabla
"ubicaciones".
2 id_ubicacion INT(11) NOT Columna para el identificador único de la
NULL, ubicación. Tipo de dato: INT(11) no nulo.
3 direccion VARCHAR(40) NOT Columna para la dirección de la ubicación. Tipo
NULL, de dato: VARCHAR(40) no nulo.
4 codigo_postal VARCHAR(12) Columna para el código postal de la ubicación.
NULL, Tipo de dato: VARCHAR(12), permite valores
nulos.
5 ciudad VARCHAR(30) NOT Columna para el nombre de la ciudad. Tipo de
NULL, dato: VARCHAR(30) no nulo.
6 estado_provincia Columna para el nombre del estado o provincia.
VARCHAR(25) NOT NULL, Tipo de dato: VARCHAR(25) no nulo.
7 id_pais CHAR(2) NOT NULL, Columna para el identificador del país asociado a
la ubicación. Tipo de dato: CHAR(2) no nulo.
8 PRIMARY KEY (id_ubicacion), Establece id_ubicacion como clave primaria,
garantizando su unicidad.
9 FOREIGN KEY (id_pais) Establece una clave foránea que referencia a la
REFERENCES paises (id_pais) tabla "paises" y el campo "id_pais".
10 ON DELETE CASCADE Define la acción de cascada en caso de
eliminación del país asociado.
11 ON UPDATE CASCADE) Define la acción de cascada en caso de
actualización del id_pais asociado.
12 ENGINE = InnoDB; Define el motor de almacenamiento InnoDB para
la tabla.
Nota. Descripción del código SQL de la tabla ubicaciones. Elaboración propia.

4.1.5. Creación de la tabla departamentos

1 CREATE TABLE departamentos (


2 id_departamento INT(11) NOT NULL,
3 departamento_nombre VARCHAR(30) NOT NULL,
4 id_ubicacion INT(11) NOT NULL,
5 PRIMARY KEY (id_departamento),
6 FOREIGN KEY (id_ubicacion) REFERENCES ubicaciones (id_ubicacion)
7 ON DELETE CASCADE
8 ON UPDATE CASCADE)
9 ENGINE = InnoDB;
22

Figura 8

CREATE TABLE departamentos

Nota: Las sentencias anteriores crean la tabla departamentos, almacena los datos de los departamentos de la

empresa como Ventas, Sistemas y Marketing.

4.1.5.1. Características de cada una de las columnas

Tabla 5

CREATE TABLE departamentos

No LÍNEA DESCRIPCIÓN
1 CREATE TABLE departamentos ( Define el inicio de la creación de la tabla
"departamentos".
2 id_departamento INT(11) NOT Columna para el identificador único del
NULL, departamento. Tipo de dato: INT(11) no
nulo.
3 departamento_nombre Columna para el nombre del departamento.
VARCHAR(30) NOT NULL, Tipo de dato: VARCHAR(30) no nulo.
4 id_ubicacion INT(11) NOT NULL, Columna para el identificador único de la
ubicación asociada al departamento. Tipo de
dato: INT(11) no nulo.
5 PRIMARY KEY (id_departamento), Establece id_departamento como clave
primaria, garantizando su unicidad.
6 FOREIGN KEY (id_ubicacion) Establece una clave foránea que referencia a
REFERENCES ubicaciones la tabla "ubicaciones" y el campo
(id_ubicacion) "id_ubicacion".
7 ON DELETE CASCADE Define la acción de cascada en caso de
eliminación de la ubicación asociada.
8 ON UPDATE CASCADE) Define la acción de cascada en caso de
actualización del id_ubicacion asociado.
9 ENGINE = InnoDB; Define el motor de almacenamiento InnoDB
23

para la tabla.
Nota. Descripción del código SQL de la tabla departamentos. Elaboración propia.

4.1.6. Creación de la tabla empleados

1 CREATE TABLE empleados (


2 id_empleado INT(11) NOT NULL,
3 nombres VARCHAR(20) NOT NULL,
4 apellidos VARCHAR(25) NOT NULL,
5 email VARCHAR(100) NOT NULL,
6 numero_telefono VARCHAR(20) NOT NULL,
7 fecha_ingreso DATE NOT NULL,
8 id_trabajo INT(11) NOT NULL,
9 salario DECIMAL(10,2) NOT NULL,
10 id_gerencia INT(11) NULL,
11 id_departamento INT(11) NOT NULL, PRIMARY KEY (id_empleado),
12 FOREIGN KEY (id_trabajo) REFERENCES trabajos (id_trabajo)
13 ON DELETE CASCADE
14 ON UPDATE CASCADE,
15 FOREIGN KEY (id_departamento) REFERENCES departamentos (id_departamento)
16 ON DELETE CASCADE
17 ON UPDATE CASCADE,
18 FOREIGN KEY (id_gerencia) REFERENCES empleados (id_empleado)
19 ON DELETE CASCADE
20 ON UPDATE CASCADE)
21 ENGINE = InnoDB;

Figura 9

CREATE TABLE empleados


24

Nota: Las sentencias anteriores crean la tabla empleados, almacena los datos de los empleados de la

empresa

4.1.6.1. Características de cada una de las columnas

Tabla 6

CREATE TABLE empleados

No LÍNEA DESCRIPCIÓN
1 CREATE TABLE empleados ( Define el inicio de la creación de la tabla
"empleados".
2 id_empleado INT(11) NOT NULL, Columna para el identificador único del
empleado. Tipo de dato: INT(11) no nulo.
3 nombres VARCHAR(20) NOT Columna para los nombres del empleado. Tipo
NULL, de dato: VARCHAR(20) no nulo.
4 apellidos VARCHAR(25) NOT Columna para los apellidos del empleado.
NULL, Tipo de dato: VARCHAR(25) no nulo.
5 email VARCHAR(100) NOT Columna para la dirección de correo
NULL, electrónico del empleado. Tipo de dato:
VARCHAR(100) no nulo.
6 numero_telefono VARCHAR(20) Columna para el número de teléfono del
NOT NULL, empleado. Tipo de dato: VARCHAR(20) no
nulo.
7 fecha_ingreso DATE NOT NULL, Columna para la fecha de ingreso del
empleado. Tipo de dato: DATE no nulo.
8 id_trabajo INT(11) NOT NULL, Columna para el identificador único del
trabajo asociado al empleado. Tipo de dato:
INT(11) no nulo.
9 salario DECIMAL(10,2) NOT Columna para el salario del empleado. Tipo de
NULL, dato: DECIMAL(10,2) no nulo.
10 id_gerencia INT(11) NULL, Columna para el identificador único de la
gerencia asociada al empleado. Tipo de dato:
INT(11), permite valores nulos.
11 id_departamento INT(11) NOT Columna para el identificador único del
NULL, departamento asociado al empleado. Tipo de
dato: INT(11) no nulo.
12 PRIMARY KEY (id_empleado), Establece id_empleado como clave primaria,
garantizando su unicidad.
13 FOREIGN KEY (id_trabajo) Establece una clave foránea que referencia a la
REFERENCES trabajos (id_trabajo) tabla "trabajos" y el campo "id_trabajo".
14 ON DELETE CASCADE Define la acción de cascada en caso de
eliminación del trabajo asociado.
15 ON UPDATE CASCADE, Define la acción de cascada en caso de
actualización del id_trabajo asociado.
16 FOREIGN KEY (id_departamento) Establece una clave foránea que referencia a la
REFERENCES departamentos tabla "departamentos" y el campo
(id_departamento) "id_departamento".
17 ON DELETE CASCADE Define la acción de cascada en caso de
25

eliminación del departamento asociado.


18 ON UPDATE CASCADE, Define la acción de cascada en caso de
actualización del id_departamento asociado.
19 FOREIGN KEY (id_gerencia) Establece una clave foránea que referencia a la
REFERENCES empleados misma tabla "empleados" y el campo
(id_empleado) "id_empleado" para la gerencia.
20 ON DELETE CASCADE Define la acción de cascada en caso de
eliminación de la gerencia asociada.
21 ON UPDATE CASCADE) Define la acción de cascada en caso de
actualización del id_gerencia asociado.
22 ENGINE = InnoDB; Define el motor de almacenamiento InnoDB
para la tabla.
Nota. Descripción del código SQL de la tabla empleados. Elaboración propia.

4.1.7. Creación de la tabla dependientes

1 CREATE TABLE dependientes (


2 id_dependiente INT(11) NOT NULL,
3 nombres VARCHAR(50) NOT NULL,
4 apellidos VARCHAR(50) NOT NULL,
5 vinculo VARCHAR(25) NOT NULL,
6 id_empleado INT(11) NOT NULL,
7 PRIMARY KEY (id_dependiente),
8 FOREIGN KEY (id_empleado) REFERENCES empleados (id_empleado)
9 ON DELETE CASCADE
10 ON UPDATE CASCADE)
11 ENGINE = InnoDB;

Figura 10

CREATE TABLE dependientes

Nota: Las sentencias anteriores crean la tabla dependiente, almacena los datos de los dependientes del

empleado como Hijo, Hija, Esposa y Esposo.


26

4.1.7.1. Características de cada una de las columnas

Tabla 7

CREATE TABLE dependientes

No LÍNEA DESCRIPCIÓN
1 CREATE TABLE dependientes ( Define el inicio de la creación de la tabla
"dependientes".
2 id_dependiente INT(11) NOT Columna para el identificador único del
NULL, dependiente. Tipo de dato: INT(11) no nulo.
3 nombres VARCHAR(50) NOT Columna para los nombres del dependiente. Tipo
NULL, de dato: VARCHAR(50) no nulo.
4 apellidos VARCHAR(50) NOT Columna para los apellidos del dependiente.
NULL, Tipo de dato: VARCHAR(50) no nulo.
5 vinculo VARCHAR(25) NOT Columna para el vínculo del dependiente con el
NULL, empleado. Tipo de dato: VARCHAR(25) no
nulo.
6 id_empleado INT(11) NOT Columna para el identificador único del
NULL, empleado al que está vinculado el dependiente.
Tipo de dato: INT(11) no nulo.
7 PRIMARY KEY (id_dependiente), Establece id_dependiente como clave primaria,
garantizando su unicidad.
8 FOREIGN KEY (id_empleado) Establece una clave foránea que referencia a la
REFERENCES empleados tabla "empleados" y el campo "id_empleado".
(id_empleado)
9 ON DELETE CASCADE Define la acción de cascada en caso de
eliminación del empleado asociado.
10 ON UPDATE CASCADE) Define la acción de cascada en caso de
actualización del id_empleado asociado.
11 ENGINE = InnoDB; Define el motor de almacenamiento InnoDB
para la tabla.
Nota. Descripción del código SQL de la tabla dependientes. Elaboración propia.
27

4.2. Listar todas las tablas

Figura 11

SHOW TABLES;

Nota: Listar las tablas creadas para evidenciar que están las 7 tablas. Elaboración propia.

4.3. Insertar los datos a las tablas creadas

Agregar minimo 5 registros cada una de las tablas creadas, en la tabla empleado agregar

como registro cada uno de los integrantes del grupo colaborativo. Tener en cuenta que las tablas

que primero se deben llenar son aquellas que no tiene llaves foráneas.

Dejar aquí las evidencias correspondientes, tomar foto o captura de pantalla del proceso

realizado.
28

4.3.1. /*Datos para la tabla trabajos …*/

Figura 12

DESCRIBE trabajos;

1 -- Insertar registros en la tabla trabajos


2 INSERT INTO trabajos (id_trabajo, trabajo_nombre, salario_min, salario_max)
3 VALUES
4 (1, 'Desarrollador', 50000.00, 80000.00),
5 (2, 'Gerente de Proyecto', 70000.00, 120000.00),
6 (3, 'Diseñador UX', 55000.00, 90000.00),
7 (4, 'Analista Financiero', 60000.00, 95000.00),
8 (5, 'Especialista en Marketing', 58000.00, 92000.00);

4.3.2. /*Datos para la tabla regiones …*/

Figura 13

DESCRIBE regiones;

1 -- Insertar registros en la tabla regiones


2 INSERT INTO regiones (id_region, region_nombre)
29

3 VALUES
4 (1, 'América'),
5 (2, 'Europa'),
6 (3, 'Asia'),
7 (4, 'África'),
8 (5, 'Oceanía');

4.3.3. /*Datos para la tabla paises …*/

Figura 14

DESCRIBE paises

1 -- Insertar registros actualizados en la tabla paises


2 INSERT INTO paises (id_pais, id_region, pais_nombre)
3 VALUES
4 ('US', 1, 'Estados Unidos'),
5 ('DE', 2, 'Alemania'),
6 ('JP', 3, 'Japón'),
7 ('BR', 1, 'Brasil'),
8 ('AU', 5, 'Australia'),
9 ('CO', 1, 'Colombia');
30

4.3.4. /*Datos para la tabla ubicaciones …*/

Figura 15

DESCRIBE ubicaciones;

-- Insertar registros actualizados en la tabla ubicaciones


1
INSERT INTO ubicaciones (id_ubicacion, direccion, codigo_postal, ciudad,
2
estado_provincia, id_pais)
3
VALUES
4
(1, '742 Evergreen Terrace', '12345', 'Springfield', 'Illinois', 'US'),
5
(2, 'Münchner Str. 123', '67890', 'Munich', 'Baviera', 'DE'),
6
(3, '5 Chome-1-5 Jingumae', '54321', 'Shibuya', 'Tokio', 'JP'),
7
(4, 'Av. Paulista, 123', '98765', 'São Paulo', 'São Paulo', 'BR'),
8
(5, '123 George St', '23456', 'Sydney', 'Nueva Gales del Sur', 'AU'),
9
(6, 'Cra 7 # 32-15', '54321', 'Bogotá', 'Cundinamarca', 'CO'),
10
(7, 'Cra 70 # 45-67', '87654', 'Medellín', 'Antioquia', 'CO');

4.3.5. /*Datos para la tabla departamentos …*/

Figura 16

DESCRIBE departamentos;

1 -- Insertar registros en la tabla departamentos


31

2 INSERT INTO departamentos (id_departamento, departamento_nombre,


3 id_ubicacion)
4 VALUES
5 (1, 'Desarrollo', 1),
6 (2, 'Finanzas', 4),
7 (3, 'Marketing', 5),
8 (4, 'Recursos Humanos', 3),
9 (5, 'Ventas', 2);
10 (6, 'Desarrollo Colombia', 6),
(7, 'Ventas Colombia', 7);

4.3.6. /*Datos para la tabla empleados …*/

Figura 17

DESCRIBE empleados;

-- Insertar registros actualizados en la tabla empleados


INSERT INTO empleados (id_empleado, nombres, apellidos, email,
numero_telefono, fecha_ingreso, id_trabajo, salario, id_departamento)
1 VALUES
2 (1, 'John', 'Smith', 'john.smith@example.com', '123-456-7890', '2023-01-01',
3 1, 75000.00, 1),
4 (2, 'Maria', 'Johnson', 'maria.johnson@example.com', '987-654-3210', '2023-
5 02-15', 2, 95000.00, 2),
6 (3, 'Carlos', 'Brown', 'carlos.brown@example.com', '555-123-4567', '2023-03-
7 20', 3, 85000.00, 3),
8 (4, 'Ana', 'Miller', 'ana.miller@example.com', '777-888-9999', '2023-04-10',
4, 90000.00, 4),
(5, 'Pedro', 'Davis', 'pedro.davis@example.com', '111-222-3333', '2023-05-
05', 5, 80000.00, 5);
32

4.3.7. /*Datos para la tabla dependientes …*/

Figura 18

DESCRIBE dependientes;

-- Insertar registros actualizados en la tabla dependientes


1
INSERT INTO dependientes (id_dependiente, nombres, apellidos, vinculo,
2
id_empleado)
3
VALUES
4
(1, 'Isabella', 'Pérez', 'Hija', 1),
5
(2, 'Daniel', 'Gomez', 'Hijo', 2),
6
(3, 'Sophia', 'López', 'Hija', 3),
7
(4, 'Alexander', 'Martínez', 'Hijo', 4),
8
(5, 'Olivia', 'Rodríguez', 'Hija', 5);

4.4. Consulta de datos

Después de haber cargado los datos a las tablas de la base de datos se harán consultas

para listar los datos buscados.


33

Figura 19

SELECT * FROM trabajos;

Figura 20

SELECT * FROM regiones;


34

Figura 21

SELECT * FROM paises;

Figura 22

SELECT * FROM ubicaciones;


35

Figura 23

SELECT * FROM departamentos;

Figura 24

SELECT * FROM empleados;

Figura 25

SELECT * FROM dependientes;


36

Realizar las siguientes operaciones y evidenciar el resultado (No debe haber resultados en

NULL):

1. Realizar las siguientes consultas utilizando condicionales:

a. Crear consulta que liste nombre del departamento, dirección, ciudad de los

departamentos ubicados en Colombia.

Figura 26

Consulta que liste nombre del departamento, dirección, ciudad de los departamentos

ubicados en Colombia.
37

b. Crear consulta que liste nombres, apellidos, número telefónico, nombre del

trabajo de los empleados del departamento de Ventas.

Figura 27

Consulta para listar nombres, apellidos, número telefónico y nombre del trabajo de los

empleados del departamento de Ventas

c. Crear consulta que liste Nombres, Apellidos y los años que llevan trabajando los

empleados del departamento de Sistemas.

Figura 28

Consulta para listar nombres, apellidos y los años que llevan trabajando los empleados

del departamento de Sistemas


38

d. Crear consulta del promedio de años que llevan trabajando los empleados del

departamento de Marketing.

Figura 29

Consulta del promedio de años que llevan trabajando los empleados del departamento de

Marketing

e. Crear consulta que liste los empleados que trabajen en la ciudad XX (agregar la

ciudad según los registros ingresados)

Figura 30

Empleados trabajando en la oficina de Bogotá


39

f. Crear consulta que liste las ubicaciones de la region XX (agregar la region según

los registros ingresados)

Figura 31

consulta que listan las ubicaciones de la región América

g. Crear consulta que liste los trabajos del departamento XX (agregar departamento

según los registros ingresados)

Figura 32

Consulta que listan los trabajos del departamento de Marketing


40

2. Crear las siguientes Vistas:

a. Crear una vista que permita listar los países de la región América del Sur

Figura 33

Vista para listar los países de la región de América del Sur


41

b. Crear una vista que permita listar los empleados y sus dependientes.

Figura 34

Listar los empleados y sus dependientes


42

c. Crear una vista que permita listar los empleados del departamento de Ventas.

Figura 35

Vista que permita listar los empleados del departamento de Ventas


43

d. Crear una vista que permita listar los empleados y sus trabajos.

Figura 36

Vista que permita listar los empleados y sus trabajos


44

3. Crear los siguientes triggers:

a. Crear triggers para la inserción de ubicaciones

Figura 37

Trigger de Validación para Inserción de Ubicaciones en la Base de Datos de Recursos

Humanos
45

b. Crear triggers para la modificación de países

Figura 38

Si el país existe impedirá su actualización


46

c. Crear triggers para la eliminación de regiones

Figura 39

Impide la eliminación de regiones con países asociados


47

d. Crear triggers para la inserción de departamentos

Figura 40

Inserción de departamento

Nota: Este trigger se activará antes de cada inserción en la tabla departamentos. Verificará si la ubicación

asociada al nuevo departamento existe en la tabla ubicaciones. Si no existe, generará un error y no permitirá

la inserción del nuevo departamento.


48

e. Crear triggers para la modificación de dependientes

Figura 41

Modificación de dependientes

Nota: Este trigger se ejecutará antes de cada actualización en la tabla de dependientes y verificará si el

nuevo vinculo es uno de los valores permitidos. Si no es así, generará un error y la actualización se

cancelará.
49

f. Crear triggers para la eliminación de trabajos

Figura 42

Eliminación de trabajos

Nota: Este trigger se ejecuta antes de que se elimine un registro en la tabla trabajos. Si hay empleados

asociados al trabajo que se está eliminando, se cancela la eliminación y se muestra un mensaje de error.
50

4. Crear los siguientes procedimientos:

a. Crear un procedimiento almacenado que liste los países de XX región

seleccionada.

Figura 43

Procedimiento almacenado que lista los países por región


51

b. Crear un procedimiento almacenado que liste los departamentos de XX ubicación

seleccionada.

Figura 44

Procedimiento almacenado para listar los departamentos de una ubicación específica


52

c. Crear un procedimiento almacenado que obtenga los datos de los empleados del

XX pais (agregar el país según los registros ingresados).

Figura 45

Procedimiento almacenado que obtenga los datos de los empleados del país “US”
53

d. Crear un procedimiento almacenado que obtenga el salario de un empleado de un

XX departamento.

Figura 46

Procedimiento almacenado que obtiene el salario de un empleado

e. Crear un procedimiento almacenado que obtenga el valor de un producto y la

cantidad de producto vendido de XX producto.


54

f. Crear un procedimiento que recupere dirección, ciudad, estado de una ubicación,

dándole como valor de entrada el id de la ubicación, si el id introducido no es

válido, mostraremos un mensaje informativo comunicándolo.


55

Figura 47

Procedimiento que recupere dirección, ciudad, estado de una ubicación, dándole como

valor de entrada el id de la ubicación

g. Crear un procedimiento en el que pasaremos como parámetro el Apellido de un

empleado. El procedimiento devolverá los dependientes del empleado escrito, si

el empleado no existe en la base de datos, informaremos de ello.


56

Figura 48

Devolver dependiente de los empleados


57

5. Crear las siguientes transacciones: Crear cinco transacciones utilizando

COMMIT, ROLLBACK, SAVEPOINT

a. Dos con el comando de control INSERT,

Figura 49

INSERT

Figura 50

INSERT
58

b. Dos con el comando UPDATE

Figura 51

UPDATE

Figura 52

UPDATE
59

c. Uno con el comando DELETE

Figura 53

DELETE
60

5. Conclusiones

El desarrollo de esta práctica permitió aplicar de manera integral diversos conceptos

fundamentales de SQL para la creación y gestión de bases de datos relacionales.

Se implementó con éxito un modelo físico de base de datos para la gestión de recursos

humanos de una empresa, creando todas las tablas necesarias y estableciendo relaciones

adecuadas entre ellas. Luego se insertaron registros de prueba con información coherente.

Utilizando la base de datos creada se logró ejercitar consultas simples y complejas para

responder a distintos requerimientos informativos del área de RH. También se construyeron

vistas, triggers y procedimientos almacenados como objetos de base de datos reutilizables y que

aportan automatización e integridad.

Asimismo, se aplicaron transacciones y conceptos de atomicidad en operaciones críticas.

Esto permite tener mayor control ante fallas y proteger la consistencia de los datos.

En definitiva, esta práctica sirvió para afianzar las destrezas en SQL tanto en el

modelamiento como en la manipulación programática de bases de datos, sentando las bases para

encarar projetos de análisis de datos del mundo real. Queda demostrada la relevancia y vigencia

de estos conceptos en la era de los datos.


61

6. Bibliografía

bilal-hungund. (2018, septiembre 24). SQL Trigger | Student Database. GeeksforGeeks.

https://www.geeksforgeeks.org/sql-trigger-student-database/

rwestMSFT. (2023, febrero 28). Transactions (Transact-SQL)—SQL Server.

https://learn.microsoft.com/en-us/sql/t-sql/language-elements/transactions-transact-sql?view=sql-

server-ver16

Sławińska, M. (2020, diciembre 11). What is an SQL View? LearnSQL.Com.

https://learnsql.com/blog/sql-view/

Studysmarter. (s/f). SQL Conditional Statements: Examples in Select & Where.

StudySmarter UK. Recuperado el 24 de noviembre de 2023, de

https://www.studysmarter.co.uk/explanations/computer-science/databases/sql-conditional-

statements/

W3schools. (s/f). SQL Stored Procedures. Recuperado el 24 de noviembre de 2023, de

https://www.w3schools.com/SQL/sql_stored_procedures.asp

También podría gustarte