Componente Práctico - Práctica Simulada: Tarea 4
Componente Práctico - Práctica Simulada: Tarea 4
Componente Práctico - Práctica Simulada: Tarea 4
Tutor
Mariano Esteban Romero
Índice
1. Introducción ........................................................................................................... viii
3. Ejercicio 1 ............................................................................................................... 10
4. Ejercicio 2 ............................................................................................................... 13
5. Conclusiones ........................................................................................................... 60
6. Bibliografía ............................................................................................................. 61
iv
Índice de Figuras
Figura 26 Consulta que liste nombre del departamento, dirección, ciudad de los
Figura 27 Consulta para listar nombres, apellidos, número telefónico y nombre del
Figura 28 Consulta para listar nombres, apellidos y los años que llevan trabajando los
Figura 29 Consulta del promedio de años que llevan trabajando los empleados del
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 35 Vista que permita listar los empleados del departamento de Ventas ............... 42
Figura 36 Vista que permita listar los empleados y sus trabajos ..................................... 43
Recursos Humanos........................................................................................................................ 44
Figura 43 Procedimiento almacenado que lista los países por región ............................. 50
específica....................................................................................................................................... 51
Figura 45 Procedimiento almacenado que obtenga los datos de los empleados del país
“US” ............................................................................................................................................. 52
Índice de Tablas
1. Introducción
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
almacenados para ejercitar operaciones básicas e intermediarias en SQL. Entre estas se incluyen
manejo transaccional.
pueda utilizar este trabajo como base para desarrollar sus propias habilidades en el uso de bases
de datos.
ix
2. Objetivo general
prueba.
✓ Ejecutar consultas básicas para validar la correcta creación de la base de datos y sus
relaciones.
humanos.
✓ Crear triggers para asegurar la integridad y consistencia de los datos ante operaciones
riesgosas.
de datos.
3. Ejercicio 1
de los datos. Esto no solo mejora la eficiencia de las operaciones, sino que también permite la
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).
acceso a ciertas columnas o filas, lo que garantiza que los usuarios solo vean la información
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
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
Al utilizar una combinación de instrucciones SQL, los desencadenadores pueden realizar tareas
12
operaciones complejas que van más allá de las capacidades de una única consulta.
“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).
procedimientos no solo mejoran la reutilización del código, sino que también optimizan el
3.5. 5. Transacciones
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 encuentra errores y debe cancelarse o revertirse, se borran todas las modificaciones
de datos](rwestMSFT, 2023).
13
esencial para mantener la coherencia y fiabilidad en entornos de bases de datos, asegurando que
4. Ejercicio 2
Crear una base de datos que se denomina bdrh, el motor de bases de datos que se
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
Figura 1
SHOW DATABASES;
Nota. La sentencia lista las bases de datos contenidas en SQL. Elaboración propia.
14
Figura 2
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;
bdrh.
En esta sección se crean las 7 tablas de las bases de datos bdrh, se ejecutan diferentes
Figura 4
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
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.
Figura 5
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.
Tabla 2
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.
Figura 6
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,
Tabla 3
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
Figura 7
Nota: Las sentencias anteriores crean la tabla ubicaciones, almacena la ubicación de los
Tabla 4
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.
Figura 8
Nota: Las sentencias anteriores crean la tabla departamentos, almacena los datos de los departamentos de la
Tabla 5
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.
Figura 9
Nota: Las sentencias anteriores crean la tabla empleados, almacena los datos de los empleados de la
empresa
Tabla 6
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
Figura 10
Nota: Las sentencias anteriores crean la tabla dependiente, almacena los datos de los dependientes del
Tabla 7
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
Figura 11
SHOW TABLES;
Nota: Listar las tablas creadas para evidenciar que están las 7 tablas. Elaboración propia.
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
Figura 12
DESCRIBE trabajos;
Figura 13
DESCRIBE regiones;
3 VALUES
4 (1, 'América'),
5 (2, 'Europa'),
6 (3, 'Asia'),
7 (4, 'África'),
8 (5, 'Oceanía');
Figura 14
DESCRIBE paises
Figura 15
DESCRIBE ubicaciones;
Figura 16
DESCRIBE departamentos;
Figura 17
DESCRIBE empleados;
Figura 18
DESCRIBE dependientes;
Después de haber cargado los datos a las tablas de la base de datos se harán consultas
Figura 19
Figura 20
Figura 21
Figura 22
Figura 23
Figura 24
Figura 25
Realizar las siguientes operaciones y evidenciar el resultado (No debe haber resultados en
NULL):
a. Crear consulta que liste nombre del departamento, dirección, ciudad de los
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
Figura 27
Consulta para listar nombres, apellidos, número telefónico y nombre del trabajo de los
c. Crear consulta que liste Nombres, Apellidos y los años que llevan trabajando los
Figura 28
Consulta para listar nombres, apellidos y los años que llevan trabajando los empleados
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
Figura 30
f. Crear consulta que liste las ubicaciones de la region XX (agregar la region según
Figura 31
g. Crear consulta que liste los trabajos del departamento XX (agregar departamento
Figura 32
a. Crear una vista que permita listar los países de la región América del Sur
Figura 33
b. Crear una vista que permita listar los empleados y sus dependientes.
Figura 34
c. Crear una vista que permita listar los empleados del departamento de Ventas.
Figura 35
d. Crear una vista que permita listar los empleados y sus trabajos.
Figura 36
Figura 37
Humanos
45
Figura 38
Figura 39
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á
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
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
seleccionada.
Figura 43
seleccionada.
Figura 44
c. Crear un procedimiento almacenado que obtenga los datos de los empleados del
Figura 45
Procedimiento almacenado que obtenga los datos de los empleados del país “US”
53
XX departamento.
Figura 46
Figura 47
Procedimiento que recupere dirección, ciudad, estado de una ubicación, dándole como
Figura 48
Figura 49
INSERT
Figura 50
INSERT
58
Figura 51
UPDATE
Figura 52
UPDATE
59
Figura 53
DELETE
60
5. Conclusiones
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
vistas, triggers y procedimientos almacenados como objetos de base de datos reutilizables y que
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
6. Bibliografía
https://www.geeksforgeeks.org/sql-trigger-student-database/
https://learn.microsoft.com/en-us/sql/t-sql/language-elements/transactions-transact-sql?view=sql-
server-ver16
https://learnsql.com/blog/sql-view/
https://www.studysmarter.co.uk/explanations/computer-science/databases/sql-conditional-
statements/
https://www.w3schools.com/SQL/sql_stored_procedures.asp