Sunteți pe pagina 1din 16

Modelagem de Dados com o MySQL

WorkBench 5.0
banco de dados
Bem meninos e meninas..... prontos para aprender a utilizar uma ferramenta de
modelagem?
Bom esse oficialmente o primeiro de muitos artigos que ainda vou escrever e
compartilhar com vocs.
Vamos l ento, o assunto que vou tratar agora um item que pra muitos pode
parecer simples mas existem muitos programadores hoe em dia que ainda tem o
velho costume de pegar um php!"#dmin ou um $%&'og e fazer uma modelagem
mental e sair criando ta(elas e colocando tudo pra rodar e da) come*ar a
programar com aquilo mesmo e tudo (em sea o que +,-$ quiser, (em (anco
(acana e tudo mais, porm alguns cuidados devem ser tomados no in)cio para que se
evite retrabalho posteriormente.
, pra evitar isso sempre indicado usar uma ferramenta grfica para proetar o seu
(anco de dados mesmo sendo simples sempre bom fazer a modelagem
corretamente porque se um (anco mal modelado ele afeta o desempenho do
ebs!te"apl!ca#$o.
D!agrama de ent!dade de relac!onamento um modelo diagramtico que descreve
o modelo de dados de um sistema com alto n)vel de a(stra*o. ,le a principal
representa*o do !odelo de ,ntidades e .elacionamentos. $ua maior aplica*o
para visualizar o relacionamento entre ta(elas de um (anco de dados, no qual as
rela*/es so constru)das atravs da associa*o de um ou mais atri(utos destas
ta(elas.
0 !"$%& 1or2(ech um soft3are gratuito que veio su(stituir o DBDes!gner% (ainda
a ferramenta utilizada para treinamento acadmico).
&oste!4 5ree, tem 'ers$o para L!n(), pode6se salvar um 789 ou 7+5 do diagrama,
ele gera o c:digo $%&(schema), pode6se definir registros para as ta(elas e quando
rodar o $%& ele a faz o ;8$,.<(til para fazer instaes de sistema, ou quando libera
o sistema para o cliente testar fica fcil zerar o banco depois).
*$o goste!4 +epende do !icrosof t .8,< 5rame3or2 =update> no caso de
1indo3s=?update>.
Interface:
;nterface !"$ql 1or2(ench @
8a interface dele temos vrias guias que nos audam a ter o controle so(re todas as
opera*/es da nossa modelagem.
9uias4
++, D!agram- #presenta todos os diagramas dispon)veis para o (anco de dados em
questo, algumas pessoas preferem fazer tudo modularizado inclusive os diagramas
ento essa seria uma utilidade de suportar mAltiplos diagramas.
.hys!cal Schemata- #presenta todo os o(etos dispon)veis para criarmos, (em como
tam(m lista os que criamos de acordo com seu tipo, se for uma ta(ela ir aparecer
na parte de B<a(lesC, as Vie3s na parte de BVie3sC e assim por diante.
SQL Scr!pt/s- D uma rea onde voc pode ou criar um $%& $cript #dicional para o
seu (anco ou carregar um arquivo externo criado anteriormente, pode ser (em Atil pq
por exemplo vc carrega o seu (anco uma vez e cadastra alguns usurios depois vc
quer zerar o (anco mas quer que os usurios que estavam l continuem, (asta voc
exportar o $%& dos inserts e carreg6lo nesta rea e pronto quando gerar o script final
ele vai ser colocado unto.
Model *otes- uma rea onde voc tem uma espcie de (loco de notas so(re o
(anco de dados onde pode ir anotando vrias coisas que possam ser Ateis
posteriormente, como regras de campos, exemplo4 Eampo $exo vai rece(er valor F
para masculino e G para feminino.
0!s(al!za#$o total do Dashboard4 uma espcie de miniatura de todo o proeto,
onde poder navegar entre todas as pginas que comp/em o seu diagrama com
facilidade e rapidez.
1at2logo do Banco de dados- #presenta de forma hierrquica os o(etos que
comp/em o (anco de dados em produ*o, na mesma guia pode ser encontrada
lingHetas na parte inferior que possuem a finalidade de controlar os Layers que so
grupos de o(etos dentro do diagrama demarcados por uma rea colorida, contamos
tam(m com o 3ser 4ypes caso voc venha a precisar de um tipo de dado espec)fico
que no tenha nas op*/es do programa nesta guia podemos criar um novo tipo de
dado totalmente personalizado de acordo com cada necessidade.
5nforma#6es &era!s sobre o 7b8eto selec!onado4 traz informa*/es o(re o o(eto
que estiver selecionado naquele exato momento sea ele uma ta(ela, vie3 ou rotina.
Eriando <a(elas4
Voc pode criar uma nova ta(ela clicando G vezes so(re o )cone BI #dd <a(leC no
7h"sical $chemata ou clicar no )cone durante a cria*o do diagrama.
8o importando a forma como voc solicitou a cria*o da ta(ela a tela a(aixo ir
aparecer no canto inferior do programa.
createJta(le
8ele podemos alterar o nome da ta(ela, o Eollation dela a ,ngine na qual ela ir
tra(alhar, (em como mais em(aixo pode6se notar os controles para columns, ;ndexes,
5oreign Ke"s, <riggers, e a guia ;8$,.<s que simplesmente se voc quiser
adicionar um insert ou outro para que sea feito automaticamente na ta(ela,
diferentemente do $%& $cript que aceita scripts externos e tudo mais e essa guia
mais direcionada a ta(ela em questo e no ao (anco de dados como um todo.
!esmo sendo essas simples explica*/es, com elas vocs conseguiram tra(alhar com
este soft3are sem o menor pro(lema.
#qui est um diagrama criado com ele4
+,. 6 +iagrama de ,ntidade .elacional
E:digo $%&
+o3nload do !"$%& 1or2Bench @4 http4??dev.m"sql.com?do3nloads?3or2(ench?@.F.html
#ten*o4 para rodar o !"$%& 1or2(ench voc deve ter instalado o .8et 5rame3or2
+epois de apresentar a vocs a interface principal do aplicativo, agora vamos entrar
na outra camada dele que a interface do +,. L+iagrama de ,ntidade .elacionalM.
Obs! "ten#o$$$ al%umas dicas importantes para serem lembradas durante a modela%em
de dados est#o no corpo deste arti%o
7ela imagem acima, podemos ver que a inteface no se altera muito, s: a parte
central da rea de tra(alho Ldash(oardM que muda um pouco porque ela passa a estar
mais livre para distri(uirmos as entidades L0(etos como <a(elas, Vie3s dentre outros
componentes do nosso modelo de dadosM.
8o painel de visualiza*o do lado superior direito da imagem fica o BVisualizador total
do +ash(oardC, pois com ele voc pode controlar tam(m o n)vel de zoom do
dash(oard (em como qual a rea vis)vel naquele momento simplesmente
posicionando o quadrado que tem nele so(re alguma rea do retNngulo e vocs iro
notar que o dash(oar ir se mover simultNneamente.
# Anica coisa que muda em n)vel mais notvel mesmo a (arra de ferramentas que
surge na lateral esquerda da tela somente no modo de diagrama.
#gora vou explicar o que cada um dos itens da (arra de ferramenta para que notem
o potencial dela mesmo no modo Eommunit" ,dition com alguns itens desativados.
F O D a ferramenta de sele*o simples comum na maior parte dos programas.
G O Mo'el Model como o pr:prio nome indica serve para mover o modelo como voc
desear s: clicar nela e depois clicar e arrastar o modelo para a posi*o que quiser, sem
ter que usar (arras de rolagem.
P O Delete 7b8ect serve para apagar os o(etos do $tage mas tenham muito cuidado ao
utilizar esta op*o pois uma vez removidas ele remove o o(eto do modelo por completo e
uma o(serva*o importante a quantidade de vezes que voc poder desfazer as
opera*/es LEtrl I QM so limitadas.
R O *e Layer adiciona ao stage uma nova la"er LEamadaM elas servem para voc poder
agrupar diversos o(etos que fazem parte de um mesmo (loco funcional de um (anco de
dados ou algo referente, sempre (om para se manter a organiza*o.
@ O *e 4e)t 7b8ect serve para inserirmos um (loco de texto dentro do modelo de dados,
algumas pessoas utilizam esta funcionalidade para fazer alguma nota*o importante
referente a uma respectiva ta(ela ou so(re uma la"er Londe tenham vrias entidades
diferentesM.
S O .lace a *e 5mage serve se por exemplo voc quiser inserir alguma imagem dentro
do diagrama, por exemplo se for fazer (onito pro chefe Lganhar uns pontos com a
diretoriaTrsrsrsM pode6se pegar a logo da empresa (onitinha e tal e colocar no diagrama e
depois mandar imprimir ele pra ficar (em (acana.
U 6 *e 4able insere no dash(oard uma nova ta(ela para que seam inseridas as
informa*/es como campos, 5KVs, indices e tudo mais que tiver direito.
W O .lace a *e 0!e que pode ser variadas situa*/es uma $%& gigantesca que voc
teria que fazer dentro do sistema, pode ficar dentro do pr:prio (anco de dados, mas
existem outras possi(ilidades para as vie3s e uma delas os inserts nos quais se voc
pretende fazer recomendo que leia melhor como o m"sql tra(alha esse tipo de situa*/es
para manter a estrutura do seu (anco (em esta(ilizada.
X O .lace a *e ,o(t!ne &ro(p no qual podemos inserir dentro do (anco o que eu gosto
de chamar de $%& pesado que podem ser instru*/es para criar stored procedures.
FY 9.lace a ne :-n *on;5dent!fy!ng ,elat!onsh!p< e :: 9.lace a ne :-: *on;
5dent!fy!ng ,elat!onsh!p< O determina um relacionamento no identificado que significa
que nenhuma das colunas envolvidas no relacionamento das respectivas ta(elas uma
chave primria.
FG L.lace a ne :-n 5dent!fy!ng ,elat!onsh!p< e := 9.lace a ne :-: 5dent!fy!ng
,elat!onsh!p< e :% 9.lace a ne n-n 5dent!fy!ng ,elat!onsh!p< 6 $ignifica que algumas
das colunas envolvidas podem ser ou no chaves primrias das ta(elas.
F@ O .lace a ,elat!onsh!p 3s!ng +)!st!ng 1ol(mns cria um relacionamento (aseado em
colunas pr6existentes nas ta(elas pois todos os relacionamentos geralmente criam
automaticamente uma nova coluna na ta(ela onde existir a chave de referncia e no caso
desta op*o voc vai escolher a coluna de origem e a coluna de destino e ele criar
automaticamente o relacionamento.
.elem(rando que em .elacionamentos L.elationshipM4
:-n O um registro da ta(ela # estar referenciado em muitos registros da ta(ela B.
:-: 6 um registro da ta(ela # somente poder estar referenciado com um Anico registro da
ta(ela B.
n-n 6 vrios registros da ta(ela # podero estar referenciados para outros vrios registros
da ta(ela B ou vice6versa.
Bom !eninos e !eninas... eu acho que agora depois dessa nossa mini6aula de
modelagem vocs podero fazer modelos de dados (em mais estruturados e organizadosZ
3sando o MyS>l Workbench
-m +ata !odel Lmodelo de dadosM um mtodo de definir e analisar os
requerimentos necessrios para cria*o de um sistema, atendendo os processos das
organiza*/es. 8este exemplo pode ser criado um modelo de dados usando o !"$ql
1or2(ench L@.G.G@ E,M.
.eferncias utilizadas4
http4??net(eans.org?2(?docs?avaee?ecommerce?data6model.html
http4??en.3i2ipedia.org?3i2i?+ataJmodeling[!odelingJmethodologies
F O Eriar um novo modelo4 clique em BEreate ne3 ,,. !odelC\
G O $alvar o modelo\
P O Eriar um novo $chema para ser usado na aplica*o. 5a*a isto clicando no (oto
BIC. #o fazer isto, uma nova a(a a(erta com as op*/es a serem utilizadas. #ltere o
nome do $chema, altere o Eollation do (anco de dados LutfW O utfWJunicodeJciM. 7ara
maiores detalhes so(re o Eollation do !"$ql acesse
http4??dev.m"sql.com?doc?refman?@.F?en?charset6general.html . <am(m poss)vel
fazer um comentrio so(re o (anco de dados que est sendo criado.
R O Elique duas vezes em B#dd +iagramC. -ma tela para iniciar a modelagem a(erta.
#gora s: ir clicando no (oto B8e3 <a(leC e adicionando as ta(elas que sero
utilizadas.
@ O +ois cliques na ta(ela e altere os parNmetros desta ta(ela. -tilizar B;nno+BC
proporciona suporte a chaves estrangeira L5oreign Ke"M.
S O #lterar as propriedades da ta(ela, clique duas vezes so(re ela, clique nas a(as
espec)ficas para cada opera*o, como por exemplo BEolumnsC. 7ara chave primria
utilizo as op*/es 7K ? 88 ? -8 ? #;. 8o crie as colunas que sero utilizadas para
chave estrangeira.
U O +ata automtica, data corrente de lan*amento, pode6se usar
E-..,8<J<;!,$<#!7. Easo for uma data de alera*o, pode usar
E-..,8<J<;!,$<#!7 08 -7+#<, E-..,8<J<;!,$<#!7.
W O Eriar os relacionamentos entre as ta(elas, selecione o relacionamento correto,
clique primeiro na ta(ela que ir conter a chave estrangeira L5oreign Ke"M, em um
exemplo um para muitos, depois clique na ta(ela que ir participar do relacionamento.
Elique duas vezes no relacionamento que foi criado para a(rir a propriedade do
relacionamento. +e dois cliques na ta(ela para alterar suas propriedades, clique em
5oreign Ke".
X O 9erar o $cript para o (anco de dados !"$ql clique primeiro no menu B+ata(ase 6]
5or3ard ,ngineerC.
FY O $elecione as duas primeiras op*/es LB+.07 0(ects Before ,ach E.,#<,
0(ectC e B9enerate +.07 $E^,!#CM. Elique em B8extC.
FF O Elique em B8extC mais uma vez para que o $cript de cria*o do (anco sea
criado.
FG O $alve o script e clique em B8extC.
FP O # tela de conexo com o (anco ir aparecer.
FR O Elique em B,xecuteC.
Vamos come*ar com um exemplo (em simples, a(aixo tem a imagem do diagrama e
em seguida o $%& gerado por ele4
1. SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
2. SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
3. SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=TRADITIONAL;
!.
". CREATE SCHEMA IF NOT E#ISTS $%&'($ DEFAULT CHARACTER SET )*+,-1 COLLATE
)*+,-1_./0',.1_2, ;
3. USE $%&'($;
4.
5. 6 777777777777777776
8. 6 T*()0 $%&'($.$9.0:_+&;0.$
10. 6 777777777777777776
11. CREATE TA<LE IF NOT E#ISTS $%&'($.$9.0:_+&;0.$ =
12. $,'$ INT NOT NULL AUTO_INCREMENT ,
13. $-*%0$ >ARCHAR=!"? NULL ,
1!. $2:0*+0'$ NULL ,
1". @RIMARY KEY =$,'$? ?
13. ENGINE = I--AD<;
14.
15. 6 777777777777777776
18. 6 T*()0 $%&'($.$9.0:.$
20. 6 777777777777777776
21. CREATE TA<LE IF NOT E#ISTS $%&'($.$9.0:.$ =
22. $,'$ INT NOT NULL AUTO_INCREMENT ,
23. $-*%0$ >ARCHAR=!"? NOT NULL ,
2!. $0%*,)$ >ARCHAR=!"? NULL ,
2". $9.0:-*%0$ >ARCHAR=!"? NOT NULL ,
23. $;*../A:'$ >ARCHAR=!"? NOT NULL ,
24. $2:0*+0'$ DATETIME NULL ,
25. $9.0:_+&;0._,'$ INT NOT NULL ,
28. @RIMARY KEY =$,'$? ,
30. INDE# $BC_9.0:._9.0:_+&;0.$ =$9.0:_+&;0._,'$ ASC? ,
31. CONSTRAINT $BC_9.0:._9.0:_+&;0.$
32. FOREIGN KEY =$9.0:_+&;0._,'$ ?
33. REFERENCES $%&'($.$9.0:_+&;0.$ =$,'$ ?
3!. ON DELETE NO ACTION
3". ON U@DATE NO ACTION?
33. ENGINE = I--AD<;
34.
35. 6 777777777777777776
38. 6 T*()0 $%&'($.$-0/_+&;0.$
!0. 6 777777777777777776
!1. CREATE TA<LE IF NOT E#ISTS $%&'($.$-0/_+&;0.$ =
!2. $,'$ INT NOT NULL AUTO_INCREMENT ,
!3. $-*%0$ >ARCHAR=!"? NOT NULL ,
!!. $2:0*+0'$ DATETIME NULL ,
!". @RIMARY KEY =$,'$? ?
!3. ENGINE = I--AD<;
!4.
!5. 6 777777777777777776
!8. 6 T*()0 $%&'($.$-0/.$
"0. 6 777777777777777776
"1. CREATE TA<LE IF NOT E#ISTS $%&'($.$-0/.$ =
"2. $,'$ INT NOT NULL AUTO_INCREMENT ,
"3. $+,+)0$ >ARCHAR=!"? NOT NULL ,
"!. $'0.2:,;+,A-$ >ARCHAR=2"0? NOT NULL ,
"". $2:0*+0'$ DATETIME NULL ,
"3. $2),2C.$ INT NULL ,
"4. $-0/_+&;0._,'$ INT NOT NULL ,
"5. $9.0:._,'$ INT NULL ,
"8. @RIMARY KEY =$,'$? ,
30. INDE# $BC_-0/._-0/_+&;0.$ =$-0/_+&;0._,'$ ASC? ,
31. INDE# $BC_-0/._9.0:.$ =$9.0:._,'$ ASC? ,
32. CONSTRAINT $BC_-0/._-0/_+&;0.$
33. FOREIGN KEY =$-0/_+&;0._,'$ ?
3!. REFERENCES $%&'($.$-0/_+&;0.$ =$,'$ ?
3". ON DELETE NO ACTION
33. ON U@DATE NO ACTION,
34. CONSTRAINT $BC_-0/._9.0:.$
35. FOREIGN KEY =$9.0:._,'$ ?
38. REFERENCES $%&'($.$9.0:.$ =$,'$ ?
40. ON DELETE NO ACTION
41. ON U@DATE NO ACTION?
42. ENGINE = I--AD<;
43.
4!. 6 777777777777777776
4". 6 T*()0 $%&'($.$;:AB,)0$
43. 6 777777777777777776
44. CREATE TA<LE IF NOT E#ISTS $%&'($.$;:AB,)0$ =
45. $,'$ INT NOT NULL ,
48. $/0(.,+0$ >ARCHAR=!"? NULL ,
50. $%.-$ >ARCHAR=!"? NULL ,
51. $D+*)C$ >ARCHAR=!"? NULL ,
52. $;1A-0$ >ARCHAR=!"? NULL ,
53. $9.0:._,'$ INT NULL ,
5!. @RIMARY KEY =$,'$? ,
5". INDE# $BC_;:AB,)0_9.0:.$ =$9.0:._,'$ ASC? ,
53. CONSTRAINT $BC_;:AB,)0_9.0:.$
54. FOREIGN KEY =$9.0:._,'$ ?
55. REFERENCES $%&'($.$9.0:.$ =$,'$ ?
58. ON DELETE NO ACTION
80. ON U@DATE NO ACTION?
81. ENGINE = I--AD<;
82.
83. USE $%&'($;
8!.
8". 6 777777777777777776
83. 6 D*+* BA: +*()0 $%&'($.$9.0:.$
84. 6 777777777777777776
85. SET AUTOCOMMIT=0;
88. INSERT INTO $9.0:.$ =$,'$, $-*%0$, $0%*,)$, $9.0:-*%0$, $;*../A:'$, $2:0
*+0'$,$9.0:_+&;0._,'$? >ALUES =1, *'%,-, E, *'%,-, ;/'*'%,-, 0F,
1?;
100.
101. COMMIT;
102.
103. 6 777777777777777776
10!. 6 D*+* BA: +*()0 $%&'($.$9.0:_+&;0.$
10". 6 777777777777777776
103. SET AUTOCOMMIT=0;
104. INSERT INTO $9.0:_+&;0.$ =$,'$, $-*%0$, $2:0*+0'$? >ALUES =1, A'
%,-,.+:*'A:,NULL?;
105. INSERT INTO $9.0:_+&;0.$ =$,'$, $-*%0$, $2:0*+0'$? >ALUES =2, U.
9G:,A, NULL?;
108.
110. COMMIT;
111.
112. SET SQL_MODE=@OLD_SQL_MODE;
113. SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
11!. SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
0utro fator que agrada (astante que voc no cria os campos com os
relacionamentos, ao definir um relacionamento o !"sql 1or2(ench cria sozinho.
-m a(ra*o
7rofa. !aria Eristina Basili +uarte

S-ar putea să vă placă și