Sei sulla pagina 1di 13

Script para la bd

USE [tiendabd]

GO

/****** Object:  Table [dbo].[articulo]    Script Date: 22/06/2020 19:15:12 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[articulo](

[idarticulo] [int] IDENTITY(1,1) NOT NULL,

[idcategoria] [int] NOT NULL,

[codigo] [varchar](50) NULL,

[nombre] [varchar](100) NOT NULL,

[precio_venta] [decimal](11, 2) NOT NULL,

[stock] [int] NOT NULL,

[descripcion] [varchar](256) NULL,

[estado] [bit] NULL,

PRIMARY KEY CLUSTERED 

[idarticulo] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,


ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY =
OFF) ON [PRIMARY],

UNIQUE NONCLUSTERED 

[nombre] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY =
OFF) ON [PRIMARY]

) ON [PRIMARY]

GO

/****** Object:  Table [dbo].[categoria]    Script Date: 22/06/2020 19:15:12 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[categoria](

[idcategoria] [int] IDENTITY(1,1) NOT NULL,

[nombre] [varchar](50) NOT NULL,

[descripcion] [varchar](256) NULL,

[estado] [bit] NULL,

PRIMARY KEY CLUSTERED 

[idcategoria] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,


ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY =
OFF) ON [PRIMARY],

UNIQUE NONCLUSTERED 

[nombre] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,


ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY =
OFF) ON [PRIMARY]

) ON [PRIMARY]

GO
/****** Object:  Table [dbo].[detalle_ingreso]    Script Date: 22/06/2020 19:15:12 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[detalle_ingreso](

[iddetalle_ingreso] [int] IDENTITY(1,1) NOT NULL,

[idingreso] [int] NOT NULL,

[idarticulo] [int] NOT NULL,

[cantidad] [int] NOT NULL,

[precio] [decimal](11, 2) NOT NULL,

PRIMARY KEY CLUSTERED 

[iddetalle_ingreso] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,


ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY =
OFF) ON [PRIMARY]

) ON [PRIMARY]

GO

/****** Object:  Table [dbo].[detalle_venta]    Script Date: 22/06/2020 19:15:12 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[detalle_venta](

[iddetalle_venta] [int] IDENTITY(1,1) NOT NULL,

[idventa] [int] NOT NULL,


[idarticulo] [int] NOT NULL,

[cantidad] [int] NOT NULL,

[precio] [decimal](11, 2) NOT NULL,

[descuento] [decimal](11, 2) NOT NULL,

PRIMARY KEY CLUSTERED 

[iddetalle_venta] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,


ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY =
OFF) ON [PRIMARY]

) ON [PRIMARY]

GO

/****** Object:  Table [dbo].[ingreso]    Script Date: 22/06/2020 19:15:12 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[ingreso](

[idingreso] [int] IDENTITY(1,1) NOT NULL,

[idproveedor] [int] NOT NULL,

[idusuario] [int] NOT NULL,

[tipo_comprobante] [varchar](20) NOT NULL,

[serie_comprobante] [varchar](7) NULL,

[num_comprobante] [varchar](10) NOT NULL,

[fecha] [datetime] NOT NULL,

[impuesto] [decimal](4, 2) NOT NULL,

[total] [decimal](11, 2) NOT NULL,


[estado] [varchar](20) NOT NULL,

PRIMARY KEY CLUSTERED 

[idingreso] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,


ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY =
OFF) ON [PRIMARY]

) ON [PRIMARY]

GO

/****** Object:  Table [dbo].[persona]    Script Date: 22/06/2020 19:15:12 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[persona](

[idpersona] [int] IDENTITY(1,1) NOT NULL,

[tipo_persona] [varchar](20) NOT NULL,

[nombre] [varchar](100) NOT NULL,

[tipo_documento] [varchar](20) NULL,

[num_documento] [varchar](20) NULL,

[direccion] [varchar](70) NULL,

[telefono] [varchar](20) NULL,

[email] [varchar](50) NULL,

PRIMARY KEY CLUSTERED 

[idpersona] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY =
OFF) ON [PRIMARY]

) ON [PRIMARY]

GO

/****** Object:  Table [dbo].[rol]    Script Date: 22/06/2020 19:15:12 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[rol](

[idrol] [int] IDENTITY(1,1) NOT NULL,

[nombre] [varchar](30) NOT NULL,

[descripcion] [varchar](100) NULL,

[estado] [bit] NULL,

PRIMARY KEY CLUSTERED 

[idrol] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,


ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY =
OFF) ON [PRIMARY]

) ON [PRIMARY]

GO

/****** Object:  Table [dbo].[usuario]    Script Date: 22/06/2020 19:15:12 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO
CREATE TABLE [dbo].[usuario](

[idusuario] [int] IDENTITY(1,1) NOT NULL,

[idrol] [int] NOT NULL,

[nombre] [varchar](100) NOT NULL,

[tipo_documento] [varchar](20) NULL,

[num_documento] [varchar](20) NULL,

[direccion] [varchar](70) NULL,

[telefono] [varchar](20) NULL,

[email] [varchar](50) NOT NULL,

[estado] [bit] NULL,

PRIMARY KEY CLUSTERED 

[idusuario] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,


ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY =
OFF) ON [PRIMARY]

) ON [PRIMARY]

GO

/****** Object:  Table [dbo].[venta]    Script Date: 22/06/2020 19:15:12 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[venta](

[idventa] [int] IDENTITY(1,1) NOT NULL,

[idcliente] [int] NOT NULL,

[idusuario] [int] NOT NULL,


[tipo_comprobante] [varchar](20) NOT NULL,

[serie_comprobante] [varchar](7) NULL,

[num_comprobante] [varchar](10) NOT NULL,

[fecha_hora] [datetime] NOT NULL,

[impuesto] [decimal](4, 2) NOT NULL,

[total] [decimal](11, 2) NOT NULL,

[estado] [varchar](20) NOT NULL,

PRIMARY KEY CLUSTERED 

[idventa] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,


ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY =
OFF) ON [PRIMARY]

) ON [PRIMARY]

GO

ALTER TABLE [dbo].[articulo] ADD  DEFAULT ((1)) FOR [estado]

GO

ALTER TABLE [dbo].[categoria] ADD  DEFAULT ((1)) FOR [estado]

GO

ALTER TABLE [dbo].[rol] ADD  DEFAULT ((1)) FOR [estado]

GO

ALTER TABLE [dbo].[usuario] ADD  DEFAULT ((1)) FOR [estado]

GO

ALTER TABLE [dbo].[articulo]  WITH CHECK ADD FOREIGN KEY([idcategoria])

REFERENCES [dbo].[categoria] ([idcategoria])

GO

ALTER TABLE [dbo].[detalle_ingreso]  WITH CHECK ADD FOREIGN KEY([idarticulo])


REFERENCES [dbo].[articulo] ([idarticulo])

GO

ALTER TABLE [dbo].[detalle_ingreso]  WITH CHECK ADD FOREIGN KEY([idingreso])

REFERENCES [dbo].[ingreso] ([idingreso])

ON DELETE CASCADE

GO

ALTER TABLE [dbo].[detalle_venta]  WITH CHECK ADD FOREIGN KEY([idarticulo])

REFERENCES [dbo].[articulo] ([idarticulo])

GO

ALTER TABLE [dbo].[detalle_venta]  WITH CHECK ADD FOREIGN KEY([idventa])

REFERENCES [dbo].[venta] ([idventa])

ON DELETE CASCADE

GO

ALTER TABLE [dbo].[ingreso]  WITH CHECK ADD FOREIGN KEY([idproveedor])

REFERENCES [dbo].[persona] ([idpersona])

GO

ALTER TABLE [dbo].[ingreso]  WITH CHECK ADD FOREIGN KEY([idusuario])

REFERENCES [dbo].[usuario] ([idusuario])

GO

ALTER TABLE [dbo].[usuario]  WITH CHECK ADD FOREIGN KEY([idrol])

REFERENCES [dbo].[rol] ([idrol])

GO

ALTER TABLE [dbo].[venta]  WITH CHECK ADD FOREIGN KEY([idcliente])

REFERENCES [dbo].[persona] ([idpersona])

GO

ALTER TABLE [dbo].[venta]  WITH CHECK ADD FOREIGN KEY([idusuario])


REFERENCES [dbo].[usuario] ([idusuario])

GO

REalizar un video subirlo a la plataforma de Youtube o GoogleDrive explicando y demostrando como utilizar las
funcionesy vistas.

Realizar dos trigger uno para update y otro para delete cuando se ejecutar sobre la tabla detalleventa.

tRIGGER QUE RECALCULA EL CAMPO TOTAL DE LA TABLA VENTA CUANDO SE EJECUTA UN INSERT EN DETALLE_VENTA
CREATE TRIGGER RECALCULAR_TOTAL
ON DETALLE_VENTA
AFTER INSERT
AS
DECLARE @IDVENTA INT
DECLARE @TOTALACTAULIZADO DECIMAL(11,2)
SET @IDVENTA = (SELECT IDVENTA FROM INSERTED)
SET @TOTALACTAULIZADO = (SELECT SUM(DV.SUBTOTAL)
FROM DETALLE_VENTA DV
WHERE DV.IDVENTA=@IDVENTA)
UPDATE VENTA SET TOTAL=@TOTALACTAULIZADO WHERE IDVENTA=@IDVENTA
Create trigger actualizardetalle_venta

On detalle_venta

For update as

Begin

Select * from deleted

Select * from inserted

end
Realizar dos trigger uno para update y otro para delete cuando se ejecutar sobre la tabla detalleventa.

- Realizar un cursor que elimine el historial de una persona ingresando el idpersona

--CURSORES

-- Permite recorrer fila tras fila

-- A continuacion se explica la estructura de un cursor

--1. Se declara la varible/s a recorrer. Estan deben ser del mismo tipo de dato q la consulta

DECLARE @NOM AS NVARCHAR(100)

DECLARE @CORREO AS NVARCHAR(50)

--2. Se declara el nombre del cursor y se vincula a la consulta a ejecutar

DECLARE PLANILLA CURSOR FOR

SELECT NOMBRE,EMAIL FROM PERSONA

--3. Se abre el cursos invocando el nombre del mismo

OPEN PLANILLA

--4. Se llama a la primera fila con sus respectivos valores


FETCH NEXT FROM PLANILLA INTO @NOM,@CORREO

--5. Inicia el bucle While

WHILE @@fetch_status = 0

BEGIN

PRINT 'Hola '+@NOM+ ' Como estas? tu correo es '+@CORREO

--Se pasa a la siguiente fila a recorrer

FETCH NEXT FROM PLANILLA INTO @NOM,@CORREO

END

--6. Se cierra el cursor

CLOSE PLANILLA

--7. Se desaloja al cursor

DEALLOCATE PLANILLA

[6:53 p. m., 26/6/2020] Ing Tito Romero: --Cursor que indica la ultima compra de un cliente
--1. Se declara la varible/s a recorrer. Estan deben ser del mismo tipo de dato q la consulta
DECLARE @ID AS INT
DECLARE @NOM AS NVARCHAR(100)
--2. Se declara el nombre del cursor y se vincula a la consulta(BASE) a ejecutar
DECLARE PLANILLA CURSOR FOR
SELECT P.IDPERSONA,P.NOMBRE
FROM PERSONA P
--3. Se abre el cursos invocando el nombre del mismo
OPEN PLANILLA
--4. Se llama a la primera fila con sus respectivos valores
FETCH NEXT FROM PLANILLA INTO @ID,@NOM
--5. Inicia el bucle While
WHILE @@fetch_status = 0
BEGIN
DECLARE @FECHA NVARCHAR(30)
DECLARE @TOTAL DECIMAL(11,2)
SET @FECHA = (SELECT TOP 1 V.FECHA_HORA
FROM VENTA V
WHERE V.IDCLIENTE=@ID
ORDER BY V.FECHA_HORA DESC)
SET @TOTAL = (SELECT TOP 1 V.TOTAL
FROM VENTA V
WHERE V.IDCLIENTE=@ID
ORDER BY V.FECHA_HORA DESC)
PRINT 'Hola '+@NOM+ ' tu ultima compra fue en '+@FECHA+' y su consumo fue de '+CAST(@TOTAL AS NVARCHAR)+'
Bs.'
--Se pasa a la siguiente fila a recorrer
FETCH NEXT FROM PLANILLA INTO @ID,@NOM
END
--6. Se cierra el cursor
CLOSE PLANILLA
--7. Se desaloja al cursor
DEALLOCATE PLANILLA

eliminar todo el historial de la persona 3

delete from detalle_venta where idventa=1005


delete from detalle_venta where idventa=1007
delete from venta where idventa=1005
delete from venta where idventa=1007
delete from persona where idpersona=3

Potrebbero piacerti anche