Se ha denunciado esta presentación.
Se está descargando tu SlideShare. ×

Entregable proyecto de_base_de_datos_unigran_1

Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
1
2014
Proyecto Final de Base de Datos
Base de Datos Sql Server
2014
Alumno/a:------------------------------------
Prof: L...
Proyecto Final Base de Datos
2
Prof: Lic. Francisca Castillo
UNIVERSIDAD GRAN ASUNCIÓN
Indice_____________________________...
Proyecto Final Base de Datos
3
Prof: Lic. Francisca Castillo
UNIVERSIDAD GRAN ASUNCIÓN
14.1.-Base de datos...................
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Próximo SlideShare
Formato 2006
Formato 2006
Cargando en…3
×

Eche un vistazo a continuación

1 de 52 Anuncio

Más Contenido Relacionado

Similares a Entregable proyecto de_base_de_datos_unigran_1 (20)

Más reciente (20)

Anuncio

Entregable proyecto de_base_de_datos_unigran_1

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

×