Sei sulla pagina 1di 36

Centro Universitrio Newton Paiva

BACHARELADO EM SISTEMAS DE INFORMAO

BANCO DE DADOS II
Prof. Iremar Nunes de Lima
iremar.prof@uol.com.br http://iremar.prof.sites.uol.com.br

Proibida reproduo e distribuio desta apostila por quaisquer meio.

@Copyright By Iremar Nunes de Lima

ndice
1. INTRODUO ............................................................................................................................................................................. 2 1.1. 1.2. 1.3. 1.4. 2. CRONOGRAMA ........................................................................................................................................................................ 2 BIBLIOGRAFIA BSICA ......................................................................................................................................................... 2 REVISO MODELO CONCEITUAL E MODELO RELACIONAL .................................................................................................. 3 REVISO SQL...................................................................................................................................................................... 5

SQL AVANADO......................................................................................................................................................................... 6 2.1. 2.2. 2.3. 2.4. 2.5. 2.6. 2.7. 2.8. CONSULTAS AVANADAS EM SQL......................................................................................................................................... 6 SUBCONSULTAS EM SQL ........................................................................................................................................................ 7 VIEWS................................................................................................................................................................................... 10 STOREDS PROCEDURES ......................................................................................................................................................... 12 FUNES .............................................................................................................................................................................. 14 TRIGGER ............................................................................................................................................................................... 17 OTIMIZAO (NDICES) ........................................................................................................................................................ 19 SEGURANA EM BANCO DE DADOS ...................................................................................................................................... 21

3.

TPICOS AVANADOS EM BD............................................................................................................................................. 23 3.1. 3.2. 3.3. 3.4. 3.5. ARQUITETURA DE SGBDS .................................................................................................................................................... 23 SGBDOO SISTEMA GERENCIADOR DE BD ORIENTADO A OBJETOS ................................................................................... 25 SGBDDD SISTEMA GERENCIADOR DE BD DISTRIBUDOS ................................................................................................ 26 DATAWAREHOUSE (DW) E BUSINESS INTELIGENCE ............................................................................................................... 28 MODELAGEM DE DATAWAREHOUSE E DATA MARTS ............................................................................................................ 30

4.

ESTUDOS DE CASOS ............................................................................................................................................................... 33

1. Introduo
1.1. CRONOGRAMA

Tpicos Avanados em SQL (captulos 08, 09, 14, 23 e 24 do livro texto).


Consultas avanadas. Subconsultas. View. Stored Procedure. Funes. Gatilhes (Trigger). ndices. 9 Segurana. 9 Prticas no SGBD Microsoft SQL Server 2005. 9 9 9 9 9 9 9 9 9 9 9

Tpicos Avanados em Banco de Dados (captulos 02, 20, 25 e 28 do livro texto).


Arquitetura do SGBD. Sistemas Gerenciadores de Banco de dados OO. Sistemas Gerenciadores de Banco de dados Distribudo. DataWarehouse, Datamarts, Dataming, OLAP e Business Intelligence.

Implementao de estudo de caso em um SGBD comercial (Microsoft SQL Server 2005).


1.2. BIBLIOGRAFIA BSICA

ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de Banco de Dados. 4. ed. So Paulo: Pearson Addison Wesley, 2005. 724 p. KORTH, HENRY F.; SILBERSCHATZ, ABRAHAM; SUDARSHAN, S. Sistema de Banco de Dados. 5 ed. Elsevier, 2006. 808 p. TAYLOR, Allen G. SQL para Dummies. Rio de Janeiro: Campus, 2001. 409 p.

1.3.

REVISO MODELO CONCEITUAL E MODELO RELACIONAL

Etapa 1: Construir o modelo conceitual do banco de dados (DCP segundo a notao UML):

Etapa 2: Construir o modelo relacional (DER segundo a notao Peter Chen - Ps de Galinha):

1.4.

REVISO SQL

Exemplo 1: Recupere o Nome e Endereo dos Funcionrios que tenham salrio igual ou inferior a 500.00 reais e que tenham sido admitidos aps o ano de 2000. SELECT FROM WHERE Nome, Endereco Funcionario Salario <= 500.00 AND DataAdmissao >= '01/01/2001'

Exemplo 2: Selecione o nome dos departamentos com o nome dos funcionrios atualmente lotados nele mostrando o salrio de cada funcionrio. SELECT FROM D.Nome, F.Nome, F.Salario, F.Salario Departamento D INNER JOIN Lotacao L ON (D.CodDepartamento=L.CodDepartamento ) INNER JOIN Funcionario F ON (L.CodFunc = F.CodFunc) L.DataFimLotacao IS NULL

WHERE

Exemplo 3: Recupere o nome dos funcionrios admitidos a mais de trs anos e que trabalham em no mximo dois projetos. Mostre o total de projetos que eles trabalham. SELECT F.Nome, COUNT(T.CodFunc) AS 'Total Projetos' FROM Funcionario F INNER JOIN TrabalhaEm T ON (F.CodFunc = T.CodFunc) WHERE (Getdate() - F.DataAdmissao) > 3 * 365 GROUP BY F.Nome HAVING COUNT(T.CodFunc) <= 2 Exemplo 4: (Left Outer Join) Recupere o cdigo, data e valor total dos pedidos e o nome do vendedor que fez o pedido. Mostre todos os pedidos mesmo que no tenha vendedor: SELECT FROM P.CodPedido, P.DataPedido, P.ValorTotalPedido, F.Nome Pedido P LEFT OUTER JOIN Funcionario F ON (P.CodFunc = F.CodFunc)

2. SQL Avanado
2.1. CONSULTAS AVANADAS EM SQL.

Exemplo 1: Auto Relacionamento - Recupere o Nome e salrio dos funcionrios e o nome e salrio de seus supervisores. SELECT F.NOME AS NOMEFUNC, F.SALARIO AS SALARIOFUNC, S.NOME AS NOMESUP, S.SALARIO AS SALARIOSUP FROM FUNCIONARIO F LEFT OUTER JOIN FUNCIONARIO S ON (F.CODFUNCSUPERVISOR = S.CODFUNC) Exemplo 2: Tabela Repetida - Para cada departamento, recupere o nome do departamento, o nome do gerente e o total de funcionrios que recebem mais de 500 reais lotados atualmente no departamento. SELECT D.NOME, G.NOME AS GERENTE, COUNT(F.CODFUNC) AS TOTALFUNC FROM DEPARTAMENTO D LEFT OUTER JOIN FUNCIONARIO G ON (D.CODFUNCGERENTE = G.CODFUNC) LEFT OUTER JOIN LOTACAO L ON (D.CODDEPARTAMENTO = L.CODDEPARTAMENTO) LEFT OUTER JOIN FUNCIONARIO F ON (L.CODFUNC = F.CODFUNC) WHERE L.DATAFIMLOTACAO IS NULL AND F.SALARIO > 500 GROUP BY D.NOME, D.CODDEPARTAMENTO, G.NOME Exemplo 3: Clusula TOP - Recupere o nome e salrio dos 10 funcionrios no demitidos com o maior salrio na empresa. SELECT TOP 10 NOME, SALARIO FROM FUNCIONARIO WHERE DATADEMISSAO IS NULL ORDER BY SALARIO DESC Exemplo 4: Funes YEAR, MONTH, DAY - Recupere o nome dos 20 produtos mais vendidos no ano atual. SELECT TOP 20 P.NOME, SUM(I.QUANTIDADE) AS TOTALVENDIDOMES FROM PRODUTO P INNER JOIN ITENSPEDIDO I ON (P.CODPRODUTO = I.CODPRODUTO) INNER JOIN PEDIDO PE ON (I.CODPEDIDO = PE.CODPEDIDO) WHERE YEAR(PE.DATAPEDIDO) = YEAR(GETDATE()) GROUP BY P.NOME ORDER BY SUM(I.QUANTIDADE) DESC Exemplo 4: UNION/INTERSECT - Recupere o cdigo dos funcionrios que so vendedores ou/e engenheiros (ou = UNION ; e = INTERSECT). SELECT CODFUNC FROM VENDEDOR UNION / INTERSECT SELECT CODFUNC FROM ENGENHEIRO Exemplo 5: DISTINCT - Recupere o cdigo dos empregados (uma nica vez) que trabalham nos projetos 1, 2 ou 3. SELECT DISTINCT CODFUNC FROM TRABALHAEM WHERE CODPROJETO IN (1,2,3)

Exemplo 6: INSERT INTO - Suponha que a tabela T_Exemplo abaixo j tenha sido criada: INSERT INTO T_EXEMPLO (NOMEFUNC, NOMECARGO) SELECT F.NOME, C.DESCRICAO FROM FUNCIONARIO F LEFT OUTER JOIN CARGO C ON (F.CODCARGO = C.CODCARGO) Exemplo 7: IS NULL em Outer Joins - Recupere o nome dos funcionrios que no trabalham em nenhum projeto. SELECT F.NOME FROM FUNCIONARIO F LEFT OUTER JOIN TRABALHAEM T ON (F.CODFUNC = T.CODFUNC) WHERE T.CODFUNC IS NULL Exemplo 8: IS NULL em Outer Joins - Recupere o nome dos funcionrios que no so vendedores, mas so coordenadores de projetos. SELECT F.NOME FROM FUNCIONARIO F INNER JOIN PROJETO P ON (F.CODFUNC = P.CODFUNCCOORDENADOR) LEFT OUTER JOIN VENDEDOR V ON (F.CODFUNC = V.CODFUNC) WHERE V.CODFUNC IS NULL Exemplo 9: Funo Substring, convert, upper, ltrim, rtrim, SELECT SUBSTRING(NOME, 1, 10) FROM FUNCIONARIO SELECT SUBSTRING(CONVERT(CHAR(20), DATANASCIMENTO), 1, 10) FROM FUNCIONARIO SELECT UPPER(LTRIM(RTRIM(NOME))) FROM FUNCIONARIO Exemplo 10: Operador CASE SELECT NOME, CASE WHEN SALARIO < 500 THEN 'Salrio menor que 500' WHEN SALARIO < 2000 THEN 'Salrio maior ou igual a 500 e menor 2000' ELSE 'Salrio maior ou igual a 2000' END FROM FUNCIONARIO
2.2. SUBCONSULTAS EM SQL

Exemplo 1: Recupere o Nome e Salrio dos funcionrios que recebem o maior salrio na empresa. SELECT NOME, SALARIO FROM FUNCIONARIO WHERE SALARIO = (SELECT MAX(SALARIO) FROM FUNCIONARIO)
7

Exemplo 2: Recupere o Nome e salrio dos funcionrios que ganham abaixo da mdia salarial dos gerentes de departamento. Mostre o resultado ordenado pelo nome do funcionrio. SELECT NOME, SALARIO FROM FUNCIONARIO WHERE SALARIO < (SELECT AVG(F.SALARIO) FROM FUNCIONARIO F INNER JOIN DEPARTAMENTO D ON F.CODFUNC = D.CODFUNCGERENTE) ORDER BY NOME Exemplo 3: (IN) Recupere o nome de cada um dos empregados que tenham dependentes com mais de dez anos. SELECT NOME FROM FUNCIONARIO WHERE CODFUNC IN (SELECT CODFUNC FROM DEPENDENTE WHERE (GETDATE() - DATANASCIMENTO) > 10*365) Ateno: Em geral, subconsultas com o operador IN podem ser reescritas como um bloco nico Exemplo 4: (NOT IN) Recupere nome dos funcionrios que no so gerentes: SELECT NOME FROM FUNCIONARIO WHERE CODFUNC NOT IN (SELECT CODFUNCGERENTE FROM DEPARTAMENTO WHERE CODFUNCGERENTE IS NOT NULL) Ateno: O resultado de uma subconsulta no pode retornar um valor NULL. Exemplo 5: Recupere o nome dos funcionrios que no so vendedores, mas so coordenadores de projetos. SELECT NOME FROM FUNCIONARIO WHERE CODFUNC NOT IN (SELECT CODFUNC FROM VENDEDOR) AND CODFUNC IN (SELECT CODFUNCCOORDENADOR FROM PROJETO WHERE CODFUNCCOORDENADOR IS NOT NULL) Exemplo 6: (SUBCONSULTAS CORRELACIONADAS) Recupere o nome dos vendedores que fizeram mais de dez pedidos no ms atual SELECT F.NOME FROM FUNCIONARIO F WHERE (SELECT COUNT(P.CODFUNC) FROM PEDIDO P WHERE F.CODFUNC = P.CODFUNC AND MONTH(GETDATE()) = MONTH(P.DATAPEDIDO) GROUP BY P.CODFUNC ) > 10 Exemplo 7: (EXISTS) Recupere o nome dos projetos que tenham pelo menos um funcionrio trabalhando nele. SELECT P.NOME FROM PROJETO P WHERE EXISTS ( SELECT * FROM TRABALHAEM T WHERE P.CODPROJETO = T.CODPROJETO) Exemplo 8: Recupere o nome dos gerentes que possuem ao menos um dependente. SELECT F.NOME AS GERENTE FROM FUNCIONARIO F WHERE EXISTS ( SELECT * FROM DEPARTAMENTO D WHERE (F.CODFUNC = D.CODFUNCGERENTE)) AND EXISTS ( SELECT * FROM DEPENDENTE D WHERE (F.CODFUNC =D.CODFUNC))
8

Exemplo 9: (NOT EXISTS) Recupere o nome dos departamentos que no contenha funcionrios lotados atualmente. SELECT D.NOME FROM DEPARTAMENTO D WHERE NOT EXISTS (SELECT * FROM LOTACAO L WHERE D.CODDEPARTAMENTO = L.CODDEPARTAMENTO AND L.DATAFIMLOTACAO IS NULL) Exemplo 10: (EXCEPT) Recupere o nome dos vendedores que no so gerentes de departamentos. SELECT NOME FROM FUNCIONARIO WHERE CODFUNC IN (SELECT CODFUNC FROM VENDEDOR EXCEPT (SELECT CODFUNCGERENTE FROM DEPARTAMENTO)) Exemplo 11: (SUBCONSULTAS NA CLUSULA FROM) Recupere o nome dos projetos ainda no encerrados em que mais de trs funcionrios j trabalharam. SELECT P.NOME FROM PROJETO P INNER JOIN (SELECT CODPROJETO FROM TRABALHAEM GROUP BY CODPROJETO HAVING COUNT(CODFUNC) > 3) AS P3F ON (P.CODPROJETO = P3F.CODPROJETO) WHERE P.DATAFIM IS NULL Exemplo 12: (SUBCONSULTAS NA CLUSULA SELECT) Recupere o nome dos funcionrios e o total de projetos que cada um deles j trabalhou. SELECT F.NOME, (SELECT COUNT(T.CODPROJETO) FROM TRABALHAEM T WHERE F.CODFUNC = T.CODFUNC GROUP BY T.CODFUNC) FROM FUNCIONARIO F Exemplo 13: (DELETE COM SUBCONSULTAS) Remova os funcionrios que j foram demitidos. DELETE FROM FUNCIONARIO WHRE CODFUNC IN (SELECT CODFUNC FROM FUNCIONARIO WHERE DATADEMISSAO IS NOT NULL) Exemplo 14: (UPDATE COM SUBCONSULTAS) Aumente em 20% o salrio dos funcionrios que so vendedores UPDATE FUNCIONOARIO SET SALARIO = SALARIO *1.2 WHERE CODFUNC IN (SELECT CODFUNC FROM VENDEDOR)

2.3.

VIEWS

So tabelas virtuais derivadas de outras tabelas. Estas tabelas no contm linhas. Exemplo 1: CREATE VIEW VFuncCargoFormacao (NomeFunc, NomeCargo, NomeFormacao) AS SELECT F.Nome, C.Descricao, FE.Descricao FROM Funcionario F LEFT OUTER JOIN Cargo C ON (F.CodCargo = C.CodCargo) LEFT OUTER JOIN FormacaoEscolar FE ON (F.CodFormacao = FE.CodFormacao) SELECT * FROM VfuncCargoFormacao Vantagens das Vises: 1. Destacam os dados para um usurio: As vises criam um ambiente controlado que permite acesso a dados especficos enquanto outros dados so ocultos. Dados desnecessrios, confidenciais ou inapropriados podem ser excludos de uma viso. 2. Mascaram a complexidade do banco de dados: As vises escondem a complexidade do design do banco de dados do usurio. Isso fornece aos desenvolvedores a capacidade de alterar o design sem afetar a interao do usurio com o banco de dados. Ou seja, o desenvolvimento e manuteno de aplicaes fica simplificado. 3. Simplificam o gerenciamento de permisses do usurio: Em vez de conceder permisso para os usurios consultarem colunas especficas em tabelas base, os proprietrios do banco de dados podem conceder permisso para usurios consultarem dados apenas atravs de vises. 4. Aprimoram o desempenho: As vises permitem que voc armazene resultados de consultas complexas. Outras consultas podem usar esses resultados resumidos. 5. Organizam dados a serem exportados para outros aplicativos: Voc pode criar uma viso com base em uma consulta complexa que associe duas ou mais tabelas e depois exportar os dados para outro aplicativo. Exemplo 2: CREATE VIEW VProjetoFuncionario (CodProjeto, NomeProjeto, CodFunc, NomeFuncionario) AS SELECT P.CodProjeto, P.Nome, F.CodFunc, F.Nome FROM Projeto P LEFT OUTER JOIN TrabalhaEm TE ON (P.CodProjeto = TE.CodProjeto) RIGHT OUTER JOIN Funcionario F ON (TE.CodFunc = F.CodFunc) /* Recupera a quantidade de funcionrios por projeto */ SELECT NomeProjeto, Count(CodFunc) AS "Total de Funcionrios" FROM VProjetoFuncionario GROUP BY NomeProjeto /* Recupera o nome dos Funcionrios que no trabalham em nenhum projeto */ SELECT NomeFuncionario FROM VProjetoFuncionario WHERE CodProjeto IS NULL

10

Exemplo 3: CREATE VIEW FolhaPgtoPorDepto (CodDepartamento, TotalFolha) AS SELECT D.CodDepartamento, SUM(F.Salario) FROM Departamento D JOIN Lotacao L ON (D.CodDepartamento = L.CodDepartamento) JOIN Funcionario F ON (L.CodFunc = F.CodFunc) WHERE L.DataFimLotacao IS NULL GROUP BY D.CodDepartamento Exemplo 4: DROP VIEW VFuncCargoFormacao Exemplo 5: SET DATEFORMAT dmy; CREATE VIEW V_10_Funcionario_TotalPedidos_Ano_2007 -- Esta view recupere o 10 vendedores que mais venderam em 2007 AS SELECT TOP 10 V.CodFunc, F.Nome, SUM(P.ValorTotalPedido) AS Total FROM Vendedor V LEFT OUTER JOIN Pedido P ON (V.CodFunc = P.CodFunc) JOIN Funcionario F ON (V.CodFunc = F.CodFunc) WHERE DataPedido > '31/12/2006' GROUP BY V.CodFunc, F.nome ORDER BY Total DESC ; SELECT * FROM V_10_Funcionario_TotalPedidos_Ano_2007 ORDER BY total ASC Exemplo 6: Como as views podem melhorar a segurana de acesso ao Banco de Dados: CREATE VIEW VISOES_BD_PESSOAL.V_FuncSupervisor (NomeFunc, SalarioFunc, NomeSupervisor, SalarioSup) WITH ENCRYPTION AS SELECT F.nome, F.Salario, S.nome, S.Salario FROM Funcionario F LEFT OUTER JOIN Funcionario S ON (F.CodFuncSupervisor = S.CodFunc); DENY SELECT ON FUNCIONARIO TO BD; GRANT SELECT ON VISOES_BD_PESSOAL TO BD; Observaes: O Projeto de quais Views um sistema deve ter uma tarefa crtica em um grande sistema e deve ser feita pelo analista e DBA na fase do Projeto do sistema. Uma View no pode conter a clusula ORDER BY.

11

2.4.

STOREDS PROCEDURES

So funes armazenadas no BD, compiladas e disponibilizadas para execuo pela aplicao. Exemplo 1: CREATE PROCEDURE SPFolhaPagamento AS BEGIN SELECT D.Nome, F.Nome, F.Salario FROM Departamento D JOIN Lotacao L ON (D.CodDepartamento = L.CodDepartamento) JOIN Funcionario F ON (L.CodFunc = F.CodFunc) WHERE L.DataFimLotacao IS NULL ORDER BY D.Nome, F.Nome END Para executar a procedure depois dela criada: EXEC SPFolhaPagamento So criadas pelo DBA/Analista ou pelo prprio fabricando do SGBD para: 1. Encapsular regra de negcio e criar lgica do aplicativo reutilizvel. Facilita a manuteno e alterao da aplicao, pois se a regra muda basta mudar na procedure. 2. Execuo mais rpida para consultas repetitivas. Todas as instrues SQL tornam-se parte de um nico plano de execuo no servidor e uma vez executada, o plano de execuo fica em memria cache. 3. Reduo no trfego de rede gerado pela aplicao. No trafega cdigo SQL. 4. Facilitar e centralizar o gerenciamento de permisses. 5. Esconder dos usurios os detalhes das tabelas, no sendo necessrio o acesso s tabelas diretamente. 6. Eliminar a possibilidade de um hacker enviar instrues SQL incorporadas nos valores de parmetro dos formulrios da aplicao. Exemplo 2: CREATE PROCEDURE SPTotalFolhaDepartamento (@CodDepartamento INTEGER) AS BEGIN SELECT D.Nome, SUM(F.Salario) AS "Total Folha" FROM Departamento D JOIN Lotacao L ON (D.CodDepartamento = L.CodDepartamento) JOIN Funcionario F ON (L.CodFunc = F.CodFunc) WHERE D.CodDepartamento = @CodDepartamento AND L.DataFimLotacao IS NULL GROUP BY D.Nome END EXEC SPTotalFolhaDepartamento 1 ou EXEC SPTotalFolhaDepartamento 3 Exemplo 3: CREATE PROCEDURE SPRemoveFuncionario (@CodFunc INTEGER) AS BEGIN TRANSACTION DELETE FROM Dependente WHERE CodFunc = @CodFunc; DELETE FROM Lotacao WHERE CodFunc = @CodFunc; DELETE FROM TrabalhaEm WHERE CodFunc = @CodFunc; DELETE FROM Engenheiro WHERE CodFunc = @CodFunc; UPDATE Pedido SET CodFunc = NULL WHERE CodFunc = @CodFunc; DELETE FROM Vendedor WHERE CodFunc = @CodFunc; UPDATE Departamento SET CodFuncGerente = NULL WHERE CodFuncGerente = @CodFunc; UPDATE Projeto SET CodFuncCoordenador = NULL WHERE CodFuncCoordenador = @CodFunc; DELETE FROM Administrador WHERE CodFunc = @CodFunc; DELETE FROM Funcionario WHERE CodFunc = @CodFunc; COMMIT

12

Exemplo 4: DROP PROCEDURE SPTotalFolhaDepartamento Exemplo 5: Tratamento estruturado de excees em Procedures (Microsoft SQL Server):
CREATE PROCEDURE USP_ATUALIZA_GERENTE_DEPARATAMENTO (@CODDEPTO INTEGER,@CODGERENTENOVO INTEGER, @NOVAGRATIFICACAO MONEY) AS BEGIN TRY BEGIN TRANSACTION DECLARE @CODGERENTEANTIGO INTEGER SELECT @CODGERENTEANTIGO = (SELECT ISNULL(CODFUNCGERENTE, 0) FROM DEPARTAMENTO WHERE CODDEPARTAMENTO = @CODDEPTO) DECLARE @VALORGRATIFICACAOANTIGA MONEY SELECT @VALORGRATIFICACAOANTIGA = (SELECT ISNULL(GRATIFICACAOGERENTE, 0) FROM DEPARTAMENTO WHERE CODDEPARTAMENTO = @CODDEPTO) IF @CODGERENTEANTIGO <> 0 NESTE CASO O DEPARTAMENTO TEM GERENTE BEGIN -- ATUALIZA SALARIO DO GERENTE ANTIGO UPDATE FUNCIONARIO SET SALARIO = SALARIO - @VALORGRATIFICACAOANTIGA WHERE CODFUNC = @CODGERENTEANTIGO -- ATUALIZA O GERENTE DO DEPARTAMENTO UPDATE DEPARTAMENTO SET CODFUNCGERENTE = @CODGERENTENOVO WHERE CODDEPARTAMENTO = @CODDEPTO -- ATUALIZA O SALARIO DO NOVO GERENTE UPDATE FUNCIONARIO SET SALARIO = SALARIO + @NOVAGRATIFICACAO WHERE CODFUNC = @CODGERENTENOVO END ELSE -- NESTE CASO O DEPARTAMENTO NO TINHA GERENTE DEFINIDO BEGIN -- ATUALIZA O GERENTE DO DEPARTAMENTO UPDATE DEPARTAMENTO SET CODFUNCGERENTE = @CODGERENTENOVO WHERE CODDEPARTAMENTO = @CODDEPTO -- ATUALIZA O SALARIO DO NOVO GERENTE UPDATE FUNCIONARIO SET SALARIO = SALARIO + @NOVAGRATIFICACAO WHERE CODFUNC = @CODGERENTENOVO END COMMIT TRANSACTION END TRY BEGIN CATCH ROLLBACK TRANSACTION SELECT ERROR_NUMBER() NUMEROERRO, ERROR_MESSAGE() MENSAGEMERRO END CATCH EXEC USP_ATUALIZAGERENTEDEPARATAMENTO 2, 100, 300 30001 - Cannot insert/update into table Departamento because the values entered for CodFuncGerente in Departamento must correspond to the values of primary key column(s) of the table Administrador

Observaes: O Projeto de quais SPs um sistema deve ter uma tarefa crtica em um grande sistema e deve ser feita pelo analista e DBA na fase do Projeto do sistema.

13

2.5.

FUNES

9 Funes so rotinas compostas de um ou mais instrues T-SQL usadas para encapsular lgica executada com freqncia. 9 Uma funo obtm zero ou mais parmetros de entrada e retorna um valor escalar ou uma tabela. 9 Benefcios: encapsula cdigo para reutilizao e em alguns casos, podem ser invocadas em qualquer lugar de uma instruo T-SQL. 9 No oferecem suporte a parmetros de sada como as procedures. Exemplos (Microsoft SQL Server): 1) Diferena entre VIEWS, PROCEDURES e FUNCTIONS: a) VIEW: CREATE VIEW V_EXEMPLO AS SELECT CODFUNC, NOME FROM FUNCIONARIO SELECT * FROM V_EXEMPLO WHERE CODFUNC = 10 b) PROCEDURE: CREATE PROCEDURE SP_EXEMPLO (@CODFUNC INT) AS SELECT CODFUNC, NOME FROM FUNCIONARIO WHERE CODFUNC = @CODFUNC EXECUTE SP_EXEMPLO 10 c) FUNCTION: CREATE FUNCTION F_EXEMPLO (@CODFUNC INT) RETURNS TABLE AS RETURN ( SELECT CODFUNC, NOME FROM FUNCIONARIO WHERE CODFUNC = @CODFUNC) SELECT * FROM F_EXEMPLO (1) TIPOS DE FUNES: A) FUNES ESCALARES Semelhantes a uma funo interna (COUNT(), SUM(), MAX()). Retornam um nico valor do tipo definido na clusula RETURNS Semelhantes a Vises com a vantagem de oferecer suporte a parmetros de sada. Deve ser definida em um bloco BEGIN ... END. Exemplos: 1) CREATE FUNCTION SOMAPRODUTOSVENDIDOS (@CODPRODUTO INT) RETURNS INT -- Objetivo: Para cada produto passado como parmetros retorna a quantidade -- total de produtos vendidos. AS BEGIN DECLARE @RETORNO INT SELECT @RETORNO = SUM(QUANTIDADE) FROM ITENSPEDIDO WHERE CODPRODUTO = @CODPRODUTO 14

IF (@RETORNO IS NULL) SET @RETORNO = 0 RETURN @RETORNO END -- Para executar a Funo: SELECT NOME, DBO.SOMAPRODUTOSVENDIDOS(CODPRODUTO) AS TOTALVENDIDO FROM PRODUTO Ateno: Observe a necessidade de referenciar o ESQUEMA onde se encontra a Funo. 2) Cria uma funo escalar para ser usado na clusula CHECK. CREATE FUNCTION VALIDADATA (@DATA DATETIME) RETURNS INT AS -- Objetivo: Cria uma funo que valida uma data: a data deve ser maior ou -- igual data de hoje e deve ser menor que '0'/01/2100'. BEGIN DECLARE @RETORNO INT SELECT @RETORNO = 0 IF (ISDATE(@DATA) = 0) O parmetro no do tipo datetime RETURN @RETORNO IF (@DATA < GETDATE()) RETURN @RETORNO IF (@DATA > '01/01/2100') RETURN @RETORNO SELECT @RETORNO = 1 RETURN @RETORNO END -- Associa a funo uma nova coluna de uma tabela CREATE TABLE PEDIDOTESTE ( CODPEDIDO INT, DATAPEDIDO DATETIME CHECK (DBO.VALIDADATA(DATAPEDIDO) > 0) ) -- Testa a funo definida na clusula CHECK INSERT INTO PEDIDOTESTE VALUES (1, '01/01/2006')
Msg 547, Level 16, State 0, Line 1 The INSERT statement conflicted with the CHECK constraint CK__PEDIDOTES__DATAP__60A75C0F. The conflict occurred in database Pessoal, table dbo.PEDIDOTESTE, column 'DATAPEDIDO'. The statement has been terminated.

B) FUNES COM VALOR DE TABELA EM LINHA Semelhantes a uma viso com parmetros. Retornam uma tabela como resultado da nica instruo SELECT. Semelhantes a Vises com a vantagem de oferecer suporte a parmetros de sada. Exemplo: 15

-- Cria uma funo que retorna uma tabela contendo o cdigo, nome e salrio -- dos funcionrios lotados em um departamento: CREATE FUNCTION DBO.FUNCLOTADODEPTO (@CODDEPTO INT) RETURNS TABLE AS RETURN ( SELECT F.CODFUNC, F.NOME, F.SALARIO FROM FUNCIONARIO F INNER JOIN LOTACAO L ON (F.CODFUNC = L.CODFUNC) WHERE L.DATAFIMLOTACAO IS NULL AND L.CODDEPARTAMENTO = @CODDEPTO) -- Invocando a funo: SELECT * FROM DBO.FUNCLOTADODEPTO (2) -- Invocando a funo dentro da clusula FROM: -- Seleciona os funcionrios do departamento 2 que ganham mais de 1000 e -- nome dos respectivos dependentes. SELECT FF.NOME, D.NOME AS NOMEDEPENDENTE FROM DBO.FUNCLOTADODEPTO(2) AS FF INNER JOIN DEPENDENTE D ON (FF.CODFUNC = D.CODFUNC) WHERE FF.SALARIO > 1000 C) FUNES COM VALOR DE TABELA COM VRIAS INSTRUES. Combina views e procedimentos armazenados. Retorna uma tabela que resultado de vrias instrues T-SQL. Exemplo: Recupera o nome dos Coordenadores de projeto ou Gerentes de Departamentos, conforme o parmetro recebido: Se valor do parmetro for 1 retorna os coordenadores de projetos, se for 2 retorna os gerentes de departamentos. CREATE FUNCTION COORD_OU_GERENTE (@TIPO INT) RETURNS @TBL_COORD_OU_GERENTE TABLE (CODFUNC INT, NOMEFUNC VARCHAR(50), FUNCAO VARCHAR(20)) AS BEGIN IF (@TIPO = 1) -- SOLICITOU OS COORDENADORES INSERT INTO @TBL_COORD_OU_GERENTE SELECT F.CODFUNC, F.NOME, 'COORDENADOR' FROM FUNCIONARIO F INNER JOIN PROJETO P ON (F.CODFUNC=P.CODFUNCCOORDENADOR) ELSE IF (@TIPO = 2) -- SOLICITOU OS GERENTES INSERT INTO @TBL_COORD_OU_GERENTE SELECT F.CODFUNC, F.NOME, 'GERENTE' FROM FUNCIONARIO F INNER JOIN DEPARTAMENTO D ON (F.CODFUNC = D.CODFUNCGERENTE) RETURN END SELECT * FROM COORD_OU_GERENTE (1) 16

2.6.

TRIGGER

So Storeds Procedures (funes) que so disparadas automaticamente pelo SGBD durante um evento de insero, excluso ou atualizao de linhas nas tabelas do BD. So teis para: Controlar restries de domnio que depende de valores dinmicos. Realizar tarefas em cascata antes ou aps um INSERT, DELETE ou UPDATE (Exemplos: atualizao do estoque ou implementao de opes de Cascade Delete, Set NULL, etc). Atualizar atributos derivados de tabelas (Ex: Total de dependentes de um Funcionrio ). Auditar aes realizadas pelos usurios. Nota: Em SQL Server as tabelas DELETED e INSERTED contm as linhas removidas e inseridas. Por exemplo, se a ao declarada for UPDATE a tabela DELETED conter as linhas antes da atualizao e a tabela INSERTED conter as linhas depois da atualizao. Exemplo 1: Restrio de domnio (SQL Server) CREATE TRIGGER TGVerificaSalarioMinimo ON Funcionario FOR INSERT, UPDATE AS BEGIN IF (SELECT Salario FROM INSERTED) < (SELECT SalarioMinimo FROM Parametros) BEGIN PRINT 'Erro! Salrio do funcionrio menor que o salrio mnimo ' ROLLBACK TRANSACTION END END Exemplo 2: Atualizao em cascata (SQL Server): Cria a Trigger que aumenta o salario de um funcionario que se tornou gerente: CREATE TRIGGER TGAtualizaSalarioGerenteNovo ON Departamento FOR INSERT AS BEGIN UPDATE Funcionario SET Salario = Salario + INSERTED.GratificacaoGerente FROM INSERTED WHERE Funcionario.CodFunc = INSERTED.CodFuncGerente END Exemplo 3: Cria a Trigger que reduz o salario de um gerente cujo departamento que gerenciava foi removido: CREATE TRIGGER TGAtualizaSalarioGerenteDepartamentoRemovido ON Departamento FOR DELETE AS BEGIN UPDATE Funcionario SET Salario = Salario - DELETED.GratificacaoGerente FROM DELETED WHERE Funcionario.CodFunc = DELETED.CodFuncGerente END

17

Exemplo 4: Cria a Trigger que aumenta o salario do funcionario que se tornou o novo gerente e reduz o salario do funcionario que deixou de ser gerente:
CREATE TRIGGER TGAtualizaSalarioGerenteRemovido ON Departamento FOR UPDATE AS

BEGIN IF UPDATE("CodFuncGerente") BEGIN /* Aumenta o salario do funcionario que se tornou o novo gerente */ UPDATE Funcionario SET Salario = Salario + INSERTED.GratificacaoGerente FROM INSERTED WHERE Funcionario.CodFunc = INSERTED.CodFuncGerente /* Reduz o salario do funcionario que deixou de ser gerente */ UPDATE Funcionario SET Salario = Salario - DELETED.GratificacaoGerente FROM DELETED WHERE Funcionario.CodFunc = DELETED.CodFuncGerente END END Exemplo 5: Atualizao de atributos derivados: Cria a Trigger que calcula o atributo derivado totaldependentes da tabela Funcionario. CREATE TRIGGER TGAtualizaTotalDependentes ON Dependente FOR INSERT, DELETE AS BEGIN IF (SELECT COUNT(*) FROM INSERTED) = 1 /* Houve uma insero */ BEGIN UPDATE Funcionario SET TotalDependentes = TotalDependentes + 1 WHERE CodFunc = (SELECT CodFunc FROM INSERTED) END ELSE IF (SELECT COUNT(*) FROM DELETED) = 1 /* Houve uma remoo */ BEGIN UPDATE Funcionario SET TotalDependentes = TotalDependentes - 1 WHERE CodFunc = (SELECT CodFunc FROM DELETED) END END Exemplo 6: DROP TRIGGER TGAuditaSalario O Projeto de quais Triggers um sistema deve ter uma tarefa crtica em um grande sistema e deve ser feita pelo analista e DBA na fase do Projeto do sistema. Um DBA conhecer a sintaxe de criao de triggers do fabricante do SGBD para usar todo o potencial desta caracterstica. Cuidado: Uma trigger pode disparar outra trigger em cascata.
18

2.7.

OTIMIZAO (NDICES)

ndice uma tabela que implementa uma estrutura de dado, como rvore B, atravs de uma ou mais colunas especificadas no ndice, com o objetivo de evitar o acesso seqencial.

Tipos de ndices: ndices implcitos: so os ndices que so automaticamente criados pelo SGBD quando o objeto criado. Ex: os atributos chaves (PKs). Ex: CREATE INDEX I_Funcionario ON Funcionario (CodFunc) ndices simples: so aqueles baseados em uma nica coluna da tabela. Ex: CREATE INDEX I_FuncCargo ON Funcionario (CodCargo) Ex: CREATE INDEX I_ProjDataInicio ON Projeto (DataInicioProjeto) ndices compostos: so aqueles baseados em duas ou mais colunas de uma tabela. Ex: CREATE INDEX I_DeptoFunc ON Lotacao (CodDepto, CodFunc) Ex: CREATE INDEX I_FuncCargoSalario ON Funcionario (CodCargo, Salario) ndices nicos: so os ndices que implementam valores nicos em uma coluna semelhante a uma PK. Ex: CREATE UNIQUE INDEX I_CPF ON Funcionario (CPF) CREATE UNIQUE INDEX I_Descricao ON Projeto (descricao) Removendo ndices: DROP INDEX Projeto.I_Descricao
19

Critrios gerais para otimizao de um Banco de Dados: 1) Crie ndices em: Colunas utilizadas como chaves estrangeiras. Excees: A tabela no deve conter poucas linhas ou os valores da chave estrangeira no deve conter poucos valores distintos. Colunas freqentemente utilizadas para unir (JOIN) tabelas. Colunas freqentemente utilizadas como condies em uma consulta, desde que a consulta no retorne mais de 80 % das linhas nas tabelas. 2) Crie Views e/ou Storeds Procedures sobre as consultas mais freqentes do BD. Quando voc deve evitar criar ndices: 1) Em colunas que contenham poucos valores nicos, como sexo e status. 2) Em colunas de consultas que recuperem uma alta percentagem das linhas das tabelas. 3) Um ndice geralmente ocupa muito espao em disco podendo ser maior que a prpria tabela. Portanto veja se espao de armazenamento um problema no seu sistema. 4) Se uma coluna sofrer constantes modificaes ndices nesta coluna devem ser avaliados sobre pena de o algoritmo de indexao sobrecarregar o sistema. 5) Se existem processos de carga em tabelas deve-se primeiro remover os ndices desta tabela e depois cri-los novamente, de preferncia quando o SGBD estiver ocioso. Nota: O Projeto de quais ndices um sistema deve ter uma tarefa crtica em um grande sistema e deve ser feita pelo analista e DBA na fase do Projeto do sistema.
20

2.8.

SEGURANA EM BANCO DE DADOS

Um banco de dados possui usurios que so autenticados usando logins especficos ou logins validados pelo sistema operacional. Para estabelecer uma conexo com SGBD necessrio ter um login no Servidor de BD. Um Database pode ter usurios que podem ser colocados em um grupo (role). Todo SGBD possui um grupo default chamado public. Exemplos: USE master CREATE LOGIN BD WITH PASSWORD = 'sql' , DEFAULT_DATABASE = Pessoal, DEFAULT_LANGUAGE = brazilian USE Pessoal CREATE USER BD FOR LOGIN BD CREATE ROLE ALUNOS SP_ADDROLEMEMBER "ALUNOS", "BD" SP_DROPROLEMEMBER "ALUNOS", "BD" SP_DROPROLE "ALUNOS" Existem dois tipos de permisses que controlam as aes de um usurio: A) Permisso de declarao: CREATE DATABASE, CREATE TABLE, CREATE RULE, CREATE VIEW, CREATE PROCEDURE e CREATE INDEX. Exemplos: 1) GRANT CREATE TABLE, CREATE VIEW TO cesar 3) GRANT CREATE PROCEDURE TO public B) Permisso de objetos: SELECT, INSERT, UPDATE, DELETE e EXECUTE (Storeds Procedures) Exemplos: 1) GRANT UPDATE ON projeto TO cesar, iremar 2) GRANT SELECT ON funcionario (CodFunc, Nome, Endereco, Telefone) TO public 4) GRANT DELETE ON dependente TO marcia WITH GRANT OPTION 5) GRANT EXECUTE ON SPFolhaPagamento TO iremar C) Opo REVOKE (remove uma ou mais permisses j concedidas) Exemplos: 1) REVOKE CREATE TABLE FROM cesar 3) REVOKE SELECT ON funcionario FROM cesar 4) REVOKE ALL ON projeto FROM public

21

Esquemas (Scheme) em banco de Dados (Microsoft SQL Server) 1. Um esquema (schema) um container para objetos do banco de dados (ANSI SQL-92). 2. Facilita o gerenciamento de permisses. 3. Quando um objeto criado se no for definido o esquema a que ele pertence, automaticamente o objeto vai pertencer ao esquema dbo. Exemplos: a) Cria um esquema de nome RH no banco de dados Pessoal. USE PESSOAL; CREATE SCHEMA RH Ateno: Esquemas so criados em bancos de dados. b) Transfere o esquema da tabela Cargo para o esquema RH ALTER SCHEMA RH TRANSFER dbo.cargo; SELECT * FROM rh.cargo c) Cria um esquema de nome Venda, com algumas opes: USE pessoal; CREATE SCHEMA Vendas AUTHORIZATION iremar CREATE TABLE Pedido (CodPedido int, Valor money, DataPedido datetime) GRANT SELECT TO renata DENY SELECT TO guest; GO Ateno: Observe que a tabela Pedido ir pertencer ao schema Vendas. Ao se criar um objeto do BD ser possvel definir a qual esquema ele pertencer d) Concede diferentes permisses em esquemas: GRANT SELECT ON SCHEMA::rh TO guest DENY DELETE ON SCHEMA::rh TO guest GRANT UPDATE ON SCHEMA::rh TO iremar WITH GRANT OPTION

22

3. Tpicos Avanados em BD
3.1. ARQUITETURA DE SGBDS A figura a seguir ilustra, de forma simplificada, os componentes tpicos de um SGBD:

Administrador do BD / Usurios / Aplicaes

Compilador DML Compilador DDL

Otimizador de Consultas

Processador de Consultas

Executor de Consultas

SGBD
Gerenciador de Transaes Gerenciador de Buffer

Gerenciador de memria

Gerenciador de Arquivos

ndices

Dados Estatsticos

Arquivos de Dados

Banco de Dados

Dicionrio de Dados

Adaptao de "Sistema de Banco de Dados", Henry F. Korth et al.

Estes mdulos so descritos a seguir: Compilador DML: Mdulo responsvel pela traduo de comandos DML (linguagem de manipulao de dados do tipo SQL), que podem ter sido embutidos em um programa de aplicao ou enviados pelo Administrador do Banco de Dados. Compilador DDL: Mdulo que traduz comandos DDL (linguagem de definio de dados do tipo SQL), que podem ser submetidos pelo DBA ou usurios avanados do BD. Otimizador de consultas: Mdulo que tem a tarefa de produzir um plano de execuo que permita escolher uma estratgia eficiente para executar a consulta submetida ao SGBD.
23

Executor de consultas: Mdulo que gera e executa o cdigo de baixo nvel correspondente consulta submetida ao SGBD. Gerenciador de transaes: Mdulo responsvel pelo controle de concorrncia, segurana, controle de restries e recuperao de falhas das transaes submetidas ao SGBD. Gerenciador de buffer: Mdulo responsvel por manusear buffers na memria principal mantendo ali os dados mais acessados pelo SGBD. Gerenciador de arquivos: Mdulo responsvel por transferir dados de baixo nvel (arquivos fsicos) entre o disco e o armazenamento central do computador (memria principal). Diferena entre Administrador de banco de dados e Administrador de Dados Administrador do banco de dados : Tambm chamado de DBA - Database Administrator, representa o superusurio do SGBD, responsvel por autorizar o acesso ao banco de dados, por coordenar e monitorar sua utilizao e por adquirir recursos de hardware e software quando necessrio. Ajuda na soluo de problemas como violao da segurana ou por tempos demorados de resposta do sistema. Administrador de dados: o profissional especializado nos dados da organizao visando o desenvolvimento integrado dos sistemas de informao da empresa. No precisa conhecer necessariamente o funcionamento do SGBD mas deve ser um profissional especializado na regra de negcios da organizao ajudando o analista na definio do modelo conceitual.
Exerccios: Para cada questo abaixo escolha a opo correta apresentando a justificativa da sua escolha. 1) Em relao arquitetura de um SGBD incorreto afirmar que: a) b) c) d) O gerenciador de buffer interage como gerenciador de arquivos. O otimizador de consulta interage diretamente com o dicionrio de dados do SGBD. O gerenciador de transaes no resolve problemas de concorrncia de acesso aos dados do Banco de Dados. O executor de consultas realiza a execuo de uma sentena SQL submetida ao SGBD.

2) Todas as afirmaes abaixo so incorretas exceto: a) b) c) d) O dicionrio de dados um dos componentes de um SGBD. O gerenciador de buffer procura manter em memria principal os dados mais acessados pelas pelos usurios de um SGBD. O otimizador de consulta no garante uma boa estratgia na execuo de uma consulta SQL. Uma das tarefas centrais de um administrador de dados configurar um SGBD aps sua instalao.

3) So funes de um DBA exceto: a) Definir a estrutura de armazenamento do banco de dados e a estratgia de acesso aos dados. b) Implementar os controles de segurana e integridade no SGBD. c) Monitorar o SGBD. d) Propor o DER. 4) So funes de um Analista de Sistemas exceto: a) b) c) d) Montar a lista de eventos que um sistema deve responder. Definir as restries de domnio do banco de dados. Definir um plano de contingncia para recuperao do banco de dados. Definir as entidades que um sistema deve ter.

24

3.2.

SGBDOO SISTEMA GERENCIADOR DE BD ORIENTADO A OBJETOS

Por que usar SGBDO? Existem aplicaes de banco de dados complexas onde o modelo relacional limitado: o Banco de dados geogrficos e multimdia. o Banco de dados para telecomunicaes. o Banco de dados para engenharia e manufatura (CAD). o Banco de dados cientficos (Genoma). Existem aplicaes no convencionais que exigem estruturas de dados complexas, armazenamento de imagens e textos longos. Uso crescente de linguagens de programao orientadas a objetos: integrar dados e processos. Como est o mercado atual de SGBDO? Fornecedores tm reconhecido a necessidade de incrementar o modelo relacional para atender s novas demandas. Verses comerciais: GEMSTONE, ONTOS, VERSANT, ARDENTE, POET. SGBDORs: ORACLE 10g, DB2, CACHE e INFORMIX entre outros. ltima verso do padro SQL (99) j inclui caractersticas bsicas de OO. ODMG (Object Database Management Group) tem definido padres como a OQL (Object Query Language) para SGBDOs. Caractersticas de um SGBDOR (ou SGBD Estendido): Representaes de atributos multivalorados. Suporte Objeto-Relacional na SQL-99: construtores de tipos e herana. o Create type tipo_endereco AS ( Rua varchar (45), Cidade varchar (25), CEP char(8) ) o Create type tipo_empregado AS ( Nome varchar (35), Endereco tipo_endereco, Idade integer ).

25

Tabelas aninhadas para representar objetos complexos (quebra da 1Forma Normal).

Novos tipos de dados: BLOB (Binary Large Object para vdeos e udio), CLOB (Character Large Object para textos de documentos) , BFILE (arquivo binrio armazenado parte do BD). Por que os SGBDOs no dominam o mercado? o No podemos abandonar os sistemas legados gerenciados pelos SGBDRs. o Muitas aplicaes so simples e no precisam do poder dos SGBDOs. o Problemas na definio e implementao dos padres estabelecidos. o Surgimento dos SGBDORs.
3.3. SGBDDD SISTEMA GERENCIADOR DE BD DISTRIBUDOS

O que um Banco de Dados Distribudo (BDD)? uma coleo de vrios bancos de dados logicamente inter-relacionados distribudos por uma rede computadores. Um SGBDD o software que gerencia um BDD.

26

Vantagens de um SGBDD: 1. Melhoria na disponibilidade e confiabilidade dos dados. 2. Melhoria de desempenho das transaes. 3. Gerenciamento dos dados de forma transparente. Tcnicas do projeto de um BDD: 1. Replicao dos dados: Diversas rplicas (cpias) das tabelas so armazenadas em locais diferentes. Pode no existir replicao, ou a replicao parcial, ou replicao total dos dados.

2. Fragmentao dos dados: Uma tabela dividida em diversos fragmentos (linhas e/ou colunas) armazenados em locais diferentes. Pode ser uma fragmentao horizontal (linhas), Vertical (colunas) ou mista (hbrida). Desvantagens de um SGBDD: 1. Custo alto. 2. Gerenciamento difcil. 3. Implementao complexa:

27

3.4.

DATAWAREHOUSE (DW) E BUSINESS INTELIGENCE

DW so sistemas baseados em dados histricos de banco de dados transacionais, ajudando na tomada de decises por parte dos usurios da alta direo da empresa. Exemplos: 1. Supermercados: Colocar fraldas e cerveja um do lado do outro nas prateleiras do supermercado aumentam as vendas de ambos os produtos. 2. Bancos: Identificao de perfil de clientes mais propensos inadimplncia. 3. Comrcio: Evoluo das vendas de um produto em uma regio num perodo. Business Intelligence: Uma integrao de aplicativos e tecnologias para captar, armazenar, analisar e prover acesso aos dados corporativos de forma a auxiliar os executivos nas decises de negcio. Um sistema de DW derivado de bancos de dados transacionais. Um DW um BD. OLPT x OLAP: OnLine Transaction Processing x OnLine Analytical Processing. Caractersticas de um sistema de DW: 1. So sistemas orientados por temas: DW foca os temas/fatos importantes para o negcio da empresa. Exemplos: Clientes, Faturamento, Vendas, Compras, Estoque. 2. Integrado: A base de dados do DW so os diversos Databases da empresa que, em princpio, no se comunicam diretamente. necessrio na importao destes dados, um tratamento padronizado dos mesmos. Exemplos: Sexo M/F, 0/1, H/M. 3. variante no tempo: Os dados em um DW so variantes no tempo e referem-se a perodos de tempos bem definidos. Exemplos: Total de vendas no trimestre. Variao do estoque de um produto a cada ms. 4. Os dados em um DW no so volteis : Em um DW a carga dos dados feita uma vez e atualizada periodicamente (um ms, uma semana) com base nos dados dos BD Transacionais. Os dados no mudam On-Line.

28

Arquitetura de um Sistema de DW:

Fontes Externas

BD Operacionais

Extrao Transformao Carga Atualizao

Softwares ETL (Extrai, Transforma, Carga)

DW

Data Marts (So DWs Setoriais)

Tcnicas de Data Mining (Minerao de Dados, Descoberta de conhecimentos) Viso Dados (Slice/Dice) Relatrios Gerenciais

Exemplo de um Cubo de Dados Diferentes Relatrios Gerenciais:

29

Diferenas entre os tipos de Sistemas: Caractersticas BDs Transacionais Objetivo Operaes dirias do negcio Uso Operacional Tipo de Processamento OLTP Unidade de Trabalho Incluso, Alterao e Excluso Nmero de Usurios Milhares Tipo de Usurios Operadores Condio dos Dados Dados Operacionais Volume Megabytes Histrico 60 a 90 dias Granularidade Detalhados Redundncia No ocorre Atualizao Contnua (tempo real) Uso SQL Select/Insert/Delete/Update/Joins
3.5.

DW Anlise do negcio Informativo OLAP Carga e Consulta Dezenas Alta Gerncia Dados Analticos Gigabytes e Terabytes 5 a 10 anos Resumidos Ocorre Peridica (Batch) Funes Agregadas/SubConsultas

MODELAGEM DE DATAWAREHOUSE E DATA MARTS

Tcnica mais usada: Modelagem Multidimensional (Star Schema Ralph Kimball) Passos: 1. Definir as necessidades gerenciais da empresa: Exemplos: a) Qual o valor das vendas realizadas ao longo dos ltimos 5 anos por estado do Brasil? b) Qual a margem de lucro de um dado produto, por ms e por loja no ltimo ano? 2. Definir as tabelas dimenses que sero necessrias: Objetivo da tabela dimenso: Reunir os atributos que sero utilizados para qualificar as consultas e cujos valores sero utilizados para agrupar e sumarizar as mtricas (ou fatos). Exemplos: Dimenso Produto: (COD_PRODUTO, DESCRICAO, LINHA, CATEGORIA) Dimenso Tempo: (COD_TEMPO, DIA, MS, SEMESTRE, ANO) Dimenso Localidade: (COD_LOJA, LOJA, CIDADE, ESTADO, REGIO) Dados na Tabela Produto: 1 Lpis nmero 2 Faber 2 Caneta Azul Bic Fina 3 CD Regravvel Tent ... ... Dados na Tabela Tempo: 1 01/01/2007 2 02/01/2007 ... ...

Lpis Caneta Suprimento ...

Escolar Escolar Informtica ...

Janeiro 2007 Janeiro 2007 ...

1. Semestre 2007 1. Semestre 2007 ...

2007 2007 ...

30

Dados na Tabela Localidade: 1 EPA BH Dom Cabral Belo Horizonte MG 2 EPA Carmelo Vitria ES ... ... ... ...

Sudeste Sudeste ...

Ateno: Observe a redundncia dos dados nas tabelas (tabelas no normalizadas). 3. Definir a Tabela Fato (Para Data Mart): Objetivo da tabela fato: Conter as mtricas ou valores a serem analisados pelos usurios do DW Exemplo: Vendas (COD_PRODUTO, COD_TEMPO, COD_LOJA, VALORVENDA, QTDEITEM, PRECOMEDIOITEM, CUSTOMEDIOITEM, MARGEMLUCRO, ETC) Dados na Tabela Fato Vendas: 40 5 6 40 5 12 ... ... ... 4. Montar o Star Schema:

432,50 52,50 ...

290 27 ...

2,50 2,40 ...

... ...

31

Representao do modelo estrela:

Observao: Existem verses normalizadas para o modelo estrela (snowflake) 5. Usar ferramenta ETL. 6. Usar ferramentas para anlise dos dados (data mining) e visualizao dos dados.

Concluso: 1. DW voltado para a tomada de decises. 2. No basta ter um modelo bom, necessrio ter boas ferramentas de visualizao. 3. Uso cada vez maior: diferencial competitivo no mercado.
32

4. Estudos de Casos
1. Sistema bancrio Um possui diversas agncias espalhadas pelo Brasil. Um cliente do banco s pode pertencer a uma destas agncias. O cliente solicita abertura de conta corrente e/ou poupana. Existem diversos tipos de movimentaes que os clientes podem realizar nas suas contas como saques, depsitos, dbitos de cheques, extratos, saldos, etc. Estas movimentaes podem ou no serem tarifadas dependendo do tipo do cliente (normal, preferencial, especial, empresarial, etc). Todo dia de vencimento da conta de poupana deve ser executado um processo que atualiza o saldo da conta, baseado numa tabela diria de correo monetria que contm o ndice a ser aplicado. Os histricos das correes monetrias aplicadas nas contas poupanas devem ser mantidos pelo sistema. O cliente pode opcionalmente autorizar que determinadas quantias de sua conta corrente sejam depositadas em aplicaes financeiras como fundos de aes, CDBs, RDBs, etc. Cada tipo de aplicao financeira possui uma tarifa e prazo da aplicao. Quando do vencimento da aplicao ou quanto solicitado o resgate o sistema automaticamente aplica a taxa do dia para a aplicao. Semanalmente devem ser emitidos diversos relatrios estratgicos que mostrem o desempenho geral de cada agncia do banco, clientes com saldos negativos, malas diretas para clientes com saldo acima da mdia. O cliente pode emitir extratos e saldos de contas (corrente e poupana) e aplicaes financeiras em qualquer momento e em qualquer perodo. 2. Sistema de controle de um congresso de informtica Um congresso consiste na seleo de trabalhos versando cada um sobre um nico tema. Para cada tema h um ou mais professores responsveis pela avaliao dos trabalhos submetidos previamente pelos autores. Pode haver mais de um professor por tema, mas cada professor s pode ser responsvel um tema. No h limite quanto ao nmero de trabalhos inscritos por cada autor. Cada professor que avalia um trabalho d uma nota de 0 a 10. Os trabalhos que obtiveram a melhor nota por tema selecionado originando uma palestra que ser apresentada no congresso. As palestras sero realizadas em diversas salas e horrios mas cada palestra s ser apresentada uma vez. A organizao do congresso precisa dispor de informaes sobre a quantidades de lugares e os recursos (como retroprojetor, painel, computador) a serem utilizados por cada uma das palestras. A palestra dever ser apresentada por um dos autores em um tempo previamente combinado para cada um. O pblico realizar avaliao de cada palestra e a mdia obtida da palestra dever ser registrada. Os participantes devem se inscrever para o congresso, podendo assistir qualquer palestra. No certificado de participao devero constar as palestras assistidas por cada participante. Esta informao ser colhida quando da entrada do participante na sala da palestra. importante manter o cadastro das empresas s quais pertencem os participantes para envio de certificado. Se o participante no estiver vinculado a nenhuma empresa seus dados cadastrais devem ser mantidos pelo sistema. O sistema solicitado deve ser capaz de, informar palestras inscritas por tema, com autor(es) e apresentador, resumo; data, sala e horrio de cada palestra; controlar inscries e freqncia dos participantes e emitir os certificados de participao. importante manter no sistema todas as palestras e trabalhos j apresentados nos congressos anteriores. 3.Sistema para uma agncia de turismo Uma agncia de turismo deseja informatizar a oferta e o controle de pacotes de viagens nacionais e internacionais. O gerente usurio forneceu as seguintes informaes. Um pacote um programa turstico nacional ou internacional. Cada pacote turstico envolve vrias cidades numa seqncia previamente definida pela agncia, o que define o roteiro do pacote. O deslocamento para cada cidade do roteiro pode ser feito atravs de meios de transporte distintos. Em cada cidade envolvida no roteiro o turista pode ficar hospedado em um determinado Hotel conveniado o que compreende a estadia nas cidades do roteiro. Um pacote pode ser realizado vrias vezes em pocas diferentes. Cada realizao chamada oferta com preo base, perodo de incio e perodo de trmino. O turista compra uma oferta de um pacote num determinado perodo. Cada cidade recebe uma classificao de acordo com seu atrativo principal (ex. estncia, praia, histrica, montanha, etc). Uma cidade pode receber mais de uma classificao como a Cidade de Salvador que histrica e uma cidade praiana. Atraes locais de uma cidade define os pontos tursticos da cidade e podem ser de diversos tipos como museus, restaurantes, praias, igrejas, etc. importante conhecer a localizao dos pontos tursticos das cidades que fazem parte do roteiro, bem como uma breve descrio do ponto turstico e se for pago a visita o preo estimado. Os hotis conveniados nas cidades que fazem parte do roteiro possuem diferentes categorias (trs, quatro ou cinco estrelas). O usurio deseja obter relatrios contendo quais cidades, estados, ou pases fazem parte do pacote, quais os hotis e suas classificaes por categoria, quais as atraes tursticas de uma cidade, qual a seqncia entre as cidades de um pacote, quais os horrios de chegada e sada de cada cidade e qual o meio de transporte utilizado para os deslocamentos entre elas em cada pacote, qual o tempo de permanncia em dias em cada cidade, qual o idioma principal de cada pas visitado em um pacote internacional, quais os turistas participantes de cada oferta de pacote e de quais pacotes participou o turista, total de vagas em cada oferta, total arrecadado por ofertas de um determinado pacote em um dado ms. 4.Sistema de apurao de uma eleio A Justia eleitoral deseja automatizar o processo de votao e apurao dos votos da prxima eleio. Para isso fornecido o modo de funcionamento da eleio. Cada cidade possui vrias zonas eleitorais que funcionam em prdios requisitados pela Justia Eleitoral, sendo que cada uma das zonas engloba vrias sees eleitorais. importante possuir dados sobre os prdios existentes nas cidades. Vrias zonas eleitorais podem funcionar em um mesmo prdio. Em alguns casos, uma zona eleitoral pode ser dividida em mais de um prdio. Um prdio possui vrias salas onde funcionam as sees eleitorais. Uma seo eleitoral funciona em somente um prdio. Cada eleitor est vinculado a uma seo eleitoral. Na poca da eleio o TRE define as urnas, especifica um nmero a elas e disponibiliza uma listagem de eleitores para cada urna. Uma seo eleitoral est associada e uma e somente uma urna e vice versa. convocado pelo TRE com base na formao escolar do eleitor algumas pessoas responsveis pela urna durante a votao. Isto define a mesa eleitoral composta pelos mesrios com ttulos como presidente de mesa, primeiro secretrio, segundo secretrio, etc. Cada candidato

33

concorre a um cargo (prefeito, deputado municipal, estadual, federal, senador, etc) e filiado a um nico partido poltico. Para cada cargo disputado o eleitor pode votar no candidato, no partido, em branco ou anular o voto. Os votos so totalizados por urna e o sistema deve emitir os boletins de urna. Dever produzir uma listagem de eleitores de cada seo eleitoral e o resultado geral da eleio por seo e por zona. Deve ser ainda emitido uma listagem contendo a totalizao dos 10 candidatos mais votado por cargo, a quantidade de votos por partido para um dado cargo , a quantidade de votos nulos por cargo e a quantidade de eleitores que no votaram por seo e por zona. 5. Sistema estacionamento Modelo O estacionamento Modelo funciona como a maioria dos estacionamentos de BH. Ao deixar o carro o cliente recebe um comprovante no qual consta a placa do veculo, a categoria do veculo e a hora da entrada. Ao sair o cliente apresenta o comprovante e paga em funo do tempo em que o veculo ficou estacionado e da categoria do veculo. Existem 4 categorias de veculos "Pequeno, Mdio, Grande e Especial". Para cada categoria existe uma taxa horria de estacionamento, cobrada a cada 30 minutos. Um recibo de estacionamento com hora de entrada e de sada, placa e categoria do veculo e valor pago entregue ao cliente aps o pagamento da conta. Todos estes dados devem ser armazenados no banco de dados do sistema. O controle de vagas ser automatizado pelo sistema. As vagas do estacionamento so demarcadas em funo das categorias, ou seja, dado uma vaga necessrio saber qual a categoria de veculo ela comporta. O recepcionista atribui as vagas desocupadas aos veculos, na ocasio em que eles entram. Por isso o sistema deve exibir um painel mostrando onde se encontra uma vaga livre de acordo com a categoria do veculo. A vaga passa ento a ser ocupada e torna-se novamente livre com a sada do veculo. Note que importante conhecer em que vaga o veculo est estacionado na ocasio da sada, desta maneira o manobrista no perde tempo em procur-lo. Alm dos clientes avulsos, o estacionamento Modelo atende a mensalistas e empresas conveniadas. Os mensalistas pagam uma boleta mensal de acordo com a categoria dos veculos que possuem e tm direito a estacionar o carro a qualquer hora do dia. Ao entrar no estacionamento, eles identificam-se como mensalistas por meio de uma carteirinha especial, emitida na ocasio do pagamento da mensalidade. Caso um mensalista inicie um contrato durante o ms o valor calculado de maneira proporcional considerando-se os dias que faltam at o final do ms (ms padro de 30 dias). Na carteirinha de mensalistas consta o ms de vigncia e dados do mensalista. importante saber quais os veculos um mensalista possui. As empresas conveniadas fazem um contrato com o estacionamento Modelo no sentido de evitar que seus visitantes paguem o estacionamento. Dados da empresa devem ser armazenados como o nmero, CGC da empresa, endereo, data do contrato, etc. No caso das conveniadas o estacionamento Modelo emite cupons contendo um nmero nico, o nome da empresa e dados do estacionamento e os envia s empresas conveniadas quando solicitado. importante manter o controle dos cupons emitidos. O funcionrio responsvel na empresa conveniada deve carimbar os cupons relativos aos veculos dos visitantes num espao especialmente reservado para essa finalidade. Neste caso o estacionamento no emite um recibo, mas envia ao final de cada ms uma fatura aos conveniados constando a relao dos nmeros dos cupons utilizados pela empresa. Sobre o total da fatura aplicado um desconto padro de 15%. Para efeitos legais o estacionamento deve manter todos os histricos de ocupaes de veculos junto s vagas do estacionamento contendo a placa do veculo, a vaga ocupada, a hora incio e a hora fim que o veculo ocupou a vaga. No importante guardar dados dos clientes avulsos. O controle de status das boletas mensais, faturas e cupons deve ser feito pelo sistema. A qualquer momento pode ser gerado relatrios contendo a taxa de ocupao das vagas, valores recebidos com diaristas, conveniados e mensalistas 6. Sistema para controle de cinemas Deseja-se projetar um sistema que atenda s necessidades de controle dos cinemas e filmes de uma determinada empresa de distribuio de filmes no pas. A empresa de distribuio possui diversos escritrios espalhados pelos municpios do pais. Os escritrios so responsveis por distribuir os filmes para os diversos cinemas da cidade. Em cada municpio existe no mximo um escritrio de distribuio mas um municpio pode possuir vrios cinemas. Cada cinema possui uma identificao nica, um nome fantasia, um endereo completo, incluindo rua, avenida, bairro e CEP. Um cinema pode possuir vrias salas de exibio e necessrio conhecer a capacidade de lotao destas salas. Os filmes so cadastrados no sistema e sempre classificado em um determinado gnero, o que define a censura do filme. Cada filme registrado com um ttulo original, ano de produo e sua durao e se for filme estrangeiro possuir tambm o pais de origem, o ttulo em portugus e se legendado ou dublado. Se o filme for nacional importante saber o nome do principal patrocinador e se foi ou no feito atravs da lei federal de incentivo cultura. Informaes sobre os atores e atrizes que compem o elenco principal do filme importante. Estas informaes so nome e a nacionalidade do ator, alm disso, saber qual o diretor do filme interessante. Existir um nico diretor para cada filme. Os atores/atrizes de um filme podem, obviamente, atuar em diversos filmes, assim como o diretor de um filme pode tambm ser ator neste filme ou ainda mais, ser ator em outro filme. Como j foi dito, alguns cinemas possuem vrias salas de exibio e cada sala pode apresentar mais de um filme em cartaz. As sesses possuem horrios que variam de acordo com a durao do filme, havendo sempre um intervalo de aproximadamente 15 minutos entre elas. As sesses devem ter seu pblico registrado diariamente, para que se permita a totalizao dos assistentes quando o filme sair de cartaz, ou a qualquer instante. A programao semanal do cinema e suas salas um relatrio importante contendo o dia de exibio do filme, sinopse, diretor, hora incio, e uma cotao indicando se o filme bom ou no. Alm das informaes acima os usurios necessitam de relatrios como: apurao do pblico por municpios, por cinemas, e por salas e sesses; permitir uma forma de consulta que dado um determinado ator ou atriz, sejam localizados os cinemas e salas onde esto em cartaz os filmes em que este ator ou atriz atua; em quais cinemas est sendo exibido um determinado gnero de filme; em quais cinemas esto sendo exibido filmes nacionais; e quais filmes de um dado diretor est em cartaz. 7. Sistema hoteleiro Deseja-se desenvolver um sistema para um hotel que atenda aos seguintes requisitos. O hotel possui diferentes quartos que so classificados em uma das seguintes categorias: Presidencial, Econmica, Simples, Duplo ou Triplo. O valor base da diria dos quartos

34

depende da categoria do quarto. Quando o cliente telefona ou vem at o hotel e pede para reservar um quarto a recepo verifica se existe quarto disponvel no perodo solicitado. Caso positivo, o cliente cadastrado e feita a reserva do quarto. Caso negativo, o cliente informado da no disponibilidade do quarto. O perodo possui uma descrio, data incio, uma data fim, uma taxa adicional sobre o valor base da diria dos quartos se o perodo for em alta temporada. Quando o cliente no mais desejar o quarto reservado o funcionrio providencia o cancelamento da reserva, disponibilizando novamente o quarto. Quando o cliente no comparecer ao hotel para hospedar-se at s 12:00hs do dia da reserva, essa deve ser cancelada automaticamente pelo sistema. Quando o cliente ocupar um quarto reservado previamente, caracteriza-se uma ocupao do quarto. Neste caso um pacote com informaes teis sobre a utilizao dos servios do hotel emitido ao cliente. Neste pacote consta o horrio do caf da manh, do almoo, das piscinas, os diversos telefones do hotel, pontos tursticos da cidade, etc. Isto tudo deve ser armazenado pelo sistema. Diariamente verificado se o cliente consumiu algum produto do frigobar do quarto onde est hospedado, para ser armazenado no sistema. No momento de ocupao de um quarto, o cliente recebe uma relao da quantidade e dos preos dos produtos que se encontra no frigobar. Toda vez que um produto consumido dado baixa no estoque. Se a quantidade de estoque de um produto estiver baixo emitido um relatrio gerncia solicitando a compra do produto ao fornecedor previamente cadastrado. Quando o cliente deixar o hotel ser fornecida a respectiva conta e o quarto estar disponvel para limpeza. Quando o quarto estiver limpo a recepo do hotel torna-o disponvel. O cliente pode pagar a conta vista, cheque ou usando carto de crdito. Dados sobre a conta so importantes serem armazenados como a forma de pagamento, valor da hospedagem, total do frigobar, telefonemas particulares do cliente, o valor total dos servios adicionais, dia do pagamento e valor total da conta. Diariamente, deve ser emitido um relatrio contendo os quartos ocupados e no ocupados e o fluxo de caixa do hotel (contas a pagar e a receber). Malas diretas com as promoes de um perodo pode ser enviadas aos clientes.

35

Potrebbero piacerti anche