SlideShare una empresa de Scribd logo
1 de 52
Descargar para leer sin conexión
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'

Más contenido relacionado

Similar a Entregable proyecto de_base_de_datos_unigran_1

Gep2009 Eq3 T7 Sdp Fispa
Gep2009 Eq3 T7 Sdp FispaGep2009 Eq3 T7 Sdp Fispa
Gep2009 Eq3 T7 Sdp Fispa
JXCP.86
 
Planeaciion de proyec to (3)
Planeaciion de proyec to (3)Planeaciion de proyec to (3)
Planeaciion de proyec to (3)
alexrc15
 
Planeaciion de proyec to (3)
Planeaciion de proyec to (3)Planeaciion de proyec to (3)
Planeaciion de proyec to (3)
alexrc15
 
Formularios juzgamiento 60 40%25 programa nacional ferias ciencia y tecnolog...
Formularios juzgamiento 60 40%25  programa nacional ferias ciencia y tecnolog...Formularios juzgamiento 60 40%25  programa nacional ferias ciencia y tecnolog...
Formularios juzgamiento 60 40%25 programa nacional ferias ciencia y tecnolog...
Warren Sandi
 
Presupesto y plan operativo admision 2013 (4)
Presupesto y plan operativo admision 2013 (4)Presupesto y plan operativo admision 2013 (4)
Presupesto y plan operativo admision 2013 (4)
Nestor Amaya
 
Guia de aprendizaje no.002 guia para elaborar un plan de negocio – estudio de...
Guia de aprendizaje no.002 guia para elaborar un plan de negocio – estudio de...Guia de aprendizaje no.002 guia para elaborar un plan de negocio – estudio de...
Guia de aprendizaje no.002 guia para elaborar un plan de negocio – estudio de...
Juan Bosco Obrero Medios Impresos
 

Similar a Entregable proyecto de_base_de_datos_unigran_1 (20)

Anexo 2 - Zonficación de la Planta Industrial.pdf
Anexo 2 - Zonficación de la Planta Industrial.pdfAnexo 2 - Zonficación de la Planta Industrial.pdf
Anexo 2 - Zonficación de la Planta Industrial.pdf
 
Guia 4 de redes
Guia  4 de redesGuia  4 de redes
Guia 4 de redes
 
F004 p006-gfpi guia de aprendizaje 1
F004 p006-gfpi guia de aprendizaje 1F004 p006-gfpi guia de aprendizaje 1
F004 p006-gfpi guia de aprendizaje 1
 
Anexo 4 -Matrices Fase 4 _cristian_rico.docx
Anexo 4 -Matrices Fase 4 _cristian_rico.docxAnexo 4 -Matrices Fase 4 _cristian_rico.docx
Anexo 4 -Matrices Fase 4 _cristian_rico.docx
 
4.cantidades de obras
4.cantidades de obras4.cantidades de obras
4.cantidades de obras
 
Gep2009 Eq3 T7 Sdp Fispa
Gep2009 Eq3 T7 Sdp FispaGep2009 Eq3 T7 Sdp Fispa
Gep2009 Eq3 T7 Sdp Fispa
 
Project 2010. ezili rengel
Project 2010. ezili rengelProject 2010. ezili rengel
Project 2010. ezili rengel
 
Guía análisis
Guía análisis Guía análisis
Guía análisis
 
Guía análisis
Guía análisis Guía análisis
Guía análisis
 
Trabajo completo (1)
Trabajo completo (1) Trabajo completo (1)
Trabajo completo (1)
 
Planeaciion de proyec to (3)
Planeaciion de proyec to (3)Planeaciion de proyec to (3)
Planeaciion de proyec to (3)
 
Planeaciion de proyec to (3)
Planeaciion de proyec to (3)Planeaciion de proyec to (3)
Planeaciion de proyec to (3)
 
Tema 2 Tamaño óptimo del proyecto.pdf
Tema 2 Tamaño óptimo del proyecto.pdfTema 2 Tamaño óptimo del proyecto.pdf
Tema 2 Tamaño óptimo del proyecto.pdf
 
Formularios juzgamiento 60 40%25 programa nacional ferias ciencia y tecnolog...
Formularios juzgamiento 60 40%25  programa nacional ferias ciencia y tecnolog...Formularios juzgamiento 60 40%25  programa nacional ferias ciencia y tecnolog...
Formularios juzgamiento 60 40%25 programa nacional ferias ciencia y tecnolog...
 
Estudio tecnico.1
Estudio tecnico.1Estudio tecnico.1
Estudio tecnico.1
 
Establecer el costo de un producto sirve
Establecer el costo de un producto sirveEstablecer el costo de un producto sirve
Establecer el costo de un producto sirve
 
Presupesto y plan operativo admision 2013 (4)
Presupesto y plan operativo admision 2013 (4)Presupesto y plan operativo admision 2013 (4)
Presupesto y plan operativo admision 2013 (4)
 
Informe de Investigación software I
Informe de Investigación software IInforme de Investigación software I
Informe de Investigación software I
 
Presentación ed. tecnológica
Presentación ed. tecnológicaPresentación ed. tecnológica
Presentación ed. tecnológica
 
Guia de aprendizaje no.002 guia para elaborar un plan de negocio – estudio de...
Guia de aprendizaje no.002 guia para elaborar un plan de negocio – estudio de...Guia de aprendizaje no.002 guia para elaborar un plan de negocio – estudio de...
Guia de aprendizaje no.002 guia para elaborar un plan de negocio – estudio de...
 

Entregable proyecto de_base_de_datos_unigran_1

  • 1. 1 2014 Proyecto Final de Base de Datos Base de Datos Sql Server 2014 Alumno/a:------------------------------------ Prof: Lic. Francisca Castillo
  • 2. 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
  • 3. 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
  • 4. Proyecto Final Base de Datos 4 Prof: Lic. Francisca Castillo UNIVERSIDAD GRAN ASUNCIÓN 1.-Objeto del Proyecto.
  • 5. 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.
  • 6. Proyecto Final Base de Datos 6 Prof: Lic. Francisca Castillo UNIVERSIDAD GRAN ASUNCIÓN 2.-Creación de la Base de Datos.
  • 7. 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.
  • 8. Proyecto Final Base de Datos 8 Prof: Lic. Francisca Castillo UNIVERSIDAD GRAN ASUNCIÓN 3.-Creación de tablas
  • 9. 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.
  • 10. 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
  • 11. 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)
  • 12. 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
  • 13. 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)
  • 14. Proyecto Final Base de Datos 14 Prof: Lic. Francisca Castillo UNIVERSIDAD GRAN ASUNCIÓN 4.-Clave principal (Primary Key)
  • 15. 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.
  • 16. Proyecto Final Base de Datos 16 Prof: Lic. Francisca Castillo UNIVERSIDAD GRAN ASUNCIÓN 5.-Clave Secundaria (Foreign Key)
  • 17. 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.
  • 18. Proyecto Final Base de Datos 18 Prof: Lic. Francisca Castillo UNIVERSIDAD GRAN ASUNCIÓN 6.-Diagrama de base de datos
  • 19. Proyecto Final Base de Datos 19 Prof: Lic. Francisca Castillo UNIVERSIDAD GRAN ASUNCIÓN 6.-Diagrama de base de datos
  • 20. Proyecto Final Base de Datos 20 Prof: Lic. Francisca Castillo UNIVERSIDAD GRAN ASUNCIÓN 7.-Restricciones (Check)
  • 21. 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.
  • 22. Proyecto Final Base de Datos 22 Prof: Lic. Francisca Castillo UNIVERSIDAD GRAN ASUNCIÓN 8.-Reglas de Negocio
  • 23. 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.
  • 24. 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.
  • 25. Proyecto Final Base de Datos 25 Prof: Lic. Francisca Castillo UNIVERSIDAD GRAN ASUNCIÓN 9.-Introducir Datos (INSERT INTO)
  • 26. 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.
  • 27. Proyecto Final Base de Datos 27 Prof: Lic. Francisca Castillo UNIVERSIDAD GRAN ASUNCIÓN
  • 28. Proyecto Final Base de Datos 28 Prof: Lic. Francisca Castillo UNIVERSIDAD GRAN ASUNCIÓN
  • 29. Proyecto Final Base de Datos 29 Prof: Lic. Francisca Castillo UNIVERSIDAD GRAN ASUNCIÓN
  • 30. Proyecto Final Base de Datos 30 Prof: Lic. Francisca Castillo UNIVERSIDAD GRAN ASUNCIÓN 10.-Vistas
  • 31. 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.
  • 32. Proyecto Final Base de Datos 32 Prof: Lic. Francisca Castillo UNIVERSIDAD GRAN ASUNCIÓN 11.-Funciones
  • 33. 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.
  • 34. Proyecto Final Base de Datos 34 Prof: Lic. Francisca Castillo UNIVERSIDAD GRAN ASUNCIÓN 12.-Procedimientos Almacenados
  • 35. 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.
  • 36. Proyecto Final Base de Datos 36 Prof: Lic. Francisca Castillo UNIVERSIDAD GRAN ASUNCIÓN 13.-Pruebas Realizadas
  • 37. Proyecto Final Base de Datos 37 Prof: Lic. Francisca Castillo UNIVERSIDAD GRAN ASUNCIÓN 13.-Pruebas Realizadas 13.1.-Reglas de Negocio
  • 38. Proyecto Final Base de Datos 38 Prof: Lic. Francisca Castillo UNIVERSIDAD GRAN ASUNCIÓN 13.2.-Auditorias de Negocio
  • 39. Proyecto Final Base de Datos 39 Prof: Lic. Francisca Castillo UNIVERSIDAD GRAN ASUNCIÓN 13.3.-Vistas 13.4.-Funciones
  • 40. Proyecto Final Base de Datos 40 Prof: Lic. Francisca Castillo UNIVERSIDAD GRAN ASUNCIÓN
  • 41. Proyecto Final Base de Datos 41 Prof: Lic. Francisca Castillo UNIVERSIDAD GRAN ASUNCIÓN
  • 42. Proyecto Final Base de Datos 42 Prof: Lic. Francisca Castillo UNIVERSIDAD GRAN ASUNCIÓN 13.5.-Procedimientos Almacenados
  • 43. Proyecto Final Base de Datos 43 Prof: Lic. Francisca Castillo UNIVERSIDAD GRAN ASUNCIÓN 14.-Script
  • 44. 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)
  • 45. 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
  • 46. 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
  • 47. 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,
  • 48. 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')
  • 49. 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)
  • 50. 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)
  • 51. 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
  • 52. 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'