<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>banco-de-dados &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/banco-de-dados/</link>
	<description>Feed of posts on WordPress.com tagged "banco-de-dados"</description>
	<pubDate>Sun, 03 Jan 2010 17:31:47 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Resetando a senha de root do MySQL ]]></title>
<link>http://diretoriadolinux.wordpress.com/2009/11/30/resetando-a-senha-de-root-do-mysql/</link>
<pubDate>Mon, 30 Nov 2009 11:15:51 +0000</pubDate>
<dc:creator>rdlinux</dc:creator>
<guid>http://diretoriadolinux.wordpress.com/2009/11/30/resetando-a-senha-de-root-do-mysql/</guid>
<description><![CDATA[Algumas vezes por ironia do destino  é  necessário resetar a senha de root do MySQL. Caso esse seja ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:justify;">Algumas vezes por ironia do destino  é  necessário resetar a senha de root do MySQL.</p>
<p style="text-align:justify;">Caso esse seja seu caso, siga os passos a seguir.</p>
<ul style="text-align:justify;">
<li>Pare o serviço  MySQL, e inicie com o modo<em> </em><strong><em>skip-grant-tables</em> </strong>como mostrado abaixo:</li>
</ul>
<p style="text-align:justify;"><strong><em> /etc/init.d/mysql sto</em><em>p</em></strong></p>
<p style="text-align:justify;"><strong><em> mysqld_safe &#8211;skip-grant-tables &#38;</em></strong></p>
<ul style="text-align:justify;">
<li>Abra o terminal e depois acesse o console do MySQL:</li>
</ul>
<p style="text-align:justify;"><strong><em> mysql -u root</em></strong></p>
<ul style="text-align:justify;">
<li>Agora vamos setar a nova senha de usuário root:</li>
</ul>
<div id="_mcePaste" style="text-align:justify;"><strong><em> flush privileges;</em></strong></div>
<div id="_mcePaste" style="text-align:justify;"><strong><em> use mysql; </em></strong></div>
<div id="_mcePaste" style="text-align:justify;"><strong><em> update user set Password=PASSWORD(&#8216;NOVA SENHA&#8217;) where user=&#8217;root&#8217;;</em></strong></div>
<div id="_mcePaste" style="text-align:justify;"><strong><em> grant all privileges on *.* to root@localhost identified by &#8216;NOVA SENHA&#8217; with grant option;</em></strong></div>
<div id="_mcePaste" style="text-align:justify;"><strong><em> flush privileges; </em></strong></div>
<div style="text-align:justify;">
<ul>
<li><strong><em><span style="font-style:normal;font-weight:normal;">Com a senha alterada, basta reinciar o servio MySQL:</span></em></strong></li>
</ul>
</div>
<p style="text-align:justify;"><strong>/etc/init.d/mysql restart</strong></p>
<p>Referência: http://www.thigomes.com/resetando-a-senha-de-root-no-mysql/</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Probleminha logo no inicio. Php5 e MySQL]]></title>
<link>http://lambdas.wordpress.com/2009/11/26/probleminha-logo-no-inicio-php5-e-mysql/</link>
<pubDate>Thu, 26 Nov 2009 22:58:46 +0000</pubDate>
<dc:creator>Dimmy Magalhães</dc:creator>
<guid>http://lambdas.wordpress.com/2009/11/26/probleminha-logo-no-inicio-php5-e-mysql/</guid>
<description><![CDATA[Senhores, Logo que configurei os arquivos do WordPress o mesmo me retornou essa mensagem: Your PHP i]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Senhores,</p>
<p>Logo que configurei os arquivos do WordPress o mesmo me retornou essa mensagem:</p>
<blockquote><p>Your PHP installation appears to be missing the MySQL extension which is required by WordPress.</p></blockquote>
<p>Para resolver isso eu segui esses passos:</p>
<ul>
<li>Certifique-se que o MySQL através de:</li>
</ul>
<p><code># /etc/init.d/mysql status</code></p>
<ul>
<li>Se o MySQL não estiver rodando faça:If MySQL is not running, enter:</li>
</ul>
<p><code># /etc/init.d/mysql start</code></p>
<ul>
<li>Se o Banco não tiver sido instalado correto:</li>
</ul>
<p><code># apt-get remove mysql-server</code></p>
<p><code># apt-get install mysql-server</code></p>
<ul>
<li>Veja se o módulo do PHP5 para MySQL está instalado:</li>
</ul>
<p><code># dpkg --list &#124; grep php5-mysql</code></p>
<ul>
<li>Para instala-lo faça:</li>
</ul>
<p><code># apt-get install php5-mysql</code></p>
<ul>
<li>Por fim, restart o apache</li>
</ul>
<p><code># /etc/init.d/apache2 restart</code></p>
<p>Pronto, esses passos devem resolver seu problema</p>
<p>Enjoy</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[UM CATÁLOGO DA VIOLÊNCIA NO SÉCULO XX]]></title>
<link>http://noticiasdobem.wordpress.com/2009/11/26/um-catalogo-da-violencia-no-seculo-xx/</link>
<pubDate>Thu, 26 Nov 2009 17:59:14 +0000</pubDate>
<dc:creator>noticiasdobem</dc:creator>
<guid>http://noticiasdobem.wordpress.com/2009/11/26/um-catalogo-da-violencia-no-seculo-xx/</guid>
<description><![CDATA[“SITE ORGANIZADO POR CIENTISTA POLÍTICO FRANCÊS ABRIGA BANCO DE DADOS SOBRE OS GRANDES MASSACRES DOS]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://noticiasdobem.wordpress.com/files/2009/11/judeus-1.jpg"><img class="aligncenter size-full wp-image-2646" title="judeus 1" src="http://noticiasdobem.wordpress.com/files/2009/11/judeus-1.jpg" alt="" width="414" height="439" /></a></p>
<p style="text-align:center;">“SITE ORGANIZADO POR CIENTISTA POLÍTICO FRANCÊS ABRIGA BANCO DE DADOS SOBRE OS GRANDES MASSACRES<br />
DOS ÚLTIMOS CEM ANOS”</p>
<p><a href="http://www2.uol.com.br/historiaviva/" target="_blank">História Viva</a> &#8211; Bruno Fiuza</p>
<p style="text-align:justify;">“O francês Jacques Sémelin, professor do Instituto de Estudos Políticos de Paris, passou os últimos 20 anos pesquisando a história dos grandes massacres do século XX. Em 2007, essa extensa investigação deu origem ao livro <em>Purificar e destruir – Usos políticos dos massacres e dos genocídios</em>, um estudo comparativo da violência em massa durante o Holocausto, em Ruanda e na Bósnia que foi publicado este ano no Brasil pela editora Difel. Sémelin, no entanto, não se contentou em transformar seu estudo em livro, e agora trabalha em um projeto inédito: a organização de uma enciclopédia virtual da violência em massa no século XX.</p>
<p>Depois de quatro anos de gestação, o site do projeto foi lançado no ano passado. Reunindo material produzido por pesquisadores renomados, a <em><a href="http://www.massviolence.org/" target="_blank">Enciclopédia online da violência em massa</a> </em>pretende oferecer gratuitamente a qualquer usuário da internet um extenso banco de dados com informações sobre genocídios e massacres perpetrados no planeta ao longo do mais violento século da história. O site reúne biografias dos responsáveis&#8230;” <a href="http://www2.uol.com.br/historiaviva/noticias/uma_enciclopedia_dos_genocidios_do_seculo_xx.html" target="_blank">(Leia e comente)</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mapeamento MER MR]]></title>
<link>http://mardemes.wordpress.com/2009/11/25/mapeamento-mer-mr/</link>
<pubDate>Wed, 25 Nov 2009 21:11:16 +0000</pubDate>
<dc:creator>mardemes</dc:creator>
<guid>http://mardemes.wordpress.com/2009/11/25/mapeamento-mer-mr/</guid>
<description><![CDATA[]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><!-- SlideShare error: doc is missing or has illegal characters /[^-_a-zA-Z0-9]/ --></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Paradigmas do MongoDB]]></title>
<link>http://mauricioszabo.wordpress.com/2009/11/24/paradigmas-do-mongodb/</link>
<pubDate>Wed, 25 Nov 2009 00:50:17 +0000</pubDate>
<dc:creator>Maurício Szabo</dc:creator>
<guid>http://mauricioszabo.wordpress.com/2009/11/24/paradigmas-do-mongodb/</guid>
<description><![CDATA[Esses dias trabalhei firme no meu mapeador para MongoDB, o MongoParadigm. O código dele, como sempre]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Esses dias trabalhei firme no meu mapeador para MongoDB, o MongoParadigm. O código dele, como sempre, está disponível no GitHub. Atualmente estou me esforçando para integrar ele com Rails, e depois disso tudo pretendo finalmente implementar o &#8220;has :many&#8221; e o &#8220;belongs_to&#8221;. Pensei como seriam essas associações, e percebi que elas era a parte menos importante do MongoDB.</p>
<p>Isso porque eu acho que estou entendendo o que exatamente é uma base de dados orientada a &#8220;documentos&#8221;, finalmente &#8211; trabalhando na UFABC, é fácil de ver esse tipo de coisa: O registro de um aluno é um documento (no caso, de uma pessoa). O histórico do aluno é outro documento &#8211; e essa é a parte interessante, o histórico é <b>um</b> documento que pertence a <b>um</b> aluno, e não o contrário. Isso deve ficar bem documentado no MongoDB, porque apesar de não parecer, as bases de dados relacionais levam a gente a pensar de forma não-natural. Por exemplo, quando você vai armazenar um histórico de notas de um aluno em uma base relacional, normalmente você não armazena UM histórico, e sim um monte de registros que estão ligadas a um aluno por uma chave. Agora, é perfeitamente simples de entender porque o MongoDB não implementa trasações &#8211; afinal, no caso dele, se fosse necessária uma alteração se está mexendo em UM documento, e não em 20 registros, por exemplo.</p>
<p><!--more--></p>
<p>Ainda tenho algumas dúvidas sobre como implementar tudo isso (e também, como ligar isso ao Rails &#8211; formulários deveriam ser revistos, porque todos sabemos que o Rails nunca pensou, por motivos óbvios, em atributos multi-valorados). Por exemplo, não há saída fácil para cadastrar uma estrutura como a que segue, no Rails:</p>
<pre>
<pre class="brush: jscript;">
{
  nome_disciplina: &#34;Linguagem de Programação&#34;,
  horarios: [
    { dia_semana: &#34;segunda&#34;, inicio: &#34;10:00&#34;, fim: &#34;12:00&#34; },
    { dia_semana: &#34;terça&#34;, inicio: &#34;08:00&#34;, fim: &#34;09:00&#34; },
  ]
}
</pre>
</pre>
<p>Isso, porque o Rails não prevê uma maneira de fazer os horários, por exemplo. Nomear os &#8220;input fields&#8221; como horarios[][dia_semana] às vezes dá bagunça, e não vejo uma maneira fácil de integrar com o &#8220;form_for&#8221;, por exemplo. Além disso, tem as validações: eu preciso de alguma forma dizer que a validação é da seguinte maneira: se o Array &#8220;horários&#8221; for vazio, dá erro. Agora, se ele tiver elementos, deve iterar nesses elementos e ver se o primeiro elemento possui &#8220;dia_semana&#8221; válido, &#8220;início&#8221; válido&#8230; e também não vejo uma maneira fácil de fazer isso.</p>
<p>Mas acho que esse é o menor dos problemas. O que eu preciso fazer é dar uma maneira de integrar o MongoParadigm com o Rails &#8211; Fixtures, Migrations (embora ele seja Schemaless, não significa que não seja possível fazer Migrations &#8211; bem ou mal, acredito que existirão momentos não muito raros em que precisaremos transformar um Documento que foi pensado de um jeito em um outro formato), e até mesmo um rake db:fixtures:load ajudaria bastante. Depois disso, associações &#8211; isso porque, é tão simples esse modelo que na verdade não vejo muito uso para associações. Por exemplo:</p>
<p>Hoje temos: Aluno pertence a Pessoa, que tem muitos Perfis através de PerfisPessoa, que tem muitas Diretivas de Acesso através do DiretivasPerfil. Só nesse caso, é uma associação 1 para 1, e duas associações Muitos para Muitos. Se eu precisar de uma nova associação, provavelmente vou fazer da seguinte forma: Uma pessoa (que contém aluno) tem muitos Perfis (a foreign-key, digamos assim, fica guardada no próprio documento de Pessoas) e o Perfil possui muitas Diretivas (de novo, o Foreign-key fica em Perfil). Eu elimino 3 tabelas nesse caso, e ainda de graça ganho algumas vantagens que eu não tenho no meu modelo atual: eu posso buscar quais Perfis possuem duas Diretivas específicas, por exemplo. A busca é simples, portanto dá pra viver sem ela por um tempo.</p>
<p>E principalmente &#8211; o MongoParadigm funciona como se fosse um Hash do Ruby. Na verdade, é mais ou menos uma mistura entre o Hash e o OpenStruct, mas menos flexível que o segundo e mais flexível que o primeiro. Para todos os efeitos, é um Hash normal, mas tem o &#8220;save&#8221; e o &#8220;update_attributes&#8221; que todos os railers amam. Também é bom tomar um cuidado especial com o &#8220;update_attributes!&#8221;, porque ao contrário do Rails, ele não é tão inofensivo. Por exemplo:</p>
<pre>
<pre class="brush: ruby;">
class Pessoa &#60; MongoParadigm::Document
end

eu = Pessoa.create :nome =&#62; 'Fulano', :idade =&#62; 30
eu.update_attributes :idade =&#62; 10
p eu #Retorna Pessoa: { :nome =&#62; 'Fulano', :idade =&#62; 10 }

eu.update_attributes! :idade =&#62; 10
p eu #Retorna Pessoa: { :idade =&#62; 10 }
</pre>
</pre>
<p>Ou seja, o segundo caso basicamente apaga todos os outros atributos que você já tinha cadastrado. Acho importante esse caso porque acredito que será útil em alguns registros, mas basta lembrar que não existe (ainda &#8211; não sei se definitivamente, mas para falar a verdade não vejo porque incluir) algo que funcione como o &#8220;save!&#8221; ou o &#8220;create!&#8221;, ou mesmo o &#8220;update_attributes!&#8221; do Rails. O único que retorna uma exceção é o &#8220;get&#8221;, que seria um equivalente ao &#8220;find&#8221; do Rails (por ID). Mas mesmo o &#8220;find&#8221; é diferente porque ele busca de uma maneira mais &#8220;MongoDB&#8221; e menos &#8220;SQL&#8221;.</p>
<p>Agora, porque essas diferenças? Simples &#8211; porque MongoDB não é SQL. Se o MongoDB trabalha bem com Hashes, e o Ruby trabalha bem com Hashes, porque transformar isso em um &#8220;registro&#8221;, com atributos, foreign-keys, &#8220;embedded documents&#8221; e outras terminologias quando o documento na verdade é um Hash? Para mim isso não fazia o menor sentido, e por isso comecei esse mapeador. Ele ainda não foi transformado em Gem, mas o código já está bem estável e já pode ser usado em muitos exemplos &#8211; embora ainda tenha algumas &#8220;arestas&#8221; que eu pretendo aparar com a integração com Rails.</p>
<p>Independente de usarem este ou outro mapeador, vale dizer que o MongoDB é um projeto interessante que merece mais atenção do que está tendo &#8211; a idéia de MapReduce do CouchDB é bem interessante, e eles pegaram carona legal com o Google (que é um grande defensor deste algoritmo) mas as buscas do Mongo ainda são insuperáveis. Isto, claro, na minha opinião.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Modelo de Dados Relacional ]]></title>
<link>http://mardemes.wordpress.com/2009/11/24/modelo-de-dados-relacional/</link>
<pubDate>Tue, 24 Nov 2009 13:21:22 +0000</pubDate>
<dc:creator>mardemes</dc:creator>
<guid>http://mardemes.wordpress.com/2009/11/24/modelo-de-dados-relacional/</guid>
<description><![CDATA[Modelo de Dados Relacional 1. Conceitos do Modelo Relacional - O modelo relacional representa o banc]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Modelo de Dados Relacional</p>
<p>1. Conceitos do Modelo Relacional</p>
<p>- O modelo relacional representa o banco de dados como uma coleção de relações;<br />
- Uma relação pode ser vista como uma tabela ou arquivo;<br />
- Quando uma relação é vista como uma tabela, cada linha é representa uma coleção de dados relacionados;<br />
- Ou seja, pode ser encarada como uma instância de uma entidade ou de um relacionamento;<br />
- Na terminologia do modelo relacional formal, cada linha é uma tupla, o nome de uma coluna é chamado de atributo e uma tabela é chamada de relação;<br />
- Os tipos de dados de cada coluna são chamados domínios;<br />
- Para um domínio é dado um nome, tipo de dado e um formato;</p>
<p>Um esquema de relação é feito de um nome de relação (R) e uma lista de atributos (A1, A2, .., An). Cada atributo Ai é o nome desempenhado por algum domínio D no esquema R. O grau de uma relação é o número de atributos (n) de seu esquema de relação. Uma relação pode ser definida matematicamente como um subconjunto do produto cartesiano dos domínios que definem o esquema R.</p>
<p>2. Características de Relações</p>
<p>- Uma relação é diferente de uma tabela ou arquivo.<br />
- Ordem de tuplas em uma relação. Uma relação é definida como um conjunto de tuplas.<br />
- Matematicamente falando, elementos de um conjunto não têm ordem entre eles.<br />
- Entretanto, muitas ordens lógicas podem ser especificadas para uma relação, embora, pela definição de relação, não exista qualquer ordem. Quando uma relação é implementada como um arquivo, uma ordem física tem que ser imposta.<br />
Ordem de valores dentro de uma tupla. De acordo com a definição de relação dada acima, uma tupla é uma lista ordenada de valores. Nesta situação, é importante a ordem em que os atributos aparecem em um esquema de relação. Entretanto, esta ordem não é realmente importante, desde que seja mantido a correspondência entre atributos e valores.<br />
Valores nas tuplas. Cada valor em uma tupla terá um valor atômico, ou seja, atributos compostos ou multivalorados não são permitidos. Esta é a chamada primeira forma normal. Um valor especial, chamado null, é usado para quando não se sabe o valor do atributo ou o valor não é aplicável.<br />
Interpretação de uma relação. Um esquema de relação pode ser interpretado como um fato (ou assertiva); ou pode ser visto como a representação de entidades ou de relacionamentos; ou ainda, pode ser visto como predicados, neste caso, os valores das tuplas representariam os valores que satisfazem os predicados.</p>
<p>3. Restrições Relacionais</p>
<p>Restrições de Domínio. Especifica que o valor de cada atributo A deve ser um valor atômico do domínio dom(A).<br />
Restrições de chave. Por definição, todos os elementos de um conjunto são distintos. Consequentemente, todas as tuplas em uma relação devem também serem distintas. Isto significa que não deve existir duas tuplas com a mesma combinação de valores para todos os atributos. Usualmente, existem outros subconjuntos de atributos com a mesma propriedade acima, que são chamados super-chave, que especifica a restrição de ser único. Toda a relação tem, no mínimo, uma super-chave que é a junção de todos os atributos. Uma super-chave pode ter, entretanto, atributos redundantes (ou seja não necessários para serem únicos). Um conceito mais útil é o de chave, que é uma super-chave com a propriedade de que se eliminarmos qualquer atributo leva a um conjunto de atributos que não mais é uma super-chave. A restrição de ser única é para todo o estado da relação no esquema, ou seja, deve ser atingida mesmo quando novas tuplas são inseridas na relação. Se uma relação tem mais de uma chave, estas são chamadas chaves candidatas. Uma das chaves candidatas é designada chave primária.<br />
Restrição de nulo. Pode ser especificado se valor nulo pode ou não ser permitido.</p>
<p>4. Bancos de Dados Relacionais e Esquemas</p>
<p>Um banco de dados relacional contem muitas relações e as tuplas (das relações) de alguma forma estão relacionadas.<br />
Um esquema de banco de dados relacional é um conjunto de esquemas de relações e um conjunto de restrições de integridade.<br />
O estado de um banco de dados relacional é um conjunto de estados de relação.</p>
<p>5. Integridade de Entidade, Integridade Referencial e Chaves Estrangeiras</p>
<p>A restrição de integridade de entidade diz que nenhum valor de chave primária pode ser nulo. Esta restrição (assim como a restrição de chave) é aplicada em relações individuais.<br />
A restrição de integridade referencial é especificada entre duas relações e é usada para manter a consistência entre tuplas das duas relações. Informalmente, a restrição de integridade referencial diz que uma tupla da relação (R1), que refere-se a outra relação (R2), deve referir-se a uma tupla existente em R2.<br />
Uma chave estrangeira especifica uma restrição de integridade referencial entre duas relações R1 e R2, de tal forma que, se um conjunto de atributos FK no esquema de relação R1 é uma chave estrangeira de R1 que referencia a relação R2 se esta satisfaz as seguintes duas regras: (i) Os atributos de FK tem o mesmo domínio que os atributos da chave primária PK de R2, onde os atributos FK são ditos que se referem a relação R2; (ii) Um valor de FK em uma tupla t1 de R1, ou ocorre em uma tupla t2 de R2 ou tem valor nulo.<br />
As restrições de integridade referencial tipicamente vem dos relacionamentos entre entidades representadas pelo esquema de relação.<br />
Uma chave estrangeira pode referir-se a sua própria relação. O relacionamento de supervisão na entidade empregado, por exemplo.<br />
É possível mostrar diagramaticamente as restrições de integridade através de uma seta que liga cada chave estrangeira a respectiva chave primária da relação referenciada.<br />
As restrições de integridade referencial não incluem uma grande classe de restrições mais gerais conhecidas como restrições de integridade semântica. Exemplos dessas restrições podem ser: (a) o salário de um empregado não pode exceder o salário de seu supervisor; ou (b) o número máximo de horas que um empregado pode trabalhar em todos os projetos por semana não pode ultrapassar 40 horas.<br />
Triggers podem ser usados para esta função.<br />
Dois tipos de restrições existem: (i) restrições de estado (ou restrições estáticas); e (ii) restrições de transição (ou restrições dinâmicas). Um exemplo de transição de transição pode ser que o salário de um empregado só pode aumentar nunca diminuir.</p>
<p>6. Operação de Atualização e Violação de Restrições</p>
<p>6.1. Operação de inserção</p>
<p>Provê uma lista de valores de atributos para uma nova tupla que deverá ser inserida na relação R<br />
Pode violar:<br />
Restrição de domínio (valor não correspondente ao domínio especificado)<br />
Restrição de chave (se um valor de chave já existe)<br />
Integridade de entidade (se a chave primária é nula)<br />
Integridade referencial (se o valor da chave estrangeira refere-se a uma tupla que não existe na relação referenciada)<br />
Geralmente o SGBD deve rejeitar uma inserção que viole essas restrições</p>
<p>6.2. Operação de deleção</p>
<p>Pode violar somente integridade referencial.<br />
Ocorre quando a tupla sendo deletada é referenciada pela chave estrangeira de outras tuplas no banco de dados.<br />
Três opções estão disponíveis:<br />
Rejeitar a deleção<br />
Propagar a deleção<br />
Modificar o valor do atributo sendo referenciado, seja colocando o valor null ou colocar um outro valor válido. Se o atributo referenciado fizer parte da chave primária o atributo não poderá assumir valor nulo, senão será violada a restrição de integridade.</p>
<p>6.3. Operação de Atualização</p>
<p>Usada para alterar os valores de um ou mais atributos em uma tupla<br />
Atributos que não são chaves primárias ou estrangeiras, não tem problemas, exceto a checagem de tipos e domínios<br />
Modificar uma chave primária é a mesma coisa que apagar uma tupla e inserir outra em seu lugar. Inserção e deleção se aplica aqui.<br />
Se uma chave estrangeira é modificada, o SGBD tem que garantir que o novo valor refere-se a uma tupla existente na relação referenciada.</p>
<pre>Fonte:<a href="http://apconcursos.blogspot.com/2007/09/modelo-de-dados-relacional.html">http://apconcursos.blogspot.com/2007/09/modelo-de-dados-relacional.html</a></pre>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Regras de Codd]]></title>
<link>http://mardemes.wordpress.com/2009/11/24/regra-de-codd/</link>
<pubDate>Tue, 24 Nov 2009 13:18:38 +0000</pubDate>
<dc:creator>mardemes</dc:creator>
<guid>http://mardemes.wordpress.com/2009/11/24/regra-de-codd/</guid>
<description><![CDATA[As doze regras definidas por Codd: ·Regra 1 &#8211; Todas as info em um BD relacional são representa]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://bp0.blogger.com/_a-TB_d8huPY/Ru_O_WqCQbI/AAAAAAAAATk/Ui8pmhOK1KU/s1600-h/EdgarFCodd_Th.jpg"><img src="http://bp0.blogger.com/_a-TB_d8huPY/Ru_O_WqCQbI/AAAAAAAAATk/Ui8pmhOK1KU/s200/EdgarFCodd_Th.jpg" border="0" alt="" /></a><br />
As doze regras definidas por Codd:</p>
<p>·Regra 1 &#8211; Todas as info em um BD relacional são representadas de forma explícita no nível lógico e exatamente em apenas uma forma &#8211; por valores em tabelas.</p>
<p>·Regra 2 &#8211; Cada um e qq valor atômico (datum) em um BD relacional possui a garantia de ser logicamente acessado pela combinação do nome da tabela, do valor da chave primária e do nome da coluna.</p>
<p>·Regra 3 &#8211; Valores nulos devem ser suportados de forma sistemática e independente do tipo de dado para representar informações inexistentes e informações inaplicáveis.</p>
<p>·Regra 4 &#8211; A descrição do BD é representada no nível lógico da mesma forma que os dados ordinários, permitindo que usuários autorizados utilizem a mesma linguagem relacional aplicada aos dados regulares.</p>
<p>·Regra 5 &#8211; Um sistema relacional pode suportar várias linguagens e várias formas de recuperação de info. Entretanto, deve haver pelo menos uma linguagem, com uma sintaxe bem definida e expressa por conj de caracteres, que suporte de forma compreensiva todos os seguintes itens: definição de dados(DDL), definição de &#8220;views&#8221;(VDL), manipulação de dados (interativa e embutida em programas)DML, restrições de integridade(entidade &#8211; NOT NULL, CHECK, , referencial &#8211; relacionamentos entre tabelas existentes &#8211; FK, semântica &#8211; triggers(salário_gerente &#62; salario_ze)), autorizações e limites de transações (begin, commit e rollback).</p>
<p>·Regra 6 &#8211; Todas as &#8220;views&#8221; que são teoricamente atualizáveis devem também ser atualizáveis pelo sistema.</p>
<p>·Regra 7 &#8211; A capacidade de manipular um conj de dados (relação) através de um simples comando deve-se estender às operações de inclusão, alteração ou exclusão de dados.(DML &#8211; insert, update, delete).</p>
<p>·Regra 8 &#8211; Programas de aplicação permanecem logicamente inalterados quando ocorrem mudanças no método de acesso ou na forma de armazenamento físico.((ISOLAMENTO) -MVC BD=model=classe de entidade)</p>
<p>·Regra 9 &#8211; Mudanças nas relações e nas views provocam pouco ou nenhum impacto nas aplicações. .((ISOLAMENTO) -MVC &#8211; View + Model(relações))</p>
<p>·Regra 10 &#8211; As aplicações não são afetadas qdo ocorrem mudanças nas regras de restrições de integridade.</p>
<p>·Regra 11 &#8211; As aplicações não são logicamente afetadas qdo ocorrem mudanças geográficas dos dados.(BD distribuídos)</p>
<p>·Regra 12 &#8211; Se um sistema possui uma linguagem de baixo nível, essa linguagem não pode ser usada para subverter as regras de integridades e restrições definidas no nível mais alto.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Geoprocessamento e Bancos de dados]]></title>
<link>http://tiagoschmidt.wordpress.com/2009/11/24/geoprocessamento-e-bancos-de-dados/</link>
<pubDate>Tue, 24 Nov 2009 13:17:14 +0000</pubDate>
<dc:creator>Tiago Schmidt</dc:creator>
<guid>http://tiagoschmidt.wordpress.com/2009/11/24/geoprocessamento-e-bancos-de-dados/</guid>
<description><![CDATA[Dentro da area de geoprocessamento vou comentar hooje sobre uma inovação que modificou e muito a tec]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Dentro da area de geoprocessamento vou comentar hooje sobre uma inovação que modificou e muito a tecnologia em geral, os Bancos de dados. Nos tempos de hoje temos uma gama um tanto quando extensa para aplicações de geoprocessamento mas apenas algumas possuem suporte de conexão com um banco de dados, centralizando a informação.</p>
<p>O ganho da utilização de um banco de dados é a unificação de dados e fim das duplicatas. No caso do Geoprocessamento vemos uma melhoria gigantesca. Em um formato antigo, temos softwares Desktops, logo cada usuário produz o que deve e guarda em sua estação local. Se dois usuários trabalham na mesma area, temos dados duplicados e tempo perdido sem necessidade. Não preciso falar sobre o impacto disso em uma equipe de 10, 20 usuários avançado, certo?</p>
<p>Agora com um banco de dados temos a possibilidade de vários usuários utilizando e atualizando os dados em tempo real sem duplicação de dados. A melhor aplicação possível é a utilização da web. Tendo um aplicativo que roda em um browser e conecta com o banco de dados para receber informações, o usuário possui uma disponibilidade e credibilidade dos dados muito superiores Por exemplo, um trabalhador em campo poderá usar seu computador ligado a um modem 3G, entrar no aplicativo de geoprocessamento e manipular os dados longe da base da empresa, aumentando (e muito) a praticidade e a produtividade.</p>
<p>Agora falando em nomes, temos alguns bancos principais como PostGIS (extensão do PostgreSQL) e MySQL Spatial, porém a marca que sempre se destacou foi a Oracle com seus cartuchos Locator e Spatial, as primeiras extensões espaciais de banco de dados. A questão é que os dados guardados são linhas extensas com inúmeras informações porém nada visual. Nestas informações obtemos o tipo de geometria, o(s) ponto(s) demarcado(s), projeção, entre outras informações. No caso do Oracle Spatial, que eu conheço um <u>pouco</u> mais, temos a geometria marcada com numeros: 1 &#8211; ponto; 2 &#8211; linha ou curva; 3 &#8211; poligono; 4 &#8211; coleção de objetos; 5 &#8211; multiponto; 6 &#8211; multilinha ou multicurva; e 7 &#8211; multipoligono. Pode parecer estranho para alguns os tipos de 4 a 7, mas são completamente diferentes, por exemplo, um multipoligono seria um condominio de vários blocos, sendo que cada bloco é um poligono porém o condominio inteiro (objeto) é a união de todos os poligonos.</p>
<p>Bom, não quero me estender nem nas questões técnicas, nem nas gerenciais. Mas deixo aqui uma idéia para aqueles que pensam em montar uma base georeferenciada de um jeito mais simples e com uma escalabilidade maior!</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Pesquisa de mercado]]></title>
<link>http://praxispropaganda.wordpress.com/2009/11/24/pesquisa-de-mercado/</link>
<pubDate>Tue, 24 Nov 2009 13:01:10 +0000</pubDate>
<dc:creator>praxispropaganda</dc:creator>
<guid>http://praxispropaganda.wordpress.com/2009/11/24/pesquisa-de-mercado/</guid>
<description><![CDATA[Descobrir o que o cliente deseja, como ele compra, quais são suas motivações. Esses são temas que se]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Descobrir o que o cliente deseja, como ele compra, quais são suas motivações. Esses são temas que sempre rondam a cabeça dos pesquisadores. E com o avanço da tecnologia, está cada dia mais fácil acertar!</p>
<p>Confira a reportagem exibida no Jornal Nacional.</p>
<p><span style='text-align:center; display: block;'><object width='425' height='350'><param name='movie' value='http://www.youtube.com/v/inurtMGGyQw&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' /><param name='allowfullscreen' value='true' /><param name='wmode' value='transparent' /><embed src='http://www.youtube.com/v/inurtMGGyQw&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' type='application/x-shockwave-flash' allowfullscreen='true' width='425' height='350' wmode='transparent'></embed></object></span></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Novos serviços cloud disponíveis na BSRSoft]]></title>
<link>http://bsrsoft.wordpress.com/2009/11/23/novos-servicos-cloud-disponiveis-na-bsrsoft/</link>
<pubDate>Tue, 24 Nov 2009 00:03:41 +0000</pubDate>
<dc:creator>BSRSoft IDC</dc:creator>
<guid>http://bsrsoft.wordpress.com/2009/11/23/novos-servicos-cloud-disponiveis-na-bsrsoft/</guid>
<description><![CDATA[Acabamos de disponibilizar diversos novos serviços em nosso segmento de cloud computing (computação ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:justify;">Acabamos de disponibilizar diversos novos serviços em nosso segmento de cloud computing (computação em nuvem) em nosso portal.</p>
<p style="text-align:justify;">Todos eles estão relacionados a bancos de dados.</p>
<p style="text-align:justify;">Já contávamos com o MySQL Cloud e agora oferecemos serviços Postgres Cloud e Oracle DB Cloud (versão 10g).</p>
<p style="text-align:justify;">Com essas opções, cobruimos praticamente todo o espectro de aplicações que precisam de bancos de dados para funções desde controle de um simples site até aplicações empresariais com grande quantidade de transações e necessidade de alta escalabilidade, alta estabilidade e velocidade, além de granualaridade em configurações.</p>
<p style="text-align:justify;">Todos estes serviços rodam em nossos cluster especializados em bancos de dados, especialmente otimizados para tarefas que envolvem grande quantidade de IO de disco (usamos RAID 5 SCSI), grande quantidade de memória em cada nó e enorme poder de processamento.</p>
<p style="text-align:justify;">Somos capazes hoje, de atender a grandes exigências do mercado corporativo, a custos baixos, aproveitando todo o ganho de escala que a computação em nuvem proporciona.</p>
<p style="text-align:justify;">Alta velocidade na entrega de serviços contratados neste cluster , agilidade na escalabilidade e baixa latência de conexão são outros diferenciais que somos capazes de oferecer dentro de nossa infraestrutura.</p>
<p style="text-align:justify;">Nosso produtos de DB na nuvem agora são:</p>
<ul style="text-align:justify;">
<li>MySQL 5 Cloud</li>
<li>PostgreSQL Cloud</li>
<li>Oracle 10g Cloud
<p>Mais dados sobre estes serviços e informações para contratação instantânea em:</li>
</ul>
<p style="text-align:justify;"><a href="http://shop.bsrsoft.com.br/category.php?id_category=15" target="_blank">http://shop.bsrsoft.com.br/category.php?id_category=15</a></p>
<p>&#160;</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Armazenando Endereços IP no MySQL 5]]></title>
<link>http://paralelosdigitais.wordpress.com/2009/11/21/armazenando-enderecos-ip-no-mysql-5/</link>
<pubDate>Sat, 21 Nov 2009 12:09:00 +0000</pubDate>
<dc:creator>João</dc:creator>
<guid>http://paralelosdigitais.wordpress.com/2009/11/21/armazenando-enderecos-ip-no-mysql-5/</guid>
<description><![CDATA[Armazenar IPs em um campo VARCHAR(15) pode não ser uma boa idéia caso você precise de uma melhor per]]></description>
<content:encoded><![CDATA[Armazenar IPs em um campo VARCHAR(15) pode não ser uma boa idéia caso você precise de uma melhor per]]></content:encoded>
</item>
<item>
<title><![CDATA[Renomear tabela no Oracle/ MySQL/ PostgreSQL/ SQL Server - Trocar nome da tabela]]></title>
<link>http://higormontoro.wordpress.com/2009/11/20/renomear-tabela-no-oracle-mysql-postgresql-sql-server-trocar-nome-da-tabela/</link>
<pubDate>Fri, 20 Nov 2009 19:25:08 +0000</pubDate>
<dc:creator>higormontoro</dc:creator>
<guid>http://higormontoro.wordpress.com/2009/11/20/renomear-tabela-no-oracle-mysql-postgresql-sql-server-trocar-nome-da-tabela/</guid>
<description><![CDATA[Oracle ALTER TABLE "nome_antigo" RENAME TO "nome_novo"; PostgreSQL ALTER TABLE "nome_antigo" RENAME ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><strong>Oracle</strong></p>
<pre>ALTER TABLE "nome_antigo" RENAME TO "nome_novo";</pre>
<p><strong>PostgreSQL</strong></p>
<pre>ALTER TABLE "nome_antigo" RENAME TO "nome_novo";</pre>
<p><strong>MySQL</strong></p>
<pre>ALTER TABLE "nome_antigo" RENAME TO "nome_novo";</pre>
<p>observe que não há diferenças nas intruções para os SGBD&#8217;s Oracle, MySQL e PostgreSQL. Os comandos são os mesmos para os 3 nesse caso.</p>
<p><strong>SQL Server<br />
</strong></p>
<pre>sp_rename nome_antigo, nome_novo;
</pre>
<p>Porém, para o SQL Server, utilizamos o procedimento interno &#8220;sp_rename&#8221;.</p>
<p>&#160;</p>
<p>espero que lhe  seja útil, =].</p>
<p>até o próximo.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[historico sql parte I]]></title>
<link>http://cdnsolution.wordpress.com/2009/11/20/historico-sql-parte-i/</link>
<pubDate>Fri, 20 Nov 2009 13:54:33 +0000</pubDate>
<dc:creator>cdnsolution</dc:creator>
<guid>http://cdnsolution.wordpress.com/2009/11/20/historico-sql-parte-i/</guid>
<description><![CDATA[SQL = Structured Query Language. uma linguagem criada na decada de 70 pela IBM em san jose, californ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>SQL = Structured Query Language. uma linguagem criada na decada de 70 pela IBM em san jose, california, para manipulacao de banco de dados como oracle, firebird, mysql, db2, sqlserver e etc..</p>
<p>primeira implatacao do oracle sql em 1980 inicialmente chamada de SEQUEL. quem definiu os padroes de comandos foi a ANSI ( american national stantard institute ) eles definiram os padroes originais, porem, cada bd possui comandos adicionais.</p>
<p>*caracteristicas da sql: LDD, LMD, LSD.</p>
<p>LDD = linguagem de definicao de dados. esta caracteristica permite a criacao,  alteracao e exclusao de tabelas e indices.</p>
<p>LMD = linguagem de manipulacao de dados. esta caracteristica permite a selecao, insercao, atualizacao e exclusao de dados.</p>
<p>LSD = linguagem de de seguracao de dados. esta caracteristica permite gerenciar o acesso de usuarios a determinadas tabelas mantendo a integridade dos dados.</p>
<p>&#160;</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Order By - Ordenação na SQL ]]></title>
<link>http://higormontoro.wordpress.com/2009/11/19/order-by-ordenacao-na-sql/</link>
<pubDate>Thu, 19 Nov 2009 17:14:05 +0000</pubDate>
<dc:creator>higormontoro</dc:creator>
<guid>http://higormontoro.wordpress.com/2009/11/19/order-by-ordenacao-na-sql/</guid>
<description><![CDATA[Nas consultas SQL é possível retornar os dados ordenados de acordo com nossa necessidade. Para isso,]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Nas consultas SQL é possível retornar os dados ordenados de acordo com nossa necessidade. Para isso, utilizamos a claúsula &#8220;ORDER BY&#8221;.</p>
<p>Ex: Suponha que queremos selecionar os dados da tabela &#8220;cliente&#8221; porém o resultado deve ser ordenado pelo nome do cliente em ordem crescente. Para isso utilizaremos a seguinte consulta SQL:</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p><span style="color:#ff0000;">SELECT cod_cliente, nome_cliente FROM clientes ORDER BY nome_cliente ASC;</span></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
resultado<br />
cod_cliente           nome_cliente<br />
&#8212;&#8212;&#8212;&#8212;           &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
75852                          ANDRÉ BATISTA<br />
01254             ANDRÉ COIMBRA<br />
00024                          BRUNA ALMEIDA</p>
<p>No comando acima pedimos para ele selecionar a coluna &#8220;cod_cliente&#8221; e a coluna &#8220;nome_cliente&#8221; da tabela &#8220;cliente&#8221;:</p>
<p><span style="color:#ff0000;">SELECT cod_cliente, nome_cliente FROM clientes</span></p>
<p>e pedimos para ordernar o resultado pela coluna &#8220;nome_cliente&#8221; de forma crescente (ASC/ ascendente) :</p>
<p><span style="color:#ff0000;">ORDER BY nome_cliente ASC</span><br />
Também é possível ordernar o resultado de forma &#8220;decrescente&#8221; trocando a palavra &#8220;ASC&#8221; por &#8220;DESC&#8221;:</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p><span style="color:#ff0000;">SELECT cod_cliente, nome_cliente FROM clientes ORDER BY nome_cliente DESC;</span></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
resultado<br />
cod_cliente          nome_cliente<br />
&#8212;&#8212;&#8212;&#8212;        &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>00024                    BRUNA ALMEIDA</p>
<p>01254                    ANDRÉ COIMBRA</p>
<p>75852                    ANDRÉ BATISTA</p>
<div id="_mcePaste" style="overflow:hidden;position:absolute;left:-10000px;top:592px;width:1px;height:1px;">00024              BRUNA ALMEIDA</div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Comandos de ajuda Teradata]]></title>
<link>http://cristinatolentino.wordpress.com/2009/11/19/comandos-de-ajuda-teradata/</link>
<pubDate>Thu, 19 Nov 2009 14:22:57 +0000</pubDate>
<dc:creator>Carlos Castro</dc:creator>
<guid>http://cristinatolentino.wordpress.com/2009/11/19/comandos-de-ajuda-teradata/</guid>
<description><![CDATA[Para quem está começando a trabalhar com o banco de dados Teradata e tem dificuldade de encontrar in]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Para quem está começando a trabalhar com o banco de dados Teradata e tem dificuldade de encontrar informações sobre as tabelas e sintaxe dos comandos,  utilize os próprios comandos de ajuda do banco:</p>
<p><strong>HELP</strong> &#8211; exibe informações sobre banco, usuário, tabela, view ou macro</p>
<p>HELP DATABASE nome_banco;<br />
HELP TABLE nome_tabela;<br />
HELP VIEW nome_view;<br />
HELP &#8217;sql&#8217;; &#8211; lista os comandos utilizados no Teradata<br />
HELP &#8217;sql comando&#8217;; &#8211; exibe a sintaxe necessária para executar o comando</p>
<p><strong>SHOW</strong> &#8211; exibe a definição dos dados associados a uma tabela, view ou macro</p>
<p>SHOW TABLE nome_tabela;<br />
SHOW VIEW nome_view;<br />
SHOW MACRO nome_macro;</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Erro em relatório Master/Detail - JasperReports]]></title>
<link>http://coffeebreakpoint.wordpress.com/2009/11/19/erro-em-relatorio-masterdetail-jasperreports/</link>
<pubDate>Thu, 19 Nov 2009 11:09:09 +0000</pubDate>
<dc:creator>Régis Leandro</dc:creator>
<guid>http://coffeebreakpoint.wordpress.com/2009/11/19/erro-em-relatorio-masterdetail-jasperreports/</guid>
<description><![CDATA[Um problema com o qual me deparei aqui, ao construir um relatório Master/Detail no JasperReports, ut]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Um problema com o qual me deparei aqui, ao construir um relatório Master/Detail no JasperReports, utilizando o Firebird com o banco de dados, na execução do relatório e do seu sub-Report começou a ocorrer o seguinte erro:<br />
&#8220;Error filling print&#8230; Unable to get next record.<br />
net.sf.jasperreports.engine.JRException: Unable to get next record. at net.sf.jasperreports.engine.JRResultSetDataSource.next(JRResultSetDataSource.java:99) at net.sf.jasperreports.engine.fill.JRFillDataset.advanceDataSource(JRFillDataset.java:842) at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:760) at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1078) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:111) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:751)</p>
<p>at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:660)</p>
<p>at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:234) at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:815) at java.lang.Thread.run(Unknown Source)</p>
<p>Caused by: org.firebirdsql.jdbc.FBSQLException: The result set is closed at org.firebirdsql.jdbc.FBResultSet.checkCursorMove(FBResultSet.java:217)</p>
<p>at org.firebirdsql.jdbc.FBResultSet.next(FBResultSet.java:249) at net.sf.jasperreports.engine.JRResultSetDataSource.next(JRResultSetDataSource.java:95) &#8230; 11 more<br />
Print was not filled. Try using an EmptyDataSource&#8230;&#8221;</p>
<p>a solução para esse problema é bastante simples, e foi encontrada no fórum da JasperForge, na string de conexão do jdbc<br />
adicionar &#8220;?defaultResultSetHoldable=True&#8221; a url de conexão, por exemplo:<br />
&#8220;jdbc:firebirdsql:10.1.1.1:dbPath?defaultResultSetHoldable=True&#8221;</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Instalando PostgreSQL]]></title>
<link>http://horminiolisboa.wordpress.com/2009/11/18/instalando-postgresql/</link>
<pubDate>Wed, 18 Nov 2009 12:17:20 +0000</pubDate>
<dc:creator>horminiolisboa</dc:creator>
<guid>http://horminiolisboa.wordpress.com/2009/11/18/instalando-postgresql/</guid>
<description><![CDATA[O PostgreSQL é um excelente e poderoso banco de dados relacional. A função do banco de dados é extre]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>O PostgreSQL é um excelente e poderoso banco de dados relacional. A função do banco de dados é extremamente importante na construção de aplicativos, afinal, tudo se resume em entrada de dados, processamento e saída. Mas, para que as informações não sejam desnecessariamente inseridas repetidamente no sistema, ou até reprocessados, essas informações são armazenadas em um banco de dados.</p>
<p>A versão utilizada nesse tutorial é a 8.3.0, que você pode conseguir em <a rel="nofollow" href="http://www.postgresql.org/ftp/binary/v8.3.0/win32" target="_blank">http://www.postgresql.org/ftp/binary/v8.3.0/win32</a>. Há uma versão mais nova, a 8.3.4 mas por alguns motivos não pude testar essa versão. Se você puder, o processo de instalação da nova versão provavelmente não deve ser diferente desse.</p>
<p>Após baixar, descompacte os arquivos em qualquer pasta de sua preferência. Entre na pasta onde os arquivos foram descompactados e execute o arquivo postgresql-8.3.msi. Será exibida a tela onde você pode escolher o idioma que será utilizado para exibir as informações de instalação.</p>
<p>Escolha a opção Brazilian Portuguese/Português &#8211; Brasil.</p>
<p>Cique no botão Start e será exibido uma tela sugerindo o fechamento de todos os programas.</p>
<p>Clique em Próximo e será exibida uma tela de informações sobre o PostgreSQL.</p>
<p>Clique em Próximo e será exibida a tela de opções de instalação, onde você poderá alterar os diretórios de instalação, bem como os componentes a serem instalados. Não vejo a necessidade de fazer nenhuma alteração nessa tela.</p>
<p>Clique em Próximo e será exibida a tela de opções de configuração do serviço. Novamente, não vejo a necessidade de alterar os valores nesta tela.</p>
<p>Clique em Próximo e você será questionado se deseja criar uma conta para usar o PostgreSQL.</p>
<p>Clique em Sim e será exibida a senha gerada.</p>
<p>Clique em Ok e será exibida as configurações de banco de dados.</p>
<p>Informe a senha e clique em Próximo e será exibida a tela de linguagens procedurais aceita no PostgreSQL.</p>
<p>Deixe selecionado a opção PL/pgsql e será exibida a tela de instalação de módulos.</p>
<p>Sinceramente, nunca precisei alterar nada nessa tela. Clique em Próximo e será exibida a tela de confirmação de instalação.</p>
<p>Caso você tenha certeza que fez as configurações como especificado, clique em Próximo, caso contrário, clique em Voltar.</p>
<p>Será iniciada o processo de instalação.</p>
<p>Após o processo de instalação ser concluída com sucesso será exibida a tela de Conclusão.</p>
<p>Tire a seleção da opção Launch Stack Builder at Exit e clique em Concluir. A instalação está concluída.</p>
<p>Testando se o PostgreSQL está instalado</p>
<p>Para testar se tudo está funcionando perfeiramente siga os passos:</p>
<ol>
<li>Clique no botão Iniciar do Windows;</li>
<li>Opção Todos os Programas;</li>
<li>Opção PostgreSQL 8.3;</li>
<li>Clique em PgAdmin III será carregado o programa e exibido a Dica do Dia. Cliquem em Fechar.</li>
</ol>
<p>Note que a esquerda há uma lista de Servidores, na verdade apenas 1 servidor &#8220;PostgreSQL Database Server 8.3 (localhost:5432)&#8221;.</p>
<p>Note também que um ícone com um X em vermelho precede esse servidor. Isso significa que você não está conectado ao servidor.</p>
<p>Para conectar, basta dar um duplo-clique sobre o nome do servidor. Será solicitada a senha do banco de dados, a qual você informou durante a instalação.</p>
<p>Após digitar a senha clique em Ok e o ícone ao lado do servidor mudará e uma lista de componentes será exibida abaixo do servidor.</p>
<p>Ok. O PostgreSQL está instalado e configurado.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Problema com datetime do MySql e PHP]]></title>
<link>http://dilbertorosa.wordpress.com/2009/11/18/problema-com-datetime-do-mysql-e-php/</link>
<pubDate>Wed, 18 Nov 2009 11:43:24 +0000</pubDate>
<dc:creator>dilbertorosa</dc:creator>
<guid>http://dilbertorosa.wordpress.com/2009/11/18/problema-com-datetime-do-mysql-e-php/</guid>
<description><![CDATA[Hoje Eu e a Luciane enfrentamos um problema: Realizar um select em um campo datetime do MySql. Parec]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Hoje Eu e a Luciane enfrentamos um problema: Realizar um select em um campo datetime do MySql. Parece simples? Mas não foi!</p>
<p>Em nossas consultas sempre realizamos pesquisas no banco de dados com campos do tipo datetime, porém nunca enfrentamos a situação em que o resultado sempre vinha vazio sendo que temos dados em banco. Desta forma começamos a perguntar: Porque o aqua (nossa ferramenta para consultas à banco de dados) não traz o resultado?</p>
<p>Nosso select no aqua era o seguinte:<br />
<strong><br />
select * from tabela where campo_data = current_date</strong></p>
<p>Bom, normalmente, para outras consultas esse comando sql funcionaria. Desta vez não foi bem assim.</p>
<p>Dando uma analisada no conteúdo da tabela no banco, identificamos as seguintes datas:</p>
<p>16/11/2009 11:39:00<br />
16/11/2009 10:30:03</p>
<p>Desta forma, podemos identificar que, apesar de serem mesmas datas, o datetime permite gravação de hora, minuto e segundos. Essa foi a primeira pista.</p>
<p>A segundo pergunta foi: Como estão sendo gravados estes dados?</p>
<p>Identificamos que no PHP, na realização do insert em banco de dados, o programador pegou a data atual com o seguinte comando: &#8220;now&#8221;. Agora temos a segunda pista. O comando &#8220;now&#8221; do PHP traz a data atual, acompanhada de hora, minuto e segundos! Assim, quando era realizado insert em banco, era gravado a data com a hora atual, porém na busca estavamos utilizando apenas a data. O resultado do SQL era vazio pois a data era a mesma mas a hora não.</p>
<p>Como resolver?</p>
<p>A idéia inicial foi alterar a função PHP de &#8216;now&#8217; para date(&#8216;Y-m-d&#8217;). E deu certo!</p>
<p>Ao utilizar a função &#8220;date&#8221;, o PHP grava a data no campo, com a hora zerada. Desta forma a consulta sql desconsidera a hora para aquela linha, trazendo o registro. É isso!</p>
<p>Abraço.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Somos todos criminosos virtuais]]></title>
<link>http://ocaipira.wordpress.com/2009/11/17/somos-todos-criminosos-virtuais/</link>
<pubDate>Wed, 18 Nov 2009 01:53:37 +0000</pubDate>
<dc:creator>O Caipira</dc:creator>
<guid>http://ocaipira.wordpress.com/2009/11/17/somos-todos-criminosos-virtuais/</guid>
<description><![CDATA[Por Diogo Siqueira Querem criar um banco de dados contendo o registro de todo o tráfego na rede. A i]]></description>
<content:encoded><![CDATA[Por Diogo Siqueira Querem criar um banco de dados contendo o registro de todo o tráfego na rede. A i]]></content:encoded>
</item>
<item>
<title><![CDATA[Dumping MySQL Stored Procedures, Functions and Triggers]]></title>
<link>http://diorgecbjorge.wordpress.com/2009/11/17/dumping-mysql-stored-procedures-functions-and-triggers/</link>
<pubDate>Tue, 17 Nov 2009 14:07:00 +0000</pubDate>
<dc:creator>diorge</dc:creator>
<guid>http://diorgecbjorge.wordpress.com/2009/11/17/dumping-mysql-stored-procedures-functions-and-triggers/</guid>
<description><![CDATA[No MYSLQ5 as procedures e triggers não vem com o banco por default,há 2 parametros de dump que contr]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>No MYSLQ5 as procedures e triggers não vem com o banco por default,há 2 parametros de dump que controlam este comportamento.</p>
<p>    * –routines – FALSE by default<br />    * –triggers – TRUE by default</p>
<p>seria assim para enviar as procedures e triggers para o dump assim como os dados e tabelas<br /><span style="font-weight:bold;"><br />mysqldump  &#8211;routines &#62; outputfile.sql </span></p>
<p>Dump apenas das storad procedures e triggers sem tabelas e dados:</p>
<p><span style="font-weight:bold;">mysqldump &#8211;routines &#8211;no-create-info &#8211;no-data &#8211;no-create-db &#8211;skip-opt  &#62; outputfile.sql</span></p>
<p>e para rodar o sql com as procedures executar o comando:</p>
<p><span style="font-weight:bold;">mysql  &#60; outputfile.sql</span></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[UE não aprova compra da Sun pela Oracle]]></title>
<link>http://bsrsoft.wordpress.com/2009/11/16/ue-nao-aprova-compra-da-sun-pela-oracle/</link>
<pubDate>Mon, 16 Nov 2009 20:19:43 +0000</pubDate>
<dc:creator>BSRSoft IDC</dc:creator>
<guid>http://bsrsoft.wordpress.com/2009/11/16/ue-nao-aprova-compra-da-sun-pela-oracle/</guid>
<description><![CDATA[Por causa do MySQL A história começou em 2008 quando a Sun, de olho no mercado de banco de dados ava]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:justify;"><strong>Por causa do MySQL</strong></p>
<p style="text-align:justify;">A história começou em 2008 quando a Sun, de olho no mercado de banco de dados avaliado em US$ 15 bi, <a rel="nofollow" href="http://www.sun.com/aboutsun/pr/2008-01/sunflash.20080116.1.xml" target="_blank">comprou o MySQl</a>. Foram pagos 800 milhões de dólares em dinheiro e mais 200 milhões de dólares em troca de ações.</p>
<p style="text-align:justify;">Mas a crise mundial fez os negócios e novos investimentos cessarem e a Sun passou a procurar um comprador enquanto o preço de suas ações despencavam. A IBM se recusava a pagar os 7 bilhões que os acionistas queriam e o negócio paralizado. A esperança era a Sun enfraquecer mais e capitular diante das péssimas condições de mercado.</p>
<p style="text-align:justify;">A Oracle surge do nada e oferece pouco mais de 7 bilhões de dólares, uma rasteira na IBM, e anuncia ao mundo a aquisição da Sun. O governo americano aceita o negócio, mas a União Européia levanta questões sobre concorrência, concentração de mercado e o futuro do MySQL. A suspeita é que a Oracle não irá cumprir a promessa de desenvolver o MySQL e usá-lo apenas para vender o seu produto principal, Oracle Database. Outra suspeita é que o produto será deixado de lado e os consumidores não teriam uma opção. Sabemos que não é verdade, o <a rel="nofollow" href="http://www.postgresql.org/" target="_blank">PostgreSQL</a> é a prova.</p>
<p style="text-align:justify;">Obviamente, a Sun esperava que o negócio fosse aprovado rápido e como isso não aconteceu, vai demitir mais 3000 pessoas, 10% da sua força de trabalho. Essa óbvia perda de talentos faz com que a concorrência, IBM principalmente, aproveite para levar a maior quantidade de clientes possível e com bastante sucesso.</p>
<p style="text-align:justify;"><strong>E agora?</strong></p>
<p style="text-align:justify;">É óbvio que um SGBD como o MySQL não pode ficar não mão de programadores de fins de semana. Precisa de uma empresa com recursos financeiros para realizar os invesmentos necessários para a melhoria contínua.</p>
<p style="text-align:justify;">Durante a Oracle Open World, a mensagem foi clara: Sun e Oracle estão juntas. Se o MySQL é o problema, ele provavelmente será descartado através de alguns possíveis cenários:</p>
<p style="text-align:justify;">- MySQL vendido por uma pechincha para uma empresa qualquer de fundo de quintal. Pouco provável.</p>
<p style="text-align:justify;">- Saída Red Hat: MySQL passa a ser um projeto totalmente livre apoiado pela comunidade com uma versão “Oracle MySQL” para empresas.</p>
<p style="text-align:justify;">- MySQL é vendido para um parceiro ou empresa que precisa completar seu leque de produtos. Google, por exemplo, seria uma empresa óbvia. A HP é outra que poderia se beneficiar da venda de servidores otimizados com MySQL.</p>
<p style="text-align:justify;">- Oracle desiste do negócio.</p>
<p style="text-align:justify;">O futuro do MySQL agora é muito mais incerto. As preocupações da UE são válidas, acredito eu, mas eles não oferecem uma solução. A Sun precisa da Oracle, fato. O Exadata 2 foi inclusive otimizado para o softwares da empresa. A perda de talentos e clientes pode deixar a Sun em uma situação insustentável. As opiniões estão divididas e obviamente muitos defensores de software livre gostaram na notícia, outros nem tanto.</p>
<p style="text-align:justify;">Em números de faturamento, o MySQL é pífio, com faturamento de 70 milhões de dólares por ano. Mas ele concentra praticamente metade dos websites, blogs e sistemas de controle de conteúdo da web.</p>
<p style="text-align:justify;">Autoridades européias tem até o dia 19 de Janeiro para bater o martelo, mas se dizem abertos a negociar.</p>
<p style="text-align:justify;">Fonte: Ricardo Bicalho &#8211; MeioBit -  <a href="http://meiobit.com/meio-bit/ind-stria/ue-n-o-aprova-compra-da-sun-pela-oracle" target="_blank">http://meiobit.com/meio-bit/ind-stria/ue-n-o-aprova-compra-da-sun-pela-oracle</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[PHP e Javascript para quem não conhece]]></title>
<link>http://phpedinei.wordpress.com/2009/11/16/php-e-javascript-para-quem-nao-conhece/</link>
<pubDate>Mon, 16 Nov 2009 17:31:32 +0000</pubDate>
<dc:creator>phpedinei</dc:creator>
<guid>http://phpedinei.wordpress.com/2009/11/16/php-e-javascript-para-quem-nao-conhece/</guid>
<description><![CDATA[Bom, meu trabalho na disciplina de Teoria a Informática falei sobre PHP e Javascript para quem não c]]></description>
<content:encoded><![CDATA[Bom, meu trabalho na disciplina de Teoria a Informática falei sobre PHP e Javascript para quem não c]]></content:encoded>
</item>
<item>
<title><![CDATA[Oracle sem Mistério - DELETE FROM SELECT]]></title>
<link>http://juarezsilva.wordpress.com/2009/11/12/oracle-sem-misterio-delete-from-select/</link>
<pubDate>Thu, 12 Nov 2009 13:34:54 +0000</pubDate>
<dc:creator>juarezsilva</dc:creator>
<guid>http://juarezsilva.wordpress.com/2009/11/12/oracle-sem-misterio-delete-from-select/</guid>
<description><![CDATA[Nem sempre é fácil fazer uma deleção, então segue abaixo algumas possíveis aplicações do comando DEL]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Nem sempre é fácil fazer uma deleção, então segue abaixo algumas possíveis aplicações do comando DELETE do Oracle.</p>
<table border="1" cellspacing="1" cellpadding="2" width="100%" bgcolor="#d8d8c4">
<tbody>
<tr>
<td colspan="2"><strong><span style="font-family:Arial;color:#808000;">Sintaxe básica do DELETE<br />
</span></strong></td>
</tr>
<tr>
<td rowspan="2" width="30%" valign="top"><span style="font-family:Arial;font-size:x-small;">Deletar todas as tuplas
<p>&#160;</p>
<p></span></td>
<td width="70%"><span style="font-family:Courier;">DELETEorDELETE FROM<br />
;</p>
<p>&#160;</p>
<p></span></td>
</tr>
<tr>
<td width="70%" bgcolor="#80ffff"><span style="font-family:Courier;">CREATE TABLE t ASSELECT *FROM all_tables;</p>
<p>SELECT COUNT(*)</p>
<p>FROM t;</p>
<p><span style="color:#0000ff;"><br />
DELETE FROM t</span>;</p>
<p>COMMIT;</p>
<p>SELECT COUNT(*)</p>
<p>FROM t;</p>
<p>&#160;</p>
<p></span></td>
</tr>
<tr>
<td rowspan="2" width="30%" valign="top"><span style="font-family:Arial;font-size:x-small;">Deletar linhas selecionas
<p>&#160;</p>
<p></span></td>
<td width="70%"><span style="font-family:Courier;">DELETE FROMWHERE ;
<p>&#160;</p>
<p></span></td>
</tr>
<tr>
<td width="70%" bgcolor="#80ffff"><span style="font-family:Courier;">CREATE TABLE t ASSELECT *FROM all_tables;</p>
<p>SELECT COUNT(*)</p>
<p>FROM t;</p>
<p>DELETE FROM t</p>
<p><span style="color:#0000ff;">WHERE table_name LIKE &#8216;%MAP&#8217;</span>;</p>
<p>COMMIT;</p>
<p>SELECT COUNT(*)</p>
<p>FROM t;</p>
<p>&#160;</p>
<p></span></td>
</tr>
<tr>
<td rowspan="2" width="30%" valign="top"><span style="font-family:Arial;font-size:x-small;">Deletar as linhas resultante de um SELECT
<p>&#160;</p>
<p></span></td>
<td width="70%"><span style="font-family:Courier;">DELETE FROM (
<p>&#160;</p>
<p></span></td>
</tr>
<tr>
<td width="70%" bgcolor="#80ffff"><span style="font-family:Courier;">CREATE TABLE t ASSELECT *FROM all_tables;</p>
<p>SELECT COUNT(*)</p>
<p>FROM t;</p>
<p>DELETE FROM (<span style="color:#0000ff;">SELECT * FROM t WHERE table_name LIKE &#8216;%MAP&#8217;</span>);</p>
<p>SELECT COUNT(*)</p>
<p>FROM t;</p>
<p>&#160;</p>
<p></span></td>
</tr>
<tr>
<td rowspan="2" width="30%" valign="top"><a name="dlrc"><span style="font-family:Arial;font-size:x-small;">Deletar com retorno de cláusula de condição
<p>&#160;</p>
<p></span></a></td>
<td width="70%"><span style="font-family:Courier;">DELETE FROM (
<p>&#160;</p>
<p></span></td>
</tr>
<tr>
<td width="70%" bgcolor="#80ffff"><span style="font-family:Courier;">CREATE TABLE t ASSELECT *FROM all_tables;</p>
<p>set serveroutput on</p>
<p>DECLARE</p>
<p>r  urowid;</p>
<p>BEGIN</p>
<p>DELETE FROM t</p>
<p>WHERE rownum = 1</p>
<p><span style="color:#0000ff;">RETURNING</span> rowid <span style="color:#0000ff;"> INTO</span> r;</p>
<p>dbms_output.put_line(r);</p>
<p>END;</p>
<p>/</p>
<p>&#160;</p>
<p></span></td>
</tr>
<tr>
<td rowspan="2" width="30%"><span style="font-family:Arial;font-size:x-small;">Deleção restrita por partição</span></td>
<td width="70%"><span style="font-family:Courier;">DELETE FROMPARTITION<br />
;
<p>&#160;</p>
<p></span></td>
</tr>
<tr>
<td width="70%" bgcolor="#80ffff"><span style="font-family:Courier;">DELETE FROM sales <span style="color:#0000ff;">PARTITION</span> (q1_2001_invoices);</span></td>
</tr>
<tr>
<td rowspan="2" width="30%"><span style="font-family:Arial;font-size:x-small;">Deleção de dados de uma base de dados remota</span></td>
<td width="70%"><span style="font-family:Courier;">DELETE FROM@
<p>&#160;</p>
<p></span></td>
</tr>
<tr>
<td width="70%" bgcolor="#80ffff"><span style="font-family:Courier;">DELETE FROM t<span style="color:#0000ff;">@remote_db</span>;</span></td>
</tr>
</tbody>
</table>
<p>É isso ai. Espero ter ajudado.</p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
