52
Proyecto Final de Base de Datos Base de Datos Sql Server 2014 Alumno/a:------------------------------------ Prof: Lic. Francisca Castillo

Entregable proyecto de_base_de_datos_unigran_1

Embed Size (px)

Citation preview

1

2014

Proyecto Final de Base de Datos Base de Datos Sql Server

2014

Alumno/a:------------------------------------

Prof: Lic. Francisca Castillo

Proyecto Final Base de Datos

2 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

Indice_________________________________________________________________________________________________

1.-Objeto del Proyecto. ......................................................................................................................................... 4

2.-Creación de la Base de Datos. ........................................................................................................................... 6

3.-Creación de tablas ........................................................................................................................................... 8

3.1-Diseño de relación de las tablas ................................................................................................................. 10

3.2-Tipos de Datos ......................................................................................................................................... 11

4.-Clave principal (Primary Key) .......................................................................................................................... 14

5.-Clave Secundaria (Foreign Key)....................................................................................................................... 16

6.-Diagrama de base de datos ............................................................................................................................. 18

7.-Restricciones (Check) .................................................................................................................................... 20

8.-Reglas de Negocio ......................................................................................................................................... 22

9.-Introducir Datos (INSERT INTO) ....................................................................................................................... 25

10.-Vistas ......................................................................................................................................................... 30

11.-Funciones ................................................................................................................................................... 32

12.-Procedimientos Almacenados ....................................................................................................................... 34

13.-Pruebas Realizadas ...................................................................................................................................... 36

13.1.-Reglas de Negocio ................................................................................................................................. 37

13.2.-Auditorias de Negocio ............................................................................................................................ 38

13.3.-Vistas ................................................................................................................................................... 39

13.4.-Funciones ............................................................................................................................................. 39

13.5.-Procedimientos Almacenados ................................................................................................................. 42

14.-Script .......................................................................................................................................................... 43

Proyecto Final Base de Datos

3 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

14.1.-Base de datos ........................................................................................................................................ 44

14.2.-Tablas .................................................................................................................................................. 44

14.3.-Clave Principal ...................................................................................................................................... 45

14.4.-Clave Secundaria ................................................................................................................................... 45

14.5.-Restricciones CHECK ............................................................................................................................. 46

14.6.-Reglas de Negocio ................................................................................................................................. 46

14.7.-Auditorias de Negocio ............................................................................................................................ 47

14.8.-Introducir datos (INSERT INTO) ............................................................................................................... 48

14.9.-Vistas ................................................................................................................................................... 51

14.10.-Funciones ........................................................................................................................................... 51

14.11.-Procedimientos Almacenados ............................................................................................................... 51

14.12.-Pruebas Realizadas .............................................................................................................................. 52

Proyecto Final Base de Datos

4 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

1.-Objeto del Proyecto.

Proyecto Final Base de Datos

5 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

1.-Objeto del Proyecto.

El objeto del proyecto es el diseño de una base de datos para una empresa constructora, la base de datos debe contener la

información de las obras y los empleados dedicados a ellas, así como la maquinaria, herramientas y medio auxiliares propuestos

a la obra.

La base de datos, tiene que contener la información suficiente para identificar cualquier empleado o maquinaria en la obra

especificada, al igual que el movimiento de personal o herramientas en las diferentes obras. Las tablas de la base de datos tiene

la función de mostrar los datos requerido por el cliente con las relaciones entre tablas, para que la información sea fluida y no se

demore en mostrarla en pantalla. Las tablas para la base de datos propuesta consta de:

-Obras; su función guardar la información de la situación de las obras, presupuesto, el personal y maquinaria dedicada a ella.

-Utensilios de Obra; El material o maquinaria que está registrado en obra.

-Empleados; los datos de los empleados, contratados o subcontratados y la información de cada uno y su rango en la empresa.

-Categorías; es el nivel del empleado en la empresa.

-Utensilios; los materiales y la maquinaría en almacén

-Materiales; los materiales empleados en las obras.

-Almacén; materiales o maquinaría ubicada dentro del almacén.

-Ubicación; situación de la obra designada.

- Utensilios Principales; los materiales y la maquinaría, tabla para controlar el código.

Proyecto Final Base de Datos

6 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

2.-Creación de la Base de Datos.

Proyecto Final Base de Datos

7 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

2.-Creación de la base de datos

En primer lugar debemos crear la base de datos, y el directorio raíz donde se crea la base de datos. Normalmente su asignación

será en el disco duro:” C:\ “, indicaremos las propiedades de la base de datos referente al almacenamiento de los archivos y

registro de transacciones.

También se puede crear la base de datos a través del entorno de gestión Sql. Pinchamos con el botón derecho del ratón donde

indica “Bases de Datos”, y damos crear “Nueva Base de Datos”. Nos aparecerá una ventana donde ingresaremos el nombre y

las propiedades de la base de datos.

Proyecto Final Base de Datos

8 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

3.-Creación de tablas

Proyecto Final Base de Datos

9 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

3.-Creación de tablas

Los campos que deben contener las tablas deben incluir la clave primaria y secundaria para las relaciones entre ellas.

En la tabla de dbo.Obras, los campos que contiene son los siguientes:

Cod_Obr : Código de la obra.(PK)

Nom_Obr: Nombre de la obra.

Situ_Obr: Situación de la obra.

Pres_Obr: Presupuesto de la obra.

Jef_Obr: Jefe de obra. (FK)

En la tabla de dbo.UtensiliosObras, los campos que contiene son los siguientes:

Testigo_1: Restricción check si es MAT (Material) o MAQ (Maquinaría).

Cod_utensilio: Código material o maquinaria. .(FK)

Cod_Obr : Código de la obra.(FK)

Cantidad

FechaEntrega

En la tabla de dbo.Empleados, los campos que contiene son los siguientes:

Dni_Emp : DNI del empleado.(PK)

Nom_Emp: Nombre del empleado.

Ape_Emp: Apellidos del empleado.

Cat_Emp : Nivel de categoría del empleado.(FK)

Cod_Obr : Código de la obra.(FK)

Direc_Emp: Dirección del empleado.

FechaAlta

FechaNacimiento

Vehículo: De empresa.

Teléfono

CuentCorr: Cuenta Corriente Empleado.

NSS: Número Seguridad Social.

En la tabla de dbo.Categorias, los campos que contiene son los siguientes:

Cod_Cat : Código categoría del empleado.(PK)

Nom_Cat: Nombre de la categoría del empleado.

Salario: Salario de la Categoría.

En la tabla de dbo.Utensilios, los campos que contiene son los siguientes:

Cod_Ut : Código utensilio.(PK)

Cod_Alm: Código Almacén. (PK)

Cod_Ubi: Código ubicación. (PK)

Testigo_1: Restricción check si es MAT (Material) o MAQ (Maquinaría).

Nom_Ut: Nombre utensilio.

Stock_Ut: Stock del utensilio.

Proyecto Final Base de Datos

10 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

En la tabla de dbo.Almacen, los campos que contiene son los siguientes:

Cod_Alm : Código Almacén.(PK)

Direccion: Ubicación de Almacén.

Cod_EncAlm: Código encargado almacén. (FK)

En la tabla de dbo.Ubicacion, los campos que contiene son los siguientes:

Cod_Ubi: Código ubicación. (PK)

Dirección: Ubicación de almacén.

En la tabla de dbo.UtensiliosPrincipales, los campos que contiene son los siguientes:

Cod_Ut: Código Utensilio. (PK)

Nom_Ut: Nombre Utensilio.

3.1-Diseño de relación de las tablas

Proyecto Final Base de Datos

11 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

3.2-Tipos de Datos

Cuando definimos una tabla, variable o constante debemos asignar un tipo de dato que indica los posibles valores. El tipo de

datos define el formato de almacenamiento, espacio que en disco-memoria que va a ocupar un campo o variable, restricciones y

rango de valores válidos. Transact SQL proporciona una variedad predefinida de tipos de datos.

dbo.Obras

Cod_Obr CHAR(3) (PK)

Nom_Obr VARCHAR(25)

Situ_Obr VARCHAR(30)

Pres_Obr MONEY

Jef_Obr CHAR(9) (FK)

dbo.UtensiliosObras

Testigo_1 CHAR(3)

Cod_utensilio CHAR(3) (FK)

Cod_Obr CHAR(3) (FK)

Cantidad BIGINT

FechaEntrega SMALLDATETIME

dbo.Empleados

Dni_Emp CHAR(9) (PK)

Nom_Emp VARCHAR(15)

Ape_Emp VARCHAR(30)

Cat_Emp CHAR(3) (FK)

Cod_Obr CHAR(3) (FK)

Direc_Emp VARCHAR(50)

FechaAlta SMALLDATETIME

FechaNacimiento SMALLDATETIME

Vehículo BIT

Teléfono CHAR(9)

CuentCorr CHAR(20)

Proyecto Final Base de Datos

12 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

NSS CHAR(12)

BajaTemporal BIT

dbo.Categorias

Cod_Cat CHAR(3) (PK)

Nom_Cat VARCHAR(20)

Salario SMALLMONEY

dbo.Utensilios

Cod_Ut CHAR(3) (PK)

Cod_Alm CHAR(3) (PK)

Cod_Ubi CHAR(3) (PK)

Testigo_1 CHAR(3)

Nom_Ut VARCHAR(20)

Stock_Ut BIGINT

Proyecto Final Base de Datos

13 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

dbo.Almacen

Cod_Alm CHAR(3) (PK)

Direccion VARCHAR(50)

Cod_EncAlm CHAR(9) (FK)

dbo.Ubicacion

Cod_Ubi CHAR(3) (PK)

Dirección VARCHAR(50)

dbo.UtensiliosPrincipales

Cod_Ut CHAR(3) (PK)

Nom_Ut VARCHAR(20)

Proyecto Final Base de Datos

14 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

4.-Clave principal (Primary Key)

Proyecto Final Base de Datos

15 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

4.-Clave principal (Primary Key)

Una tabla debe tener siempre una clave primaria con la cual indizamos la tabla. Un PRIMARY KEY, puede tener un campo o

varios campos que la componen. Asignaremos las claves primarias en la nueva base de datos, identificando el campo como

único y que nos servirá para la vinculación de las tablas.

Podemos mostrar las claves primarias también al crear las tablas, hacemos clic derecho sobre el campo a elegir y

seleccionamos la opción establecer clave principal.

Proyecto Final Base de Datos

16 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

5.-Clave Secundaria (Foreign Key)

Proyecto Final Base de Datos

17 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

5.-Clave Secundaria (Foreign Key)

Con la restricción FOREIGN KEY, se define un campo o varios, cuyos valores coinciden con la clave primaria de la misma tabla

u otra. La integridad referencial asegura que se mantenga las referencias entre claves primarias y externas.

Proyecto Final Base de Datos

18 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

6.-Diagrama de base de datos

Proyecto Final Base de Datos

19 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

6.-Diagrama de base de datos

Proyecto Final Base de Datos

20 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

7.-Restricciones (Check)

Proyecto Final Base de Datos

21 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

7.-Restricciones (Check)

Las restricciones CHECK aseguran la integridad de dominio al limitar los valores que son aceptados para una columna.

Aplicaremos las restricciones para sí el utensilio es material (MAT) o maquinaría (MAQ), así cuando ejecutemos la consulta nos

indicara a que utensilio pertenece.

También incluimos 2 restricciones en la tabla de empleados en los campos Cuenta Corriente y Número Seguridad Social, para

que solo podamos ingresar datos numéricos y la longitud de esos datos exclusivamente.

Proyecto Final Base de Datos

22 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

8.-Reglas de Negocio

Proyecto Final Base de Datos

23 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

8.-Reglas de Negocio

La base de datos contiene Reglas de Negocio, que conviene recordar para el perfecto funcionamiento de la información de los

datos a mostrar. De esta manera los datos recuperados deben ser claros y precisos para el usuario de la base de datos, así

podrá recoger información suficiente sin tener errores de apreciación en los datos devueltos.

1. No puede contener 2 empleados el mismo número de la seguridad social.

2. Restar el stock del almacén.

Proyecto Final Base de Datos

24 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

3. Restar la cantidad de los utensilios de la obra.

Aplicaremos una Auditoria de Negocio, para la inserción, actualización y eliminación de datos de la base de datos, para

proteger los datos cambiados o insertados e informar al usuario de la operación que hemos realizado.

1. Empleados de baja temporal, los campos que deben incluir la tabla de empleados de baja temporal es la siguiente:

Dni empleado.

Nombre empleado.

Apellidos empleados.

Categoría empleado.

Fecha de baja

Fecha de alta.

Obra del incidente.

Proyecto Final Base de Datos

25 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

9.-Introducir Datos (INSERT INTO)

Proyecto Final Base de Datos

26 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

9.-Introducir Datos (INSERT INTO)

En primer lugar introduciremos los datos en las tablas las que no tiene relación y las que tiene solamente clave primaria.

Proyecto Final Base de Datos

27 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

Proyecto Final Base de Datos

28 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

Proyecto Final Base de Datos

29 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

Proyecto Final Base de Datos

30 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

10.-Vistas

Proyecto Final Base de Datos

31 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

10.-Vistas

La creación de vistas refleja el contenido de una tabla o más tablas, desde la que se puede acceder a los datos como si fuera

una tabla. Contener vistas tiene dos principales razones:

Seguridad, nos pueden interesar que los usuarios tengan acceso a una parte de la información que hay en una tabla,

pero no a toda la tabla.

Comodidad, como hemos dicho el modelo relacional no es el más cómodo para visualizar los datos, lo que nos puede

llevar a tener que escribir complejas sentencias SQL, tener una vista nos simplifica esta tarea.

Las vistas no tienen una copia física de los datos, son consultas a los datos que hay en las tablas, por lo que si actualizamos los

datos de una vista, estamos actualizando realmente la tabla, y si actualizamos la tabla estos cambios serán visibles desde la

vista.

Asignaremos dos vistas, la primera vista nos mostrará la información del empleado escogido en la consulta, a la obra que se le

ha ordenado y su respectivo jefe de obra. La segunda vista es para averiguar el sueldo del empleado y lal categoría a la que

pertenece.

1. Vista para la información del empleado y a que obra está asignado con su respectivo jefe de obra.

2. Vista para averiguar los sueldos de los empleados con su respectiva categoría.

Proyecto Final Base de Datos

32 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

11.-Funciones

Proyecto Final Base de Datos

33 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

11.-Funciones

Declaramos una función de tabla para averiguar los empleados asignados a una determinada obra y nos devolverá la

información del empleado respecto a su nombre y apellidos. La otra función será escalar para consultar el número de utensilios

que contiene la empresa dentro del almacén y fuera.

1. Función de valores de tabla para averiguar los empleados asignados a una obra.

2. Función escalar para que nos devuelva todos los utensilios que contiene la empresa, dentro del almacén y fuera,

respecto a las obras.

Proyecto Final Base de Datos

34 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

12.-Procedimientos Almacenados

Proyecto Final Base de Datos

35 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

12.-Procedimientos Almacenados

Los procedimientos almacenados es una secuencia ordenada de instrucciones T-SQL, que pueden recibir y proporcionar

parámetros por el usuario, y se pueden guardar en el servidor con un nombre, para posteriormente ser invocados y ejecutados.

Una de las principales ventajas de este tipo de objetos, es que al residir en la propia base de datos son compatibles por todos

los usuarios, pudiendo de esta manera beneficiarse de los distintos cachés del servidor. Al mismo tiempo al ser código externo

a la aplicación puede ser alterado sin que exista siempre la necesidad de modificar el código de la misma.

El procedimiento que vamos a mostrar será si el utensilio se encuentra en la obra especificada o fuera de ella, en este caso

saldrá un mensaje que nos advirtiendo si se encuentra, y la cantidad total del utensilio en cuestión.

1. Examina si el utensilio está en la obra y la cantidad total.

Proyecto Final Base de Datos

36 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

13.-Pruebas Realizadas

Proyecto Final Base de Datos

37 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

13.-Pruebas Realizadas

13.1.-Reglas de Negocio

Proyecto Final Base de Datos

38 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

13.2.-Auditorias de Negocio

Proyecto Final Base de Datos

39 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

13.3.-Vistas

13.4.-Funciones

Proyecto Final Base de Datos

40 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

Proyecto Final Base de Datos

41 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

Proyecto Final Base de Datos

42 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

13.5.-Procedimientos Almacenados

Proyecto Final Base de Datos

43 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

14.-Script

Proyecto Final Base de Datos

44 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

14.-Script

14.1.-Base de datos CREATE DATABASE ProyecFinal

ON

PRIMARY (NAME = CONST_01,

FILENAME = 'C:\ProyecFinal.mdf',

SIZE = 3MB,

FILEGROWTH = 1MB)

LOG ON (NAME = CONST_01L,

FILENAME = 'C:\ProyecFinaL.ldf',

SIZE = 1MB,

FILEGROWTH = 10%)

14.2.-Tablas

CREATE TABLE Obras

(Cod_Obr CHAR(3)NOT NULL,

Nom_Obr VARCHAR(25)NOT NULL,

Situ_Obr VARCHAR(30)DEFAULT 'ESPAÑA',

Pres_Obr MONEY NOT NULL,

Jef_Obr CHAR(9))

CREATE TABLE UtensiliosObras

(Testigo_1 CHAR(3)NOT NULL,

Cod_utensilio CHAR(3)NOT NULL,

Cod_Obr CHAR(3)NOT NULL,

Cantidad BIGINT NOT NULL,

FechaEntrega SMALLDATETIME DEFAULT '01/01/2022')

CREATE TABLE Empleados

(Dni_Emp CHAR(9)NOT NULL,

Nom_Emp VARCHAR(15)NOT NULL,

Ape_Emp VARCHAR(30)NOT NULL,

Cat_Emp CHAR(3)NOT NULL,

Cod_Obr CHAR(3)NOT NULL,

Direc_Emp VARCHAR(50)NOT NULL,

FechaAlta SMALLDATETIME DEFAULT '01/01/2022',

FechaNacimiento SMALLDATETIME DEFAULT '01/01/2022',

Vehículo BIT DEFAULT 'True',

Teléfono CHAR(9)NOT NULL,

CuentCorr CHAR(20)NOT NULL,

NSS CHAR(12)NOT NULL,

BajaTemporal BIT DEFAULT 0)

CREATE TABLE Categorias

(Cod_Cat CHAR(3)NOT NULL,

Nom_Cat VARCHAR(20)NOT NULL,

Salario SMALLMONEY DEFAULT 100)

CREATE TABLE Utensilios

(Cod_Ut CHAR(3)NOT NULL,

Cod_Alm CHAR(3)NOT NULL,

Cod_Ubi CHAR(3)NOT NULL,

Testigo_1 CHAR(3)NOT NULL,

Nom_Ut VARCHAR(20)NOT NULL,

Stock_Ut BIGINT DEFAULT 0)

Proyecto Final Base de Datos

45 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

CREATE TABLE Almacen

(Cod_Alm CHAR(3)NOT NULL,

Direccion VARCHAR(50)NOT NULL,

Cod_EncAlm CHAR(9)NOT NULL)

CREATE TABLE Ubicacion

(Cod_Ubi CHAR(3)NOT NULL,

Dirección VARCHAR(50)DEFAULT 'ESPAÑA')

CREATE TABLE UtensiliosPrincipales

(Cod_Ut CHAR(3)NOT NULL,

Nom_Ut VARCHAR(20)NOT NULL)

14.3.-Clave Principal

ALTER TABLE Obras

ADD CONSTRAINT PK_Obras PRIMARY KEY(Cod_Obr)

ALTER TABLE Empleados

ADD CONSTRAINT PK_Empleados PRIMARY KEY(Dni_Emp)

ALTER TABLE Categorias

ADD CONSTRAINT PK_Categorias PRIMARY KEY(Cod_Cat)

ALTER TABLE Utensilios

ADD CONSTRAINT PK_Ut_alm_Ubi PRIMARY KEY(Cod_Ut,Cod_Alm,Cod_Ubi)

ALTER TABLE Almacen

ADD CONSTRAINT PK_Almacen PRIMARY KEY(Cod_Alm)

ALTER TABLE Ubicacion

ADD CONSTRAINT PK_Ubicacion PRIMARY KEY(Cod_Ubi)

ALTER TABLE UtensiliosPrincipales

ADD CONSTRAINT PK_UtPR PRIMARY KEY(Cod_Ut)

14.4.-Clave Secundaria

ALTER TABLE Almacen

ADD CONSTRAINT FK_Alm FOREIGN KEY(Cod_EncAlm)

REFERENCES Empleados(Dni_Emp)

ON UPDATE CASCADE ON DELETE NO ACTION

ALTER TABLE Obras

ADD CONSTRAINT FK_Obr FOREIGN KEY(Jef_Obr)

REFERENCES Empleados(Dni_Emp)

ON UPDATE CASCADE ON DELETE NO ACTION

ALTER TABLE Empleados

ADD CONSTRAINT FK_CatEmp FOREIGN KEY(Cat_Emp)

REFERENCES Categorias(Cod_Cat)

ALTER TABLE Empleados

ADD CONSTRAINT FK_ObrEmp FOREIGN KEY(Cod_Obr)

REFERENCES Obras(Cod_Obr)

ALTER TABLE UtensiliosObras

Proyecto Final Base de Datos

46 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

ADD CONSTRAINT FK_CodUtensilios FOREIGN KEY(Cod_utensilio)

REFERENCES UtensiliosPrincipales(Cod_Ut)

ON UPDATE CASCADE ON DELETE NO ACTION

ALTER TABLE UtensiliosObras

ADD CONSTRAINT FK_UtObr FOREIGN KEY(Cod_Obr)

REFERENCES Obras(Cod_Obr)

ON UPDATE CASCADE ON DELETE NO ACTION

ALTER TABLE Utensilios

ADD CONSTRAINT FK_UtAlm FOREIGN KEY(Cod_Alm)

REFERENCES Almacen(Cod_Alm)

ON UPDATE CASCADE ON DELETE NO ACTION

ALTER TABLE Utensilios

ADD CONSTRAINT FK_UtUbi FOREIGN KEY(Cod_Ubi)

REFERENCES Ubicacion(Cod_Ubi)

ON UPDATE CASCADE ON DELETE NO ACTION

ALTER TABLE Utensilios

ADD CONSTRAINT FK_CodUt FOREIGN KEY(Cod_Ut)

REFERENCES UtensiliosPrincipales(Cod_Ut)

ON UPDATE CASCADE ON DELETE NO ACTION

14.5.-Restricciones CHECK ALTER TABLE UtensiliosObras

ADD CONSTRAINT MatMaq CHECK (Testigo_1 IN('MAT','MAQ'))

ALTER TABLE Empleados

ADD CONSTRAINT CuentCorr

CHECK(CuentCorr LIKE '[0-9],[0-9],[0-9],[0-9],[0-9],[0-9],

[0-9],[0-9],[0-9],[0-9],[0-9],[0-9],[0-9],[0-9],[0-9],[0-9],[0-9],[0-9],[0-9],[0-9]')

ALTER TABLE Empleados

ADD CONSTRAINT NSS

CHECK (NSS LIKE '[0-9],[0-9],[0-9],[0-9],[0-9],[0-9],[0-9],[0-9],[0-9],[0-9],[0-9],[0-

9]')

14.6.-Reglas de Negocio

CREATE TRIGGER TrNSS

ON Empleados

AFTER INSERT

AS

DECLARE @NSS CHAR(12),@VarEmp CHAR(9)

SELECT @NSS = NSS, @VarEmp = Dni_Emp

FROM inserted

IF EXISTS(SELECT NSS,Dni_Emp FROM Empleados WHERE

@NSS = NSS AND @VarEmp <> Dni_Emp)

BEGIN

RAISERROR('NO PUEDE EXISTIR 1 NUMERO DE LA SEGURIDAD SOCIAL

CON DISTINTOS EMPLEADOS',10,1)

ROLLBACK TRAN

END

Proyecto Final Base de Datos

47 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

CREATE TRIGGER TrggStock

ON Utensilios

--Se ejecuta cuando actualizamos o insertamos

FOR UPDATE,INSERT

AS

--Declaramos las variables

DECLARE

@Stock bigint,

@NewStock bigint

--Inicializamos las variables

SELECT @NewStock = Stock_Ut FROM inserted

SELECT @Stock = STOCK_UT FROM deleted

--Comenzamos con el código

BEGIN

UPDATE Utensilios

SET Stock_Ut = @Stock + @NewStock from Utensilios

inner join inserted on UTENSILIOS.Cod_Ut = INSERTED.Cod_Ut

END

CREATE TRIGGER TrggCantidad

ON UtensiliosObras

--Se ejecuta cuando actualizamos o insertamos

FOR UPDATE,INSERT

AS

--Declaramos las variables

DECLARE

@Cantidad bigint,

@NewCantidad bigint

--Inicializamos las variables

SELECT @NewCantidad = Cantidad FROM inserted

SELECT @Cantidad = Cantidad FROM deleted

--Comenzamos con el código

BEGIN

UPDATE UtensiliosObras

SET Cantidad = @Cantidad + @NewCantidad from UtensiliosObras

inner join inserted on UtensiliosObras.Cod_utensilio = INSERTED.Cod_utensilio

END

14.7.-Auditorias de Negocio

CREATE TABLE EmpleadosBaja

(Dni_Emp CHAR(9)NOT NULL,

Nom_Emp VARCHAR(15)NOT NULL,

Ape_Emp VARCHAR(30)NOT NULL,

Cat_Emp CHAR(3)NOT NULL,

Baja SMALLDATETIME NOT NULL,

Alta SMALLDATETIME,

Cod_Obr CHAR(3)NOT NULL)

CREATE TRIGGER EmpleadoBaja

ON Empleados

FOR UPDATE

AS

IF UPDATE(BajaTemporal)

DECLARE

@Dni CHAR(9),

@Nombre VARCHAR(15),

@Apellidos VARCHAR(30),

@Categoria CHAR(3),

@Baja SMALLDATETIME,

Proyecto Final Base de Datos

48 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

@Alta SMALLDATETIME,

@Obra CHAR(3)

SELECT @Dni = Dni_Emp FROM inserted

SELECT @Nombre = Nom_Emp FROM inserted

SELECT @Apellidos = Ape_Emp FROM inserted

SELECT @Categoria = Cat_Emp FROM inserted

SET @Baja = GETDATE()

SELECT @Alta = FechaAlta FROM inserted

SELECT @Obra = Cod_Obr FROM inserted

INSERT INTO EmpleadosBaja

VALUES(@Dni,@Nombre,@Apellidos,@Categoria,

@Baja,@Alta,@Obra)

14.8.-Introducir datos (INSERT INTO) INSERT INTO Categorias

VALUES('C1','Gerente',8000)

INSERT INTO Categorias

VALUES('C2','Jefe de Grupo',5000)

INSERT INTO Categorias

VALUES('C3','Jefe de Obra',2600)

INSERT INTO Categorias

VALUES('C4','Técnico de Estudios',2300)

INSERT INTO Categorias

VALUES('C5','Encargado',2800)

INSERT INTO Categorias

VALUES('C6','Capataz',2000)

INSERT INTO Categorias

VALUES('C7','Topógrafo',1800)

INSERT INTO Categorias

VALUES('C8','Administrativo',1500)

INSERT INTO Categorias

VALUES('C9','Oficial 1ª',1800)

INSERT INTO Categorias

VALUES('C10','Oficial 2ª',1400)

INSERT INTO Categorias

VALUES('C11','Gruísta',1800)

INSERT INTO Categorias

VALUES('C12','Camionero',1500)

INSERT INTO Categorias

VALUES('C13','Peón',1400)

INSERT INTO Ubicacion

VALUES('U01','C/Salitre,43 Málaga')

Proyecto Final Base de Datos

49 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

INSERT INTO Ubicacion

VALUES('U02','C/Boada,s/n Jaén')

INSERT INTO Ubicacion

VALUES('U03','C/Urgell,8 Lorca')

INSERT INTO Ubicacion

VALUES('U04','C/Picasso,101 Sabadell')

INSERT INTO UtensiliosPrincipales

VALUES('001','Grua-Torre')

INSERT INTO UtensiliosPrincipales

VALUES('002','Gondola-Transporte')

INSERT INTO UtensiliosPrincipales

VALUES('003','Excavadora-Mixta')

INSERT INTO UtensiliosPrincipales

VALUES('004','Bobcat-Mini')

INSERT INTO UtensiliosPrincipales

VALUES('005','Camion 3 Ejes')

INSERT INTO UtensiliosPrincipales

VALUES('006','Dumper')

INSERT INTO UtensiliosPrincipales

VALUES('007','Hormigonera')

INSERT INTO UtensiliosPrincipales

VALUES('008','Pala')

INSERT INTO UtensiliosPrincipales

VALUES('009','Ladrillos')

INSERT INTO UtensiliosPrincipales

VALUES('010','Cemento')

INSERT INTO UtensiliosPrincipales

VALUES('011','Tableros')

INSERT INTO UtensiliosPrincipales

VALUES('012','Carro mano')

INSERT INTO Obras

VALUES('O01','12 Viviendas Sant Angelo','C/Esperanza,13 Málaga',1250432,45)

INSERT INTO Obras

VALUES('O02','Red de Abastecimiento','Circunvalación Ronda Córdoba',7865430,78)

INSERT INTO Obras

VALUES('O03','34 Viviendas Procusan','C/Esperanto,15 Murcia',4567890,53)

INSERT INTO Obras

VALUES('O04','4 Naves Valero','C/Sorolla,24 Poligono I',3456079,87)

Proyecto Final Base de Datos

50 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

INSERT INTO Empleados

VALUES('34760350J','Jose','Santiago

Santiago','C11','O01','C/Alegrías,48',

'01/10/2001','07/09/1976','False','659037267','01824284130201561760','081038062643')

INSERT INTO Empleados

VALUES('45879235L','Ramón','Fernandez Hernandez','C10','O02','C/Fuerteventura,34',

'16/03/2005','14/11/1974','False','698245876','01824283130002347632','084598678325')

INSERT INTO Empleados

VALUES('34890532A','Alberto','García Montalvo','C5','O03','C/Almendro,98',

'01/01/2000','27/03/1968','True','628765432','01824282136769064325','087869693444')

INSERT INTO Empleados

VALUES('33567098H ','Roberto','Durán Fabregas','C3','O04','C/Sirocco,102',

'23/12/2002','21/05/1973','True','666789043','01824281136769064325','087869693444')

INSERT INTO Empleados

VALUES('45879350O','Raúl','García Montalvo','C5','O03','C/Almendro,98',

'01/01/2000','27/03/1968','True','628765432','01824284137643209837','088994437403')

INSERT INTO Empleados

VALUES('34345698I','Mariano','Fernandez Fernandez','C3','O01','C/Saharaui,43',

'11/01/2004','23/03/1976','False','626578900','01824283133409876432','080045218965')

INSERT INTO Empleados

VALUES('33567890F','Manuel','Raya Gonzalez','C13','O01','C/Covadonga,5',

'21/09/2002','28/04/1980','False','676890435','01824283133409874567','080045215678')

INSERT INTO Almacen

VALUES('A01','C/Salitre,43 Málaga','33567890F')

INSERT INTO Utensilios

VALUES('003','A01','U01','MAQ','Excavadora-Mixta',2)

INSERT INTO Utensilios

VALUES('004','A01','U01','MAQ','Bobcat-Mini',1)

INSERT INTO Utensilios

VALUES('009','A01','U01','MAT','Ladrillos',250)

INSERT INTO Utensilios

VALUES('012','A01','U01','MAT','Hormigonera',6)

INSERT INTO Utensilios

VALUES('007','A01','U01','MAQ','Carro mano',2)

INSERT INTO UtensiliosObras

VALUES('MAQ','001','O01',1,NULL)

INSERT INTO UtensiliosObras

VALUES('MAQ','003','O02',2,NULL)

INSERT INTO UtensiliosObras

VALUES('MAT','009','O03',1000,NULL)

Proyecto Final Base de Datos

51 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

INSERT INTO UtensiliosObras

VALUES('MAT','011','O04',55,'12/12/2011')

14.9.-Vistas CREATE VIEW Empleados_1

(Nombre,Apellidos,Categoria,Obra_Pertenece,Jefe_Obra)AS

SELECT Nom_Emp,Ape_Emp,Nom_Cat,Nom_Obr,Jef_Obr

FROM Empleados e,Obras o,Categorias

where O.Cod_Obr = E.Cod_Obr AND e.Cat = Cod_Cat

CREATE VIEW Sueldos

(Nombre,Apellidos,Categoria,Sueldos)AS

SELECT Nom_Emp,Ape_Emp,Nom_Cat,Salario

FROM Empleados INNER JOIN Categorias

ON Cat_Emp = Cod_Cat

14.10.-Funciones

CREATE FUNCTION DBO.Fn_EmpleadosObra(@Obra CHAR(3))

RETURNS TABLE

AS

RETURN

(SELECT Nom_Emp,Ape_Emp,Nom_Cat

FROM Empleados E ,Obras O,Categorias C

WHERE E.Cod_Obr = O.Cod_Obr AND E.Cat_Emp = C.Cod_Cat

AND @Obra = O.Cod_Obr )

CREATE FUNCTION DBO.TotalUten(@Utensilio CHAR(3))

RETURNS INT

AS

BEGIN

DECLARE @Contador INT

SET @Contador = (SELECT SUM(Stock_Ut + Cantidad)

FROM Utensilios u inner join UtensiliosObras uo

on u.Cod_Ut = uo.Cod_utensilio and @Utensilio = Cod_Ut)

IF(@Contador IS NULL)

SET @Contador = (SELECT SUM(Cantidad)

FROM UtensiliosObras

WHERE @Utensilio = Cod_utensilio)

IF(@Contador IS NULL)

SET @Contador = (SELECT SUM(stock_Ut)

FROM Utensilios

WHERE @Utensilio = Cod_ut)

RETURN @Contador

END

14.11.-Procedimientos Almacenados

CREATE PROC ProcUtenObra

@ProUten CHAR(3)

AS

SELECT Cod_utensilio,Nom_Ut,Cod_Obr,Cantidad

FROM UtensiliosObras UO join UtensiliosPrincipales UP

ON UO.Cod_utensilio = UP.Cod_Ut

WHERE @ProUten = UO.Cod_utensilio

BEGIN

--Condición para utensilios que no se encuentren en la obra

Proyecto Final Base de Datos

52 Prof: Lic. Francisca Castillo

UNIVERSIDAD GRAN ASUNCIÓN

IF (SELECT UO.Cod_utensilio FROM UtensiliosObras UO right outer JOIN Utensilios u

ON UO.Cod_utensilio = U.Cod_Ut where @ProUten = UO.Cod_utensilio) IS NULL

--Imprime la salida si la condición se cumple

PRINT

'ESTE UTENSILIO NO SE ENCUENTRA EN LA OBRA,POSIBLEMENTE EN ALMACÉN'

END

14.12.-Pruebas Realizadas

INSERT INTO Empleados

VALUES('34908765P','Carlos','De Pazos Salmarón','C9','O03','C/Benahavis,265',

'21/02/2005','09/09/1960','False','625786001','01824284130987654322','081038062643')

UPDATE Utensilios

SET Stock_Ut = 10

WHERE Cod_Ut = '004'

SELECT*

FROM Utensilios

WHERE Cod_Ut = '004'

UPDATE Empleados

SET BajaTemporal = 1

WHERE Dni_Emp = '33567098H'

SELECT*

FROM EmpleadosBaja

SELECT*

FROM Empleados_1

SELECT*

FROM Sueldos

SELECT* FROM DBO.Fn_EmpleadosObra('O02')

DECLARE @Contador INT

SET @Contador = DBO.TotalUten('009')

PRINT @Contador

EXEC ProcUtenObra '003'