Está en la página 1de 21

FACULTAD: Ingeniería, Arquitectura y Urbanismo

ESCUELA: Ingeniería de Sistemas

TITULO: Implementación de una Base de Datos para


una Empresa de Alquiler de Películas

ALUMNO: Chambilla Meneses José Luis

ASIGNATURA: Implementación de Base de Datos

TUTOR VIRTUAL: Mag. Ing. Miguel Angel Díaz Espino

CICLO: V Ciclo

FECHA: 14 de Octubre de 2018


INDICE

Caratula.......................................................................................................................................... Página 01

Indice.............................................................................................................................................. Página 02

Introducción.................................................................................................................................... Página 03

Desarrollo de la Investigacion………………................................................................................... Página 04

Diseño Conceptual…………………………..................................................................................... Página 07

Diseño Logico................................................................................................................................ Página 10

Conclusiones................................................................................................................................. Página 11

Bibliografía..................................................................................................................................... Página 12

Anexos........................................................................................................................................... Página 13
INTRODUCCIÓN

En el presente trabajo se ha realizado el Diseño Conceptual y Lógico de un Sistema de Base de Datos para
una Empresa dedicada al Alquiler de Películas “Pegasus EIRL”, en el cual desea tener almacenado una
Ficha Técnica de cada película donde el usuario antes de realizar el alquiler de la misma, pueda conocer
un poco el detalle técnico de cada Película (Director y Reparto).

Básicamente nos hemos basado en los datos técnicos de las películas, para poder darnos un panorama de
lo que normalmente le interesa al usuario referente a los datos de la película, actores, director, entre otros
datos.

Hemos realizado el análisis previo de la Base de Datos, obteniendo el listado de las Tablas, las Llaves
Primarias y Foráneas, Relaciones, Store Procedures para actualización entre otros datos más.

A continuación, invitamos a que puedan leer el presente informe para poder conocer a todo detalle el
análisis y la implementación realizada de este Sistema de Base de Datos y su modelo de datos.
DESARROLLO DEL TEMA DE INVESTIGACION

La empresa en cuestión, desea tener la información técnica detallada de toda su colección de películas y
quieren tenerlo en una base de datos para poder consultar en todo momento dicha Ficha Técnica.

De cada Película necesitamos almacenar su Título, Año, Nacionalidad.

Del Director se desea almacenar los siguientes datos: Nombres, Fecha de Nacimiento y País de Origen.

Adicionalmente necesitamos poder conocer el idioma de la película, si es blanco y negro o a colores, si


tiene alguna restricción de edad, resumen y poder indicar nuestras propias observaciones.

La Ficha Técnica de cada película también debe incluir el reparto de actores, donde observaremos sus
Nombres, su Nacionalidad y el Nombre del Personaje que tienen en la película.

Para todo esto, vamos a diseñar una Base de Datos que se ajuste al requerimiento identificando las Tablas,
Atributos, Claves Principales y Relaciones Existentes.

 TABLAS DE LAS BASE DE DATOS:

 DIAGRAMA DE RELACIONES DE LA BASE DE DATOS:


 Descripción del Script der la Base de Datos:

A continuación detallamos el Script de la Base de Datos, donde podemos ver la creación del mismo, así
como de las Tablas y de las Relaciones.

o Script de la Creación de la Base de Datos:

En esta parte podemos ver el Script de la creación de la Base de Datos, con los parámetros de
ubicación del archivo de Datos y Log por defecto, así como los valores incrementales.

USE [MASTER];
CREATE DATABASE SISPELICULA

o Script de la Creación de las Tablas de la Base de Datos:

En esta parte podemos ver el Script de la creación de las Tablas y sus respectivos Campos.

USE [SISPELICULA]
GO
/****** Object: Table [dbo].[Idioma] Script Date: 09/29/2014
21:34:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Idioma](
[ID_Idioma] [nchar](10) NOT NULL,
[Descripcion] [nchar](15) NULL,
CONSTRAINT [PK_Idioma] PRIMARY KEY CLUSTERED
(
[ID_Idioma] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS =
ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Director] Script Date: 09/29/2014
21:34:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Director](
[ID_Director] [nchar](10) NOT NULL,
[Nombre] [nchar](10) NULL,
[Apellidos] [nchar](20) NULL,
[Nacionalidad] [nchar](15) NULL,
CONSTRAINT [PK_Director] PRIMARY KEY CLUSTERED
(
[ID_Director] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS =
ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Caracteristica] Script Date:
09/29/2014 21:34:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Caracteristica](
[ID_Caracteristica] [nchar](10) NOT NULL,
[Descripcion] [nchar](70) NULL,
CONSTRAINT [PK_Caracteristica] PRIMARY KEY CLUSTERED
(
[ID_Caracteristica] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS =
ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Actores] Script Date: 09/29/2014
21:34:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Actores](
[ID_Actor] [nchar](10) NOT NULL,
[Nombre] [nchar](10) NULL,
[Apellido] [nchar](20) NULL,
[Nacionalidad] [nchar](15) NULL,
[NombrePersonaje] [nchar](20) NULL,
CONSTRAINT [PK_Actores] PRIMARY KEY CLUSTERED
(
[ID_Actor] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS =
ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Subtitulo] Script Date: 09/29/2014
21:34:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Subtitulo](
[ID_Subtitulo] [nchar](10) NOT NULL,
[Descripcion] [nchar](30) NULL,
[IdiomaOrigen] [nchar](15) NULL,
[IdiomaTraduc] [nchar](15) NULL,
CONSTRAINT [PK_Subtitulo] PRIMARY KEY CLUSTERED
(
[ID_Subtitulo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS =
ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[RepartoActores] Script Date:
09/29/2014 21:34:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[RepartoActores](
[ID_Reparto] [nchar](10) NOT NULL,
[ID_Actor] [nchar](10) NULL,
[Descripcion] [nchar](40) NULL,
CONSTRAINT [PK_RepartoActores] PRIMARY KEY CLUSTERED
(
[ID_Reparto] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS =
ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Pelicula] Script Date: 09/29/2014
21:34:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Pelicula](
[ID_Pelicula] [nchar](10) NOT NULL,
[ID_Director] [nchar](10) NULL,
[ID_Idioma] [nchar](10) NULL,
[ID_Caracteristicas] [nchar](10) NULL,
[ID_Reparto] [nchar](10) NULL,
[ID_Subtitulo] [nchar](10) NULL,
[Titulo] [nchar](20) NULL,
[Anio] [date] NULL,
[Nacionalidad] [nchar](15) NULL,
CONSTRAINT [PK_Pelicula] PRIMARY KEY CLUSTERED
(
[ID_Pelicula] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS =
ON) ON [PRIMARY]
) ON [PRIMARY]
GO

o Script de la Asignación de las Claves Foráneas y Relaciones:

En esta parte podemos ver el Script de la creación de las Relaciones entre las Claves Primarias y
Foráneas de nuestro Esquema de Base de Datos.

USE [SISPELICULA]
GO
/****** Object: ForeignKey [FK_RepartoActores_Actores] Script
Date: 09/29/2014 21:34:34 ******/
ALTER TABLE [dbo].[RepartoActores] WITH CHECK ADD CONSTRAINT
[FK_RepartoActores_Actores] FOREIGN KEY([ID_Actor])
REFERENCES [dbo].[Actores] ([ID_Actor])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[RepartoActores] CHECK CONSTRAINT
[FK_RepartoActores_Actores]
GO
/****** Object: ForeignKey [FK_Pelicula_Caracteristica] Script
Date: 09/29/2014 21:34:34 ******/
ALTER TABLE [dbo].[Pelicula] WITH CHECK ADD CONSTRAINT
[FK_Pelicula_Caracteristica] FOREIGN KEY([ID_Caracteristicas])
REFERENCES [dbo].[Caracteristica] ([ID_Caracteristica])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[Pelicula] CHECK CONSTRAINT
[FK_Pelicula_Caracteristica]
GO
/****** Object: ForeignKey [FK_Pelicula_Director] Script Date:
09/29/2014 21:34:34 ******/
ALTER TABLE [dbo].[Pelicula] WITH CHECK ADD CONSTRAINT
[FK_Pelicula_Director] FOREIGN KEY([ID_Director])
REFERENCES [dbo].[Director] ([ID_Director])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[Pelicula] CHECK CONSTRAINT
[FK_Pelicula_Director]
GO
/****** Object: ForeignKey [FK_Pelicula_Idioma] Script Date:
09/29/2014 21:34:34 ******/
ALTER TABLE [dbo].[Pelicula] WITH CHECK ADD CONSTRAINT
[FK_Pelicula_Idioma] FOREIGN KEY([ID_Idioma])
REFERENCES [dbo].[Idioma] ([ID_Idioma])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[Pelicula] CHECK CONSTRAINT [FK_Pelicula_Idioma]
GO
/****** Object: ForeignKey [FK_Pelicula_RepartoActores] Script
Date: 09/29/2014 21:34:34 ******/
ALTER TABLE [dbo].[Pelicula] WITH CHECK ADD CONSTRAINT
[FK_Pelicula_RepartoActores] FOREIGN KEY([ID_Reparto])
REFERENCES [dbo].[RepartoActores] ([ID_Reparto])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[Pelicula] CHECK CONSTRAINT
[FK_Pelicula_RepartoActores]
GO
/****** Object: ForeignKey [FK_Pelicula_Subtitulo] Script Date:
09/29/2014 21:34:34 ******/
ALTER TABLE [dbo].[Pelicula] WITH CHECK ADD CONSTRAINT
[FK_Pelicula_Subtitulo] FOREIGN KEY([ID_Subtitulo])
REFERENCES [dbo].[Subtitulo] ([ID_Subtitulo])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[Pelicula] CHECK CONSTRAINT
[FK_Pelicula_Subtitulo]
GO
 Descripción de los Procedimientos Almacenados:

o Procedimientos Almacenados para la Tabla Actores:

 Inserción de Datos:

CREATE PROCEDURE SPInsertarDatosActores(


@pID_Actor nchar (10),
@pNombre nchar(10),
@pApellido nchar(20),
@pNacionalidad nchar (15),
@pNombrePersonaje nchar (20)
)
AS
BEGIN
SET NOCOUNT ON;

INSERT INTO Actores


(ID_Actor, Nombre, Apellido, Nacionalidad, NombrePersonaje)
VALUES (@pID_Actor, @pNombre, @pApellido, @pNacionalidad,
@pNombrePersonaje);
END

GO

-- ************************ Ejemplo de la ejecución del SP

EXEC dbo.SPInsertarDatosActores
@pID_Actor = '4593',
@pNombre = 'Juan',
@pApellido = 'Ramon',
@pNacionalidad = 'Boliviano',
@pNombrePersonaje = 'Chapulin'

GO

 Modificación de Datos:

CREATE PROCEDURE SPModificarDatosActores(


@pID_Actor nchar (10),
@pNombre nchar(10),
@pApellido nchar(20),
@pNacionalidad nchar (15),
@pNombrePersonaje nchar (20)
)
AS
BEGIN
SET NOCOUNT ON;
UPDATE Actores
SET Nombre=@pNombre, Apellido=@pApellido,
Nacionalidad=@pNacionalidad,
NombrePersonaje=@pNombrePersonaje
WHERE ID_Actor=@pID_Actor

END
GO

-- ************************ Ejemplo de la ejecución del SP


DECLARE @return_value INT

EXEC @return_value = [dbo].[SPModificarDatosActores]


@pID_Actor = '9456',
@pNombre = 'Antonio',
@pApellido = 'Banderas',
@pNacionalidad = 'Español',
@pNombrePersonaje = 'Burrote de Sherk'

GO

 Eliminación de Datos:

CREATE PROCEDURE SPEliminarDatosActores(


@pID_Actor nchar (10)
)
AS
BEGIN
SET NOCOUNT ON;
DELETE FROM Actores
WHERE ID_Actor=@pID_Actor

END

GO

-- ************************ Ejemplo de la ejecución del SP

DECLARE @return_value INT

EXEC @return_value = [dbo].[SPEliminarDatosActores]


@pID_Actor = '8794'

GO

o Procedimientos Almacenados para la Tabla Director:

 Inserción de Datos:

CREATE PROCEDURE SPInsertarDatosDirector(


@pID_Director nchar (10),
@pNombre nchar(10),
@pApellidos nchar(20),
@pNacionalidad nchar (15)
)
AS
BEGIN
SET NOCOUNT ON;

INSERT INTO Director


(ID_Director, Nombre, Apellidos, Nacionalidad)
VALUES (@pID_Director, @pNombre, @pApellidos,
@pNacionalidad);
END

GO
-- ************************ Ejemplo de la ejecución del SP

EXEC dbo.SPInsertarDatosDirector
@pID_Director = '8080',
@pNombre = 'Francisco',
@pApellidos = 'Lombardi Ganoza',
@pNacionalidad = 'Peruano'

GO

 Modificación de Datos:

CREATE PROCEDURE SPModificarDatosDirector(


@pID_Director nchar (10),
@pNombre nchar(10),
@pApellidos nchar(20),
@pNacionalidad nchar (15)
)
AS
BEGIN
SET NOCOUNT ON;
UPDATE Director
SET Nombre=@pNombre, Apellidos=@pApellidos,
Nacionalidad=@pNacionalidad
WHERE ID_Director=@pID_Director

END
GO

-- ************************ Ejemplo de la ejecución del SP

DECLARE @return_value INT

EXEC @return_value = [dbo].[SPModificarDatosActores]


@pID_Director = '4569',
@pNombre = 'Juan',
@pApellido = 'Valdez',
@pNacionalidad = 'Mexicano'

GO

 Eliminación de Datos:

CREATE PROCEDURE SPEliminarDatosDirector(


@pID_Director nchar (10)
)
AS
BEGIN
SET NOCOUNT ON;
DELETE FROM Director
WHERE ID_Director=@pID_Director

END

GO

-- ************************ Ejemplo de la ejecución del SP


DECLARE @return_value INT

EXEC @return_value = [dbo].[SPEliminarDatosDirector]


@pID_Director = '5524'

GO

o Procedimientos Almacenados para la Tabla Idioma:

 Inserción de Datos:

CREATE PROCEDURE SPInsertarDatosIdioma(


@pID_Idioma nchar (10),
@pDescripcion nchar(15)
)
AS
BEGIN
SET NOCOUNT ON;

INSERT INTO Idioma


(ID_Idioma, Descripcion)
VALUES (@pID_Idioma, @pDescripcion);
END

GO

-- ************************ Ejemplo de la ejecución del SP

EXEC dbo.SPInsertarDatosIdioma
@pID_Idioma = '888',
@pDescripcion = 'Quechua'

GO

 Modificación de Datos:

CREATE PROCEDURE SPModificarDatosIdioma(


@pID_Idioma nchar (10),
@pDescripcion nchar(15)
)
AS
BEGIN
SET NOCOUNT ON;
UPDATE Idioma
SET Descripcion=@pDescripcion
WHERE ID_Idioma=@pID_Idioma

END
GO

-- ************************ Ejemplo de la ejecución del SP

DECLARE @return_value INT

EXEC @return_value = [dbo].[SPModificarDatosIdioma]


@pID_Idioma = '895',
@pDescripcion = 'Aymara'
GO

 Eliminación de Datos:

CREATE PROCEDURE SPEliminarDatosIdioma(


@pID_Idioma nchar (10)
)
AS
BEGIN
SET NOCOUNT ON;
DELETE FROM Idioma
WHERE ID_Idioma=@pID_Idioma

END

GO

-- ************************ Ejemplo de la ejecución del SP

DECLARE @return_value INT

EXEC @return_value = [dbo].[SPEliminarDatosIdioma]


@pID_Idioma = '426'

GO

o Procedimientos Almacenados para la Tabla Características:

 Inserción de Datos:

CREATE PROCEDURE SPInsertarDatosCaracteristica(


@pID_Caracteristica nchar (10),
@pDescripcion nchar(70)
)
AS
BEGIN
SET NOCOUNT ON;

INSERT INTO Caracteristica


(ID_Caracteristica, Descripcion)
VALUES (@pID_Caracteristica, @pDescripcion);
END

GO

-- ************************ Ejemplo de la ejecución del SP

EXEC dbo.SPInsertarDatosCaracteristica
@pID_Caracteristica = '45674',
@pDescripcion = 'Pelicula con contenido de sexo y
violencia, no apto para menores de 18 años'

GO

 Modificación de Datos:
CREATE PROCEDURE SPModificarDatosCaracteristica(
@pID_Caracteristica nchar (10),
@pDescripcion nchar(70)
)
AS
BEGIN
SET NOCOUNT ON;
UPDATE Caracteristica
SET Descripcion=@pDescripcion
WHERE ID_Caracteristica=@pID_Caracteristica

END
GO

-- ************************ Ejemplo de la ejecución del SP

DECLARE @return_value INT

EXEC @return_value = [dbo].[SPModificarDatosCaracteristica]


@pID_Caracteristica = '78554',
@pDescripcion = 'Pelicula Nativa en Idioma Aymara'

GO

 Eliminación de Datos:

CREATE PROCEDURE SPEliminarDatosCaracteristica(


@pID_Caracteristica nchar (10)
)
AS
BEGIN
SET NOCOUNT ON;
DELETE FROM Caracteristica
WHERE ID_Caracteristica=@pID_Caracteristica

END

GO

-- ************************ Ejemplo de la ejecución del SP

DECLARE @return_value INT

EXEC @return_value = [dbo].[SPEliminarDatosCaracteristica]


@pID_Caracteristica= '42126'

GO

o Procedimientos Almacenados para la Tabla Subtitulo:

 Inserción de Datos:

CREATE PROCEDURE SPInsertarDatosSubtitulo(


@pID_Subtitulo nchar (10),
@pDescripcion nchar(30),
@pIdiomaOrigen nchar(15),
@pIdiomaTraduc nchar(15)
)
AS
BEGIN
SET NOCOUNT ON;

INSERT INTO Subtitulo


(ID_Subtitulo, Descripcion, IdiomaOrigen, IdiomaTraduc)
VALUES (@pID_Subtitulo, @pDescripcion, @pIdiomaOrigen,
@pIdiomaTraduc);
END

GO

-- ************************ Ejemplo de la ejecución del SP

EXEC dbo.SPInsertarDatosSubtitulo
@pID_Subtitulo = '753',
@pDescripcion = 'Idioma Original',
@pIdiomaOrigen = 'Catalan',
@pIdiomaTraduc = 'Ingles'

GO

 Modificación de Datos:

CREATE PROCEDURE SPModificarDatosSubtitulo(


@pID_Subtitulo nchar (10),
@pDescripcion nchar(30),
@pIdiomaOrigen nchar(15),
@pIdiomaTraduc nchar(15)
)
AS
BEGIN
SET NOCOUNT ON;
UPDATE Subtitulo
SET Descripcion=@pDescripcion, IdiomaOrigen=@pIdiomaOrigen,
IdiomaTraduc=@pIdiomaTraduc
WHERE ID_Subtitulo=@pID_Subtitulo

END
GO

-- ************************ Ejemplo de la ejecución del SP

DECLARE @return_value INT

EXEC @return_value = [dbo].[SPModificarDatosSubtitulo]


@pID_Subtitulo = '156',
@pDescripcion = 'Idioma Original'
@pIdiomaOrigen = 'Español'
@pIdiomaTraduc = 'Frances'

GO

 Eliminación de Datos:

CREATE PROCEDURE SPEliminarDatosSubtitulo(


@pID_Subtitulo nchar (10)
)
AS
BEGIN
SET NOCOUNT ON;
DELETE FROM Subtitulo
WHERE ID_Subtitulo=@pID_Subtitulo

END

GO

-- ************************ Ejemplo de la ejecución del SP

DECLARE @return_value INT

EXEC @return_value = [dbo].[SPEliminarDatosSubtitulo]


@pID_Subtitulo= '456'

GO

o Procedimientos Almacenados de Consulta de Películas (Involucra la Acción de Varias Tablas):

 Consulta de Información de Películas:

CREATE PROCEDURE SPConsultarPelicula(


@pID_Pelicula nchar (10)
)
AS
BEGIN
SET NOCOUNT ON;

SELECT Pelicula.ID_Pelicula as Codigo, Pelicula.Titulo,


Pelicula.Anio as Fecha, Pelicula.Nacionalidad as Origen,
Idioma.Descripcion as Idioma, Director.Nombre as
Nombre_Director, Director.Apellidos as Apellido_Director,
Director.Nacionalidad, Caracteristica.Descripcion FROM
Pelicula
INNER JOIN Director ON
Pelicula.ID_Director=Director.ID_Director INNER JOIN Idioma
ON Pelicula.ID_Idioma=Idioma.ID_Idioma INNER JOIN
Caracteristica ON
Pelicula.ID_Caracteristicas=Caracteristica.ID_Caracteristica
INNER JOIN RepartoActores ON
Pelicula.ID_Reparto=RepartoActores.ID_Reparto
WHERE ID_Pelicula='12344';

END
GO

-- ************************ Ejemplo de la ejecución del SP

use SISPELICULA

EXEC dbo.SPConsultarPelicula
@pID_Pelicula='12344'
GO
 Consulta de Reparto de Actores:

CREATE PROCEDURE SPConsultarReparto(


@pID_Reparto nchar (10),
@pID_Actor nchar (10)
)
AS
BEGIN
SET NOCOUNT ON;

SELECT RepartoActores.ID_Reparto AS Codigo_Reparto_Actores,


RepartoActores.Descripcion, Actores.Nombre AS Nombre_Actor,
Actores.Apellido AS Apellido_Actor, Actores.Nacionalidad AS
Origen_Actor, Actores.NombrePersonaje AS Personaje_Pelicula
FROM RepartoActores
INNER JOIN Actores ON
RepartoActores.ID_Actor=Actores.ID_Actor
WHERE ID_Reparto='7845';

END
GO

-- ************************ Ejemplo de la ejecución del SP

use SISPELICULA

EXEC dbo.SPConsultarReparto
@pID_Actor='9456',
@pID_Reparto='7845'

GO

 Descripción de las Funciones, Vistas y Desencadenadores:

 FUNCION en la que se Consulta una Película que se encuentra dentro de un Rango de


Fecha específico:

CREATE FUNCTION PELICULA_POR_FECHA(@INICIO DATE, @FIN DATE)


RETURNS TABLE
AS
RETURN
(
SELECT Pelicula.ID_Pelicula as Codigo, Pelicula.Titulo,
Pelicula.Anio as Fecha, Pelicula.Nacionalidad as Origen,
Idioma.Descripcion as Idioma, Director.Nombre as
Nombre_Director, Director.Apellidos as Apellido_Director,
Director.Nacionalidad, Caracteristica.Descripcion FROM
Pelicula
INNER JOIN Director ON
Pelicula.ID_Director=Director.ID_Director INNER JOIN Idioma
ON Pelicula.ID_Idioma=Idioma.ID_Idioma INNER JOIN
Caracteristica ON
Pelicula.ID_Caracteristicas=Caracteristica.ID_Caracteristica
INNER JOIN RepartoActores ON
Pelicula.ID_Reparto=RepartoActores.ID_Reparto
WHERE Pelicula.Anio BETWEEN @INICIO AND @FIN)

-- ****************** Ejemplo de la ejecución de la Función


SELECT * FROM dbo.PELICULA_POR_FECHA('2013-01-01','2013-03-31')

 VISTA de la Tabla de Actores:

CREATE VIEW Vista_ACTORES


AS SELECT *
FROM Actores;

-- ******************** Ejemplo de la ejecución de la Vista

SELECT * FROM Vista_ACTORES;

 DESENCADENADOR que actualiza un Registro en la Tabla Actores, al momento de


insertarse Datos en la Tabla RepartoActores:

USE SISPELICULA
GO

CREATE TRIGGER DSCActualizaActores


ON RepartoActores FOR INSERT
AS
EXEC dbo.SPInsertarDatosActores
@pID_Actor = '8888',
@pNombre = 'Jonathan',
@pApellido = 'Ortiz',
@pNacionalidad = 'Peruano',
@pNombrePersonaje = 'Papito'

GO

-- **************** Ejemplo de la ejecución del Desencadenador

EXEC dbo.SPInsertarDatosRepartoActores
@pID_Reparto = '1234',
@pID_Actor = '1234',
@pDescripcion = 'Suspenso'

GO

 Descripción de las Transacciones Implementadas:

 Transacción encargada de agregar un ID_Actor a la Taba RepartoActores, cuando se


inserta un Actor nuevo en la Tabla Actores:

SET IMPLICIT_TRANSACTIONS ON

DECLARE @pID_Actor nchar(10),


@pNombre nchar(10),
@pApellido nchar(20),
@pNacionalidad nchar(15),
@pNombrePersonaje nchar(20)
SET @pID_Actor = '9999'
SET @pNombre = 'Juelipe'
SET @pApellido = 'Crush'
SET @pNacionalidad = 'Filipino'
SET @pNombrePersonaje = 'Floriciento'

BEGIN TRY

/* Insertamos los Datos en la Tabla Reparto Actores, para


asociar al actor a un reparto */

INSERT INTO Actores


(ID_Actor, Nombre, Apellido, Nacionalidad, NombrePersonaje)
VALUES (@pID_Actor, @pNombre, @pApellido, @pNacionalidad,
@pNombrePersonaje);

/* Insertamos los Nuevos Datos en la Tabla Actores*/

DECLARE @pID_Reparto nchar(10),


@pID_ActorN nchar(10),
@pDescripcion nchar(40)

SET @pID_Reparto = '1000'


SET @pID_ActorN = '9990'
SET @pDescripcion = 'Comedia'

INSERT INTO RepartoActores


(ID_Reparto, ID_Actor, Descripcion)
VALUES (@pID_Reparto, @pID_ActorN, @pDescripcion);

/* Confirmamos la transaccion*/

COMMIT TRANSACTION -- O solo COMMIT

END TRY

BEGIN CATCH

/* Hay un error, deshacemos los cambios*/

ROLLBACK TRANSACTION -- O solo ROLLBACK

PRINT 'Se ha producido un error!'

END CATCH
CONCLUSIONES

Podemos concluir luego de realizar el presente trabajo, que es muy importante el uso de Funciones, Vitas,
Triggers, etc. Como herramientas útiles en el manejo de información de las Bases de Datos.

Es importante también indicar que siempre es necesario realizar un levantamiento de información previo,
que es lo que nos permitirá poder identificar la necesidad y trasladarlo a una solución correcta.

Hemos visto también que la correcta utilización de las herramientas de SQL, no permitirá realizar un trabajo
óptimo y que pueda ser mantenible por otros desarrolladores.

Con todo esto podemos entender que valiéndonos de diferentes herramientas y de la manera correcta,
podemos desarrollar soluciones óptimas de Sistemas de Bases de Datos.
BIBLIOGRAFIA:

 Universidad Señor de Sipán, Asignatura de Implementación de Base de Datos. Temas de Clase.


 Gonzales Sanabria, Juan Sebastián. Diseño de Bases de Datos. Disponible en:
http://escritura.proyectolatin.org/topicos-avanzados-de-bases-de-datos/diseno-y-modelado-de-bases-
de-datos/
 Atzeni, P., Ceri, S. & Paraboshi S. (1999). Database Systems. McGraw Hill.
 Barker, R. (1990). CASE Method: Entity Relationship Modelling. Reading, MA: Addison-Wesley Pro
 Garcia, H., Ullman, J. & Widom, J. (2012). DataBase Systems: The Complete Book. Prentice Hall.

También podría gustarte