Upload
silvestre-sosa
View
92
Download
0
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
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
42 Prof: Lic. Francisca Castillo
UNIVERSIDAD GRAN ASUNCIÓN
13.5.-Procedimientos Almacenados
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
'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'