Sunteți pe pagina 1din 42

ANHANGUERA EDUCACIONAL

FACULDADE DE NEGCIOS DE BELO HORIZONTE

SISTEMAS DE INFORMAO

PROGRAMAO EM BANCO DE DADOS

ATIVIDADES PRTICAS SUPERVISIONADAS ATPS

Belo Horizonte, MG
2014, 2
BRUNO PETER RODRIGUES RA 1299791009
LCIO RAIMUNDO RA 1299488822

MARCELA MELO RA 1299480616


WASHINGTON FERNANDES RA 6820483180

ATIVIDADES PRTICAS SUPERVISIONADAS ATPS


Relatrio das Atividades Prticas Supervisionadas ATPS,
elaborado pelos alunos supra citados, do terceiro e quarto perodo
do curso de Sistemas de Informao da Faculdade Anhanguera de
Belo Horizonte, de acordo com as diretivas previamente
estabelecidas pela instituio, entregue ao professor de
Programao em Banco de Dados para avaliao e obteno de
crdito na matria.
Orientador: Fbio Storck

Belo Horizonte, MG
2
Cpia total ou parcial no autorizada.

2014,
LISTA DE FIGURAS
Figura 1: Modelo de Entidade e Relacionamento (Conceitual)................................................10
Figura 2: Modelo Relacional (Lgico)......................................................................................11
Figura 3: Dados da tabela 'Produto'..........................................................................................18
Figura 4: Dados da tabela 'Entrada'...........................................................................................19
Figura 5: Dados da tabela 'Sada'..............................................................................................19
Figura 6: Dados da tabela 'Caixa'..............................................................................................19
Figura 7: Dados da tabela 'Movimentao'...............................................................................20
Figura 8: Dados da tabela caixa aps atualizao.....................................................................24
Figura 9: Dados da tabela movimentao aps atualizao......................................................24
Figura 10: Comando Where na tabela 'Produto' em SQL Server..............................................25
Figura 11: Dados da tabela produto aps o 1 where................................................................25
Figura 12: Dados da tabela produto aps o 2 where................................................................25
Figura 13: Delete na tabela Produto..........................................................................................27
Figura 14: Delete na tabela Entrada..........................................................................................27
Figura 15: Delete na tabela Movimentao..............................................................................27

3
Cpia total ou parcial no autorizada.

LISTA DE TABELAS
Tabela 1: Listagem dos requisitos levantados.............................................................................9

4
Cpia total ou parcial no autorizada.

LISTA DE CDIGOS
Cdigo 1: Criao do Banco e das Tabelas em SQL Server 2012............................................13
Cdigo 2: Insero de dados na estrutura de Banco de Dados em SQL Server.......................18
Cdigo 3: Update nas tabelas 'Caixa' e 'Movimentao' em SQL Server.................................24
Cdigo 4: Delete em dados na estrutura do banco em SQL Server..........................................26
Cdigo 5: Procedure Movimentao de Entrada de Produtos..................................................28
Cdigo 6: Procedure Movimentao de Sada de Produtos......................................................29
Cdigo 7: Procedure Clculo dos valores de movimentao de caixa.....................................30
Cdigo 8: Registro da movimentao de sada de produtos.....................................................31
Cdigo 9: Trigger Alimentar 'Movimentao' ao Inserir..........................................................32
Cdigo 10: Calcular valores de caixa ao Inserir.......................................................................33
Cdigo 11: Calcular valores de caixa ao atualizar....................................................................33
Cdigo 12: Trigger Alimentar estoque ao inserir produto........................................................34
Cdigo 13:Trigger Alimentar estoque ao atualizar produto......................................................34
Cdigo 14: Trigger alimenta estoque ao deletar entrada de Produto........................................35
Cdigo 15: Trigger alimenta estoque ao dar sada no produto.................................................35
Cdigo 16: Alimenta estoque ao atualizar sada de produto.....................................................36
Cdigo 17: Alimenta estoque ao deletar sada de produto........................................................37

5
Cpia total ou parcial no autorizada.

SUMRIO

LISTA DE FIGURAS.................................................................................................................3
LISTA DE TABELAS.................................................................................................................4
LISTA DE CDIGOS.................................................................................................................5
1.

INTRODUO..................................................................................................................8

2.

BANCO DE DADOS.........................................................................................................9

3.

4.

2.1

Anlise de Requisitos...................................................................................................9

2.2

Projeto Conceitual......................................................................................................10

2.3

Projeto Lgico............................................................................................................11

2.4

Projeto Fsico..............................................................................................................12

ESTRUTURA DO BANCO DE DADOS........................................................................14


3.1

Insert...........................................................................................................................14

3.2

Update........................................................................................................................20

3.3

Where.........................................................................................................................24

3.4

Delete.........................................................................................................................26

CDIGOS DO BANCO DE DADOS..............................................................................28


4.1

Procedures..................................................................................................................28

4.1.1

Movimentao de Estoque na Entrada de Produtos............................................28

4.1.2

Movimentao de Estoque na Sada de Produtos...............................................29

4.1.3

Clculo dos Valores para Movimentao de Caixa.............................................30

4.1.4

Registro de Movimentao de Sada de Produtos...............................................31

4.2

Triggers......................................................................................................................32

4.2.1

Alimentar Movimentao ao Inserir dados em Caixa.........................................32

4.2.2

Calcular Valores de Caixa ao Inserir Novos Dados............................................32


6
Cpia total ou parcial no autorizada.

4.2.3

Calcular Valores de Caixa ao Atualizar dados....................................................33

4.2.4

Alimenta Estoque ao Inserir Produto..................................................................34

4.2.5

Alimenta Estoque ao Atualizar Entrada de Produto...........................................34

4.2.6

Alimenta Estoque ao Deletar Entrada de Produto..............................................35

4.2.7

Alimenta Estoque ao dar Sada no Produto........................................................35

4.2.8

Alimenta Estoque ao Atualizar Sada de Produto...............................................36

4.2.9

Alimenta Estoque ao Deletar Sada de Produto..................................................37

5.

CONCLUSO..................................................................................................................38

6.

REFERNCIAS................................................................................................................39

7
Cpia total ou parcial no autorizada.

1. INTRODUO
Com a crescente tecnologia, quem no se adapta integrao de dados utilizando os
sistemas de informao acaba perdendo mercado para a concorrncia, por isso importante
investir na coleta, armazenamento, segurana e minerao dos dados objetivando a obteno de
informaes para melhor aplicar em seu negcio.
No contexto da tecnologia, o gerenciamento de banco de dados ganha destaque primordial
por ser responsvel direto no tratamento de dados e informaes recorrentes da programao e da
soluo aprimorada de lida com tecnologia e negociao direta.
Uma grande padaria de SP, pertinente essa situao, disps de investimento para uma
soluo de banco de dados com a finalidade de garantir melhores resultados de gerenciamento e
controle de seu fluxo de caixa e de seu estoque de produtos para que no lhe falte mercadorias e
nem haja estocamento desnecessrio.
Este relatrio tem como objetivo mostrar os passos principais da construo do banco de
dados e da programao para automatizar os clculos financeiros envolvidos, minimizando o
trabalho e, consequentemente, as falhas por erros humanos.

8
Cpia total ou parcial no autorizada.

2. BANCO DE DADOS
2.1 Anlise de Requisitos
De acordo com a aderncia com o cliente, o sistema dever ser capaz de controlar a
movimentao de compra e venda registrando as operaes pertinentes ao cadastro e
movimentao de estoque, bem como custo de produtos e lucro real obtido no negcio. Ainda

Mdulos:

Tabelas:

segundo tal levantamento, ficou destacado as seguintes necessidades:

Produto

{Cdigo do Produto, Nome do Produto, Unidade, Preo de Custo, Preo de Venda}

Entrada

{Cdigo da Entrada, Cdigo do Produto, Quantidade, Data Entrada, Hora Entrada}

Sada

{Cdigo da Sada, Cdigo do Produto, Quantidade, Data Sada, Hora Sada}

Caixa

{Cdigo do Caixa, Cdigo da Sada, Valor Da Venda}

Movimentao

{Cdigo da Movimentao, Cdigo do Caixa, Data Movimentao, Hora Movimentao, Valor Recebido}

Compra de Produtos

Cadastro de Produtos / Entrada no Estoque

Venda de Produtos

Venda de Produtos / Sada no estoque

Frente de Caixa

Operao de venda

Estoque

Movimentao de estoque (entrada - Sada) [Relatrio de movimentao custo de estoque]

Movimentao Gerencial Relatrio com detalhes da movimentao.


Tabela 1: Listagem dos requisitos levantados

9
Cpia total ou parcial no autorizada.

2.2 Projeto Conceitual

Figura 1: Modelo de Entidade e Relacionamento (Conceitual)

10
Cpia total ou parcial no autorizada.

2.3 Projeto Lgico

Figura 2: Modelo Relacional (Lgico)

11
Cpia total ou parcial no autorizada.

2.4 Projeto Fsico


CREATE database Padaria_ATPSBD
GO
USE [Padaria_ATPSBD]
GO
CREATE TABLE [dbo].[Produto](
[codProduto] [int] IDENTITY(1,1) NOT NULL,
[nomeProduto] [nvarchar](50) NOT NULL,
[unidade] [nchar](3) NOT NULL,
[precoCusto] [float] NOT NULL,
[precoVenda] [float] NOT NULL,
CONSTRAINT [PK_Produto] PRIMARY KEY CLUSTERED
(
[codProduto] ASC
)
)
GO
CREATE TABLE [dbo].[Entrada](
[codEntrada] [int] IDENTITY(1,1) NOT NULL,
[codProduto] [int] NOT NULL,
[quantidade] [int] NOT NULL,
[dataEntrada] [date] NOT NULL,
[horaEntrada] [time](7) NOT NULL,
CONSTRAINT [PK_Entrada] PRIMARY KEY CLUSTERED
(
[codEntrada] ASC
),
CONSTRAINT [FK_Entrada_Entrada] FOREIGN KEY([codProduto])
REFERENCES [dbo].[Produto] ([codProduto])
)
GO
CREATE TABLE [dbo].[Saida](
[codSaida] [int] IDENTITY(1,1) NOT NULL,
[codProduto] [int] NOT NULL,
[quantidade] [int] NOT NULL,
[dataSaida] [date] NOT NULL,
[horaSaida] [time](7) NOT NULL,
CONSTRAINT [PK_Saida] PRIMARY KEY CLUSTERED
(
[codSaida] ASC
),
CONSTRAINT [FK_Saida_Produto] FOREIGN KEY([codProduto])
REFERENCES [dbo].[Produto] ([codProduto])
)
GO
CREATE TABLE [dbo].[Caixa](
[codCaixa] [int] IDENTITY(1,1) NOT NULL,
[codSaida] [int] NOT NULL,
[valorVenda] [float] NOT NULL,
CONSTRAINT [PK_Caixa] PRIMARY KEY CLUSTERED

12
Cpia total ou parcial no autorizada.

(
[codCaixa] ASC
),
CONSTRAINT [FK_Caixa_Saida] FOREIGN KEY([codSaida])
REFERENCES [dbo].[Saida] ([codSaida])
)
GO
CREATE TABLE [dbo].[Movimentacao](
[codMovimentacao] [int] IDENTITY(1,1) NOT NULL,
[codCaixa] [int] NOT NULL,
[dataMovimentacao] [date] NOT NULL,
[horaMovimentacao] [time](7) NOT NULL,
[valorRecebido] [float] NOT NULL,
CONSTRAINT [PK_Movimentacao] PRIMARY KEY CLUSTERED
(
[codMovimentacao] ASC
),
CONSTRAINT [FK_Movimentacao_Caixa] FOREIGN KEY([codCaixa])
REFERENCES [dbo].[Caixa] ([codCaixa])
)
GO
Cdigo 1: Criao do Banco e das Tabelas em SQL Server 2012

13
Cpia total ou parcial no autorizada.

3. ESTRUTURA DO BANCO DE DADOS


De acordo com a estrutura apresentada anteriormente, baseado nas tabelas criadas,
utilizamos os comandos insert, update, where e delete para testar instrues e funcionalidades do
banco de dados.
3.1 Insert
USE [Padaria_ATPSBD]
GO
/* Insert na tabela PRODUTO */
INSERT INTO [dbo].Produto
VALUES ('Po Frances', 'kg', 10.55, 19.90)
GO
INSERT INTO [dbo].Produto
VALUES ('Po Doce', 'kg', 11.20, 21.90)
GO
INSERT INTO [dbo].Produto
VALUES ('Po Especial', 'kg', 14.30, 29.90)
GO
INSERT INTO [dbo].Produto
VALUES ('Biscoito de Polvilho', 'pct', 1.55, 3.90)
GO
INSERT INTO [dbo].Produto
VALUES ('Leite Itamb', 'l', 0.90, 2.98)
GO
INSERT INTO [dbo].Produto
VALUES ('Manteiga Itamb', 'kg', 4.00, 7.90)
GO
INSERT INTO [dbo].Produto
VALUES ('Refrigerante Coca-Cola', 'pet', 2.05, 4.85)
GO
INSERT INTO [dbo].Produto
VALUES ('Iogurt Itamb', 'uni', 0.70, 3.10)
GO
INSERT INTO [dbo].Produto
VALUES ('Bala Ice Kiss', 'uni', 0.2, 0.8)
GO
INSERT INTO [dbo].Produto
VALUES ('gua Mineral', 'uni', 1.00, 2.30)
GO

14
Cpia total ou parcial no autorizada.

SELECT *
FROM [dbo].Produto
ORDER BY [nomeProduto]
GO
/* Insert tabela ENTRADA */
INSERT INTO [dbo].Entrada
VALUES (1, 200, '02/10/2014', '16:44:00')
GO
INSERT INTO [dbo].Entrada
VALUES (2, 200, '02/10/2014', '16:45:00')
GO
INSERT INTO [dbo].Entrada
VALUES (3, 100, '02/10/2014', '16:47:00')
GO
INSERT INTO [dbo].Entrada
VALUES (4, 20, '02/10/2014', '16:48:00')
GO
INSERT INTO [dbo].Entrada
VALUES (5, 30, '02/10/2014', '16:48:00')
GO
INSERT INTO [dbo].Entrada
VALUES (6, 20, '02/10/2014', '16:49:00')
GO
INSERT INTO [dbo].Entrada
VALUES (7, 20, '02/10/2014', '16:50:00')
GO
INSERT INTO [dbo].Entrada
VALUES (8, 20, '02/10/2014', '16:52:00')
GO
INSERT INTO [dbo].Entrada
VALUES (9, 200, '02/10/2014', '16:53:00')
GO
INSERT INTO [dbo].Entrada
VALUES (10, 50, '02/10/2014', '16:55:00')
GO
SELECT *
FROM [dbo].Entrada
GO
/* Insert tabela SAIDA*/
INSERT INTO [dbo].Saida
VALUES (6, 1, '03/10/2014', '08:03:01')
GO

15
Cpia total ou parcial no autorizada.

INSERT INTO [dbo].Saida


VALUES (1, 3, '03/10/2014', '08:03:01')
GO
INSERT INTO [dbo].Saida
VALUES (1, 2, '03/10/2014', '08:05:00')
GO
INSERT INTO [dbo].Saida
VALUES (2, 1, '03/10/2014', '08:05:00')
GO
INSERT INTO [dbo].Saida
VALUES (3, 2, '03/10/2014', '08:06:12')
GO
INSERT INTO [dbo].Saida
VALUES (1, 5, '03/10/2014', '08:10:00')
GO
INSERT INTO [dbo].Saida
VALUES (9, 3, '03/10/2014', '08:10:00')
GO
INSERT INTO [dbo].Saida
VALUES (1, 4, '03/10/2014', '08:13:01')
GO
INSERT INTO [dbo].Saida
VALUES (6, 1, '03/10/2014', '08:13:01')
GO
INSERT INTO [dbo].Saida
VALUES (4, 3, '03/10/2014', '08:20:00')
GO
INSERT INTO [dbo].Saida
VALUES (8, 3, '03/10/2014', '08:20:00')
GO
INSERT INTO [dbo].Saida
VALUES (2, 10, '03/10/2014', '08:27:01')
GO
INSERT INTO [dbo].Saida
VALUES (7, 1, '03/10/2014', '08:27:01')
GO
SELECT *
FROM [dbo].Saida
GO
SELECT
[dbo].Produto.codProduto,
[dbo].Saida.quantidade, [dbo].Saida.codSaida
FROM [dbo].Produto, [dbo].Saida

[dbo].Produto.precoVenda,

16
Cpia total ou parcial no autorizada.

WHERE [dbo].Saida.codProduto = [dbo].Produto.codProduto


GO
/* Insert na tabela CAIXA */
INSERT INTO [dbo].Caixa
VALUES (1, 0)
GO
INSERT INTO [dbo].Caixa
VALUES (2, 0)
GO
INSERT INTO [dbo].Caixa
VALUES (3, 0)
GO
INSERT INTO [dbo].Caixa
VALUES (4, 0)
GO
INSERT INTO [dbo].Caixa
VALUES (5, 0)
GO
INSERT INTO [dbo].Caixa
VALUES (6, 0)
GO
INSERT INTO [dbo].Caixa
VALUES (7, 0)
GO
INSERT INTO [dbo].Caixa
VALUES (8, 0)
GO
INSERT INTO [dbo].Caixa
VALUES (9, 0)
GO
INSERT INTO [dbo].Caixa
VALUES (10, 0)
GO
INSERT INTO [dbo].Caixa
VALUES (11, 0)
GO
INSERT INTO [dbo].Caixa
VALUES (12, 0)
GO
SELECT *
FROM [dbo].Caixa
GO

17
Cpia total ou parcial no autorizada.

/* Insert tabela MOVIMENTAO */


INSERT INTO [dbo].Movimentacao
VALUES(1, '03/10/2014', '09:00:00', 0)
GO
INSERT INTO [dbo].Movimentacao
VALUES(2, '03/10/2014', '09:00:00', 0)
GO
INSERT INTO [dbo].Movimentacao
VALUES(3, '03/10/2014', '09:00:00', 0)
GO
INSERT INTO [dbo].Movimentacao
VALUES(4, '03/10/2014', '09:00:00', 0)
GO
INSERT INTO [dbo].Movimentacao
VALUES(5, '03/10/2014', '09:00:00', 0)
GO
INSERT INTO [dbo].Movimentacao
VALUES(6, '03/10/2014', '09:00:00', 0)
GO
INSERT INTO [dbo].Movimentacao
VALUES(7, '03/10/2014', '09:00:00', 0)
GO
INSERT INTO [dbo].Movimentacao
VALUES(8, '03/10/2014', '09:00:00', 0)
GO
INSERT INTO [dbo].Movimentacao
VALUES(9, '03/10/2014', '09:00:00', 0)
GO
INSERT INTO [dbo].Movimentacao
VALUES(10, '03/10/2014', '09:00:00', 0)
GO
INSERT INTO [dbo].Movimentacao
VALUES(11, '03/10/2014', '09:00:00', 0)
GO
INSERT INTO [dbo].Movimentacao
VALUES(12, '03/10/2014', '09:00:00', 0)
GO
SELECT *
FROM [dbo].Movimentacao
GO
Cdigo 2: Insero de dados na estrutura de Banco de Dados em SQL Server

18
Cpia total ou parcial no autorizada.

Figura 3: Dados da tabela 'Produto'

Figura 4: Dados da tabela 'Entrada'

Figura 5: Dados da tabela 'Sada'

19
Cpia total ou parcial no autorizada.

Figura 6: Dados da tabela 'Caixa'

Figura 7: Dados da tabela 'Movimentao'

3.2 Update
USE [Padaria_ATPSBD]
GO
/* verificando os dados da tabela 'Saida' */
SELECT *
FROM [dbo].Saida
GO
/* verificando os dados da tabela 'Caixa' */
SELECT *
FROM [dbo].Caixa

20
Cpia total ou parcial no autorizada.

GO
/* Update 'valorVenda' tabela 'Caixa' */
UPDATE [dbo].Caixa
SET valorVenda = ((SELECT [dbo].Produto.precoVenda FROM [dbo].Produto,
[dbo].Saida WHERE [dbo].Produto.codProduto = [dbo].Saida.codProduto AND
[dbo].Saida.codSaida = 1) *
(SELECT
[dbo].Saida.quantidade
FROM
[dbo].Saida,
[dbo].Produto
WHERE
[dbo].Produto.codProduto
=
[dbo].Saida.codProduto AND [dbo].Saida.codSaida = 1))
WHERE codSaida = 1
GO
UPDATE [dbo].Caixa
SET valorVenda = ((SELECT [dbo].Produto.precoVenda FROM [dbo].Produto,
[dbo].Saida WHERE [dbo].Produto.codProduto = [dbo].Saida.codProduto AND
[dbo].Saida.codSaida = 2) *
(SELECT
[dbo].Saida.quantidade
FROM
[dbo].Saida,
[dbo].Produto
WHERE
[dbo].Produto.codProduto
=
[dbo].Saida.codProduto AND [dbo].Saida.codSaida = 2))
WHERE codSaida = 2
GO
UPDATE [dbo].Caixa
SET valorVenda = ((SELECT [dbo].Produto.precoVenda FROM [dbo].Produto,
[dbo].Saida WHERE [dbo].Produto.codProduto = [dbo].Saida.codProduto AND
[dbo].Saida.codSaida = 3) *
(SELECT
[dbo].Saida.quantidade
FROM
[dbo].Saida,
[dbo].Produto
WHERE
[dbo].Produto.codProduto
=
[dbo].Saida.codProduto AND [dbo].Saida.codSaida = 3))
WHERE codSaida = 3
GO
UPDATE [dbo].Caixa
SET valorVenda = ((SELECT [dbo].Produto.precoVenda FROM [dbo].Produto,
[dbo].Saida WHERE [dbo].Produto.codProduto = [dbo].Saida.codProduto AND
[dbo].Saida.codSaida = 4) *
(SELECT
[dbo].Saida.quantidade
FROM
[dbo].Saida,
[dbo].Produto
WHERE
[dbo].Produto.codProduto
=
[dbo].Saida.codProduto AND [dbo].Saida.codSaida = 4))
WHERE codSaida = 4
GO
UPDATE [dbo].Caixa
SET valorVenda = ((SELECT [dbo].Produto.precoVenda FROM [dbo].Produto,
[dbo].Saida WHERE [dbo].Produto.codProduto = [dbo].Saida.codProduto AND
[dbo].Saida.codSaida = 5) *
(SELECT
[dbo].Saida.quantidade
FROM
[dbo].Saida,
[dbo].Produto
WHERE
[dbo].Produto.codProduto
=
[dbo].Saida.codProduto AND [dbo].Saida.codSaida = 5))
WHERE codSaida = 5
GO
UPDATE [dbo].Caixa
SET valorVenda = ((SELECT

[dbo].Produto.precoVenda

FROM

[dbo].Produto,

21
Cpia total ou parcial no autorizada.

[dbo].Saida WHERE [dbo].Produto.codProduto = [dbo].Saida.codProduto AND


[dbo].Saida.codSaida = 6) *
(SELECT
[dbo].Saida.quantidade
FROM
[dbo].Saida,
[dbo].Produto
WHERE
[dbo].Produto.codProduto
=
[dbo].Saida.codProduto AND [dbo].Saida.codSaida = 6))
WHERE codSaida = 6
GO
UPDATE [dbo].Caixa
SET valorVenda = ((SELECT [dbo].Produto.precoVenda FROM [dbo].Produto,
[dbo].Saida WHERE [dbo].Produto.codProduto = [dbo].Saida.codProduto AND
[dbo].Saida.codSaida = 7) *
(SELECT
[dbo].Saida.quantidade
FROM
[dbo].Saida,
[dbo].Produto
WHERE
[dbo].Produto.codProduto
=
[dbo].Saida.codProduto AND [dbo].Saida.codSaida = 7))
WHERE codSaida = 7
GO
UPDATE [dbo].Caixa
SET valorVenda = ((SELECT [dbo].Produto.precoVenda FROM [dbo].Produto,
[dbo].Saida WHERE [dbo].Produto.codProduto = [dbo].Saida.codProduto AND
[dbo].Saida.codSaida = 8) *
(SELECT
[dbo].Saida.quantidade
FROM
[dbo].Saida,
[dbo].Produto
WHERE
[dbo].Produto.codProduto
=
[dbo].Saida.codProduto AND [dbo].Saida.codSaida = 8))
WHERE codSaida = 8
GO
UPDATE [dbo].Caixa
SET valorVenda = ((SELECT [dbo].Produto.precoVenda FROM [dbo].Produto,
[dbo].Saida WHERE [dbo].Produto.codProduto = [dbo].Saida.codProduto AND
[dbo].Saida.codSaida = 9) *
(SELECT
[dbo].Saida.quantidade
FROM
[dbo].Saida,
[dbo].Produto
WHERE
[dbo].Produto.codProduto
=
[dbo].Saida.codProduto AND [dbo].Saida.codSaida = 9))
WHERE codSaida = 9
GO
UPDATE [dbo].Caixa
SET valorVenda = ((SELECT [dbo].Produto.precoVenda FROM [dbo].Produto,
[dbo].Saida WHERE [dbo].Produto.codProduto = [dbo].Saida.codProduto AND
[dbo].Saida.codSaida = 10) *
(SELECT
[dbo].Saida.quantidade
FROM
[dbo].Saida,
[dbo].Produto
WHERE
[dbo].Produto.codProduto
=
[dbo].Saida.codProduto AND [dbo].Saida.codSaida = 10))
WHERE codSaida = 10
GO
UPDATE [dbo].Caixa
SET valorVenda = ((SELECT [dbo].Produto.precoVenda FROM [dbo].Produto,
[dbo].Saida WHERE [dbo].Produto.codProduto = [dbo].Saida.codProduto AND
[dbo].Saida.codSaida = 11) *
(SELECT
[dbo].Saida.quantidade
FROM
[dbo].Saida,
[dbo].Produto
WHERE
[dbo].Produto.codProduto
=
[dbo].Saida.codProduto AND [dbo].Saida.codSaida = 11))
WHERE codSaida = 11

22
Cpia total ou parcial no autorizada.

GO
UPDATE [dbo].Caixa
SET valorVenda = ((SELECT [dbo].Produto.precoVenda FROM [dbo].Produto,
[dbo].Saida WHERE [dbo].Produto.codProduto = [dbo].Saida.codProduto AND
[dbo].Saida.codSaida = 12) *
(SELECT
[dbo].Saida.quantidade
FROM
[dbo].Saida,
[dbo].Produto
WHERE
[dbo].Produto.codProduto
=
[dbo].Saida.codProduto AND [dbo].Saida.codSaida = 12))
WHERE codSaida = 12
GO
/* Verificando a tabela 'Movimentao' */
SELECT *
FROM [dbo].Movimentacao
ORDER BY codCaixa
GO
/* Update tabela 'Movimentao' */
UPDATE [dbo].Movimentacao
SET valorRecebido = (SELECT [dbo].Caixa.valorVenda FROM [dbo].Caixa WHERE
codCaixa = 1)+2.1
WHERE codCaixa = 1
GO
UPDATE [dbo].Movimentacao
SET valorRecebido = (SELECT [dbo].Caixa.valorVenda FROM [dbo].Caixa WHERE
codCaixa = 2)+19.3
WHERE codCaixa = 2
GO
UPDATE [dbo].Movimentacao
SET valorRecebido = (SELECT [dbo].Caixa.valorVenda FROM [dbo].Caixa WHERE
codCaixa = 3)+20.2
WHERE codCaixa = 3
GO
UPDATE [dbo].Movimentacao
SET valorRecebido = (SELECT [dbo].Caixa.valorVenda FROM [dbo].Caixa WHERE
codCaixa = 4)+20.1
WHERE codCaixa = 4
GO
UPDATE [dbo].Movimentacao
SET valorRecebido = (SELECT [dbo].Caixa.valorVenda FROM [dbo].Caixa WHERE
codCaixa = 5)+20.2
WHERE codCaixa = 5
GO
UPDATE [dbo].Movimentacao
SET valorRecebido = (SELECT [dbo].Caixa.valorVenda FROM [dbo].Caixa WHERE
codCaixa = 6)+20.5
WHERE codCaixa = 6
GO

23
Cpia total ou parcial no autorizada.

UPDATE [dbo].Movimentacao
SET valorRecebido = (SELECT [dbo].Caixa.valorVenda FROM [dbo].Caixa WHERE
codCaixa = 7)+20.6
WHERE codCaixa = 7
GO
UPDATE [dbo].Movimentacao
SET valorRecebido = (SELECT [dbo].Caixa.valorVenda FROM [dbo].Caixa WHERE
codCaixa = 8)+20.4
WHERE codCaixa = 8
GO
UPDATE [dbo].Movimentacao
SET valorRecebido = (SELECT [dbo].Caixa.valorVenda FROM [dbo].Caixa WHERE
codCaixa = 9)+20.1
WHERE codCaixa = 9
GO
UPDATE [dbo].Movimentacao
SET valorRecebido = (SELECT [dbo].Caixa.valorVenda FROM [dbo].Caixa WHERE
codCaixa = 10)+19.3
WHERE codCaixa = 10
GO
UPDATE [dbo].Movimentacao
SET valorRecebido = (SELECT [dbo].Caixa.valorVenda FROM [dbo].Caixa WHERE
codCaixa = 11)+19.7
WHERE codCaixa = 11
GO
UPDATE [dbo].Movimentacao
SET valorRecebido = (SELECT [dbo].Caixa.valorVenda FROM [dbo].Caixa WHERE
codCaixa = 12)+20
WHERE codCaixa = 12
GO
Cdigo 3: Update nas tabelas 'Caixa' e 'Movimentao' em SQL Server

24
Cpia total ou parcial no autorizada.

Figura 8: Dados da tabela caixa aps atualizao

Figura 9: Dados da tabela movimentao aps atualizao

3.3 Where
USE [Padaria_ATPSBD]
GO
/* Where na tabela produto */
SELECT [dbo].Produto.precoVenda
FROM [dbo].Produto
WHERE [dbo].Produto.precoVenda > 20.90;

25
Cpia total ou parcial no autorizada.

GO
SELECT [dbo].Produto.codProduto
FROM [dbo].Produto
WHERE [dbo].Produto.codProduto >= 90;
GO
Figura 10: Comando Where na tabela 'Produto' em SQL Server

Figura 11: Dados da tabela produto aps o 1 where

26
Cpia total ou parcial no autorizada.

Figura 12: Dados da tabela produto aps o 2 where

3.4 Delete
USE [Padaria_ATPSBD]
GO
/* delete na tabela produto */
delete
from dbo.Produto
where codProduto = 5
delete
from dbo.Produto
where codProduto = 10
select *
from dbo.Produto
/* delete na tabela entrada */
delete
from dbo.entrada
where codProduto = 2
delete
from dbo.entrada
where codProduto = 5
delete
from dbo.entrada
where codProduto = 8

27
Cpia total ou parcial no autorizada.

delete
from dbo.entrada
where codProduto = 10
SELECT *
FROM [dbo].Entrada
GO
/* delete na tabela movimentaao */
delete
from dbo.movimentacao
where codMovimentacao = 1
delete
from dbo.movimentacao
where codMovimentacao = 12
SELECT *
FROM [dbo].movimentacao
GO
Cdigo 4: Delete em dados na estrutura do banco em SQL Server

Figura 13: Delete na tabela Produto

28
Cpia total ou parcial no autorizada.

Figura 14: Delete na tabela Entrada

Figura 15: Delete na tabela Movimentao

29
Cpia total ou parcial no autorizada.

4. CDIGOS DO BANCO DE DADOS


4.1 Procedures
Procedure uma coleo de comandos em SQL para dispensamento de Banco de dados.
Suas principais funes so o encapsulamento de tarefas repetitivas, reduo do trfego na rede,
melhoria de performance, segurana e integridade dos dados.
Um procedure aceita parmetros de entrada e retorna um valor de status indicando falha
ou aceitao da instruo, sendo executada excepcionalmente no servidor, garantindo alta
disponibilidade de processamento.
4.1.1

Movimentao de Estoque na Entrada de Produtos

USE [PadariaBD]
GO
/****** Object: StoredProcedure [dbo].[sp_Estoque_Entrada] Script Date: 18/11/2014
20:13:07 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[sp_Estoque_Entrada](@idProduto INT, @idEntrada INT)
AS
BEGIN
DECLARE @cont INT;
DECLARE @quantEntrada INT;
SELECT @cont=COUNT(*) FROM PadariaBD.dbo.Estoque WHERE IdProduto =
@idProduto
SELECT @quantEntrada=Quantidade FROM PadariaBD.dbo.Entrada WHERE
IdEntrada = @idEntrada;
IF @cont > 0
UPDATE PadariaBD.dbo.Estoque SET Quantidade = Quantidade +
@quantEntrada WHERE IdProduto = @idProduto
ELSE
INSERT INTO PadariaBD.dbo.Estoque(
IdProduto,
Quantidade
)
VALUES(
@idProduto,
@quantEntrada
)
END
Cdigo 5: Procedure Movimentao de Entrada de Produtos

30
Cpia total ou parcial no autorizada.

4.1.2

Movimentao de Estoque na Sada de Produtos

USE [PadariaBD]
GO
/****** Object: StoredProcedure [dbo].[sp_Estoque_Saida] Script Date: 18/11/2014
20:22:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[sp_Estoque_Saida](@idProduto INT, @idSaida INT)
AS
BEGIN
DECLARE @cont INT;
DECLARE @quantSaida INT;
SELECT @cont=COUNT(*) FROM PadariaBD.dbo.Estoque WHERE IdProduto =
@idProduto
SELECT @quantSaida=Quantidade FROM PadariaBD.dbo.Saida WHERE IdSaida =
@idSaida;
IF @cont > 0
UPDATE PadariaBD.dbo.Estoque SET Quantidade = Quantidade @quantSaida WHERE IdProduto = @idProduto
ELSE
INSERT INTO PadariaBD.dbo.Estoque(
IdProduto,
Quantidade
)
VALUES(
@idProduto,
@quantSaida
)
END
Cdigo 6: Procedure Movimentao de Sada de Produtos

31
Cpia total ou parcial no autorizada.

4.1.3

Clculo dos Valores para Movimentao de Caixa

USE [PadariaBD]
GO
/****** Object: StoredProcedure [dbo].[sp_ValoresCaixa] Script Date: 18/11/2014 20:23:57
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[sp_ValoresCaixa](@idProduto INT, @idSaida INT, @idCaixa INT)
AS
BEGIN
DECLARE @valorTotal NUMERIC(5,2)
DECLARE @troco NUMERIC(5,2)
DECLARE @valorProduto NUMERIC(5,2)
DECLARE @valorRecebido NUMERIC(5,2)
DECLARE @quantidade INT
SELECT @valorProduto=PrecoVenda FROM Produto WHERE IdProduto=@idProduto
SELECT @quantidade=Quantidade FROM Saida WHERE IdSaida=@idSaida
SELECT @valorRecebido=ValorRecebido FROM Caixa WHERE IdCaixa=@idCaixa
SET @valorTotal=@valorProduto * @quantidade
SET @troco=@valorRecebido - @valorTotal
INSERT INTO Caixa(
IdSaida,
ValorRecebido,
Troco,
ValorTotal
)
VALUES(
@idSaida,
@valorRecebido,
@troco,
@valorTotal
)
END
Cdigo 7: Procedure Clculo dos valores de movimentao de caixa

32
Cpia total ou parcial no autorizada.

4.1.4

Registro de Movimentao de Sada de Produtos

USE [PadariaBD]
GO
/****** Object: StoredProcedure [dbo].[sp_Movimentacao] Script Date: 18/11/2014
20:27:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[sp_Movimentacao](@id_produto INT, @id_Caixa INT)
AS
BEGIN
DECLARE @numVenda INT;
DECLARE @nomeProduto VARCHAR(50);
DECLARE @data DATETIME;
DECLARE @quant_Estoque INT;
DECLARE @situacaoEstoque VARCHAR(50);
DECLARE @estoquemax INT;
DECLARE @estoquemin INT;
SELECT @numVenda= IdSaida FROM PadariaBD.dbo.Caixa WHERE IdCaixa =
@id_Caixa;
SELECT @nomeProduto= NomeProduto FROM PadariaBD.dbo.Produto WHERE
IdProduto = @id_produto;
SELECT @data = SYSDATETIME();
SELECT @quant_Estoque= Quantidade FROM PadariaBD.dbo.Estoque WHERE
IdProduto = @id_produto;
SELECT @estoquemax=EstoqueMaximo, @estoquemin=EstoqueMinimo FROM
Produto WHERE IdProduto = @id_produto;
IF @quant_Estoque >= @estoquemax
SELECT @situacaoEstoque = ' ESTOQUE ALTO ';
ELSE
IF @quant_Estoque <= @estoquemin
SELECT @situacaoEstoque = ' ESTOQUE BAIXO ';
ELSE
SELECT @situacaoEstoque = 'VERIFIQUE O ESTOQUE';
INSERT INTO PadariaBD.dbo.Movimentacao(
NumeroVenda,
Produto,
Estoque,
DataMovimentacao,
IdProduto,
SituacaoEstoque
)
VALUES(
@numVenda,
@nomeProduto,
@quant_Estoque,
@data,
@id_produto,
@situacaoestoque
)

33
Cpia total ou parcial no autorizada.

END
Cdigo 8: Registro da movimentao de sada de produtos

34
Cpia total ou parcial no autorizada.

4.2 Triggers
Trigger um bloco de cdigo que executa uma tarefa sempre que um evento associado
ocorrer. Sua principal utilizao, alm da automatizao de funes e procedimentos, manter a
consistncia dos dados ou propagar alteraes em um determinado dado de uma tabela para outra.
4.2.1

Alimentar Movimentao ao Inserir dados em Caixa

USE [PadariaBD]
GO
/****** Object: Trigger [dbo].[TGR_UpdateMovimentacao]
20:41:07 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[TGR_UpdateMovimentacao]
ON [dbo].[Caixa]
BEFORE INSERT
AS
BEGIN
DECLARE @IdProduto INT;
DECLARE @IdCaixa INT;

Script Date: 18/11/2014

SELECT @IdProduto=IdProduto FROM Saida, inserted WHERE Saida.IdSaida =


inserted.IdSaida
SELECT @IdCaixa=IdCaixa FROM inserted
END

EXECUTE sp_Movimentacao @IdProduto, @IdCaixa

Cdigo 9: Trigger Alimentar 'Movimentao' ao Inserir

4.2.2

Calcular Valores de Caixa ao Inserir Novos Dados

USE [PadariaBD]
GO
/****** Object: Trigger [dbo].[TGR_UpdateValores_FI]
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[TGR_UpdateValores_FI]
ON [dbo].[Caixa]
FOR INSERT
AS
BEGIN
DECLARE @idproduto INT
DECLARE @idsaida INT
DECLARE @idcaixa INT

Script Date: 18/11/2014 20:46:35

35
Cpia total ou parcial no autorizada.

SELECT @idsaida=IdSaida FROM inserted


SELECT @idcaixa=IdCaixa FROM inserted
SELECT @idproduto=IdProduto FROM Saida, inserted WHERE Saida.IdSaida =
inserted.IdSaida
EXECUTE sp_ValoresCaixa @idproduto, @idsaida, @idcaixa
END
Cdigo 10: Calcular valores de caixa ao Inserir

4.2.3

Calcular Valores de Caixa ao Atualizar dados

USE [PadariaBD]
GO
/****** Object: Trigger [dbo].[TGR_UpdateValores_FU]
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[TGR_UpdateValores_FU]
ON [dbo].[Caixa]
FOR UPDATE
AS
BEGIN
DECLARE @idproduto INT
DECLARE @idsaida INT
DECLARE @idcaixa INT

Script Date: 18/11/2014 20:51:08

SELECT @idsaida=IdSaida FROM inserted


SELECT @idcaixa=IdCaixa FROM inserted
SELECT @idproduto=IdProduto FROM Saida, inserted WHERE Saida.IdSaida =
inserted.IdSaida
EXECUTE sp_ValoresCaixa @idproduto, @idsaida, @idcaixa
END
Cdigo 11: Calcular valores de caixa ao atualizar

36
Cpia total ou parcial no autorizada.

4.2.4

Alimenta Estoque ao Inserir Produto

USE [PadariaBD]
GO
/****** Object: Trigger [dbo].[TGR_EstoqueEntrada_AI] Script Date: 18/11/2014 21:02:06
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- Batch submitted through debugger: Trigger_EstoqueEntrada_AI.sql|0|0|
C:\Users\Marcela\Documents\SQL Server Management
Studio\PadariaBD\Trigger_EstoqueEntrada_AI.sql
ALTER TRIGGER [dbo].[TGR_EstoqueEntrada_AI]
ON [dbo].[Entrada]
AFTER INSERT
AS
BEGIN
DECLARE @idproduto INT
DECLARE @identrada INT
SELECT @identrada=IdEntrada FROM inserted
SELECT @idproduto=IdProduto FROM inserted
EXECUTE sp_Estoque_Entrada @idproduto, @identrada
END
Cdigo 12: Trigger Alimentar estoque ao inserir produto

4.2.5

Alimenta Estoque ao Atualizar Entrada de Produto

USE [PadariaBD]
GO
/****** Object: Trigger [dbo].[TGR_EstoqueEntrada_AU]
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[TGR_EstoqueEntrada_AU]

Script Date: 18/11/2014 21:04:02

ON [dbo].[Entrada]
AFTER UPDATE
AS
BEGIN
DECLARE @IdProduto INT;
DECLARE @IdEntrada INT;
SELECT @IdProduto=IdProduto, @IdEntrada=IdEntrada FROM inserted
END

EXECUTE sp_Estoque_Entrada @IdProduto, @IdEntrada

Cdigo 13:Trigger Alimentar estoque ao atualizar produto

37
Cpia total ou parcial no autorizada.

4.2.6

Alimenta Estoque ao Deletar Entrada de Produto

USE [PadariaBD]
GO
/****** Object: Trigger [dbo].[TGR_EstoqueEntrada_AD]
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[TGR_EstoqueEntrada_AD]

Script Date: 18/11/2014 21:01:53

ON [dbo].[Entrada]
AFTER DELETE
AS
BEGIN
DECLARE @IdProduto INT;
DECLARE @IdEntrada INT;
SELECT @IdProduto=IdProduto, @IdEntrada=IdEntrada FROM deleted
END

EXECUTE sp_Estoque_Saida @IdProduto, @IdEntrada

Cdigo 14: Trigger alimenta estoque ao deletar entrada de Produto

4.2.7

Alimenta Estoque ao dar Sada no Produto

USE [PadariaBD]
GO
/****** Object: Trigger [dbo].[TGR_EstoqueSaida_AI]
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[TGR_EstoqueSaida_AI]

Script Date: 18/11/2014 21:05:04

ON [dbo].[Saida]
AFTER INSERT
AS
BEGIN
DECLARE @IdProduto INT;
DECLARE @IdSaida INT;
SELECT @IdProduto=IdProduto, @IdSaida=IdSaida FROM inserted
EXECUTE sp_Estoque_Saida @IdProduto, @IdSaida
END
Cdigo 15: Trigger alimenta estoque ao dar sada no produto

38
Cpia total ou parcial no autorizada.

4.2.8

Alimenta Estoque ao Atualizar Sada de Produto

USE [PadariaBD]
GO
/****** Object: Trigger [dbo].[TGR_EstoqueSaida_AU]
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[TGR_EstoqueSaida_AU]

Script Date: 18/11/2014 21:06:28

ON [dbo].[Saida]
AFTER UPDATE
AS
BEGIN
DECLARE @IdProduto INT;
DECLARE @IdSaida INT;
SELECT @IdProduto=IdProduto, @IdSaida=IdSaida FROM inserted
END

EXECUTE sp_Estoque_Saida @IdProduto, @IdSaida

Cdigo 16: Alimenta estoque ao atualizar sada de produto

39
Cpia total ou parcial no autorizada.

4.2.9

Alimenta Estoque ao Deletar Sada de Produto

USE [PadariaBD]
GO
/****** Object: Trigger [dbo].[TGR_EstoqueSaida_AD]
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[TGR_EstoqueSaida_AD]

Script Date: 18/11/2014 21:12:23

ON [dbo].[Saida]
AFTER DELETE
AS
BEGIN
DECLARE @IdProduto INT;
DECLARE @IdSaida INT;
SELECT @IdProduto=IdProduto, @IdSaida=IdSaida FROM deleted
END

EXECUTE sp_Estoque_Entrada @IdProduto, @IdSaida

Cdigo 17: Alimenta estoque ao deletar sada de produto

40
Cpia total ou parcial no autorizada.

5. CONCLUSO

41
Cpia total ou parcial no autorizada.

6. REFERNCIAS
RAMAKRISHNAN, Raghu; GEHRKE, Johannes. Sistemas de gerenciamento de banco de
dados. 3. ed. Porto Alegre: Mcgraw Hill Brasil, 2008. 891 p.
SILBERSCHATZ, Abraham. Sistemas de Banco de Dados. Rio de Janeiro: Elsevier, 2012. 861p.

42
Cpia total ou parcial no autorizada.

S-ar putea să vă placă și