sexta-feira, 12 de fevereiro de 2010

O que é uma Constraints?

Olá! vamos falar hoje sobre "O que é uma Constraints?"
Bom é um assunto bem interessante, as CONSTRAINTS, que nada mais são restrições que você estabelece para uma coluna no banco de dados, que nada mais é de um método para validar a integridade de todos os dados que entram em sua base.

Bom antes de você começar a ler este tópico recomendo você ler antes sobre a Integridade no Banco de Dados então depois de ler... volte aqui haha.

Constraints bom podemos ter os seguintes tipos:

  • Primary Key (PK) = Está restrição cria um índice único para um conjunto de colunas ou uma coluna para Chave Primaria.
  • Unique = Está Contraint determina que uma coluna não poderá ter 2 linhas com o mesmo valor.
  • Foreign Key (FK ou Chave Estrangeira) = Determina uma coluna ou um conjunto de colunas que possuem valores em outras tabelas, referente a uma referência ou um relacionamento.
  • Check = Especifica a condição que a coluna precisa para salvar o registro.
  • Not Null = Determina que a coluna tem preenchimento obrigatório.

Bom agora deu para você entender melhor sobre o que estamos falando né haha, as opções de restrições (Constraints), temos que aplicar isso na prática, e para isso vou utilizar um exemplo bem simples. Vamos imaginar que você tem que criar uma tabela para receber informações de consultas de empregados na sua empresa, onde no formulario de cadastro existe os campos Código, Nome, Departamento, Sexo, Idade e E-mail. Então nosso código deverá ter os seguintes campos todas com suas restrições para inclusão.

SQL 1º CREATE TABLE EMPREGADOS (
2
º COD NUMBER(6) NOT NULL CONSTRAINT CODEMP_PK PRIMARY KEY,
3
º NOME VARCHAR2(20) NOT NULL,
4
º DEPARTAMENTO VARCHAR2(40) NOT NULL CONSTRAINT DEPTO_FK REFERENCES DEPTO
5
º INITIALLY DEFERRED, 
6
º SEXO CHAR(1) NOT NULL CONSTRAINT CHECK_SEXO CHECK (SEXO IN ('F','M')),
7
º IDADE NUMBER(2) CONSTRAINT CHECK_IDADE CHECK (IDADE > 18),
8
º EMAIL VARCHAR2(40) NOT NULL UNIQUE
9
º )
10
º TABLESPACE USERS;

Agora vamos analisar o código linha por linha afim de entendermos o que está acontecendo.

1º Linha: Está sendo criada a tabela chamada
EMPREGADOS

2º Linha: Vamos criar uma coluna COD onde tem preenchimento obrigatório e está relacionada com outra tabela chamada CODEMP (Código Empregado) como chave primaria.

3º Linha: Criamos uma coluna NOME que o preenchimento é obrigatório.

4º Linha: Criamos uma coluna DEPARTAMENTO onde o preenchimento é obrigatório e como chave estrangeira para a tabela DEPTO e a cláusula DEFERRED significa que a transição poderá ser adiada até o fim da execução do serviço do banco.

6º Linha: Criação da coluna SEXO onde tem preenchimento obrigatório e só será aceito os caracteres F (Feminino) e M (Masculino).

7º Linha: Criamos uma coluna IDADE onde a idade do empregado da empresa tem que ser superior a 18 anos.

8º Linha: Criação da coluna EMAIL onde o preenchimento é obrigatório e não permite que os valores da coluna seja repetido.

10º Linha: Estamos determinando a área de reserva para aquela tabela.

PRONTO! é isso agora você já deve saber utilizar as restrições para suas tabelas e deixar elas mais utilizáveis no sistema.

Até a próxima.

quinta-feira, 11 de fevereiro de 2010

Integridade no Banco de Dados


Olá Pessoal, beleza... estou devolta... 

Bom comecei este artigo pensando em falar sobre Constraints e Triggers, mas antes, deveria falar sobre o que é uma Integridade no Banco de Dados, então, resolvi preparar este artigo que descreve os tipos e exemplificar cada um deles. 

Vamos lá! Let's GO!!!

Integridade é fundamental! 

Quando vamos projetar um Banco de Dados, imaginamos as possíveis formas para que nossa aplicação grave os dados corretamente no Banco de Dados, mas as vezes, esquecemos de definir, a nível de banco, quais as validações que devem ser feitas para evitar inconsistências nos dados e que, futuramente, se tornariam dores de cabeça. 

Em um Banco de Dados, possuímos 3 formas de Integridade

- Integridade de Domínio 
- Integridade de Entidade 
- Integridade Referencial 


Integridade de Domínio 

Neste tipo de integridade, as validações ocorrem em cada campo de nossa tabela (ou entidade), como por exemplo se um campo deve aceitar valores Null ou apenas uma faixa de valores, por exemplo: 

Temos um campo Sexo, que só deve aceitar valores do tipo M ou F e, independente de nossa aplicação, não deverá aceitar outros valores. Com integridade de domínio, podemos fazer isto facilmente. 

Integridade de Entidade 

Já na integridade de entidade, temos validações um nível acima, onde definimos quais campos de nossa tabela são chaves primárias (PK) ou únicas (UK). 

Um exemplo de chave única é o campo de CPF que nunca pode se repetir. 

OBS: Geralmente chaves únicas são chamadas de chaves candidatas, pois são candidatas a chave primária, mas não são uma. 

Integridade referencial 

E por último, mas não menos importante, vemos a Integridade Referencial, onde criamos nossas referências a campos do tipo PK ou UK de outras tabelas, as famosas chaves estrangeiras FK. Lembre-se que eu não posso criar uma referência (relacionamento) de uma coluna se esta não for uma chave primária de outra tabela. 

Este tipo de integridade é fundamental para verificar se um dado será inserido de forma correta e, como é uma chave estrangeira, se este dado realmente existe.

Vamos tirar por exemplo uma tabela chamada PEDIDO e uma CLIENTE. Eu só posso adicionar um registro de PEDIDO se existir um CLIENTE relacionado a ele, e é assim que as verificações acontecem, no momento da inclusão ou alteração, o SGBD verifica se o registro existe e caso não, retorna um erro

Bom, vimos neste artigo um pouco sobre integridade no banco de dados, no próximo irei falar sobre como criar Constraints e Triggers possamos pôr em prática o que vimos hoje. 

Até a próxima.

domingo, 31 de janeiro de 2010

História do SQL Server


Bom falarei sobre o SQL Server, tudo começou em 27 de março de 1987, o presidente da Microsoft na época, Jon Shirley, e o co-fundador e presidente da Sybase, Mark Hoffman, assinaram um acordo onde a Microsoft obteria direitos exclusivos ao produto DataServer da Sybase para o OS/2. Já a Sybase além de obter os royalties da Microsoft, ganharia credibilidade com o endosso de sua tecnologia pela Microsoft.Para ganhar aceitação no mundo dos bancos de dados para PC, onde o dBASE da Ashton-Tate tinha boa parte do mercado, o “novosistema de gerenciamento de banco de dados da Microsoft (licenciado pela Sybase) precisaria interessar à grande comunidade do dBASE. E a maneira mais direta de fazer isso era fazer a Ashton-Tate endossar o produto, e foi exatamente o que a Microsoft fez, um acordo com a Ashton-Tate.

A primeira versão beta do Ashton-Tate/Microsoft SQL Server foi lançada no segundo semestre de 1988

A versão 1.1 do Microsoft SQL Server foi lançada no segundo semestre de 1990.

No início de 1991 o acordo entre a Microsoft e a Sybase foi retificado, possibilitando à Microsoft o acesso de “somente-leitura” ao código-fonte do SQL Server para fins de suporte. Neste mesmo ano a Microsoft lançou uma versão de manutenção, o SQL Server 1.11.

O Microsoft SQL Server versão 4.2 for OS/2 entrou em teste beta no segundo semestre de 1991, tendo sido um desenvolvimento conjunto entre a Microsoft e a Sybase. A versão 4.2 (16-bit) foi lançada em março de 1992.

Em outubro de 1992, surgiu a primeira versão beta do SQL Server for Windows NT e em agosto de 1993 era lançada a versão final para o Windows NT 3.1.

O primeiro beta do SQL Server 6.0 (também chamado de SQL95) surgiu no final de outubro de 1994, e em julho de 1995 era lançado oficialmente o Microsoft SQL Server 6.0.

Em dezembro de 1995 é liberado uma versão beta completa do SQL Server 6.5. 

O SQL Server 7.0 (codinome Sphinx) chegou ao mercado no início de 1999 e colocou o SQL Server no mercado de sistemas de gerenciamento de base de dados relacionais de classe empresarial

Em setembro de 1999 é distribuído o Beta 1 do SQL Server 2000 (versão 8.0 de codinome Shiloh), o Beta 2 foi lançado em abril de 2000 e em agosto a versão final do Microsoft SQL Server 2000.

Em novembro de 2005 é lançado ao público o SQL Server 2005 (codinome Yukon).

O SQL server hoje

Atualemten lançou a versão final do Microsoft SQL Server 2008 (codinome Katmai) foi lançada em agosto de 2008, entre as novidades estão funções para compressão de dados, suporte a informações geo-espaciais e gerenciamento baseado em políticas, além de novas opções de relatórios e serviços de análise.

O MS SQL Server é um SGBD - sistema gerenciador de Banco de dados relacional criado pela Microsoft. Com a nova versão o Microsoft SQL Server 2008 é fornecida uma plataforma de dados confiável, produtiva e inteligente que permite que você execute suas aplicações de missão crítica mais exigentes, reduza o tempo e o custo com o desenvolvimento e o gerenciamento de aplicações e entregue percepção que se traduz em ações estratégicas em toda sua organização.O SQL É um Banco de dados robusto e usado por sistemas corporativos dos mais diversos portes. O Microsoft SQL Server 2008 fornece uma plataforma confiável de dados que permite que a execução de aplicações de missão crítica mais exigentes.

Pessoas têm ilhas de dados em suas organizações, e precisam de uma plataforma que forneça a 'malha' que realmente una tudo e as tornem mais valiosas que a soma de suas partes. É disso que se trata o SQL Server 2008.”

Algumas funções do SQL Server:

Trigger
Stored procedure
SQL User Function
Extended Stored Procedure

Bom é isso ai o site oficial SQL Server.

Invasões e as Vulnerabilidade de (BD)


Olá vou comntar a vocês sobre Invasões e Vulnerabilidades em Banco de Dados (BD), primeiramente vou descrever um pouco o significado dos dois termos porque são muitos amplos tenta falar com poucas palavra e com uma boa conclusão para vocês leitores do meu Blog. Bom vamos lá

Invasão é um meio em que alguem consegue obter os seus dados e informações confidenciais de forma através de um computador acessando a outro computador isto se classifica como um crime eletrônico que geralmente se referem a toda a atividade onde um computador ou uma rede de computadores. Bom isso tem vários timos de invasões de invasores como os intrusos dos sistemas que actuam de duas formas distintas vou citar dois exemplos (intrusos passivos procuram apenas ler ficheiros não autorizados) e os (intrusos activos actuam de forma maliciosa, procurando efectuar alterações não autorizadas nos dados). Atualmente as descoberta desses conteúdos está cada vez mais difícil devido ao uso de técnicas criptográficas, que vem permitindo esconder a informação em textos ou outros documentos, enviando-os sem serem perceptíveis e conseguindo obter os dados das informaçãos.

Vulnerabilidade è um meio vulnerável fácil, bom na computação significa ter brecha em um sistema computacional, também conhecida como bug (inseto do famoso ENIAC). Esta mesma pode ser explorada em um determinado sistema ou serviço vulnerável que esteja rodando na máquina.Umas das grandes vulnerabilidades mais exploradas nos dias de hoje, são as do tipo buffer overflow, que muitas vezes pode dar privilégios de administrador para o invasor, rodar códigos maliciosos remotamente, burlar particularidades de cada sistema, ataques de Negação de Serviços (DDoS), e acesso irestrito ao sistema. Bom existem ferramentas específicas para se explorar as vulnerabilidades, cada ferramenta para a sua respectiva vulnerabilidade a ser explorada (na maioria das vezes escritas em linguagem C e Assembly), essas ferramentas são chamadas de exploits. Outro exemplo prático imagine uma corrente e um anel dela aberto isto é ser VULNERABILIDADE da corrente.

Bom acho que deu para se entender o que é Invasões e Vunerabilidades bom então vou postar sobre algumas invasões e brechas em sistemas de Banco de Dados acompanhem.

Segurança de Banco de Dados


Olá pessol bom falarei hoje sobre a Segurança de Banco de Dados. É um termo muito abrangente não vou conseguir citar todas as vulnerabilidade de todos os Banco de Dados com as formas de invasões e também não vo conseguir citar todas as seguranças especificas de cada Banco de Dados mas vou tentar nos proximos post nesta categoria falar mais profundamente especificando cada Banco hoje uma explicação geral da Segurança de Banco de Dados. Bom vamos lá...

Os Bancos de Dados são utilizados para armazenar diversos tipos de informações, desde dados sobre uma conta de e-mail até dados importantes da Receita Federal. E atualmente a informação é um recurso crítico no dia-a-dia das organizações. Através da informática, todas as operações básicas das empresas estão sendo automatizadas isso como um exemplo, controle de estoque, faturamento, pagamentos, além de suporte a diversas funções da administração como previsão, orçamento e controle financeiro. Para que essas funções sejam possíveis, é necessária a utilização de um Banco de Dados e a utilização deles em muitas aplicações vem abrangendo praticamente todo o campo dos programas de computador.

Para tal existem diversos tipos, os quais variam em complexidade e sobretudo em segurança:

  • Criptografia
  • Senhas
  • Backup

Bom falar um pouco sobre Criptografia para explicar melhor o que é, e porque usa a informação a onde ela pode ser transformada da sua forma original para outra ilegível, de forma que possa ser conhecida apenas por seu destinatário (detentor da "chave secreta"), o que a torna difícil de ser lida por alguém não autorizado. Assim sendo, só o receptor da mensagem pode ler a informação com facilidade.

Uma visão geral da Criptografia

Confidencialidade da Mensagem: só o destinatário autorizado deve ser capaz de extrair o conteúdo da mensagem da sua forma cifrada. Além disso, a obtenção de informação sobre o conteúdo da mensagem (como uma distribuição estatística de certos caracteres) não deve ser possível, uma vez que, se o for, torna mais fácil a análise criptográfica.
Integridade da Mensagem: o destinatário deverá ser capaz de determinar se a mensagem foi alterada durante a transmissão.
Autenticação do Remetente: o destinatário deverá ser capaz de identificar o remetente e verificar que foi mesmo ele quem enviou a mensagem.
Não-Repúdio ou Irretratabilidade do Emissor: não deverá ser possível ao emissor negar a autoria da mensagem.

Enfim tem vários tipos de Criptografias.

Uma visão geral de Senhas

A senha (PT-Brasil) ou palavra-chave (PT-Portugal), por vezes referida no inglês password, é uma palavra ou uma ação secreta previamente convencionada entre duas partes como forma de reconhecimento. Em um sistemas de computação, senhas são amplamente utilizadas para Autenticar Usuários e conceder-lhes privilégios — para agir como administradores de um sistema, por exemplo — ou permitir-lhes o acesso a informações personalizadas armazenadas no sistema em fim ela serve para ajudar a proteger sua privacidade.

Uma visão geral de Backup

Backups em informática, Cópia de Segurança é a Cópia de Dados de um dispositivo de armazenamento a outro para que possam ser restaurados em caso da perda dos dados originais, o que pode envolver apagamentos acidentais ou corrupção de dados.

Vem se difundidos em vários meios de cópias de segurança incluem CD-ROM, DVD, disco rígido, disco rígido externo (compatíveis com USB), fitas magnéticas e a cópia de segurança externa (online). Esta transporta os dados por uma rede como a Internet para outro ambiente, geralmente para equipamentos mais sofisticados, de grande porte e alta segurança. Outra forma pouco difundida de cópia de segurança é feita via rede. Na própria rede local de computadores, o administrador ou o responsável pela cópia de segurança grava os dados em um formato de arquivo, processa e distribui as partes constituintes da cópia nos computadores da rede, de forma segura (arquivos são protegidos), criptografada (para não haver extração ou acesso aos dados na forma original) e oculta (na maioria das vezes o arquivo é ocultado).

Bom Backups é um meio de salvar as informaçãos para não obter a perca da Base de Dados do sistema ou qualquer aplicativo que obtenho informações é isso ai haha.

Concluindo

Bom é isto ai a Segurança de um Banco de Dados ela contem estes procedimento básico qualquer um Banco de Dados embreve irei citar mais sobre as Seguranças voltada a cada especifico tipo de Banco como exeplo PostgreSQL, MySQL, Oracle, Firebird e enfim muitos outros e também irei citar outros meio como Invasão e Vulnarabilidades aos Banco de Dados mas em outra catégoria ai está o link (Invasões aos Banco de Dados e as Vulnerabilidade aos Banco de Dados). É isso ai espero que gostem.

MySQL Proxy


Bom hoje irei falar um pouquinho sobre o MySQL Proxy é uma aplicação, em fase inicial, que você instala entre sua aplicação e o MySQL.

Permite monitorar, analizar e transformar as comunicações. Sua flexibilidade permite um número ilimitado de usuários, balanceamento de carga, teste de falha, análise de
querys, filtros e modificações de querys e muito mais.

Disponível para Linux, Mac OSX, FreeBS
D, IBM AIX e Sun Solaris, isso mesmo, para Windows ainda não esta disponível por ter problemas com uma biblioteca libevent, porém em breve estará disponível também.
Bom isto ai é um ele é um Otimizador de Banco de Dados muito bom.
Downloads: MySQL Proxy

sábado, 30 de janeiro de 2010

Exercícios de SQL

Bom vou passar uns Exercícios de SQL de acordo com as duas tabelas a abaixo... Vamos lá

Bom por primeiro vocês vejam as tabelas de acordo com os dados referentes a cada campo.
Um comando SQL é sempre na sequência não utilize a quebra de linha.

1º)  Mostrar todos os cds
Select * from cds

2º)  Mostrar os campos nome e data da compra dos cds ordenados por nome
Select Nome, DataCompra From Cds Order By Nome

3º) Mostrar os campos nome e data da compra dos cds classificados por data de compra em ordem decrescente
Select Nome, DataCompra From Cds Order By DataCompra Desc

4º) Mostrar o total gasto com a compra dos Cds
Select Sum(ValorPago) as Total From Cds

5º) Mostrar todas as músicas (todos os campos) do cds código 1
Select * From Musicas Where CodCd=1

6º) Mostrar o nome do Cd e o nome das músicas de todos Cds
Select c.Nome, m.Nome From Cds c, Musicas m Where c.Codigo=m.CodigoCd

7º) Mostre o nome e o artista de todas músicas cadastradas
Select Nome, Artista From Musicas

8º) Mostre o tempo total de músicas cadastradas
Select Sum(Tempo) Total From Musicas

9º) Mostre o número, nome e tempo das músicas do cd 5 em ordem de número
Select Numero, Nome, Tempo From Musicas Where CodigoCd=5 Order By Numero

10º) Mostre o tempo total de músicas por cd
Select c.Nome, Sum(m.Tempo) as Total From Cds c, Musicas m Where c.Codigo=m.CodigoCd Group By c.Nome

11º) Mostre a quantidade de músicas cadastradas
Select Count(*) as Qtde From Musicas

12º) Mostre a média de duração das músicas cadastradas
Select AVG(Tempo) as Media From Musicas

13º) Mostre a quantidade de Cds
Select Count(*) as Qtde From Cds

14º) Mostre o nome das músicas do artista José Pedro
Select Nome From Musicas Where Nome='José Pedro'

15º) Mostre a quantidade de músicas por cds
Select c.Nome, Count(*) as Qtde From Cds c, Musicas m Where c.Codigo=m.CodigoCd Group By c.Nome

16º) Mostre o nome de todos cds comprados no Submarino
Select Nome From Cds Where LocalCompra='Submarino'

17º) Mostre o nome do cd e o nome da primeira músicas de todos cds
Select c.Nome, m.Nome From Cds c, Musicas m Where c.Codigo=m.CodigoCd And m.Numero=1

18º) Mostre uma listagens de músicas em ordem alfabética
Select * From Musicas Order By Nome

19º) Mostrar todos os cds que são albuns
Select * From Cds Where Album=True

20º) Mostre o cd que custou mais caro
Select Max(ValorPago) From Cds

Bom é isso ai uns exemplos fácil de comandos SQL de Select espero que tenha ajudado com alguma coisa. É isso ai so práticar agora.
 Copyright © 2008-2010 All Right Reserved - Todos os Direitos Reservados Elder Stroparo