Olá Pessoal,
Blog em novo endereço: http://marcelo.todoinfo.com.br
Obrigado
Exportando dados para o SQL Server
Problemas encontrados:
Todos que tentam exportar suas bases para outros lugares tem um problema com o exportador. Ou você exporta a estrutura ou você exporta os dados.
Solução:
Ferramenta DataBase Publishing
Tem plugin para o Visual Studio
Vai script de insert, estrutura de tabelas, schemas, triggers, procedures e views.
Links para download:
Tamanho: 2MB
64bits tem que baixar esse também, senão vai ocorrer um erro ao utilizar a ferramenta acima:
Tamanho: 15mb
Seguem alguns screenshots:
Iniciar –> Programas –> Microsoft SQL Server Database Publishing Wizard

Vindo pelo windows temos a tela a seguir, onde você coloca os dados do banco que você quer gerar o script, caso venha pelo Visual Studio esta tela não terá a segunda opção.

Após colocar os dados corretos, temos a tela a seguir, na qual escolheremos nosso banco.

Escolhendo o banco, temos na tela abaixo a opção de salvar o arquivo no disco fisico ou então publicar em algum outro endereço.

Depois de escolher onde salvaremos, vamos ter algumas opções, como esta mostrando na tela abaixo.

Após colocarmos as opções que desejamos, temos o resumo do que foi feito.
Agora é só finalizar.

Se formos pelo visual studio temos o item Publish to Provider, como mostra abaixo.

Bom por hoje é só.
Obrigado,
Marcelo
Olá Pessoal,
Segue meu twitter para quem quer me seguir por la:
http://www.twitter.com/marcelo_abib
Abraço,
Marcelo
Olá Pessoal,
Hoje estaremos abordando a criação de uma tabela com chave estrangeira ou foreign key.
Abordaremos então:
- O que é uma chave estrangeira(FK)?
- Colocando em prática
- Por que usar?
Bom pra começar chave estrangeira ou foreign key, é a relação entre duas tabelas tendo na tabela “mãe” a referência da tabela “filho”.
Ficou confuso?
vamos exemplificar, todos nós sabemos que um cliente precisa morar em uma cidade, então temos a tabela “mãe” que é a Cliente, onde nos atributos tem a referência da tabela filho que é a Cidade, conforme mostro a seguir:
Cliente Cidade
( (
ClienteId(PK) CidadeId(PK)
Nome Cidade
Endereco Estado
Telefone )
CidadeId(FK)
)
reparem que coloquei uma coluna chamada CidadeId, o que é essa CidadeId? Nada mais é que a chave primaria da tabela Cidade e a chave estrangeira da tabela Clientes.
Pois na hora de inserir registros na tabela de Clientes, ao invés de inserirmos Campinas, Vinhedo, Valinhos, nós armazenaremos a referência delas na tabela de Cidade.
CidadeId Cidade Estado
1 Campinas SP
2 Valinhos SP
3 Vinhedo SP
Na tabela de Cliente só iremos armazenar 1,2 ou 3, que são os registros existentes na tabela de Cidade, caso um “engraçadinho” tente inserir um 4 por exemplo, sem que ele esteja na tabela de Cidade dará um erro de chave estrangeira, não sendo possível a gravação.
Agora entendi, mas como crio uma chave estrangeira?
Simples, iremos criar as tabelas Cliente e Cidade primeiro. Uma boa prática para criação de tabelas, é sempre começar pelas tabelas simples, ou seja, aquelas que não possuem chave estrangeira.
CREATE TABLE Cidade
(
CidadeId int not null IDENTITY(1,1),
Cidade nvarchar(64) not null CONSTRAINT UQ_Cidade_Cidade UNIQUE,
Estado char(2) not null,
CONSTRAINT PK_Cidade_CidadeId PRIMARY KEY(CidadeId)
)
CREATE TABLE Cliente
(
ClienteId int not null IDENTITY(1,1),
Nome nvarchar(128) not null,
Endereco nvarchar(128) not null,
CidadeId int not null,
CONSTRAINT PK_Cidade_ClienteId PRIMARY KEY(ClienteId),
CONSTRAINT FK_Cliente_Cidade_CidadeId FOREIGN KEY(CidadeId) REFERENCES Cidade(CidadeId)
)
Repare que na tabela Cliente, eu crio a chave estrangeira, mas esse não é o único jeito de criar. Poderiamos ter criado as tabelas Cliente/Cidade, e depois usar a keyword ALTER TABLE para estar adicionando a chave, conforme mostro abaixo:
ALTER TABLE Cliente
ADD CONSTRAINT FK_Cliente_Cidade_CidadeId
FOREIGN KEY(CidadeId)
REFERENCES Cidade(CidadeId)
Bom, já entendi o que é, já criei a chave, mas por que utiliza-la?
Pois bem, utilizamos ela para:
* Manter a concistência do banco de dados
* Para criação de indices, na qual estaremos vendo adiante.
* Para otimização do banco de dados.
* Para facilitar a manutenção.
Pessoal, por hoje é só, quem tiver dúvidas no assunto, pode comentar que eu respondo ou ainda me mandar e-mail: marcelinho.ruliz@gmail.com
Abraço,
Té mais.
Olá Pessoal,
Estaremos conversando sobre SGDBs e respondendo perguntas como:
- O que são os SGDBs
- Exemplos de SGDBs
No artigo anterior(http://marcelo.mundoclick.com.br/?p=28) sobre Banco de dados, dissemos que para utilizarmos o Banco de dados, precisamos do SGDB, mais o que são os SGDBs? Nada mais é que um sistema de gerenciamento de base de dados, ou seja, ele é responsável por gerenciar uma base de dados e seu objetivo é retirar do cliente(responsavel por utilizar o SGDB) a responsabilidade de gerenciar acessos, manipular e organizar os dados, deixando uma interface onde o cliente possa inserir, alterar, excluir e consultar dados.
Nos bancos de dados relacionais os comandos são executados na linguagem SQL(structured query language) ou linguagem de consulta estruturada, que será o assunto do nosso próximo post. Ex de comandos(SELECT, INSERT, UPDATE, DELETE e entre outros)
Hoje no mercado temos muitos SGDBs bons, segue alguns exemplos:
- Oracle
- SQLServer
- PostGree
- mySQL
- FireBird
- Interbase
- DB2
entre outros.
A briga entre os SGDBs está bastante acirrada entre o Oracle x SQLServer, mais correndo por fora temos o PostGree e mySQL que vem conquistando mercado, porém para aplicações de pequeno porte. Quando se fala de projeto de grande porte sempre temos em mente o SQLServer ou o Oracle, mas para escolher um dos dois, muitas questões vem atona como custo, do que você quer fazer, desempenho e entre outras questões.
Bom pessoal,
por hoje é só, no próximo post estarei explicando o que é SQL, a linguagem que conversa com o banco.
Té a próxima,
Marcelo
Olá Pessoal,
Estaremos abordando neste artigo um assunto que no Brasil é pouco utilizado.
As vezes por falta de informação, as vezes por ter de executar medidas drásticas para implantação, que é o caso do CRM(Customer Relationship Management) ou traduzindo “Gerenciamento da relação com o cliente”.
Ta bom, ta bom, mais o que é esse tal de CRM?é uma tecnologia?o que ele pode nos fornecer?
CRM é um conjunto de estratégias, métodos e processos, onde são integrados ao modelo de gestão de negócios. No CRM utilizamos a tecnologia para captar, centralizar, gerenciar e analisar as informações sobre o cliente.
Portanto CRM não é uma tecnologia, só a utiliza para melhor proveito dessa filosofia/conceito.
O CRM é uma estratégia que permite a empresa como um todo ter uma visão única do cliente, para que ai sim possa explorar melhor as oportunidades de negócio.
Entendi, mais como é feito isso?
Toda a intereção que o cliente fizer com a empresa tem que ser registrado, pois com isso aproveita-se os dados retidos para virar informação, para que toda a empresa possa ter as respostas para perguntas, como:
* Quem é o cliente?
* Quais são seus gostos e preferências
* Quantas vezes ligou?
* Quais são suas sugestões/críticas
* Quanto traz de valor para a empresa
* Qual seu grau de satisfação
e etc
E também utilizar a informação obtida através dos dados para: campanhas de marketing direcionadas baseando no perfil dos clientes, seleção dos clientes para novos produtos/serviços, atendimento mais eficiente e etc.
Na teoria tudo parece fácil e simples de ser feito, porém na prática não é bem assim que acontece, pois para o CRM dar certo, tem que haver um esforço grande da alta gerência assim como culturizar toda a empresa. E isso vai treinamento, redesenhos dos processos da empresa, mudanças drásticas e esforço de todos, pois CRM não é finito, ele é continuo.
Bom pessoal falaremos mais sobre esse assunto nos próximos artigos, pois o importante até esse momento é ter entendido o conceito sobre o CRM e o que ele pode lhe proporcionar.
até a próxima,
Marcelo
Fontes:
- Lógica Digital
(http://www.logicadigital.com.br/desenv_softwares_crm.asp)
- Wikipedia
(http://pt.wikipedia.org/wiki/Customer_relationship_management)
- Nextg
- André Ferraro
Olá Pessoal,
Neste artigo estaremos falando um pouco mais de constraints e como colocar valores padrões em colunas.
Segue:
- O que são constraints
- Onde elas são utilizadas
- Tipos de constraints
O que são constraints?
Constraints são restrições feitas para as colunas nas tabelas contendo diversos tipos, na qual falaremos adiante.
Onde elas são utilizadas?
Elas são utilizadas na criação de uma tabela ou mesmo junto com a keyword ALTER TABLE, onde podemos adicionar ou remover constraints.
Tipo de constraints:
- Primary key(PK)
Já vimos anteriomente no artigo criação de tabelas(Simples).
Ex:
CREATE TABLE Exemplo
(
ExemploId int not null Identity(1,1),
Campo2 int not null,
CONSTRAINT PK_Exemplo_ExemploId PRIMARY KEY(ExemploId)
)
- Unique(UQ)
Cria uma restrição para a coluna, onde não pode ter dois valores iguais.
Ex:
CREATE TABLE Newsletter
(
NewsletterId int not null IDENTITY(1,1) CONSTRAINT PK_Newsletter_NewsletterId PRIMARY KEY,
Email nvarchar(64) not null CONSTRAINT UQ_Newsletter_Email UNIQUE
)
Ao inserir dois e-mails iguais ele vai gerar um erro de UNIQUE KEY, dizendo que você está duplicando o registro.
- Foreign key(FK)
Ainda não vimos o que é um foreign key(Chave Estrangeira), será um próximo artigo, mas resumindo cria-se uma referência com o indice(PK) de uma outra tabela.
Ex:
CREATE TABLE Funcao
(
FuncaoId int not null IDENTITY(1,1) CONSTRAINT PK_Funcao_FuncaoId PRIMARY KEY,
Nome nvarchar(32) not null
)
CREATE TABLE Funcionario
(
FuncionarioId int not null IDENTITY(1,1) CONSTRAINT PK_Funcionario_FuncionarioId PRIMARY KEY,
Nome nvarchar(64) not null,
FuncaoId int not null,
CONSTRAINT FK_Funcionario_FuncaoId FOREIGN KEY(FuncaoId)
REFERENCES Funcao(FuncaoId)
)
Neste exemplo temos a tabela Funcao que pode ser Gerente, Desenvolvedor e etc.
e na tabela Funcionario colocamos o Nome, ex Marcelo e a funcao, porem na funcao nao vamos colocar Desenvolvedor, e sim colocamos a referencia que ela é na tabela de funcao, Ex: 2
Visualmente ficaria assim
Tabela: Funcao
FuncaoId Nome
1 Gerente
2 Desenvolvedor
Tabela: Funcionario
FuncionarioId Nome FuncaoId
1 Marcelo 2
Se colocarmos um FuncaoId que não existe na tabela de Funcao dará erro de Foreign Key.
- Check(CK)
Check, é uma constraint que especifica que condição a coluna precisa para salvar um registro.
Ex:
Na tabela Cliente, temos o campo SEXO e nele só pode ser inserido F ou M, entao criamos uma constraint de check, só permitindo essas duas letras e evitando que seja inserido A, B, C.
CREATE TABLE Cliente
(
ClienteId int not null IDENTITY(1,1) CONSTRAINT PK_Cliente_ClienteId PRIMARY KEY,
Nome nvarchar(64) not null,
Sexo char(1) not null CONSTRAINT CK_Cliente_Sexo CHECK(Sexo = ‘M’ or Sexo = ‘F’)
)
Ao ser inserido A, B, C ele não permitirá e dará erro na constraint CK_Cliente_Sexo, pois ela só aceita M ou F.
E para finalizar os tipos de constraints e o artigo falaremos da Constraint DEFAULT(DF)
Essa constraint é responsalvel por colocar valores padrões nas colunas.
Ex: DataCadastro eu posso colocar um valor padrão que seria a data de hoje.
CREATE TABLE Teste
(
Nome nvarchar(64) not null,
DataCadastro datetime not null CONSTRAINT DF_Teste_DataCadastro DEFAULT getDate()
)
Então ao inserir um nome e “ignorarmos” a data de cadastro, ele preencherá com a data de hoje.
Bom por enquanto é só,
Até a próxima,
Marcelo
O que é um Banco de dados(Base de dados)?
É um sistema de armazenamento de dados, ou seja, um conjunto de registros que tem como objetivo orgazinar e guardar as informações. Muito bonito, mais para entendermos de uma vez o Banco de dados, temos que saber o significado de algumas palavras-chaves como: Campos, Dados, Tabelas e Informação.
Para começar vamos entender o que é um dado e para onde ele vai?
Dado nada mais é que um registro que você deseja inserir na sua base de dados, ou seja o valor que seu campo/coluna irá receber.
Mais o que é Campo de um Banco de dados?
Campo, é o destino para onde o valor/dado irá. Os campos, também conhecido como colunas, estão dentro das tabelas.
Tabelas como sabemos é a representação matricial, ou seja, tem linhas e colunas. E para fechar o conceito sobre banco de dados, temos a informação que é a abstração dos dados. Para exemplificarmos a informação é simples, basta alguém perguntar “Você poderia gerar um relatório dos acessos ao sistema no periodo entre o dia 25/07 até dia 28/07?”, pronto essa resposta virá apartir de uma consulta no banco de dados, cruzando as tabelas necessárias.
Bom pessoal o conceito de banco de dados é muito bonito, mais para utilizar existem os SGDBs, mais isso é um papo para outro post… Té logo, Marcelo
Olá Pessoal,
Hoje estaremos abordando a criação de tabelas, segue os pontos a ser discutido neste artigo:
- O que é uma tabela?
- Representação de uma tabela no SQL Server
- O que é uma chave primária de uma tabela
- O que é a cláusula IDENTITY?
- Criando uma tabela por código
O que é uma tabela?
Tabela nada mais é que uma representação matricial, ou seja, possui colunas e linhas.
E para o SQL Server não é diferente, quando criamos uma tabela, damos o nome das colunas,
que também chamamos de campos ou atributos, e o tipo que elas são, discutidos nos artigos passados.
Represetação de uma tabela no SQL Server
Representa-se assim:
CREATE TABLE tbExemplo
(
coluna1 tipo1,
coluna2 tipo2
)
O que é uma chave primária?
Referem-se a um conjunto de um ou mais campos de uma tabela.
Características:
- Nunca se repetem
- Tem dois tipos de chaves:
Simples: Onde só possui um campo, e o mesmo não pode se repetir
Composta: Onde possui mais de um campo, os valores podem se repetir, mas a combinação entre eles não.
- Pode ser usada como indice para as demais tabelas
- Não pode haver valores nulos nas chaves primárias
O que é a cláusula IDENTITY?
Usada quase sempre em conjunto com a chave primária, Identity é o autonumeração do Access.
No Identity temos 2 propriedades:
Increment, que diz de quanto em quanto vai ser o incremento do seu campo.
Seed, que diz de onde começa o autoincremento.
Exemplificando:
CREATE TABLE tbExemplo
(
campo1 int not null IDENTITY(2,100)
campo2 nvarchar(64)
)
Nessa tabela criamos o campo1 sendo autonumeração que vai andar de 2 em 2, e começar do 100.
Se incluirmos 3 registros ficaria assim:
campo1 campo2
102 Teste1
104 Teste2
106 Teste3
e o próximo?seria o 108 e assim por diante.
Criando uma tabela por código
Neste tópico, mostrarei como cria uma tabela simples por código, mais não vai ser muita surpresa, pois nos posts anteriores, já coloquei a estrutura da tabela.
Para criar uma tabela por código usamos a cláusula CREATE TABLE, sua estrutura é assim:
CREATE TABLE NomeTabela
(
coluna_1 tipo_de_dado_1 [not null],
coluna_2 tipo_de_dado_1 [not null],
coluna_3 tipo_de_dado_1 [not null]
)
o not null entre colchetes, quer dizer que você pode colocar ou não. A omissão dele deixa seu campo recebendo nulo.
Bom chega de bla bla bla, e vamos criar uma tabela de Departamentos, que possui os seguintes atributos:
- ID(que é um autoincremento e nossa chave primária)
- Nome(Que é o nome do departamento)
- DataCadastro(Data de cadastro desse departamento)
- Ativo(E se o departamento está ativo ou não)
Segue:
CREATE TABLE Departamento
(
DepartamentoId bigint not null IDENTITY(1,1),
Nome nvarchar(64) not null,
DataCadastro datetime not null,
Ativo bit not null,
CONSTRAINT PK_Departamento_DepartamentoId PRIMARY KEY(DepartamentoId)
)
Observações:
Falaremos do cláusula CONSTRAINT no próximo artigo, mais resumindo, essa cláusula é usada para criarmos regras para nossas tabelas. Neste exemplo criamos uma regra para adicionarmos uma chave primária.
Existem outras formas para adicionar, mais eu particularmente prefiro assim, pois separa os campos das constraints.
Mais a mesma tabela pode ser criada da seguinte forma:
Forma2:
CREATE TABLE Departamento
(
DepartamentoId bigint not null IDENTITY(1,1) Primary Key,
Nome nvarchar(64) not null,
DataCadastro datetime not null,
Ativo bit not null
)
Nesta forma colocamos a primary key logo na linha do nosso ID, porém o SQL Server gera um nome automaticamente da chave.
O Padrão de nome é PK(primary key)_NomeTabela_NomeCampo
Ex: PK_Departamento_DepartamentoId
Forma3:
CREATE TABLE Departamento
(
DepartamentoId bigint not null IDENTITY(1,1) CONSTRAINT PK_Departamento_DepartamentoId PRIMARY KEY,
Nome nvarchar(64) not null,
DataCadastro datetime not null,
Ativo bit not null
)
Muito parecido com a primeira forma, só muda o lugar que coloca a constraint, que colocamos em cima, ao invés de deixarmos por último.
Bom pessoal, por hoje é só.
Obrigado,
Marcelo