Вы находитесь на странице: 1из 11

Artigo SQL Magazine 35 - DBDesigner: uma ferramenta gratuita para modelagem de dados

Dbdesigner: uma ferramenta gratuita para modelagem de dados A utilizao de ferramentas case (computer-aided software engineering) para modelagem de dados muito importante para a qualidade do modelo, bem como para garantir uma documentao atualizada e, consequentemente, maior facilidade de manuteno de sistemas em produo, apoiando etapas importantes na anlise e projeto de software. Existem no mercado vrias ferramentas case para este propsito, sendo na sua maioria produtos comerciais. este artigo apresenta a ferramenta dbdesigner, uma ferramenta gratuita e de cdigo aberto para modelagem de dados. Caractersticas da dbdesigner O dbdesigner uma ferramenta case para a modelagem de dados que trabalha com o modelo lgico, desenvolvida pela fabforce (www.fabforce.net) sob a licena gnu gpl (general public license). um software multiplataforma (windows 2k/xp e linux kde/gnome) implementado em delphi/kylix. alm de permitir a modelagem, criao e manuteno de bancos de dados, esta ferramenta possibilita tambm a engenharia reversa, gerando o modelo de dados a partir de um banco existente, e ainda possibilita o sincronismo entre o modelo e o banco. O dbdesigner foi construda originalmente para oferecer suporte ao mysql, porm oferece tambm suporte engenharia reversa e sincronizao a outros sgbds como oracle, sql server, sqlite e outros que permitam acesso via odbc (open database connectivity). Conhecendo o dbdesigner a janela principal da dbdesigner se divide em cinco reas, como pode ser visto na figura 1.

figura 1. janela principal. Na rea de trabalho so inseridas as tabelas e seus respectivos relacionamentos. a tools palette contm os componentes mais utilizados na criao e manuteno das tabelas. o navigator & info permite o controle da visualizao da rea de trabalho possibilitando navegar no diagrama. os datatypes mostram os tipos possveis de dados e o db model apresenta as tabelas com seus campos e os relacionamentos com outras tabelas. Construindo um modelo: Para demonstrar as funcionalidades da dbdesigner, apresentada a construo de um fragmento do modelo de dados de um sistema acadmico, representando suas tabelas com atributos e relacionamentos, no tendo o objetivo de ser um exemplo completo. O fragmento do modelo mostrado na figura 2 composto pelas tabelas aluno, disciplina, curso, professor, turma, aluno_turma e pessoa, com seus relacionamentos. o tipo dos atributos e os ndices foram omitidos para que o modelo fique mais claro. importante citar que a tabela turma uma entidade fraca da tabela disciplina, ou seja, a existncia da primeira tabela dependente da segunda. pode-se notar que o atributo cod_disciplina (chave primria da tabela disciplina) inserido na tabela turma no apenas como chave estrangeira, mas tambm como chave primria. observa-se ainda um relacionamento de generalizao entre as tabelas pessoa, professor e aluno, sendo que a tabela pessoa representa os atributos comuns das tabelas professor e aluno.

figura 2. fragmento de modelo de dados de um sistema acadmico. Neste artigo ser utilizada a notao eer (extended entity-relationship), uma extenso do modelo entidade relacionamento originalmente proposto por peter chen, padro da dbdesigner. nesta notao, o relacionamento representado por um losango. A figura 3 representa o relacionamento 1:n entre as tabelas curso e disciplina, simbolizando que um curso contm vrias disciplinas (lado fechado do losango) e uma disciplina de um nico curso (lado aberto do losango). O losango totalmente aberto representa um relacionamento 1:1.

figura 3. cardinalidade dos relacionamentos. Entretanto, existem outras notaes disponveis e, para alternar entre elas, deve-se utilizar o menu display / notation e escolher a notao desejada. a figura 4 apresenta o mesmo relacionamento 1:n utilizando as demais notaes disponibilizadas pela ferramenta.

figura 4. tipos de notaes da dbdesigner. Na representao das tabelas (ver figura 5), frente de cada atributo, existe uma imagem que expe o que este representa. atributos que so chaves primrias tm o smbolo sua esquerda e ficam separados logo

abaixo do nome da tabela. os atributos que so chaves estrangeiras vm seguidos do smbolo (fk), uma foreign key, precedidos do smbolo quando no fazem parte da chave primria. J o smbolo precede aqueles atributos comuns, que no representam nenhum tipo de chave.

figura 5. representao de uma tabela com seus atributos e chaves. Atravs do menu display possvel personalizar a visualizao do modelo, de maneira a atender as necessidades do usurio. Por exemplo, possvel escolher entre exibir todos os atributos das tabelas (display / table columns / attribute level), apenas as chaves primrias (display / table columns / primary key level) ou nenhum atributo (display / table columns / entity level). exibir ou esconder o tipo dos campos (display / table columns / physical schema level), as chaves estrangeiras (display / table columns / show foreign keys), os ndices (display table indices list table indices) e tambm os nomes dos relacionamentos (display display relation names). No menu options definem-se algumas propriedades em relao ao modelo. Por exemplo, a configurao padro que os atributos que representam chaves estrangeiras so exibidos com o nome da tabela de origem a frente do nome do atributo propriamente dito (options / model options / editing options / add source table name to foreign key columns name). No fragmento de modelo aqui mostrado foi desabilitada esta opo. para que tenha efeito, esta opo deve ser desabilitada antes da criao do modelo, sendo intil a alterao desta opo aps o incio de sua construo. neste menu se encontram tambm as opes de alterar o idioma do aplicativo (no includo portugus), a fonte usada, dentre outras opes que podem ser alteradas seguindo o perfil do usurio. Inserindo as tabelas A primeira etapa para construir o estudo de caso deste artigo inserir as tabelas e seus atributos. o primeiro passo criar a tabela curso. deve-se inserir na rea de trabalho uma tabela (cone new table localizado na tools palette). Para definir as propriedades como nome da tabela e seus atributos, dentre outras caractersticas de uma tabela, deve-se clicar duas vezes sobre o objeto criado. feito isto, uma janela para a alterao de propriedades da tabela aberta, de acordo com a figura 6.

figura 6. propriedades da tabela curso.

A primeira propriedade a ser modificada o nome da tabela atravs da opo table name, que deve ser alterada para curso. a seguir, so definidos os campos e os tipos de dados associados a esta tabela atravs da parte principal da janela, seguindo as seguintes definies: column name: nome do campo. o primeiro campo por padro definido como chave primria; datatype: o tipo do campo. pode-se escolher entre os tipos de campos pr-definidos; nn: campo obrigatrio, ou seja, marcando este campo, probe-se de existir um registro na tabela sem o seu preenchimento. no permitido desmarc-lo caso o campo seja parte da chave primria; ai: define o campo como sendo auto-incremento; flags: so propriedades definidas para o campo, em funo do tipo de dados selecionado, como unsigned, zerofill e binary; default value: determina um valor padro para o campo. caso no seja digitado nenhum valor ao inserir um registro, o valor a ser assumido por este campo o valor definido nesta propriedade; comments: utilizado para comentrios. muito til para lembrar a finalidade do campo. Um ndice chamado primary criado automaticamente para a chave da tabela, sendo possvel definir mais ndices de acordo com a necessidade. Para isto, utilizada a parte inferior da janela apresentada na figura 6. Para adicionar outros ndices deve-se clicar sobre o boto com o smbolo , escolher o nome do ndice e confirmar. necessrio definir qual campo vai ser indexado pelo ndice criado, sendo possvel criar um ndice utilizando mais de um campo. neste estudo de caso, a tabela curso indexada pelo campo desc_curso para que se possa ordenar e fazer buscas mais rapidamente atravs deste campo. para isso, deve-se clicar sobre este campo e arrast-lo at o canto inferior direito, denominado columns. Depois de ter alterado todas as propriedades necessrias da tabela, deve-se confirmar as modificaes clicando no boto no canto direito inferior . com isso finaliza-se a criao da tabela. No exemplo anterior mostrada a criao da tabela curso. Da mesma maneira, abaixo so apresentadas as estruturas das tabelas pessoa, aluno, disciplina, professor e turma, respectivamente descritas nas tabelas 1 a 5, sem os atributos relativos aos relacionamentos, que sero criados posteriormente. pessoa

tabela 3. estrutura da tabela disciplina.

Um fato importante em relao tabela turma que a chave composta por mais de um atributo. Para definir a chave desta maneira clica-se sobre o cone , que est esquerda do nome do campo, nas propriedades da tabela. Aps clicar sobre este cone ele se torna um desenho de uma chave , tornando-o parte da chave primria. Definindo os relacionamentos Depois das tabelas criadas, devem ser definidos os relacionamentos entre elas. o primeiro relacionamento entre a tabela professor e curso e possui cardinalidade 1:1, ou seja, um professor pode ser coordenador de um curso assim como um curso coordenado por um professor. para criar este relacionamento, deve-se clicar sobre o boto (new 1:1 non-identifying relation), em seguida sobre a tabela professor e finalmente sobre a tabela curso. uma linha traada ligando as duas tabelas envolvidas. para renomear este relacionamento necessrio clicar duas vezes sobre a linha que o representa e alterar a propriedade relation name para coordenador. nota-se que uma chave estrangeira criada na tabela curso, fazendo a ligao entre as tabelas. O prximo relacionamento a ser criado entre as tabelas curso e disciplina. um relacionamento de cardinalidade 1:n que define que um curso pode ser composto por vrias disciplinas, assim como uma disciplina compe um nico curso. o procedimento para criar este relacionamento clicar sobre o boto (new 1:n nonidentifying relation) da tools palette e, em seguida, clicar sobre a tabela curso e finalmente sobre a tabela disciplina. Observa-se que neste caso a ordem em que se clica nas tabelas importante para definir qual tabela possui a cardinalidade 1 e qual tabela ter a cardinalidade n. alm disso, vale mencionar que a tabela de lado n que recebe a chave estrangeira. Outro relacionamento que deve ser criado possui cardinalidade n:n e mostra a ligao entre as tabelas turma e aluno. Este relacionamento define que uma turma pode ser freqentada por vrios alunos, assim como um aluno freqenta vrias turmas. A definio deste relacionamento feita a partir do clique no boto (new n:m relation), seguido de um clique sobre a tabela turma e finalmente sobre a tabela aluno. pode-se notar que a tabela que faz o relacionamento n:n criada automaticamente. muitas vezes conveniente renomear esta tabela para que tenha um nome significativo. Para isso, deve-se clicar duas vezes sobre ela e alterar a propriedade table name para aluno_turma. Como mencionado anteriormente, a tabela turma uma entidade fraca da tabela disciplina e, para criar este tipo de relacionamento usa-se o boto (new 1:n relation), seguido de um clique sobre a tabela disciplina e finalmente sobre a tabela turma.Ao se usar este tipo de relacionamento pode-se notar que alm do campo cod_disciplina ir para a tabela turma como chave estrangeira, ele tambm aparece como chave primria. Por fim, o ltimo tipo de relacionamento utilizado a generalizao. este tipo de relacionamento possibilita a criao de tabelas genricas para que posteriormente possam ser usados seus atributos em conjunto com outras tabelas. para definir um relacionamento deste tipo entre as tabelas pessoa (que utilizada no exemplo como uma tabela genrica) e aluno, deve-se clicar sobre o boto (new generalization), seguindo de um clique

sobre a tabela pessoa e finalmente sobre a tabela aluno. Para finalizar a construo do modelo devem-se construir os demais relacionamentos entre as tabelas turma e professor e a generalizao entre pessoa e professor. Criando o banco de dados Pouco adiantaria uma ferramenta de modelagem que fizesse apenas o desenho de um modelo e no permitisse a criao automatizada do banco de dados propriamente dito. O dbdesigner permite que esta tarefa seja executada de duas maneiras diferentes. Uma das maneiras gerar os comandos sql de criao do banco de dados e depois mandar executar atravs de uma interface do sgbd. Para isto deve-se clicar sobre o menu file / export / sql create script. Ao clicar nesta opo pode-se observar uma janela com algumas opes para a gerao do script sql, permitindo gerar os scripts apenas das tabelas selecionadas, criar ou no as chaves primrias, os ndices e outras opes (ver figura 7).

Ainda nesta figura, para que os relacionamentos sejam gerados, deve-se marcar a opo define foreign key references when enabled in relations editors. A opo create indices cria um ndice no banco para cada chave estrangeira definida no modelo. Depois de escolhidas as opes desejadas, pode-se salvar o script sql em um arquivo texto, escolhendo a opo save script to file, ou apenas enviar este cdigo para a rea de transferncia, utilizando a opo copy script to clipboard. a listagem 1 apresenta um trecho do script sql gerado pela ferramenta para a criao das tabelas curso e disciplina. listagem 1. script sql gerado para a criao das tabelas curso e disciplina. create table curso ( cod_curso integer not null, desc_curso varchar(30) null, carga_horaria integer null, primary key(cod_curso) ); create table disciplina ( cod_disciplina integer not null, cod_curso integer not null, desc_disciplina varchar(30) null, num_aulas integer null, primary key(cod_disciplina), index disciplina_fkindex1(cod_curso),

);

foreign key(cod_curso) references curso(cod_curso) on delete no action on update no action

A outra maneira de se criar o banco de dados atravs de uma conexo direta com o sgbd, atravs do menu database / database synchronisation. Este menu, alm de criar o banco de dados, tambm usado para manter o sincronismo entre o modelo e o banco. ao clicar neste menu apresentada a janela select database connection para que se possa escolher um banco de dados existente ou criar uma nova conexo de banco de dados (ver figura 8).

Para criar uma nova conexo deve-se clicar sobre o boto new database connection. uma outra janela, database connection editor (ver figura 9) aberta para que se possa escolher as opes de configurao da conexo que est sendo criada. neste exemplo utilizado o mysql para a configurao da conexo com o banco.

figura 9. database connection editor. Aps ter feito esta configurao, deve-se clicar no boto ok para confirmar. e, na janela select database connection, clica-se sobre o boto connect para fazer a conexo com o banco. Surgir uma nova janela (ver figura 10) para que possam ser feitas algumas configuraes em relao ao sincronismo, como no apagar as tabelas j existentes no banco de dados mesmo que tenham sido retiradas do modelo, dentre outras opes. depois de ter personalizado estas configuraes, deve-se clicar sobre o boto execute. Neste ponto, a

dbdesigner se encarrega de fazer toda a criao das tabelas do banco de dados ou o sincronismo entre o banco existente e o modelo. Um log mostrado na janela com as informaes das execues feitas.

figura 10. database synchronisation. Executando consultas em sql Depois de ter criado o banco de dados, a dbdesigner permite que sejam executados comandos sql, atravs do menu display / query mode (ou boto na tools palette). ao selecionar esta funcionalidade, nota-se que na parte inferior da janela surgem algumas opes como pode ser observado na figura 11.

figura 11. query mode. A parte inferior esquerda desta janela o local onde se digita o cdigo sql e, aps isso, clica-se no boto

(execute sql query). caso exista algum resultado a ser exibido, apresentado no lado direito desta janela. O dbdesigner permite tambm a criao automtica de parte do cdigo sql. para isto, deve-se clicar sobre alguma tabela e arrastar o cursor do mouse para que apaream algumas opes a serem selecionadas, como select, update,insert e delete. Com o boto do mouse ainda pressionado, posiciona-se o cursor na opo desejada e, ao soltar o boto, o cdigo sql automaticamente gerado. para retornar ao modo de projeto, seleciona-se o menu display / design mode (ou o boto na tools palette). Engenharia reversa O caminho normal na construo do banco de dados fazer o modelo e posteriormente partir para a construo do banco propriamente dito. porm, este caminho pode se inverter quando j se tem um banco de dados criado e deseja-se obter o modelo deste banco. Isto muito til quando no se tem documentao atualizada do banco. Como dito anteriormente no artigo, uma das caractersticas da dbdesigner a possibilidade de se fazer engenharia reversa. A ttulo de exemplo, ser mostrado como fazer uma engenharia reversa utilizando o prprio banco gerado anteriormente. Para isso, deve-se selecionar o menu database / reverse engineering na janela select database connection, selecionando o banco de dados ao qual se quer conectar, e ento clica-se no boto connect. Uma janela exibida para que possam ser feitas algumas configuraes (ver figura 12).

figura 12. engenharia reversa. em tables, devem-se selecionar todas as tabelas que iro compor o modelo. em general options so definidas as propriedades para visualizao do modelo gerado. marcase a opo build relations para que os relacionamentos sejam gerados, deixando selecionada a opo build relations based on primary keys, para a gerao dos relacionamentos baseados nas chaves primrias. Aps ter definido as configuraes necessrias, deve-se clicar no boto execute. o modelo criado automaticamente e apresentado na rea de trabalho. Outras funcionalidades Uma caracterstica do dbdesigner salvar os seus arquivos em formato xml (extensible markup language), ao invs de utilizar um formato proprietrio. isso facilita a importao e exportao de modelos de outras ferramentas para a dbdesigner ou desta para outras eventuais ferramentas. Como exemplo, pode-se importar modelos em xml gerados pela ferramenta case erwin. A listagem 2 apresenta um fragmento do xml gerado pela dbdesigner.

listagem 2. fragmento de xml gerado pela dbdesigner. <tables> <table id=1006 tablename=curso prevtablename=table_02 xpos=105 ypos=128 tabletype=0 tableprefix=0 nmtable=0 temporary=0 usestandardinserts=0 standardinserts=\n tableoptions=delaykeytblupdates=0\npackkeys=0\nrowchecksum=0\ nrowformat=0\nuseraid=0\nraidtype=0\n comments= collapsed=1 islinkedobject=0 idlinkedmodel=-1 obj_id_linked=-1 orderpos=3 > <columns> <column id=1008 colname=cod_curso prevcolname= pos=0 iddatatype=5 datatypeparams= width=-1 prec=-1 primarykey=1 notnull=1 autoinc=1 isforeignkey=0 defaultvalue= comments=campo chave com o c\243digo do curso> Uma outra funcionalidade til desta ferramenta a gerao de documentao em formato html, atravs da opo plugins / htmlreport (ver figura 13).

Concluses O dbdesigner uma ferramenta para a construo de modelos de dados, fcil de usar, com um aprendizado relativamente rpido, e que proporciona uma boa produtividade na sua utilizao. tudo isto com a vantagem de ser uma ferramenta gratuita e com o cdigo fonte aberto. A possibilidade de sincronismo entre o modelo e o banco de grande importncia para o sucesso desta ferramenta. isso faz com que manutenes futuras no banco sejam feitas de maneira rpida e eficiente. E o fato de salvar e recuperar arquivos no padro xml importante para a possibilidade de comunicao entre diferentes ferramentas.

Вам также может понравиться