Está en la página 1de 16

Administradores de bases de datos - SQL

Franco Quintana Morgado

ADMINISTRACIÓN DE BASES DE DATOS

Instituto IACC

Ponga la fecha aquí


Desarrollo

La empresa para la cual usted trabaja le ha asignado el desarrollo de una aplicación para el

control de su proceso de nómina. Para ello, debe utilizar la teoría de bases de datos en conjunto

con SQL como gestor de bases de datos y realizar las siguientes actividades:

a) Definir la estructura lógica de la base de datos, indicando cuáles tablas serán necesarias.

Resp.

La base de datos de la empresa estará conformada por las siguientes tablas:

 Empleado, formada por los siguientes campos:

 ID_Empleado
 Nombre.
 Apellidos.
 Dirección.
 Teléfono.
 Departamento
 Sucursal, con los campos:

 ID_Sucursal
 Nom_Sucursal
 Puestos, con los campos:

 ID_Puesto
 Nom_Puesto
 Salario
 Turno, con los siguientes campos:

 ID_Turno
 Entrada
 Salida
 Colacion.
b) Crear las diferentes tablas que se requieren para este proceso.

Resp.

Sabemos que las tablas son las estructuras fundamentales para poder almacenar toda la

información en una base de datos, para esto, existen diversas maneras para crear tablas, podemos

hacerlo utilizando el modo gráfico ofrecido por los gestores de bases de datos o utilizando

código SQL, como en el caso presentado.

Como sabemos, en lo estudiado durante la semana, las tablas está formadas or filas y columnas,

donde las primeras representa cierta parte de los datos y las columnas son una especie de

componente que indica que datos serán incuídos, en el caso planteado, tenemos por ejemplo, la

columna “nombre” dentro de la tabla “Empleado” la cual indica que se incluirán los nombres de

lo empleados de la empresa.

Al especificar una tabla se debe indicar el tipo de dato que será introducido, con esto nos

referimos, a enteros, numeros reales, caracteres, expresión de tiempo, un string, etc. Por ejemplo,
en la tabla “Empleado” se tiene una columna llamada “dirección”, que, por estar compuesta por

texto y posiblemente números, se debe indicar el tipo de dato “varchar” que adminte texto y

otros signos además de una longitud de 15, lo que indica que será una línea xcon 15 caracteres.

La sintaxis que se utilizará es la siguiente:

CREATE TABLE “nombre_tabla” (“columna1” “tipo de datos para la columna 1” “tamaño”,

“columna2” “tipo de datos para la columna 2” “tamaño”, …)

Creación de la tabla “Empleado”, en la base de datos “Control6”

CREATE TABLE `Control6`.`Empleado` ( `id_empleado` INT(16) NOT NULL , `nombre`


VARCHAR(20) NOT NULL , `apellidos` VARCHAR(20) NOT NULL , `direccion`
VARCHAR(15) NOT NULL , `telefono` INT(12) NOT NULL , `departamento` INT(15)
NOT NULL , PRIMARY KEY (`id_empleado`)) ENGINE = InnoDB;

Creación de la tabla “Puestos”, en la base de datos

CREATE TABLE `control6`.`Puestos` ( `id_puestos` INT(16) NOT NULL , `nom_puesto`


Creación de la tabla NOT
VARCHAR(20) “Turno”, en la base
NULL de datosINT(10) NOT NULL , PRIMARY KEY
, `salario`
(`id_puestos`)) ENGINE = InnoDB;
CREATE TABLE `control6`.`Turno` ( `id_turno` INT(16) NOT NULL , `entrada` INT(10)
NOT NULL , `salida` INT(10) NOT NULL , `colacion` INT(10) NOT NULL , PRIMARY
KEY (`id_turno`)) ENGINE = InnoDB;

Creación de la tabla “Sucursal” en la base de datos:

CREATE TABLE `control6`.`Sucursal` ( `id_sucursal` INT(16) NOT NULL ,


`nom_sucursal` VARCHAR(20) NOT NULL , PRIMARY KEY (`id_sucursal`)) ENGINE
= InnoDB;

Con las siguientes capturas de pantalla del proceso:


Ilustración 1 Tabla Empleado

Ilustración 2 Tabla Puestos


Ilustración 3 Tabla Sucursal

Ilustración 4 Tabla Turno

c) Indexar dichas tablas de manera que pueda realizar consultas utilizando SQL, de forma rápida

y eficiente.
Resp.

Se crearán los índices para las siguientes tablas:

1. Empleado

2. Puestos

3. Sucursal

4. Turno

El índice sirve para poder buscar datos de manera rápida, sin necesidad de recorrer toda la tabla

buscando algo en específico.

CREATE INDEX Clave_Empleado ON empleado (id_empleado);

Creando el índice como se indica en la siguiente captura de pantalla:

CREATE INDEX Clave_Empleado ON puestos (id_puestos);

Creando el índice como se indica en la siguiente captura de pantalla:


CREATE INDEX Clave_Empleado ON sucursal (id_sucursal);

Creando el índice como se indica en la siguiente captura de pantalla:


CREATE INDEX Clave_Empleado ON turno (id_turno);

Creando el índice como se indica en la siguiente captura de pantalla:

d) Ingresar un mínimo de 10 registros en cada una de las tablas que decida crear. Recuerde

establecer las relaciones entre las mismas para evitar la duplicidad de los datos.

Resp.

Tabla empleado:

INSERT INTO `empleado`(`id_empleado`, `nombre`, `apellidos`, `direccion`, `telefono`,


`departamento`) VALUES (01,'Joaquin','Quintana Novoa','Calle Siempre
Viva',932165498,'Informática');

INSERT INTO `empleado`(`id_empleado`, `nombre`, `apellidos`, `direccion`, `telefono`,


`departamento`) VALUES (02,'Carlos','Pezoa Gaete','Calle
Springfield',962518479,'Recursos Humanos');

INSERT INTO `empleado`(`id_empleado`, `nombre`, `apellidos`, `direccion`, `telefono`,


`departamento`) VALUES (03,'Stephen','Hawking','Calle Camino al
cielo',955555555,'Inventario');
INSERT INTO `empleado`(`id_empleado`, `nombre`, `apellidos`, `direccion`, `telefono`,
`departamento`) VALUES (04,'Alberto','Einstein Pierrot','Calle Camino al
cielo',966666666,'Informática');

INSERT INTO `empleado`(`id_empleado`, `nombre`, `apellidos`, `direccion`, `telefono`,


`departamento`) VALUES (05,'Isaac','Newton Castillo','Calle Siempre
Muerta',977777777,'Mecánica');

INSERT INTO `empleado`(`id_empleado`, `nombre`, `apellidos`, `direccion`, `telefono`,


`departamento`) VALUES (06,'Valentina','Roth Subiabre','Calle Siempre
Lista',988888888,'Recursos Humanos');

INSERT INTO `empleado`(`id_empleado`, `nombre`, `apellidos`, `direccion`, `telefono`,


`departamento`) VALUES (07,'Jack','El Destripador','Calle Los
Girasoles',966655666,'Recursos Humanos');

INSERT INTO `empleado`(`id_empleado`, `nombre`, `apellidos`, `direccion`, `telefono`,


`departamento`) VALUES (08,'Camilo','Henríquez','Calle Puro
Chile',914253678,'Estadística');

INSERT INTO `empleado`(`id_empleado`, `nombre`, `apellidos`, `direccion`, `telefono`,


`departamento`) VALUES (09,'Rodrigo','Rojas de Negri','Calle Los
Litres',789475613,'Estadística');

INSERT INTO `empleado`(`id_empleado`, `nombre`, `apellidos`, `direccion`, `telefono`,


`departamento`) VALUES (10,'Ernestina','Huenchuleo Huenchullan','Calle Las
Araucarias',777892166,'Gerencia');
Tabla puestos:

INSERT INTO `puestos`(`id_puestos`, `nom_puesto`, `salario`) VALUES


(1,'Gerencia',10000000);

INSERT INTO `puestos`(`id_puestos`, `nom_puesto`, `salario`) VALUES


(2,'Informática',1500000);

INSERT INTO `puestos`(`id_puestos`, `nom_puesto`, `salario`) VALUES (3,'Recursos


Humanos',2500000);

INSERT INTO `puestos`(`id_puestos`, `nom_puesto`, `salario`) VALUES


(4,'Mecánica',800000);

INSERT INTO `puestos`(`id_puestos`, `nom_puesto`, `salario`) VALUES


(5,'Estadística',1800000);

INSERT INTO `puestos`(`id_puestos`, `nom_puesto`, `salario`) VALUES


(6,'Mantención',950000);

INSERT INTO `puestos`(`id_puestos`, `nom_puesto`, `salario`) VALUES


(7,'Comunicaciones',1000000);
INSERT INTO `puestos`(`id_puestos`, `nom_puesto`, `salario`) VALUES
(8,'Dirección',1800000);

INSERT INTO `puestos`(`id_puestos`, `nom_puesto`, `salario`) VALUES


(9,'Secretaría',800000);

INSERT INTO `puestos`(`id_puestos`, `nom_puesto`, `salario`) VALUES (10,'Secretaría


Dirección',1800000);

Tabla sucursal:

INSERT INTO `sucursal`(`id_sucursal`, `nom_sucursal`) VALUES (1,'Temuco');

INSERT INTO `sucursal`(`id_sucursal`, `nom_sucursal`) VALUES (2,'Temuco 2');

INSERT INTO `sucursal`(`id_sucursal`, `nom_sucursal`) VALUES (3,'Angol');

INSERT INTO `sucursal`(`id_sucursal`, `nom_sucursal`) VALUES (4,'Angol_Deuco');

INSERT INTO `sucursal`(`id_sucursal`, `nom_sucursal`) VALUES (5,'Los Angeles');


INSERT INTO `sucursal`(`id_sucursal`, `nom_sucursal`) VALUES (6,'Collipulli');

INSERT INTO `sucursal`(`id_sucursal`, `nom_sucursal`) VALUES (7,'Cañete');

INSERT INTO `sucursal`(`id_sucursal`, `nom_sucursal`) VALUES (8,'Los Sauces');

INSERT INTO `sucursal`(`id_sucursal`, `nom_sucursal`) VALUES (9,'Los Sauces 2');

INSERT INTO `sucursal`(`id_sucursal`, `nom_sucursal`) VALUES (10,'Tijerales');

Tabla turno:

INSERT INTO `turno`(`id_turno`, `entrada`, `salida`, `colacion`) VALUES


(1,800,2000,1300);

INSERT INTO `turno`(`id_turno`, `entrada`, `salida`, `colacion`) VALUES


(2,800,1400,1300);

INSERT INTO `turno`(`id_turno`, `entrada`, `salida`, `colacion`) VALUES


(3,1400,2000,1900);
INSERT INTO `turno`(`id_turno`, `entrada`, `salida`, `colacion`) VALUES
(4,2200,800,0000);

e) Ejecutar una consulta donde se muestren todos los empleados existentes con sus beneficios

contractuales asociados.

Resp.

SELECT * FROM `empleado`


INNER JOIN puestos
ON puestos.nom_puesto = empleado.nombre

Obteniéndose el siguiente resultado:


Bibliografía

Material de estudio semana 6, IACC.