<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3441342879044051463</id><updated>2012-01-28T10:25:32.029-08:00</updated><category term='Banco de Dados Relacional'/><category term='Siglas'/><category term='Histórias dos Bancos'/><category term='Banco de Dados em 2011'/><category term='Banco de Dados'/><category term='MySQL'/><category term='Normalização de Dados'/><category term='OLAP'/><category term='SQL'/><category term='Procedures e Funções em PL/SQL'/><category term='Constraints'/><category term='Banco de Dados Distribuídos'/><category term='Integridade no Banco de Dados'/><category term='Triggers'/><category term='Procedimento Armazenado'/><category term='SQLite'/><category term='Segurança de Banco de Dados'/><category term='Backup e Restaure'/><category term='Servidor de Bando de Dados'/><category term='Invasões e as Vulnerabilidade de (BD)'/><category term='Mapeamento Objeto Relacional'/><category term='Raspagem de Dados'/><category term='FirebirdSQL'/><category term='PostgreSQL'/><category term='Exercícios de SQL'/><category term='Funções de Criptografia'/><category term='Cliente-servidor'/><category term='Migrações de Dados'/><title type='text'>Linguagens de Banco de Dados</title><subtitle type='html'>você vai encontrar qualquer uma descrição de uma linguagem de Banco de Dados de computador, enfim como é um Blogger será poucas informações mas de boa ajuda e bem necessária a todos o visitantes
Obrigado</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://elderstroparo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>52</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-6544387161994159436</id><published>2012-01-28T08:44:00.000-08:00</published><updated>2012-01-28T10:25:32.038-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Servidor de Bando de Dados'/><title type='text'>Servidor de Banco de Dados</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/-Cc7Bi9hnnEk/TyQ7LjECS1I/AAAAAAAAAK0/-D_tP25buTE/s1600/mainframe.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 262px; height: 192px;" src="http://3.bp.blogspot.com/-Cc7Bi9hnnEk/TyQ7LjECS1I/AAAAAAAAAK0/-D_tP25buTE/s400/mainframe.jpg" alt="" id="BLOGGER_PHOTO_ID_5702748097734658898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div  style="text-align: center; font-family:arial;"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Servidor de Banco de Dados&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify; font-family: arial;"&gt;Bom para quem não tem um bom conhecimento de Servidor de Banco de Dados vou explicar um pouco sobre isto.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul  style="font-family:arial;"&gt;&lt;li&gt;O que é &lt;span style="font-weight: bold;"&gt;Servidor&lt;/span&gt;?&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:arial;"&gt;Um &lt;span style="font-weight: bold;"&gt;Servidor&lt;/span&gt; é um sistema de computação que fornece serviços a uma rede de computadores. Esses serviços podem ser de natureza diversa, como por exemplo, arquivos e correio eletrônico. Os computadores que acessam os serviços de um servidor são chamados clientes. As redes que utilizam servidores são do tipo cliente-servidor, utilizadas em redes de médio e grande porte (com muitas máquinas) e em redes onde; a questão da segurança desempenha um papel de grande importância. O termo servidor é largamente aplicado a computadores completos, embora um servidor possa equivaler a um &lt;span style="font-weight: bold;"&gt;software&lt;/span&gt; ou a partes de um sistema computacional, ou até mesmo a uma máquina que não seja necessariamente um computador.&lt;/span&gt; &lt;span style="font-family:arial;"&gt;A história dos servidores tem, obviamente, a ver com as redes de computadores. Redes permitiam a comunicação entre diversos computadores, e, com o crescimento destas, surgiu a idéia de dedicar alguns computadores para prestar algum serviço à rede, enquanto outros se utilizariam destes serviços. Os servidores ficariam responsáveis pela primeira função.&lt;/span&gt; &lt;span style="font-family:arial;"&gt;Com o advento das redes, foi crescendo a necessidade das redes terem servidores e minicomputadores, o que acabou contribuindo para a diminuição do uso dos &lt;span style="font-weight: bold;"&gt;mainframes&lt;/span&gt;.&lt;/span&gt; &lt;span style="font-family:arial;"&gt;O crescimento das empresas de redes e o crescimento do uso da Internet entre profissionais e usuários comuns foi o grande impulso para o desenvolvimento e aperfeiçoamento de tecnologias para servidores.&lt;/span&gt;&lt;br  style="font-family:arial;"&gt;&lt;br  style="font-family:arial;"&gt;&lt;ul  style="font-family:arial;"&gt;&lt;li&gt;O que é &lt;span style="font-weight: bold;"&gt;Banco de Dados&lt;/span&gt;?&lt;/li&gt;&lt;/ul&gt;&lt;br  style="font-family:arial;"&gt;&lt;span style="font-family:arial;"&gt;Bancos de dados, ou bases de dados, são coleções de informações que se relacionam de forma que crie um sentido. São de vital importância para empresas, e há duas décadas se tornaram a principal peça dos sistemas de informação. Normalmente existem por vários anos sem alterações em sua estrutura.&lt;/span&gt; &lt;span style="font-family:arial;"&gt;São operados pelos &lt;span style="font-weight: bold;"&gt;Sistemas Gerenciadores de Bancos de Dados (SGBD)&lt;/span&gt;, que surgiram na década de 70. Antes destes, as aplicações usavam sistemas de arquivos do sistema operacional para armazenar suas informações. Na década de 80 a tecnologia de SGBD relacional passou a dominar o mercado, e atualmente utiliza-se praticamente apenas ele. Outro tipo notável é o SGBD Orientado a Objetos, para quando sua estrutura ou as aplicações que o utilizam mudam constantemente.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Explicando melhor..&lt;/span&gt;&lt;br style="font-weight: bold;font-family:arial;" &gt;&lt;br  style="font-family:arial;"&gt;&lt;span style="font-family:arial;"&gt;Com a junção de um&lt;span style="font-weight: bold;"&gt; Servidor&lt;/span&gt; e uma base de &lt;span style="font-weight: bold;"&gt;Banco&lt;/span&gt; você terá um &lt;span style="font-weight: bold;"&gt;Servidor de Banco de Dados&lt;/span&gt;, assim você poderá manipular informações contidas em uma base de banco de dados. Por menor que sejam, possuem quantidades cada vez maiores de armazenagem de dados e informações. Conseguindo manipulação destas informações que se tornam impossível de ser realizada manualmente (via papéis, principalmente), pois sua utilização além de demorada (devido a catalogação dos dados) é passível de erros principalmente ocasionados pelo desgaste do operador em conseguir resgatar informações requisitadas. Nesse sentido, torna-se mais fácil encontrar a informação numa base de dados que recorre a uma das tecnologias de informação de maior sucesso e confiança. Ou seja, as bases de dados estendem a função do papel ao guardar a informação em computadores.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Muitas empresas adotaram o &lt;span style="font-weight: bold;"&gt;NT/2000&lt;/span&gt; não como uma plataforma de rede,  mas como um servidor de banco de dados para alojar servidores &lt;span style="font-weight: bold;"&gt;SQL Server &lt;/span&gt; ou&lt;span style="font-weight: bold;"&gt; Oracle&lt;/span&gt;. Atualmente, muito do trabalho em banco de dados está sendo  feito em plataformas &lt;span style="font-weight: bold;"&gt;NT/2000&lt;/span&gt;.&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;p  style="font-family:arial;"&gt;Mas o uso destes servidores de banco de dados com Linux vem crescendo  bastante, Para tanto, utilizam-se servidores &lt;span style="font-weight: bold;"&gt;MySQL &lt;/span&gt;ou o&lt;span style="font-weight: bold;"&gt; PostGresSQL&lt;/span&gt;;  este último clone de um antigo sistema &lt;span style="font-weight: bold;"&gt;Unix&lt;/span&gt; chamado &lt;span style="font-weight: bold;"&gt;Ingres&lt;/span&gt;.&lt;/p&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;p  style="font-family:arial;"&gt;Num passado recente, muitos administradores de rede não queriam  confiar seus preciosos dados a um programa gratuito como o &lt;span style="font-weight: bold;"&gt;MySQL&lt;/span&gt;, mas  isto mudou. Atualmente há muitos sites de comércio eletrônico e de  grandes Intranets rodando em plataforma &lt;span style="font-weight: bold;"&gt;Linux&lt;/span&gt;, e o&lt;span style="font-weight: bold;"&gt; MySQL&lt;/span&gt; provou ser  rápido, estável e confiável, tudo isto com uma grande (enorme) vantagem,  é gratuito!&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-6544387161994159436?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/6544387161994159436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/6544387161994159436'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2012/01/servidor-de-banco-de-dados.html' title='Servidor de Banco de Dados'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-Cc7Bi9hnnEk/TyQ7LjECS1I/AAAAAAAAAK0/-D_tP25buTE/s72-c/mainframe.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-6924901600436421668</id><published>2011-04-15T10:43:00.000-07:00</published><updated>2012-01-28T06:33:13.029-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siglas'/><title type='text'></title><content type='html'>&lt;div  style="text-align: center;font-family:arial;"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;LISTA DE SIGLAS (Geral de Banco de Dados)&lt;br /&gt;&lt;/span&gt;&lt;xml&gt;&lt;w:worddocument&gt;&lt;w:trackmoves&gt;&lt;w:trackformatting&gt;&lt;w:punctuationkerning&gt;&lt;w:validateagainstschemas&gt;&lt;w:donotpromoteqf&gt;&lt;w:compatibility&gt;&lt;w:breakwrappedtables&gt;&lt;w:snaptogridincell&gt;&lt;w:wraptextwithpunct&gt;&lt;w:useasianbreakrules&gt;&lt;w:dontgrowautofit&gt;&lt;w:splitpgbreakandparamark&gt;&lt;w:dontvertaligncellwithsp&gt;&lt;w:dontbreakconstrainedforcedtables&gt;&lt;w:dontvertalignintxbx&gt;&lt;w:word11kerningpairs&gt;&lt;w:browserlevel&gt;&lt;/w:browserlevel&gt;&lt;m:mathpr&gt;&lt;m:mathfont val="Cambria Math"&gt;&lt;m:brkbin val="before"&gt;&lt;m:brkbinsub val=""&gt;&lt;m:smallfrac val="off"&gt;&lt;m:dispdef&gt;&lt;m:lmargin val="0"&gt;&lt;m:rmargin val="0"&gt;&lt;m:defjc val="centerGroup"&gt;&lt;m:wrapindent val="1440"&gt;&lt;m:intlim val="subSup"&gt;&lt;m:narylim val="undOvr"&gt;&lt;/m:narylim&gt;&lt;/m:intlim&gt;&lt;/m:wrapindent&gt;&lt;/m:defjc&gt;&lt;/m:rmargin&gt;&lt;/m:lmargin&gt;&lt;/m:dispdef&gt;&lt;/m:smallfrac&gt;&lt;/m:brkbinsub&gt;&lt;/m:brkbin&gt;&lt;/m:mathfont&gt;&lt;/m:mathpr&gt;&lt;/w:word11kerningpairs&gt;&lt;/w:dontvertalignintxbx&gt;&lt;/w:dontbreakconstrainedforcedtables&gt;&lt;/w:dontvertaligncellwithsp&gt;&lt;/w:splitpgbreakandparamark&gt;&lt;/w:dontgrowautofit&gt;&lt;/w:useasianbreakrules&gt;&lt;/w:wraptextwithpunct&gt;&lt;/w:snaptogridincell&gt;&lt;/w:breakwrappedtables&gt;&lt;/w:compatibility&gt;&lt;/w:donotpromoteqf&gt;&lt;/w:validateagainstschemas&gt;&lt;/w:punctuationkerning&gt;&lt;/w:trackformatting&gt;&lt;/w:trackmoves&gt;&lt;/w:worddocument&gt;&lt;/xml&gt;&lt;/div&gt;&lt;xml style="font-family:arial;"&gt;&lt;w:worddocument&gt;&lt;w:trackmoves&gt;&lt;w:trackformatting&gt;&lt;w:punctuationkerning&gt;&lt;w:validateagainstschemas&gt;&lt;w:donotpromoteqf&gt;&lt;w:compatibility&gt;&lt;w:breakwrappedtables&gt;&lt;w:snaptogridincell&gt;&lt;w:wraptextwithpunct&gt;&lt;w:useasianbreakrules&gt;&lt;w:dontgrowautofit&gt;&lt;w:splitpgbreakandparamark&gt;&lt;w:dontvertaligncellwithsp&gt;&lt;w:dontbreakconstrainedforcedtables&gt;&lt;w:dontvertalignintxbx&gt;&lt;w:word11kerningpairs&gt;&lt;m:mathpr&gt;&lt;m:mathfont val="Cambria Math"&gt;&lt;m:brkbin val="before"&gt;&lt;m:brkbinsub val=""&gt;&lt;m:smallfrac val="off"&gt;&lt;m:dispdef&gt;&lt;m:lmargin val="0"&gt;&lt;m:rmargin val="0"&gt;&lt;m:defjc val="centerGroup"&gt;&lt;m:wrapindent val="1440"&gt;&lt;/m:wrapindent&gt;&lt;!--[endif]--&gt;&lt;!----&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:lsdexception&gt; &lt;/w:lsdexception&gt;&lt;!--[endif]--&gt;&lt;!----&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Tabela normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0cm 5.4pt 0cm 5.4pt;  mso-para-margin-top:0cm;  mso-para-margin-right:0cm;  mso-para-margin-bottom:auto;  mso-para-margin-left:0cm;  text-align:justify;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} &lt;/style&gt; &lt;!--[endif]--&gt;    &lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:latentstyles&gt;&lt;/xml&gt;&lt;/m:defjc&gt;&lt;/m:rmargin&gt;&lt;/m:lmargin&gt;&lt;/m:dispdef&gt;&lt;/m:smallfrac&gt;&lt;/m:brkbinsub&gt;&lt;/m:brkbin&gt;&lt;/m:mathfont&gt;&lt;/m:mathpr&gt;&lt;/w:word11kerningpairs&gt;&lt;/w:dontvertalignintxbx&gt;&lt;/w:dontbreakconstrainedforcedtables&gt;&lt;/w:dontvertaligncellwithsp&gt;&lt;/w:splitpgbreakandparamark&gt;&lt;/w:dontgrowautofit&gt;&lt;/w:useasianbreakrules&gt;&lt;/w:wraptextwithpunct&gt;&lt;/w:snaptogridincell&gt;&lt;/w:breakwrappedtables&gt;&lt;/w:compatibility&gt;&lt;/w:donotpromoteqf&gt;&lt;/w:validateagainstschemas&gt;&lt;/w:punctuationkerning&gt;&lt;/w:trackformatting&gt;&lt;/w:trackmoves&gt;&lt;/w:worddocument&gt;&lt;/xml&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: center;"&gt;&lt;xml  style="font-family:arial;"&gt;&lt;w:worddocument&gt;&lt;w:trackmoves&gt;&lt;w:trackformatting&gt;&lt;w:punctuationkerning&gt;&lt;w:validateagainstschemas&gt;&lt;w:donotpromoteqf&gt;&lt;w:compatibility&gt;&lt;w:breakwrappedtables&gt;&lt;w:snaptogridincell&gt;&lt;w:wraptextwithpunct&gt;&lt;w:useasianbreakrules&gt;&lt;w:dontgrowautofit&gt;&lt;w:splitpgbreakandparamark&gt;&lt;w:dontvertaligncellwithsp&gt;&lt;w:dontbreakconstrainedforcedtables&gt;&lt;w:dontvertalignintxbx&gt;&lt;w:word11kerningpairs&gt;&lt;m:mathpr&gt;&lt;m:mathfont val="Cambria Math"&gt;&lt;m:brkbin val="before"&gt;&lt;m:brkbinsub val=""&gt;&lt;m:smallfrac val="off"&gt;&lt;m:dispdef&gt;&lt;m:lmargin val="0"&gt;&lt;m:rmargin val="0"&gt;&lt;m:defjc val="centerGroup"&gt;&lt;xml&gt;&lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;&lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;&lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;&lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;&lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;&lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;&lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;&lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;&lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;&lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;&lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;&lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;&lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;&lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;&lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;&lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;&lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;&lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;&lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;&lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;&lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;&lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;&lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;&lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;&lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;&lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;&lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;&lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;&lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;&lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;&lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;&lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;&lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;&lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;&lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;&lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;&lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;&lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;&lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;&lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;&lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;&lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;&lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;&lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;&lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;&lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;&lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;&lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;&lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;&lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;&lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;&lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;&lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;&lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;&lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;&lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;&lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;&lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;&lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;&lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;&lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;&lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;&lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;&lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;&lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;&lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;&lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;&lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;&lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;&lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;&lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;&lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;&lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;&lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;&lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;&lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;&lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;&lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;&lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;&lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;&lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;&lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;&lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;&lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;&lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;&lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;&lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;&lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;&lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;&lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;&lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;&lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;&lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;&lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;&lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;&lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;&lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;&lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;&lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;&lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;&lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;&lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;&lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;&lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;&lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;&lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;&lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;&lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;&lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;&lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;&lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;&lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;&lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;&lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;&lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;&lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;&lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;&lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;&lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;&lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;&lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;&lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;&lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;&lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;&lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;&lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;&lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;&lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: left;font-family:arial;" align="left"&gt;Bom estou falando alguma siglas básicas que envolve Banco de Dados.&lt;/p&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:latentstyles&gt;&lt;/xml&gt;&lt;/m:defjc&gt;&lt;/m:rmargin&gt;&lt;/m:lmargin&gt;&lt;/m:dispdef&gt;&lt;/m:smallfrac&gt;&lt;/m:brkbinsub&gt;&lt;/m:brkbin&gt;&lt;/m:mathfont&gt;&lt;/m:mathpr&gt;&lt;/w:word11kerningpairs&gt;&lt;/w:dontvertalignintxbx&gt;&lt;/w:dontbreakconstrainedforcedtables&gt;&lt;/w:dontvertaligncellwithsp&gt;&lt;/w:splitpgbreakandparamark&gt;&lt;/w:dontgrowautofit&gt;&lt;/w:useasianbreakrules&gt;&lt;/w:wraptextwithpunct&gt;&lt;/w:snaptogridincell&gt;&lt;/w:breakwrappedtables&gt;&lt;/w:compatibility&gt;&lt;/w:donotpromoteqf&gt;&lt;/w:validateagainstschemas&gt;&lt;/w:punctuationkerning&gt;&lt;/w:trackformatting&gt;&lt;/w:trackmoves&gt;&lt;/w:worddocument&gt;&lt;/xml&gt;&lt;/div&gt;&lt;br /&gt;&lt;xml style="font-family: arial;"&gt;&lt;w:worddocument&gt;&lt;w:trackmoves&gt;&lt;w:trackformatting&gt;&lt;w:punctuationkerning&gt;&lt;w:validateagainstschemas&gt;&lt;w:donotpromoteqf&gt;&lt;w:compatibility&gt;&lt;w:breakwrappedtables&gt;&lt;w:snaptogridincell&gt;&lt;w:wraptextwithpunct&gt;&lt;w:useasianbreakrules&gt;&lt;w:dontgrowautofit&gt;&lt;w:splitpgbreakandparamark&gt;&lt;w:dontvertaligncellwithsp&gt;&lt;w:dontbreakconstrainedforcedtables&gt;&lt;w:dontvertalignintxbx&gt;&lt;w:word11kerningpairs&gt;&lt;m:mathpr&gt;&lt;m:mathfont val="Cambria Math"&gt;&lt;m:brkbin val="before"&gt;&lt;m:brkbinsub val=""&gt;&lt;m:smallfrac val="off"&gt;&lt;m:dispdef&gt;&lt;m:lmargin val="0"&gt;&lt;m:rmargin val="0"&gt;&lt;m:defjc val="centerGroup"&gt;&lt;xml&gt;&lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;&lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;&lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;&lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;&lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;&lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;&lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;&lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;&lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;&lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;&lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;&lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;&lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;&lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;&lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;&lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;&lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;&lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;&lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;&lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;&lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;&lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;&lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;&lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;&lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;&lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;&lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;&lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;&lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;&lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;&lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;&lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;&lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;&lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;&lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;&lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;&lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;&lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;&lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;&lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;&lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;&lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;&lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;&lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;&lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;&lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;&lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;&lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;&lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;&lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;&lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;&lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;&lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;&lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;&lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;&lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;&lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;&lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;&lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;&lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;&lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;&lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;&lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;&lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;&lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;&lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;&lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;&lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;&lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;&lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;&lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;&lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;&lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;&lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;&lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;&lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;&lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;&lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;&lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;&lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;&lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;&lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;&lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;&lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;&lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;&lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;&lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;&lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;&lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;&lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;&lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;&lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;&lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;&lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;&lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;&lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;&lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;&lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;&lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;&lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;&lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;&lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;&lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;&lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;&lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;&lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;&lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;&lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;&lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;&lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;&lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;&lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;&lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;&lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;&lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;&lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;&lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;&lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;&lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;&lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;&lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;&lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;&lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;&lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;&lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;&lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;&lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:latentstyles&gt;&lt;/xml&gt;&lt;/m:defjc&gt;&lt;/m:rmargin&gt;&lt;/m:lmargin&gt;&lt;/m:dispdef&gt;&lt;/m:smallfrac&gt;&lt;/m:brkbinsub&gt;&lt;/m:brkbin&gt;&lt;/m:mathfont&gt;&lt;/m:mathpr&gt;&lt;/w:word11kerningpairs&gt;&lt;/w:dontvertalignintxbx&gt;&lt;/w:dontbreakconstrainedforcedtables&gt;&lt;/w:dontvertaligncellwithsp&gt;&lt;/w:splitpgbreakandparamark&gt;&lt;/w:dontgrowautofit&gt;&lt;/w:useasianbreakrules&gt;&lt;/w:wraptextwithpunct&gt;&lt;/w:snaptogridincell&gt;&lt;/w:breakwrappedtables&gt;&lt;/w:compatibility&gt;&lt;/w:donotpromoteqf&gt;&lt;/w:validateagainstschemas&gt;&lt;/w:punctuationkerning&gt;&lt;/w:trackformatting&gt;&lt;/w:trackmoves&gt;&lt;/w:worddocument&gt;&lt;/xml&gt;&lt;/div&gt;&lt;xml style="font-family: arial;"&gt;&lt;w:worddocument&gt;&lt;w:trackmoves&gt;&lt;w:trackformatting&gt;&lt;w:punctuationkerning&gt;&lt;w:validateagainstschemas&gt;&lt;w:donotpromoteqf&gt;&lt;w:compatibility&gt;&lt;w:breakwrappedtables&gt;&lt;w:snaptogridincell&gt;&lt;w:wraptextwithpunct&gt;&lt;w:useasianbreakrules&gt;&lt;w:dontgrowautofit&gt;&lt;w:splitpgbreakandparamark&gt;&lt;w:dontvertaligncellwithsp&gt;&lt;w:dontbreakconstrainedforcedtables&gt;&lt;w:dontvertalignintxbx&gt;&lt;w:word11kerningpairs&gt;&lt;m:mathpr&gt;&lt;m:mathfont val="Cambria Math"&gt;&lt;m:brkbin val="before"&gt;&lt;m:brkbinsub val=""&gt;&lt;m:smallfrac val="off"&gt;&lt;m:dispdef&gt;&lt;m:lmargin val="0"&gt;&lt;m:rmargin val="0"&gt;&lt;m:defjc val="centerGroup"&gt;&lt;xml&gt;&lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;&lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;&lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;&lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;&lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;&lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;&lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;&lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;&lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;&lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;&lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;&lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;&lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;&lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;&lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;&lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;&lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;&lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;&lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;&lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;&lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;&lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;&lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;&lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;&lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;&lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;&lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;&lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;&lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;&lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;&lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;&lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;&lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;&lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;&lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;&lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;&lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;&lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;&lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;&lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;&lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;&lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;&lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;&lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;&lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;&lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;&lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;&lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;&lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;&lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;&lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;&lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;&lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;&lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;&lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;&lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;&lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;&lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;&lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;&lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;&lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;&lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;&lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;&lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;&lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;&lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;&lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;&lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;&lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;&lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;&lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;&lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;&lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;&lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;&lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;&lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;&lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;&lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;&lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;&lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;&lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;&lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;&lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;&lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;&lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;&lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;&lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;&lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;&lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;&lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;&lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;&lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;&lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;&lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;&lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;&lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;&lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;&lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;&lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;&lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;&lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;&lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;&lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;&lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;&lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;&lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;&lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;&lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;&lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;&lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;&lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;&lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;&lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;&lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;&lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;&lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;&lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;&lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;&lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;&lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;&lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;&lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;&lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;&lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;&lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;&lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;&lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;&lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;&lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: left;font-family:arial;" align="left"&gt;&lt;span style="font-weight: bold;"&gt;ANSI&lt;/span&gt; - American National Standards Institute;&lt;/p&gt;    &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: left;font-family:arial;" align="left"&gt;&lt;span style="font-weight: bold;"&gt;CRUD&lt;/span&gt; - Acrônimo da expressão em língua Inglesa Create, Retrieve, Update e Destroy,usada para definir quatro operações básicas usadas em bancos de dadosrelacionais;&lt;/p&gt;  &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: left;font-family:arial;" align="left"&gt;&lt;span style="font-weight: bold;"&gt;DAO&lt;/span&gt; - Data Acess Object;&lt;/p&gt;    &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: left;font-family:arial;" align="left"&gt;&lt;span style="font-weight: bold;"&gt;DBA&lt;/span&gt; - DataBase Administrator;&lt;/p&gt;    &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: left;font-family:arial;" align="left"&gt;&lt;span style="font-weight: bold;"&gt;DB4o&lt;/span&gt; - DataBase for Object;&lt;/p&gt;    &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: left;font-family:arial;" align="left"&gt;&lt;span style="font-weight: bold;"&gt;DBOO&lt;/span&gt; - Banco de dados orientado a objeto;&lt;/p&gt;    &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: left;font-family:arial;" align="left"&gt;&lt;span style="font-weight: bold;"&gt;HQL&lt;/span&gt; - Hibernate Query Language;&lt;/p&gt;    &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: left;font-family:arial;" align="left"&gt;&lt;span style="font-weight: bold;"&gt;JAVA/SE&lt;/span&gt; - Java Standard Edition;&lt;/p&gt;    &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: left;font-family:arial;" align="left"&gt;&lt;span style="font-weight: bold;"&gt;JDBC&lt;/span&gt; - Java Database Connectivity;&lt;/p&gt;    &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: left;font-family:arial;" align="left"&gt;&lt;span style="font-weight: bold;"&gt;DER&lt;/span&gt; - Diagrama Entidade-Relacionamento;&lt;/p&gt;    &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: left;font-family:arial;" align="left"&gt;&lt;span style="font-weight: bold;"&gt;ODBC&lt;/span&gt; - Open Data Base Connectivity;&lt;/p&gt;    &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: left;font-family:arial;" align="left"&gt;&lt;span style="font-weight: bold;"&gt;ODMG&lt;/span&gt; - Object Database Management Group;&lt;/p&gt;    &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: left;font-family:arial;" align="left"&gt;&lt;span style="font-weight: bold;"&gt;OO&lt;/span&gt; - Orientação à Objeto;&lt;/p&gt;    &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: left;font-family:arial;" align="left"&gt;&lt;span style="font-weight: bold;"&gt;RDBMS&lt;/span&gt; - Relational database management systemSIG- Sistema de Informação Geográfica;&lt;/p&gt;    &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: left;font-family:arial;" align="left"&gt;&lt;span style="font-weight: bold;"&gt;SGDB&lt;/span&gt; - Sistema Gerenciador de Banco de Dados;&lt;/p&gt;    &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: left;font-family:arial;" align="left"&gt;&lt;span style="font-weight: bold;"&gt;SGDBOO&lt;/span&gt; - Sistema Gerenciador de Banco de Dados Orientado a Objeto;&lt;/p&gt;    &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: left;font-family:arial;" align="left"&gt;&lt;span style="font-weight: bold;"&gt;SGDBR&lt;/span&gt; - Sistema Gerenciador de Banco de Dados Relacional;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;font-family:arial;" align="left"&gt;&lt;span style="font-weight: bold;"&gt;SQL&lt;/span&gt; - Structured Query Language;&lt;/p&gt;    &lt;p class="MsoNormal" face="arial" style="margin-bottom: 0.0001pt; text-align: left;" align="left"&gt;&lt;span style="font-weight: bold;"&gt;UML&lt;/span&gt; - Unified Modeling Language;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"&gt;&lt;span style="font-weight: bold;"&gt;XML&lt;/span&gt; - Extensible Markup Language;&lt;/p&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:lsdexception&gt;&lt;/w:latentstyles&gt;&lt;/xml&gt;&lt;/m:defjc&gt;&lt;/m:rmargin&gt;&lt;/m:lmargin&gt;&lt;/m:dispdef&gt;&lt;/m:smallfrac&gt;&lt;/m:brkbinsub&gt;&lt;/m:brkbin&gt;&lt;/m:mathfont&gt;&lt;/m:mathpr&gt;&lt;/w:word11kerningpairs&gt;&lt;/w:dontvertalignintxbx&gt;&lt;/w:dontbreakconstrainedforcedtables&gt;&lt;/w:dontvertaligncellwithsp&gt;&lt;/w:splitpgbreakandparamark&gt;&lt;/w:dontgrowautofit&gt;&lt;/w:useasianbreakrules&gt;&lt;/w:wraptextwithpunct&gt;&lt;/w:snaptogridincell&gt;&lt;/w:breakwrappedtables&gt;&lt;/w:compatibility&gt;&lt;/w:donotpromoteqf&gt;&lt;/w:validateagainstschemas&gt;&lt;/w:punctuationkerning&gt;&lt;/w:trackformatting&gt;&lt;/w:trackmoves&gt;&lt;/w:worddocument&gt;&lt;/xml&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-6924901600436421668?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/6924901600436421668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/6924901600436421668'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2011/04/normal-0-21-false-false-false-pt-br-x.html' title=''/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-3061137984623330914</id><published>2011-04-15T10:01:00.000-07:00</published><updated>2011-04-15T11:44:00.261-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siglas'/><title type='text'></title><content type='html'>&lt;div  style="text-align: center; font-family: arial;font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Siglas - PostgreSQL&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="color: rgb(0, 0, 0); font-family: arial;font-family:arial;font-size:100%;"  &gt;&lt;br /&gt;Olá novamente estou postando algumas siglas agora sobre &lt;span style="font-weight: bold;"&gt;Postgre&lt;/span&gt;, algumas siglas aqui para melhor entendimento nas leituras, como a maioria destas siglas  perde o seu significado na tradução, preferi deixá-las em seu idioma  original.&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;font-family:arial;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: arial;font-size:100%;" &gt;&lt;b&gt;&lt;br /&gt;Referential integrity:&lt;/b&gt;&lt;/span&gt; &lt;span style="font-family: arial;font-size:100%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: arial;font-family:arial;font-size:100%;"  &gt;Também conhecido como "integridade          referencial", esse recurso consiste em restrições ou          regras existentes para uma correta inserção de dados, por          exemplo, para impedir que uma tabela seja preenchida sem que isso ocorra          em outra;&lt;/span&gt;&lt;span style="font-family: arial;font-size:100%;" &gt;&lt;b&gt;&lt;br /&gt;&lt;br /&gt;Schemas:&lt;/b&gt;&lt;/span&gt; &lt;span style="font-family: arial;font-size:100%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: arial;font-family:arial;font-size:100%;"  &gt;Recurso que permite cruzar informações          em um mesmo banco de dados, mas em estruturas diferentes;&lt;/span&gt;&lt;span style="font-family: arial;font-size:100%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;SQL:&lt;/b&gt;&lt;/span&gt;          &lt;span style="font-family: arial;font-size:100%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: arial;font-family:arial;font-size:100%;"  &gt;Sigla para Structured Query Language, é uma linguagem          utilizada em bancos de dados relacionais;&lt;/span&gt;&lt;span style="font-family: arial;font-size:100%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;SSL:&lt;/b&gt;&lt;/span&gt;          &lt;span style="font-family: arial;font-size:100%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: arial;font-family:arial;font-size:100%;"  &gt;Sigla para Secure Sockets Layer, consiste em um protocolo          para a troca segura de informações;&lt;/span&gt;&lt;span style="font-family: arial;font-size:100%;" &gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;Stored procedures:&lt;/b&gt;&lt;/span&gt;          &lt;span style="font-family: arial;font-size:100%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: arial;font-family:arial;font-size:100%;"  &gt;Ssse recurso consiste em comandos SQL "guardados"          no servidor para, por exemplo, executar tarefas repetitivas, evitando          que um cliente tenha que executá-las constantemente;&lt;/span&gt;&lt;span style="font-family: arial;font-size:100%;" &gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;Transactions:&lt;/b&gt;&lt;/span&gt;          &lt;span style="font-family: arial;font-size:100%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: arial;font-family:arial;font-size:100%;"  &gt;Também conhecidas como transações,          as transactions são instruções executadas em um bloco          designado por parâmetros que indicam seu início e seu fim;&lt;/span&gt;&lt;span style="font-family: arial;font-size:100%;" &gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;Triggers:&lt;/b&gt;&lt;/span&gt;          &lt;span style="font-family: arial;font-size:100%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: arial;font-family:arial;font-size:100%;"  &gt;Também chamados de gatilhos, os triggers são          recursos que permitem o acionamento de uma seqüência de comandos          logo em seguida ou logo após um evento;&lt;/span&gt;&lt;span style="font-family: arial;font-size:100%;" &gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;Views:&lt;/b&gt;&lt;/span&gt;          &lt;span style="font-family: arial;font-size:100%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: arial;font-family:arial;font-size:100%;"  &gt;Os views consistem em um tipo de tabela virtual formada por          campos extraídos de uma tabela "verdadeira", facilitando          o controle sob os dados acessados.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-3061137984623330914?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/3061137984623330914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/3061137984623330914'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2011/04/siglas-postgresql-ola-novamente-estou.html' title=''/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-5568517677140075927</id><published>2011-04-15T09:21:00.000-07:00</published><updated>2011-04-15T11:42:03.241-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siglas'/><title type='text'></title><content type='html'>&lt;div  style="text-align: center; font-family: arial;font-family:arial;"&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);font-size:130%;" &gt;Siglas - SQL Server&lt;/span&gt;&lt;/div&gt;&lt;p  style="color: rgb(0, 0, 0); text-align: justify; font-family: arial;font-family:arial;"&gt;&lt;span style="color: rgb(0, 0, 0);font-size:100%;" &gt;Olá meus amigos vou postar algumas siglas aqui sobre a linguagem SQL Server para melhor entendimento nas leituras, como a maioria destas siglas perde o seu significado na tradução, preferi deixá-las em seu idioma original.&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);font-size:100%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="color: rgb(0, 0, 0); font-family: arial;font-family:arial;"&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);font-size:100%;" &gt;ACID                      – Atomicity  Consistency Isolation Durability&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;             &lt;span lang="PT-BR"&gt;Esta sigla é utilizada para definir as propriedades                      que uma transação deve possuir.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                   &lt;p  style="color: rgb(0, 0, 0); font-family: arial;font-family:arial;"&gt; &lt;span style="font-size:100%;"&gt;&lt;span lang="PT-BR"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;ADO                      – Activex Data Objects&lt;/span&gt;&lt;br /&gt;             Faz referência a uma biblioteca de objetos ActiveX para acesso                      a dados. Geralmente é através destes objetos que um programador                      em ASP ou VB acessa o SQL Server&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                   &lt;p  style="color: rgb(0, 0, 0); font-family: arial;font-family:arial;"&gt; &lt;span style="font-weight: bold;font-size:100%;" &gt;ANSI-92                      – American National Standarts Institute 92&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;             &lt;span lang="PT-BR"&gt;ANI-92 é um conjunto de regras e requisitos                      estipulados pelo orgão ANSI para definição de banco de dados                      relacionais.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                   &lt;p  style="color: rgb(0, 0, 0); font-family: arial;font-family:arial;"&gt; &lt;span style="font-weight: bold;font-size:100%;" &gt;BLOB                      – Binary Large Objects&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;             &lt;span lang="PT-BR"&gt;É um tipo de dado que um campo de uma tabela                      pode armazenar. No SQL Server os tipos de dados ntext, text,                      and image podem ser considerados como do tipo BLOB.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                   &lt;p  style="color: rgb(0, 0, 0); font-family: arial;font-family:arial;"&gt; &lt;span style="font-weight: bold;font-size:100%;" &gt;BOL                      – Books OnLine&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;             &lt;span lang="PT-BR"&gt;Esta sigla é uma abreviação para a documentação                      eletrônica oficial do SQL Server.&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;                   &lt;p  style="color: rgb(0, 0, 0); font-family: arial;font-family:arial;" class="MsoBodyText"&gt;&lt;span style="font-size:100%;"&gt;&lt;span lang="PT-BR"&gt;&lt;span style="font-weight: bold;"&gt;DBCC                      - DataBase Console Commands&lt;/span&gt;&lt;br /&gt;             &lt;/span&gt;&lt;span style="text-decoration: none;" lang="PT-BR"&gt;Apesar de algumas documentações ainda constar como DataBase Consistancy                      Checker, são comandos que fazem a consistência lógica e física                      de um banco de dados do SQL Server.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                   &lt;p  style="color: rgb(0, 0, 0); font-family: arial;font-family:arial;"&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;DCL                      – Data Control Language&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;             &lt;span lang="PT-BR"&gt;Designação para os comandos GRANT, DENY e                      REVOKE do SQL Server que fazem o controle de permissões dos                      objetos do banco de dados.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                   &lt;p  style="color: rgb(0, 0, 0); font-family: arial;font-family:arial;"&gt; &lt;span style="font-weight: bold;font-size:100%;" &gt;DDL                      – Data Definition Language&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;             &lt;span lang="PT-BR"&gt;Designação para os comandos CREATE, ALTER                      e DRP (e seus derivados) que fazem o controle da criação/alteração/exclusão                      dos objetos do banco de dados do SQL Server&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                   &lt;p  style="color: rgb(0, 0, 0); font-family: arial;font-family:arial;"&gt; &lt;span style="font-weight: bold;font-size:100%;" &gt;DML                      – Data Manipulation Language&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;             Desiginação para os comandos INSERT, UPDATE e DELETE  que                      fazem o controle da manipulação de dados do banco de dados                      do SQL Server.&lt;/span&gt;&lt;/p&gt;                   &lt;p  style="color: rgb(0, 0, 0); font-family: arial;font-family:arial;"&gt; &lt;span style="font-weight: bold;font-size:100%;" &gt;DTS                      – Data Transformation Services&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;             &lt;span lang="PT-BR"&gt;É a tecnologia desenvolvida pela Microsoft                      para a manipulação e transformação de dados tanto para SQL                      Server como para outra fonte de dados.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                   &lt;p  style="color: rgb(0, 0, 0); font-family: arial;font-family:arial;"&gt; &lt;span style="font-weight: bold;font-size:100%;" &gt;EM                      – Enterprise Manager&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;             &lt;span lang="PT-BR"&gt;Esta é uma abreviação para a ferramenta de                      gerenciamento de interface gráfica do SQL Server. Na verdade                      o EM nada mais é do que um snap-in para o MMC (Microsoft Management                      Console) que por sua vez é uma interface compartilhada para                      gerenciamento gráfico de algumas ferramentas da Microsoft                      e de terceiros.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                   &lt;p  style="color: rgb(0, 0, 0); font-family: arial;font-family:arial;"&gt; &lt;span style="font-weight: bold;font-size:100%;" &gt;JDBC                      – Java DataBase Connectivity&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;             &lt;span lang="PT-BR"&gt;Um driver JDBC é o método de acesso que permite                      aplicações desenvolvidas em linguagem Java acessar diferentes                      fontes de dados, incluindo o SQL Server.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                   &lt;p  style="color: rgb(0, 0, 0); font-family: arial;font-family:arial;"&gt; &lt;span style="font-size:100%;"&gt;&lt;span lang="PT-BR"&gt;&lt;span style="font-weight: bold;"&gt;MDX                      – MultiDimensional eXpression&lt;/span&gt;&lt;br /&gt;             São expressões que permitem o acesso a dados espalhados através                      de mútiplas dimensões em um cubo de dados, por exemplo.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                   &lt;p  style="color: rgb(0, 0, 0); font-family: arial;font-family:arial;"&gt; &lt;span style="font-size:100%;"&gt;&lt;span lang="PT-BR"&gt;&lt;span style="font-weight: bold;"&gt;MER                      – Modelo Entidade Relacionamento&lt;/span&gt;&lt;br /&gt;             &lt;/span&gt;É um modelo lógico do banco de dados que  contém as                      entidades (tabelas) , atributos (campos) e relacionamento                      entre as entidades. Todo banco de dados deve começar a ser                      desenvolvido a partir do MER feito para um determinado processo                      de negócio.&lt;/span&gt;&lt;/p&gt;                   &lt;p  style="color: rgb(0, 0, 0); font-family: arial;font-family:arial;"&gt; &lt;span style="font-weight: bold;font-size:100%;" &gt;MS                      DTC – Microsoft Distributed Transaction Coordinator&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;             É um serviço, como o serviço MSSQLServer, que permite o controle                      de transações distribuídas feitas sobre fontes de dados remotas.&lt;/span&gt;&lt;/p&gt;                   &lt;p  style="color: rgb(0, 0, 0); font-family: arial;font-family:arial;"&gt; &lt;span style="font-weight: bold;font-size:100%;" &gt;OLAP                      – OnLine Analytical Processing&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;             &lt;span lang="PT-BR"&gt;Esta sigla faz referência a ambientes onde                      os dados dificilmente são atulizados e servem para auxiliar                      no processo de tomada de decisão.&lt;/span&gt;&lt;span&gt;                                     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                   &lt;p  style="color: rgb(0, 0, 0); font-family: arial;font-family:arial;"&gt; &lt;span style="font-weight: bold;font-size:100%;" &gt;OLTP                      – OnLine Transaction Processing&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;             Esta sigla faz referência a ambientes onde a entrada e atualização                       dos dados é muito intensa.&lt;/span&gt;&lt;/p&gt;                   &lt;p  style="color: rgb(0, 0, 0); font-family: arial;font-family:arial;"&gt; &lt;span style="font-weight: bold;font-size:100%;" &gt;ODBC                      – Open Database Connectivity&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;             &lt;span lang="PT-BR"&gt;Um driver ODBC é o método de acesso que permite                      aplicações desenvolvidas em diversas linguagens acessar diferentes                      fontes de dados, incluindo o SQL Server.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                   &lt;p  style="color: rgb(0, 0, 0); font-family: arial;font-family:arial;"&gt; &lt;span style="font-weight: bold;font-size:100%;" &gt;OLE                      DB – Object Linking and Embendig DataBase&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;             &lt;span lang="PT-BR"&gt;OLE DB é uma biblioteca de funções básicas                      para acesso a dados. O ADO visto anteriormente utiliza o OLE                      DB com um provider ou um ODBC. Todo o método de acesso das                      ferramentas padrão do SQL Server é feito através do OLE DB.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                   &lt;p  style="color: rgb(0, 0, 0); font-family: arial;font-family:arial;"&gt; &lt;span style="font-weight: bold;font-size:100%;" &gt;RAID                      – Redundant Array of Independent Disks&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;             &lt;span lang="PT-BR"&gt;Esta sigla serve para identificar um sistema                      de controle de discos físicos para aumento de performance,                      confiabilidade, capacidade de armazenamento e alta disponibilidade.                      Apesar de ser implementado no sistema operacional (Windows)                      este sistema pode influenciar muito a utilização do SQL Server&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                   &lt;p  style="color: rgb(0, 0, 0); font-family: arial;font-family:arial;"&gt; &lt;span style="font-weight: bold;font-size:100%;" &gt;RDBMS                      – Relational DataBase Management System&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;             &lt;span lang="PT-BR"&gt;Esta sigla identifica que um servidor de                      banco de dados gerencia base de dados relacionais. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                   &lt;p  style="color: rgb(0, 0, 0); font-family: arial;font-family:arial;"&gt; &lt;span style="font-weight: bold;font-size:100%;" &gt;SQL                      – Structured Query Language&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;             &lt;span lang="PT-BR"&gt;É a notação padrão para linguagens de instruções                      enviadas a banco de dados. Deve ser utilizada em conjunto                      com um banco de dados relacional.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                   &lt;p  style="color: rgb(0, 0, 0); font-family: arial;font-family:arial;"&gt; &lt;span style="font-weight: bold;font-size:100%;" &gt;SQL-DMO                      – SQL Distributed Management Objects&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;             &lt;span lang="PT-BR"&gt;É uma coleção de objetos que permite a utilização                      de componentes nativos do SQL Server. Com estes objetos podemos                      construir ferramentas como o Enterprise Manager ou o Quey                      Analyzer.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                   &lt;p  style="color: rgb(0, 0, 0); font-family: arial;font-family:arial;"&gt; &lt;span style="font-weight: bold;font-size:100%;" &gt;UDF                      – User Defined Function&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;             &lt;span lang="PT-BR"&gt;São pequenos programas que podem conter instruções                      Transact-SQL que serão executadas dentro do banco de dados                      somente.&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-5568517677140075927?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/5568517677140075927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/5568517677140075927'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2011/04/siglas-sql-server-ola-meus-amigos-vou.html' title=''/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-3319503989584055184</id><published>2011-04-15T08:16:00.000-07:00</published><updated>2011-04-15T08:23:57.365-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Banco de Dados em 2011'/><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-w5HS2PrrpjM/TahiyDh2TrI/AAAAAAAAAKo/XSu601y4yo8/s1600/Bando%2Bde%2BDados%2B2011.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 313px; height: 277px;" src="http://1.bp.blogspot.com/-w5HS2PrrpjM/TahiyDh2TrI/AAAAAAAAAKo/XSu601y4yo8/s400/Bando%2Bde%2BDados%2B2011.png" alt="" id="BLOGGER_PHOTO_ID_5595831149088100018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p style="text-align: justify;font-family:arial;" &gt;Olá meus amigos, estou postando sobre um assunto que achei na rede sobre &lt;span style="font-weight: bold;"&gt;Bando de Dados &lt;/span&gt;em 2011, este artigo mostra cinco previsões feitas pelo blog da Xeround &lt;a href="http://www.xeround.com/"&gt;Xeround.com&lt;/a&gt; para os &lt;span style="font-weight: bold;"&gt;Banco de Dados em 2011&lt;/span&gt;. A primeira previsão é uma bomba, vamos começar: Let's Go!!!&lt;br /&gt;&lt;/p&gt; &lt;ol style="font-family: arial;"&gt;&lt;li&gt;&lt;strong&gt;Bancos de Dados relacionais “voltam a ser uma boa escolha”:&lt;/strong&gt;&lt;/li&gt;&lt;p style="text-align: justify;"&gt;Parece que toda a propaganda em cima do NoSql irá decrescer. DBAs e  empresas retornação para o já comprovado SQL. Toda a promessa de  escalabilidade e distribuição que levou à adoção do NoSql não pode  compensar a falta de funções mais básicas transacionais e relacionais,  que são requisitos básicos para qualquer aplicação comercial.&lt;br /&gt;Casos alternativos serão encontrados utilizando NoSql, como por exemplo  DW / BI, aonde o grande conjunto de dados e vários tipos englobados são a  chave do alto desempenho.&lt;/p&gt;&lt;li&gt;&lt;strong&gt;Empresas e desenvolvedores irão perceber que banco de dados na nuvem tem necessidades específicas:&lt;/strong&gt;&lt;/li&gt;&lt;p style="text-align: justify;"&gt;Essa é uma discussão que está amadurecendo. Enquanto alguns começam a  perceber os benefícios da nuvem, outros percebem que a cloud não é  apenas abstração da virtualização.&lt;br /&gt;Bancos de Dados não são apenas a parte mais crítica de uma aplicação,  mas está tornando claro que banco de dados nas nuvens são diferentes das  instalações tradicionais. A tendência é de que as bases de dados nas  nuvens tenham forte crescimento neste ano.&lt;/p&gt;&lt;li&gt;&lt;strong&gt;Este será o ano do DBaaS (Datavase as a Service)&lt;/strong&gt;&lt;/li&gt;&lt;p style="text-align: justify;"&gt;A promessa de bancos de dados nas nuvens vai além da simples redução  de custos e eficiência das operações. É tudo sobre a simplicidade e uma  filosofia de “não se preocupar”. Problemas de configuração e as  operações em andamento serão automatizadas, ou serão simples como um  apertar de botões.&lt;br /&gt;A possibilidade é de que você possa levantar seu banco na nuvem em questão de minutos.&lt;br /&gt;E a melhor possibilidade de todas, é a transição suave, sem necessidade de mudanças de códigos.&lt;/p&gt;&lt;li&gt;&lt;strong&gt;Preços por Utilização de SaaS:&lt;/strong&gt;&lt;/li&gt;&lt;p style="text-align: justify;"&gt;Este modelo tem a vantagem de evitar o excesso de subscrições por  usuários ou por recursos. Os bancos de dados e modelos de infraestrutura  serão pressionados a aplicar o mesmo modelo do SaaS, pagamento por uso  real.&lt;br /&gt;O modelo de precificação tradicional para bancos de dados da empresa  serão ajustados para refletir a flexibilidade e a natureza dinâmica da  nuvem.&lt;/p&gt;&lt;li&gt;&lt;strong&gt;Elasticidade é a Chave:&lt;/strong&gt;&lt;/li&gt;&lt;p style="text-align: justify;"&gt;Se antes, os desenvolvedores tinham que escolher entre a elasticidade  e a simplicidade de NoSql, e as transações em capacidades de consultas  no SQL, neste ano veremos que podemos ter ambas soluções.&lt;br /&gt;Elasticidade reflete tudo isto, escalabilidade, disponibilidade e distribuição.&lt;br /&gt;A idéia é de que este princípio da elasticidade seja automático, sem a  necessidade de esbarrar na monitoração e configuração manual. Poderá ter  uma solução de banco de dados garantindo escalabilidade automática,  tuning e backup. &lt;/p&gt;&lt;/ol&gt; &lt;p style="font-family: arial; text-align: justify;"&gt;As previsões são bem interessantes, mas saibam que a empresa que as  “previu”, é uma empresa que oferece Banco de Dados nas Nuvens, então não  cortem os pulsos pois pode ter sido um pouco tendenciosa.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;div style="text-align: center;"&gt;Fonte&lt;br /&gt;&lt;/div&gt;&lt;p style="font-family: arial; text-align: center;"&gt;&lt;a href="http://blog.xeround.com/2011/01/five-predictions-for-your-database-in-2011"&gt;http://blog.xeround.com/2011/01/five-predictions-for-your-database-in-2011&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-3319503989584055184?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/3319503989584055184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/3319503989584055184'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2011/04/ola-meus-amigos-estou-postando-sobre-um.html' title=''/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-w5HS2PrrpjM/TahiyDh2TrI/AAAAAAAAAKo/XSu601y4yo8/s72-c/Bando%2Bde%2BDados%2B2011.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-4625188906238215259</id><published>2011-03-09T06:29:00.000-08:00</published><updated>2011-03-09T06:55:45.358-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Procedimento Armazenado'/><title type='text'>Procedimento Armazenado</title><content type='html'>&lt;div  style="text-align: justify;font-family:arial;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-J85vMjgMMKs/TXePHK7X88I/AAAAAAAAAKg/m6uUoHfrf_g/s1600/stored_procedures.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 205px;" src="http://1.bp.blogspot.com/-J85vMjgMMKs/TXePHK7X88I/AAAAAAAAAKg/m6uUoHfrf_g/s400/stored_procedures.png" alt="" id="BLOGGER_PHOTO_ID_5582087616504263618" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div face="arial" style="text-align: justify;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Procedimento Armazenado (Stored Procedure)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;&lt;br /&gt;Procedimento armazenado&lt;/b&gt; ou &lt;b&gt;Stored Procedure&lt;/b&gt; é uma coleção de comandos em &lt;span style="font-weight: bold;"&gt;SQL&lt;/span&gt; para dispensamento de &lt;span style="font-weight: bold;"&gt;Banco de Dados&lt;/span&gt;.  Encapsula tarefas repetitivas, aceita parâmetros de entrada e retorna  um valor de status (para indicar aceitação ou falha na execução). O  procedimento armazenado pode reduzir o tráfego na rede, melhorar a  performance, criar mecanismos de segurança, etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;O que é um Stored Procedure?&lt;/span&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;R: &lt;span style="font-weight: bold;"&gt;Stored Procedure&lt;/span&gt; é um conjunto de comandos, ao qual é atribuído um nome. Este conjunto fica armazenado no &lt;span style="font-weight: bold;"&gt;Banco de Dados&lt;/span&gt;  e pode ser chamado a qualquer momento tanto pelo &lt;span style="font-weight: bold;"&gt;SGBD&lt;/span&gt; (&lt;span style="font-weight: bold;"&gt;Sistema  Gerenciador de Banco de Dados&lt;/span&gt;) quanto por um sistema que faz interface  com o mesmo.&lt;br /&gt;&lt;br /&gt;Você pode criar uma &lt;span style="font-weight: bold;"&gt;Stored Procedure&lt;/span&gt; em linha de comando no &lt;span style="font-weight: bold;"&gt;Query Analizer&lt;/span&gt; com a seguinte sintaxe:&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 8px solid rgb(192, 192, 192);" align="left"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt;&lt;/code&gt;&lt;span style="font-family:arial;"&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt;Create  procedure busca&lt;br /&gt;@nomedebusca varchar (50)&lt;br /&gt;as&lt;br /&gt;select nome1, nome2&lt;br /&gt;from nome_da_tabela&lt;br /&gt;where nome = @nomedebusca&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Ou&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre&gt;&lt;/pre&gt;&lt;div align="justify"&gt;&lt;div style="border: 8px solid rgb(192, 192, 192);" align="left"&gt;&lt;span style="font-family:arial;"&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt;CREATE PROCEDURE nome_do_stored_procedure&lt;br /&gt;[&lt;br /&gt;{@parametro tipo_de_dados_parametro}[=valor_default] [output]&lt;br /&gt;]&lt;br /&gt;[,...n]&lt;br /&gt;AS&lt;br /&gt;comando1,&lt;br /&gt;comando2,&lt;br /&gt;comando3,&lt;br /&gt;...,&lt;br /&gt;comando2&lt;code&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;GO&lt;/code&gt; &lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;Algumas considerações:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul  style="text-align: justify;font-family:arial;"&gt;&lt;li&gt;Somente poderão executar o comando &lt;span style="font-weight: bold;"&gt;CREATE STORED PROCEDURE&lt;/span&gt;, usuários que  são membros da role de servidor sysadmin ou das roles de  &lt;span style="font-weight: bold;"&gt; Banco de Dados  db_owner&lt;/span&gt; e&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;db_ddladmin&lt;/span&gt;;&lt;/li&gt;&lt;/ul&gt;&lt;ul  style="text-align: justify;font-family:arial;"&gt;&lt;li&gt;Em um Stored Procedure, podemos incluir qualquer comando T-SQL, com  exceção dos seguintes: &lt;span style="font-weight: bold;"&gt;CREATE PROCEDURE, CREATE DEFAULT, CREATE RULE,  CREATE TRIGGER E CREATE VIEW&lt;/span&gt;;&lt;/li&gt;&lt;/ul&gt;&lt;ul  style="text-align: justify;font-family:arial;"&gt;&lt;li&gt;Em um&lt;span style="font-weight: bold;"&gt; Stored Procedure&lt;/span&gt; podemos referenciar tabelas, &lt;span style="font-weight: bold;"&gt;Views&lt;/span&gt;, outras &lt;span style="font-weight: bold;"&gt;Stored Procedures&lt;/span&gt; e&lt;span style="font-weight: bold;"&gt; tabelas temporárias&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify; font-family: arial;"&gt;Bom, é isso meus amigos espero que isso ajude algo.. foi básica e bem filtrada a minha explicação.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-4625188906238215259?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/4625188906238215259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/4625188906238215259'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2011/03/procedimento-armazenado.html' title='Procedimento Armazenado'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-J85vMjgMMKs/TXePHK7X88I/AAAAAAAAAKg/m6uUoHfrf_g/s72-c/stored_procedures.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-7898957131299316361</id><published>2011-02-08T03:50:00.000-08:00</published><updated>2011-03-09T06:27:20.809-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Normalização de Dados'/><title type='text'>Normalização de Dados</title><content type='html'>&lt;a style="font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_W4mx9wreaj4/TVEv38zL5qI/AAAAAAAAAKY/ZzjlDntey9o/s1600/normalizacao-banco-de-dados.jpg"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 400px; height: 178px;" src="http://2.bp.blogspot.com/_W4mx9wreaj4/TVEv38zL5qI/AAAAAAAAAKY/ZzjlDntey9o/s400/normalizacao-banco-de-dados.jpg" alt="" id="BLOGGER_PHOTO_ID_5571286852294141602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p  style="text-align: justify;font-family:arial;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p  style="text-align: justify;font-family:arial;"&gt;Bom &lt;span style="font-weight: bold;"&gt;Normalização de Dados&lt;/span&gt; para quem nunca ouviu falar eu vou comentar um pouco mais sobre tudo isso aos novatos na área de Banco de Dados. Vou tentar ser o mais breve e objetivo possível. A &lt;b&gt;Normalização de Dados&lt;/b&gt; é uma série de passos que se segue no  projeto de um banco de dados que permite um armazenamento consistente e  um eficiente acesso aos dados em um banco de dados relacional. Esses  passos reduzem a redundância de dados e as chances dos dados se tornarem  inconsistentes.&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p  style="text-align: justify;font-family:arial;"&gt;No entanto, muitas &lt;span style="font-weight: bold;"&gt;SGBDs&lt;/span&gt; relacionais não têm separação suficiente entre o projeto lógico da base de dados e a implementação física do &lt;span style="font-weight: bold;"&gt;banco de dados&lt;/span&gt;,  e isso tem como conseqüência que as consultas feitas a um banco de  dados totalmente normalizado têm um mau desempenho. Nestes casos, usa-se  por vezes a &lt;span style="font-weight: bold;"&gt;desnormalização&lt;/span&gt; para melhorar o desempenho, com o custo de menores garantias de consistência.&lt;/p&gt;&lt;p  style="text-align: center;font-family:arial;"&gt;&lt;span style="font-weight: bold;"&gt;Definição&lt;/span&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p face="arial" style="text-align: justify;"&gt;Consiste em definir o formato lógico adequado para as estruturas de dados identificados no projeto lógico do sistema, com o objetivo de minimizar o espaço utilizado pelos dados e garantir a integridade e confiabilidade das informações.&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p face="arial" style="text-align: justify;"&gt;A normalização é feita, através da análise dos dados que compõem as estruturas utilizando o conceito chamado “&lt;strong&gt;Formas Normais&lt;/strong&gt; (FN)”. As FN são conjuntos de restrições nos quais os dados devem satisfazê-las. Exemplo, pode-se dizer que a estrutura está na &lt;em style="font-weight: bold;"&gt;primeira forma normal&lt;/em&gt; (1FN), se os dados que a compõem satisfizerem as restrições definidas para esta etapa.&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p face="arial" style="text-align: justify;"&gt;A normalização completa dos dados é feita, seguindo as restrições das &lt;strong&gt;quatro formas normais&lt;/strong&gt;&lt;br /&gt;existentes, sendo que a passagem de uma FN para outra é feita tendo como base o resultado obtido na etapa anterior, ou seja, na FN anterior.&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p face="arial" style="text-align: justify;"&gt;Para realizar a normalização dos dados, é primordial que seja definido um campo chave para a estrutura, campo este que permite irá identificar os demais campos da estrutura.&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p face="arial" style="text-align: justify;"&gt;&lt;strong&gt;Formas Normais&lt;/strong&gt; &lt;span style="font-weight: bold;"&gt;existentes:&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial; font-weight: bold;"&gt;1 – &lt;strong&gt;Primeira Forma Normal&lt;/strong&gt; (&lt;em&gt;1FN&lt;/em&gt;)&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p face="arial" style="text-align: justify;"&gt;Consiste em retirar da estrutura os elementos repetitivos, ou seja, aqueles dados que podem compor uma estrutura de vetor. Podemos afirmar que uma estrutura está normalizada na 1FN, se não possuir elementos repetitivos. Exemplo:&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;&lt;span style="font-weight: bold;"&gt;Estrutura original&lt;/span&gt;:&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;Arquivo de Notas Fiscais&lt;span style="font-weight: bold;"&gt; (&lt;/span&gt;&lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;Num. NF&lt;/span&gt;, Série, Data emissão, Cod. do Cliente, Nome do cliente, Endereço do cliente, CGC do cliente&lt;/strong&gt;, Relação das mercadorias vendidas (onde para cada mercadoria temos: &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;strong&gt;Código da Mercadoria, Descrição da Mercadoria, Quantidade vendida, Preço de venda e Total da venda desta mercadoria&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;) e &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;strong&gt;Total Geral da Nota&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;) &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;Analisando a estrutura acima, observamos que existem &lt;span style="text-decoration: underline;"&gt;várias mercadorias&lt;/span&gt; em uma única Nota Fiscal, sendo portanto &lt;span style="text-decoration: underline;"&gt;elementos repetitivos&lt;/span&gt; que deverão ser retirados.&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial; font-weight: bold;"&gt;Estrutura na primeira forma normal (1FN):&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p face="arial" style="text-align: justify;"&gt;Arquivo de Notas Fiscais (&lt;span style="text-decoration: underline;"&gt;Num. NF&lt;/span&gt;, Série, Data emissão, Código do Cliente, Nome Cliente, Endereço do cliente, CGC do cliente e Total Geral da Nota)&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p  style="text-align: justify; font-family: arial;font-family:arial;"&gt;Arquivo de Vendas (&lt;span style="text-decoration: underline;"&gt;Num. NF&lt;/span&gt;, &lt;span style="text-decoration: underline;"&gt;Código da Mercadoria&lt;/span&gt;, Descrição da Mercadoria, Quantidade vendida, Preço de venda e Total da venda desta mercadoria)&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p  style="text-align: justify; font-family: arial;font-family:arial;"&gt;Obs. Os campos sublinhados identificam as &lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;chaves&lt;/strong&gt;&lt;/span&gt; das estruturas.&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial; font-weight: bold;"&gt;Como resultado desta etapa ocorre um desdobramento dos dados em duas estruturas, a saber:&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;- Primeira estrutura (Arquivo de Notas Fiscais): Dados que compõem a estrutura original, excluindo os elementos repetitivos.&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;- Segundo estrutura (Arquivo de Vendas): Dados que compõem os elementos repetitivos da  estrutura original, tendo como chave o campo chave da estrutura original (Num. NF) e o campo chave da estrutura de repetição (Código da Mercadoria).&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;&lt;span style="font-weight: bold;"&gt;2 – &lt;/span&gt;&lt;strong&gt;Segunda Forma Normal&lt;/strong&gt;&lt;span style="font-weight: bold;"&gt; (&lt;/span&gt;&lt;em style="font-weight: bold;"&gt;2FN&lt;/em&gt;&lt;span style="font-weight: bold;"&gt;)&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;Consiste em retirar das estruturas que possuem chaves compostas (campo chave sendo formado por mais de um campo), os elementos que são funcionalmente dependente de parte da chave. Podemos afirmar que uma estrutura está na 2FN, se ela estiver na 1FN e não possuir campos que são funcionalmente dependente de parte da chave.&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: justify; font-family: arial; font-weight: bold;"&gt;Exemplo:&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial; font-weight: bold;"&gt;Estrutura na primeira forma normal (1FN):&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;Arquivo de Notas Fiscais (Num. NF, Série, Data emissão, Código do Cliente, Nome do cliente, Endereço do cliente, CGC do cliente e Total Geral da Nota)&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;Arquivo de Vendas (Num. NF, Código da Mercadoria, Descrição da Mercadoria, Quantidade vendida, Preço de venda e Total da venda desta mercadoria)&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial; font-weight: bold;"&gt;Estrutura na segunda forma normal (2FN):&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;Arquivo de Notas Fiscais (Num. NF, Série, Data emissão, Código do Cliente, Nome do cliente, Endereço do cliente, CGC do cliente e Total Geral da Nota)&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;Arquivo de Vendas (Num. NF, Código da Mercadoria, Quantidade vendida e Total da venda desta mercadoria)&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;Arquivo de Mercadorias (Código da Mercadoria, Descrição da Mercadoria, Preço de venda)&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;Como resultado desta etapa, houve um desdobramento do arquivo de Vendas (o arquivo de Notas Fiscais, não foi alterado, por não possuir chave composta) em duas estruturas a saber:&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;- Primeira estrutura (Arquivo de Vendas): Contém os elementos originais, sendo excluídos os dados que são dependentes apenas do campo Código da Mercadoria.&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;- Segundo estrutura (Arquivo de Mercadorias): Contém os elementos que são identificados apenas pelo Código da Mercadoria, ou seja, independentemente da Nota Fiscal, a descrição e o preço de venda serão constantes.&lt;/p&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;&lt;span style="font-weight: bold;"&gt;3 –&lt;/span&gt; &lt;strong&gt;Terceira Forma Normal&lt;/strong&gt; &lt;span style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;em style="font-weight: bold;"&gt;3FN&lt;/em&gt;&lt;span style="font-weight: bold;"&gt;)&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;Consiste em retirar das estruturas os campos que são funcionalmente dependentes de outros  campos que não são chaves. Podemos afirmar que uma estrutura está na 3FN, se ela estiver na 2FN e não possuir campos dependentes de outros campos não chaves.&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial; font-weight: bold;"&gt;Exemplo:&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial; font-weight: bold;"&gt;Estrutura na segunda forma normal (2FN):&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;Arquivo de Notas Fiscais (Num. NF, Série, Data emissão, Código do Cliente, Nome do cliente, Endereço do cliente, CGC do cliente e Total Geral da Nota)&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;Arquivo de Vendas (Num. NF, Código da Mercadoria, Quantidade vendida e Total da venda desta mercadoria)&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;Arquivo de Mercadorias (Código da Mercadoria, Descrição da Mercadoria, Preço de venda)&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial; font-weight: bold;"&gt;Estrutura na terceira forma normal (3FN):&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;Arquivo de Notas Fiscais (Num. NF, Série, Data emissão, Código do Cliente e Total Geral da  Nota)&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;Arquivo de Vendas (Num. NF, Código da Mercadoria, Quantidade vendida e Total da venda desta mercadoria)&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;Arquivo de Mercadorias (Código da Mercadoria, Descrição da Mercadoria, Preço de venda)  Arquivo de Clientes (Código do Cliente, Nome do cliente, Endereço do cliente e CGC do cliente)&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;Como resultado desta etapa, houve um desdobramento do arquivo de Notas Fiscais, por ser o único que possuía campos que não eram dependentes da chave principal (Num. NF), uma vez que independente da Nota Fiscal, o Nome, Endereço e CGC do cliente são inalterados. Este procedimento permite evitar inconsistência nos dados dos arquivos e economizar espaço por eliminar o armazenamento freqüente e repetidas vezes destes dados. A cada nota fiscal comprada pelo cliente, haverá o armazenamento destes dados e poderá ocorrer divergência entre eles.&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial; font-weight: bold;"&gt;As estruturas alteradas foram pelos motivos, a saber:&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;- Primeira estrutura (Arquivo de Notas Fiscais): Contém os elementos originais, sendo excluído os dados que são dependentes apenas do campo Código do Cliente (informações referentes ao cliente).&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;- Segundo estrutura (Arquivo de Clientes): Contém os elementos que são identificados apenas pelo Código do Cliente, ou seja, independente da Nota Fiscal, o Nome, Endereço e CGC dos clientes serão constantes.&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;Após a Normalização, as estruturas dos dados estão projetadas para eliminar as inconsistências e redundâncias dos dados, eliminando desta forma qualquer problema de atualização e operacionalização do sistema. A versão final dos dados poderá sofrer alguma alteração, para atender as necessidades específicas do sistema, a critério do analista de desenvolvimento durante o projeto físico do sistema.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-7898957131299316361?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/7898957131299316361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/7898957131299316361'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2011/02/normalizacao-de-dados.html' title='Normalização de Dados'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_W4mx9wreaj4/TVEv38zL5qI/AAAAAAAAAKY/ZzjlDntey9o/s72-c/normalizacao-banco-de-dados.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-5190707946677467216</id><published>2011-02-07T12:18:00.000-08:00</published><updated>2011-02-08T10:09:58.786-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OLAP'/><title type='text'>Tecnologia OLAP</title><content type='html'>&lt;div face="arial" style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_W4mx9wreaj4/TVBV7P5dQ7I/AAAAAAAAAKQ/6HNizHpAqv0/s1600/OLAP.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 380px; height: 385px;" src="http://4.bp.blogspot.com/_W4mx9wreaj4/TVBV7P5dQ7I/AAAAAAAAAKQ/6HNizHpAqv0/s400/OLAP.jpg" alt="" id="BLOGGER_PHOTO_ID_5571047215425471410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;p  style="text-align: justify;font-family:arial;"&gt;Olá pessoal hoje vou falar de uma tecnologia chamada e para vocês terem uma melhor entendimento sobre oque estarei falando eu vou citar algumas definições para melhor entendimento deste assunto chamado &lt;b&gt;OLAP&lt;/b&gt;,ou &lt;b&gt;On-line Analytical Processing&lt;/b&gt; é a capacidade para manipular e analisar um grande volume de dados sob múltiplas perspectivas.&lt;/p&gt;&lt;div face="arial" style="text-align: justify;"&gt; &lt;/div&gt;&lt;p  style="text-align: justify;font-family:arial;"&gt;As aplicações &lt;span style="font-weight: bold;"&gt;OLAP&lt;/span&gt; são usadas pelos gestores em qualquer nível da  organização para lhes permitir análises comparativas que facilitem a sua  tomada de decisões diárias.&lt;/p&gt;&lt;div face="arial" style="text-align: justify;"&gt; &lt;/div&gt;&lt;p  style="text-align: justify;font-family:arial;"&gt;Classifica-se em&lt;span style="font-weight: bold;"&gt; ROLAP, MOLAP, HOLAP, DOLAP E WOLAP&lt;/span&gt;.&lt;/p&gt;&lt;p style="font-family: arial; text-align: center;"&gt;&lt;b&gt;Benefícios&lt;/b&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; "&lt;span style="font-weight: bold;"&gt;Online analytical processing&lt;/span&gt;", ou &lt;span style="font-weight: bold;"&gt;OLAP&lt;/span&gt; fornece para organizações um  método de acessar, visualizar, e analisar dados corporativos com alta  flexibilidade e performance. A tecnologia  quanto maior e complexa a informação armazenada, mais difícil é para  retirá-la. A tecnologia  acaba com estas dificuldades levando a  informação mais próxima ao usuário que dela necessite. Portanto, o &lt;span style="font-weight: bold;"&gt;OLAP&lt;/span&gt; é  freqüentemente utilizado para integrar e disponibilizar informações  gerenciais contidas em bases de dados operacionais, sistemas &lt;span style="font-weight: bold;"&gt;ERP&lt;/span&gt; e &lt;span style="font-weight: bold;"&gt;CRM&lt;/span&gt;,  sistemas contábeis, e Data Warehouses. Estas características tornaram-no  uma tecnologia essencial em diversos tipos de aplicações de suporte à  decisão e sistemas para executivos.  &lt;/div&gt;&lt;div style="text-align: justify; font-family: arial;"&gt;Citar uma outra visão geral de &lt;span style="font-weight: bold;"&gt;OLAP&lt;/span&gt; é um&lt;span style="font-size:100%;"&gt;&lt;strong&gt; Business      Intelligence (BI) &lt;/strong&gt;&lt;/span&gt;como citei pouco atrás&lt;/div&gt;&lt;div face="arial" style="text-align: justify;"&gt;&lt;em&gt;             &lt;/em&gt;&lt;span style="color: rgb(0, 0, 0);font-size:100%;" &gt;             &lt;ul&gt;&lt;li&gt;                 &lt;p align="left"&gt;É um processo de coleta, transformação, análise e          distribuição de dados para melhorar a decisão de negócios;&lt;/p&gt;                 &lt;/li&gt;&lt;li&gt;                 &lt;p align="left"&gt;Sua infra-estrutura tecnológica é composta de &lt;em&gt;data          warehouses&lt;/em&gt; ou &lt;em&gt;data marts&lt;/em&gt;, ferramentas &lt;span style="font-weight: bold;"&gt;OLAP&lt;/span&gt;,&lt;span style="font-weight: bold;"&gt; EIS&lt;/span&gt;, &lt;em style="font-weight: bold;"&gt;data  mining&lt;/em&gt;, consultas         e relatórios e &lt;span style="font-weight: bold;"&gt;software&lt;/span&gt; de visualização  dos dados;&lt;/p&gt;                 &lt;/li&gt;&lt;li&gt;                 &lt;p align="left"&gt;Os bancos de dados são a infra-estrutura básica de          qualquer sistema de &lt;em style="font-weight: bold;"&gt;business intelligence&lt;/em&gt;. São neles que vão  estar armazenados os         dados que serão transformados em  informações competitivas.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:hyphenationzone&gt;21&lt;/w:HyphenationZone&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;PT-BR&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="--"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Tabela normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0cm 5.4pt 0cm 5.4pt;  mso-para-margin-top:0cm;  mso-para-margin-right:0cm;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0cm;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p style="text-align: justify;"&gt;&lt;span style="color:black;"&gt;Hoje &lt;b&gt;OLAP&lt;/b&gt; é um dos muitos componentes do &lt;em&gt;&lt;b&gt;&lt;span style=""&gt;Framework&lt;/span&gt;&lt;/b&gt;&lt;/em&gt; de &lt;em&gt;&lt;b&gt;&lt;span style=""&gt;Business&lt;/span&gt;&lt;/b&gt;&lt;/em&gt;&lt;b&gt; &lt;em&gt;&lt;span style=""&gt;Intelligence&lt;/span&gt;&lt;/em&gt;&lt;/b&gt;&lt;em&gt;&lt;span style=""&gt;,&lt;/span&gt;&lt;/em&gt; assim como outras tecnologias de &lt;b&gt;Suporte à Decisão&lt;/b&gt;, tais como: &lt;b&gt;visualização de dados&lt;/b&gt;, &lt;em&gt;&lt;b&gt;&lt;span style=""&gt;data mining&lt;/span&gt;&lt;/b&gt;&lt;/em&gt;,&lt;b&gt; &lt;em&gt;&lt;span style=""&gt;data warehousing&lt;/span&gt;&lt;/em&gt;&lt;/b&gt;. Alguns fornecedores têm feito o esforço de incluir na sua linha de produtos estas tecnologias de suporte à decisão, outros fornecedores optaram por um produto aberto formando parcerias com fornecedores de produtos complementares.&lt;/span&gt;&lt;/p&gt;  &lt;p style="text-align: justify;"&gt;&lt;span style="color:black;"&gt;Muitas outras tecnologias de suporte à decisão devem se integrar com a tecnologia &lt;b&gt;OLAP&lt;/b&gt;, incluindo pacotes de análise estatística, sistemas de informações geográficas (&lt;b&gt;GIS&lt;/b&gt;), e ferramentas de visualização de dados.&lt;/span&gt;&lt;/p&gt;  &lt;p style="text-align: justify;"&gt;&lt;span style="color:black;"&gt;A maioria de vendedores de servidores &lt;b&gt;OLAP&lt;/b&gt; oferecem &lt;em&gt;&lt;b&gt;&lt;span style=""&gt;add-ins&lt;/span&gt;&lt;/b&gt;&lt;/em&gt; para planilha eletrônica como opção de &lt;em&gt;&lt;b&gt;&lt;span style=""&gt;front-end&lt;/span&gt;&lt;/b&gt;&lt;/em&gt;, possibilitando, com isto, apresentar dados multidimensionais via planilha eletrônica. A principal vantagem desta abordagem é que ela combina a exibição flexível, a força em formatação e os cálculos para fins específicos das planilhas com o gerenciamento de dados, cálculos e performance da tecnologia de banco de dados multidimensionais. Os fornecedores de servidores &lt;b&gt;OLAP&lt;/b&gt; só precisam produzir diferentes versões de seus &lt;em&gt;&lt;b&gt;&lt;span style=""&gt;add-ins&lt;/span&gt;&lt;/b&gt;&lt;/em&gt; para cada nova versão da planilha. &lt;/span&gt;&lt;/p&gt;   &lt;/div&gt;&lt;p style="font-family: arial; text-align: center;"&gt;&lt;b&gt;Modelo de Dados&lt;/b&gt;&lt;/p&gt;&lt;div  style="text-align: justify; font-family: arial;font-family:arial;"&gt; Em um modelo de dados &lt;span style="font-weight: bold;"&gt;OLAP&lt;/span&gt;, a informação é conceitualmente organizada em cubos que armazenam valores quantitativos ou medidas. Dentro de cada dimensão de um modelo &lt;span style="font-weight: bold;"&gt;OLAP&lt;/span&gt;, os dados podem ser  organizados em uma hierarquia que define diferentes níveis de detalhe.  Por exemplo, dentro da dimensão tempo, você poderá ter uma hierarquia  representando os níveis anos, meses, e dias. Da mesma forma, a dimensão  região poderá ter os níveis país, região, estado e cidade. Assim, um  usuário visualizando dados em um modelo &lt;span style="font-weight: bold;"&gt;OLAP&lt;/span&gt; irá navegar para cima  (&lt;span style="font-weight: bold;"&gt;drill up&lt;/span&gt;) ou para baixo (&lt;span style="font-weight: bold;"&gt;drill down)&lt;/span&gt; entre níveis para visualizar  informação com maior ou menor nível de detalhe sem a menor dificuldade.  &lt;span style="font-weight: bold;"&gt;Algumas Aplicações&lt;/span&gt; &lt;/div&gt;&lt;p face="arial" style="text-align: justify;"&gt;A aplicação do &lt;span style="font-weight: bold;"&gt;OLAP &lt;/span&gt;é bastante diversificada e seu uso encontra-se em  diversas áreas de uma empresa. Alguns tipos de aplicação aonde a  tecnologia é empregada são:&lt;/p&gt;&lt;div style="font-family: arial; text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;- Finanças Análise de &lt;span style="font-weight: bold;"&gt;L&amp;amp;P&lt;/span&gt;, Relatórios &lt;span style="font-weight: bold;"&gt;L&amp;amp;P&lt;/span&gt;, Orçamento, Análise de Balanço, Fluxo de Caixa, Contas a Receber, …&lt;/p&gt;&lt;div style="font-family: arial; text-align: justify;"&gt; &lt;/div&gt;&lt;p face="arial" style="font-family: arial; text-align: justify;"&gt;- Vendas Análise de vendas (por região, produto, vendedor, etc.),  Previsões, Lucratividade de Cliente/Contrato, Análise de Canais de  Distribuição, ….&lt;/p&gt;&lt;div style="font-family: arial; text-align: justify;"&gt; &lt;/div&gt;&lt;p face="arial" style="text-align: justify;"&gt;- Marketing Análise de Preço/Volume, Lucratividade de Produto, Análise de Mercados, …&lt;/p&gt;&lt;div style="font-family: arial; text-align: justify;"&gt; &lt;/div&gt;&lt;p  style="text-align: justify; font-family: arial;font-family:arial;"&gt;- Recursos Humanos Análise de Benefícios, Projeção de Salários,  Análise de "&lt;span style="font-weight: bold;"&gt;Headcount&lt;/span&gt;", … Manufatura Gerência de Estoque, Cadeia de  Fornecimento, Planejamento de Demanda, Análise de custos de  matéria-prima.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-5190707946677467216?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/5190707946677467216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/5190707946677467216'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2011/02/tecnologia-olap.html' title='Tecnologia OLAP'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_W4mx9wreaj4/TVBV7P5dQ7I/AAAAAAAAAKQ/6HNizHpAqv0/s72-c/OLAP.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-4056805611319479411</id><published>2011-01-27T08:10:00.000-08:00</published><updated>2011-01-27T08:20:34.203-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Banco de Dados Distribuídos'/><title type='text'>Banco de Dados Distribuídos</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_W4mx9wreaj4/TUGakwwGjdI/AAAAAAAAAKE/IK1HFzWqBCM/s1600/computadoresjuntos.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 271px;" src="http://1.bp.blogspot.com/_W4mx9wreaj4/TUGakwwGjdI/AAAAAAAAAKE/IK1HFzWqBCM/s400/computadoresjuntos.jpg" alt="" id="BLOGGER_PHOTO_ID_5566900570759269842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;Bom vou hoje falar a você um pouco mais sobre &lt;b&gt;Banco de Dados Distribuído&lt;/b&gt; (&lt;b&gt;BDD&lt;/b&gt;) ele é uma coleção de vários &lt;span style="font-weight: bold;"&gt;Base de Dados&lt;/span&gt; logicamente inter-relacionados, distribuídos por uma rede de computadores. Existem dois tipos de banco de dados distribuídos, os &lt;i&gt;homogêneos&lt;/i&gt; e os &lt;i&gt;heterogêneos&lt;/i&gt;.  Os homogêneos são compostos pelos mesmos bancos de dados, já os  Heterogêneos são aqueles que são compostos por mais de um tipo de banco  de dados.&lt;/p&gt;&lt;div face="arial" style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;Melhor explicando num banco de dados distribuídos os arquivos podem estar replicados ou  fragmentados, esses dois tipos podem ser encontrados aos longos dos nós  do sistema de BDD's. Quando os dados se encontram replicados, existe  uma cópia de cada um dos dados em cada nó, tornando as bases iguais (ex:  tabela de produtos de uma grande loja). Já na fragmentação, os dados se  encontram divididos ao longo do sistema, ou seja a cada nó existe uma  base de dados diferente se olharmos de uma forma local, mas se  analisarmos de uma forma global os dados são vistos de uma forma única,  pois cada nó possui um catálogo que contém cada informação dos dados dos  bancos adjacentes.&lt;/p&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;Podendo a replicação dos dados pode se dar de maneira síncrona ou assíncrona.  No caso de replicação síncrona, cada transação é dada como concluída  quando todos os nós confirmam que a transação local foi bem sucedida. Na  replicação assíncrona, o nó principal executa a transação enviando  confirmação ao solicitante e então encaminha a transação aos demais nós.&lt;/p&gt;&lt;h2  style="font-weight: bold; text-align: justify;font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="mw-headline" id="Arquitetura_B.C3.A1sica"&gt;Arquitetura Básica&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;dl style="text-align: justify; font-family: arial;"&gt;&lt;dt&gt;Aplicações Locais&lt;/dt&gt;&lt;dd&gt;aplicações que não requerem dados de outros lugares.&lt;/dd&gt;&lt;dt&gt;Aplicações Globais&lt;/dt&gt;&lt;dd&gt;aplicações que requerem dados de outros lugares.&lt;/dd&gt;&lt;/dl&gt;&lt;div  style="text-align: justify; font-weight: bold;font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;Alguns cuidados com a Distribuição de Dados&lt;/span&gt;&lt;/div&gt;&lt;ul style="text-align: justify; font-family: arial;"&gt;&lt;li&gt;&lt;b&gt;A distribuição é transparente&lt;/b&gt; — usuários devem poder  interagir com o sistema como se ele fosse um único sistema lógico. Isso  se aplica ao desempenho do sistema, métodos de acesso, entre outras  coisas.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Transações são transparentes&lt;/b&gt; — cada transação deve manter a  integridade do banco de dados dentre os múltiplos bancos de dados.  Transações devem também ser divididas em subtransações, cada  subtransação afetando um sistema de banco de dados...&lt;/li&gt;&lt;/ul&gt;&lt;h2  style="font-weight: bold; text-align: justify;font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="mw-headline" id="Vantagens_de_bancos_de_dados_distribu.C3.ADdos"&gt;Vantagens de Bancos de Dados Distribuídos&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;ul style="text-align: justify; font-family: arial;"&gt;&lt;li&gt;&lt;b&gt;Reflete a estrutura organizacional&lt;/b&gt; — fragmentos do banco de dados estão localizados nos departamentos que se relacionam com os dados que estes persistem.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Autonomia Local&lt;/b&gt; — um departamento pode controlar seus dados (já que é o mais familiarizado com estes).&lt;/li&gt;&lt;li&gt;&lt;b&gt;Maior disponibilidade&lt;/b&gt; — uma falha em um banco de dados afetará somente um fragmento, ao invés do banco de dados inteiro.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Melhor performance&lt;/b&gt; — os dados estão localizados próximo do  local de maior demanda e os sistemas de banco de dados por si só são  paralelizáveis, permitindo carregar no banco de dados para o  balanceamento entre servidores (a elevada carga em um módulo do banco de  dados não irá afetar os outros módulos de banco de dados em um banco de  dados distribuído).&lt;/li&gt;&lt;li&gt;&lt;b&gt;Econômico&lt;/b&gt; — custa menos criar uma rede de pequenos computadores com o mesmo poder que um único computador maior.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Modularidade&lt;/b&gt; — sistemas podem ser modificados, adicionados ou  removidos do banco de dados distribuído sem afetar os outros módulos  (sistemas).&lt;/li&gt;&lt;/ul&gt;&lt;h2  style="font-weight: bold; text-align: justify;font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="mw-headline" id="Desvantagens_de_banco_de_dados_distribu.C3.ADdos"&gt;Desvantagens de banco de dados distribuídos&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div style="text-align: justify; font-family: arial;"&gt; &lt;/div&gt;&lt;ul style="text-align: justify; font-family: arial;"&gt;&lt;li&gt;&lt;b&gt;Complexidade&lt;/b&gt; — trabalho extra deve ser feito pelos &lt;span style="font-weight: bold;"&gt;DBAs&lt;/span&gt;  para garantir que a natureza da distribuição do sistema é transparente.  Trabalho extra deve ser feito para manter sistemas múltiplos  diferentes, ao invés de um único grande. Design de banco de dados extra  deve também ser feito para levar em conta a natureza desconectada do  banco de dados - por exemplo, joins tornam-se proibitivamente caros  quando são rodados entre múltiplas plataformas.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Implantação mais cara&lt;/b&gt; — o aumento da complexidade e uma infraestrura mais extensa significa custo extra de trabalho&lt;/li&gt;&lt;li&gt;&lt;b&gt;Segurança&lt;/b&gt; — fragmentos de banco de dados remotos devem ser  seguros e, como eles não são centralizados então os lugares remotos  também devem ser seguros. A infraestrutura também deve ser segura (por  exemplo, pela encriptação dos links de rede entre os lugares remotos).&lt;/li&gt;&lt;li&gt;&lt;b&gt;Difícil de manter a integridade&lt;/b&gt; — em sistemas distribuídos,  reforçar a integridade ao longo de uma rede pode exigir demais dos  recursos da rede para ser viável.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Inexperiência&lt;/b&gt; — pode ser difícil trabalhar com banco de dados  distribuídos e como é uma área relativamente nova ainda não há tantos  casos (ou experiências) práticos de seu uso disponíveis como exemplo.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Falta de padrões&lt;/b&gt; – ainda não há metodologias e ferramentas para ajudar usuários a converter um SGBD centralizado para um SGBD distribuído.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Design do banco de dados mais complexo&lt;/b&gt; – além das  dificuldades normais, o design de um banco de dados distribuídos tem que  considerar a fragmentação dos dados, alocação dos fragmentos em lugares  específicos e a replicação de dados.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="single_a_q" rel="question"&gt;&lt;span&gt;Espero que vocês tenham gostado e entendido um pouco mais sobre (BDD) ou melhor falando Bando de Dados Distribuídos.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-4056805611319479411?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/4056805611319479411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/4056805611319479411'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2011/01/banco-de-dados-distribuidos.html' title='Banco de Dados Distribuídos'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_W4mx9wreaj4/TUGakwwGjdI/AAAAAAAAAKE/IK1HFzWqBCM/s72-c/computadoresjuntos.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-7335442110693328929</id><published>2010-12-27T10:43:00.000-08:00</published><updated>2010-12-27T14:15:32.171-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Funções de Criptografia'/><title type='text'>Utilizando MD5 em Criptográfia</title><content type='html'>&lt;div align="justify"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_W4mx9wreaj4/TRkPY7kM-_I/AAAAAAAAAJ8/S9PUu9Y3CVU/s1600/md5555.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 278px; height: 51px;" src="http://3.bp.blogspot.com/_W4mx9wreaj4/TRkPY7kM-_I/AAAAAAAAAJ8/S9PUu9Y3CVU/s400/md5555.gif" border="0" alt="" id="BLOGGER_PHOTO_ID_5555488536319032306" /&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;Aqui desenvolvi com algumas pesquisas e montei umas &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Function&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; para &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PHP&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; para validação de logins ao &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Banco de Dados&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; utilizando &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;MD5&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, podem notar ele originalmente foi feito apenas para alimentar o md5 database md5.rednoize.com, porém você também pode utiliza-lo para efetuar pesquisas.&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Código &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PHP&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;:&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;&lt;span style="color:#000000;"&gt;&lt;code&gt;#!/usr/bin/php -q&lt;br /&gt;&lt;span style="color:#0000BB;"&gt;&amp;lt;?php&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#FF8000;"&gt;//Alterar a linha para #!/pathdophp/php -q -d short_open_tag=on&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$servidor &lt;/span&gt;&lt;span style="color:#007700;"&gt;= &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"md5.rednoize.com"&lt;/span&gt;&lt;span style="color:#007700;"&gt;;&lt;/span&gt;&lt;span style="color:#FF8000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#007700;"&gt;echo &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"\033[32m"&lt;/span&gt;&lt;span style="color:#007700;"&gt;;&lt;br /&gt;echo &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"------------------------------------\r\n"&lt;/span&gt;&lt;span style="color:#007700;"&gt;;&lt;br /&gt;echo &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"- md5hash - http://md5.rednoize.com -\r\n"&lt;/span&gt;&lt;span style="color:#007700;"&gt;;&lt;br /&gt;echo &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"- Criado por: Elder Stroparo     -\r\n"&lt;/span&gt;&lt;span style="color:#007700;"&gt;;&lt;br /&gt;echo &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"- E-Mail: seuemail[arroba]email.com     -\r\n"&lt;/span&gt;&lt;span style="color:#007700;"&gt;;&lt;br /&gt;echo &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"- Seg, 27 de Dezembro de 2010         -\r\n"&lt;/span&gt;&lt;span style="color:#007700;"&gt;;&lt;br /&gt;echo &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"------------------------------------\r\n"&lt;/span&gt;&lt;span style="color:#007700;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;settype&lt;/span&gt;&lt;span style="color:#007700;"&gt;(&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$template&lt;/span&gt;&lt;span style="color:#007700;"&gt;, &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"string"&lt;/span&gt;&lt;span style="color:#007700;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#FF8000;"&gt;//$template = "1234567890abcdefghijklmnopqrstuvwxyz"; //Letras e Numeros.&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$template &lt;/span&gt;&lt;span style="color:#007700;"&gt;= &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"123456789"&lt;/span&gt;&lt;span style="color:#007700;"&gt;; &lt;/span&gt;&lt;span style="color:#FF8000;"&gt;//Somente numeros.&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#007700;"&gt;function &lt;/span&gt;&lt;span style="color:#0000BB;"&gt;GetRandomString&lt;/span&gt;&lt;span style="color:#007700;"&gt;(&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$length&lt;/span&gt;&lt;span style="color:#007700;"&gt;) {&lt;br /&gt;       global &lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$template&lt;/span&gt;&lt;span style="color:#007700;"&gt;;&lt;br /&gt;       &lt;/span&gt;&lt;span style="color:#0000BB;"&gt;settype&lt;/span&gt;&lt;span style="color:#007700;"&gt;(&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$length&lt;/span&gt;&lt;span style="color:#007700;"&gt;, &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"integer"&lt;/span&gt;&lt;span style="color:#007700;"&gt;);&lt;br /&gt;       &lt;/span&gt;&lt;span style="color:#0000BB;"&gt;settype&lt;/span&gt;&lt;span style="color:#007700;"&gt;(&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$rndstring&lt;/span&gt;&lt;span style="color:#007700;"&gt;, &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"string"&lt;/span&gt;&lt;span style="color:#007700;"&gt;);&lt;br /&gt;       &lt;/span&gt;&lt;span style="color:#0000BB;"&gt;settype&lt;/span&gt;&lt;span style="color:#007700;"&gt;(&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$a&lt;/span&gt;&lt;span style="color:#007700;"&gt;, &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"integer"&lt;/span&gt;&lt;span style="color:#007700;"&gt;);&lt;br /&gt;       &lt;/span&gt;&lt;span style="color:#0000BB;"&gt;settype&lt;/span&gt;&lt;span style="color:#007700;"&gt;(&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$b&lt;/span&gt;&lt;span style="color:#007700;"&gt;, &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"integer"&lt;/span&gt;&lt;span style="color:#007700;"&gt;);&lt;br /&gt;       for (&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$a &lt;/span&gt;&lt;span style="color:#007700;"&gt;= &lt;/span&gt;&lt;span style="color:#0000BB;"&gt;0&lt;/span&gt;&lt;span style="color:#007700;"&gt;; &lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$a &lt;/span&gt;&lt;span style="color:#007700;"&gt;&amp;lt;= &lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$length&lt;/span&gt;&lt;span style="color:#007700;"&gt;; &lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$a&lt;/span&gt;&lt;span style="color:#007700;"&gt;++) {&lt;br /&gt;               &lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$b &lt;/span&gt;&lt;span style="color:#007700;"&gt;= &lt;/span&gt;&lt;span style="color:#0000BB;"&gt;rand&lt;/span&gt;&lt;span style="color:#007700;"&gt;(&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;0&lt;/span&gt;&lt;span style="color:#007700;"&gt;, &lt;/span&gt;&lt;span style="color:#0000BB;"&gt;strlen&lt;/span&gt;&lt;span style="color:#007700;"&gt;(&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$template&lt;/span&gt;&lt;span style="color:#007700;"&gt;) - &lt;/span&gt;&lt;span style="color:#0000BB;"&gt;1&lt;/span&gt;&lt;span style="color:#007700;"&gt;);&lt;br /&gt;               &lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$rndstring &lt;/span&gt;&lt;span style="color:#007700;"&gt;.= &lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$template&lt;/span&gt;&lt;span style="color:#007700;"&gt;[&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$b&lt;/span&gt;&lt;span style="color:#007700;"&gt;];&lt;br /&gt;       }&lt;br /&gt;       return &lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$rndstring&lt;/span&gt;&lt;span style="color:#007700;"&gt;;&lt;br /&gt;}&lt;br /&gt;if (&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$argc&lt;/span&gt;&lt;span style="color:#007700;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;3&lt;/span&gt;&lt;span style="color:#007700;"&gt;) {&lt;br /&gt;echo &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"\r\n"&lt;/span&gt;&lt;span style="color:#007700;"&gt;;&lt;br /&gt;echo &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"Para \"quebrar\" uma md5 use "&lt;/span&gt;&lt;span style="color:#007700;"&gt;.&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$argv&lt;/span&gt;&lt;span style="color:#007700;"&gt;[&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;0&lt;/span&gt;&lt;span style="color:#007700;"&gt;].&lt;/span&gt;&lt;span style="color:#DD0000;"&gt;" -m\r\n"&lt;/span&gt;&lt;span style="color:#007700;"&gt;;&lt;br /&gt;echo &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"Para adicionar uma nova senha ao banco de dados (md5.rednoise.com) utilize: "&lt;/span&gt;&lt;span style="color:#007700;"&gt;.&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$argv&lt;/span&gt;&lt;span style="color:#007700;"&gt;[&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;0&lt;/span&gt;&lt;span style="color:#007700;"&gt;].&lt;/span&gt;&lt;span style="color:#DD0000;"&gt;" -q\r\n"&lt;/span&gt;&lt;span style="color:#007700;"&gt;;&lt;br /&gt;echo &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"[#] Alimentando o banco de dados...\r\n"&lt;/span&gt;&lt;span style="color:#007700;"&gt;;&lt;br /&gt;echo &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"[!] Para finalizar pressione CTRL+C\r\n\r\n"&lt;/span&gt;&lt;span style="color:#007700;"&gt;;&lt;br /&gt;while (&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;1&lt;/span&gt;&lt;span style="color:#007700;"&gt;) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$rand &lt;/span&gt;&lt;span style="color:#007700;"&gt;= &lt;/span&gt;&lt;span style="color:#0000BB;"&gt;GetRandomString&lt;/span&gt;&lt;span style="color:#007700;"&gt;(&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;7&lt;/span&gt;&lt;span style="color:#007700;"&gt;);&lt;br /&gt;echo &lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$rand&lt;/span&gt;&lt;span style="color:#007700;"&gt;;&lt;br /&gt;echo &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;" - "&lt;/span&gt;&lt;span style="color:#007700;"&gt;;&lt;br /&gt;echo &lt;/span&gt;&lt;span style="color:#0000BB;"&gt;file_get_contents&lt;/span&gt;&lt;span style="color:#007700;"&gt;(&lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"http://&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$servidor&lt;/span&gt;&lt;span style="color:#DD0000;"&gt;/?p&amp;amp;q=&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$rand&lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"&lt;/span&gt;&lt;span style="color:#007700;"&gt;);&lt;br /&gt;echo &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"\r\n"&lt;/span&gt;&lt;span style="color:#007700;"&gt;;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;if (&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$argv&lt;/span&gt;&lt;span style="color:#007700;"&gt;[&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;1&lt;/span&gt;&lt;span style="color:#007700;"&gt;] == &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"-m"&lt;/span&gt;&lt;span style="color:#007700;"&gt;) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$q &lt;/span&gt;&lt;span style="color:#007700;"&gt;= &lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$argv&lt;/span&gt;&lt;span style="color:#007700;"&gt;[&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;2&lt;/span&gt;&lt;span style="color:#007700;"&gt;];&lt;br /&gt;echo &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"[!] Consultando servidor..."&lt;/span&gt;&lt;span style="color:#007700;"&gt;;&lt;br /&gt;echo &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"\r\n"&lt;/span&gt;&lt;span style="color:#007700;"&gt;;&lt;br /&gt;echo &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"[*] A senha é: "&lt;/span&gt;&lt;span style="color:#007700;"&gt;;&lt;br /&gt;echo &lt;/span&gt;&lt;span style="color:#0000BB;"&gt;file_get_contents&lt;/span&gt;&lt;span style="color:#007700;"&gt;(&lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"http://&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$servidor&lt;/span&gt;&lt;span style="color:#DD0000;"&gt;/?p&amp;amp;q=&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$q&lt;/span&gt;&lt;span style="color:#DD0000;"&gt;&amp;amp;b=MD5-Search"&lt;/span&gt;&lt;span style="color:#007700;"&gt;);&lt;br /&gt;echo &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"\r\n"&lt;/span&gt;&lt;span style="color:#007700;"&gt;;&lt;br /&gt;}&lt;br /&gt;if (&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$argv&lt;/span&gt;&lt;span style="color:#007700;"&gt;[&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;1&lt;/span&gt;&lt;span style="color:#007700;"&gt;] == &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"-q"&lt;/span&gt;&lt;span style="color:#007700;"&gt;) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$q &lt;/span&gt;&lt;span style="color:#007700;"&gt;= &lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$argv&lt;/span&gt;&lt;span style="color:#007700;"&gt;[&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;2&lt;/span&gt;&lt;span style="color:#007700;"&gt;];&lt;br /&gt;echo &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"[*] Senha &lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$q&lt;/span&gt;&lt;span style="color:#DD0000;"&gt; - md5: "&lt;/span&gt;&lt;span style="color:#007700;"&gt;;&lt;br /&gt;echo &lt;/span&gt;&lt;span style="color:#0000BB;"&gt;file_get_contents&lt;/span&gt;&lt;span style="color:#007700;"&gt;(&lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"http://&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$servidor&lt;/span&gt;&lt;span style="color:#DD0000;"&gt;/?p&amp;amp;q=&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;$q&lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"&lt;/span&gt;&lt;span style="color:#007700;"&gt;);&lt;br /&gt;echo &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"\r\n[!] Adicionada com sucesso!"&lt;/span&gt;&lt;span style="color:#007700;"&gt;;&lt;br /&gt;echo &lt;/span&gt;&lt;span style="color:#DD0000;"&gt;"\r\n"&lt;/span&gt;&lt;span style="color:#007700;"&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000BB;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom espero que tenham gostando deste exemplo em &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PHP, &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;ai está um modelo de como utilizar o &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;MD5&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, ele está alimentando o bando de dados e gerando uma sequencia diretamente do servidor &lt;a href="http://md5.rednoize.com/"&gt;http://md5.rednoize.com&lt;/a&gt; (&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;MD5 HASH&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;).&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-7335442110693328929?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/7335442110693328929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/7335442110693328929'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/12/utilizando-md5-em-criptografia.html' title='Utilizando MD5 em Criptográfia'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_W4mx9wreaj4/TRkPY7kM-_I/AAAAAAAAAJ8/S9PUu9Y3CVU/s72-c/md5555.gif' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-5266700901581804726</id><published>2010-12-27T06:58:00.000-08:00</published><updated>2010-12-27T10:43:35.091-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Funções de Criptografia'/><title type='text'>Funções de Criptográfia</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a style="font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_W4mx9wreaj4/TRizK0F0euI/AAAAAAAAAJc/im3i-SN6Q5s/s1600/cripto.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 68px;" src="http://2.bp.blogspot.com/_W4mx9wreaj4/TRizK0F0euI/AAAAAAAAAJc/im3i-SN6Q5s/s320/cripto.JPG" alt="" id="BLOGGER_PHOTO_ID_5555387138724625122" border="0" /&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;Bom vou falar hoje um pouco sobre o termo &lt;span style="font-weight: bold;"&gt;Funções de&lt;/span&gt; &lt;/span&gt;&lt;strong style="font-family: arial;"&gt;Criptográfia &lt;/strong&gt;&lt;span style="font-family:arial;"&gt;que é meios de proteger as informações armazenadas em um &lt;span style="font-weight: bold;"&gt;Banco de Dados&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;p style="text-align: justify;" face="arial"&gt;Os &lt;strong&gt;Banco de Dados&lt;/strong&gt; são muito importante eles  utilizam para armazenar diversos tipos de informações, desde dados sobre uma conta de e-mail até dados importantes da Receita Federal. Para tal existem diversos tipos, os quais variam em complexidade e sobre tudo em segurança.&lt;/p&gt;&lt;p style="text-align: justify;" face="arial"&gt;A &lt;strong&gt;Criptográfia &lt;/strong&gt;são técnicas pelas quais a informação pode ser transformada da sua forma original para outra ilegível, de forma que possa ser conhecida apenas por seu destinatário, oque atorna difícil de ser lida por alguém não autorizado. Assimsendo, só o receptor da mensagem pode ler a informação com facilidade.&lt;/p&gt;&lt;p style="text-align: justify;" face="arial"&gt;&lt;strong&gt;Visão Geral:&lt;/strong&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt; a criptografia tem quatro objetivos principais&lt;/p&gt;&lt;p style="text-align: justify;" face="arial"&gt;&lt;strong&gt;confidencialidade da mensagem&lt;/strong&gt;: 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.&lt;/p&gt;&lt;p  style="text-align: justify;font-family:arial;"&gt;&lt;strong&gt;integridade da mensagem&lt;/strong&gt;: o destinatário deverá ser capaz de determinar se a mensagem foi alterada durante a transmissão.&lt;/p&gt;&lt;p  style="text-align: justify;font-family:arial;"&gt;&lt;strong&gt;autenticação do remetente&lt;/strong&gt;: o destinatário deverá ser capaz de identificar o remetente e verificar que foi mesmo ele quem enviou a mensagem.&lt;/p&gt;&lt;p  style="text-align: justify;font-family:arial;"&gt;&lt;strong&gt;não-repúdio ou irretratabilidade do emissor&lt;/strong&gt;: não deverá ser possível ao emissor negar a autoria da mensagem.&lt;br /&gt;&lt;br /&gt;Nem todos os sistemas ou algoritmos criptográficos são utilizados para atingir todos os objetivos listados acima. Normalmente, existem algoritmos específicos para cada uma destas funções. Mesmo em sistemas criptográficos bem concebidos, bem implementados e usados adequadamente, alguns dos objetivos acima não são práticos (ou mesmo desejáveis) em algumas circunstâncias. Por exemplo, o remetente de uma mensagem pode querer permanecer anônimo, ou o sistema pode destinar-se a um ambiente com recursos computacionais limitados.&lt;br /&gt;&lt;/p&gt;&lt;p  style="text-align: justify;font-family:arial;"&gt;Comentando melhor sobre as funções de criptográfia Criptografia&lt;/p&gt;&lt;p style="font-family: arial; text-align: center;"&gt;&lt;strong&gt;Criptografia, MD2, MD4, SHA, Hash, MD5, MD6 (não utilizavél).&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p face="arial" style="text-align: justify;"&gt;&lt;strong&gt;Criptografia&lt;/strong&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;(&lt;strong&gt;Do Grego kryptós&lt;/strong&gt;, "&lt;strong&gt;escondido&lt;/strong&gt;", &lt;strong&gt;e gráphein&lt;/strong&gt;, "&lt;strong&gt;escrita&lt;/strong&gt;") é o estudo dos princípios e técnicas pelas quais a informação 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. É um ramo da Matemática, parte da Criptologia.&lt;/p&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;&lt;strong&gt;MD2&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;é um algoritmo de hash que cria um valor de hash de 128 bits funciona semelhante ao algoritmo de &lt;strong&gt;MD4 &lt;/strong&gt;e foram desenvolvidos pela &lt;strong&gt;RSA Data Security, Inc&lt;/strong&gt;.&lt;/p&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;&lt;strong&gt;MD4&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;é um algoritmo de hash que cria um valor de hash de 128 bits funciona semelhante ao algoritmo de &lt;strong&gt;MD2&lt;/strong&gt; e foram desenvolvidos pela &lt;strong&gt;RSA Data Security, Inc&lt;/strong&gt;.&lt;br /&gt;Ele foi desenvolvido em 1990, mas um ano após foi sucedido pelo &lt;strong&gt;MD5&lt;/strong&gt; por possuir falhas de segurança. A lógica desse algoritmo influenciou a criação de outros algoritmos como o &lt;strong&gt;MD5&lt;/strong&gt;, &lt;strong&gt;SHA-1 &lt;/strong&gt;e o &lt;strong&gt;RIPEMD&lt;/strong&gt;. O &lt;strong&gt;MD4&lt;/strong&gt; também é usado para computar o hash de senhas em sistemas &lt;strong&gt;Microsoft NT&lt;/strong&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;&lt;span style="font-weight: bold;"&gt;SHA&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p face="arial" style="text-align: justify;"&gt;(&lt;span style="font-weight: bold;"&gt;Secure Hash Algorithm&lt;/span&gt;) está relacionada com as funções criptográficas. A função mais usada nesta família, a SHA-1, é usada numa grande variedade de aplicações e protocolos de segurança, incluindo &lt;span style="font-weight: bold;"&gt;TLS, SSL, PGP, SSH, S/MIME e IPSec. SHA-1&lt;/span&gt; foi considerado o sucessor do &lt;span style="font-weight: bold;"&gt;MD5&lt;/span&gt;. Ambos têm vulnerabilidades comprovadas. Em algumas correntes, é sugerido que o&lt;span style="font-weight: bold;"&gt; SHA-256&lt;/span&gt; ou superior seja usado para tecnologia crítica. Os algoritmos &lt;span style="font-weight: bold;"&gt;SHA&lt;/span&gt; foram desenhados pela &lt;span style="font-weight: bold;"&gt;National Security Agency&lt;/span&gt; (&lt;span style="font-weight: bold;"&gt;NSA&lt;/span&gt;) e publicados como um padrão do governo &lt;span style="font-weight: bold;"&gt;Norte-Americano&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;O primeiro membro da família, publicado em 1993, foi oficialmente chamado &lt;span style="font-weight: bold;"&gt;SHA&lt;/span&gt;; no entanto, é frequentemente chamado &lt;span style="font-weight: bold;"&gt;SHA-0&lt;/span&gt; para evitar confusões com os seus sucessores. Dois anos mais tarde, &lt;span style="font-weight: bold;"&gt;SHA-1&lt;/span&gt;, o primeiro sucessor do &lt;span style="font-weight: bold;"&gt;SHA&lt;/span&gt;, foi publicado. Desde então quatro variantes foram lançadas com capacidades de saída aumentadas e um design ligeiramente diferente: &lt;span style="font-weight: bold;"&gt;SHA-224&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;SHA-256, SHA-384, e SHA-512&lt;/span&gt; — por vezes chamadas de &lt;span style="font-weight: bold;"&gt;SHA-2&lt;/span&gt;.&lt;/p&gt;&lt;p face="arial" style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;Hash&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;é uma sequência de bits geradas por um algoritmo de dispersão, em geral representada em base hexadecimal, que permite a visualização em letras e números (&lt;span style="font-weight: bold;"&gt;0 a 9 e A a F&lt;/span&gt;), representando &lt;span style="font-weight: bold;"&gt;1/2 byte&lt;/span&gt; cada. O conceito teórico diz que "&lt;span style="font-weight: bold;"&gt;hash é a transformação de uma grande quantidade de informações em uma pequena quantidade de informações&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;Essa sequência busca identificar um arquivo ou informação unicamente. Por exemplo, uma mensagem de correio eletrônico, uma senha, uma chave criptográfica ou mesmo um arquivo. É um método para transformar dados de tal forma que o resultado seja (quase) exclusivo. Além disso, funções usadas em criptografia garantem que não é possível a partir de um valor de &lt;span style="font-weight: bold;"&gt;hash&lt;/span&gt; retornar à informação original.&lt;br /&gt;&lt;br /&gt;Como a sequência do hash é limitada, muitas vezes não passando de &lt;span style="font-weight: bold;"&gt;512 bits&lt;/span&gt;, existem colisões (sequências iguais para dados diferentes). Quanto maior for a dificuldade de se criar colisões intencionais, melhor é o algoritmo.&lt;br /&gt;&lt;br /&gt;Uma função de &lt;span style="font-weight: bold;"&gt;hash&lt;/span&gt; recebe um valor de um determinado tipo e retorna um código para ele. Enquanto o ideal seria gerar identificadores únicos para os valores de entrada, isso normalmente não é possível: na maioria dos casos, o contra-domínio de nossa função é muito menor do que o seu domínio, ou seja, x (&lt;span style="font-weight: bold;"&gt;o tipo de entrada&lt;/span&gt;) pode assumir uma gama muito maior de valores do que  (&lt;span style="font-weight: bold;"&gt;o resultado da função de hash&lt;/span&gt;).&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;&lt;span style="font-weight: bold;"&gt;MD5&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: justify; font-family: arial;"&gt;(&lt;span style="font-weight: bold;"&gt;Message-Digest algorithm 5&lt;/span&gt;) é um algoritmo de hash de 128 bits unidirecional desenvolvido pela &lt;span style="font-weight: bold;"&gt;RSA Data Security, Inc&lt;/span&gt;., descrito na &lt;span style="font-weight: bold;"&gt;RFC 1321&lt;/span&gt;, e muito utilizado por softwares com protocolo ponto-a-ponto (&lt;span style="font-weight: bold;"&gt;P2P, ou Peer-to-Peer, em inglês&lt;/span&gt;) na verificação de integridade de arquivos e logins.&lt;br /&gt;&lt;br /&gt;Foi desenvolvido em 1991 por &lt;span style="font-weight: bold;"&gt;Ronald Rivest&lt;/span&gt; para suceder ao &lt;span style="font-weight: bold;"&gt;MD4&lt;/span&gt; que tinha alguns problemas de segurança. Por ser um algoritmo unidirecional, uma hash &lt;span style="font-weight: bold;"&gt;md5&lt;/span&gt; não pode ser transformada novamente no texto que lhe deu origem. O método de verificação é, então, feito pela comparação das duas hash (uma da mensagem original confiável e outra da mensagem recebida). O &lt;span style="font-weight: bold;"&gt;MD5 &lt;/span&gt;também é usado para verificar a integridade de um arquivo através, por exemplo, do programa md5sum, que cria a hash de um arquivo. Isto pode-se tornar muito útil para downloads de arquivos grandes, para programas &lt;span style="font-weight: bold;"&gt;P2P&lt;/span&gt; que constroem o arquivo através de pedaços e estão sujeitos a corrupção dos mesmos. Como autenticação de login é utilizada em vários sistemas operacionais unix e em muitos sites com autentificação.&lt;br /&gt;&lt;/p&gt;&lt;p face="arial" style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;MD6&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p face="arial" style="text-align: justify;"&gt;sobre a &lt;span style="font-weight: bold;"&gt;Criptografia MD6 MD6 &lt;/span&gt;(&lt;span style="font-weight: bold;"&gt;Message-Digest algorithm 6&lt;/span&gt;) é uma função hash criptográfico. Ele usa uma árvore de &lt;span style="font-weight: bold;"&gt;Merkle&lt;/span&gt;-como a estrutura, e em 2008, &lt;span style="font-weight: bold;"&gt;Ronald Rivest&lt;/span&gt; e outros, publicaram uma nova versão do algoritmo o &lt;span style="font-weight: bold;"&gt;MD6&lt;/span&gt; com hash de tamanhos &lt;span style="font-weight: bold;"&gt;224, 256, 384 ou 512 bytes&lt;/span&gt;. O algoritmo &lt;span style="font-weight: bold;"&gt;MD6&lt;/span&gt; iria participar do concurso para ser o novo algoritmo &lt;span style="font-weight: bold;"&gt;SHA-3&lt;/span&gt;, porém após removeu-o do concurso por considera-lo muito lento, anuncionado que os computadores de hoje são muito lentos para usar o &lt;span style="font-weight: bold;"&gt;MD6&lt;/span&gt;.&lt;/p&gt;&lt;p  style="text-align: center;font-family:arial;"&gt;&lt;span style="font-weight: bold;"&gt;Em breve estarei postando as funções de criptográfia de acordo com cada algoritimo&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-5266700901581804726?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/5266700901581804726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/5266700901581804726'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/12/funcoes-de-criptografia.html' title='Funções de Criptográfia'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_W4mx9wreaj4/TRizK0F0euI/AAAAAAAAAJc/im3i-SN6Q5s/s72-c/cripto.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-8706719340071779559</id><published>2010-12-20T05:49:00.000-08:00</published><updated>2010-12-20T07:34:58.675-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Procedures e Funções em PL/SQL'/><title type='text'>Procedures e Funções em PL/SQL</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_W4mx9wreaj4/TQ9itvIau6I/AAAAAAAAAJQ/dIq4Ns6e3Kw/s1600/pl-sql.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 148px;" src="http://2.bp.blogspot.com/_W4mx9wreaj4/TQ9itvIau6I/AAAAAAAAAJQ/dIq4Ns6e3Kw/s320/pl-sql.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5552765403456519074" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;Bom pessoal a pedido de algumas pessoas está ai o tutorial sobre &lt;strong&gt;PL/SQL&lt;/strong&gt; de uma maneira bem simples, utilizando a linguagem PL/SQL para fazer &lt;strong&gt;Procedures&lt;/strong&gt;, e &lt;strong&gt;Functions.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Bom então vamos a luta.&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;strong&gt;Procedures e Funções&lt;/strong&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;Uma função nada mais é do que pedaços de código, definidos pelo utillizador ou pré-definidos pela linguagem, utilizados para manipular dados. Aceitam um ou mais argumentos, devolvendo um valor. O argumento é uma constante, variável ou o nome de uma coluna. O valor devolvido serve para classificar a função: será numérica se o valor devolvido é numérico, char se devolve um char. As funções são utilizadas para manipular dados, tornando mais potentes as consultas. Dividem-se em três grandes grupos: manipulação de linhas, manipulação de grupos de linhas e funções analíticas. Dentro do primeiro grupo há funções para manipular caracteres, números, datas e funções que permitem converter dados de um tipo para outro. As funções de grupo permitem obter um valor que depende do grupo de linhas, por exemplo uma média, variância ou um máximo. As funções analíticas misturam os dois tipos anteriores: devolvem um valor por cada linha, mas esse valor depende do grupo.&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;E uma procedure nada mais é do um bloco &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PL/SQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; nomeado. A grande vantagem sobre um bloco &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PL/SQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; anônimo é que pode ser compilado e armazenado no banco de dados como um objeto de schema. Graças a essa característica as procedures são de fácil manutenção, o código é reutilizável e permitem que trabalhemos com módulos de programa.&lt;br /&gt;&lt;br /&gt;Uma procedure é, então, um bloco &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PL/SQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; nomeado que pode aceitar argumentos (&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;também chamado de parâmetros&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;) e pode ser chamada por um programa, uma sessão &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;SQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; ou uma &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;em&gt;trigger&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;.&lt;br /&gt;&lt;br /&gt;Durante a instalação do banco de dados Oracle um script é executado automaticamente e cria toda a estrutura necessária para que as procedures sejam executadas. Eventualmente esse procedimento automático pode falhar devido a alguma falha física no disco rígido, nesse caso o usuário &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;SYS&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; pode recriar a estrutura através do script &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;SQL DBMSSTDX.SQL.&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;Para criar uma procedure o usuário precisa ter o privilégio de sistema &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;CREATE PROCEDURE&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, para criar a procedure em outros schemas o usuário deve ter o privilégio de &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;CREATE ANY&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PROCEDURE&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;. Este é um ponto muito interessante sobre as procedures, os privilégios para criação de procedures têm que ser concedidos explicitamente, ou seja, não pode ser adquirido através de roles.&lt;br /&gt;&lt;br /&gt;Para executar uma procedure externa é necessário ter o privilégio de &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;EXECUTE&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;. Caso queira alterar a procedure de outro schema deve ter o privilégio de sistema &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;ALTER ANY PROCEDURE&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;.&lt;br /&gt;&lt;br /&gt;A sintaxe básica de uma procedure é:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;&lt;code&gt;CREATE [OR REPLACE] PROCEDURE [schema.]nome_da_procedure&lt;br /&gt;[(parâmetro1 [modo1] tipodedado1,&lt;br /&gt;parâmetro2 [modo2] tipodedado2,&lt;br /&gt;...)]&lt;br /&gt;IS|AS&lt;br /&gt;Bloco PL/SQL&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Onde:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;REPLACE &lt;/strong&gt;- indica que caso a procedure exista ela será eliminada e substituída pela nova versão criada pelo comando;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;BLOCO PL/SQL&lt;/strong&gt; - inicia com uma cláusula &lt;strong&gt;BEGIN&lt;/strong&gt; e termina com &lt;strong&gt;END &lt;/strong&gt;ou &lt;strong&gt;END&lt;/strong&gt; nome_da_procedure;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;NOME_DA_PROCEDURE&lt;/strong&gt; - indica o nome da procedure;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;PARÂMETRO&lt;/strong&gt; - indica o nome da variável &lt;strong&gt;PL/SQL&lt;/strong&gt; que é passada na chamada da procedure ou o nome da variável que retornará os valores da procedure ou ambos. O que irá conter em parâmetro depende de &lt;strong&gt;MODO&lt;/strong&gt;;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;MODO&lt;/strong&gt; - Indica que o parâmetro é de entrada (&lt;strong&gt;IN&lt;/strong&gt;), saída (&lt;strong&gt;OUT&lt;/strong&gt;) ou ambos (&lt;strong&gt;IN OUT&lt;/strong&gt;). É importante notar que&lt;strong&gt; IN&lt;/strong&gt; é o modo default, ou seja, se não dissermos nada o modo do nosso parâmetro será, automaticamente, &lt;strong&gt;IN&lt;/strong&gt;;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;TIPODEDADO&lt;/strong&gt; - indica o tipo de dado do parâmetro. Pode ser qualquer tipo de dado do SQL ou do &lt;strong&gt;PL/SQL&lt;/strong&gt;. Pode usar referencias como &lt;strong&gt;%TYPE&lt;/strong&gt;, &lt;strong&gt;%ROWTYPE&lt;/strong&gt; ou qualquer tipo de dado escalar ou composto. Atenção: não é possível fazer qualquer restrição ao tamanho do tipo de dado neste ponto.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;IS|AS&lt;/strong&gt; - a sintaxe do comando aceita tanto&lt;strong&gt; IS&lt;/strong&gt; como &lt;strong&gt;AS&lt;/strong&gt;. Por convenção usamos &lt;strong&gt;IS&lt;/strong&gt; na criação de procedures e &lt;strong&gt;AS&lt;/strong&gt; quando estivermos criando pacotes.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;BLOCO PL/SQL&lt;/strong&gt; - indica as ações que serão executadas por aquela procedure.&lt;br /&gt;&lt;br /&gt;Vamos ver um exemplo de procedure para ajudar nosso entendimento:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;CREATE OR REPLACE PROCEDURE aumenta_sal (p_empno IN emp.empno%TYPE) IS&lt;br /&gt;BEGIN&lt;br /&gt;UPDATE&lt;br /&gt;scott.emp&lt;br /&gt;SET&lt;br /&gt;sal = sal * 1.10&lt;br /&gt;WHERE&lt;br /&gt;empno = p_empno;&lt;br /&gt;END aumenta_sal;&lt;br /&gt;/&lt;/code&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;Neste exemplo estamos criando uma procedure para aumentar o salário de um funcionário em &lt;strong&gt;10%&lt;/strong&gt;. A primeira linha define o &lt;strong&gt;NOME DA PROCEDURE&lt;/strong&gt;, que vai ser &lt;strong&gt;AUMENTA_SAL&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;A linha dois define o parâmetro &lt;strong&gt;P_EMPNO&lt;/strong&gt; no modo &lt;strong&gt;IN&lt;/strong&gt;. Ou seja, vai ser um dado informado na chamada da procedure. Em seguida determinamos que ele será do mesmo tipo e tamanho que a coluna &lt;strong&gt;EMPNO&lt;/strong&gt; da tabela &lt;strong&gt;EMP&lt;/strong&gt;. Isso é feito através da referencia &lt;strong&gt;EMP.EMPNO%TYPE&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Podemos verificar o estado de nossa procedure através de uma simples consulta:&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;SELECT object_name, status&lt;br /&gt;FROM user_objects&lt;br /&gt;WHERE object_name LIKE '%AUMENTA%';/&lt;/code&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Agora podemos verificar o funcionamento de nossa procedure:&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;strong&gt;&lt;code&gt;&lt;/strong&gt;SELECT empno, sal&lt;br /&gt;FROM scott.emp;&lt;/code&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;&lt;code&gt;EMPNO      SAL&lt;br /&gt;---------&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;7839       5000&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;7698       2850&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;7782       2450&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;CALL AUMENTA_SAL(7839);&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Ou&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;EXECUTE AUMENTA_SAL(7839);&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;SELECT empno, sal  FROM scott.emp;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;     EMPNO        SAL&lt;br /&gt;--------&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;      7839       5500&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;      7698       2850&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;      7782       2450&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Podemos notar que o salário do funcionário 7839 aumentou em 10%.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Funções&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;p align="left"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Sintaxe Básica:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;CREATE [OR REPLACE] FUNCTION nome_da_função[( parameter1 [ mode1] datatype1,parameter2 [ mode2] datatype2,. . .)]RETURN tipo_de_dadoIS|ASBloco PL/SQL;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Ao contrário das procedures as funções tem que retornar ao menos um valor.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;CREATE OR REPLACE FUNCTION pega_sal&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;       (p_id IN emp.empno%TYPE)&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;       RETURN NUMBER&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;     IS&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;       v_sal emp.sal%TYPE :=0;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;     BEGIN&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;       SELECT sal&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;         INTO v_sal&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;         FROM scott.emp&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;        WHERE empno = p_id;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;     RETURN v_sal;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;END pega_sal;/&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Executando&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;VARIABLE g_sal NUMBER&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;EXECUTE :g_sal := pega_sal(7839)&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;PRINT g_sal&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Função para calcular CPMF&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;CREATE OR REPLACE FUNCTION cpmf(p_value IN NUMBER)&lt;br /&gt;  RETURN NUMBER IS&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;BEGIN  &lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;RETURN (p_value * 0.038);&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;END&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt; cpmf;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;/&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;SELECT empno, ename, sal, cpmf(sal)&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;FROM scott&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;.emp&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;WHERE deptno = 10;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-8706719340071779559?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/8706719340071779559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/8706719340071779559'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/12/procedures-e-funcoes-em-plsql.html' title='Procedures e Funções em PL/SQL'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_W4mx9wreaj4/TQ9itvIau6I/AAAAAAAAAJQ/dIq4Ns6e3Kw/s72-c/pl-sql.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-1277654851187928528</id><published>2010-07-09T17:58:00.000-07:00</published><updated>2010-07-09T18:22:27.761-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mapeamento Objeto Relacional'/><title type='text'>Mapeamento Objeto Relacional</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_W4mx9wreaj4/TDfK9oV7k5I/AAAAAAAAAIE/6qzKGWvvVZM/s1600/mapeamento+ob+relacional.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 190px;" src="http://3.bp.blogspot.com/_W4mx9wreaj4/TDfK9oV7k5I/AAAAAAAAAIE/6qzKGWvvVZM/s320/mapeamento+ob+relacional.png" alt="" id="BLOGGER_PHOTO_ID_5492081430751843218" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p  style="text-align: justify;font-family:arial;"&gt;&lt;span style="" onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;Bom vou falar hoje sobre&lt;b&gt; Mapeamento Objeto Relacional (ORM, O / RM,&lt;/b&gt; e &lt;b&gt;O / R mapeamento)&lt;/b&gt; em  software de computador é uma programação  técnica para conversão de dados incompatíveis entre sistemas do tipo  em banco de dados relacional e orientada objetos  linguagens de programação.&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;This  creates, in effect, a "virtual object database " that can be used from within the programming language.&lt;/span&gt;  Isso cria, de fato, um "virtual objeto de banco de dados"que podem ser usados dentro da linguagem de  programação.&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;b style="font-family: arial;"&gt;Mapeamento Objeto Relacional&lt;/b&gt;&lt;span style="font-family:arial;"&gt; é uma técnica de  desenvolvimento utilizada para reduzir a impedância  da programação orientada aos objetos utilizando banco de dados relacionais. As tabelas do banco de dados são representadas  através de classes e os registros de cada tabela  são representados como instâncias das classes correspondentes.&lt;/span&gt; &lt;/div&gt;&lt;p  style="text-align: justify;font-family:arial;"&gt;Bom esta técnica, o programador não precisa se preocupar com os  comandos em linguagem &lt;span style="font-weight: bold;"&gt;SQL&lt;/span&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;; ele irá usar uma interface de programação simples que faz todo o trabalho de persistência.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p  style="text-align: justify;font-family:arial;"&gt;Não é necessária uma correspondência direta entre as tabelas de dados  e as classes do programa. A relação entre as tabelas onde originam os  dados e o objecto que os disponibiliza é configurada pelo programador,  isolando o código do programa das alterações à organização dos dados nas  tabelas do &lt;span style="font-weight: bold;"&gt;Banco de Dados&lt;/span&gt;.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p  style="text-align: justify;font-family:arial;"&gt;A forma como este mapeamento é configurado depende da ferramenta que  estamos a usar. Como exemplo, o programador que use &lt;span style="font-weight: bold;"&gt;Hibernate&lt;/span&gt;  na linguagem &lt;span style="font-weight: bold;"&gt;Java&lt;/span&gt; &lt;span style="text-decoration: underline;"&gt;&lt;/span&gt; pode  usar ficheiros &lt;span style="font-weight: bold;"&gt;XML&lt;/span&gt;  ou o sistema de anotações  que a linguagem providencia.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-1277654851187928528?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/1277654851187928528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/1277654851187928528'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/07/mapeamento-objecto-relacional.html' title='Mapeamento Objeto Relacional'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_W4mx9wreaj4/TDfK9oV7k5I/AAAAAAAAAIE/6qzKGWvvVZM/s72-c/mapeamento+ob+relacional.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-1843693495936373420</id><published>2010-05-14T10:42:00.000-07:00</published><updated>2010-12-19T17:11:22.187-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cliente-servidor'/><title type='text'>Cliente-Servidor Vantagens e Desvantagens</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom vo citar algumas &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Vantagens&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; e &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Desvantagens&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; do &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Cliente-Servidor&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; para vocês entenderem melhor sobre este assunto o que é bom e não é bom para você que não está apto em &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Banco de Dados &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;que isto é fundamental &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Cliente-Servidor&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Vantagens&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Na maioria dos casos, a arquitetura cliente-servidor permite que os papéis e responsabilidades de um sistema de computação para ser distribuído entre vários computadores independentes que são conhecidos por si só através de uma rede. Isso cria uma vantagem adicional para essa arquitetura: maior facilidade de manutenção. Por exemplo, é possível substituir, reparar, atualizar ou mesmo realocar um servidor de seus clientes, enquanto continuam a ser a consciência e não afetado por essa mudança;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Todos os dados são armazenados nos servidores, que geralmente possuem controles de segurança muito maior do que a maioria dos clientes. Servidores podem controlar melhor o acesso e recursos, para garantir que apenas os clientes com as permissões adequadas podem acessar e alterar dados;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Desde o armazenamento de dados é centralizada, as atualizações dos dados são muito mais fáceis de administrar, em comparação com o paradigma P2P, onde uma arquitetura P2P, atualizações de dados podem precisar ser distribuída e aplicada a cada ponto na rede, que é o time-consuming é passível de erro, como pode haver milhares ou mesmo milhões de pares;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Muitas tecnologias avançadas de cliente-servidor já estão disponíveis, que foram projetadas para garantir a segurança, facilidade de interface do usuário e facilidade de uso;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Funciona com vários clientes diferentes de capacidades diferentes.&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Desvantagens&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Redes de tráfego de bloqueio é um dos problemas relacionados com o modelo cliente-servidor. Como o número de solicitações simultâneas de cliente para um determinado servidor, o servidor pode ficar sobrecarregado;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;O paradigma cliente-servidor não tem a robustez de uma rede P2P. Sob cliente-servidor, se um servidor crítico falhar, os pedidos dos clientes não podem ser cumpridos. Em redes P2P, os recursos são normalmente distribuídos entre vários nós. Mesmo se um ou mais nós partem e abandonam baixar um arquivo, por exemplo, os nós restantes ainda deve ter os dados necessários para completar o download.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-1843693495936373420?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/1843693495936373420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/1843693495936373420'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/05/cliente-servidor-vantagens-e.html' title='Cliente-Servidor Vantagens e Desvantagens'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-2913454609561124504</id><published>2010-05-14T09:38:00.000-07:00</published><updated>2010-12-19T17:09:16.151-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cliente-servidor'/><title type='text'>Características do Cliente e do Servidor</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom hoje ainda vou comentar sobre &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Cliente-Servidor&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; ainda.. vamos lá.&lt;/span&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Características do Cliente&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family:arial;"&gt;Sempre inicia pedidos de servidores;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Espera por respostas;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Recebe respostas;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Normalmente, se conecta a um pequeno número de servidores de uma só vez;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Normalmente, interage diretamente com os usuários finais através de qualquer interface com o usuário , como interface gráfica do usuário.&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Características do Servidor&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family:arial;"&gt;Sempre esperar por um pedido de um dos clientes;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Serve os clientes pedidos, em seguida, responde com os dados solicitados aos clientes;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Um servidor pode se comunicar com outros servidores, a fim de atender uma solicitação do cliente.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom são essas ai as características do &lt;strong&gt;Cliente-Servidor &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;espero que seja útil a vocês. Para mim é sim.&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-2913454609561124504?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/2913454609561124504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/2913454609561124504'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/05/caracteristicas-do-cliente-e-do.html' title='Características do Cliente e do Servidor'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-120235523326667881</id><published>2010-05-13T11:23:00.000-07:00</published><updated>2010-05-13T11:37:24.469-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cliente-servidor'/><title type='text'>Cliente-servidor</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_W4mx9wreaj4/S-xG1G5dH6I/AAAAAAAAAHc/ZXWDWoJva2Y/s1600/cliente+servidor.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_W4mx9wreaj4/S-xG1G5dH6I/AAAAAAAAAHc/ZXWDWoJva2Y/s320/cliente+servidor.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5470825525546917794" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Olá pessoal bom faz um tempo que eu não faço nenhum posts e hoje estou devolta vou fazer alguns posts sobre &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Cliente-servidor.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt; Cliente-servidor&lt;/strong&gt; é um modelo computacional que separa &lt;strong&gt;clientes&lt;/strong&gt; e &lt;strong&gt;servidores&lt;/strong&gt;, sendo interligados entre si geralmente utilizando-se uma rede de computadores. Cada &lt;strong&gt;cliente&lt;/strong&gt; pode enviar requisições de dado para algum dos &lt;strong&gt;servidores&lt;/strong&gt; conectados e esperar pela resposta. Por sua vez, algum dos &lt;strong&gt;servidores&lt;/strong&gt; disponíveis pode aceitar tais requisições, processá-las e retornar o resultado para o &lt;strong&gt;cliente&lt;/strong&gt;. Apesar do conceito ser aplicado em diversos usos e aplicações, a arquitetura é praticamente a mesma.&lt;br /&gt;&lt;br /&gt;Muitas vezes os &lt;strong&gt;clientes&lt;/strong&gt; e &lt;strong&gt;servidores&lt;/strong&gt; se comunicam através de uma rede de computador com &lt;strong&gt;&lt;em&gt;hardwares&lt;/em&gt;&lt;/strong&gt; separados, mas o &lt;strong&gt;cliente&lt;/strong&gt; e &lt;strong&gt;servidor&lt;/strong&gt; podem residir no mesmo sistema. A máquina servidor é um host que está executando um ou mais programas de servidor que partilham os seus recursos com os &lt;strong&gt;clientes.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;E lembrando também um &lt;strong&gt;cliente&lt;/strong&gt; não compartilha de seus recursos, mas solicita o conteúdo de um &lt;strong&gt;servidor&lt;/strong&gt; ou função de serviço. Os &lt;strong&gt;clientes&lt;/strong&gt;, portanto, iniciam sessões de comunicação com os &lt;strong&gt;servidores &lt;/strong&gt;que esperam as solicitações de entrada.&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Uma breve descrição sobre este assunto é a &lt;/span&gt;&lt;span style="font-family:arial;"&gt;característica de &lt;strong&gt;cliente-servidor&lt;/strong&gt;, descreve a relação de programas em um aplicativo. O componente de servidor fornece uma função ou serviço a um ou muitos clientes, que iniciam os pedidos de serviços.&lt;br /&gt;&lt;br /&gt;Obtendo a funções como a troca de e-mail, acesso à internet e acessar banco de dados, são construídos com base no modelo cliente-servidor. &lt;strong&gt;Por exemplo&lt;/strong&gt;, um navegador da web é um programa cliente em execução no computador de um usuário que pode acessar informações armazenadas em um servidor web na Internet. Usuários de serviços bancários acessando do seu computador usam um cliente navegador da Web para enviar uma solicitação para um servidor web em um banco. Esse programa pode, por sua vez encaminhar o pedido para o seu próprio programa de banco de dados do cliente que envia uma solicitação para um servidor de banco de dados em outro computador do banco para recuperar as informações da conta. O saldo é devolvido ao cliente de banco de dados do banco, que por sua vez, serve-lhe de volta ao cliente navegador exibindo os resultados para o usuário.&lt;br /&gt;&lt;br /&gt;O modelo &lt;strong&gt;cliente-servido&lt;/strong&gt;&lt;strong&gt;r&lt;/strong&gt;, se tornou uma das idéias centrais de computação de rede. Muitos aplicativos de negócios a serem escrito hoje utilizam o modelo cliente-servidor. Em marketing, o termo tem sido utilizado para distinguir a computação distribuída por pequenas dispersas computadores da "&lt;strong&gt;computação&lt;/strong&gt;" monolítica centralizada de computadores mainframe.&lt;br /&gt;&lt;br /&gt;Cada instância de &lt;em&gt;&lt;strong&gt;software&lt;/strong&gt;&lt;/em&gt; do cliente pode enviar requisições de dados a um ou mais servidores ligados. Por sua vez, os servidores podem aceitar esses pedidos, processá-los e retornar as informações solicitadas para o &lt;strong&gt;cliente&lt;/strong&gt;. Embora este conceito possa ser aplicado para uma variedade de razões para diversos tipos de aplicações, a arquitetura permanece fundamentalmente a mesma.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom é isso ai amigos espero que o básico vocês peguem porque é muito útil saber destes pequenos detalhes de &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;cliente-servido&lt;/strong&gt;&lt;strong&gt;r&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-120235523326667881?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/120235523326667881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/120235523326667881'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/05/cliente-servidor.html' title='Cliente-servidor'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_W4mx9wreaj4/S-xG1G5dH6I/AAAAAAAAAHc/ZXWDWoJva2Y/s72-c/cliente+servidor.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-2464386949471814231</id><published>2010-02-12T08:46:00.000-08:00</published><updated>2010-02-12T13:55:39.889-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Triggers'/><title type='text'>Criando uma Trigger</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom vo fazer um exemplo de como criar um gatilho em uma tabela, o usuário deve possuir o privilégio &lt;strong&gt;TRIGGER&lt;/strong&gt; na tabela. &lt;br /&gt;&lt;br /&gt;Na versão atual, gatilhos de declaração (&lt;strong&gt;STATEMENT triggers&lt;/strong&gt;) não estão implementados. &lt;br /&gt;&lt;br /&gt;Consulte o comando &lt;strong&gt;DROP TRIGGER&lt;/strong&gt; para obter informações sobre como remover gatilhos. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Exemplos&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Verificar se o código do distribuidor existe na tabela de distribuidores antes de inserir ou atualizar uma linha da tabela filmes: &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;CREATE TRIGGER se_dist_existe&lt;br /&gt;    BEFORE INSERT OR UPDATE ON filmes FOR EACH ROW&lt;br /&gt;    EXECUTE PROCEDURE verificar_chave_primaria ('did', 'distribuidores', 'did');&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;Antes de remover um distribuidor, ou de atualizar o seu código, remover todas as referências para a tabela filmes: &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;CREATE TRIGGER se_filme_existe&lt;br /&gt;    BEFORE DELETE OR UPDATE ON distribuidores FOR EACH ROW&lt;br /&gt;    EXECUTE PROCEDURE verificar_chave_primaria (1, 'CASCADE', 'did', 'filmes', 'did');&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;O segundo exemplo também pode ser implementado usando uma chave estrangeira, como em:&lt;br /&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;CREATE TABLE distribuidores (&lt;br /&gt;    did      DECIMAL(3),&lt;br /&gt;    nome     VARCHAR(40),&lt;br /&gt;    CONSTRAINT se_filme_existe&lt;br /&gt;    FOREIGN KEY(did) REFERENCES filmes&lt;br /&gt;    ON UPDATE CASCADE ON DELETE CASCADE  &lt;br /&gt;);&lt;/code&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Está situação eu fiz no &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; com (&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;SQL99&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;).&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom embreve farei mais &lt;strong&gt;posts&lt;/strong&gt; acompanhem.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-2464386949471814231?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/2464386949471814231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/2464386949471814231'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/02/criando-uma-trigger.html' title='Criando uma Trigger'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-8915595113962930613</id><published>2010-02-12T07:28:00.000-08:00</published><updated>2010-02-12T08:46:14.369-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Triggers'/><title type='text'>O que é Trigger?</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_W4mx9wreaj4/S3V0t6TNAnI/AAAAAAAAAHA/PkiqSBygVII/s1600-h/GATILHO.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 301px;" src="http://4.bp.blogspot.com/_W4mx9wreaj4/S3V0t6TNAnI/AAAAAAAAAHA/PkiqSBygVII/s400/GATILHO.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5437380457212478066" /&gt;&lt;/a&gt;&lt;br /&gt;Bom aqui este tópico vou falar sobre as &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Triggers&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; é um (&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Gatilho&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;) as melhores coisas que existem em um banco de dados para o programador elas dão uma dorzinha de cabeça mas que... facilitam muito a vida do desenvolvedor do &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;software&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, mais vamos para entendimento melhor, temos que saber para que serve uma &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Trigger&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; e qual a sua função dentro do banco. Então &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Let's GO!!!&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;.&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Uma descrição básica e rápida ela é o&lt;/span&gt;&lt;span style="font-family:arial;"&gt; comando no banco &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;CREATE TRIGGER&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; introduz um novo gatilho no &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;banco de dados&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; atual. O &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;gatilho&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; fica associado com a relação tabela e executa a função especificada função. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;O &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;gatilho&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; pode ser especificado para disparar antes (&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;BEFORE&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;) da operação ser realizada na tupla (&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;antes das restrições serem verificadas e o INSERT, UPDATE ou DELETE serem efetuados&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;) ou após (&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;AFTER&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;) a operação ser realizada (&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;ou seja, após as restrições serem verificadas e o INSERT, UPDATE ou DELETE ter completado&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;). Se o &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;gatilho&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; disparar antes do evento, o gatilho pode evitar a operação para a tupla atual, ou modificar a tupla sendo inserida (&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;para as operações de INSERT e UPDATE somente&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;). Se o gatilho disparar após o evento todas as modificações, incluindo a última inserção, atualização ou exclusão, são "&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;visíveis&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;" para o &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;gatilho&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;. &lt;br /&gt;&lt;br /&gt;O &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;SELECT&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; não modifica nenhuma linha, portanto não é possível criar gatilhos para &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;SELECT&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;. Regras e visões são mais apropriadas para este caso. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Sintaxe ficariam assim:&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Name &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;(CREATE TRIGGER  --  define um novo gatilho);&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Synopsis &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;(BEFORE | AFTER);&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Entradas&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; (nome, tabela, evento, função);&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Saídas&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; (Mensagem retornada se o gatilho for criado com sucesso);&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom  mais para frente irei postar várias Tiggers para vários tipos de &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Linguagens de Banco de Dados&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; como exemplo &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Postgre, Firebird, Oracle&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; entre outros...&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;1º O que são Triggers?&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;Triggers são códigos de &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PL/SQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; armazenados dentro do &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;banco de dados&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, onde podemos definir um "&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;bloco&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;" &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PL/SQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; para que seja executado automaticamente pelo &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;banco&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, assim toda vez que uma instrução &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;SQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; ( &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;evento DML&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; ) for aplicada para uma tabela específica ele irá executar um determinado evento automaticamente.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;2º Para que serve uma Trigger?&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;Bom volto a falar ela esta dentro do &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Banco de Dados&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; e tem uma &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;função&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; muito boa a &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Trigger&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; dentro do seu banco será de uma utilidade enorme, imaginem que temos um &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;banco de dados&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; com &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;1.500,000&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; de &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;registros&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, onde&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt; os funcionários da empresa ganham por hora&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, e você tem que &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;atualizar o banco de horas de cada funcionário por dia&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, alguns comandos poderia fazer isso por nós, mas seria um pouco complicado e desgastante, então, por este motivo, criamos nossas &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Triggers&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, onde definimos o que deve ser mudado na tabela num único arquivo e depois acionamos um único comando &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;DML&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; (&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Update&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;) para ele, assim, ele irá atualizar os &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;1.500,000 &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;de registros de uma única só vez.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;3º Implementação da Trigger dentro do banco?&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;Devemos tomar algumas precauções sobre a implementação das &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Triggers&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; dentro do &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;banco&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, fique atento para estes tópicos :&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Use triggers para garantir a execução de comandos para uma tabela específica;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Não fique criando &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;triggers&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; que duplique regras já definidas em &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;CONSTRAINTS&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; do banco;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;O &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Oracle&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; recomenda que limitamos os nossos códigos no máximo em &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;60 linhas&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;,&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Caso você tenha que criar algo mais complexo crie&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt; stored procedure&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;, será mais utíl;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;ATENÇÃO &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;cuidado ao criar as &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Triggers&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; que disparem sob uma instrução &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;UPDATE&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; na sua &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Tabela&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;, não pode alterar a tabela porque isso iria &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;disparar&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; a &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Triggers&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; mais de &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;N vezes&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; no sistema, e a memória do equipamento não iria agüentar ocasionandos &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;bugs&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; de memória e resultados &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;errôneos&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;4º Pontos fundamentais das Triggers?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Segurança e Integridade&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Podemos utilizar as Triggers para garantir uma segurança maior no nosso banco, ela tem como tarefa restringir o acesso as tabelas e controlar as atualizações.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Auditoria&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Como disse anteriormente, as Triggers são executadas automaticamente, assim, podemos utilizá-las para fazer auditoria sobre acesso ao banco de dados.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Replicação de Dados&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;São excelentes para criar uma política de replicação síncrona de uma tabela para outra.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Integridade&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Apartir das Triggers podemos criar controles mais complexos para os relacionamento das tabelas.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Controle de dados&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Caso uma tabela tenha dados, cujo valor depende de outras tabelas, as Triggers pode atualizar automaticamente a coluna com os valores derivados.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Próximos posts vou comentar sobre a &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Preparação&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; das &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Triggers&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; passo-a-passo e um resumo sobre os comandos, assim vocês poderam na ultima coluna, estar dominando a criação e a utilização deste mecanismo.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-8915595113962930613?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/8915595113962930613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/8915595113962930613'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/02/o-que-e-trigger.html' title='O que é Trigger?'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_W4mx9wreaj4/S3V0t6TNAnI/AAAAAAAAAHA/PkiqSBygVII/s72-c/GATILHO.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-7476170570077114779</id><published>2010-02-12T06:52:00.000-08:00</published><updated>2010-02-12T07:34:36.313-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Constraints'/><title type='text'>Tipos de Constraints</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_W4mx9wreaj4/S3VyQgLKdtI/AAAAAAAAAG4/5JFD23_uYS8/s1600-h/constraints.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 397px; height: 400px;" src="http://4.bp.blogspot.com/_W4mx9wreaj4/S3VyQgLKdtI/AAAAAAAAAG4/5JFD23_uYS8/s400/constraints.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5437377752959973074" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom agora vou falar sobre os tipos de &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Constraints;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul align="justify"&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Constraint DEFAULT&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Constraint CHECK&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Constraint PRIMARY KEY&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Constraint UNIQUE&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Constraint FOREIGN KEY&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Basicamente falando, integridade de dados é a maneira de dizer que os dados que estão na sua base são confiáveis. Existem dois tipos de implementar integridade de dados nos &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Bancos de Dados&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;: &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Declarativa e Procedural&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Declarativa&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; diz respeito ao uso das constraints e das rules. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Procedural&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; diz respeito ao uso de &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Stored Procedures e Triggers&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;. (recomendo que leia este outro tópico sobre &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://elderstroparo.blogspot.com/search/label/Triggers"&gt;Triggers&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;...)&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Observações: &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;- É possível criar uma constraint após a criação da tabela.&lt;br /&gt;- Uma &lt;strong&gt;Constraint&lt;/strong&gt; pode ser definida a nível de coluna ou a nível de tabela.&lt;br /&gt;- &lt;strong&gt;Constraints&lt;/strong&gt; são armazenadas no &lt;strong&gt;Dicionário de Dados&lt;/strong&gt; e podem ser facilmente recuperadas se possuírem nomes razoáveis.&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Constraint DEFAULT&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Bom &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Constraint Defaukt&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; ela serve para indicar um valor padrão para um campo, quando o mesmo não for especificado. Exemplo: se a tabela &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;TESTE&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; possui dois campos, &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;COD&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; e &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;NOME&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;, e para o campo &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;NOME &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;existe uma constraint &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;DEFAULT&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; criada, ao inserirmos dados nesta tabela podemos somente fornecer o conteúdo do campo &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;COD&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;, pois o conteúdo do campo &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;NOME&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; será automaticamente preenchido com o valor definido na constraint &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;DEFAULT&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Esta constraint deve ser utilizada para manter &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;integridade de domínio&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;. Também podemos utilizar esta &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;constraint &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;como um objeto independente, assim como as rules. Não podemos criar constraints em campos com o tipo de dados &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;rowversion&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; e campos que possuem uma propriedade&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt; IDENTITY&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; definida.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Constraint CHECK&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Esta &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;constraint &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;nos permite criar uma regra para o preenchimento de um certo campo em uma tabela. Nesta regra podemos utilizar valores de outros campos da mesma tabela para fazer a validação dos dados. Ou melhor u&lt;/span&gt;&lt;span style="font-family:arial;"&gt;m método para validar a integridade de todos os dados que entram em sua base e &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Check Constraints&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; é ótimo para garantir todos  os dados que entram em seus sistemas através de novas soluções ou interfaces.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;As &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Check Constraints&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; também melhoram o aproveitamento de seu sistema. O gerenciador de banco de dados verifica o cumprimento das &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Check Constraints&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; no nível mais baixo do sistema operacional e por isso a verificação destas regras tem uma carga de trabalho menor do que teria através de aplicativos.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Esta &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;constraint &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;deve ser utilizada para manter integridade de domínio e integridade referencial.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Esta &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;constraint&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; pode ser desabilitada, para caso de uma grande inserção de dados na tabela.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Constraint PRIMARY KEY&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Esta constraint serve para definirmos um ou mais campos como chaves primárias. Uma chave primária é o atributo de um ou mais campos que identifica unicamente um registro em uma tabela. Podemos criar somente uma constraint &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;PRIMARY KEY &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;por tabela e não podemos colocar o valor &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;NULL&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; nos campos que compõem a chave primária.&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Esta constraint deve ser utilizada para manter integridade de entidade. Quando esta constraint é criada na tabela, um índice também é automaticamente criado sobre as colunas que fazem parte da &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;chave primária&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;. Este índice não pode ser apagado diretamente, devemos apagar a &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;constraint&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;PRIMARY KEY&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; primeiro.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Observações:&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;- A &lt;strong&gt;Constraint Primary Key &lt;/strong&gt;é uma combinação das constraints &lt;strong&gt;Unique e Not Null&lt;/strong&gt;. &lt;br /&gt;- Um índice único é automaticamente criado.&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Constraint UNIQUE&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Esta constraint faz a validação de valores únicos em uma coluna de uma tabela. Se um campo estiver definido com a &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;constraint &lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;UNIQUE&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; nenhum valor repetido poderá ser fornecido para esta campo. Diferente da &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;PRIMARY KEY&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;, podemos colocar várias constraints &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;UNIQUE&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; por tabela mas para cada campo que possue uma constraint &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;UNIQUE&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; somente podemos inserir o valor &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;NULL&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; uma vez.&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Esta constraint deve ser utilizada para manter integridade de entidade. Quando esta constraint é criada na tabela, um índice também é automaticamente criado sobre a coluna sobre a qual a constraint está definida. Este índice não pode ser apagado diretamente, devemos apagar a constraint &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;UNIQUE&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; primeiro.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Observações:&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;- Designa uma coluna ou uma combinação de colunas de tal forma que duas linhas não possam ter o mesmo valor.&lt;br /&gt;- Valores nulos são aceitos.&lt;br /&gt;- Automaticamente é criado um índice único para a(s) &lt;strong&gt;coluna(s) especificada(s)&lt;/strong&gt;.&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Constraint&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;FOREIGN KEY&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Esta constraint é utilizada para implementar o conceito de chave estrangeira e serve para indicar que o conteúdo de um campo deve se referenciar a um outro campo que possua ou uma chave primária ou uma constraint &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;UNIQUE&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Quando o campo que está sendo referenciado residir na mesma tabela, não precisamos uitilizar a palavra-chave &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;FOREIGN KEY&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;, podendo somente utilizar &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;REFERENCES&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;. Esta constraint também pode ser desabilitada, para o caso de uma grande inserção de dados na tabela. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Esta constraint deve ser utilizada para manter integridade refencial e podemos ainda programar eventos em cascata utilizando as cláusulas &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;ON DELETE&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; e &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;ON UPDADE&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Observações:&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;- Estabelece um relacionamento com a chave primária ou única da mesma ou de outra tabela.&lt;br /&gt;- Deve referenciar um valor existente na tabela pai ou ser nulo.&lt;br /&gt;- &lt;strong&gt;Chaves estrangeiras&lt;/strong&gt; são baseadas em dados e são puramente lógicas, isto é, não são ponteiros físicos.&lt;br /&gt;- Uma &lt;strong&gt;chave estrangeira&lt;/strong&gt;, parte de uma chave primária, não pode ser nula pois uma chave primária não pode ser nula, nem parcialmente nula. &lt;br /&gt;- Havendo a cláusula &lt;strong&gt;ON DELETE CASCADE&lt;/strong&gt;, uma deleção na tabela pai causa a deleção das linhas relacionadas na tabela filho.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom é isso ai espero que tenha respondido muitas perguntas e o porque haha... e muitos programadores desconhece desse assunto mas entendem muito sem saber o que é esses simples recursos que faz sem saber o nome que é &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Constraints&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; isso nos &lt;strong&gt;Bancos de Dados&lt;/strong&gt;.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;É isso em breve muitos exemplos...&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-7476170570077114779?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/7476170570077114779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/7476170570077114779'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/02/tipos-de-constraints.html' title='Tipos de Constraints'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_W4mx9wreaj4/S3VyQgLKdtI/AAAAAAAAAG4/5JFD23_uYS8/s72-c/constraints.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-6592593082173175261</id><published>2010-02-12T05:48:00.000-08:00</published><updated>2010-02-12T07:37:10.678-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Constraints'/><title type='text'>O que é uma Constraints?</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Olá! vamos falar hoje sobre "O que é uma &lt;strong&gt;Constraints&lt;/strong&gt;?"&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom é um assunto bem interessante, as &lt;strong&gt;CONSTRAINTS&lt;/strong&gt;, 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.&lt;/span&gt;&lt;/div&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom antes de você começar a ler este tópico recomendo você ler antes sobre a &lt;/span&gt;&lt;a href="http://elderstroparo.blogspot.com/search/label/Integridade%20no%20Banco%20de%20Dados"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Integridade no Banco de Dados&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; então depois de ler... volte aqui haha.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Constraints bom podemos ter os seguintes tipos:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Primary Key (PK)&lt;/strong&gt; = Está restrição cria um índice único para um conjunto de colunas ou uma coluna para Chave Primaria.&lt;/span&gt;&lt;/li&gt;&lt;li align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Unique&lt;/strong&gt; = Está Contraint determina que uma coluna não poderá ter 2 linhas com o mesmo valor.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Foreign Key (FK ou Chave Estrangeira)&lt;/strong&gt; = Determina uma coluna ou um conjunto de colunas que possuem valores em outras tabelas, referente a uma referência ou um relacionamento.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Check &lt;/strong&gt;= Especifica a condição que a coluna precisa para salvar o registro.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Not Null&lt;/strong&gt; = Determina que a coluna tem preenchimento obrigatório.&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom agora deu para você entender melhor sobre o que estamos falando né haha, as opções de restrições (&lt;strong&gt;Constraints&lt;/strong&gt;), 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 &lt;strong&gt;Código, Nome, Departamento, Sexo, Idade e E-mail&lt;/strong&gt;. Então nosso código deverá ter os seguintes campos todas com suas restrições para inclusão.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;SQL&lt;/code&gt;&lt;code&gt; 1º CREATE TABLE EMPREGADOS (&lt;br /&gt;2&lt;/code&gt;&lt;code&gt;º&lt;/code&gt;&lt;code&gt; COD NUMBER(6) NOT NULL CONSTRAINT CODEMP_PK PRIMARY KEY,&lt;br /&gt;3&lt;/code&gt;&lt;code&gt;º&lt;/code&gt;&lt;code&gt; NOME VARCHAR2(20) NOT NULL,&lt;br /&gt;4&lt;/code&gt;&lt;code&gt;º&lt;/code&gt;&lt;code&gt; DEPARTAMENTO VARCHAR2(40) NOT NULL CONSTRAINT DEPTO_FK REFERENCES DEPTO&lt;br /&gt;5&lt;/code&gt;&lt;code&gt;º&lt;/code&gt;&lt;code&gt; INITIALLY DEFERRED, &lt;br /&gt;6&lt;/code&gt;&lt;code&gt;º&lt;/code&gt;&lt;code&gt; SEXO CHAR(1) NOT NULL CONSTRAINT CHECK_SEXO CHECK (SEXO IN ('F','M')),&lt;br /&gt;7&lt;/code&gt;&lt;code&gt;º&lt;/code&gt;&lt;code&gt; IDADE NUMBER(2) CONSTRAINT CHECK_IDADE CHECK (IDADE &gt; 18),&lt;br /&gt;8&lt;/code&gt;&lt;code&gt;º&lt;/code&gt;&lt;code&gt; EMAIL VARCHAR2(40) NOT NULL UNIQUE&lt;br /&gt;9&lt;/code&gt;&lt;code&gt;º&lt;/code&gt;&lt;code&gt; )&lt;br /&gt;10&lt;/code&gt;&lt;code&gt;º&lt;/code&gt;&lt;code&gt; TABLESPACE USERS;&lt;/code&gt;&lt;/div&gt;&lt;p align="justify"&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Agora vamos analisar o código linha por linha afim de entendermos o que está acontecendo.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1º Linha&lt;/strong&gt;: Está sendo criada a tabela chamada &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;EMPREGADOS&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;2º Linha&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;: Vamos criar uma coluna &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;COD&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; onde tem preenchimento obrigatório e está relacionada com outra tabela chamada &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;CODEMP (Código Empregado) &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;como chave primaria.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;3º Linha&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;: Criamos uma coluna &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;NOME&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; que o preenchimento é obrigatório.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;4º Linha&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;: Criamos uma coluna &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;DEPARTAMENTO&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; onde o preenchimento é obrigatório e como chave estrangeira para a tabela &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;DEPTO&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; e a cláusula &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;DEFERRED&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; significa que a transição poderá ser adiada até o fim da execução do serviço do banco.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;6º Linha&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;: Criação da coluna &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;SEXO&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; onde tem preenchimento obrigatório e só será aceito os caracteres &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;F (Feminino) e M (Masculino)&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;7º Linha&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;: Criamos uma coluna &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;IDADE&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; onde a idade do empregado da empresa tem que ser superior a 18 anos.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;8&lt;/span&gt;&lt;span style="font-family:arial;"&gt;º Linha&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;: Criação da coluna &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;EMAIL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; onde o preenchimento é obrigatório e não permite que os valores da coluna seja repetido.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;10º Linha&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;: Estamos determinando a área de reserva para aquela tabela.&lt;br /&gt;&lt;br /&gt;PRONTO! é isso agora você já deve saber utilizar as restrições para suas tabelas e deixar elas mais utilizáveis no sistema.&lt;br /&gt;&lt;br /&gt;Até a próxima.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-6592593082173175261?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/6592593082173175261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/6592593082173175261'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/02/o-que-e-uma-constraints.html' title='O que é uma Constraints?'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-6348115435650639734</id><published>2010-02-11T19:00:00.000-08:00</published><updated>2010-02-12T07:36:16.268-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Integridade no Banco de Dados'/><title type='text'>Integridade no Banco de Dados</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_W4mx9wreaj4/S3TIf2HBQKI/AAAAAAAAAGw/XXkU-zPGmsE/s1600-h/integridade.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 376px; height: 246px;" src="http://3.bp.blogspot.com/_W4mx9wreaj4/S3TIf2HBQKI/AAAAAAAAAGw/XXkU-zPGmsE/s400/integridade.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5437191099569488034" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Olá Pessoal, beleza... estou devolta... &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Bom comecei este artigo pensando em falar sobre &lt;strong&gt;&lt;a href="http://elderstroparo.blogspot.com/search/label/Constraints"&gt;Constraints&lt;/a&gt;&lt;/strong&gt; e &lt;strong&gt;&lt;a href="http://elderstroparo.blogspot.com/search/label/Triggers"&gt;Triggers&lt;/a&gt;&lt;/strong&gt;, mas antes, deveria falar sobre o que é uma &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Integridade no Banco de Dados&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;, então, resolvi preparar este artigo que descreve os tipos e exemplificar cada um deles. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p align="center"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;em&gt;Vamos lá! Let's GO!!!&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Integridade&lt;/strong&gt; é fundamental! &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Quando vamos projetar um &lt;strong&gt;Banco de Dados&lt;/strong&gt;, imaginamos as possíveis formas para que nossa aplicação grave os dados corretamente no &lt;strong&gt;Banco de Dados&lt;/strong&gt;, 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. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Em um &lt;strong&gt;Banco de Dados&lt;/strong&gt;, possuímos &lt;strong&gt;3&lt;/strong&gt; &lt;strong&gt;formas de Integridade&lt;/strong&gt;: &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;- Integridade de Domínio &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;- Integridade de Entidade &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;- Integridade Referencial &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Integridade de Domínio &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Neste tipo de&lt;strong&gt; integridade&lt;/strong&gt;, as validações ocorrem em cada campo de nossa tabela (&lt;strong&gt;ou entidade&lt;/strong&gt;), como por exemplo se um campo deve aceitar valores &lt;strong&gt;Null&lt;/strong&gt; ou apenas uma faixa de valores, por exemplo: &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Temos um campo &lt;strong&gt;Sexo&lt;/strong&gt;, que só deve aceitar valores do tipo &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;M&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; ou &lt;strong&gt;F&lt;/strong&gt; e, independente de nossa aplicação, não deverá aceitar outros valores. Com integridade de domínio, podemos fazer isto facilmente. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Integridade de Entidade&lt;/strong&gt; &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Já na &lt;strong&gt;integridade de entidade&lt;/strong&gt;, temos validações um nível acima, onde definimos quais campos de nossa tabela são chaves primárias (&lt;strong&gt;PK&lt;/strong&gt;) ou únicas (&lt;strong&gt;UK&lt;/strong&gt;). &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Um exemplo de chave única é o campo de CPF que nunca pode se repetir. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;OBS: Geralmente chaves únicas são chamadas de chaves candidatas, pois são candidatas a chave primária, mas não são uma. &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Integridade referencial &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;E por último, mas não menos importante, vemos a &lt;strong&gt;Integridade Referencial&lt;/strong&gt;, onde criamos nossas referências a campos do tipo &lt;strong&gt;PK&lt;/strong&gt; ou &lt;strong&gt;UK&lt;/strong&gt; de outras tabelas, as famosas chaves estrangeiras &lt;strong&gt;FK&lt;/strong&gt;. Lembre-se que eu não posso criar uma referência (&lt;strong&gt;relacionamento&lt;/strong&gt;) de uma coluna se esta não for uma chave primária de outra tabela. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Este tipo de &lt;strong&gt;integridade é fundamental&lt;/strong&gt; para verificar se um dado será inserido de forma correta e, como é uma chave estrangeira, se este dado realmente existe. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Vamos tirar por exemplo uma tabela chamada &lt;strong&gt;PEDIDO&lt;/strong&gt; e uma &lt;strong&gt;CLIENTE&lt;/strong&gt;. Eu só posso &lt;strong&gt;adicionar um registro&lt;/strong&gt; de &lt;strong&gt;PEDIDO&lt;/strong&gt; se existir um &lt;strong&gt;CLIENTE&lt;/strong&gt; relacionado a ele, e é assim que as verificações acontecem, no momento da inclusão ou alteração, o &lt;strong&gt;SGBD&lt;/strong&gt; verifica se o registro existe e caso não, &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;retorna um erro&lt;/strong&gt;. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Bom, vimos neste artigo um pouco sobre integridade no banco de dados, no próximo irei falar sobre como criar &lt;strong&gt;Constraints&lt;/strong&gt; e &lt;strong&gt;Triggers&lt;/strong&gt; possamos pôr em prática o que vimos hoje. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Até a próxima.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-6348115435650639734?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/6348115435650639734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/6348115435650639734'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/02/integridade-no-banco-de-dados.html' title='Integridade no Banco de Dados'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_W4mx9wreaj4/S3TIf2HBQKI/AAAAAAAAAGw/XXkU-zPGmsE/s72-c/integridade.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-8132747262120512986</id><published>2010-01-31T10:32:00.000-08:00</published><updated>2010-01-31T11:53:44.861-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Histórias dos Bancos'/><title type='text'>História do SQL Server</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_W4mx9wreaj4/S2XQKvbjhJI/AAAAAAAAAGY/vbAroSJjwVo/s1600-h/sql+server.jpeg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 64px;" src="http://1.bp.blogspot.com/_W4mx9wreaj4/S2XQKvbjhJI/AAAAAAAAAGY/vbAroSJjwVo/s200/sql+server.jpeg" border="0" alt="" id="BLOGGER_PHOTO_ID_5432977408441681042" /&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom falarei sobre o &lt;strong&gt;SQL Server&lt;/strong&gt;, tudo começou em 27 de março de &lt;strong&gt;1987&lt;/strong&gt;, o presidente da &lt;strong&gt;Microsoft na época&lt;/strong&gt;, &lt;strong&gt;Jon Shirley&lt;/strong&gt;, e o co-fundador e presidente da &lt;strong&gt;Sybase&lt;/strong&gt;, &lt;strong&gt;Mark Hoffman&lt;/strong&gt;, assinaram um acordo onde a &lt;strong&gt;Microsoft &lt;/strong&gt;obteria direitos exclusivos ao produto &lt;strong&gt;DataServer&lt;/strong&gt; da &lt;strong&gt;Sybase &lt;/strong&gt;para o &lt;strong&gt;OS/2.&lt;/strong&gt; Já a &lt;strong&gt;Sybase&lt;/strong&gt; além de obter os &lt;strong&gt;royalties&lt;/strong&gt; da&lt;strong&gt; Microsoft&lt;/strong&gt;, ganharia credibilidade com o endosso de sua tecnologia pela &lt;strong&gt;Microsoft&lt;/strong&gt;.&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Para ganhar aceitação no mundo dos bancos de dados para &lt;strong&gt;PC&lt;/strong&gt;, onde o &lt;strong&gt;dBASE&lt;/strong&gt; da &lt;strong&gt;Ashton-Tate&lt;/strong&gt; tinha boa parte do mercado, o “&lt;strong&gt;novo&lt;/strong&gt;” &lt;strong&gt;sistema de gerenciamento de banco de dados da Microsoft &lt;/strong&gt;(&lt;strong&gt;licenciado pela Sybase&lt;/strong&gt;) precisaria interessar à grande comunidade do &lt;strong&gt;dBASE&lt;/strong&gt;. E a maneira mais direta de fazer isso era fazer a &lt;strong&gt;Ashton-Tate&lt;/strong&gt; endossar o produto, e foi exatamente o que a&lt;strong&gt; Microsoft&lt;/strong&gt; fez, um acordo com a &lt;strong&gt;Ashton-Tate&lt;/strong&gt;.&lt;/span&gt;&lt;/div&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;A &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;primeira versão&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; beta do&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt; Ashton-Tate/Microsoft SQL Serve&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;r foi lançada no segundo semestre de 1988&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;A &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;versão 1.1&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; do &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Microsoft SQL Server&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; foi lançada no segundo semestre de 1990.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;No início de &lt;strong&gt;1991&lt;/strong&gt; o acordo entre a &lt;strong&gt;Microsoft&lt;/strong&gt; e a &lt;strong&gt;Sybase&lt;/strong&gt; foi retificado, possibilitando à&lt;strong&gt; Microsoft&lt;/strong&gt; o acesso de “&lt;strong&gt;somente-leitura&lt;/strong&gt;” ao &lt;strong&gt;código-fonte&lt;/strong&gt; do &lt;strong&gt;SQL Server&lt;/strong&gt; para fins de suporte. Neste mesmo ano a &lt;strong&gt;Microsoft&lt;/strong&gt; lançou uma &lt;strong&gt;versão&lt;/strong&gt; de manutenção, o &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;SQL Server 1.11&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;O &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Microsoft SQL Server versão 4.2 for OS/2&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; entrou em teste beta no segundo semestre de &lt;strong&gt;1991&lt;/strong&gt;, tendo sido um desenvolvimento conjunto entre a &lt;strong&gt;Microsoft&lt;/strong&gt; e a&lt;strong&gt; Sybase&lt;/strong&gt;. A &lt;strong&gt;versão 4.2 (16-bit)&lt;/strong&gt; foi lançada em março de &lt;strong&gt;1992.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Em outubro de &lt;strong&gt;1992&lt;/strong&gt;, surgiu a primeira &lt;strong&gt;versão beta do SQL Server for Windows NT&lt;/strong&gt; e em agosto de &lt;strong&gt;1993&lt;/strong&gt; era lançada a &lt;strong&gt;versão&lt;/strong&gt; final para o &lt;strong&gt;Windows NT 3.1&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;O primeiro &lt;strong&gt;beta do SQL Server 6.0&lt;/strong&gt; (&lt;strong&gt;também chamado de SQL95&lt;/strong&gt;) surgiu no final de outubro de &lt;strong&gt;1994&lt;/strong&gt;, e em julho de &lt;strong&gt;1995&lt;/strong&gt; era lançado oficialmente o&lt;strong&gt; Microsoft SQL Server 6.0&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Em dezembro de &lt;strong&gt;1995&lt;/strong&gt; é liberado uma versão beta completa do&lt;strong&gt; SQL Server 6.5.&lt;/strong&gt; &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;O &lt;strong&gt;SQL Server 7.0 &lt;/strong&gt;(&lt;strong&gt;codinome Sphinx&lt;/strong&gt;) chegou ao mercado no início de &lt;strong&gt;1999&lt;/strong&gt; e colocou o &lt;strong&gt;SQL Server&lt;/strong&gt; no mercado de &lt;strong&gt;sistemas de gerenciamento de base de dados relacionais de classe empresarial&lt;/strong&gt;. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Em setembro de &lt;strong&gt;1999&lt;/strong&gt; é distribuído o &lt;strong&gt;Beta 1 do SQL Server 2000&lt;/strong&gt; (&lt;strong&gt;versão 8.0 de codinome Shiloh&lt;/strong&gt;), o &lt;strong&gt;Beta 2&lt;/strong&gt; foi lançado em abril de &lt;strong&gt;2000&lt;/strong&gt; e em agosto a &lt;strong&gt;versão&lt;/strong&gt; final do &lt;strong&gt;Microsoft SQL Server 2000&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Em novembro de &lt;strong&gt;2005&lt;/strong&gt; é lançado ao público o &lt;strong&gt;SQL Server 2005&lt;/strong&gt; (&lt;strong&gt;codinome Yukon&lt;/strong&gt;).&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;O SQL server hoje&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 125px;" src="http://2.bp.blogspot.com/_W4mx9wreaj4/S2Xdi9Lz_8I/AAAAAAAAAGg/mL8IedWJsV8/s200/sql_server_2008_logo.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5432992118101770178" /&gt;&lt;span style="font-family:arial;"&gt;Atualemten lançou a &lt;strong&gt;versão&lt;/strong&gt; final do &lt;strong&gt;Microsoft SQL Server 2008&lt;/strong&gt; (&lt;strong&gt;codinome Katmai&lt;/strong&gt;) foi lançada em agosto de &lt;strong&gt;2008&lt;/strong&gt;, 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.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;O &lt;strong&gt;MS SQL Server é um SGBD&lt;/strong&gt; - &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;sistema gerenciador de Banco de dados relacional criado pela Microsoft. Com a nova versão o Microsoft SQL Server 2008&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; é 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 &lt;strong&gt;SQL&lt;/strong&gt; É um &lt;strong&gt;Banco de dados&lt;/strong&gt; robusto e usado por sistemas corporativos dos mais diversos portes. O &lt;strong&gt;Microsoft SQL Server 2008&lt;/strong&gt; fornece uma plataforma confiável de dados que permite que a execução de aplicações de missão crítica mais exigentes.&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;“&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;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 &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;SQL Server 2008&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;.”&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Algumas &lt;strong&gt;funções&lt;/strong&gt; do &lt;strong&gt;SQL Server&lt;/strong&gt;:&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Trigger&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Stored procedure&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;SQL User Function&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Extended Stored Procedure&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom é isso ai o site oficial &lt;/span&gt;&lt;a href="http://www.microsoft.com/sql/default.mspx"&gt;&lt;span style="font-family:arial;"&gt;SQL Server.&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-8132747262120512986?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/8132747262120512986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/8132747262120512986'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/01/historia-do-sql-server.html' title='História do SQL Server'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_W4mx9wreaj4/S2XQKvbjhJI/AAAAAAAAAGY/vbAroSJjwVo/s72-c/sql+server.jpeg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-7435899249432363743</id><published>2010-01-31T09:45:00.000-08:00</published><updated>2010-01-31T10:21:01.249-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Invasões e as Vulnerabilidade de (BD)'/><title type='text'>Invasões e as Vulnerabilidade de (BD)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_W4mx9wreaj4/S2XH4r8-o9I/AAAAAAAAAF4/hn8bFCRQch8/s1600-h/cadeado+com+chave.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 374px; height: 291px;" src="http://4.bp.blogspot.com/_W4mx9wreaj4/S2XH4r8-o9I/AAAAAAAAAF4/hn8bFCRQch8/s400/cadeado+com+chave.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5432968302177461202" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Olá vou comntar a vocês sobre &lt;strong&gt;Invasõe&lt;/strong&gt;s e &lt;strong&gt;Vulnerabilidades em Banco de Dados (BD)&lt;/strong&gt;, 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 &lt;strong&gt;Blog&lt;/strong&gt;. Bom vamos lá &lt;/span&gt;&lt;/div&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Invasão&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; é 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 &lt;/span&gt;&lt;span style="font-family:arial;"&gt;intrusos dos sistemas que actuam de duas formas distintas vou citar dois exemplos &lt;/span&gt;&lt;span style="font-family:arial;"&gt;(&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;intrusos passivos &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;procuram apenas ler ficheiros não autorizados&lt;/span&gt;&lt;span style="font-family:arial;"&gt;) &lt;/span&gt;&lt;span style="font-family:arial;"&gt;e os&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;(&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;intrusos activos &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;actuam de forma maliciosa, procurando efectuar alterações não autorizadas nos dados&lt;/span&gt;&lt;span style="font-family:arial;"&gt;). &lt;/span&gt;&lt;span style="font-family:arial;"&gt;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.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Vulnerabilidade &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;è um meio vulnerável fácil, bom na computação significa ter &lt;strong&gt;brecha&lt;/strong&gt; em um sistema computacional, também conhecida como &lt;strong&gt;bug &lt;/strong&gt;(inseto do famoso &lt;strong&gt;ENIAC&lt;/strong&gt;). 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 &lt;strong&gt;buffer&lt;/strong&gt; &lt;strong&gt;overflow&lt;/strong&gt;, que muitas vezes pode dar privilégios de &lt;strong&gt;administrador&lt;/strong&gt; para o &lt;strong&gt;invasor&lt;/strong&gt;, &lt;strong&gt;rodar códigos maliciosos remotamente&lt;/strong&gt;, &lt;strong&gt;burlar particularidades de cada sistema&lt;/strong&gt;, &lt;strong&gt;ataques de Negação de Serviços&lt;/strong&gt; (&lt;strong&gt;DDoS&lt;/strong&gt;), e &lt;strong&gt;acesso irestrito ao sistema&lt;/strong&gt;. Bom existem ferramentas específicas para se explorar as &lt;strong&gt;vulnerabilidades&lt;/strong&gt;, cada ferramenta para a sua respectiva &lt;strong&gt;vulnerabilidade&lt;/strong&gt; a ser explorada (&lt;strong&gt;na maioria das vezes escritas em linguagem C e Assembly&lt;/strong&gt;), essas ferramentas são chamadas de &lt;strong&gt;exploits&lt;/strong&gt;. Outro exemplo prático imagine uma corrente e um anel dela aberto isto é ser &lt;strong&gt;VULNERABILIDADE&lt;/strong&gt; da corrente.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom acho que deu para se entender o que é &lt;strong&gt;Invasões&lt;/strong&gt; e &lt;strong&gt;Vunerabilidades&lt;/strong&gt; bom então vou postar sobre algumas &lt;strong&gt;invasões&lt;/strong&gt; e &lt;strong&gt;brechas&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; em &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;sistemas de Banco de Dados&lt;/strong&gt; acompanhem.&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-7435899249432363743?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/7435899249432363743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/7435899249432363743'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/01/invasoes-e-vulnerabilidade.html' title='Invasões e as Vulnerabilidade de (BD)'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_W4mx9wreaj4/S2XH4r8-o9I/AAAAAAAAAF4/hn8bFCRQch8/s72-c/cadeado+com+chave.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-776172604757900090</id><published>2010-01-31T07:47:00.000-08:00</published><updated>2010-01-31T09:34:41.299-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Segurança de Banco de Dados'/><title type='text'>Segurança de Banco de Dados</title><content type='html'>&lt;div align="justify"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_W4mx9wreaj4/S2WmzgQX6-I/AAAAAAAAAFo/gByEcFWdON0/s1600-h/cadeado.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 150px; height: 159px;" src="http://1.bp.blogspot.com/_W4mx9wreaj4/S2WmzgQX6-I/AAAAAAAAAFo/gByEcFWdON0/s400/cadeado.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5432931929254521826" /&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Olá pessol bom falarei hoje sobre a &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Segurança de Banco de Dados&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;. É um termo muito abrangente não vou conseguir citar todas as vulnerabilidade de todos os &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Banco de Dados&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; com as formas de invasões e também não vo conseguir citar todas as seguranças especificas de cada &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Banco de Dados&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; mas vou tentar nos proximos post nesta categoria falar mais profundamente especificando cada &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Banco&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; hoje uma explicação geral da Segurança de &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Banco de Dados&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;. Bom vamos lá...&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Os &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Bancos de Dados &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;são utilizados para armazenar diversos tipos de informações, desde dados sobre uma &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;conta de e-mail&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; até dados importantes da &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Receita Federal&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;. E a&lt;/span&gt;&lt;span style="font-family:arial;"&gt;tualmente a &lt;strong&gt;informação&lt;/strong&gt; é um recurso crítico no &lt;strong&gt;dia-a-dia&lt;/strong&gt; das organizações. Através da &lt;strong&gt;informática&lt;/strong&gt;, todas as operações básicas das empresas estão sendo automatizadas isso como um &lt;/span&gt;&lt;span style="font-family:arial;"&gt;exemplo, &lt;strong&gt;controle de estoque&lt;/strong&gt;, &lt;strong&gt;faturamento&lt;/strong&gt;, &lt;strong&gt;pagamentos&lt;/strong&gt;, além de &lt;strong&gt;suporte a diversas funções da administração como previsão&lt;/strong&gt;, &lt;strong&gt;orçamento e controle financeiro&lt;/strong&gt;. Para que essas funções sejam possíveis, é necessária a utilização de um &lt;strong&gt;Banco de Dados &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;e a u&lt;/span&gt;&lt;span style="font-family:arial;"&gt;tilização deles em muitas aplicações vem abrangendo praticamente todo o campo dos programas de computador.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Para tal existem diversos tipos, os quais variam em complexidade e sobretudo em segurança:&lt;/span&gt;&lt;/p&gt;&lt;ul align="justify"&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Criptografia&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Senhas&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Backup&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom falar um pouco sobre &lt;strong&gt;Criptografia&lt;/strong&gt; 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 (&lt;strong&gt;detentor da "chave secreta"&lt;/strong&gt;), 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.&lt;/span&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;span style="font-family:arial;"&gt;Uma visão geral da &lt;strong&gt;Criptografia&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Confidencialidade da Mensagem&lt;/strong&gt;: 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.&lt;br /&gt;&lt;strong&gt;Integridade da Mensagem&lt;/strong&gt;: o destinatário deverá ser capaz de determinar se a mensagem foi alterada durante a transmissão.&lt;br /&gt;&lt;strong&gt;Autenticação do Remetente&lt;/strong&gt;: o destinatário deverá ser capaz de identificar o remetente e verificar que foi mesmo ele quem enviou a mensagem.&lt;br /&gt;&lt;strong&gt;Não-Repúdio ou Irretratabilidade do Emissor&lt;/strong&gt;: não deverá ser possível ao emissor negar a autoria da mensagem.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Enfim tem vários tipos de &lt;strong&gt;Criptografias.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;span style="font-family:arial;"&gt;Uma visão geral de &lt;strong&gt;Senhas&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;A senha (PT-Brasil) ou palavra-chave (PT-Portugal), por vezes referida no inglês &lt;strong&gt;password&lt;/strong&gt;, é uma palavra ou uma &lt;strong&gt;ação secreta&lt;/strong&gt; previamente convencionada entre duas partes como forma de reconhecimento. Em um sistemas de computação, &lt;strong&gt;senhas&lt;/strong&gt; são amplamente utilizadas para &lt;strong&gt;Autenticar Usuários&lt;/strong&gt; e conceder-lhes &lt;strong&gt;privilégios&lt;/strong&gt; — para agir como &lt;strong&gt;administradores&lt;/strong&gt; 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 &lt;strong&gt;privacidade&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;span style="font-family:arial;"&gt;Uma visão geral de &lt;strong&gt;Backup&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Backups&lt;/strong&gt; em &lt;strong&gt;informática&lt;/strong&gt;, &lt;strong&gt;Cópia de Segurança&lt;/strong&gt; é a &lt;strong&gt;Cópia de Dados&lt;/strong&gt; 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.&lt;br /&gt;&lt;br /&gt;Vem se difundidos em vários meios de cópias de segurança incluem &lt;strong&gt;CD-ROM&lt;/strong&gt;,&lt;strong&gt; DVD&lt;/strong&gt;, &lt;strong&gt;disco rígido&lt;/strong&gt;, &lt;strong&gt;disco rígido externo&lt;/strong&gt; (&lt;strong&gt;compatíveis com USB&lt;/strong&gt;), &lt;strong&gt;fitas magnéticas&lt;/strong&gt; e a &lt;strong&gt;cópia de segurança externa&lt;/strong&gt; (&lt;strong&gt;online&lt;/strong&gt;). Esta transporta os dados por uma rede como a Internet para outro ambiente, geralmente para equipamentos mais sofisticados, de grande porte e alta &lt;strong&gt;segurança&lt;/strong&gt;. Outra forma pouco difundida de &lt;strong&gt;cópia de segurança&lt;/strong&gt; é &lt;strong&gt;feita via rede&lt;/strong&gt;. Na própria rede local de computadores, o &lt;strong&gt;administrador&lt;/strong&gt; ou o &lt;strong&gt;responsável&lt;/strong&gt; pela &lt;strong&gt;cópia de segurança grava os dados em um formato de arquivo&lt;/strong&gt;, processa e distribui as partes constituintes da cópia nos computadores da rede, de forma segura (&lt;strong&gt;arquivos são protegidos&lt;/strong&gt;), &lt;strong&gt;criptografada&lt;/strong&gt; &lt;strong&gt;(para não haver extração ou acesso aos dados na forma original&lt;/strong&gt;) e &lt;strong&gt;oculta&lt;/strong&gt; (&lt;strong&gt;na maioria das vezes o arquivo é ocultado&lt;/strong&gt;).&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom &lt;strong&gt;Backups&lt;/strong&gt; é um meio de &lt;strong&gt;salvar as informaçãos&lt;/strong&gt; para não obter a perca da &lt;strong&gt;Base de Dados&lt;/strong&gt; do sistema ou qualquer aplicativo que obtenho informações é isso ai haha.&lt;/span&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Concluindo&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom é isto ai a &lt;strong&gt;Segurança&lt;/strong&gt; de um &lt;strong&gt;Banco de Dado&lt;/strong&gt;s ela contem estes procedimento básico qualquer um &lt;strong&gt;Banco de Dados&lt;/strong&gt; embreve irei citar mais sobre as &lt;strong&gt;Segurança&lt;/strong&gt;s voltada a cada especifico tipo de &lt;strong&gt;Banco como&lt;/strong&gt; exeplo &lt;strong&gt;PostgreSQL&lt;/strong&gt;, &lt;strong&gt;MySQL&lt;/strong&gt;, &lt;strong&gt;Oracle&lt;/strong&gt;, &lt;strong&gt;Firebird&lt;/strong&gt; e enfim muitos outros e também irei citar &lt;/span&gt;&lt;span style="font-family:arial;"&gt;outros meio como &lt;strong&gt;Invasão&lt;/strong&gt; e &lt;strong&gt;Vulnarabilidades&lt;/strong&gt; aos &lt;strong&gt;Banco de Dados&lt;/strong&gt; mas em outra catégoria ai está o link (&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Invasões aos Banco de Dados &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;e as&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Vulnerabilidade aos Banco de Dados&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;). É isso ai espero que gostem.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-776172604757900090?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/776172604757900090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/776172604757900090'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/01/seguranca-de-banco-de-dados.html' title='Segurança de Banco de Dados'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_W4mx9wreaj4/S2WmzgQX6-I/AAAAAAAAAFo/gByEcFWdON0/s72-c/cadeado.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-4646099833792906045</id><published>2010-01-31T07:28:00.001-08:00</published><updated>2010-01-31T07:33:25.093-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><title type='text'>MySQL Proxy</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_W4mx9wreaj4/S2WhucIsD6I/AAAAAAAAAFg/U38dPt2CYm8/s1600-h/MySQL_Proxy.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 275px; height: 320px;" src="http://1.bp.blogspot.com/_W4mx9wreaj4/S2WhucIsD6I/AAAAAAAAAFg/U38dPt2CYm8/s320/MySQL_Proxy.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5432926344691060642" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom hoje irei falar um pouquinho sobre o &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;MySQL Proxy&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; é uma aplicação, em fase inicial, que você instala entre sua aplicação e o &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;MySQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;.&lt;br /&gt;&lt;br /&gt;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 &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;querys&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;filtros e modificações de querys&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; e muito mais.&lt;br /&gt;&lt;br /&gt;Disponível para &lt;strong&gt;Linux&lt;/strong&gt;, &lt;strong&gt;Mac OSX&lt;/strong&gt;, &lt;strong&gt;FreeBS&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;D&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, &lt;strong&gt;IBM AIX&lt;/strong&gt; e &lt;strong&gt;Sun Solaris&lt;/strong&gt;, isso mesmo, para &lt;strong&gt;Windows&lt;/strong&gt; ainda não esta disponível por ter problemas com uma biblioteca &lt;strong&gt;libevent&lt;/strong&gt;, porém em breve estará disponível também.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom isto ai é um ele é um &lt;strong&gt;Otimizador de Banco de Dados &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;muito bom.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Downloads: &lt;strong&gt;&lt;a href="http://forge.mysql.com/wiki/MySQL_Proxy"&gt;MySQL Proxy&lt;/a&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-4646099833792906045?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/4646099833792906045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/4646099833792906045'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/01/mysql-proxy.html' title='MySQL Proxy'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_W4mx9wreaj4/S2WhucIsD6I/AAAAAAAAAFg/U38dPt2CYm8/s72-c/MySQL_Proxy.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-7771357031335630796</id><published>2010-01-30T06:52:00.000-08:00</published><updated>2010-01-30T08:00:56.171-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercícios de SQL'/><title type='text'>Exercícios de SQL</title><content type='html'>&lt;p align="center"&gt;&lt;span style="font-family:arial;"&gt;Bom vou passar uns&lt;strong&gt;  Exercícios de &lt;/strong&gt;&lt;strong&gt;SQL&lt;/strong&gt; de acordo com as duas tabelas a abaixo... Vamos lá&lt;/span&gt;&lt;/p&gt;&lt;div align="center"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 326px; height: 140px;" src="http://3.bp.blogspot.com/_W4mx9wreaj4/S2RQLtLOR9I/AAAAAAAAAFQ/oNHJ9-6R_Jk/s400/tabela+de+cds.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5432555212551112658" /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 324px; height: 123px;" src="http://3.bp.blogspot.com/_W4mx9wreaj4/S2RQSZP_4bI/AAAAAAAAAFY/lB2Zvj5XKz0/s400/tabela+de+musicas.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5432555327461515698" /&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-family:arial;"&gt;Bom por primeiro vocês vejam as tabelas de acordo com os dados referentes a cada campo.&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;Um comando SQL é sempre na sequência não utilize a quebra de linha.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;1º)  Mostrar todos os cds&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;code&gt;&lt;span style="font-family:arial;"&gt;Select * from cds&lt;/span&gt;&lt;/code&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;2º)  Mostrar os campos nome e data da compra dos cds ordenados por nome&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;code&gt;&lt;span style="font-family:arial;"&gt;Select Nome, DataCompra From Cds Order By Nome&lt;/span&gt;&lt;/code&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;3º) Mostrar os campos nome e data da compra dos cds classificados por data de compra em ordem decrescente&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;code&gt;&lt;span style="font-family:arial;"&gt;Select Nome, DataCompra From Cds Order By DataCompra Desc&lt;/span&gt;&lt;/code&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;4º) Mostrar o total gasto com a compra dos Cds&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;code&gt;&lt;span style="font-family:arial;"&gt;Select Sum(ValorPago) as Total From Cds&lt;/span&gt;&lt;/code&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;5º) Mostrar todas as músicas (todos os campos) do cds código 1&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;code&gt;&lt;span style="font-family:arial;"&gt;Select * From Musicas Where CodCd=1&lt;/span&gt;&lt;/code&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;6º) Mostrar o nome do Cd e o nome das músicas de todos Cds&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;code&gt;&lt;span style="font-family:arial;"&gt;Select c.Nome, m.Nome From Cds c, Musicas m Where c.Codigo=m.CodigoCd&lt;/span&gt;&lt;/code&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;7º) Mostre o nome e o artista de todas músicas cadastradas&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;code&gt;&lt;span style="font-family:arial;"&gt;Select Nome, Artista From Musicas&lt;/span&gt;&lt;/code&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;8º) Mostre o tempo total de músicas cadastradas&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;code&gt;&lt;span style="font-family:arial;"&gt;Select Sum(Tempo) Total From Musicas&lt;/span&gt;&lt;/code&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;9º) Mostre o número, nome e tempo das músicas do cd 5 em ordem de número&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;code&gt;&lt;span style="font-family:arial;"&gt;Select Numero, Nome, Tempo From Musicas Where CodigoCd=5 Order By Numero&lt;/span&gt;&lt;/code&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;10º) Mostre o tempo total de músicas por cd&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;code&gt;&lt;span style="font-family:arial;"&gt;Select c.Nome, Sum(m.Tempo) as Total From Cds c, Musicas m Where c.Codigo=m.CodigoCd Group By c.Nome&lt;/span&gt;&lt;/code&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;11º) Mostre a quantidade de músicas cadastradas&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;code&gt;Select Count(*) as Qtde From Musicas&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;12º) Mostre a média de duração das músicas cadastradas&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;code&gt;Select AVG(Tempo) as Media From Musicas&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;13º) Mostre a quantidade de Cds&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;code&gt;Select Count(*) as Qtde From Cds&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;14º) Mostre o nome das músicas do artista José Pedro&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;code&gt;Select Nome From Musicas Where Nome='José Pedro'&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;15º) Mostre a quantidade de músicas por cds&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;code&gt;Select c.Nome, Count(*) as Qtde From Cds c, Musicas m Where c.Codigo=m.CodigoCd Group By c.Nome&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;16º) Mostre o nome de todos cds comprados no Submarino&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;code&gt;Select Nome From Cds Where LocalCompra='Submarino'&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;17º) Mostre o nome do cd e o nome da primeira músicas de todos cds&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;code&gt;Select c.Nome, m.Nome From Cds c, Musicas m Where c.Codigo=m.CodigoCd And m.Numero=1&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;18º) Mostre uma listagens de músicas em ordem alfabética&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;code&gt;Select * From Musicas Order By Nome&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;19º) Mostrar todos os cds que são albuns&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;code&gt;Select * From Cds Where Album=True&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;20º) Mostre o cd que custou mais caro&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;code&gt;Select Max(ValorPago) From Cds&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom é isso ai uns exemplos fácil de comandos &lt;strong&gt;SQL&lt;/strong&gt; de &lt;strong&gt;Select &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;espero que tenha ajudado com alguma coisa. É isso ai so práticar agora.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-7771357031335630796?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/7771357031335630796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/7771357031335630796'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/01/exercicios-de-sql.html' title='Exercícios de SQL'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_W4mx9wreaj4/S2RQLtLOR9I/AAAAAAAAAFQ/oNHJ9-6R_Jk/s72-c/tabela+de+cds.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-8873481333846083925</id><published>2010-01-29T13:03:00.000-08:00</published><updated>2010-01-31T10:38:59.899-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Histórias dos Bancos'/><title type='text'>História Sybase</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_W4mx9wreaj4/S2NOWYVmjDI/AAAAAAAAAEY/bRqPGoMfvJ8/s1600-h/sybase_use.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5432271721936096306" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 200px; CURSOR: hand; HEIGHT: 150px" alt="" src="http://1.bp.blogspot.com/_W4mx9wreaj4/S2NOWYVmjDI/AAAAAAAAAEY/bRqPGoMfvJ8/s200/sybase_use.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom falar sobre &lt;strong&gt;Sybase&lt;/strong&gt; &lt;strong&gt;Inc&lt;/strong&gt;. ela é uma empresa de software que produz serviços e produtos relacionados ao gerenciamento de &lt;strong&gt;informação&lt;/strong&gt;, &lt;strong&gt;mobilidade&lt;/strong&gt;, &lt;strong&gt;messaging&lt;/strong&gt;, &lt;strong&gt;ferramentas de desenvolvimento&lt;/strong&gt; e &lt;strong&gt;data warehousing&lt;/strong&gt; e &lt;strong&gt;OLAP&lt;/strong&gt;. Desde &lt;strong&gt;1984&lt;/strong&gt;, a &lt;strong&gt;Sybase&lt;/strong&gt; tem sido líder inovadora no desenvolvimento de tecnologia de &lt;strong&gt;Bancos de Dados&lt;/strong&gt; e ainda mantém um significativo crescimento de negócios acerca de seu &lt;strong&gt;banco relacional&lt;/strong&gt;, o &lt;strong&gt;Adaptive Server Enterprise&lt;/strong&gt;. Sua base global de clientes inclui &lt;strong&gt;80 &lt;/strong&gt;dos Fortune &lt;strong&gt;100&lt;/strong&gt; e uma forte presença em mercados verticais como o de &lt;strong&gt;serviços financeiros&lt;/strong&gt;, &lt;strong&gt;telecomunicações, saúde e governo&lt;/strong&gt;.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom ela a &lt;strong&gt;Sybase&lt;/strong&gt; foi fundada por &lt;strong&gt;Mark Hoffman&lt;/strong&gt; e &lt;strong&gt;Bob Epstein&lt;/strong&gt; em &lt;strong&gt;1984&lt;/strong&gt;, em &lt;strong&gt;Berkeley&lt;/strong&gt;, na &lt;strong&gt;Califórnia&lt;/strong&gt;. Em &lt;strong&gt;1988&lt;/strong&gt; foi a primeira no mercado a fornecer um banco de dados relacional com arquitetura &lt;strong&gt;cliente/servidor&lt;/strong&gt; (ao &lt;strong&gt;Human Genome Project&lt;/strong&gt;) e em &lt;strong&gt;1990&lt;/strong&gt; inovou novamente, apresentando ao mercado a sua &lt;strong&gt;tecnologia de replicação aberta&lt;/strong&gt;.&lt;br /&gt;&lt;strong&gt;Sybase&lt;/strong&gt; uniu-se à &lt;strong&gt;Microsoft&lt;/strong&gt; em um acordo em que compartilhariam o código do seu servidor de &lt;strong&gt;banco de dados&lt;/strong&gt;, então chamado de &lt;strong&gt;Sybase SQL&lt;/strong&gt; &lt;strong&gt;Server&lt;/strong&gt;. Até a versão &lt;strong&gt;4.9 Sybase&lt;/strong&gt; e &lt;strong&gt;Microsoft SQL Server&lt;/strong&gt; eram virtualmente idênticos; devido a desentendimentos entre as duas empresas quanto à divisão de receita, decidiram separar-se e hoje poucos traços de herança desta época podem-se notar.&lt;br /&gt;Em &lt;strong&gt;1995&lt;/strong&gt; liderava no mercado de ferramentas de desenvolvimento &lt;strong&gt;cliente/servidor&lt;/strong&gt; com o &lt;strong&gt;PowerBuilder&lt;/strong&gt; e, em &lt;strong&gt;1998&lt;/strong&gt;, tinha mais de &lt;strong&gt;5 milhões&lt;/strong&gt; de estações&lt;strong&gt; licenciadas em SQL Anywhere&lt;/strong&gt;. Tornou-se líder nos segmentos bancário, de corretagem e mercado de capitais.&lt;br /&gt;Em &lt;strong&gt;2000,&lt;/strong&gt; &lt;strong&gt;Sybase&lt;/strong&gt; foi a primeira empresa a apresentar um servidor de aplicações&lt;strong&gt; J2EE&lt;/strong&gt;.&lt;br /&gt;Em &lt;strong&gt;2003&lt;/strong&gt;, lançou a sua estratégia “&lt;strong&gt;Unwired Enterprise&lt;/strong&gt;”, cuja visão é constituída por permitir às empresas estender a sua informação com segurança e torná-la útil para as pessoas em qualquer lugar, usando qualquer dispositivo. A &lt;strong&gt;Sybase&lt;/strong&gt; expandiu seus negócios através de aquisições como a &lt;strong&gt;AvantGo&lt;/strong&gt;, englobando-a nos negócios de sua subsidiária iAnywhere, assim como, em &lt;strong&gt;2005&lt;/strong&gt;, a &lt;strong&gt;Extended Systems&lt;/strong&gt;, entre outras. Em&lt;strong&gt; 2006&lt;/strong&gt; a &lt;strong&gt;Sybase&lt;/strong&gt; adquiriu a &lt;strong&gt;Mobile&lt;/strong&gt; &lt;strong&gt;365&lt;/strong&gt; e criou a &lt;strong&gt;Sybase 365&lt;/strong&gt; e esta combinação fez com que a &lt;strong&gt;Sybase &lt;/strong&gt;se tornasse o maior provedor de &lt;strong&gt;software&lt;/strong&gt; e serviços do mundo, entregando, no mesmo ano, o número recordista de &lt;strong&gt;25 bilhões&lt;/strong&gt; de &lt;strong&gt;mensagens móveis&lt;/strong&gt;.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;A Sybase hoje&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Hoje ela em &lt;strong&gt;DUBLIN, CALIF&lt;/strong&gt;. - 22 de dezembro de 2009 - A &lt;strong&gt;Sybase&lt;/strong&gt;, &lt;strong&gt;Inc&lt;/strong&gt;. (&lt;strong&gt;NYSE: SY&lt;/strong&gt;), uma empresa líder no fornecimento empresariais e &lt;strong&gt;software&lt;/strong&gt; móvel, anunciou hoje parceria impulso significativo ao longo de &lt;strong&gt;2009&lt;/strong&gt; de apoio a &lt;strong&gt;Unwired Enterprise Vision&lt;/strong&gt;. A empresa está pronta para entrar &lt;strong&gt;2010 &lt;/strong&gt;ampliando ainda mais a disponibilidade da indústria mais robusta, plataforma empresarial comprovada móvel, &lt;strong&gt;IP&lt;/strong&gt; móvel e ofertas de comércio móvel com um extenso ecossistema de parceria global que inclui a &lt;strong&gt;SAP&lt;/strong&gt;, &lt;strong&gt;Samsung&lt;/strong&gt;, &lt;strong&gt;Siemens&lt;/strong&gt; &lt;strong&gt;Enterprise Communications&lt;/strong&gt; (&lt;strong&gt;SEN&lt;/strong&gt;), &lt;strong&gt;Verizon e IBM&lt;/strong&gt; .&lt;br /&gt;Em ambos os mercados desenvolvidos e emergentes, estas alianças capacitar milhões de trabalhadores da informação móvel com acesso seguro e em tempo real para aplicações empresariais críticas. As parcerias respectivos também acelerar a implantação de soluções &lt;strong&gt;end-to-end&lt;/strong&gt; para &lt;strong&gt;mBanking&lt;/strong&gt;, &lt;strong&gt;mPayments&lt;/strong&gt; e &lt;strong&gt;mRemittance&lt;/strong&gt;, bem como a condução de novas e inovadoras hospedado / ofertas de serviços gerenciados, incluindo os de elevado valor &lt;strong&gt;4G&lt;/strong&gt; serviços. Além disso, a &lt;strong&gt;Sybase&lt;/strong&gt; está na vanguarda da evolução ao &lt;strong&gt;Mobile IP&lt;/strong&gt; com o lançamento do primeiro serviço de &lt;strong&gt;voz IPX&lt;/strong&gt; em &lt;strong&gt;2009&lt;/strong&gt; com a &lt;strong&gt;Telecom Nova Zelândia International&lt;/strong&gt;, e está preparado para oferecer uma variedade de serviços de próxima geração, em &lt;strong&gt;2010&lt;/strong&gt;.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Pelo fato da minha pesquisa eu me deparei com a &lt;strong&gt;Sybase&lt;/strong&gt;, a &lt;strong&gt;Sybase 365&lt;/strong&gt;, &lt;strong&gt;iAnywhere&lt;/strong&gt; são as marcas registradas da &lt;strong&gt;Sybase, Inc. ® &lt;/strong&gt;indica registro nos &lt;strong&gt;Estados Unidos da América&lt;/strong&gt;. Todos os outros nomes de produtos mencionados podem ser marcas comerciais das respectivas empresas com as quais estão associadas e pelo que li eu recomendo quem tiver oportunidade é a &lt;strong&gt;Sybase&lt;/strong&gt; tem uma alta tecnoligia de &lt;strong&gt;Banco de Dados&lt;/strong&gt; que vem com a evolução acompanhando muioto rápido.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-8873481333846083925?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/8873481333846083925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/8873481333846083925'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/01/historia-sybase.html' title='História Sybase'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_W4mx9wreaj4/S2NOWYVmjDI/AAAAAAAAAEY/bRqPGoMfvJ8/s72-c/sybase_use.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-8817257462375986058</id><published>2010-01-29T12:33:00.001-08:00</published><updated>2010-01-29T12:50:01.546-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Histórias dos Bancos'/><title type='text'>História DB2</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_W4mx9wreaj4/S2NGgYG0UrI/AAAAAAAAAEQ/qJ7UYpJaSZI/s1600-h/db2logo.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5432263097579754162" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 200px; CURSOR: hand; HEIGHT: 52px" alt="" src="http://3.bp.blogspot.com/_W4mx9wreaj4/S2NGgYG0UrI/AAAAAAAAAEQ/qJ7UYpJaSZI/s200/db2logo.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Vou falar um pouco hoje sobre o &lt;strong&gt;Banco de Dados DB2&lt;/strong&gt; ele é o &lt;strong&gt;Sistema Gerenciador de Banco de Dados Relacionais&lt;/strong&gt; (&lt;strong&gt;SGDBR)&lt;/strong&gt; produzido pela &lt;strong&gt;IBM&lt;/strong&gt;. Existem diferentes versões do &lt;strong&gt;DB2&lt;/strong&gt; que rodam desde num simples &lt;strong&gt;PDAcomputador&lt;/strong&gt; de mão, até em potentes mainframes e funcionam em servidores baseados em sistemas &lt;strong&gt;Unix&lt;/strong&gt;, &lt;strong&gt;Windows&lt;/strong&gt;, ou &lt;strong&gt;Linux&lt;/strong&gt;.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;O nome &lt;strong&gt;DB2&lt;/strong&gt; foi dado para o &lt;strong&gt;Sistema de Gerenciamento de Banco de Dados&lt;/strong&gt; que a &lt;strong&gt;IBM &lt;/strong&gt;lançou em &lt;strong&gt;1983&lt;/strong&gt; baseado em &lt;strong&gt;SQL/DS&lt;/strong&gt; para seu mainframe. A principio o produto foi chamado &lt;strong&gt;System R&lt;/strong&gt; que fora iniciado em &lt;strong&gt;1978.&lt;/strong&gt; O projeto &lt;strong&gt;DB2&lt;/strong&gt; começou no inicio dos &lt;strong&gt;anos 70&lt;/strong&gt; quando &lt;strong&gt;Edgar Frank Codd&lt;/strong&gt;, trabalhando para&lt;strong&gt; IBM&lt;/strong&gt; descreveu a teoria dos &lt;strong&gt;Banco de Dados Relacionais&lt;/strong&gt; e publicou sua teoria em &lt;strong&gt;Junho de 1970&lt;/strong&gt;. Para aplicar o modelo, &lt;strong&gt;Codd&lt;/strong&gt; criou uma &lt;strong&gt;Linguagem de Banco de Dados Relacionais&lt;/strong&gt; que a chamou de &lt;strong&gt;Alpha&lt;/strong&gt;. Entretanto, a &lt;strong&gt;IBM&lt;/strong&gt; não acreditava no potencial das suas idéias, deixando-o fora da supervisão do grupo de programadores, que violaram diversas idéias fundamentais do modelo relacional de &lt;strong&gt;Codd&lt;/strong&gt;. O resultado foi a linguagem &lt;strong&gt;SEQUEL&lt;/strong&gt;, que depois foi mudado para seu acrônimo &lt;strong&gt;SQL&lt;/strong&gt; porque &lt;strong&gt;SEQUEL&lt;/strong&gt; já era uma marca registrada.&lt;br /&gt;Por muitos anos, &lt;strong&gt;DB2&lt;/strong&gt; foi feito exclusivamente para rodar nos mainframes da &lt;strong&gt;IBM.&lt;/strong&gt; Posteriormente a &lt;strong&gt;IBM&lt;/strong&gt; introduziu o &lt;strong&gt;DB2&lt;/strong&gt; para outras plataformas de servidores, incluindo o Unix e o &lt;strong&gt;Windows&lt;/strong&gt;, para então colocar no&lt;strong&gt; Linux&lt;/strong&gt; e &lt;strong&gt;PDAs&lt;/strong&gt;. Esse processo foi feito na &lt;strong&gt;década 90&lt;/strong&gt;. A inspiração para os detalhes de implementação do &lt;strong&gt;DB2&lt;/strong&gt; vieram da linguagem &lt;strong&gt;DL/1&lt;/strong&gt; da &lt;strong&gt;IBM&lt;/strong&gt; e do &lt;strong&gt;Sistema de Gerenciamento&lt;/strong&gt; de Informações também dessa empresa. As novas versões já são avaliadas para &lt;strong&gt;OS/2&lt;/strong&gt; e é chamada &lt;strong&gt;DB2/2&lt;/strong&gt;.&lt;br /&gt;Na metade do ano de &lt;strong&gt;2006&lt;/strong&gt;, a &lt;strong&gt;IBM&lt;/strong&gt; anunciou o “&lt;strong&gt;Viper&lt;/strong&gt;”, o codinome do &lt;strong&gt;DB2 9&lt;/strong&gt; para computação distribuídas e para &lt;strong&gt;DB2 9 no z/OS&lt;/strong&gt;. A empresa diz que o novo &lt;strong&gt;DB2&lt;/strong&gt; será o primeiro &lt;strong&gt;Banco de Dados Relacional&lt;/strong&gt; que armazena o &lt;strong&gt;XML&lt;/strong&gt; nativo. Outros recursos incluem o desenvolvimento baseado em &lt;strong&gt;OLTP&lt;/strong&gt; para computação distribuídas, o desenvolvimento baseado em &lt;strong&gt;Business intelligence&lt;/strong&gt; e &lt;strong&gt;data warehousing&lt;/strong&gt; para &lt;strong&gt;z\OS&lt;/strong&gt;, mais recursos de auto configuração e auto gerenciamento, adição de recursos para a plataforma &lt;strong&gt;64-bits&lt;/strong&gt; (especialmente para &lt;strong&gt;z/OS&lt;/strong&gt;), melhoria na performance do armazenamento estruturado para &lt;strong&gt;z/OS&lt;/strong&gt; e a continuação da padronização do vocabulário da &lt;strong&gt;linguagem SQL&lt;/strong&gt; entre &lt;strong&gt;z/OS&lt;/strong&gt; e outras computação distribuídas.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;O DB2 hoje&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;DB2&lt;/strong&gt; é vendida em diversos tipos de “&lt;strong&gt;edições&lt;/strong&gt;” ou licenças. Pela escolha de uma versão com menos recursos, a &lt;strong&gt;IBM&lt;/strong&gt; evita que os consumidores paguem por coisas que não iriam usar. Alguns exemplos de edição são a &lt;strong&gt;Express, Workgroup&lt;/strong&gt; e a &lt;strong&gt;Edição Enterprise&lt;/strong&gt;. A edição mais sofisticada para &lt;strong&gt;Linux/UNIX/Windows&lt;/strong&gt; é o &lt;strong&gt;DB2&lt;/strong&gt; &lt;strong&gt;Data Warehouse Entreprise Edition&lt;/strong&gt;, ou &lt;strong&gt;DB2 DWE&lt;/strong&gt;.&lt;br /&gt;&lt;strong&gt;DB2&lt;/strong&gt; para &lt;strong&gt;Z/OS&lt;/strong&gt; é vendido em sua &lt;strong&gt;própria licença&lt;/strong&gt;. Começando com a &lt;strong&gt;versão 8&lt;/strong&gt;, a &lt;strong&gt;IBM &lt;/strong&gt;vendeu o &lt;strong&gt;DB2&lt;/strong&gt; para &lt;strong&gt;z/OS&lt;/strong&gt; e outros sistemas com característica muito próximas.&lt;strong&gt;DB2&lt;/strong&gt; para esse sistema tem algumas característica exclusivas: Segurança &lt;strong&gt;Multi-Level&lt;/strong&gt;, tabelas de tamanhos extremamente grandes e compressão a nível de hardware. &lt;strong&gt;DB2&lt;/strong&gt; para &lt;strong&gt;z/OS&lt;/strong&gt; foi sempre conhecido pela sua liderança de performance &lt;strong&gt;OLTP&lt;/strong&gt; e é usado para suportar missões críticas nas operações de negócios, mas agora a &lt;strong&gt;versão z/OS&lt;/strong&gt; está começando a adquirir característica &lt;strong&gt;Business intelligence.&lt;/strong&gt;&lt;br /&gt;Em &lt;strong&gt;30 de Janeiro de 2006&lt;/strong&gt;, a &lt;strong&gt;IBM&lt;/strong&gt; lançou uma &lt;strong&gt;versão do DB2&lt;/strong&gt; chamada &lt;strong&gt;DB2 9 Express-C&lt;/strong&gt;. Essa foi a resposta para os recentes pronunciamentos de versões gratuitas do &lt;strong&gt;Oracle&lt;/strong&gt; e da &lt;strong&gt;Microsoft SQL Server&lt;/strong&gt;.&lt;strong&gt; Express-C&lt;/strong&gt; não terá limite no número de usuários e do tamanho do banco de dados. Foi desenvolvido para máquinas com &lt;strong&gt;sistema Windows&lt;/strong&gt; e &lt;strong&gt;Linux&lt;/strong&gt; até &lt;strong&gt;2 processadores&lt;/strong&gt; e até &lt;strong&gt;4GB de memória&lt;/strong&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;O DB2 eu recomendo um banco exelente assim para Sistemas ele possui caracteristicas ótimas assim mesmo obtendo uma segurança muito boa.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-8817257462375986058?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/8817257462375986058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/8817257462375986058'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/01/historia-db2.html' title='História DB2'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_W4mx9wreaj4/S2NGgYG0UrI/AAAAAAAAAEQ/qJ7UYpJaSZI/s72-c/db2logo.gif' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-7515516350593219778</id><published>2010-01-29T12:07:00.000-08:00</published><updated>2010-01-29T12:21:24.087-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Histórias dos Bancos'/><title type='text'>História Oracle</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_W4mx9wreaj4/S2NCorYr9kI/AAAAAAAAAEI/r7Ree1rqibA/s1600-h/oracle.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5432258842147419714" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 200px; CURSOR: hand; HEIGHT: 104px" alt="" src="http://3.bp.blogspot.com/_W4mx9wreaj4/S2NCorYr9kI/AAAAAAAAAEI/r7Ree1rqibA/s200/oracle.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Estou comentando também da história do &lt;strong&gt;Bando de Dados Oracle&lt;/strong&gt; é um &lt;strong&gt;SGBD&lt;/strong&gt; (&lt;strong&gt;sistema gerenciador de banco de dados&lt;/strong&gt;) que surgiu no fim dos &lt;strong&gt;anos 70&lt;/strong&gt;, quando &lt;strong&gt;Larry Ellison&lt;/strong&gt; vislumbrou uma oportunidade que outras companhias não haviam percebido, quando encontrou uma descrição de um protótipo funcional de um &lt;strong&gt;Banco de Dados Relacional&lt;/strong&gt; e descobriu que nenhuma empresa tinha se empenhado em comercializar essa tecnologia.&lt;br /&gt;&lt;strong&gt;Ellison&lt;/strong&gt; e os &lt;strong&gt;co-fundadores&lt;/strong&gt; da &lt;strong&gt;Oracle Corporation&lt;/strong&gt;, &lt;strong&gt;Bob Miner e Ed Oates&lt;/strong&gt;, perceberam que havia um tremendo potencial de negócios no modelo de banco de dados relacional tornando assim a maior empresa de software empresarial do mundo.&lt;br /&gt;O &lt;strong&gt;SGBD&lt;/strong&gt; da &lt;strong&gt;Oracle&lt;/strong&gt; é líder de mercado. O &lt;strong&gt;Oracle&lt;/strong&gt; &lt;strong&gt;9i&lt;/strong&gt; foi pioneiro no suporte ao modelo web. O &lt;strong&gt;Oracle 10g&lt;/strong&gt;, mais recente, se baseia na tecnologia de &lt;strong&gt;grid&lt;/strong&gt;. Recentemente fora lançado o &lt;strong&gt;Oracle 11g&lt;/strong&gt; que veio com melhorias em relação ao &lt;strong&gt;Oracle 10g&lt;/strong&gt;.&lt;br /&gt;Além da &lt;strong&gt;Base de Dados&lt;/strong&gt;, a &lt;strong&gt;Oracle&lt;/strong&gt; desenvolve uma suíte de desenvolvimento chamada de &lt;strong&gt;Oracle Developer Suite&lt;/strong&gt;, utilizada na construção de programas de computador que interagem com a sua base de dados.&lt;br /&gt;A &lt;strong&gt;Oracle&lt;/strong&gt; também criou a linguagem de programação &lt;strong&gt;PL/SQL&lt;/strong&gt;, utilizada no processamento de transações.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;strong&gt;O Oracle hoje&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Ele é desenvolvido em &lt;strong&gt;NOVA YORK&lt;/strong&gt;, &lt;strong&gt;EUA&lt;/strong&gt; e atualmente a ultima versão dele foi 2007 veja o lançamento: &lt;/span&gt;&lt;a href="http://www.oracle.com/features/hp/oracle-database-11g.html"&gt;&lt;span style="font-family:arial;"&gt;http://www.oracle.com/features/hp/oracle-database-11g.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Bom o Oracle continua com a versão do &lt;strong&gt;Oracle® 11g&lt;/strong&gt;, é a última no momento ainda está versão do &lt;strong&gt;Banco de Dados &lt;/strong&gt;mais popular do mundo. Com mais de &lt;strong&gt;400 recursos&lt;/strong&gt;, &lt;strong&gt;15 milhões de horas de testes e 36.000 pessoa/meses de desenvolvimento&lt;/strong&gt;, o &lt;strong&gt;banco de dados Oracle® 11g&lt;/strong&gt; destaca-se como o &lt;strong&gt;software&lt;/strong&gt; mais inovador e de mais alta qualidade já lançado pela &lt;strong&gt;Oracle&lt;/strong&gt;.&lt;br /&gt;"O &lt;strong&gt;banco de dados Oracle® 11g&lt;/strong&gt;, construído com &lt;strong&gt;30 anos&lt;/strong&gt; de experiência em &lt;strong&gt;design&lt;/strong&gt;, oferece recursos de última geração para gerenciamento de informações empresariais", afirma &lt;strong&gt;Andy Mendelsohn&lt;/strong&gt;, vice-presidente sênior de &lt;strong&gt;Tecnologias de Servidor de Banco de Dados da Oracle&lt;/strong&gt;. "Mais do que nunca, nossos clientes enfrentam desafios, tais como rápido crescimento dos dados, aumento da integração entre eles e pressões no custo da tecnologia para conectividade. O &lt;strong&gt;Banco de Dados Oracle 10g&lt;/strong&gt; foi pioneiro em &lt;strong&gt;grid&lt;/strong&gt; computing e mais da metade dos clientes Oracle migraram para essa versão. Agora, o &lt;strong&gt;Banco de Dados Oracle® 11g&lt;/strong&gt; oferece os recursos que nossos clientes solicitaram para acelerar a ampla adoção e crescimento dos &lt;strong&gt;grids Oracle&lt;/strong&gt;, representando uma inovação real, que se volta para desafios reais, trazidos até nós por clientes reais", completa.&lt;br /&gt;Com o &lt;strong&gt;Banco de Dados&lt;/strong&gt; &lt;strong&gt;Oracle® 11g&lt;/strong&gt;, as organizações poderão assumir o controle de suas informações empresariais, ter uma melhor visão dos negócios e adaptar-se com rapidez a um ambiente competitivo que passa por grandes mudanças. A nova versão aumenta a capacidade de &lt;strong&gt;Cluster de Banco de Dados&lt;/strong&gt;, além de acelerar a automação do data center e o gerenciamento da carga de trabalho. Com grids seguros, altamente disponíveis e escaláveis de servidores e armazenamento de baixo custo, os clientes &lt;strong&gt;Oracle&lt;/strong&gt; têm suporte para as aplicações mais exigentes de processamento de transações, data warehousing e gestão de conteúdo.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Bom está pesquisa minha eu achei interessante que está linguagem ja vem de anos e anos mas pena que eu não tive o previlégio de testar mas eu recomendo de 30 anos de desenvolvimento deve ter algo bem difente aos outros &lt;strong&gt;Banco de Dados&lt;/strong&gt; (&lt;strong&gt;BD&lt;/strong&gt;).&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-7515516350593219778?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/7515516350593219778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/7515516350593219778'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/01/historia-oracle.html' title='História Oracle'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_W4mx9wreaj4/S2NCorYr9kI/AAAAAAAAAEI/r7Ree1rqibA/s72-c/oracle.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-7755363987034257017</id><published>2010-01-29T10:53:00.001-08:00</published><updated>2010-01-29T11:16:03.318-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Histórias dos Bancos'/><title type='text'>História Microsoft Access</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_W4mx9wreaj4/S2Mv1H_YSBI/AAAAAAAAAEA/z5GAdiijQ9M/s1600-h/macesse.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5432238165263403026" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 200px; CURSOR: hand; HEIGHT: 65px" alt="" src="http://2.bp.blogspot.com/_W4mx9wreaj4/S2Mv1H_YSBI/AAAAAAAAAEA/z5GAdiijQ9M/s200/macesse.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Hoje irei falar sobre um &lt;strong&gt;software&lt;/strong&gt; da &lt;strong&gt;Microsoft &lt;/strong&gt;chamado &lt;strong&gt;Microsoft Access&lt;/strong&gt; (nome completo &lt;strong&gt;Microsoft Office Access&lt;/strong&gt;), também conhecido por &lt;strong&gt;MSAcces&lt;/strong&gt;s, é um &lt;strong&gt;Sistema de Gerenciamento de Banco de Dados&lt;/strong&gt; da &lt;strong&gt;Microsoft&lt;/strong&gt;, incluído no pacote do &lt;strong&gt;Microsoft Office Professional&lt;/strong&gt;, que combina o &lt;strong&gt;Microsoft Jet Database Engine&lt;/strong&gt; com uma interface gráfica do utilizador (&lt;strong&gt;graphical user interface&lt;/strong&gt;). Ele permite o desenvolvimento rápido de aplicações que envolvem tanto a modelagem e estrutura de dados como também a interface a ser utilizada pelos usuários.&lt;br /&gt;&lt;strong&gt;Microsoft Access&lt;/strong&gt; é capaz de usar dados guardados em &lt;strong&gt;Access/Jet, Microsoft SQL Server&lt;/strong&gt;, &lt;strong&gt;Oracle&lt;/strong&gt;, ou qualquer recipiente de dados compatível com&lt;strong&gt; ODBC&lt;/strong&gt;.&lt;br /&gt;O desenvolvimento da estrutura de dados se dá de forma muito intuitiva, bastando que o desenvolvedor possua conhecimetos básicos em modelagem de dados e lógica de programação.&lt;br /&gt;Programadores relativamente inexperientes e usuários determinados podem usá-lo para construir aplicações simples, sem a necessidade de utilizar ferramentas desconhecidas.&lt;br /&gt;&lt;strong&gt;Primeiramente&lt;/strong&gt; foi o nome de um programa de comunicação da &lt;strong&gt;Microsoft&lt;/strong&gt;, destinado à competir com &lt;strong&gt;ProComm&lt;/strong&gt; e outros programas. Esse produto fracassou e foi abandonado. No segundo semestre de 1992 a Microsoft lançou seu primeiro &lt;strong&gt;Sistema de Gerenciamento de Banco de Dados&lt;/strong&gt; e reusou o nome: o &lt;strong&gt;Microsoft Access&lt;/strong&gt; (&lt;strong&gt;MS Access&lt;/strong&gt;).&lt;br /&gt;Para a Microsoft havia uma grande vantagem quanto ao mercado, como era a dominadora do seu próprio mercado, foi a primeira a lançar um &lt;strong&gt;software&lt;/strong&gt; executável em plataforma &lt;strong&gt;Windows&lt;/strong&gt;, enquanto que os outros programas deste segmento, liderados pela &lt;strong&gt;dBa-se&lt;/strong&gt;, eram voltados para o ambiente &lt;strong&gt;DOS&lt;/strong&gt;. Ao ser lançado por um preço bastante atrativo o &lt;strong&gt;MS Access 1.0&lt;/strong&gt; para &lt;strong&gt;Windows&lt;/strong&gt; foi logo tomando conta do seu espaço. Um dos fatores que muito contribuiu pra isto foi o seu preço de apenas noventa e nove dólares e também contamos com os investimentos que os administradores da &lt;strong&gt;Microsoft&lt;/strong&gt; fizeram como a compra da &lt;strong&gt;Fox Software&lt;/strong&gt; por cento e setenta milhões de dólares.&lt;br /&gt;Embora as vantagens de lançamentos, faltava de um pacote de ferramenta para desenvolvedores, o que foi princípio para muitas reclamações, assim como a limitação do &lt;strong&gt;software&lt;/strong&gt; de &lt;strong&gt;128MB&lt;/strong&gt; de memória. Já em &lt;strong&gt;1993&lt;/strong&gt; é lançado no mercado&lt;strong&gt; MS Access 1.1&lt;/strong&gt; com a ampliação para &lt;strong&gt;1GB&lt;/strong&gt; de memória e junto a ele veio &lt;strong&gt;Distribution Kit&lt;/strong&gt; e os incentivos da para que os desenvolvedores criassem seus aplicativos e os vendessem sem a necessidade do cliente ter uma versão do &lt;strong&gt;Access&lt;/strong&gt; em seu computador, bastava apenas utilizar o &lt;strong&gt;Access Runtime&lt;/strong&gt;.&lt;br /&gt;No entanto o programa ainda precisava de reajustes e dois anos depois modificações apareceram com a &lt;strong&gt;versão 2.0.&lt;/strong&gt; Agora era possível trabalhar com &lt;strong&gt;254 tabelas&lt;/strong&gt; ao mesmo tempo e no mesmo arquivo de dados. O novo ambiente de programação dava facilidades ao desenvolvedor e agora também não era mais necessário digitar imensas linhas de códigos. Neste mesmo ano chega ao &lt;strong&gt;Brasil&lt;/strong&gt; a versão em português do Access.&lt;br /&gt;A nova versão do &lt;strong&gt;MS Access&lt;/strong&gt; , em &lt;strong&gt;1995&lt;/strong&gt;, pulou para &lt;strong&gt;7.0&lt;/strong&gt; acompanhando o pacote de programas &lt;strong&gt;Microsoft Office 7.0&lt;/strong&gt;. Introduzida na era de &lt;strong&gt;32 bits&lt;/strong&gt; a nova versão do &lt;strong&gt;Access&lt;/strong&gt; vinha acompanhada com a linguagem &lt;strong&gt;Visual Basic for Applications&lt;/strong&gt; (&lt;strong&gt;VBA&lt;/strong&gt;), com o seu próprio ambiente de programação. Além do recurso de replicar banco de dados, dando a possibilidade de trabalhar off-line em cópias de banco de dados, podendo ser sincronizada com a base central.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;O Microsoft Access hoje&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Em março de &lt;strong&gt;1997&lt;/strong&gt; foi lançada a versão 8.0, preparada para internet, capaz de gravar &lt;strong&gt;hiperlinks&lt;/strong&gt; e salvar arquivos em formato &lt;strong&gt;HTML&lt;/strong&gt;. E em &lt;strong&gt;1999&lt;/strong&gt; lança a &lt;strong&gt;versão 9.0,&lt;/strong&gt; também conhecido como &lt;strong&gt;MS Access 2000,&lt;/strong&gt; com suporte a &lt;strong&gt;OLE DB&lt;/strong&gt; e um produto independente até hoje. Com isso, em &lt;strong&gt;2002&lt;/strong&gt;, a nova versão com suporte a uma linguagem mais comum, o &lt;strong&gt;XML &lt;/strong&gt;(&lt;strong&gt;Extensible Markup Language&lt;/strong&gt;), que é uma linguagem de marcação de dados e também dá uma maior integralidade com o &lt;strong&gt;browser&lt;/strong&gt;, podendo criar páginas em formato &lt;strong&gt;HTML&lt;/strong&gt; de acesso as dados do banco.&lt;br /&gt;O &lt;strong&gt;Access 2003&lt;/strong&gt; na sua &lt;strong&gt;versão 11&lt;/strong&gt; traz maior integração com browser, além da linguagem &lt;strong&gt;VBA&lt;/strong&gt;, marcação em &lt;strong&gt;XML&lt;/strong&gt; e incorporação da &lt;strong&gt;linguagem SQL&lt;/strong&gt; nas consultas de tabelas do banco.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:Arial;"&gt;É eu recomendo mas ele não tem licensa free mas muito bom para um banco pequeno.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-7755363987034257017?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/7755363987034257017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/7755363987034257017'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/01/historia-microsoft-access.html' title='História Microsoft Access'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_W4mx9wreaj4/S2Mv1H_YSBI/AAAAAAAAAEA/z5GAdiijQ9M/s72-c/macesse.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-1184504549322426584</id><published>2010-01-28T08:08:00.000-08:00</published><updated>2010-01-28T17:22:38.941-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Histórias dos Bancos'/><title type='text'>História Firebird</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_W4mx9wreaj4/S2I4S8tSdFI/AAAAAAAAADo/6ZLpJxyF3bw/s1600-h/firebird-logo.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 138px; height: 138px;" src="http://2.bp.blogspot.com/_W4mx9wreaj4/S2I4S8tSdFI/AAAAAAAAADo/6ZLpJxyF3bw/s200/firebird-logo.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5431965998747120722" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Oláaa galera.. vo fala também hoje sobre a história do &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Firebird&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; bom ele é derivado do código do &lt;strong&gt;Borland InterBase 6.0&lt;/strong&gt;. Possui o código aberto e não possui qualquer outro licenciamento, o que permite a sua utilização em qualquer tipo de aplicação, comercial ou não, sem quaisquer custos - totalmente &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;GRATUITO&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;!&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;A tecnologia usada no &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Firebird&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; tem mais de 20 anos, fazendo com que este seja um produto deveras maduro e estável.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;E o &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Interbase&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; foi originalmente concebido e criado por um grupo de engenheiros de sistemas,  funcionários da &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;DEC&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; (&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Digital Equipment Corporation&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;), que desejavam produzir um &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;SGBDR&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; - &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt; sistema gerenciador de banco de dados relaciona&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;l, inovador e que substancialmente oferecesse maiores benefícios que os outros sistemas até então existentes. Na época de sua concepção, muita tecnologia já existia como proposta de inovação, mas nenhum produto a oferecia como recurso ou característica disponível. Tendo iniciado em &lt;strong&gt;1985&lt;/strong&gt; como &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Groton Database System&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;, logo mudou de nome para Interbase. Foi inicialmente comercializado pela &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Ashton Tate&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; (&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Dbase&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;) e em &lt;strong&gt;1992&lt;/strong&gt; foi entregue à Borland como parte de uma negociação de  produtos. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Ao longo de seu desenvolvimento, foram consistentemente introduzidas um número de tecnologias de primeira mão. Muitas dessas são : &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Arquitetura&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Multi-geradora&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;, &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Commit automático em duas fases&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;,&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt; sombreamento do Banco de Dados&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; (&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;replicação&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;), &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;admissão e tratamento de Blob&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;s, &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Índices em mapa de bits disperso&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;,&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt; Colunas Vetoriais Multidimensionais&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;, &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Subsistema de Eventos &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;de alertas e o primeiro a disponibilizar acesso nativo a driver de&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt; JDBC&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;.&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;O &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;FireBird é um SGBD&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; (&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Sistema Gerenciador de Banco de Dado&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;s) desenvolvido em mantido por uma comunidade de desenvolvedores (&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;algumas do projeto original&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;) e pela &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Fundação FireBird&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;.&lt;/span&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;O &lt;strong&gt;FireBird&lt;/strong&gt; é um produto de &lt;strong&gt;Código Livre&lt;/strong&gt; desenvolvido sobre licensa &lt;strong&gt;Interbase License&lt;/strong&gt;. A origem do &lt;strong&gt;FireBird&lt;/strong&gt; é a versão &lt;strong&gt;Open Source&lt;/strong&gt; do &lt;strong&gt;Interbase® 6.0&lt;/strong&gt; de &lt;strong&gt;Julho de 2000&lt;/strong&gt;, quando a &lt;strong&gt;Borland&lt;/strong&gt; liberou os fontes de seu produto. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;O Firebird hoje&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Ele hoje em dia temos várias opções de escolha para os nossos &lt;strong&gt;Projetos.&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Interbase 6&lt;/strong&gt; - &lt;strong&gt;Open Source&lt;/strong&gt; e pode ser usado livremente, ele possui muitos bugs como exemplo um backdoor,onde um super usuário pode acessar todas as informações do &lt;strong&gt;Banco de Dados&lt;/strong&gt;. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;Hoje ele está Descontinuado.&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Firebird 1&lt;/strong&gt; - &lt;strong&gt;Open Source&lt;/strong&gt; mantido por uma comunidade, foram corrigidos vários &lt;strong&gt;bugs&lt;/strong&gt; do &lt;strong&gt;Interbase 6&lt;/strong&gt; e acrescentado algumas melhorias, pode ser considerado uma evolução do &lt;strong&gt;Interbase 6&lt;/strong&gt;. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;Hoje se encontra na &lt;strong&gt;versão 1.0.3&lt;/strong&gt;. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Interbase 6.5 e 7&lt;/strong&gt; - A &lt;strong&gt;Borland&lt;/strong&gt; voltou a fechar o &lt;strong&gt;Código Font&lt;/strong&gt;&lt;strong&gt;e&lt;/strong&gt; do &lt;strong&gt;Interbase&lt;/strong&gt; e fez várias melhorias, só que agora ele passou a ser &lt;strong&gt;Pago&lt;/strong&gt;. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;Hoje ele está na &lt;strong&gt;Versão 7.1&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;O &lt;strong&gt;Firebird 1.5&lt;/strong&gt; - Está em &lt;strong&gt;testes finais&lt;/strong&gt; (&lt;strong&gt;RC 4&lt;/strong&gt;) ele coisas foi reescrito inteirinho em &lt;strong&gt;C++&lt;/strong&gt;, o que facilitara futuras implementações, além de ter sido limpado o &lt;strong&gt;Código Fonte&lt;/strong&gt;.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-1184504549322426584?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/1184504549322426584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/1184504549322426584'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/01/histiria-firebird.html' title='História Firebird'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_W4mx9wreaj4/S2I4S8tSdFI/AAAAAAAAADo/6ZLpJxyF3bw/s72-c/firebird-logo.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-6366550395493582909</id><published>2010-01-28T07:46:00.000-08:00</published><updated>2010-01-28T17:24:06.045-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Histórias dos Bancos'/><title type='text'>História do MySQL</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_W4mx9wreaj4/S2I4rwba_cI/AAAAAAAAADw/X56WUrqZ0MQ/s1600-h/mysql+no+samp+brasil+evolution.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 146px;" src="http://2.bp.blogspot.com/_W4mx9wreaj4/S2I4rwba_cI/AAAAAAAAADw/X56WUrqZ0MQ/s200/mysql+no+samp+brasil+evolution.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5431966424947686850" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom vou comentar sobre o surgimento do &lt;strong&gt;MySQL&lt;/strong&gt; surgiu a partir da necessidade da equipe que criou o &lt;strong&gt;SGBD&lt;/strong&gt;, de utilizar algum mecanismo que permitisse a conexão de tabelas criadas na linguagem &lt;strong&gt;SQL&lt;/strong&gt; para um determinado fim. A princípio, o grupo iria utilizar o &lt;strong&gt;mSQL&lt;/strong&gt;, mas logo perceberam que esta ferramenta não era rápida o suficiente para atender às necessidades do projeto. O jeito foi criar uma solução própria. Nascia o &lt;strong&gt;MySQL&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;O &lt;strong&gt;MySQL&lt;/strong&gt; foi criado por &lt;strong&gt;Michael Widenius&lt;/strong&gt; na companhia suíça &lt;strong&gt;TcX&lt;/strong&gt;. Por volta de &lt;strong&gt;1979 Michael&lt;/strong&gt; desenvolveu um &lt;strong&gt;Banco de Dados&lt;/strong&gt; chamado &lt;strong&gt;UNIREG&lt;/strong&gt;, sendo rescritos em várias linguagens desde então [&lt;strong&gt;YAR 99&lt;/strong&gt;]. Em &lt;strong&gt;1994&lt;/strong&gt;, a empresa &lt;strong&gt;TcX&lt;/strong&gt; começou o desenvolvimento de aplicações baseadas na Web, tendo como base o banco &lt;strong&gt;UNIREG&lt;/strong&gt;, porém esse banco possuía muito "&lt;strong&gt;overhead&lt;/strong&gt;" para obter sucesso em uma aplicação para geração de páginas dinâmicas na Web. Então a empresa &lt;strong&gt;TcX&lt;/strong&gt; começou a procurar por outro banco o &lt;strong&gt;mSQL&lt;/strong&gt;, uma ferramenta baseada em &lt;strong&gt;SQL&lt;/strong&gt; mas com características pobres não possuindo por exemplo suporte a índices, e com desempenho inferior ao &lt;strong&gt;UNIREG&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Foi então que o desenvolvedor do banco &lt;strong&gt;UNIREG&lt;/strong&gt; contatou o &lt;strong&gt;David Hughes&lt;/strong&gt; criador do&lt;strong&gt; mSQL&lt;/strong&gt;, para saber do interesse dele em unir os dois bancos. Sendo positivo o interesse de &lt;strong&gt;David&lt;/strong&gt;, a empresa &lt;strong&gt;TcX&lt;/strong&gt; resolveu desenvolver um novo banco, mas mantendo ao máximo a compatibilidade com &lt;strong&gt;mSQL&lt;/strong&gt;. &lt;strong&gt;TcX&lt;/strong&gt; foi esperta o suficiente para não reinventar o que já estava bem feito, ela construiu seu servidor baseado na estrutura que já estava montada do &lt;strong&gt;UNIREG&lt;/strong&gt; e utilizou grande número de utilitários escritas para &lt;strong&gt;mSQL&lt;/strong&gt; e fez&lt;strong&gt; API's&lt;/strong&gt; para o novo servidor praticamente iguais ao &lt;strong&gt;mSQL&lt;/strong&gt;. Como resultado usuários do &lt;strong&gt;mSQL&lt;/strong&gt; que decidissem mudar para o novo servidor da &lt;strong&gt;TcX&lt;/strong&gt;, teriam apenas que fazer pequenas e simples mudanças nos códigos existentes.&lt;br /&gt;&lt;br /&gt;Então foi me maio de &lt;strong&gt;1995&lt;/strong&gt; que, definitivamente, a primeira versão do &lt;strong&gt;MySQL&lt;/strong&gt; foi lançada. Um dos parceiros da &lt;strong&gt;TcX&lt;/strong&gt; sugeriu a distribuição do servidor na Internet, o objetivo disso era a utilização de um modelo pioneiro desenvolvido por &lt;strong&gt;Aladdin Peter Deutsch&lt;/strong&gt;. O resultado foi um maior flexibilidade em sem "&lt;strong&gt;copyright&lt;/strong&gt;", que fez do &lt;strong&gt;MySQL&lt;/strong&gt; mais difundido gratuitamente do que &lt;strong&gt;mSQL&lt;/strong&gt;. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;strong&gt;O MySQL hoje&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Como refalo novamente o &lt;strong&gt;MySQL&lt;/strong&gt; foi desenvolvido pela &lt;strong&gt;TCX &lt;/strong&gt;em &lt;strong&gt;1&lt;/strong&gt;&lt;strong&gt;996&lt;/strong&gt;. Atualmente a &lt;strong&gt;MySQL AB&lt;/strong&gt; desenvolve o programa. &lt;strong&gt;MySQL AB&lt;/strong&gt; é a companhia dos fundadores e principais desenvolvedores do &lt;strong&gt;MySQL&lt;/strong&gt;. Eles criaram-no porque precisavam de um banco de dados relacional que pudesse tratar grandes quantidades de dados em máquinas de custo relativamente barato. O &lt;strong&gt;MYSQL&lt;/strong&gt; é um dos bancos de dados relacionais mais rápidos do mercado, apresenta quase todas as funcionalidades dos grandes bancos de dados . &lt;strong&gt;MySQL&lt;/strong&gt; é uma linguagem simples, em que você facilmente pode gravar, alterar e recuperar informações num web site com segurança e rapidez O &lt;strong&gt;MYSQL&lt;/strong&gt; é executado, principalmente, em sistemas que participam da filosofia &lt;strong&gt;UNIX&lt;/strong&gt;, embora outros sistemas &lt;strong&gt;S.O &lt;/strong&gt;também fornecem suporte, como &lt;strong&gt;Windows&lt;/strong&gt;, por exemplo.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;O &lt;strong&gt;MYSQL&lt;/strong&gt; é um sistema de gerenciamento de banco de dados relacional multiencadeado, de código fonte aberto e nível corporativo. O &lt;strong&gt;MySQL&lt;/strong&gt; não é apenas um banco de dados, mas sim um gerenciador de banco de dados. Com este &lt;strong&gt;SGBD&lt;/strong&gt; (&lt;strong&gt;Sistema Gerenciador de Banco de Dados&lt;/strong&gt;), também pode ser utilizado para aplicações corporativas, o qual, necessitam de varias conexões simultâneas, que possibilita &lt;strong&gt;101 conexões simultâneas&lt;/strong&gt;. Uma conexão é o tempo que leva para o usuário receber o dado solicitado. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;O Programa de &lt;strong&gt;Banco de Dados&lt;/strong&gt; &lt;strong&gt;MySQL&lt;/strong&gt; é um sistema &lt;strong&gt;cliente/servidor&lt;/strong&gt; que consiste de um &lt;strong&gt;servidor SQL&lt;/strong&gt; multitarefa que suporta acessos diferentes, &lt;strong&gt;diversos programas clientes&lt;/strong&gt; e &lt;strong&gt;bibliotecas&lt;/strong&gt;, &lt;strong&gt;ferramentas administrativas&lt;/strong&gt; e &lt;strong&gt;diversas interfaces&lt;/strong&gt; de &lt;strong&gt;programação&lt;/strong&gt; (&lt;strong&gt;API's&lt;/strong&gt;). Também concedemos o &lt;strong&gt;Servidor MySQL&lt;/strong&gt; como uma biblioteca multitarefa que você pode ligar à sua aplicação para chegar a um produto mais rápido, menor e mais facilmente gerenciável.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-6366550395493582909?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/6366550395493582909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/6366550395493582909'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/01/historia-do-mysql.html' title='História do MySQL'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_W4mx9wreaj4/S2I4rwba_cI/AAAAAAAAADw/X56WUrqZ0MQ/s72-c/mysql+no+samp+brasil+evolution.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-8285598622131957795</id><published>2010-01-28T07:32:00.000-08:00</published><updated>2010-01-28T17:25:28.820-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Histórias dos Bancos'/><title type='text'>História do PostgreSQL</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_W4mx9wreaj4/S2I5A3gaP3I/AAAAAAAAAD4/TeF_1sKcbGo/s1600-h/logoposrtgre.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 173px; height: 200px;" src="http://2.bp.blogspot.com/_W4mx9wreaj4/S2I5A3gaP3I/AAAAAAAAAD4/TeF_1sKcbGo/s200/logoposrtgre.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5431966787624910706" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom hoje vo comenta sobre o surgimento do &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;PostgreSQL&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; (conhecido anteriormente como &lt;strong&gt;Postgres95&lt;/strong&gt;) derivou do projeto &lt;strong&gt;POSTGRES&lt;/strong&gt; da universidade de &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Berkley&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, cuja última versão foi a 4.2. O &lt;strong&gt;POSTGRES&lt;/strong&gt; foi originalmente patrocinado pelo &lt;strong&gt;DARPA&lt;/strong&gt; (&lt;strong&gt;Agência de Projetos de Pesquisa Avançada para Defesa&lt;/strong&gt;), &lt;strong&gt;ARO&lt;/strong&gt; (&lt;strong&gt;Departamento de Pesquisa Militar&lt;/strong&gt;), &lt;strong&gt;NSF&lt;/strong&gt; (&lt;strong&gt;Fundação Cinetífica Nacional&lt;/strong&gt;) e &lt;strong&gt;ESL Inc&lt;/strong&gt;. A implementação do projeto &lt;strong&gt;POSTGRES&lt;/strong&gt; iniciou em 1986, já em 87 tornou-se operacional. A primeira versão lançada para o público externo foi em 1989. Devido a uma crítica feita ao seu sistema de regras, o &lt;strong&gt;POSTGRES&lt;/strong&gt; teve essa parte re-implementada e lançada em uma segunda versão em 1990. Em 1991 foi lançada a versão 3, com melhorias no executor de consultas e algumas partes do código foram re-escritas. As versões subsequentes, até o &lt;strong&gt;Postgres95&lt;/strong&gt;, foram focadas em confiabilidade e portabilidade. O &lt;strong&gt;POSTGRES&lt;/strong&gt; foi utilizado para diversos sistemas de pesquisa e de produção, uma aplicação de análise financeira, um banco com rotas de asteróides, e diversos sistemas de informações geográficas. O código do &lt;strong&gt;POSTGRES&lt;/strong&gt; foi aproveitado em um produto comercializado pela Illustra Information Technologies (posteriormente incorporada à Informix, que agora pertence à &lt;strong&gt;IBM&lt;/strong&gt;). &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;A versão seguinte, o &lt;strong&gt;Postgres95&lt;/strong&gt;, teve mudanças radicais em relação ao projeto original. O seu código foi totalmente revisado, o tamanho dos fontes foi reduzido em &lt;strong&gt;25%&lt;/strong&gt;, e a linguagem &lt;strong&gt;SQL&lt;/strong&gt; foi implementada como interface padrão. A performance foi consideravelmente melhorada e vários recursos foram adicionados. Em 1996 o nome &lt;strong&gt;Postgres95&lt;/strong&gt; tornou-se inadequado, o projeto foi rebatizado "&lt;strong&gt;PostgreSQL&lt;/strong&gt;", para enfatizar a relação do &lt;strong&gt;POSTGRES&lt;/strong&gt; original com a linguagem &lt;strong&gt;SQL&lt;/strong&gt;. A numeração da versão voltou a seguir o padrão anterior ao &lt;strong&gt;Postgres95&lt;/strong&gt; (&lt;strong&gt;considerada a 5.0&lt;/strong&gt;), e a primeira versão do &lt;strong&gt;PostgreSQL&lt;/strong&gt; foi a &lt;strong&gt;6.0&lt;/strong&gt;. Enquanto a ênfase do &lt;strong&gt;Postgres95&lt;/strong&gt; tinha sido a correção de falhas e otimização do código, o desenvolvimento das primeiras versões do &lt;strong&gt;PostgreSQL&lt;/strong&gt; foi orientada à melhoria de recursos e implementação de novos recursos, sempre seguindo os padrões de &lt;strong&gt;SQL&lt;/strong&gt; anteriormente estabelecidos.&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;O PostgreSQL hoje&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;A equipe do projeto cresceu e se espalhou pelo mundo. O Grupo &lt;strong&gt;Global de Desenvolvimento do PostgreSQL&lt;/strong&gt; tem membros nos &lt;strong&gt;Estados Unidos, Canadá, Japão, Russia&lt;/strong&gt;, vários países da &lt;strong&gt;Europa&lt;/strong&gt; e alguns outros. Esse grupo é formado essencialmente por empresas especializadas em &lt;strong&gt;PostgreSQL&lt;/strong&gt;, empresas usuárias do sistema, além dos pesquisadores acadêmicos e programadores independentes. Além da programação, essa comunidade é responsável pela documentação, tradução, criação de ferramentas de modelagem e gerenciamento, e elaboração de extensões e acessórios. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Pela riqueza de recursos e conformidade com os padrões, ele é um &lt;strong&gt;SGBD&lt;/strong&gt; muito adequado para o estudo universitário do modelo relacional, além de ser uma ótima opção para empresas implementarem soluções de alta confiabilidade sem altos custos de licenciamento. É um programa distribuído sob a &lt;strong&gt;licença BSD&lt;/strong&gt;, o que torna o seu código fonte disponível e o seu uso livre para aplicações comerciais ou não. O &lt;strong&gt;PostgreSQL&lt;/strong&gt; foi implementado em diversos ambientes de produção no mundo, entre eles, um bom exemplo do seu potencial é o banco de dados que armazena os registros de domínio .org, mantido pela empresa Afilias.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Site Oficial - (&lt;a href="http://www.postgresql.org/"&gt;http://www.postgresql.org&lt;/a&gt;)&lt;br /&gt;Site de marketing - (&lt;a href="http://advocacy.postgresql.org/?lang=br"&gt;http://advocacy.postgresql.org/?lang=br&lt;/a&gt;)&lt;br /&gt;Site nacional - (&lt;a href="http://www.postgresql.org.br/"&gt;http://www.postgresql.org.br&lt;/a&gt;)&lt;br /&gt;Lista de discussão nacional - (&lt;a href="http://br.groups.yahoo.com/group/postgresql-br"&gt;http://br.groups.yahoo.com/group/postgresql-br&lt;/a&gt;) &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;Espero que gostem ai é um &lt;strong&gt;Banco de Dados&lt;/strong&gt; muito bom. Recomendo.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-8285598622131957795?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/8285598622131957795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/8285598622131957795'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/01/postgresql.html' title='História do PostgreSQL'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_W4mx9wreaj4/S2I5A3gaP3I/AAAAAAAAAD4/TeF_1sKcbGo/s72-c/logoposrtgre.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-4581457179857620050</id><published>2010-01-27T14:17:00.000-08:00</published><updated>2010-01-27T18:24:39.581-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite'/><title type='text'>SQLite</title><content type='html'>&lt;div align="justify"&gt;&lt;a href="http://2.bp.blogspot.com/_W4mx9wreaj4/S2C8FaKu-bI/AAAAAAAAACk/cFZCvPswejM/s1600-h/sqlite.gif"&gt;&lt;span style="font-family:arial;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5431547951718529458" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 118px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_W4mx9wreaj4/S2C8FaKu-bI/AAAAAAAAACk/cFZCvPswejM/s400/sqlite.gif" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Bom pessoal hoje falarei sobre &lt;strong&gt;SQLite&lt;/strong&gt; a respeito de um &lt;strong&gt;Banco de Dados &lt;/strong&gt;que é &lt;strong&gt;Embutido&lt;/strong&gt; e não necessita de um &lt;strong&gt;Server&lt;/strong&gt; atráz rodando para rodar e muito simples... bom ele é uma &lt;strong&gt;biblioteca&lt;/strong&gt; em &lt;strong&gt;linguagem C&lt;/strong&gt; que implementa um &lt;strong&gt;Banco de Dados SQL&lt;/strong&gt; embutido. Programas que usam a biblioteca SQLite podem ter acesso a &lt;strong&gt;Banco de Dados SQL&lt;/strong&gt; sem executar um processo &lt;strong&gt;RDBMS&lt;/strong&gt; separado.&lt;br /&gt;O &lt;strong&gt;SQLite&lt;/strong&gt; não é uma biblioteca de cliente usada para conectar com um grande servidor de banco de dados, mas sim o servidor. A biblioteca &lt;strong&gt;SQLite&lt;/strong&gt; lê e escreve diretamente para e do arquivo do &lt;strong&gt;Banco de Dados&lt;/strong&gt; no disco.&lt;br /&gt;O uso do &lt;strong&gt;SQLite&lt;/strong&gt; é recomendado onde a simplicidade da administração, implementação e manutenção são mais importantes que incontáveis recursos que &lt;strong&gt;SGBDs&lt;/strong&gt; mais voltados para aplicações complexas possivelmente implementam. Entretando situações onde a simplicidade é a melhor escolha são muito mais freqüentes do que pode-se imaginar.&lt;br /&gt;&lt;strong&gt;Exemplos&lt;/strong&gt; de uso do &lt;strong&gt;SQLite&lt;/strong&gt; são, não restrito a :sites com menos de cem mil requisições por dia, dispositivos e sistemas embarcados, aplicações desktop, ferramentas estatísticas e de análise, aprendizado de banco de dados,implementação de novas extensões de &lt;strong&gt;SQL&lt;/strong&gt;.&lt;br /&gt;Não se recomenda o uso do &lt;strong&gt;SQLite&lt;/strong&gt; para &lt;strong&gt;Sites&lt;/strong&gt; com:muitos acessos, grande quantidades de dados (&lt;strong&gt;talvez maior que algumas duzias de gigabytes&lt;/strong&gt;), sistemas com grande concorrência, aplicações &lt;strong&gt;Cliente/Servidor&lt;/strong&gt;. &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom espero que seja útil o que eu descrevi ai a vocês.. bom eu usei algumas vezes e não me deu problema então está eu recomendo. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;Uma tela do &lt;strong&gt;Banco de Dados&lt;/strong&gt; em execução simples e fácil acesso.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5431561256965993202" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 247px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_W4mx9wreaj4/S2DIL4E7cvI/AAAAAAAAAC8/7c3iXhLULN0/s400/SQLITE+ELDER.JPG" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-4581457179857620050?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/4581457179857620050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/4581457179857620050'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/01/sqlite.html' title='SQLite'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_W4mx9wreaj4/S2C8FaKu-bI/AAAAAAAAACk/cFZCvPswejM/s72-c/sqlite.gif' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-6118791331646227259</id><published>2010-01-26T06:33:00.000-08:00</published><updated>2010-02-12T08:58:09.149-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Backup e Restaure'/><title type='text'>MySQL - Backup e Restaure</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Existem inúmeras maneiras de se fazer backup no &lt;strong&gt;MySQL&lt;/strong&gt;. Creio que o modo mais utilizado seja o &lt;strong&gt;Backup&lt;/strong&gt; feito pelo comando '&lt;strong&gt;mysqldump&lt;/strong&gt;', que permite uma combinação enorme de parâmetros.&lt;br /&gt;Em todos os comandos abaixo, substitua as palavras '&lt;strong&gt;usuario&lt;/strong&gt;', '&lt;strong&gt;senha&lt;/strong&gt;' e '&lt;strong&gt;arquivo_saida&lt;/strong&gt;'.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Backup&lt;/strong&gt; de todos os bancos existentes com conteúdo e estrutura (&lt;strong&gt;-A equivale a --all-databases&lt;/strong&gt;):&lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;$ mysqldump -u usuario --password=senha --all-databases &gt; arquivo_saida OU $ mysqldump -u usuario --password=senha -A &gt; arquivo_saida &lt;/code&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Backup&lt;/strong&gt; só das estruturas de todos os bancos (&lt;strong&gt;-d : sem os conteúdos&lt;/strong&gt;)&lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;$ mysqldump -u usuario --password=senha -A -d &gt; arquivo_saida&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Backup&lt;/strong&gt; só dos dados de todos os bancos (&lt;strong&gt;-c: usa comandos 'insert'; -t: não escreve comandos 'create table'; -e: gera comandos mais compactos e mais rápidos de 'insert'&lt;/strong&gt;) &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;$ mysqldump -u usuario --password=senha -c -t -e -A &gt; arquivo_saida&lt;/code&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Caso você queira especificar o nome de um banco de dados (&lt;strong&gt;ou seja, você não quer fazer de todos os bancos existentes&lt;/strong&gt;) substitua o parâmetro '&lt;strong&gt;-A&lt;/strong&gt;' citado nos exemplos anteriores por: &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;databases &lt;strong&gt;DB1 DB2&lt;/strong&gt; .... , onde &lt;strong&gt;DB1 DB2&lt;/strong&gt; ... são os nomes dos bancos de dados&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Exemplo:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;$ mysqldump -u usuario --password=senha -c -t -e --databases DB1 DB2&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Caso você queira fazer backup de apenas algumas tabelas de um banco específico:&lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;$ mysqldump -u usuario --password=senha [opções] DB1 [nome das tabelas]&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;onde &lt;strong&gt;DB1&lt;/strong&gt; é o nome do banco que você quer.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Criando um backup do seu banco de dados MySQL usando SSH&lt;/strong&gt; &lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Se você possui acesso shell em sua conta de hospedagem, pode facilmente fazer backup do seu banco de dados com o seguinte comando: &lt;/span&gt;&lt;code&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-family:arial;"&gt;# mysql -u username -p database_name &gt; filename.sql&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/span&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Onde: &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;username = usuário root ou usuário com privilégios suficientes para fazer este backup;&lt;br /&gt;database_name = o nome do banco de dados que deseja criar;&lt;br /&gt;filename = nome do arquivo de saída com extensão sql; &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Restaurando um backup MySQL usando SSH&lt;/strong&gt; &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Para restaurar, o procedimento é quase como o comando acima, você só precisa substituir um símbolo. Fácil, né?&lt;/span&gt; &lt;p align="justify"&gt;&lt;/p&gt;&lt;code&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;p align="justify"&gt;&lt;code&gt;&lt;span style="font-family:arial;"&gt;# mysql -u username -p database_name &lt; username =" usuário" database_name =" o" filename =" nome"&gt; DUMP.sql&lt;br /&gt;Restore:mysql -u USUARIO -pSENHA BANCO &lt;&gt;&lt;/p&gt;&lt;/code&gt;&lt;/div&gt;&lt;/span&gt;&lt;/code&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;A forma mais facil de fazer um backup de uma base de dados em MySQL é utilizar o comando mysqladmin:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;mysqldump -u [&lt;strong&gt;username&lt;/strong&gt;] -p [&lt;strong&gt;password&lt;/strong&gt;] [&lt;strong&gt;databasename&lt;/strong&gt;] &gt; [&lt;strong&gt;backupfile.sql&lt;/strong&gt;]&lt;/span&gt;&lt;/p&gt;&lt;/code&gt;&lt;/div&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;[&lt;strong&gt;username&lt;/strong&gt;] - Nome de Utilizador da base de dados;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;[&lt;strong&gt;password&lt;/strong&gt;] - Palavra passe do Utilizador;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;[&lt;strong&gt;databasename&lt;/strong&gt;] - nome da base de dados;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;[&lt;strong&gt;backupfile.sql&lt;/strong&gt;] - nome do ficheiro onde se pretende guardar a informação;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Para restaurar a base de dados utiliza-se o comando mysql:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;mysql -u [&lt;strong&gt;username&lt;/strong&gt;] -p [&lt;strong&gt;password&lt;/strong&gt;] [&lt;strong&gt;databasename&lt;/strong&gt;] &lt; [&lt;strong&gt;backupfile.mysql&lt;/strong&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-6118791331646227259?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/6118791331646227259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/6118791331646227259'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/01/mysql-backup-e-restaure.html' title='MySQL - Backup e Restaure'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-5856424859935213434</id><published>2010-01-26T06:28:00.000-08:00</published><updated>2010-01-26T08:56:16.512-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Backup e Restaure'/><title type='text'>PostgreSQL – Backup e Restaure</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Backup/Dump uma base&lt;/strong&gt; &lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;/usr/local/pgsql/bin/pg_dump BASE &gt; arquivo_backup.sql&lt;/code&gt;&lt;/div&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Importando a base&lt;/strong&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;/usr/local/pgsql/bin/psql -d BASE -f ARQUIVO.sql&lt;/code&gt;&lt;/div&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:arial;"&gt;&lt;p&gt;Veja como importar arquivo &lt;strong&gt;SQL&lt;/strong&gt; utilizando console &lt;strong&gt;PSQL&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;psql -d &lt;strong&gt;BASEDEDADOS&lt;/strong&gt; -f &lt;strong&gt;ARQUIVO.SQL&lt;/strong&gt; -&lt;strong&gt;U USUARIO&lt;/strong&gt;&lt;/code&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Exemplo:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="left"&gt;&lt;code&gt;#su postgres&lt;br /&gt;#psql -d &lt;strong&gt;bancoxyz&lt;/strong&gt; -f &lt;strong&gt;meubanco.SQL&lt;/strong&gt; -U &lt;strong&gt;postgres&lt;/code&gt;&lt;/div&gt;&lt;/strong&gt;&lt;br /&gt;para ver o que está sendo executado, adicione: &lt;strong&gt;-a&lt;/strong&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-5856424859935213434?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/5856424859935213434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/5856424859935213434'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/01/postgresql-backup-e-restaure.html' title='PostgreSQL – Backup e Restaure'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-2504127927535424706</id><published>2010-01-24T14:13:00.000-08:00</published><updated>2010-01-28T09:34:09.616-08:00</updated><title type='text'>Alguns Programas para Migrações de Dados</title><content type='html'>&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Aqui vou postar alguns programas atuais para fazer as migrações:&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;a href="http://dbconvert.com/downloads/dbconvert_access_postgresql.zip"&gt;&lt;span style="font-family:arial;"&gt;DBConvert for MS Access &amp;amp; PostgreSQL3.2.1 &lt;/span&gt;&lt;/a&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Está ferramenta que permite uma confiável &lt;/span&gt;&lt;span style="font-family:arial;"&gt;migração&lt;/span&gt;&lt;span style="font-family:arial;"&gt;/conversão bi-direcional entre bases de dados &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Microsoft Access&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; e &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;PostgreSQL.&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Permite a conversão de:&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Microsoft Access &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;para&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt; PostgreSQL;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Microsoft Access &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;para&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt; PHP Script;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Microsoft Access &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;para&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt; Microsoft Access;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;PostgreSQL &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;para&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt; Microsoft Access;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;PostgreSQL &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;para&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt; PostgreSQL;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;PostgreSQL &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;para&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt; PHP Script.&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Algumas funcionalidades desse software&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Conversão de dados em alta velocidade/performance;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Conversão segura - Integridade da &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Base de Dados&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Migração de dados utilizando condicionais;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Suporte a arquitetura &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;UNICODE&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Modo de linhas de comando;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Agendamento flexível;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Interface amigável e de fácil utilização.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Não converte tabelas (ocultas) de sistema.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Roda em Windows NT, 2000, Millenium, XP, Vista&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Disponível nos idiomas Inglê&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Shareware&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; - grátis para testar e avaliar&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.dbconvert.com/downloads/dbconvert_mssql_postgresql.zip"&gt;&lt;span style="font-family:arial;"&gt;DBConvert for MS SQL &amp;amp; PostgreSQL2.2.1&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Ferramenta que permite uma confiável migração / conversão bi-direcional entre bases de dados &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Microsoft SQL&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Server&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; e &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;PostgreSQL&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Permite a conversão de:&lt;/strong&gt;&lt;/span&gt;&lt;ul align="left"&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Microsoft SQL&lt;/strong&gt; &lt;strong&gt;Server&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;span style="font-family:arial;"&gt;para&lt;/span&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Microsoft SQL&lt;/strong&gt; &lt;strong&gt;Server&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; para &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Microsoft SQL Server&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Microsoft SQL&lt;/strong&gt; &lt;strong&gt;Server&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; para &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PHP Script&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; para &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Microsoft SQL Server&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; para &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="center"&gt;&lt;span style="font-family:arial;"&gt;Algumas funcionalidades desse software&lt;/span&gt;&lt;/p&gt;&lt;ul align="left"&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Conversão de dados em alta velocidade / performanc&lt;/span&gt;&lt;span style="font-family:arial;"&gt;e;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Conversão segura - Integridade da base de dados;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Migração de dados utilizando condicionais;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Suporte a arquitetura &lt;/span&gt;&lt;span style="font-family:arial;"&gt;UNICODE&lt;/span&gt;&lt;span style="font-family:arial;"&gt;;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Modo de linhas de comando;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Agendamento flexível;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Interface amigável e de fácil utilização;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Não converte tabelas (ocultas) de sistema;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Não suporta &lt;/span&gt;&lt;span style="font-family:arial;"&gt;Microsoft SQL Server Desktop Engine&lt;/span&gt;&lt;span style="font-family:arial;"&gt; (&lt;/span&gt;&lt;span style="font-family:arial;"&gt;MSDE&lt;/span&gt;&lt;span style="font-family:arial;"&gt;);&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Roda em Windows NT, 2000, Millenium, XP, Vista;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Disponível nos idiomas Inglês;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Shareware&lt;/span&gt;&lt;span style="font-family:arial;"&gt; - grátis para testar e avaliar;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://dbconvert.com/downloads/dbconvert_mysql_postgresql.zip"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;DBConvert for MySQL &amp;amp; PostgreSQL3.3.1&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Ferramenta que permite uma confiável migração / conversão bi-direcional entre bases de dados &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;MySQL&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; e &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;PostgreSQL&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;. &lt;/span&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Permite a conversão de:&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;MySQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; para &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;; &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;MySQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; para &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PostgreSQL PHP Script&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;; &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;MySQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; para &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;MySQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;; &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;MySQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; para &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;MySQL PHP Script&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;; &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; para &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;MySQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;; &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; para &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;MySQL PHP Script&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;; &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; para &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PostgreSQ&lt;/strong&gt;&lt;strong&gt;L&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;; &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; para &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PostgreSQL PHP Script&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;. &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="center"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Algumas funcionalidades desse software&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-family:arial;"&gt;Conversão de dados em alta velocidade / performance; &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-family:arial;"&gt;Conversão segura - Integridade da base de dados; &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-family:arial;"&gt;Migração de dados utilizando condicionais; &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-family:arial;"&gt;Suporte a arquitetura &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;UNICODE&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;; &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-family:arial;"&gt;Modo de linhas de comando; &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-family:arial;"&gt;Agendamento flexível; &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-family:arial;"&gt;Interface amigável e de fácil utilização; &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-family:arial;"&gt;Não converte tabelas (ocultas) de sistema; &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-family:arial;"&gt;Roda em Windows NT, 2000, Millenium, XP, Vista; &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-family:arial;"&gt;Disponível nos idiomas Inglês; &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Shareware&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; - grátis para testar e avaliar;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://www.dbconvert.com/downloads/dbsync_mssql_postgresql.zip"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;DBSync for MS SQL &amp;amp; PostgreSQL2.2.1&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Ferramenta que permite uma confiável conversão / sincronização bi-direcional entre bases de dados &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;MS SQL&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; Server e &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;PostgreSQL.&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Permite a conversão de:&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Microsoft SQL Server&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; para &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;PostgreSQL&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Microsoft SQL&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; Server para &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Microsoft SQL Server;&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;PostgreSQL&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; para &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Microsoft SQL Server&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;PostgreSQL&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; para &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;PostgreSQL.&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Algumas funcionalidades desse software&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Conversão de dados em alta velocidade / performance; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Conversão segura - Integridade da base de dados; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;Migração de dados utilizando condições;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Sincronização de &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;updates&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;, &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;inserts&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; e &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;drop tables&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; / &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;fields&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Remapeamento de todos os objetos do banco (tabelas, campos, índices e chaves estrangeiras) para sincronização; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Suporte a arquitetura &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;UNICODE&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Personalize o processo de sincronização de sua base de dados; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Modo de linhas de comando; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Agendamento flexível; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Interface amigável e de fácil utilização; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Não converte tabelas (ocultas) de sistema; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Não suporta &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Microsoft SQL Server Desktop Engine&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; (&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;MSDE&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;). &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Roda em Windows NT, 2000, Millenium, XP, Vista; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Disponível nos idiomas Inglês; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Shareware&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; - grátis para testar e avaliar; &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://dbconvert.com/downloads/dbsync_mysql_postgresql.zip"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;DBSync for MySQL &amp;amp; PostgreSQL 3.3.1&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Ferramenta que permite uma confiável conversão / sincronização bi-direcional entre bases de dados &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;MySQL&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; e &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;PostgreSQL&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;. &lt;/span&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Permite a conversão de:&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;MySQL&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; para &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;PostgreSQL&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;MySQL&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; para &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;MySQL&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;PostgreSQL&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; para &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;MySQL&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;PostgreSQL&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; para &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;PostgreSQL&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Algumas funcionalidades desse software&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Conversão de dados em alta velocidade / performance; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Conversão segura - Integridade da base de dados; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Migração de dados utilizando condições; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Sincronização de &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;updates&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;, &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;inserts&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; e &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;drop tables&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt; / &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;fields&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;emapeamento de todos os objetos do banco (tabelas, campos, índices e chaves estrangeiras) para sincronização; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Suporte a arquitetura &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;UNICODE&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Personalize o processo de sincronização de sua base de dados; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Modo de linhas de comando; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Agendamento flexível; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Interface amigável e de fácil utilização; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Não converte tabelas (ocultas) de sistema; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Roda em Windows NT, 2000, Millenium, XP, Vista; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Disponível nos idiomas Inglês; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Shareware&lt;/span&gt;&lt;span style="font-family:arial;"&gt; - grátis para testar e avaliar;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="center"&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.bullzip.com/products/a2m/pad/msa2mys.zip"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Access to MySQL3.0.0.117&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Ferramenta para a converção de bancos de dados &lt;strong&gt;Microsoft Access&lt;/strong&gt; para &lt;strong&gt;MySQL&lt;/strong&gt; e com a ajuda de um &lt;strong&gt;Wizard&lt;/strong&gt;. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;Access to &lt;strong&gt;MySQL&lt;/strong&gt; é um pequeno programa que converte bancos de dados em &lt;strong&gt;Microsoft Access&lt;/strong&gt; para &lt;strong&gt;MySQL&lt;/strong&gt;. Sua interface é baseada na simplicidade dos &lt;strong&gt;Wizards&lt;/strong&gt; (&lt;strong&gt;aquele passo-a-passo onde cada informação é explicada&lt;/strong&gt;) para que qualquer pessoa consiga realizar a conversão sem cometer enganos.&lt;/span&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Permite a conversão de:&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul align="left"&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;MySQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; para &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="center"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Algumas funcionalidades desse software&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul align="left"&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Transfere diretamente os dados de um servidor para o outro;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Seleciona tabelas, campos e senhas para a transferência;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Suporta compartilhamento de segurança ou definido pelo usuário.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Roda em Windows 95, 98, NT, 2000, Millenium, XP, 2003&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Disponível nos idiomas Inglês&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Freeware&lt;/strong&gt; - grátis;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-2504127927535424706?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/2504127927535424706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/2504127927535424706'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/01/alguns-programas-para-migracoes-de.html' title='Alguns Programas para Migrações de Dados'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-4761217202766408179</id><published>2010-01-24T09:33:00.000-08:00</published><updated>2010-01-25T19:00:55.611-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Migrações de Dados'/><title type='text'>Migrando MySQL para PostgreSQL</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_W4mx9wreaj4/S1yH9b8agzI/AAAAAAAAACc/QfBegrD9SQE/s1600-h/mysqlpostgre.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5430364740244898610" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 142px" alt="" src="http://2.bp.blogspot.com/_W4mx9wreaj4/S1yH9b8agzI/AAAAAAAAACc/QfBegrD9SQE/s320/mysqlpostgre.JPG" border="0" /&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;MySQL&lt;/strong&gt; e &lt;strong&gt;PostgreSQ&lt;/strong&gt;&lt;strong&gt;L&lt;/strong&gt; esses &lt;strong&gt;Banco de Dados&lt;/strong&gt; você pode já ter lido vários artigos sobre esse assunto de migração, mas provavelmente conseguiu apenas fragmentos da informação necessária e não soube nem por onde começar estou certo? haha bom mas vamos pra luta e chego a hora de colocar tudo junto e na prática.&lt;/span&gt; &lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Você tem um projeto/sistema rodando no &lt;strong&gt;MySQL&lt;/strong&gt; e de repente você descobre que você precisa migrar para &lt;strong&gt;PostgreSQL&lt;/strong&gt;. E você se depara com um &lt;strong&gt;SQL&lt;/strong&gt; diferente para cada plataforma, o &lt;strong&gt;MySQL&lt;/strong&gt; trabalha com &lt;strong&gt;SQL&lt;/strong&gt; e o &lt;strong&gt;PostgreSQL&lt;/strong&gt; trabalha com &lt;strong&gt;PL/SQL&lt;/strong&gt; e ai?, bom mas o detalhe que você não tem tempo para reescrever o código do zero e, logicamente, se você tiver tempo de reestruturar o seu projeto para &lt;strong&gt;PostgreSQL&lt;/strong&gt;, o seu &lt;strong&gt;Data Base&lt;/strong&gt; vai ficar mais organizado e, como um bom &lt;strong&gt;Data Base&lt;/strong&gt; deve ser com relacionamento entre &lt;strong&gt;Tabelas&lt;/strong&gt;, &lt;strong&gt;Trigger&lt;/strong&gt;, &lt;strong&gt;Functions&lt;/strong&gt; e etc.&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Na verdade, pode haver boas razões para migrar um &lt;strong&gt;Data Base&lt;/strong&gt; de &lt;strong&gt;MySQL&lt;/strong&gt; para &lt;strong&gt;PostgreSQL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;  a segurança, desenpenho ou mesmo por um previlégio que so o outro &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;banco&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; possua e não pela falta de tempo de rescrever as tabelas...  &lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;E ná verdade o Postgre você poderá vender o seu produto com total tranquilidade (&lt;strong&gt;PostgreSQL&lt;/strong&gt; é &lt;strong&gt;licenciada BSD&lt;/strong&gt;, o diferente de &lt;strong&gt;MySQL&lt;/strong&gt;) e você pode encontrar artigos "&lt;strong&gt;Migrando MySQL &lt;/strong&gt;para &lt;strong&gt;PostgreSQL&lt;/strong&gt;" na web, mas.. você não vai encontrar nenhuma "&lt;strong&gt;Migrando PostgreSQL&lt;/strong&gt; para &lt;strong&gt;MySQL&lt;/strong&gt;" sinal que ele é bom.&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;PostgreSQL &lt;/strong&gt;não pode ser apenas mais um péssimo banco porque o que eu sei e andei lendo que vários &lt;strong&gt;softwares pupaleres de nome no mercado tem a base de dados&lt;/strong&gt; do Postgre vou citar uns &lt;strong&gt;Skype&lt;/strong&gt;, &lt;strong&gt;Cisco&lt;/strong&gt;, &lt;strong&gt;Juniper&lt;/strong&gt;, &lt;strong&gt;IMDb&lt;/strong&gt;, &lt;strong&gt;Pandora&lt;/strong&gt; ou &lt;strong&gt;NOVA&lt;/strong&gt; &lt;strong&gt;TV&lt;/strong&gt; decidiram confiar nele, além de a &lt;strong&gt;Sun Microsystems&lt;/strong&gt; tê-lo tornado como base de dados de escolha (e uma também que em janeiro de 2008 &lt;strong&gt;PostgreSQL&lt;/strong&gt; comprou o &lt;strong&gt;MySQL&lt;/strong&gt; UAHSUsuahs).&lt;br /&gt;&lt;br /&gt;No &lt;strong&gt;PostgreSQL&lt;/strong&gt; você ainda pode sentir um pouco como uma pessoa com segurança particular. Existem alguns grandes projetos que já reconheceram suas qualidades e que, embora o MySQL tenha sido sua primeira escolha de &lt;strong&gt;Banco de Dados&lt;/strong&gt;, e eles estão demonstrando esforço para fazer tudo funcionar.&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;Mas Voltando...&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Convertendo Base de Dados MySQL para PostgreSQL&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Primeiramente vamos fazer &lt;strong&gt;Backup&lt;/strong&gt; de nossa &lt;strong&gt;Data Base MySQL&lt;/strong&gt; com o &lt;strong&gt;software mysqldump&lt;/strong&gt; do próprio &lt;strong&gt;MySQL&lt;/strong&gt;:&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="center"&gt;&lt;/span&gt;&lt;code&gt;&lt;span style="color:#000000;"&gt;mysqldump --compatible=postgresql bancodedados &gt; bkp-bancodedados.sql&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Convertendo caracteres para o &lt;strong&gt;SQL&lt;/strong&gt; ficar funcional no &lt;strong&gt;PostgreSQL&lt;/strong&gt;:&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/p&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="center"&gt;&lt;/span&gt;&lt;code&gt;&lt;span style="color:#000000;"&gt;sed "s/\\\'/\'\'/g" bkp-bancodedados.sql&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Este processo vai demorar muito tempo porque o &lt;strong&gt;software&lt;/strong&gt; "&lt;strong&gt;sed&lt;/strong&gt;" varrerá todo o arquivo para fazer a conversão&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Colocando as coisas para funcionar: importando para o &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;PosgreSQL&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: #c0c0c0 8px solid; BORDER-TOP: #c0c0c0 8px solid; BORDER-LEFT: #c0c0c0 8px solid; BORDER-BOTTOM: #c0c0c0 8px solid" align="center"&gt;&lt;code&gt;&lt;span style="color:#000000;"&gt;psql -h server -d databasename -U username -W&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Com isso você acabo de migrar a sua estrutura de Dados de MySQL para PostgreSQL&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Alguns Likes do &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;PostgreSQL&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://dev.mysql.com/downloads/"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;MySQL&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.postgresql.org.br/"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Comunidade Brasileira de PostgreSQL&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.postgresql.org/"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PostgreSQL: The world's most advanced open source database&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://pgcon.postgresql.org.br/"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PGCon Brasil&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.postgresql.org/docs/"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PostgreSQL Documentation&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-4761217202766408179?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/4761217202766408179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/4761217202766408179'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/01/migrando-mysql-para-postgresql.html' title='Migrando MySQL para PostgreSQL'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_W4mx9wreaj4/S1yH9b8agzI/AAAAAAAAACc/QfBegrD9SQE/s72-c/mysqlpostgre.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-4616179928672383463</id><published>2010-01-24T08:45:00.000-08:00</published><updated>2010-01-24T14:12:23.189-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Migrações de Dados'/><title type='text'>Migrações de Dados</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_W4mx9wreaj4/S1yAutzoD8I/AAAAAAAAACM/cl9-c5hDzs4/s1600-h/migracao.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 192px;" src="http://1.bp.blogspot.com/_W4mx9wreaj4/S1yAutzoD8I/AAAAAAAAACM/cl9-c5hDzs4/s400/migracao.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5430356790760443842" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Bom &lt;strong&gt;Migração de Dados &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;presumo que você que esteja lendo ai tenha um pouco de conheçecimento da &lt;strong&gt;Tecnologia Básica de&lt;/strong&gt; &lt;strong&gt;Banco de Dados&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;. Então com o aumento de computadores e aplicativos nas ultimas décadas, foram criandas um grande números de diferentes tecnolígias de &lt;strong&gt;Gerenciamento de Dados&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;. E essas &lt;strong&gt;Tecnológias &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;vão de sistemas com arquivos de &lt;strong&gt;Textos&lt;/strong&gt; até &lt;strong&gt;Sistemas Relacionais de Banco de Dados&lt;/strong&gt; de grande porte indempendentemente do tipo de armazenamento de dados existentes, o que na época era a melhor solução hoje está desatualizando não é único motivo para que uma empresa decida migrar seus dados de um &lt;strong&gt;Sistema Gerencial de Bando de Dados&lt;/strong&gt; &lt;strong&gt;Relacional&lt;/strong&gt; (&lt;strong&gt;SGBDR&lt;/strong&gt;) para o outro. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;Bom aqui para frente vou fazer vários exemplos de linguagens utilizando &lt;strong&gt;Migrações de Dados&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, aguardem os tópicos.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Uma conclusão bem rápida a vocês ficarem entendendo melhor então, para a migração de um &lt;strong&gt;Banco de Dados&lt;/strong&gt; de uma tecnologia para outra existem diversos fatores que devem ser levados em consideração. Entre eles, os motivos para migrar e se a migração é a melhor solução. È necessário fazer uma análize antes completa do ambiente antigo quanto do novo para determinar se a migração pode ser feita com um risco razoável. Bom está ai a dica antes de tomar a decisão de migrar vários &lt;strong&gt;BACKUP's&lt;/strong&gt; é isso ai.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Obrigado.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3441342879044051463-4616179928672383463?l=elderstroparo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/4616179928672383463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3441342879044051463/posts/default/4616179928672383463'/><link rel='alternate' type='text/html' href='http://elderstroparo.blogspot.com/2010/01/migracoes-de-dados.html' title='Migrações de Dados'/><author><name>Elder Stroparo</name><uri>http://www.blogger.com/profile/13698668015879248964</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_W4mx9wreaj4/TDeixUY-yJI/AAAAAAAAAHk/WbDLBI-kr8s/S220/elderfoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_W4mx9wreaj4/S1yAutzoD8I/AAAAAAAAACM/cl9-c5hDzs4/s72-c/migracao.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3441342879044051463.post-3603221116588382639</id><published>2010-01-24T06:17:00.000-08:00</published><updated>2010-01-24T08:33:20.844-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Raspagem de Dados'/><title type='text'>Raspagem de Dados</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_W4mx9wreaj4/S1xvMc728BI/AAAAAAAAACE/WM6O0lcYX8w/s1600-h/figurabanco1.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 392px; height: 243px;" src="http://2.bp.blogspot.com/_W4mx9wreaj4/S1xvMc728BI/AAAAAAAAACE/WM6O0lcYX8w/s400/figurabanco1.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5430337510418346002" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Olá, hoje vou falar sobre o que é uma Raspagem de Dados ai pessoal. Comentarei sobre o que se trata, alguns detalhes, e também um exemplo aprensentarei e algumas questões relevantes. Vamos lá....&lt;br /&gt;&lt;br /&gt;O conceito de &lt;strong&gt;Raspagem de Dados&lt;/strong&gt;, ou &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;em&gt;Data Scrapping&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, não é novo. De acordo com a página americana da &lt;strong&gt;Wikipédia&lt;/strong&gt;, desde&lt;/span&gt;&lt;span style="font-family:arial;"&gt;os primórdios da informática já havia a necessidade e soluções para se obter dados a partir da tela do computador, ou seja, obter os dados que estão em telas, relatórios e outros formatos que não são convencionais.&lt;br /&gt;&lt;br /&gt;Com o surgimento da internet, cada vez mais dados são publicados on-line. Porém a maioria destes dados não é pronta para ser consumida, sob o ponto de vista de um &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Banco de Dados&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, e ser transformada em informação relevante. Isso quer dizer que é preciso, de alguma maneira, obter os dados publicados nos seus mais variados formatos, limpá-los e armazená-los em um formato que possa ser facilmente manipulado.&lt;br /&gt;&lt;br /&gt;Na área de banco de dados já existe uma sigla que resume este processo: &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;ETL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;. Um processo &lt;/span&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;ETL&lt;/span&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;&lt;span style="font-family:arial;"&gt;(&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;em&gt;Extract Transform Load - Extração Transformação Carga&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;) é adotado periodicamente ou esporadicamente e sua função é a extração de dados de diversos sistemas, a transformação desses dados conforme regras de negócios e, por fim, a transferência dos dados para um local de armazenamento. Geralmente utiliza-se ferramentas &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;ETL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; que possuem recursos para a manipulação de diversos formatos de dados, como &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Arquivos Texto&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;PDF&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;HTML&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;XML&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Dados Relacionais&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;DBF&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, etc. durante o processo &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;ETL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;. Além disso, as ferramentas específicas para se implementar o processo &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;ETL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; contam com mecanismos para modificar, complementar, consolidar, acrescentar, transformar, apagar e muitas outras formas de manipular dados antes de enviá-los ao seu destino final.&lt;br /&gt;&lt;br /&gt;Devido à peculiaridade, à variação de formato e até à forma de disponibilizar os dados na internet, as ferramentas que fornecem suporte para implementar &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;ETL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; não são capazes de obter e manipular os dados on-line muito bem. Devido a isso, muitas pessoas começaram a chamar o processo de obtenção e manipulação de dados on-line de raspagem de dados e criar ferramentas para auxiliar a obtenção de dados. Já existem até livros que abordam este assunto focando em como implementar a &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Raspagem de Dados&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; em linguagens específicas. Faz muito sentido pensar em &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;ETL&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; em um ambiente corporativo, pois algumas pesquisas recentes indicam que aproximadamente 80% do total de informação corporativa são armazenados em dados não estruturados.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Lembro-me de que uma das primeiras vezes em que li a respeito do termo &lt;strong&gt;Raspagens de Dados&lt;/strong&gt; foi no &lt;strong&gt;Google&lt;/strong&gt; durante e foi no ano passado ai em 2009 bem no fimzinho do ano. E andei pequeisando e vi vários e diversos projetos foram sendo publicados para obter dados visando ao ativismo digital, em especial para a área de fiscalização, ao acompanhamento político e também à obtenção de notícia e fotos. E de meu ponto de vista estes projetos sugerem que a obtenção de dados públicos pode facilitar e tornar transparente o acompanhamento de ações políticas, destino de recursos, causas e efeitos de atitudes, conscientização e outros fins. Contudo, é preciso separar a parte técnica envolvida na obtenção e na manipulação dos dados da parte que apresenta, interpreta e faz uso dos dados.&lt;br /&gt;&lt;br /&gt;Focando na parte técnica e voltando mais ao assunto de origem, geralmente as ferramentas de &lt;strong&gt;Raspagem de Dados&lt;/strong&gt; se baseiam aonde em que o dado está dentro de uma página HTML disponibilizada em um site. Neste cenário a &lt;strong&gt;Raspagem de Dados&lt;/strong&gt; se resume na obtenção e na manipulação destes dados, geralmente por meio de um &lt;strong&gt;&lt;em&gt;script&lt;/em&gt;&lt;/strong&gt; que acessa o &lt;strong&gt;&lt;em&gt;código fonte da(s) página(s) HTML&lt;/em&gt;&lt;/strong&gt;, faz uma cópia local deste conteúdo, aplica alguma regra para a obtenção do dados em si (&lt;strong&gt;&lt;em&gt;geralmente através de uma expressão regular ou instruções SQL&lt;/em&gt;&lt;/strong&gt;) e joga os dados em uma tabela de um banco de dados. Apesar de existirem outras fontes de dados &lt;strong&gt;OnLine&lt;/strong&gt;, como arquivos &lt;strong&gt;PDF&lt;/strong&gt;, imagens, animações flash, podcasts, planilhas &lt;strong&gt;on-line&lt;/strong&gt; e outros, o princípio das ferramentas que fazem &lt;strong&gt;Raspagem de Dsegue&lt;/strong&gt; o mesmo conceito básico.&lt;br /&gt;&lt;br /&gt;O uso de &lt;strong&gt;scripts&lt;/strong&gt; é feito devido à facilidade e à quantidade de recursos que podem ser empregados na &lt;strong&gt;Raspagem de Dados&lt;/strong&gt;. Geralmente este &lt;strong&gt;script&lt;/strong&gt; contém uma chamada para uma ferramenta ou instrução que faz uma requisição web por meio de um &lt;strong&gt;POST&lt;/strong&gt; ou &lt;strong&gt;GET&lt;/strong&gt;, que são comandos do protocolo &lt;strong&gt;HTTP&lt;/strong&gt;. Depois de obter a página, o &lt;strong&gt;script&lt;/strong&gt; geralmente salva o seu conteúdo em um arquivo no disco ou faz um parser no mesmo, ou seja, lê o código da página e obtém o dado que é relevante. Devido à variedade de formatos, &lt;strong&gt;layouts&lt;/strong&gt;, designs e outros fatores visuais encontrados nas páginas da web, geralmente os &lt;strong&gt;scritps&lt;/strong&gt; de &lt;strong&gt;Raspagem de Dados&lt;/strong&gt; são customizados para uma determinada fonte.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Como exemplo que na minha pesquisa encontrei e posso citar foi, o projeto &lt;strong&gt;Legisdados&lt;/strong&gt;, um projeto para agregar &lt;strong&gt;software&lt;/strong&gt; de extração de dados do &lt;strong&gt;Legislativo Brasileiro&lt;/strong&gt;. A iniciativa partiu dos projetos &lt;strong&gt;CongressoAberto&lt;/strong&gt; e &lt;strong&gt;ParlamentoAberto&lt;/strong&gt; que, como fica claro pelos nomes, têm muito em comum. Para evitar repetição de esforços e desacoplar extração de dados de aplicações escritas usando esses dados, o projeto agrega &lt;strong&gt;scripts&lt;/strong&gt; de &lt;strong&gt;Raspagem de Dados&lt;/strong&gt; relativos ao poder &lt;strong&gt;Legislativo&lt;/strong&gt;. A idéia é aumentar a colaboração entre os dois projetos e incentivar o surgimento de novas aplicações.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Atualmente já existem algumas ferramentas e produtos além de projetos independentes para a &lt;strong&gt;Raspagem de Dados&lt;/strong&gt;. Destaco o &lt;strong&gt;Yahoo! Query Language (YQL)&lt;/strong&gt;, uma excelente linguagem que pode ser utilizada em conjunto com a plataforma &lt;strong&gt;Yahoo! Pipes&lt;/strong&gt;. Além disso, existem diversas outras ferramentas que permitem a &lt;strong&gt;Raspagem de Dados&lt;/strong&gt;, como vou apresentar os linkes na parte final do artigo. &lt;br /&gt;&lt;br /&gt;Uma rápida pesquisa por ferramentas de &lt;strong&gt;Screen Scraper&lt;/strong&gt; em qualquer buscador vai retornar uma quantidade considerável de ferramentas para a &lt;strong&gt;Raspagem de Dados&lt;/strong&gt;. Porém, por mais adequada que seja a ferramenta, sempre é preciso algum nível de customização ou, na maioria das vezes, algum esforço de programação. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;1. Entenda a fonte de dados&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Antes de obter o dado &lt;strong&gt;on-line&lt;/strong&gt; é preciso conhecer muito bem a fonte de dados. Isso quer dizer que é preciso navegar pela página, verificar se as informações são paginadas, colocadas em uma tabela, frame, área dinâmica ou controle, se requerem um login, se são disponibilizadas em um arquivo, possuem acesso via &lt;strong&gt;API&lt;/strong&gt;, seguem algum padrão de apresentação e organização e outros detalhes relevantes. Um exemplo é da &lt;em&gt;&lt;strong&gt;#cparty&lt;/strong&gt;&lt;/em&gt; &lt;/span&gt;&lt;span style="font-family:arial;"&gt;entender o parâmetro da &lt;strong&gt;URL&lt;/strong&gt; utilizada na parte de arquivos isso quer dizer que a cada requisição do tipo &lt;strong&gt;GET&lt;/strong&gt; precisa passar um parâmetro da página que queira fazer a consulta. &lt;br /&gt;&lt;br /&gt;Este tipo de atitude é comum. Fazer &lt;strong&gt;Raspagem de Dados&lt;/strong&gt; com certeza vai acabar envolvendo a manipulação de parâmetros de uma &lt;strong&gt;URL&lt;/strong&gt;, principalmente quando não se deseja obter todos os dados de um vez só, ou seja, são necessários filtros. Novamente, aqui não há regra: cada site da web possui um jeito de apresentar informações, porém para evitar a sobrecarga geralmente algum tipo de paginação é feita, que pode apresentar a forma de links com o número da página, controles do tipo &lt;strong&gt;combo-box&lt;/strong&gt; ou outros. Em alguns casos é preciso até fornecer parâmetros de pesquisa em um controle e forçar um &lt;strong&gt;POST&lt;/strong&gt; para se chegar os dados ao invés de simplesmente fazer uma requisição do tipo &lt;strong&gt;GET&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Há casos mais complexos onde é preciso realizar um login antes ou até elaborar alguma maneira de se ler um dado que não está armazenado em texto, como dados colocados dentro de uma &lt;strong&gt;figura&lt;/strong&gt;, &lt;strong&gt;animações flash&lt;/strong&gt; ou &lt;strong&gt;arquivos PDFs&lt;/strong&gt;. Nestas situações é preciso primeiro entender o que é necessário para se obter o dados para só depois pensar na tecnologia necessária para se extrair o dado e transformá-lo no formato adequado.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;2. Planejar como será feita a obtenção bruta dos dados&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Uma vez que é já se conhecem os detalhes da fonte de dados é hora de planejar como será planejada a obtenção dos dados. Isso quer dizer é preciso relacionar ferramentas, ambiente, plataforma, link de internet e outros recursos tecnológicos necessários para se obter os dados. Aqui também não há uma regra geral, pois cada situação pode requerer uma ferramenta específica. Por exemplo, se o dado está armazenado em uma imagem pode ser preciso utilizar uma biblioteca &lt;strong&gt;OCR&lt;/strong&gt; ou algo similar para se obter o dado. Outra situação envolve animações em &lt;strong&gt;flash&lt;/strong&gt;, estruturas de dados em &lt;strong&gt;JavaScript&lt;/strong&gt;, aplicativos em &lt;strong&gt;Java&lt;/strong&gt;, &lt;strong&gt;silverlight&lt;/strong&gt; ou algo assim. Obter dados que estão dentro destas tecnologias pode ser complexo, porém não impossível.&lt;br /&gt;&lt;br /&gt;Bom este exemplo eu decidi utilizar um script em &lt;strong&gt;SQL&lt;/strong&gt; por conveniência, uma vez que tenho experiência nesta linguagem pois começei a estudar &lt;strong&gt;SQL&lt;/strong&gt; e foram os meus primeiros passos em &lt;strong&gt;Linguagens de Banco de Dados&lt;/strong&gt;. Bom então planejei montar um &lt;strong&gt;script&lt;/strong&gt; que faria uma chamada a um executável no console com o objetivo de obter a página em um arquivo texto. Esta chamada foi colocada dentro de um loop onde criei dinamicamente o número da página na &lt;strong&gt;URL&lt;/strong&gt; que seria passada como parâmetro para o aplicativo de código livre &lt;strong&gt;wget.exe&lt;/strong&gt; para plataforma &lt;strong&gt;Windows&lt;/strong&gt;. Este pequeno programa &lt;strong&gt;wget.exe&lt;/strong&gt; recebe como parâmetro a &lt;strong&gt;URL&lt;/strong&gt; da página e o arquivo texto onde será armazenado o código &lt;strong&gt;HTML&lt;/strong&gt;. Após o loop eu joguei todas as páginas em um único arquivo &lt;strong&gt;HTML&lt;/strong&gt;. &lt;br /&gt;&lt;br /&gt;Depois de capturar os dados eu teria um arquivo texto grande com todo o conteúdo das páginas. Apesar de conter os dados que eu queria, o arquivo também tinha muitas &lt;strong&gt;tags HTML&lt;/strong&gt; que não me interessavam e que foram removidas em um passo posterior. E vamos lá.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;3. Programar a captura dos dados&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Uma vez que o planejamento estava pronto, bastou programar o &lt;strong&gt;script&lt;/strong&gt; que montava o &lt;strong&gt;loop&lt;/strong&gt; e fazer a chamada ao arquivo &lt;strong&gt;wget.exe&lt;/strong&gt;. Neste ponto me deparei com alguns detalhes de implementação, como a necessidade de criar um arquivo &lt;strong&gt;.bat&lt;/strong&gt; para poder chamar o arquivo &lt;strong&gt;wget.exe&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Geralmente a implementação da &lt;strong&gt;Raspagem de Dados&lt;/strong&gt; envolve muitos detalhes específicos, como a utilização de &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;bibliotecas &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;no&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt; script&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:arial;"&gt;, a criação de &lt;strong&gt;nomeclaturas&lt;/strong&gt; para os arquivos, a alocação de espaço em disco e outros detalhes técnicos. Vale a pena lembrar também que neste passo de programação é preciso efetuar testes e também considerar questões de desempenho e acesso aos dados. Algumas páginas da Web podem perceber que estão recebendo muitas requisições simultâneas de um mesmo endereço &lt;strong&gt;IP&lt;/strong&gt; e &lt;strong&gt;bloquear&lt;/strong&gt; o acesso. Para isso, faça testes que possam ajudar a identificar problemas quando o &lt;strong&gt;script&lt;/strong&gt; da &lt;strong&gt;Raspagem&lt;/strong&gt; for &lt;strong&gt;executado&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;4. Verificar os dados capturados e realizar a limpeza&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Após programar e executar o &lt;strong&gt;script&lt;/strong&gt; que faz a &lt;strong&gt;Raspagem de Dados&lt;/strong&gt; é preciso verificar se tudo ocorreu bem e se os dados brutos realmente foram capturados. Aqui não é preciso realizar uma verificação completa, e sim apenas checar se o processo automático realmente capturou os dados. &lt;br /&gt;&lt;br /&gt;Na maioria das situações a &lt;strong&gt;Raspagem de Dados&lt;/strong&gt; não trará os dados já prontos e no formato adequado, a não ser que isso seja planejado desde o começo &lt;strong&gt;by design&lt;/strong&gt;. Isso quer dizer que geralmente muito do que foi capturado precisa ser limpo e transformado em informação que realmente pode ser manipulada da maneira desejada.&lt;br /&gt;&lt;br /&gt;Aqui temos algumas opções que envolvem trabalhar diretamente no que foi capturado ou jogar tudo em um local que forneça recursos para manipulação dados. Os &lt;strong&gt;Bancos de Dados&lt;/strong&gt; atuais trabalham muito bem com a linguagem &lt;strong&gt;SQL&lt;/strong&gt;, que é feita sob medida para tornar fácil a manipulação de dados. Porém existem diversas outras ferramentas que permitem o uso de expressões regulares para limpar os dados, em especial a linguagem Perl e vários comandos do &lt;strong&gt;Shell &lt;/strong&gt;do &lt;strong&gt;Unix,&lt;/strong&gt; que também conta com o conveniente mecanismo de redirecionamento de dados conhecido como &lt;strong&gt;pipes&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Na maioria das vezes é preciso eliminar dados irrelevantes que vieram junto com os dados desejados. Eu optei por carregar todo o arquivo com os dados capturados em uma tabela com uma única coluna contendo caracteres sem limites. A separação em linhas foi feita de acordo com os caracteres separadores de final de linhas (&lt;strong&gt;CR+LF&lt;/strong&gt;). Aliás, quem trabalha com raspagem de dados em texto deve estar preparado para conhecer bem certos caracteres especiais, especialmente os caracteres de controle.&lt;br /&gt;&lt;br /&gt;Já com os dados carregados em uma só tabela eu complementei o &lt;strong&gt;script&lt;/strong&gt; com diversas instruções &lt;strong&gt;UPDATE&lt;/strong&gt; e &lt;strong&gt;DELETE&lt;/strong&gt; que eliminaram as linhas que eu não queria. Além disso, pude utilizar a instrução &lt;strong&gt;SELECT&lt;/strong&gt; para prototipar as chamadas às funções que manipulam strings (&lt;strong&gt;SUBSTRING&lt;/strong&gt;, &lt;strong&gt;REPLACE&lt;/strong&gt;, etc) e montar as colunas com os dados no formato que eu precisava.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;5. Carregar no banco de dados e adequar os dados ao formato modelado&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Uma vez que já se tenha realizado a &lt;strong&gt;limpeza&lt;/strong&gt; nos dados e outras &lt;strong&gt;manipulações&lt;/strong&gt;, recomenda-se colocar os dados em um formato que seja adequado. Este passo muitas vezes requer a &lt;strong&gt;modelagem&lt;/strong&gt; de uma ou mais tabelas em um &lt;strong&gt;Banco de Dados&lt;/strong&gt; visando à integração com um sistema ou com uma ferramenta que possa fazer a visualização de dados de forma gráfica. Além disso, as ferramentas de relatórios ou de mineração de dados podem exigir um formato proprietário que pode ser facilmente gerado através de ferramentas de &lt;strong&gt;importação&lt;/strong&gt; e &lt;strong&gt;exportação dos banco &lt;/strong&gt;&lt;strong&gt;de dados&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Destaco que a &lt;strong&gt;modelagem&lt;/strong&gt; é uma tarefa muito importante, principalmente quando se fala em integração com dados já existentes que estão separados em várias tabelas. Aqui é preciso tomar cuidado na ordem de inserção, pois relacionamentos de &lt;strong&gt;chave primária&lt;/strong&gt; (&lt;strong&gt;PK&lt;/strong&gt;) e &lt;strong&gt;chave estrangeira&lt;/strong&gt; (&lt;strong&gt;FK)&lt;/strong&gt; forçam a integridade relacional do &lt;strong&gt;Banco de Dados&lt;/strong&gt; e requerem uma ordem específica de inserção, deleção e atualização dos dados.&lt;br /&gt;&lt;br /&gt;No exemplo da que montei foi fácil criar uma tabela a partir da instrução &lt;strong&gt;SELECT&lt;/strong&gt; que já separava corretamente as colunas da tabela. Fiz isso utilizando a cláusula &lt;strong&gt;INTO&lt;/strong&gt; da instrução &lt;strong&gt;SELECT&lt;/strong&gt;, pois no &lt;strong&gt;SQL&lt;/strong&gt; Server esta cláusula permite a criação de uma tabela a partir do que a instrução &lt;strong&gt;SELECT&lt;/strong&gt; retornar. Porém tive também que adequar os dados obtidos ao formato dos tipos de dados do&lt;strong&gt; SQL Server&lt;/strong&gt;, o que deu certo trabalho. Foi especialmente complicado adequar a data da mensagem devido ao formato necessário para a inserção desta data no tipo de dados &lt;strong&gt;DATETIME&lt;/strong&gt; do &lt;strong&gt;SQL Server&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Quanto todos os dados já estavam armazenados na tabela fiz questão de criar índices e também uma &lt;strong&gt;chave primária&lt;/strong&gt; (&lt;strong&gt;PK&lt;/strong&gt;) artificial para que a manipulação apresentasse uma performance razoável. Como utilizei o site &lt;strong&gt;ManyEyes&lt;/strong&gt; para realizar algumas visualizações, tive que &lt;strong&gt;exportar os dados&lt;/strong&gt; para outro arquivo texto já com as palavras separadas por cada dia do evento.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;6. Deixar a solução pronta para ser utilizada novamente&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Algumas &lt;strong&gt;Raspagens de Dados&lt;/strong&gt; precisam ser periódicas, ou seja, devem ser executadas com alguma freqüência. Nestes casos vale a pena incrementar o &lt;strong&gt;script&lt;/strong&gt; e montá-lo de forma que possa ser chamado várias vezes e em &lt;strong&gt;vários horários automaticamente&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Isso implica em planejamento de armazenamento, &lt;strong&gt;expurgo de dados&lt;/strong&gt;, horário de execução e recursos adicionais como &lt;strong&gt;backup&lt;/strong&gt;, garantia de largura de banda e &lt;strong&gt;backup&lt;/strong&gt;. A forma de impl
