Documente Academic
Documente Profesional
Documente Cultură
Proyecto Final
Base de Datos Sql Server
EDUAL PUMARRUMI
1
Indice_________________________________________________________________________________________________
1.-Objeto del Proyecto..................................................................................................4
2.-Creacin de la Base de Datos........................................................................................6
3.-Creacin de tablas...................................................................................................8
3.1-Diseo de relacin 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
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
Tambin se puede crear la base de datos a travs del entorno de gestin Sql. Pinchamos con el botn derecho del ratn 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.
3.-Creacin de tablas
3.-Creacin 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:
10
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 vlidos. Transact SQL proporciona una variedad predefinida de tipos de datos.
dbo.Obras
dbo.UtensiliosObras
Testigo_1 CHAR(3)
Cod_utensilio CHAR(3) (FK)
Cod_Obr CHAR(3) (FK)
Cantidad BIGINT
FechaEntrega SMALLDATETIME
dbo.Empleados
NSS CHAR(12)
BajaTemporal BIT
11
dbo.Categorias
dbo.Utensilios
dbo.Almacen
dbo.Ubicacion
dbo.UtensiliosPrincipales
13
14
Podemos mostrar las claves primarias tambin al crear las tablas, hacemos clic derecho sobre el campo a elegir y
seleccionamos la opcin establecer clave principal.
15
16
17
18
19
7.-Restricciones (Check)
20
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 maquinara (MAQ), as cuando ejecutemos la consulta nos
indicara a que utensilio pertenece.
Tambin incluimos 2 restricciones en la tabla de empleados en los campos Cuenta Corriente y Nmero Seguridad Social, para
que solo podamos ingresar datos numricos y la longitud de esos datos exclusivamente.
21
8.-Reglas de Negocio
22
8.-Reglas de Negocio
La base de datos contiene Reglas de Negocio, que conviene recordar para el perfecto funcionamiento de la informacin 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 informacin suficiente sin tener errores de apreciacin en los datos devueltos.
1. No puede contener 2 empleados el mismo nmero de la seguridad social.
23
Aplicaremos una Auditoria de Negocio, para la insercin, actualizacin y eliminacin de datos de la base de datos, para
proteger los datos cambiados o insertados e informar al usuario de la operacin 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.
Categora empleado.
Fecha de baja
Fecha de alta.
Obra del incidente.
24
25
26
27
28
10.-Vistas
29
10.-Vistas
La creacin de vistas refleja el contenido de una tabla o ms 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 informacin que hay en una tabla,
pero no a toda la tabla.
Comodidad, como hemos dicho el modelo relacional no es el ms cmodo 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 fsica 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 sern visibles desde la
vista.
Asignaremos dos vistas, la primera vista nos mostrar la informacin 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 categora a la que
pertenece.
1. Vista para la informacin 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 categora.
30
11.-Funciones
31
11.-Funciones
Declaramos una funcin de tabla para averiguar los empleados asignados a una determinada obra y nos devolver la
informacin del empleado respecto a su nombre y apellidos. La otra funcin ser escalar para consultar el nmero de utensilios
que contiene la empresa dentro del almacn y fuera.
1. Funcin de valores de tabla para averiguar los empleados asignados a una obra.
2. Funcin escalar para que nos devuelva todos los utensilios que contiene la empresa, dentro del almacn y fuera,
respecto a las obras.
32
12.-Procedimientos Almacenados
33
12.-Procedimientos Almacenados
Los procedimientos almacenados es una secuencia ordenada de instrucciones T-SQL, que pueden recibir y proporcionar
parmetros 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 cachs del servidor. Al mismo tiempo al ser cdigo externo a
la aplicacin puede ser alterado sin que exista siempre la necesidad de modificar el cdigo 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 cuestin.
1. Examina si el utensilio est en la obra y la cantidad total.
34
13.-Pruebas Realizadas
35
13.-Pruebas Realizadas
13.1.-Reglas de Negocio
36
13.2.-Auditorias de Negocio
13.3.-Vistas
37
13.4.-Funciones
38
39
13.5.-Procedimientos Almacenados
40
14.-Script
41
42
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 'ESPAA',
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',
Vehculo BIT DEFAULT 'True',
Telfono 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)
43
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
44
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],[09]')
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
45
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,
@Alta SMALLDATETIME,
46
47
48
14.9.-Vistas
CREATE VIEW Empleados_1
49
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
--Condicin para utensilios que no se encuentren en la obra
50
51