Está en la página 1de 7

Administradores de Base de Datos-SQL

Eduardo Martínez V.

Administración de Base de Datos

Instituto IACC

18-08-2020
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
Para dar solución de manera sencilla y efectiva al problema planteado, crearemos las
siguientes tablas:
- Colaboradores: Donde se almacena la información personal del empleado
- Areas: Departamento donde se desempeña el colaborador
- Afp: Institución previsional donde cotiza el colaborador
- Salud: Institución de salud donde cotiza el colaborador

A nivel de modelo de datos gráfico, apreciaríamos lo siguiente

b) Crear las diferentes tablas que se requieren para este proceso


Cabe señalar que los campos de llave primaria son auto incrementales, por lo tanto lo
definiremos como IDENTITY
Tabla Areas
CREATE TABLE [Areas](
[id_area] [int] IDENTITY(1,1) NOT NULL,
[Descripcion] [nvarchar](50) NULL,
CONSTRAINT [PK_Areas] PRIMARY KEY CLUSTERED
([id_area] ASC)
)GO
Tabla Afp
CREATE TABLE [Afp](
[id_afp] [int] IDENTITY(1,1) NOT NULL,
[Descripcion] [nvarchar](50) NULL,
CONSTRAINT [PK_Afp] PRIMARY KEY CLUSTERED
([id_afp] ASC)
)
GO

Tabla Salud
CREATE TABLE [Salud](
[id_salud] [int] IDENTITY(1,1) NOT NULL,
[descripcion] [nvarchar](50) NULL,
CONSTRAINT [PK_Salud] PRIMARY KEY CLUSTERED
( [id_salud] ASC)
)
GO

Tabla Colaboradores
CREATE TABLE [Colaboradores](
[id_colaborador] [int] IDENTITY(1,1) NOT NULL,
[rut] [nvarchar](50) NOT NULL,
[Nombre] [text] NOT NULL,
[Apellido] [text] NOT NULL,
[id_area] [int] NULL,
[id_afp] [int] NULL,
[id_salud] [int] NULL,
[Sueldo_Base] [int] NULL,
[descto_afp] [int] NULL,
[descto_salud] [int] NULL,
CONSTRAINT [PK_Colaboradores] PRIMARY KEY CLUSTERED
([id_colaborador] ASC)
GO

ALTER TABLE [dbo].[Colaboradores] WITH CHECK ADD CONSTRAINT


[FK_Colaboradores_Afp] FOREIGN KEY([id_afp])
REFERENCES [dbo].[Afp] ([id_afp])
GO
ALTER TABLE [dbo].[Colaboradores] CHECK CONSTRAINT
[FK_Colaboradores_Afp]
GO
ALTER TABLE [dbo].[Colaboradores] WITH CHECK ADD CONSTRAINT
[FK_Colaboradores_Areas] FOREIGN KEY([id_area])
REFERENCES [dbo].[Areas] ([id_area])
GO
ALTER TABLE [dbo].[Colaboradores] CHECK CONSTRAINT
[FK_Colaboradores_Areas]
GO
ALTER TABLE [dbo].[Colaboradores] WITH CHECK ADD CONSTRAINT
[FK_Colaboradores_Salud] FOREIGN KEY([id_salud])
REFERENCES [dbo].[Salud] ([id_salud])
GO
ALTER TABLE [dbo].[Colaboradores] CHECK CONSTRAINT
[FK_Colaboradores_Salud]
GO
c) Indexar dichas tablas de manera que pueda realizar consultas utilizando SQL, de forma
rápida y eficiente
Tabla Colaboradores
CREATE INDEX idx_colaborador ON COLABORADORES (Id_colaborador);

Tabla Areas
CREATE INDEX idx_area ON AREAS (Id_area);

Tabla Afp
CREATE INDEX idx_Afp ON AFP (Id_afp);

Tabla Salud
CREATE INDEX idx_salud ON SALUD (Id_salud);

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
Nota: Al haber un campo identity y que es auto incremental en el ID, no se inserta como
value
AFP
INSERT INTO AFP VALUES ('PROVIDA');
INSERT INTO AFP VALUES ('MODELO');
INSERT INTO AFP VALUES ('CUPRUM');
INSERT INTO AFP VALUES ('HABITAT');
INSERT INTO AFP VALUES ('PLANVITAL');
INSERT INTO AFP VALUES ('CAPITAL');
INSERT INTO AFP VALUES ('UNO');
Al hacer un select a la tabla, nos despliega lo siguiente5
AREA
INSERT INTO Areas VALUES ('TI');
INSERT INTO Areas VALUES ('FINANZAS');
INSERT INTO Areas VALUES ('SOPORTE');
INSERT INTO Areas VALUES ('VENTAS');
INSERT INTO Areas VALUES ('DESPACHO');
INSERT INTO Areas VALUES ('COMPRAS');

Al hacer select a la tabla nos despliega lo siguiente:

SALUD
INSERT INTO SALUD VALUES ('FONASA');
INSERT INTO SALUD VALUES ('COLMENA');
INSERT INTO SALUD VALUES ('BANMEDICA');
INSERT INTO SALUD VALUES ('CRUZ BLANCA');
INSERT INTO SALUD VALUES ('VIDA TRES');
INSERT INTO SALUD VALUES ('CONSALUD');
INSERT INTO SALUD VALUES ('MAS VIDA');
INSERT INTO SALUD VALUES ('CRUZ DEL NORTE');
Al hacer select a la tabla nos despliega lo siguiente:
COLABORADORES
INSERT INTO COLABORADORES VALUES ('13911643-
7','EDUARDO','MARTINEZ',1,1,2,2000000,140000,200000);

INSERT INTO COLABORADORES VALUES ('21890976-


0','FERNANDO','MARTINEZ',3,3,2,1500000,105000,150000);

INSERT INTO COLABORADORES VALUES ('13836364-


3','ANDREA','AGURTO',6,5,4,1500000,105000,150000);

INSERT INTO COLABORADORES VALUES ('4287327-


6','MARGARITA','VERDUGO',4,2,1,800000,56000,80000);

INSERT INTO COLABORADORES VALUES ('12564852-


6','MIGUEL','VERDUGO',2,4,3,1800000,126000,180000);

INSERT INTO COLABORADORES VALUES ('22365987-


0','JORGE','MARTINEZ',5,6,1,1000000,70000,100000);

INSERT INTO COLABORADORES VALUES ('12324658-


9','ROLANDO','VILCHES',4,7,1,1000000,70000,100000);

INSERT INTO COLABORADORES VALUES ('22123455-


8','IVAN','ZAMORANO',2,5,8,1600000,112000,160000);

INSERT INTO COLABORADORES VALUES ('10235654-


8','MARCELO','SALAS',1,4,3,1800000,126000,180000);
e) Ejecutar una consulta donde se muestren todos los empleados existentes con sus
beneficios contractuales asociados

select c.rut, c.nombre, c.apellido, a.descripcion, af.descripcion,


s.descripcion,c.sueldo_base, c.descto_afp,c.descto_salud, (c.Sueldo_Base - c.descto_afp -
c.descto_salud) as Liquido
from Colaboradores c, Areas a, Afp af, Salud s
where c.id_area = a.id_area
and c.id_afp = af.id_afp
and c.id_salud = s.id_salud

También podría gustarte