Desenvolvimento - C#
Visual Studio Team System 2008 DataBase Edition Parte IV: Geração Automática de Dados
Neste artigo vamos ver a ferramenta de geração automática de dados. Antes de começar é importante você ler no artigo “Visual Studio Team System 2008 DataBase Edition Parte I: Introdução”, algumas consideração sobre as versões do DataBase Editon.
por Fernando AmaralNo artigo anterior estudamos a ferramenta de comparação de dados do Visual Studio Team System DataBase Edition. Neste artigo vamos ver a ferramenta de geração automática de dados. Antes de começar é importante você ler no artigo “Visual Studio Team System 2008 DataBase Edition Parte I: Introdução”, algumas consideração sobre as versões do DataBase Editon.
Em um ambiente de desenvolvimento e testes sempre temos a necessidade de produzir dados. Havia algumas opções: produzir uma ferramenta que gerasse estes dados automaticamente, entrar com estes dados manualmente ou até pegar um banco de dados de produção, com dados reais. Em algumas áreas, esta ultima opção às vezes era inviável devido a questões de sigilo de informações.
A ferramenta de geração de dados do Team System permite a geração automática de dados, que podem ser simplesmente gerados aleatoriamente, através de uma expressão regular, ou ainda copiados de outra fonte de dados.
Para nosso exemplo, primeiramente vamos criar um banco de dados e uma tabela. Vou utilizar o SQL Server 2008, porém você pode utilizar a versão 2005 ou 2000, sem notar muitas diferenças.
Primeiramente crio um banco de dados chamado Testes:
Em seguida, crio uma tabela chamada Pessoas com a estrutura abaixo:
Agora vamos ao Visual Studio Team System. Primeiramente crie um novo projeto de banco de dados, a partir do template Wizard, de acordo com a edição que você esta utilizando.
De ao projeto o nome de Testes. Execute ao assistente. Se você ainda não tem familiaridade com o assistente, leia o primeiro artigo sobre o produto, Visual Studio Team System 2008 DataBase Edition Parte I: Introdução. O mais importante durante o Wizard, é na etapa Import Database Schema marcar a opção Import Existing Schema e definir a conexão para o banco de dados criado, como na imagem abaixo:
Finalizado o Wizard, você deve ter uma solução e um projeto de banco de dados. Vamos agora criar um plano de geração de dados. Um plano de geração de dados é, como você deve imaginar, onde vamos configurar a nossa geração de dados. Para criar o plano clique com o botão direito sobre o projeto, selecione Add, New item:
Localize o template Data Generation Plan na categoria de mesmo nome, mantenha o nome padrão e clique em ADD:
Neste ponto o VS abre o plano gerado. Na parte superior são listadas as tabelas. No centro, temos as colunas da tabela selecionada, e mais embaixo, uma pré-visualização da geração de dados:
Por padrão todas as tabelas vêm selecionadas. Em um projeto grande pode ser difícil marcar e desmarcar muitas tabelas, porém através do menu Data, opção Data Generator, temos varia opções para incluir ou excluir todas as tabelas ou colunas da seleção:
Em um projeto com mais de uma tabela, o VS tenta manter uma integridade entre as tabelas relacionadas, que só são desmarcadas quando a tabela pai perde a seleção. Vamos ver agora com mais detalhes a listagem das tabelas da geração de dados:
Rows to Insert determina o número de linhas de dados que serão gerados para esta tabela. Related Table lista uma tabela relacionada com esta, e em Ratio to Ralated Table, podemos informar a proporção de dados que serão gerados para a tabela filho em relação à tabela pai. Por exemplo Ratio to Related Table de 1:1, significa que para registro gerado na tabela pai será também gerado um registro na tabela filho. 1:10 significa que se forem gerados 50 registros na tabela pai, serão produzidos 500 na tabela filho. A imagem abaixo foi capturada de um Plano de geração de dados feito no banco de dados AdventureWorks2008, e serve apenas para mostrar como definimos a tabela relacionada e o rateio para a tabela relacionada:
Vamos agora ver a relação de colunas da tabela Pessoas:
Aqui podemos definir para quais colunas queremos fazer a geração automática de dados. Campos do tipo Not Null não podem ser desmarcados. Temos ainda o nome da coluna e o tipo. A parte interessante começa agora. Generator indica qual o tipo de gerador de dados será utilizado pela coluna. São vários tipos, normalmente há um tipo compatível para cada tipo da coluna. Além destes tipos “naturais”, temos ainda DataBoundGenerator e Sequencial DataBoundGenerator, que permitem que a geração seja realizada a partir de uma tabela de outro banco de dados, e regular expression, que permite que a geração seja feita a partir de uma expressão regular.
Para cada generator podemos definir algumas propriedades que irão determinar o comportamento da geração. Assim que alteramos uma propriedade no generator, imediatamente a pré-visualização de dados é atualizada.
Clique sobre a linha da coluna nome, altere a propriedade generator para regular expression:
Agora observe algumas propriedades na janela de propriedades:
A propriedade Expression permite que alteremos a expressão regular. Maximun Length determina o tamanho máximo do dado gerado. Percentage Null permite que seja definido um percentual para valores nulos, o que só é possível para campos que permitam valores nulos.
Clique agora sobre a coluna Idade, observe as propriedades:
Distribution permite que definamos o tipo de distribuição estatística que será utilizado na geração dos dados. Max e Min permitem que sejam definidos valores mínimos e máximo para os dados, como o campo trata de idade, alterei estas informações para 120 e 0, respectivamente. As propriedades da última coluna, DataNascimento, são bem semelhante a um tipo inteiro.
Agora podemos fazer a geração de fato dos dados, para isso clique no botão Generate Data na barra de ferramentas Data Generator, ou através do menu Data, Data Generator, opção Generate Data:
O VS solicita que seja informada a conexão:
Em seguida você deve informar se deseja apagar os dados existentes no banco de dados:
O VS informa em seguida o status da geração, no nosso exemplo, a geração foi completada com sucesso:
O que significa que o banco de dados foi populado, conforme podemos ver nesta consulta no Managment Studio:
Podemos também gerar dados a partir de dados oriundos de outra fonte de dados. Vamos agora alterar o exemplo anterior para gerar dados para a coluna nome a partir de dados da tabela Person.Person do banco de dados de demonstração AdventureWorks2008. Abra novamente o Plano de Geração de Dados criado anteriormente. Na coluna nome, altere o tipo de Generator para Data Bound Generator:
Agora acesse a janela de propriedades da coluna. Precisamos apenas definir uma string de conexão com o banco de dados que irá originar os dados através da propriedade Connection Information e um comando SQL na propriedade Select Query:
No exemplo, define o seguinte commando SQL:
SELECT FIRSTNAME + " " + LASTNAME as "NOME" FROM PERSON.PERSON
Se as informações de conexão e o comando SQL estiverem corretos, imediatamente o VS atualiza a visualização dos dados:
Conclusão
Podemos ver neste artigo mais uma importante característica do Visual Studio Team System DataBase Edition: a geração automatizada de dados.