Normalização em Banco de Dados

Oi pessoal, quanto tempo? Pois é, a algum tempo não escrevo aqui no blog, mas estamos de volta com um assunto muito discutido, onde enfrentamos a todo o momento no nosso dia-a-dia. Encontrei esse material e achei de fácil entendimento, e resolvi postar no blog.

Referência: http://www.blogdati.com.br/index.php/2010/03/normalizacao-em-banco-de-dados/

 O que é Normalização em Banco de Dados?

É um processo onde se aplica regras a todas as entidades (tabelas) do banco de dados, afim de evitar falhas no projeto, como redundância de dados, mistura de diferentes assuntos numa mesma entidade, entre outros problemas. As formas normais mais conhecidas, são a primeira, segunda e terceira formas normais. Basicamente, aplicando e respeitando as regras de cada uma dessas formas normais, poderemos garantir um banco de dados mais íntegro, com uma grande possibilidade de sucesso no seu projeto.

 1FN – Primeira Forma Normal

Uma entidade estará na 1FN, se e somente se, todos seus atributos (colunas) forem atômicos, ou seja não conter grupos repetitivos ou colunas que tenham mais de um valor.

Passos a serem aplicados para consolidação da 1FN:

– Identificação da chave primária da tabela.
– Identificação da coluna que contem dados repetidos e removê-las.
– Criação de uma nova tabela com chave primária para armazenamento do dado repetido.
– Criar uma relação entre a tabela principal e a tabela secundária

Ex. Na tabela acima, podemos identificar que o campo Telefones, contém informações de mais de 1 telefone do cliente. Nesse caso, teremos que criar uma outra tabela, para que possamos armazenar corretamente os telefones dos clientes. Abaixo como as tabelas devem ficar após a normalização.

2FN – Segunda Forma Normal

Uma entidade está na 2FN, se e somente se, estiver na 1FN e todos seus atributos (colunas) não chaves, dependam unicamente da chave primária. Se algum atributo depende de apenas uma parte da chave primária, isso é considerada uma violação da 2FN.

Passos a serem aplicados para consolidação da 2FN:

– Identificar colunas que não são funcionalmente dependentes da chave primária da tabela
– Remover a coluna da tabela e criar uma nova tabela com esses dados

Ex. Nesse exemplo, temos uma tabela que armazena dados de vendas de produtos. Para aplicar a 2FN, temos que separar os dados dos produtos, em uma entidade que contenham somente dados dos produtos, e nessa tabela de pedidos apenas dados referentes aos pedidos. Segue exemplo abaixo após aplicação da 2FN.

3FN – Terceira Forma Normal

Uma entidade está na 3FN, se e somente se, estiver na 2FN e todos os atributos (colunas) não chave, forem mutuamente independentes, isto é, não há dependência funcional entre elas, e todas dependem única e exclusivamente da chave primária de forma irredutível.

Passos a serem aplicados para consolidação da 3FN:

– Identificar as colunas que são funcionalmente dependentes das outras colunas não chave
– Remover essas colunas

Ex. Como podemos ver no exemplo acima, temos duas colunas indicando os valores do produto. A coluna ValorTotal, depende de uma outra coluna não chave. Isso é um exemplo de informação redundante, ou seja, temos como saber o valor total dos produtos, sem a necessidade de armazená-lo. Nesse caso, vamos remover a coluna ValorTotal. Após aplicar a 3FN a tabela ficará assim:

Existem outras formas normais, como a quarta e a quinta, porém, com a aplicação destas três formas normais, já poderemos garantir um banco de dados mais saudável e assim evitar possíveis problemas no futuro.

Espero que tenham gostado, e tenha sido útil para vocês.

Abraços e até a próxima.

gbabarroso

Qual Data Type Utilizar: Char ou Varchar?

Oi galera, tudo jóia? Desculpem por ficar mais um tempo sem escrever algum artigo. Segue um artigo bem interessante e que muitos desenvolvedores SQL já me perguntaram sobre esse tema: Qual datatype utilizar em um campo string Char ou Varchar?

Esses dois datatypes se parecem, mas possuem diferenças no armazenamento e na extração dos dados. Vejam abaixo:

Varchar
Quando utiliza o datatype varchar para armazenar um campo string, se ganha em espaço no banco de dados ao armazenar um dado, pois ele trunca o campo no tamanho total de caracteres inseridos, exemplo:

create table DescricaoVarchar
(
Descricao   varchar(100)
)
go
insert into DescricaoVarchar values (‘InsercaoCampoVarchar’)

O dado ‘InsercaoCampoVarchar’ possui 20 caracteres, portando dos 100 caracteres atribuídos o dado será trucado e será armazenado somente 20 caracteres e não 100.

Mas perde performance na extração dos dados no momento da execução de um script T-SQL, pois a query terá que “varrer” o campo por inteiro para validar as informações que estão sendo extraídas.

Char
Já o datatype char é o contrário, ganha em performance e perdemos em armazenamento, veja exemplo abaixo:

create table DescricaoChar
(
Descricao   char(100)
)
go
insert into DescricaoChar values (‘InsercaoCampoChar’)

O dado ‘InsercaoCampoChar’ mesmo tendo um tamanho de 17 armazenará 100 caracteres:
‘InsercaoCampoChar                                                                                                                                              ‘

Ou seja, sempre armazenará o total dos dados, mas teremos ganhos em performance, pois o comando T-SQL sempre percorrerá 100 caracteres e não terá que contar caracter por caracter (como no datatype varchar) dentro de um campo para verificar as condições que estão sendo solicitadas.

Então, qual datatype utilizar?Dependerá exclusivamente o que será inserido dentro do campo e qual será a demanda de consultas utilizando esse campo. Lembrando que temos sempre que pensar em um banco, Normalizado e Performático.

Um grande abraço galera e até a próxima.

Atenciosamente,
Gabriel B Azevedo

Analista de Sistemas Pleno e SQL Developer Pleno
https://gabrielccomputacao.wordpress.com

Palestra: Introdução ao SQL Server 2008 e o Mercado de Trabalho

XI WorkShop de Informática da UNIVALE

Ministrei uma palestra sobre o SQL Server 2008, voltado ao desenvolvimento e ferramentas, e o Mercado de Trabalho para o XI Worshop de Informática da Faculdade de Ciências Tecnológicas (FATEC) da Universidade Vale do Rio Doce (UNIVALE) em Governador Valadares.

Evento que o ocorreu entre os dias 04 e 08 de Outubro de 2010 no Campus II da Universidade. O evento visa promover o debate técnico-científico no âmbito da UNIVALE; divulgar a produção técnico-científica da UNIVALE de modo geral e, em particular, da FATEC, e debater a tecnologia em Governador Valadares e região. É uma oportunidade de apresentar à comunidade a produção e a capacidade científica dos alunos da FATEC nas suas mais diversas áreas, estimulando e discutindo os trabalhos realizados, o que leva à descoberta e à pesquisa. Durante o evento serão realizadas Palestras, Apresentações Orais, Mini-cursos. Também será oportunizado às empresas de informática apresentarem seus produtos e serviços às comunidades acadêmica e Valadarense. A importância do evento está em acreditar na capacidade criativa dos universitários, dando-lhes todo embasamento para transformar seus projetos em realidade, em experiências práticas de laboratório, usando a criatividade e aplicando o conhecimento adquirido na busca pessoal, e em equipe, de suas potencialidades e da autoconfiança. Ao incentivar a base teórica na aplicação do campo científico, a FATEC demonstra seu engajamento e sua fé na produção do ensino superior e nas inúmeras oportunidades que se abrem no campo científico e pedagógico da UNIVALE.

Site: http://www.nli.univale.br/workshop

Coordenadores do Evento: Prof. Helder Rodrigues da Costa – helder@univale.br Prof. Marcos Antônio Moreira – marcosmoreira@univale.br Profa. Rossana Cristina Ribeiro Morais – sistemainformacao@univale.br

Fotos da Palestra: http://www.facebook.com/album.php?aid=40586&id=100000099127252

Stored Procedures – Como criar? E quais benefícios e ganho de desempenho?

Pessoal,
Boa noite!

Como estão? Estou aqui mais uma vez para contribuir com um pouco de meu conhecimento.

Irei falar hoje sobre Stored Procedures (SP), que é um grupo de coleções Transact-SQL (T-SQL) pré compiladas em um banco de dados SQL Server. Stored Procedure é um método de encapsulamento de tarefas repetitivas. As SP’s podem ajudá-los a alcançar uma execução lógica de aplicativos.

Em uma stored procedure é permitido que seja passados parâmetro de entrada, com o objetivo de atender uma condição necessária em uma instrução T-SQL.

Sintaxe de criação de uma Stored Procedure:

— Verificar se a procedure já existe, se sim, DROPA e CRIA ela novamente
If exists (select 1 from sys.procedures where name = ‘spSelectAlunos’)

      Drop Procedure Student.spSelectAlunos

Go
— Toda procedure deve ser criada com seu Schema. No exemplo abaixo utilizamos o schema Student

create procedure Student.spSelectAlunos

(

      @CPF  char(11)

)

As

Begin

      select *

        from dbo.Alunos

       where Alunos.CPF = @CPF

End
— Controle de Segurança
GRANT ALL ON Student.pSelectAlunos TO PUBLIC

Considerações da sintaxe de criação de uma stored procedure:

a)      Deve-se verificar se a procedure já existe no banco de dados, dropa ela e cria novamente. Mas por que não utilizar ALTER PROCEDURE? Também pode ser utilizado, o exemplo deste artigo é um padrão que adotei para poder atualizar a documentação interna da procedure (citarei abaixo);

b)      Toda procedure deve possuir seu schema para que não haja problemas/conflitos de execução, pois pode-se possuir procedures com o mesmo nome em schemas diferentes;

c)       Passar os devidos parâmetros de entrada da stored procedure. Não é obrigatório, dependerá da necessidade de cada desenvolvedor T-SQL.

 Modelo de Documentação de uma Stored Procedure

Para facilitar uma futura manutenção em uma Stored Procedure, é interessante documentá-la desde a sua criação à todas as alterações realizadas. Abaixo segue um simples modelo:

/******************************************************************************/
/* TTULO : Student.pSelectAlunos                                                                                               */
/* DEFINIO : CONSULTA DE ALUNOS POR CPF                                                                            */
/* DATA DE CRIAO : 02/05/2010                                                                                                  */
/* ANALISTA : GABRIEL B AZEVEDO                                                                                               */
/* EMPRESA : BARROSO CONSULTORIA EM TI                                                                            */
/*——————————————————————————————————————-*/
/* BANCO DE DADOS: MicrosoftMsdnTechnet                                                                           */
/******************************************************************************/
/* ALTERACOES REALIZADAS NA PROCEDURE                                                                               */
/*——————————————————————————————————————-*/
/* DATA – NOME – EMPRESA – DESCRICAO                                                                                     */
/* 02/05/2010 – Gabriel Azevedo – Barroso Consultoria em TI – Criao                                 */
/*——————————————————————————————————————-*/
/******************************************************************************/

Para completar o modelo acima, pode-se colocar o ambiente onde se encontra o Banco de Dados, as tabelas envolvidas, considerações, etc.

Controle de Segurança da Stored Procedure

Dentro da própria stored procedure pode-se configurar a permissão de acesso dos usuários. Como permissão de acesso é um tema grande, não irei detalhar muito, mas abaixo segue um exemplo de sintaxe, onde é liberado o acesso FULL de usuários do grupo PUBLIC:

GRANT ALL ON Student.pSelectAlunos TO PUBLIC

Quais são os Benfícios e o Ganho de Desempenho de uma Stored Procedure?

Ø  São registradas no servidor

Ø  Podem possuir atributos de segurança (com permissões) e encadeamento de propriedade

Ø  O usuário pode ter permissão de executar a stored procedure sem ter permissão em objetos internos da SP

Ø  Aumenta a segurança da aplicação

Ø  Permitem programação modular

Ø  A stored procedure pode ser criada uma única vez e ser chamada quantas vezes houver necessidade. Isso facilita na manutenção de sua aplicação

Ø  Podem reduzir o tráfego de rede

Ø  Por serem pré compiladas o tempo de execução é muito mais ágil do que você inserir as instruções diretas dentro de uma aplicação

Segue link do artigo em PDF:

http://cid-25e3f6074be4e9f6.skydrive.live.com/self.aspx/SQL%20Server%202008/MS%20SQL%20Server%202008%20-%2000006-2010%20-%20Stored%20Procedures.pdf

Espero mais uma vez ter contribuído no conhecimento a vocês.

Grande abraço a todos e até a próxima. Sucesso sempre!!!

Att.
Gabriel B Azevedo

Funções e Conversões de Datas

Pessoal,
Boa noite!

Desculpem por ficar 1 mês sem escrever um artigo se quer, é a correria do dia-a-dia. Hoje irei falar um pouco sobre as funções e as conversões de datas. As funções de data são usadas para obter acesso às características de tempo disponibilizadas no SQL Server. Seguem abaixo algumas funções de datas:

DATEADD – Retorna uma determinada data com base no valor inteiro determinado no segundo parâmetro. Exemplos:

select dateadd(day, 5, getdate())  as AdicionaCincoDias,

DATEDIFF – Retorna a contagem, valor inteiro, entre duas datas, início e fim. Exemplos:

select datediff(month, ‘1986-01-25’, ‘2010-01-25’) as QuantidadeMeses,

 

DATENAME – Retorna uma quantidade de caracteres especificada pelo primeiro parâmetro.

select datename(year, ‘1986-01-25’)      as Ano

 

DATEPART – Retorna um valor inteiro que representa o primeiro parâmetro identificado.

select datepart(day, getdate())    as Dia,

Conversões de Datas

Na tabela abaixo seguem as conversões que podem ser utilizadas para exibição através de uma query dentro de um select list:

Com Centena

Páis

Entrada/Saída

100

Default

month DD YYYY h:min(AM/PM)

101

USA

MM/DD/YYYY

102

ANSI

YYYY.MM.DD

103

Brasil

DD/MM/YYYY

104

Alemanha

DD.MM.YYYY

105

Itália

DD.MM.YYYY

106

DD month YYYY

107

month DD, YYYY

108

hh:mm:ss

109

Default + miliseconds

hh:mm:ss

110

USA

MM-DD-YYYY

111

Japão

YYYY/MM/DD

112

ISO

YYYYMMDD

113

Default Europa + miliseconds

DD month YYYY hh:mm:ss:ms(24h)

114

hh:mm:ss:ms(24h)

120

ODBC canonical

YYYY-MM-DD hh:mm:ss(24h)

121

ODBC canonical (with miliseconds)

YYYY-MM-DD hh:mm:ss:ms(24h)

126

ISO 8601

YYYY-MM-DDThh:mm:ss:ms(24h)

131

Hijri

dd/mm/yyyy hh:mm:ss:msAM

 

Abaixo exemplo de código T-SQL para conversão dedatas:

select      CONVERT(varchar, getdate(), 100) as ‘100’,

            CONVERT(varchar, getdate(), 101) as ‘101’,

            CONVERT(varchar, getdate(), 102) as ‘102’,

            CONVERT(varchar, getdate(), 103) as ‘103’

 

Vimos neste artigo, exemplos do uso de funções e conversões de data no SQL Server 2008. Outros SGBDs implementam funções de data, provavelmente com sintaxe diferente. Consulte a documentação do SGBD que você utiliza, para obter maiores detalhes.

Espero mais uma vez ter contribuído no conhecimento a vocês.

Grande abraço a todos e até a próxima. Sucesso sempre!!!

Certificações Microsoft em SQL Server 2008

Boa noite pessoal!
 
Em muito fóruns já falam sobre as certificações Microsoft, mas mesmo assim juntei algumas informações para passar pra vocês. Espero que todos gostem do artigo e quem se interessar basta estudar muito.
Qualquer dúvida, estou a disposição para esclarecimentos.

A Nova Geração de Certificações Microsoft
A nova geração de Certificações Microsoft está mais específica e direcionada a refletir aquilo que você faz, comprovando o seu conhecimento para todo o mercado de TI.

Composta por três séries e quatro credenciais, a nova geração de certificações Microsoft fornece uma estrutura mais simples e direcionada para os gerentes de TI validarem os conhecimentos técnicos, profissionais, avançados e arquitetônicos dos profissionais. Ela fornece também aos profissionais do mercado de TI uma forma mais relevante, flexível e econômica de demonstrar seus conhecimentos.

Por que adquirir uma certificação?
A conquista de uma Certificação Microsoft comprova seu conhecimento e sua experiência no uso dos produtos e soluções da Microsoft. O projeto das Certificações Microsoft leva em conta sua relevância no mercado de TI atual, que está em constante alteração. Com essas certificações você pode usar tecnologias avançadas, aprimorar suas habilidades de solução de problemas e melhorar sua satisfação em relação ao trabalho.

Você pode ser um iniciante no uso da tecnologia, pode estar mudando de emprego ou ser um profissional de TI experiente; seja como for, A conquista de uma certificação mostrará a clientes, colegas e empregadores que você está empenhado em aperfeiçoar suas habilidades e aceitar desafios maiores. Além disso, a certificação proporciona acesso a recursos e benefícios exclusivos para MCPs (Microsoft Certified Professionals – Profissionais Certificados pela Microsoft), incluindo a oportunidade de entrar em contato com uma ampla rede internacional de MCPs.

Microsoft Certified Technology Specialist (Especialista em Tecnologia Certificado pela Microsoft)

Ao adquirir uma Certificação MCTS, você demonstrará seu conhecimento técnico aprofundado e sua habilidades no uso das principais áreas tecnológicas do Microsoft SQL Server. Você pode demonstrar a profundidade de seus conhecimentos em uma área específica, adquirir várias certificações MCTS para mostrar a amplitude de seus conhecimentos em diferentes áreas, ou aperfeiçoar-se em uma certificação MCTS para ganhar uma credencial da Professional Series (Série Profissional).
:: Saiba mais sobre a certificação MCTS para SQL Server 2008 e SQL Server 2005

Cursos e Exames:

Exame 70-432 (Implementação e Manutenção) e 70-433 (Desenvolvimento)

2778 – Writing Queries Using Microsoft SQL Server 2008 Transact-SQL
6231 – Maintaining a Microsoft SQL Server 2008 Database
6232 – Implementing a Microsoft SQL Server 2008 Database

Exame 70-448 (BI – Business Intelligence – Desenvolvimento e Manutenção)

6234 – Implementing and Maintaining Microsoft SQL Server2008 Analysis Services
6235 – Implementing and Maintaining Microsoft SQL Server 2008 Integration Services
6236 – Implementing and Maintaining Microsoft SQL Server 2008 Reporting Services

Microsoft Certified IT Professional (Profissional de TI Certificado pela Microsoft)

Ao adquirir uma certificação MCITP, você demonstra sua qualificação para o uso do Microsoft SQL Server e se destaca em uma determinada atividade profissional. Os profissionais que ganham a credencial MCITP têm, normalmente, de dois a três anos de experiência no uso das tecnologias abordadas no exame e já adquiriram a credencial MCTS. Os caminhos para a certificação MCITP são baseados nos pré-requisitos da MCTS.
::
Explore agora os caminhos da certificação MCITP para SQL Server 2008 e SQL Server 2005


Cursos e Exames:

Exames 70-432 (Requisito Obrigatório – MCTS Implementação e Manutenção) 70-450 (Administrador de Banco de Dados)

2778 – Writing Queries Using Microsoft SQL Server 2008 Transact-SQL
6231 – Maintaining a Microsoft SQL Server 2008 Database

6232 – Implementing a Microsoft SQL Server 2008 Database 

Exames 70-433 (Requisito Obrigatório – MCTS Desenvolvimento) e 70-451 (Profissional de TI em Desenvolvimento SQL)
2778 – Writing Queries Using Microsoft SQL Server 2008 Transact-SQL
6231 – Maintaining a Microsoft SQL Server 2008 Database

6232 – Implementing a Microsoft SQL Server 2008 Database

Exames 70-448 (Requisito Obrigatório – MCTS BI – Desenvolvimento e Manutenção) e 70-452
6234 – Implementing and Maintaining Microsoft SQL Server2008 Analysis Services
6235 – Implementing and Maintaining Microsoft SQL Server 2008 Integration Services
6236 – Implementing and Maintaining Microsoft SQL Server 2008 Reporting Services

 

MCM (Microsoft Certified Master – Mestre Certificado pela Microsoft)


Destaque-se como o especialista técnico. O programa MCM (Microsoft Certified Master – Mestre Certificado pela Microsoft) ajuda os melhores profissionais da indústria de TI a melhorar ainda mais. Se quiser aprimorar e validar suas habilidades avançadas ou impulsionar sua carreira, a certificação Microsoft Certified Master proporcionará a você um diferencial para competir com outros profissionais de TI sênior. Esse programa exclusivo consiste em três semanas de treinamento prático obrigatório, ministrado por especialistas, e extensos testes escritos e realizados em laboratório. O conhecimento prático dos candidatos em relação ao produto, a perspicácia técnica, o conhecimento das práticas recomendadas, a perseverança pessoal e profissional e as habilidades de comunicação constituem características constantemente desafiadas durante a preparação para essa que é a principal certificação técnica da Microsoft.
Saiba mais sobre a certificação MCM para SQL Server 2008

Cursos e Exames:

Exames: 70-442 / 70-443 / 70-450 / 70-451 – Mestre Certificado pela Microsoft
2778 – Writing Queries Using Microsoft SQL Server 2008 Transact-SQL
6231 – Maintaining a Microsoft SQL Server 2008 Database

6232 – Implementing a Microsoft SQL Server 2008 Database

Exames: 70-442 / 70-443 / 70-448 / 70-450 / 70-451 / 70-452 – Mestre Certificado pela Microsoft em Business Intelligence

2778 – Writing Queries Using Microsoft SQL Server 2008 Transact-SQL
6231 – Maintaining a Microsoft SQL Server 2008 Database
6232 – Implementing a Microsoft SQL Server 2008 Database
6234 – Implementing and Maintaining Microsoft SQL Server2008 Analysis Services
6235 – Implementing and Maintaining Microsoft SQL Server 2008 Integration Services
6236 – Implementing and Maintaining Microsoft SQL Server 2008 Reporting Services

Abraços e até a próxima.

SQL Server 2008 – Upgrade Technical Reference

Boa Noite Pessoal,

 Foi liberado o Upgrade Technical Reference do SQL Server 2008.
 Para quem não sabe esse Ebook trata-se de um verdadeiro guia para tornar a migração para o SQL Server 2008 bem mais fácil informando diversos cuidados técnicos e observações a serem feitas para que essa migração seja o mais simples possível.
 Acho que é um leitura obrigatória para todos que pretendem atualizar para o 2008.

SQL Server 2008 Upgrade Technical Reference Guide
http://www.microsoft.com/downloads/details.aspx?FamilyID=66D3E6F5-6902-4FDD-AF75-9975AEA5BEA7&displaylang=en

 

Abraços e até a próxima.

 

Atenciosamente,

Gabriel B Azevedo

Analista de Sistemas – Pentacom It Solutions
gabriel.ccomputacao@hotmail.com