<?xml version="1.0" encoding="UTF-8"?><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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivo para Modelagem de Dados - Bóson Treinamentos em Ciência e Tecnologia</title>
	<atom:link href="https://www.bosontreinamentos.com.br/tag/modelagem-de-dados/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bosontreinamentos.com.br/tag/modelagem-de-dados/</link>
	<description>Artigos e Tutoriais sobre Desenvolvimento de Software, Bancos de Dados SQL, Linux, Lógica de Programação, Inteligência Artificial, Hardware, Eletrônica, Arduino, Técnicas e Teorias de Estudo e Aprendizagem, Carreira em TI, Ciências Cognitivas, e muito mais!</description>
	<lastBuildDate>Thu, 11 Jul 2024 11:37:47 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.6</generator>
	<item>
		<title>Como usar os tipos de dados char, nchar, varchar e nvarchar no SQL Server</title>
		<link>https://www.bosontreinamentos.com.br/sql-com-sql-server/como-usar-os-tipos-de-dados-char-nchar-varchar-e-nvarchar-no-sql-server/</link>
					<comments>https://www.bosontreinamentos.com.br/sql-com-sql-server/como-usar-os-tipos-de-dados-char-nchar-varchar-e-nvarchar-no-sql-server/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Thu, 04 Jul 2024 11:42:32 +0000</pubDate>
				<category><![CDATA[SQL com SQL Server]]></category>
		<category><![CDATA[Bancos de Dados]]></category>
		<category><![CDATA[Modelagem de Dados]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[SQL Server]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=13125</guid>

					<description><![CDATA[<p>Tipos de dados char, nchar, varchar e nvarchar &#8211; SQL Server Os tipos de dados CHAR, NCHAR, VARCHAR e NVARCHAR são usados para armazenar dados de texto no SQL Server. Cada um é empregado em uma situação distinta, e saber escolher o tipo de dados adequado pode afetar a performance e o uso de espaço no banco de dados. Neste tutorial vou mostrar cada um desses tipos, suas diferenças e quando usá-los. Tipos de Texto no SQL Server Os tipos nchar e nvarchar permitem armazenar caracteres Unicode, ao passo que char e varchar não o permitem &#8211; é até possível armazenar Unicode com esses tipos, mas por meio de alguns &#8220;truques&#8221; no código. Porém, os tipos nchar e nvarchar ocupam o dobro de espaço de armazenamento. Desta forma, recomenda-se utilizá-los apenas caso seja necessário suporte a Unicode na tabela &#8211; o que é bastante comum. Os tipos char e nchar são tipos de tamanho fixo, o que significa que eles reservam espaço de armazenamento para a quantidade de caracteres que foi especificada em suas declarações, mesmo que o espaço não seja totalmente utilizado. Por exemplo, podemos criar um campo char ou nchar para 20 caracteres mas armazenar apenas 15 &#8211; [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/sql-com-sql-server/como-usar-os-tipos-de-dados-char-nchar-varchar-e-nvarchar-no-sql-server/">Como usar os tipos de dados char, nchar, varchar e nvarchar no SQL Server</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Tipos de dados char, nchar, varchar e nvarchar &#8211; SQL Server</h2>
<p>Os tipos de dados CHAR, NCHAR, VARCHAR e NVARCHAR são usados para armazenar dados de texto no SQL Server. Cada um é empregado em uma situação distinta, e saber escolher o tipo de dados adequado pode afetar a performance e o uso de espaço no banco de dados.</p>
<p>Neste tutorial vou mostrar cada um desses tipos, suas diferenças e quando usá-los.</p>
<h3>Tipos de Texto no SQL Server</h3>
<p>Os tipos nchar e nvarchar permitem armazenar caracteres Unicode, ao passo que char e varchar não o permitem &#8211; é até possível armazenar Unicode com esses tipos, mas por meio de alguns &#8220;truques&#8221; no código. Porém, os tipos nchar e nvarchar ocupam o dobro de espaço de armazenamento. Desta forma, recomenda-se utilizá-los apenas caso seja necessário suporte a Unicode na tabela &#8211; o que é bastante comum.</p>
<p>Os tipos char e nchar são tipos de tamanho fixo, o que significa que eles reservam espaço de armazenamento para a quantidade de caracteres que foi especificada em suas declarações, mesmo que o espaço não seja totalmente utilizado. Por exemplo, podemos criar um campo char ou nchar para 20 caracteres mas armazenar apenas 15 &#8211; os outros 5 que ficaram vagos irão ocupar espaço da mesma maneira.</p>
<p>Recomenda-se usar esses tipos caso os dados armazenados sempre ocupem o tamanho máximo especificado na declaração da coluna.</p>
<p>Já os tipos varchar e nvarchar são tipos de tamanho variável, de modo que o espaço ocupado corresponderá à quantidade de caracteres que efetivamente são armazenados + 2 (2 bytes de registro do comprimento &#8211; overhead), independente do tamanho máximo declarado.</p>
<h3>Características dos tipos CHAR, NCHAR, VARCHAR e NVARCHAR</h3>
<p><strong>CHAR</strong></p>
<ul>
<li>Descrição: Armazena dados de texto com comprimento fixo.</li>
<li>Tamanho: O comprimento é definido ao criar a coluna e todos os valores terão exatamente esse tamanho &#8211; ou seja, o comprimento é fixo. <em>Espaços em branco são adicionados para preencher o comprimento se necessário</em>.</li>
<li>Uso: Dados de tamanho fixo, como códigos de produtos ou identificadores.</li>
</ul>
<p><strong>NCHAR</strong></p>
<ul>
<li>Descrição: Similar ao CHAR (também comprimento fixo), mas armazena dados de texto em formato Unicode.</li>
<li>Tamanho: Cada caractere ocupa 2 bytes, permitindo armazenar caracteres de múltiplos idiomas.</li>
<li>Uso: Usado para dados de texto internacionalizados ou quando é necessário suportar vários idiomas.</li>
</ul>
<p><strong>VARCHAR</strong></p>
<ul>
<li>Descrição: Armazena dados de texto com comprimento variável.</li>
<li>Tamanho: O comprimento máximo é definido ao criar a coluna, mas apenas o espaço necessário para armazenar o valor real é utilizado. Ou seja, ocupa espaço de acordo com o valor armazenado na coluna.</li>
<li>Uso: Ideal para colunas onde os tamanhos dos valores podem variar significativamente, como nomes, descrições ou endereços.</li>
</ul>
<p><strong>NVARCHAR</strong></p>
<ul>
<li>Descrição: Similar ao VARCHAR, mas armazena dados de texto em formato Unicode.</li>
<li>Tamanho: Cada caractere ocupa 2 bytes, semelhante ao NCHAR, mas o espaço é utilizado de forma mais eficiente para comprimentos variáveis.</li>
<li>Uso: Usado para dados de texto internacionalizados ou quando é necessário suportar vários idiomas, com comprimentos variáveis.</li>
</ul>
<h3>Performance dos tipos de texto</h3>
<p>Com relação à performance desses tipos de texto no SQL Server, temos que:</p>
<ul>
<li>CHAR e NCHAR podem ser mais rápidos para acesso em colunas onde todos os valores têm tamanho fixo.</li>
<li>Já os tipos VARCHAR e NVARCHAR são mais eficientes em termos de espaço para colunas onde os tamanhos dos valores variam.</li>
</ul>
<h3>Exemplos de uso</h3>
<h4>1. Tipos CHAR e NCHAR</h4>
<p>Criamos uma tabela com dois campos, um do tipo CHAR e outro do tipo NCHAR</p>
<pre><strong>CREATE TABLE ExemploCharNChar (</strong>
<strong>Codigo CHAR(5),</strong>
<strong>Item NCHAR(10)</strong>
<strong>);</strong></pre>
<p>Inserimos uma linha de teste nessa tabela. Para o campo &#8220;Item&#8221; usarei um dado em outro idioma, inclusive com outro conjunto de caracteres &#8211; no caso, caracteres japoneses.</p>
<p>Note o caractere &#8216;N&#8217; que precede o valor a ser armazenado, para indicar ao SQL Server que se trata de um valor Unicode.</p>
<pre><strong>INSERT INTO ExemploCharNChar (Codigo, Item)</strong>
<strong>VALUES ('012', N'ピザ');</strong></pre>
<p>Consegue descobrir que item foi inserido?</p>
<p>E realizamos uma consulta para ver o dado inserido.</p>
<pre><strong>SELECT * FROM ExemploCharNChar;</strong></pre>
<p><strong>Resultado:</strong></p>
<pre><span style="color: #000000;"><strong>Codigo  Item</strong></span>
<span style="color: #000000;"><strong>012     ピザ </strong></span></pre>
<h4>2. Tipos VARCHAR e NVARCHAR</h4>
<p>Agora vamos criar outra tabela também com dois campos, um do tipo VARCHAR e outro do tipo NVARCHAR</p>
<pre><strong>CREATE TABLE ExemploVarcharNVarchar (</strong>
<strong>Descricao VARCHAR(50),</strong>
<strong>Pedido NVARCHAR(100)</strong>
<strong>);</strong></pre>
<p>Inserimos uma linha de teste nessa tabela. Para o campo &#8220;Pedido&#8221; usarei novamente um dado em idioma japonês, desta vez com mais caracteres.</p>
<pre><strong>INSERT INTO ExemploVarcharNVarchar (Descricao, Pedido)</strong>
<strong>VALUES ('Prato Típico Italiano', N'ピザが食べたい.');</strong></pre>
<p>E realizamos a consulta para ver o dado inserido.</p>
<pre><strong>SELECT * FROM ExemploVarcharNVarchar;</strong></pre>
<p><strong>Resultado:</strong></p>
<pre><span style="color: #000000;"><strong>Descricao             Pedido</strong></span>
<span style="color: #000000;"><strong>Prato Típico Italiano ピザが食べたい.</strong></span></pre>
<h3>Importante</h3>
<p>Uma dica importante é a seguinte: Hoje em dia, os sistemas operacionais e plataformas de desenvolvimento usam internamente o sistema Unicode.</p>
<p>Sendo assim, se usarmos os tipos nvarchar em vez de varchar, e nchar em vez de char, evitamos que ocorram conversões de codificação sempre que operaçoes de leitura ou escrita forem realizadas no banco de dados.</p>
<p>Essas conversões consomem recursos do servidor e podem ocasionar erros, ainda que raramente, além do que não é fácil recuperar de erros de conversão em uma tabela.</p>
<h3>Conclusão</h3>
<p>Neste tutorial estudamos os tipos de dados CHAR, NCHAR, VARCHAR e NVARCHAR no SQL Server, suas diferenças e exemplos de uso.</p>
<p>Ao escolher o tipo de dados para colunas de texto, considere o tamanho dos dados que você espera armazenar, a necessidade de suporte a múltiplos idiomas e a eficiência de armazenamento. Para texto que precisa ser armazenado em múltiplos idiomas, use os tipos <strong>NCHAR</strong> ou <strong>NVARCHAR</strong>. Para texto de tamanho fixo, use <strong>CHAR</strong>, e para tamanho variável, use <strong>VARCHAR</strong>.</p>
<p>Lembre-se:</p>
<ul>
<li>Usamos CHAR e NCHAR quando o comprimento dos dados for fixo.</li>
<li>Usamos VARCHAR e NVARCHAR quando o comprimento dos dados for variável.</li>
<li>A letra &#8216;N&#8217; antes dos tipos Unicode (NCHAR e NVARCHAR) indica que eles suportam caracteres Unicode.</li>
</ul>
<p>* <strong>ピザ</strong> significa &#8220;pizza&#8221; e <strong>ピザが食べたい</strong> significa &#8220;quero comer pizza&#8221; (&#8220;piza ga tabetai&#8221;).</p>
<h3>Colabore com a Bóson Treinamentos</h3>
<p>Ajude o canal adquirindo meus cursos na Udemy:</p>
<ul>
<li>Bancos de Dados com MySQL Básico: <a href="https://bit.ly/35QdWE4" target="_blank" rel="noopener">https://bit.ly/35QdWE4</a></li>
<li>Lógica de Programação com Português Estruturado: <a href="https://bit.ly/3QKPn22" target="_blank" rel="noopener">https://bit.ly/3QKPn22</a></li>
<li>Programação em Python do Zero: <a href="https://bit.ly/python-boson" target="_blank" rel="noopener">https://bit.ly/python-boson</a></li>
</ul>
<p>Adquira também livros e outros itens na loja da Bóson Treinamentos na Amazon e ajude o canal a se manter e crescer: <a href="https://www.amazon.com.br/shop/bosontreinamentos" target="_blank" rel="noopener">https://www.amazon.com.br/shop/bosontreinamentos</a></p>
<p>O post <a href="https://www.bosontreinamentos.com.br/sql-com-sql-server/como-usar-os-tipos-de-dados-char-nchar-varchar-e-nvarchar-no-sql-server/">Como usar os tipos de dados char, nchar, varchar e nvarchar no SQL Server</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/sql-com-sql-server/como-usar-os-tipos-de-dados-char-nchar-varchar-e-nvarchar-no-sql-server/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>As 12 Regras de Codd para Sistemas de Bancos de Dados Relacionais</title>
		<link>https://www.bosontreinamentos.com.br/modelagem-de-dados/as-12-regras-de-codd-para-sistemas-de-bancos-de-dados-relacionais/</link>
					<comments>https://www.bosontreinamentos.com.br/modelagem-de-dados/as-12-regras-de-codd-para-sistemas-de-bancos-de-dados-relacionais/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Mon, 08 Jan 2024 18:22:19 +0000</pubDate>
				<category><![CDATA[Modelagem de Dados]]></category>
		<category><![CDATA[Bancos de Dados]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=19863</guid>

					<description><![CDATA[<p>As 12 Regras de Codd para Sistemas de Bancos de Dados Relacionais As Doze Regras de Codd são um conjunto de (na verdade) treze regras (enumeradas de zero a doze) publicadas pelo cientista da computação Edgar F. Codd em outubro de 1985, com o intuito de definir o que é necessário para que um sistema de gerenciamento de banco de dados possa ser considerado realmente um sistema relacional, ou seja, um SGBDR. Edgar Frank &#8220;Ted&#8221; Codd (19 de agosto de 1923 &#8211; 18 de abril de 2003) foi um cientista da computação inglês que, enquanto trabalhava para a IBM, inventou o modelo relacional para gerenciamento de banco de dados, a base teórica para bancos de dados relacionais e sistemas de gerenciamento de banco de dados relacionais. À medida que o modelo relacional de bancos de dados se popularizou no início dos anos 1980, Codd travou uma campanha por vezes complicada para evitar que o termo fosse mal utilizado por fornecedores de bancos de dados que apenas acrescentaram um verniz relacional à tecnologias mais antigas. Como parte desta campanha, ele publicou suas 12 regras para definir o que constituía um banco de dados relacional. Isso tornou sua posição na IBM cada [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/modelagem-de-dados/as-12-regras-de-codd-para-sistemas-de-bancos-de-dados-relacionais/">As 12 Regras de Codd para Sistemas de Bancos de Dados Relacionais</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>As 12 Regras de Codd para Sistemas de Bancos de Dados Relacionais</h2>
<p>As Doze Regras de Codd são um conjunto de (na verdade) treze regras (enumeradas de zero a doze) publicadas pelo cientista da computação <a href="https://pt.wikipedia.org/wiki/Edgar_Frank_Codd" target="_blank" rel="noopener">Edgar F. Codd</a> em outubro de 1985, com o intuito de definir o que é necessário para que um sistema de gerenciamento de banco de dados possa ser considerado realmente um sistema relacional, ou seja, um <a href="http://www.bosontreinamentos.com.br/mysql/mysql-bancos-de-dados-sgbdr-e-grupos-de-comandos-04/">SGBDR</a>.</p>
<p>Edgar Frank &#8220;Ted&#8221; Codd (19 de agosto de 1923 &#8211; 18 de abril de 2003) foi um cientista da computação inglês que, enquanto trabalhava para a IBM, inventou o modelo relacional para gerenciamento de banco de dados, a base teórica para bancos de dados relacionais e sistemas de gerenciamento de banco de dados relacionais.</p>
<p>À medida que o <a href="http://www.bosontreinamentos.com.br/bancos-de-dados/o-que-e-um-banco-de-dados-relacional/">modelo relacional de bancos de dados</a> se popularizou no início dos anos 1980, Codd travou uma campanha por vezes complicada para evitar que o termo fosse mal utilizado por fornecedores de bancos de dados que apenas acrescentaram um verniz relacional à tecnologias mais antigas.</p>
<p>Como parte desta campanha, ele publicou suas 12 regras para definir o que constituía um banco de dados relacional. Isso tornou sua posição na IBM cada vez mais difícil, e então ele saiu para formar uma empresa de consultoria com <a href="http://www.bosontreinamentos.com.br/livros/os-10-livros-tecnicos-mais-importantes-que-eu-ja-li/">Christopher J. Date</a> e outros.</p>
<div id="attachment_19870" style="width: 547px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-19870" class="size-full wp-image-19870" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2024/01/edgar-frank-codd-banco-dados.jpg" alt="Edgar Frank Codd" width="537" height="416" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2024/01/edgar-frank-codd-banco-dados.jpg 537w, https://www.bosontreinamentos.com.br/wp-content/uploads/2024/01/edgar-frank-codd-banco-dados-420x325.jpg 420w" sizes="(max-width: 537px) 100vw, 537px" /><p id="caption-attachment-19870" class="wp-caption-text">Edgar Frank Codd</p></div>
<p>A seguir trago o texto integral traduzido para o português com as 12 regras mais a regra 0, de acordo como publicado em duas matérias na revista Computerworld no mês de outubro de 1985: &#8220;<em>Is your DBMS really relational?</em>&#8220;, Computerworld. 14/10/1985, Vol. 19, e &#8220;<em>Does your DBMS run by the rules?</em>&#8220;, Computerworld. 21/10/1985, Vol. 19.</p>
<h3>Texto integral traduzido das 12 Regras de Codd</h3>
<p><span style="font-family: verdana, geneva, sans-serif;">As 12 regras</span><br />
<span style="font-family: verdana, geneva, sans-serif;">Por E. F. Codd</span><br />
<span style="font-family: verdana, geneva, sans-serif;">Outubro 1985</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Doze regras são citadas abaixo como parte de um teste para determinar se um produto que se afirma ser totalmente relacional o é realmente. O emprego do termo “totalmente relacional” neste relatório é ligeiramente mais rigoroso do que no meu artigo de Turing (escrito em 1981). Isso ocorre em parte porque os fornecedores em seus anúncios e manuais traduziram o termo “minimamente relacional” para “totalmente relacional” e em parte porque neste relatório estamos lidando com SGBDs relacionais e não com sistemas relacionais em geral, o que incluiria meros sistemas de relatórios de consultas.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">No entanto, as 12 regras tendem a explicar porque é que o suporte total ao modelo relacional é do interesse dos usuários. Nenhum novo requisito é adicionado ao modelo relacional. Posteriormente, um esquema de notas é definido e utilizado para medir o grau de fidelidade ao modelo relacional.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Primeiro, defino essas regras. Embora eu tenha definido cada regra em artigos anteriores, acredito que esta seja a primeira ocorrência de todas as 12 juntas.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Nas regras de oito a 11, especifico e exijo quatro tipos diferentes de independência destinados a proteger os investimentos dos clientes em programas de aplicação, atividades de terminal e treinamento. As regras oito e nove — independência física e lógica dos dados — têm sido amplamente discutidas há muitos anos.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">As regras 10 e 11 — independência de integridade e independência de distribuição — são aspectos da abordagem relacional que não receberam atenção adequada até à data, mas que provavelmente se tornarão tão importantes quanto a oito e a nove.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Estas regras se baseiam em uma única regra fundamental, que chamarei de Regra Zero:</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;"><strong>Regra Zero.</strong></span><br />
<span style="font-family: verdana, geneva, sans-serif;"><strong>Regra 0: Para qualquer sistema anunciado como, ou que se alega ser, um sistema de gerenciamento de banco de dados relacional, esse sistema deve ser capaz de gerenciar bancos de dados inteiramente por meio de suas capacidades relacionais.</strong></span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Esta regra deve ser válida quer o sistema suporte ou não quaisquer capacidades não relacionais de gerenciamento de dados. Qualquer SGBD que não satisfaça esta Regra Zero não vale a pena ser classificado como um SGBD relacional.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Uma consequência desta regra: qualquer sistema que se alega ser um SGBD relacional deve suportar inserção, atualização e exclusão em banco de dados no nível relacional (múltiplos registros por vez). Outra consequência é a necessidade de dar suporte à regra da informação e à regra do acesso garantido.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">“Múltiplos registros por vez” inclui como casos especiais aquelas situações em que zero ou um registro é recuperado, inserido, atualizado ou excluído. Em outras palavras, uma relação (tabela) pode ter zero tuplas (linhas) ou uma tupla e ainda assim ser uma relação válida.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Qualquer declaração nos manuais de um sistema alegado ser um SGBD relacional que aconselhe os usuários a reverter para algumas capacidades não relacionais “para alcançar um desempenho aceitável” – ou por qualquer razão que não seja a compatibilidade com programas escritos no passado em sistemas de banco de dados não relacionais – deve ser interpretado como uma desculpa do fornecedor. Tal afirmação indica que o fornecedor não realizou o trabalho necessário para alcançar um bom desempenho com a abordagem relacional.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Qual é o perigo para compradores e usuários de um sistema que é considerado um SGBD relacional e que falha na Regra Zero?</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Compradores e usuários esperarão todas as vantagens de um SGBD verdadeiramente relacional e não conseguirão obter essas vantagens. Agora descreverei as 12 regras que, juntamente com os nove recursos estruturais, 18 manipulativos e três de integridade do modelo relacional, determinam em detalhes específicos a extensão da validade da reivindicação de um fornecedor de ter um “SGBD totalmente relacional”.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Todas as 12 regras são motivadas pela Regra Zero definida acima, mas um SGBD pode ser verificado mais facilmente quanto à conformidade com essas 12 do que com a Regra Zero.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;"><strong>A regra da informação.</strong></span><br />
<span style="font-family: verdana, geneva, sans-serif;"><strong>Regra 1: Todas as informações em um banco de dados relacional são representadas explicitamente no nível lógico e exatamente de uma maneira — por valores em tabelas.</strong></span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Até mesmo nomes de tabelas, nomes de colunas e nomes de domínio são representados como cadeias de caracteres em algumas tabelas. As tabelas que contêm esses nomes normalmente fazem parte do catálogo interno do sistema. O catálogo é, portanto, uma base de dados relacional em si &#8211; dinâmica e ativa e que representa os metadados (dados que descrevem o restante dos dados no sistema). A regra de informação é aplicada não apenas para a produtividade do usuário, mas também para tornar um trabalho razoavelmente simples para os fornecedores de software definir pacotes de software adicionais (como auxílios ao desenvolvimento de aplicativos, sistemas especialistas e assim por diante) que fazem interface com SGBD relacionais e, por definição, estão bem integrados ao SGBD.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Ou seja, esses pacotes recuperam informações já existentes no catálogo e, conforme a necessidade, colocam novas informações no catálogo pelo próprio ato de utilizar o SGBD.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Uma razão adicional para aplicar esta regra é tornar a tarefa do administrador da base de dados de manter a base de dados num estado de integridade geral mais simples e mais eficaz. Não há nada mais embaraçoso para um administrador de base de dados do que ser questionado se a sua base de dados contém certas informações específicas e ele responder, após uma semana de exame da base de dados, que ele não sabe.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;"><strong>Regra de acesso garantido.</strong></span><br />
<span style="font-family: verdana, geneva, sans-serif;"><strong>Regra 2: É garantido que todo e qualquer dado (valor atômico) em um banco de dados relacional seja logicamente acessível recorrendo a uma combinação de nome de tabela, valor de chave primária e nome de coluna.</strong></span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Claramente, cada dado em um banco de dados relacional pode ser acessado em uma rica variedade – possivelmente milhares – de maneiras logicamente distintas. No entanto, é importante ter pelo menos uma forma, independente da base de dados relacional específica, que seja garantida, porque a maioria dos conceitos orientados para o computador (como a varredura de endereços sucessivos) foram deliberadamente omitidos do modelo relacional.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Observe que a regra de acesso garantido representa um esquema de endereçamento associativo exclusivo do modelo relacional. A regra não depende em nada do endereçamento usual orientado por computador. No entanto, o conceito de chave primária é uma parte essencial dele.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;"><strong>Tratamento sistemático de valores nulos.</strong></span><br />
<span style="font-family: verdana, geneva, sans-serif;"><strong>Regra 3: Valores nulos (distintos da sequência de caracteres vazia ou de uma sequência de caracteres em branco e distintos de zero ou qualquer outro número) são suportados em SGBDs totalmente relacionais para representar informações ausentes e informações inaplicáveis de forma sistemática, independente do tipo de dados.</strong></span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Para suportar integridade do banco de dados, deve ser possível especificar “nulos não permitidos” para cada coluna de chave primária e para quaisquer outras colunas onde o administrador do banco de dados considere uma restrição de integridade apropriada (por exemplo, certas colunas de chave estrangeira).</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">As técnicas anteriores envolviam a definição de um valor especial (peculiar a cada coluna ou campo) para representar a informação faltante. Isto seria muito assistemático em um banco de dados relacional porque os usuários teriam que empregar técnicas diferentes para cada coluna ou domínio — uma tarefa difícil devido ao alto nível de linguagem em uso (e uma tarefa que acredito que diminuiria a produtividade do usuário).</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;"><strong>Catálogo on-line dinâmico baseado no modelo relacional.</strong></span><br />
<span style="font-family: verdana, geneva, sans-serif;"><strong>Regra 4: A descrição do banco de dados é representada no nível lógico da mesma forma que os dados comuns, de modo que os usuários autorizados possam aplicar à sua interrogação a mesma linguagem relacional que aplicam aos dados regulares.</strong></span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Uma consequência disso é que cada usuário (seja um programador de aplicação ou um usuário final) precisa aprender apenas um modelo de dados &#8211; uma vantagem que os sistemas não relacionais geralmente não oferecem (o IMS da IBM, juntamente com seu dicionário, exige que o usuário aprenda dois modelos de dados distintos).</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Outra consequência é que os usuários autorizados podem facilmente estender o catálogo para se tornar um dicionário de dados relacional ativo e completo sempre que o fornecedor não o fizer.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;"><strong>Regra abrangente de sublinguagem de dados.</strong></span><br />
<span style="font-family: verdana, geneva, sans-serif;"><strong>Regra 5: Um sistema relacional pode suportar diversas linguagens e vários modos de uso de terminal (por exemplo, o modo de preencher as lacunas). No entanto, deve haver pelo menos uma linguagem cujas instruções sejam expressáveis, de acordo com alguma sintaxe bem definida, como cadeias de caracteres e que seja abrangente no suporte a todos os itens a seguir:</strong></span></p>
<ul>
<li><span style="font-family: verdana, geneva, sans-serif;">Definição de dados.</span></li>
<li><span style="font-family: verdana, geneva, sans-serif;">Definição de Views.</span></li>
<li><span style="font-family: verdana, geneva, sans-serif;">Manipulação de dados (interativa e por programa).</span></li>
<li><span style="font-family: verdana, geneva, sans-serif;">Restrições de integridade.</span></li>
<li><span style="font-family: verdana, geneva, sans-serif;">Autorização.</span></li>
<li><span style="font-family: verdana, geneva, sans-serif;">Limites de transação (início, confirmação e reversão).</span></li>
</ul>
<p><span style="font-family: verdana, geneva, sans-serif;">A abordagem relacional é altamente dinâmica de forma intencional — ou seja, raramente será necessário interromper a atividade do banco de dados (em contraste com um SGBD não relacional). Portanto, não faz sentido separar os serviços listados acima em linguagens distintas.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Em meados dos anos 70, o Comitê de Planejamento e Requisitos de Padrões Ansi gerou um documento defendendo 42 interfaces distintas e (potencialmente) 42 linguagens distintas para SGBD. Felizmente, essa ideia aparentemente foi abandonada.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;"><strong>Regra de atualização de visões</strong></span><br />
<span style="font-family: verdana, geneva, sans-serif;"><strong>Regra 6: Todas as visões que são teoricamente atualizáveis também são atualizáveis pelo sistema.</strong></span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Observe que uma visão é teoricamente atualizável se existir um algoritmo independente de tempo para determinar inequivocamente uma única série de mudanças nas relações de base que terão como efeito precisamente as mudanças solicitadas na visão. A este respeito, “atualização” pretende incluir inserção e exclusão, bem como modificação.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;"><strong>Inserção, atualização e exclusão de alto nível.</strong></span><br />
<span style="font-family: verdana, geneva, sans-serif;"><strong>Regra 7: A capacidade de tratar uma relação base ou uma relação derivada como um único operando aplica-se não apenas à recuperação de dados, mas também à inserção, atualização e exclusão de dados.</strong></span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Este requisito dá ao sistema muito mais espaço para otimizar a eficiência de suas ações em tempo de execução. Ele permite que o sistema determine quais caminhos de acesso explorar para obter o código mais eficiente. Também pode ser extremamente importante para obter um tratamento eficiente de transações em um banco de dados distribuído. Neste caso, os usuários prefeririam que os custos de comunicação fossem poupados, evitando a necessidade de transmitir um pedido separado para cada registro obtido de locais remotos.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;"><strong>Independência física de dados.</strong></span><br />
<span style="font-family: verdana, geneva, sans-serif;"><strong>Regra 8: Os programas aplicativos e as atividades do terminal permanecem logicamente inalterados sempre que qualquer alteração é feita nas representações de armazenamento ou nos métodos de acesso.</strong></span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Para lidar com isso, o SGBD deve suportar uma fronteira clara e nítida entre os aspectos lógicos e semânticos, por um lado, e os aspectos físicos e de desempenho das tabelas base, por outro; os programas aplicativos devem lidar apenas com os aspectos lógicos.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">SGBDs não relacionais raramente fornecem suporte completo para esta regra – na verdade, não conheço nenhum que o faça.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;"><strong>Independência lógica de dados.</strong></span><br />
<span style="font-family: verdana, geneva, sans-serif;"><strong>Regra 9: Os programas aplicativos e as atividades de terminal permanecem logicamente intactos quando alterações de qualquer tipo que preservem informações e que teoricamente permitam a integridade são feitas nas tabelas base.</strong></span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Tomemos os dois exemplos a seguir: dividir uma tabela em duas tabelas, seja por linhas usando conteúdo de linha ou por colunas usando nomes de coluna, se as chaves primárias forem preservadas em cada resultado; ou combinar duas tabelas em uma por meio de uma junção sem perdas (os autores da Universidade de Stanford e do MIT chamam essas junções de “sem perdas”). Para fornecer este serviço sempre que possível, o SGBD deve ser capaz de lidar com inserções, atualizações e exclusões em todas as visões que são teoricamente atualizáveis. Esta regra permite que o design do banco de dados lógico seja alterado dinamicamente se, por exemplo, tal alteração melhorar o desempenho.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">As regras de independência de dados físicos e lógicos permitem que os projetistas de bancos de dados para SGBDs relacionais cometam erros em seus projetos sem as pesadas penalidades impostas pelos SGBDs não relacionais. Isso, por sua vez, significa que é muito mais fácil começar com um SGBD relacional porque não é necessário tanto planejamento orientado ao desempenho antes da “decolagem”.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;"><strong>Independência de integridade.</strong></span><br />
<span style="font-family: verdana, geneva, sans-serif;"><strong>Regra 10: As restrições de integridade específicas de um banco de dados relacional em particular devem ser definíveis na sublinguagem de dados relacionais e armazenáveis no catálogo, e não nos programas aplicativos.</strong></span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Além das duas regras de integridade (integridade de entidade e integridade referencial) que se aplicam a todos os bancos de dados relacionais, há uma necessidade clara de poder especificar restrições de integridade adicionais que reflitam políticas de negócios ou regulamentações governamentais.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Suponha que o modelo relacional seja refletido fielmente. Então, as restrições de integridade adicionais são definidas em termos da sublinguagem de dados de alto nível e das definições armazenadas no catálogo, não nos programas aplicativos. Informações sobre objetos identificados inadequadamente nunca são registradas em um banco de dados relacional. Para ser mais específico, as duas regras de integridade a seguir se aplicam a todos os bancos de dados relacionais:</span></p>
<ul>
<li><span style="font-family: verdana, geneva, sans-serif;">Integridade da entidade. Nenhum componente de uma chave primária pode ter um valor nulo.</span></li>
<li><span style="font-family: verdana, geneva, sans-serif;">Integridade referencial. Para cada valor de chave estrangeira não nulo distinto em um banco de dados relacional, deve existir um valor de chave primária correspondente do mesmo domínio.</span></li>
</ul>
<p><span style="font-family: verdana, geneva, sans-serif;">Se, como às vezes acontece, as políticas empresariais ou as regulamentações governamentais mudarem, provavelmente será necessário alterar as restrições de integridade. Normalmente, isso pode ser feito em um SGBD totalmente relacional, alterando uma ou mais instruções de integridade armazenadas no catálogo.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Em muitos casos, nem os programas aplicativos nem as atividades do terminal são prejudicadas logicamente.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">SGBDs não relacionais raramente suportam esta regra como parte do mecanismo do SGBD, ao qual ela pertence. Em vez disso, eles dependem de um pacote de dicionário, que pode ou não estar presente e pode ser facilmente ignorado.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;"><strong>Independência de distribuição.</strong></span><br />
<span style="font-family: verdana, geneva, sans-serif;"><strong>Regra 11: Um SGBD relacional possui independência de distribuição.</strong></span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Por independência de distribuição, quero dizer que o SGBD possui uma sublinguagem de dados que permite que programas aplicativos e atividades de terminal permaneçam logicamente intactos:</span></p>
<ul>
<li><span style="font-family: verdana, geneva, sans-serif;">Quando a distribuição de dados é introduzida pela primeira vez (se o SGBD instalado originalmente gerencia apenas dados não distribuídos);</span></li>
<li><span style="font-family: verdana, geneva, sans-serif;">Quando os dados são redistribuídos (se o SGBD gerencia dados distribuídos).</span></li>
</ul>
<p><span style="font-family: verdana, geneva, sans-serif;">Note que a definição é cuidadosamente redigida para que tanto o SGBD distribuído quanto o não distribuído possam suportar totalmente a Regra 11. O SQL/DS e DB2 da IBM, Oracle Corp. da Oracle e Ingres da Relational Technology, Inc. (todos não distribuídos nos <em>releases</em> atuais) suportam totalmente esta regra.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Isso foi demonstrado da seguinte forma: programas SQL foram escritos para operar em dados não distribuídos (usando o System R), rodam corretamente em versões distribuídas desses dados (usando System R*, o protótipo do IBM San Jose Research Laboratory), e o projeto distribuído Ingres na Universidade da Califórnia em Berkeley mostrou a mesma capacidade para a linguagem Quel de Ingres.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">É importante distinguir o processamento distribuído dos dados distribuídos. No primeiro caso, o trabalho (por exemplo, programas) é transmitido aos dados; neste último caso, os dados são transmitidos para o trabalho. Muitos DBMS não relacionais suportam processamento distribuído, mas não dados distribuídos. Os únicos sistemas que suportam o conceito de fazer com que todos os dados distribuídos pareçam locais são SGBDs relacionais – estes são protótipos no momento.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">No caso de um SGBD relacional distribuído, uma única transação pode abranger vários locais remotos. Isso é gerenciado inteiramente nos bastidores – o sistema pode ter que executar a recuperação em vários locais. Cada programa ou atividade de terminal trata a totalidade dos dados como se fossem todos locais do site onde o programa aplicativo ou atividade de terminal está sendo executado.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Um SGBD totalmente relacional que não suporta bancos de dados distribuídos tem a capacidade de ser estendido para fornecer esse suporte, deixando os programas aplicativos e as atividades do terminal logicamente intactos, tanto no momento da distribuição inicial quanto sempre que a redistribuição posterior for feita.</span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Existem quatro razões importantes pelas quais um SGBD relacional desfruta desta vantagem:</span></p>
<ul>
<li><span style="font-family: verdana, geneva, sans-serif;">Flexibilidade de decomposição na decisão de como implantar os dados.</span></li>
<li><span style="font-family: verdana, geneva, sans-serif;">Poder de recomposição dos operadores relacionais ao combinar os resultados de subtransações executadas em diferentes sites.</span></li>
<li><span style="font-family: verdana, geneva, sans-serif;">Economia de transmissão resultante do fato de não ser necessário enviar uma mensagem de solicitação para cada registro a ser recuperado de qualquer site remoto.</span></li>
<li><span style="font-family: verdana, geneva, sans-serif;">Analisabilidade da intenção (devido ao nível muito alto das linguagens relacionais) para uma otimização de execução amplamente melhorada.</span></li>
</ul>
<p><span style="font-family: verdana, geneva, sans-serif;"><strong>Regra de não subversão.</strong></span><br />
<span style="font-family: verdana, geneva, sans-serif;"><strong>Regra 12: Se um sistema relacional tiver uma linguagem de baixo nível (registro único por vez), esse baixo nível não pode ser usado para subverter ou contornar as regras e restrições de integridade expressas na linguagem relacional de nível superior (múltiplos registros por vez).</strong></span></p>
<p><span style="font-family: verdana, geneva, sans-serif;">Na abordagem relacional, a preservação da integridade é independente da estrutura lógica de dados para alcançar a independência da integridade. Esta regra é extremamente difícil para um sistema “nascido de novo” obedecer porque tal sistema já suporta uma interface abaixo da interface de restrição relacional. Os fornecedores de sistemas “nascidos de novo” não parecem ter dado a devida atenção a este problema.</span></p>
<p>Essas foram as 12 regras de Codd para sistemas de bancos de dados relacionais. Note que, embora essas regras fossem bastante válidas para a época da publicação dos artigos, sua intenção e seu público, hoje em dia é mais apropriado levar em consideração os artigos batizados de &#8220;O Terceiro Manifesto&#8221;, escritos por Christopher J. Date e Hugh Darwen sobre o modelo relacional, que podem ser acessados em <a href="http://thethirdmanifesto.com" target="_blank" rel="noopener">http://thethirdmanifesto.com</a>.</p>
<p>Fonte do texto e referências: <a href="https://reldb.org/c/index.php/twelve-rules/" target="_blank" rel="noopener">https://reldb.org/c/index.php/twelve-rules/</a></p>
<p>Aproveite e assista a um vídeo sobre as 12 Regras de Codd no canal da Bóson Treinamentos no YouTube:</p>
<p><iframe loading="lazy" title="YouTube video player" src="https://www.youtube.com/embed/r2JE38rqrxQ?si=8X_M9qNYdO9lFYGl" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<h3>Colabore com a Bóson Treinamentos</h3>
<p>Ajude o canal adquirindo meus cursos na Udemy:</p>
<ul>
<li>Bancos de Dados com MySQL Básico: <a href="https://bit.ly/35QdWE4" target="_blank" rel="noopener">https://bit.ly/35QdWE4</a></li>
<li>Lógica de Programação com Português Estruturado: <a href="https://bit.ly/3QKPn22" target="_blank" rel="noopener">https://bit.ly/3QKPn22</a></li>
<li>Programação em Python do Zero: <a href="https://bit.ly/python-boson" target="_blank" rel="noopener">https://bit.ly/python-boson</a></li>
</ul>
<p>Adquira também livros e outros itens na loja da Bóson Treinamentos na Amazon e ajude o canal a se manter e crescer: <a href="https://www.amazon.com.br/shop/bosontreinamentos" target="_blank" rel="noopener">https://www.amazon.com.br/shop/bosontreinamentos</a></p>
<p>O post <a href="https://www.bosontreinamentos.com.br/modelagem-de-dados/as-12-regras-de-codd-para-sistemas-de-bancos-de-dados-relacionais/">As 12 Regras de Codd para Sistemas de Bancos de Dados Relacionais</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/modelagem-de-dados/as-12-regras-de-codd-para-sistemas-de-bancos-de-dados-relacionais/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Conceitos de Bancos de Dados &#8211; O que é OLTP</title>
		<link>https://www.bosontreinamentos.com.br/bancos-de-dados/conceitos-de-bancos-de-dados-o-que-e-oltp/</link>
					<comments>https://www.bosontreinamentos.com.br/bancos-de-dados/conceitos-de-bancos-de-dados-o-que-e-oltp/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Mon, 03 Apr 2023 10:57:43 +0000</pubDate>
				<category><![CDATA[Bancos de Dados]]></category>
		<category><![CDATA[Modelagem de Dados]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=13727</guid>

					<description><![CDATA[<p>O que é OLTP em Bancos de Dados A sigla OLTP (Online Transaction Processing / Processamento de Transações Online) se refere a um tipo de aplicação de banco de dados que é projetada para processar transações em tempo real.Essas transações geralmente envolvem operações de inserção, atualização ou exclusão de pequenas quantidades de dados em um banco de dados. As aplicações OLTP geralmente são usadas em ambientes comerciais para executar transações de negócios diárias, como processamento de pedidos, gerenciamento de estoque, gerenciamento de contas e processamento de pagamentos. Essas transações geralmente envolvem interações entre muitos usuários simultaneamente e, portanto, devem ser processadas de maneira rápida e confiável. Os bancos de dados OLTP são projetados para suportar altas taxas de transações e muitas vezes incluem recursos como indexação, particionamento de tabelas e controle de concorrência para garantir que as transações sejam processadas com eficiência e precisão. Online Transaction Processing &#8211; OLTP Esses bancos de dados também são frequentemente otimizados para leitura/gravação e normalização de dados para minimizar o espaço de armazenamento e reduzir a redundância de dados. Exemplos de sistema OLTP Exemplos de sistemas que usam OLTP incluem: Bancos de dados de processamento de pedidos: Os varejistas on-line e as empresas que [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/bancos-de-dados/conceitos-de-bancos-de-dados-o-que-e-oltp/">Conceitos de Bancos de Dados &#8211; O que é OLTP</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>O que é OLTP em Bancos de Dados</h2>
<p>A sigla <strong>OLTP</strong> (<em>Online Transaction Processing</em> / Processamento de Transações Online) se refere a um tipo de aplicação de <a href="http://www.bosontreinamentos.com.br/bancos-de-dados/o-que-sao-bancos-de-dados/">banco de dados</a> que é projetada para processar transações em tempo real.Essas transações geralmente envolvem operações de inserção, atualização ou exclusão de pequenas quantidades de dados em um banco de dados.</p>
<p>As aplicações OLTP geralmente são usadas em ambientes comerciais para executar transações de negócios diárias, como processamento de pedidos, gerenciamento de estoque, gerenciamento de contas e processamento de pagamentos.</p>
<p>Essas transações geralmente envolvem interações entre muitos usuários simultaneamente e, portanto, devem ser processadas de maneira rápida e confiável.</p>
<p>Os bancos de dados OLTP são projetados para suportar altas taxas de transações e muitas vezes incluem recursos como indexação, particionamento de tabelas e controle de concorrência para garantir que as transações sejam processadas com eficiência e precisão.</p>
<div id="attachment_19137" style="width: 360px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-19137" class="wp-image-19137" title="Online Transaction Processing - OLTP em bancos de dados relacionais" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/OLTP-bancos-de-dados.png" alt="Online Transaction Processing - OLTP em bancos de dados relacionais" width="350" height="350" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/OLTP-bancos-de-dados.png 500w, https://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/OLTP-bancos-de-dados-170x170.png 170w, https://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/OLTP-bancos-de-dados-420x420.png 420w" sizes="auto, (max-width: 350px) 100vw, 350px" /><p id="caption-attachment-19137" class="wp-caption-text"><em>Online Transaction Processing</em> &#8211; OLTP</p></div>
<p>Esses bancos de dados também são frequentemente otimizados para leitura/gravação e normalização de dados para minimizar o espaço de armazenamento e reduzir a redundância de dados.</p>
<h3>Exemplos de sistema OLTP</h3>
<p>Exemplos de sistemas que usam OLTP incluem:</p>
<ul>
<li><strong>Bancos de dados de processamento de pedidos</strong>: Os varejistas on-line e as empresas que vendem produtos ou serviços on-line usam bancos de dados OLTP para processar pedidos em tempo real. Esses bancos de dados são usados para gerenciar o estoque de produtos, registrar as informações do cliente, processar transações de pagamento e rastrear o envio dos pedidos.</li>
<li><strong>Bancos de dados de gerenciamento de contas</strong>: Bancos, empresas financeiras e outras organizações que gerenciam contas de clientes usam bancos de dados OLTP para registrar e processar transações financeiras em tempo real. Esses bancos de dados são usados para gerenciar o saldo da conta, registrar depósitos e retiradas, gerar extratos de conta e fornecer serviços on-line para os clientes.</li>
<li><strong>Bancos de dados de reservas de viagens</strong>: Companhias aéreas, hotéis e outras empresas de viagens usam bancos de dados OLTP para gerenciar reservas em tempo real. Esses bancos de dados são usados para armazenar informações sobre voos, quartos de hotel e outros serviços de viagens, bem como para processar reservas, atualizar disponibilidade e confirmar reservas de clientes.</li>
<li><strong>Bancos de dados de atendimento ao cliente</strong>: Empresas de serviços ao cliente, como telecomunicações, empresas de serviços públicos e seguradoras, usam bancos de dados OLTP para gerenciar interações com os clientes em tempo real. Esses bancos de dados são usados para armazenar informações sobre os clientes, registrar reclamações, gerenciar solicitações de serviço e fornecer suporte técnico.</li>
</ul>
<p>Existem muitos outros exemplos de bancos de dados OLTP. Na prática, qualquer aplicação que envolva processamento de transações em tempo real e requer alta disponibilidade e confiabilidade pode usar um banco de dados OLTP.</p>
<h3>SGBDs com suporte a OLTP</h3>
<p>Existem muitos SGBDs (Sistemas de Gerenciamento de Bancos de Dados) que suportam OLTP. Aqui estão alguns exemplos:</p>
<ul>
<li><strong>MySQL</strong>: O <a href="http://www.bosontreinamentos.com.br/curso-completo-de-mysql/">MySQL</a> é um sistema de gerenciamento de bancos de dados relacionais de código aberto que é frequentemente usado para aplicativos OLTP, como sistemas de comércio eletrônico, bancos de dados de gerenciamento de pedidos e aplicativos financeiros.</li>
<li><strong>Microsoft SQL Server:</strong> <a href="http://www.bosontreinamentos.com.br/curso-de-microsoft-sql-server/">SQL Server</a> é um SGBD relacional proprietário que é frequentemente usado para aplicativos OLTP, como bancos de dados de gerenciamento de pedidos, bancos de dados de gerenciamento de contas e sistemas de reservas de viagens.</li>
<li><strong>Oracle Database</strong>: O <a href="http://www.bosontreinamentos.com.br/category/oracle-database/">Oracle Database</a> é outro SGBD relacional proprietário que é usado para uma ampla variedade de aplicativos OLTP, como bancos de dados de gerenciamento de contas, bancos de dados de gerenciamento de pedidos e sistemas de reservas de viagens.</li>
<li><a href="http://www.bosontreinamentos.com.br/curso-completo-de-postgresql/"><strong>PostgreSQL</strong></a>: SGBD de código aberto que é frequentemente usado para aplicativos OLTP, como bancos de dados de gerenciamento de pedidos, sistemas de reservas de viagens e sistemas de gerenciamento de estoque.</li>
<li><strong>MongoDB</strong>: O <a href="http://www.bosontreinamentos.com.br/nosql/instalando-o-mongodb-no-microsoft-windows/">MongoDB</a> é um <a href="http://www.bosontreinamentos.com.br/mysql/mysql-bancos-de-dados-sgbdr-e-grupos-de-comandos-04/">SGBD</a> <a href="http://www.bosontreinamentos.com.br/nosql/bancos-de-dados-o-que-e-nosql/">NoSQL</a> de código aberto que é frequentemente usado para aplicativos OLTP, como sistemas de gerenciamento de usuários e bancos de dados de gerenciamento de pedidos.</li>
</ul>
<p>Na verdade, a maioria dos SGBDs modernos suporta OLTP, pois é uma necessidade comum para aplicativos empresariais e de comércio eletrônico em tempo real.</p>
<h3>Conclusão</h3>
<p>Resumindo, OLTP é um tipo de aplicação de banco de dados que lida com transações em tempo real e é projetada para suportar altas taxas de transações em ambientes comerciais.</p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/bancos-de-dados/conceitos-de-bancos-de-dados-o-que-e-oltp/">Conceitos de Bancos de Dados &#8211; O que é OLTP</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/bancos-de-dados/conceitos-de-bancos-de-dados-o-que-e-oltp/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Modelagem de Dados &#8211; O que são Dependências em Bancos de Dados</title>
		<link>https://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-dependencias/</link>
					<comments>https://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-dependencias/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Thu, 24 Feb 2022 14:26:29 +0000</pubDate>
				<category><![CDATA[Modelagem de Dados]]></category>
		<category><![CDATA[Bancos de Dados]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=16829</guid>

					<description><![CDATA[<p>Dependências em Bancos de Dados Artigo complementar do Curso Completo de Modelagem de Dados da Bóson Treinamentos no YouTube. As dependências, em bancos de dados relacionais, são restrições aplicadas sobre atributos, ou que definem a relação entre dois ou mais atributos em uma tabela. As dependências ocorrem quando uma coluna em uma tabela é determinada por outra coluna, ou seja, quando uma coluna depende de outra para fazer sentido. Um exemplo clássico seria uma tabela de produtos, com campos como Código do Produto, Preço do Produto e Data de Validade. Para saber o preço de um determinado produto é bem evidente que precisamos saber de que produto se trata e, para tal, usamos o código do produto para identificá-lo. Neste caso, dizemos que o preço do produto depende do código do produto armazenado. Esta é uma forma de dependência, que chamamos de dependência funcional, mas existem outras, que passaremos a estudar a seguir. Tipos de Dependências entre Atributos Os tipos de dependências que podem ocorrer em uma tabela de banco de dados são os seguintes: Dependência Funcional Dependência Funcional Total Dependência Funcional Parcial Dependência Funcional Transitiva Dependência Multivalorada Vamos explicar cada um deles a partir de agora. Dependência Funcional Seja [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-dependencias/">Modelagem de Dados &#8211; O que são Dependências em Bancos de Dados</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Dependências em Bancos de Dados</h2>
<p><em>Artigo complementar do <a href="https://www.youtube.com/watch?v=Q_KTYFgvu1s&amp;list=PLucm8g_ezqNoNHU8tjVeHmRGBFnjDIlxD" target="_blank" rel="noopener">Curso Completo de Modelagem de Dados</a> da Bóson Treinamentos no YouTube.</em></p>
<p>As dependências, em <a href="http://www.bosontreinamentos.com.br/modelagem-de-dados/o-modelo-entidade-relacionamento-introducao/">bancos de dados relacionais</a>, são restrições aplicadas sobre atributos, ou que definem a relação entre dois ou mais atributos em uma tabela. As dependências ocorrem quando uma coluna em uma tabela é determinada por outra coluna, ou seja, quando uma coluna depende de outra para fazer sentido.</p>
<p>Um exemplo clássico seria uma tabela de produtos, com campos como <strong>Código do Produto</strong>, <strong>Preço do Produto</strong> e <strong>Data de Validade</strong>. Para saber o preço de um determinado produto é bem evidente que precisamos saber de que produto se trata e, para tal, usamos o código do produto para identificá-lo. Neste caso, dizemos que o preço do produto depende do código do produto armazenado.</p>
<p>Esta é uma forma de dependência, que chamamos de <em><strong>dependência funcional</strong></em>, mas existem outras, que passaremos a estudar a seguir.</p>
<h3>Tipos de Dependências entre Atributos</h3>
<p>Os tipos de dependências que podem ocorrer em uma tabela de banco de dados são os seguintes:</p>
<ul>
<li>Dependência Funcional</li>
<li>Dependência Funcional Total</li>
<li>Dependência Funcional Parcial</li>
<li>Dependência Funcional Transitiva</li>
<li>Dependência Multivalorada</li>
</ul>
<p>Vamos explicar cada um deles a partir de agora.</p>
<h3>Dependência Funcional</h3>
<p><span style="font-weight: 400;">Seja E uma entidade, e X e Y dois atributos quaisquer de E. Dizemos que Y é funcionalmente dependente de X se e somente se cada valor de X tiver associado a ele exatamente um valor de Y.</span></p>
<p><span style="font-weight: 400;">Simbolicamente:</span></p>
<p style="text-align: center;"><span style="font-size: 24pt; color: #800000;"><strong>X → Y</strong></span></p>
<p><span style="font-weight: 400;">Que lemos como “X determina funcionalmente Y”.</span></p>
<p><strong>Exemplo</strong></p>
<p><span style="font-weight: 400;">Ex.: Pensando em uma tabela de pedidos; O prazo de entrega de um pedido depende do número do pedido considerado:</span></p>
<p style="text-align: center;"><strong><span style="font-size: 24pt; color: #800000;">Num_Pedido  →  Prazo_Entr_Pedido</span></strong></p>
<p><span style="font-weight: 400;">O atributo que determina o valor é chamado de </span><b>Determinante</b><span style="font-weight: 400;">. O outro atributo é chamado de </span><b>Dependente</b><span style="font-weight: 400;">.</span></p>
<p><span style="font-weight: 400;">Uma <a href="http://www.bosontreinamentos.com.br/mysql/mysql-constraints-restricoes-primary-key-fk-default-etc-06/">chave primária</a> em uma relação determina funcionalmente todos os outros atributos não-chave na linha.</span></p>
<h3>Dependência Funcional Total</h3>
<p><span style="font-weight: 400;">Em uma relação com uma </span><span style="font-weight: 400;">PK composta</span><span style="font-weight: 400;">, um atributo não-chave que dependa dessa PK como um todo, e não somente de parte dela, é dito como possuindo Dependência Funcional Total.</span></p>
<p><strong>Exemplo</strong></p>
<p>Veja o exemplo a seguir:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-16835" title="Dependência Funcional Total em Bancos de Dados" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/modelagem-de-dados-dependencia-funcional-total.jpg" alt="Dependência Funcional Total em Bancos de Dados" width="449" height="278" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/modelagem-de-dados-dependencia-funcional-total.jpg 606w, https://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/modelagem-de-dados-dependencia-funcional-total-420x260.jpg 420w" sizes="auto, (max-width: 449px) 100vw, 449px" /></p>
<p><span style="font-weight: 400;">Aqui, Quant_produto depende tanto de Num_Pedido quanto de Cod_Produto, ao mesmo tempo.</span></p>
<p>Obs.: <span style="font-weight: 400;">A dependência funcional total só pode ocorrer em tabela com chave primária composta.</span></p>
<h3>Dependência Funcional Parcial</h3>
<p><span style="font-weight: 400;">Uma dependência funcional é parcial quando os atributos não-chave não dependem funcionalmente de toda a PK quando esta for composta.</span></p>
<p><span style="font-weight: 400;">Ou seja, existe uma dependência funcional, mas somente de uma parte da <a href="http://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-tipos-de-chaves/">chave primária</a>.</span></p>
<p><strong>Exemplo</strong></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-16836" title="Dependência funcional parcial em bancos de dados" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/modelagem-de-dados-dependencia-funcional-parcial.jpg" alt="Dependência funcional parcial em bancos de dados" width="450" height="343" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/modelagem-de-dados-dependencia-funcional-parcial.jpg 601w, https://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/modelagem-de-dados-dependencia-funcional-parcial-420x320.jpg 420w" sizes="auto, (max-width: 450px) 100vw, 450px" /></p>
<p><span style="font-weight: 400;">Campo Nome_Disciplina é dependente de Cod_Disciplina, mas não do ID_Aluno.</span></p>
<h3>Dependência Funcional Transitiva</h3>
<p><span style="font-weight: 400;">Este tipo de dependência ocorre quando um campo não-chave não depende diretamente da chave primária da tabela (nem mesmo parcialmente), mas depende de um outro campo não-chave na tabela.</span></p>
<p><strong>Exemplo</strong></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-16837" title="Dependência Funcional Transitiva" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/modelagem-de-dados-dependencia-funcional-transitiva.jpg" alt="Dependência Funcional Transitiva" width="451" height="314" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/modelagem-de-dados-dependencia-funcional-transitiva.jpg 600w, https://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/modelagem-de-dados-dependencia-funcional-transitiva-420x293.jpg 420w" sizes="auto, (max-width: 451px) 100vw, 451px" /></p>
<p><span style="font-weight: 400;">No exemplo, o atributo Nome_Vendedor depende funcionalmente do Cód_Vendedor, que não é <a href="http://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-tipos-de-chaves/">chave primária</a> na tabela. Já o campo Prazo_Entrega depende da PK, Num_Pedido</span></p>
<h3>Dependência Multivalorada</h3>
<p><span style="font-weight: 400;">Ocorre quando, para cada valor de um atributo A, existe um conjunto de valores para outros atributos B e C que estão associados a ele, mas que são independentes entre si.</span></p>
<p><span style="font-weight: 400;">Representamos a dependência multivalorada assim:</span></p>
<p style="text-align: center;"><span style="color: #800000;"><strong><span style="font-size: 24pt;">A —&gt;&gt; B</span></strong></span></p>
<p><span style="font-weight: 400;">Onde B é a coluna que depende da coluna A.</span></p>
<p><strong>Exemplo</strong></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-16838" title="Dependência Multivalorada em Bancos de Dados - Dependências" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/modelagem-de-dados-dependencia-multivalorada.jpg" alt="Dependência Multivalorada em Bancos de Dados" width="450" height="331" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/modelagem-de-dados-dependencia-multivalorada.jpg 553w, https://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/modelagem-de-dados-dependencia-multivalorada-420x309.jpg 420w" sizes="auto, (max-width: 450px) 100vw, 450px" /></p>
<p><span style="font-weight: 400;">Neste exemplo, os atributos Ano e Cor são independentes entre si e dependem do modelo do carro. Essas duas colunas são <em>dependentes multivaloradas</em> do atributo Modelo.</span></p>
<h3>Conclusão</h3>
<p>Entender as dependências é fundamental durante o processo de modelagem de dados, pois, dependendo do tipo de dependência encontrada será necessário tomar determinadas decisões, como eliminar atributos, criar novas tabelas ou mover atributos entre tabelas, o que ficará bem evidente quando estudarmos os processos de Normalização de Bancos de Dados.</p>
<p style="text-align: right;">Anterior: <a href="http://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-restricoes-de-integridade/">O que são Restrições de Integridade</a> em Bancos de Dados<br />
Próximo: O que é um Dicionário de Dados</p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-dependencias/">Modelagem de Dados &#8211; O que são Dependências em Bancos de Dados</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-dependencias/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>O Modelo Entidade-Relacionamento: Introdução</title>
		<link>https://www.bosontreinamentos.com.br/modelagem-de-dados/o-modelo-entidade-relacionamento-introducao/</link>
					<comments>https://www.bosontreinamentos.com.br/modelagem-de-dados/o-modelo-entidade-relacionamento-introducao/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Sun, 11 Oct 2020 15:58:16 +0000</pubDate>
				<category><![CDATA[Modelagem de Dados]]></category>
		<category><![CDATA[Bancos de Dados]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=17041</guid>

					<description><![CDATA[<p>Modelo Entidade-Relacionamento em Modelagem de Dados O Modelo Entidade-Relacionamento, também conhecido pela sigla MER, é um modelo conceitual amplamente empregado para descrever objetos envolvidos no domínio de um sistema de bancos de dados a ser construído, incluindo seus atributos e relacionamentos. Um MER permite representar de forma abstrata a estrutura que irá constituir o banco de dados, sendo&#160;composto pelos seguintes objetos: Entidades Atributos Relacionamentos Um modelo entidade relacionamento é uma maneira sistemática de descrever e definir um processo de negócio, o qual&#160;é modelado como componentes (entidades) que são ligadas umas às outras por relacionamentos que indicam as dependências entre elas. As entidades podem ter várias propriedades (atributos) que as caracterizam.&#160;Diagramas são criados para representar graficamente as entidades, atributos e relacionamentos, denominados Diagramas Entidade-Relacionamento (DER). Modelo e Diagrama (MER x DER) Um Modelo Entidade-Relacionamento, ou MER, é uma lista de entidades, seus atributos e relacionamentos, que traz informações sobre tipos de dados, restrições, descrições de entidades e outras. É comumente representado em forma textual, como uma lista de itens ou conjuntos de valores entre chaves ou parênteses. Por exemplo, uma entidade com seus atributos poderia ser representada em um MER da seguinte forma: Produtos(IdProduto, NomeProduto, PrecoProduto, QtdeEstoque) O MER foi desenvolvido [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/modelagem-de-dados/o-modelo-entidade-relacionamento-introducao/">O Modelo Entidade-Relacionamento: Introdução</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Modelo Entidade-Relacionamento em Modelagem de Dados</h2>
<p>O Modelo Entidade-Relacionamento, também conhecido pela sigla <strong>MER</strong>, é um modelo conceitual amplamente empregado para descrever objetos envolvidos no domínio de um sistema de bancos de dados a ser construído, incluindo seus atributos e relacionamentos.</p>
<p>Um MER permite representar de forma abstrata a estrutura que irá constituir o banco de dados, sendo&nbsp;composto pelos seguintes objetos:</p>
<ul>
<li>Entidades</li>
<li>Atributos</li>
<li>Relacionamentos</li>
</ul>
<p>Um modelo entidade relacionamento é uma maneira sistemática de descrever e definir um processo de negócio, o qual&nbsp;é modelado como componentes (entidades) que são ligadas umas às outras por relacionamentos que indicam as dependências entre elas.</p>
<p>As entidades podem ter várias propriedades (atributos) que as caracterizam.&nbsp;Diagramas são criados para representar graficamente as entidades, atributos e relacionamentos, denominados Diagramas Entidade-Relacionamento (DER).</p>
<h3>Modelo e Diagrama (MER x DER)</h3>
<p>Um Modelo Entidade-Relacionamento, ou MER, é uma lista de entidades, seus atributos e relacionamentos, que traz informações sobre tipos de dados, restrições, descrições de entidades e outras. É comumente representado em forma textual, como uma lista de itens ou conjuntos de valores entre chaves ou parênteses. Por exemplo, uma entidade com seus atributos poderia ser representada em um MER da seguinte forma:</p>
<pre><span style="color: #993300;"><strong>Produtos(IdProduto, NomeProduto, PrecoProduto, QtdeEstoque)</strong></span></pre>
<p>O MER foi desenvolvido pelo cientista da computação Peter Chen e publicado em um artigo em 1976.</p>
<p>Já um <strong>Diagrama Entidade-Relacionamento</strong>, abreviado como <strong>DER</strong>, é uma representação gráfica associada a um MER (ou à uma parte dele), permitindo expressar graficamente a estrutura lógica de um banco de dados.</p>
<div id="attachment_17042" style="width: 223px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-17042" class="wp-image-17042 size-full" title="Dr. Peter Chen, criador do Modelo ER" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2020/09/peter-chen-modelo-entidade-relacionamento.jpg" alt="Dr. Peter Chen, criador do Modelo ER" width="213" height="285"><p id="caption-attachment-17042" class="wp-caption-text">Dr. Peter Chen, criador do Modelo ER</p></div>
<h3>Representação dos Componentes em um DER</h3>
<p>Os objetos componentes de um diagrama entidade-relacionamento são graficamente representados por figuras geométricas simples, conectadas por linhas. São elas:</p>
<ul>
<li>Retângulos: Representam entidades</li>
<li>Elipses: Representam atributos</li>
<li>Losangos: Representam relacionamentos</li>
<li>Linhas: Conectam os atributos às entidades e as entidades aos relacionamentos</li>
</ul>
<p>Além disso também podemos representar a Cardinalidade dos relacionamentos em um DER por meio de valores escritos entre parênteses, como por exemplo (1,1) (relacionamento um-para-um). Mais sobre isso na aula específica sobre cardinalidades.</p>
<h3>Exemplo de DER</h3>
<p>A figura a seguir mostra um Diagrama Entidade-Relacionamento de exemplo, criado com o software brModelo, que representa um sistema de banco de dados criado para gerenciar cursos, alunos e professores em uma faculdade.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-17097" title="Diagrama Entidade-Relacionamento do Projeto de Bancos de Dados Bóson Treinamentos" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2020/10/mer-projeto-modelagem-dados-boson.jpg" alt="Diagrama Entidade-Relacionamento do Projeto de Bancos de Dados Bóson Treinamentos" width="801" height="556" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2020/10/mer-projeto-modelagem-dados-boson.jpg 959w, https://www.bosontreinamentos.com.br/wp-content/uploads/2020/10/mer-projeto-modelagem-dados-boson-420x292.jpg 420w, https://www.bosontreinamentos.com.br/wp-content/uploads/2020/10/mer-projeto-modelagem-dados-boson-768x533.jpg 768w" sizes="auto, (max-width: 801px) 100vw, 801px" /></p>
<p>Podemos identificar neste DER diversas entidades, como Turma, Curso, Disciplina e Aluno, com seus atributos, e os relacionamentos existentes entre essas entidades, além de suas cardinalidades.</p>
<p>Este DER foi utilizado no pr0jeto prático do <a href="https://www.youtube.com/playlist?list=PLucm8g_ezqNoNHU8tjVeHmRGBFnjDIlxD" target="_blank" rel="noopener">curso de Modelagem de Dados</a> disponível no canal do YouTube da Bóson Treinamentos.</p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/modelagem-de-dados/o-modelo-entidade-relacionamento-introducao/">O Modelo Entidade-Relacionamento: Introdução</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/modelagem-de-dados/o-modelo-entidade-relacionamento-introducao/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Modelagem de Dados &#8211; Tipos de Chaves</title>
		<link>https://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-tipos-de-chaves/</link>
					<comments>https://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-tipos-de-chaves/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Thu, 11 Jun 2020 19:42:51 +0000</pubDate>
				<category><![CDATA[Modelagem de Dados]]></category>
		<category><![CDATA[Análise de Sistemas]]></category>
		<category><![CDATA[Bancos de Dados]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=16859</guid>

					<description><![CDATA[<p>Tipos de Chaves em Modelagem de Dados Artigo complementar do Curso Completo de Modelagem de Dados da Bóson Treinamentos no YouTube. Neste artigo vamos explorar um tópico de elevada importância em modelagem de dados: o conceito de chaves e seus tipos, com algumas dicas de como determinar chaves primárias e estrangeiras em uma tabela, e exemplos. O que são Chaves em Bancos de Dados Uma chave consiste em uma ou mais colunas combinadas de uma relação (tabela) cujos valores são usados para identificar de forma exclusiva uma linha ou um conjunto de linhas relacionadas. Uma chave pode ser única, ou seja, identifica uma única linha em uma tabela, ou ainda não-única, permitindo identificar um conjunto de linhas (registros). A seguir listamos as chaves de acordo com essa classificação: Chaves Únicas: Chave Candidata, Chave Composta, Chave Primária, Chave Surrogada (ou&#160;ChaveSubstituta), Chave Alternativa Chave Não-Única (Non-Unique): Chave Estrangeira Vamos detalhar um pouco mais cada tipo de chave a partir de agora. Chave Candidata Atributo ou grupo de atributos com o potencial para se tornarem uma chave primária. Uma chave candidata que não seja usada como chave primária será conhecida como Chave Alternativa. Exemplos: Os campos Num_Matrícula e CPF em uma tabela de [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-tipos-de-chaves/">Modelagem de Dados &#8211; Tipos de Chaves</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Tipos de Chaves em Modelagem de Dados</h2>
<p><em>Artigo complementar do <a href="https://www.youtube.com/watch?v=Q_KTYFgvu1s&amp;list=PLucm8g_ezqNoNHU8tjVeHmRGBFnjDIlxD" target="_blank" rel="noopener">Curso Completo de Modelagem de Dados</a> da Bóson Treinamentos no YouTube.</em></p>
<p>Neste artigo vamos explorar um tópico de elevada importância em modelagem de dados: o conceito de <strong><em>chaves</em></strong> e seus tipos, com algumas dicas de como determinar chaves primárias e estrangeiras em uma tabela, e exemplos.</p>
<h3>O que são Chaves em Bancos de Dados</h3>
<p><span style="font-weight: 400;">Uma <em><strong>chave</strong></em> consiste em uma ou mais colunas combinadas de uma relação (tabela) cujos valores são usados para identificar de forma exclusiva uma linha ou um conjunto de linhas relacionadas.</span></p>
<p><span style="font-weight: 400;">Uma chave pode ser única, ou seja, identifica uma única linha em uma tabela, ou ainda não-única, permitindo identificar um conjunto de linhas (registros). A seguir listamos as chaves de acordo com essa classificação:</span></p>
<ul>
<li><span style="font-weight: 400;">Chaves Únicas: Chave Candidata, Chave Composta, Chave Primária, Chave Surrogada (ou&nbsp;ChaveSubstituta), Chave Alternativa</span></li>
<li><span style="font-weight: 400;">Chave Não-Única (Non-Unique): Chave Estrangeira</span></li>
</ul>
<p>Vamos detalhar um pouco mais cada tipo de chave a partir de agora.</p>
<h3>Chave Candidata</h3>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Atributo ou grupo de atributos com o potencial para se tornarem uma chave primária.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Uma chave candidata que não seja usada como chave primária será conhecida como </span><b>Chave Alternativa</b><span style="font-weight: 400;">.</span></li>
</ul>
<p><span style="font-weight: 400;">Exemplos: Os campos Num_Matrícula e CPF em uma tabela de registro de alunos são chaves candidatas, pois podem ser usados como chave primária.</span></p>
<h3>Chave Primária</h3>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">É achave candidata escolhida para ser a </span><b><i>chave principal</i></b><span style="font-weight: 400;"> na relação.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">A chave primária identifica de forma </span><b><i>exclusiva</i></b><span style="font-weight: 400;"> os registros em uma tabela, não podendo haver repetição de valores nem tampouco valor nulo neste campo.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Em inglês Primary Key / PK</span></li>
</ul>
<p><span style="font-weight: 400;">Podemos indicar uma chave primária em um modelo de dados com um #, por exemplo <strong>#Cod_Livro</strong>, ou ainda sublinhando o nome do campo, como <strong><span style="text-decoration: underline;">Cod_Livro</span></strong>.</span></p>
<h3>Chave Estrangeira</h3>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Uma <a href="http://www.bosontreinamentos.com.br/mysql/opcoes-de-chave-estrangeira-mysql/">chave estrangeira</a> é uma coluna de uma tabela que estabelece um </span><b><i>Relacionamento com a Chave Primária</i></b><span style="font-weight: 400;"> (PK) ou coluna </span><b><i>unique</i></b><span style="font-weight: 400;"> de outra tabela relacionada.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">É a partir da chave estrangeira (Inglês: Foreign key / FK) que sabemos com qual registro em uma tabela B um registro em uma tabela A está relacionado. Assim, por exemplo, é possível saber qual livro foi vendido, em um sistema de uma livraria, pois o campo Cod_Livro (chave primária em uma tabela de cadastro de livros) estará presente em uma tabela de registro de vendas como chave estrangeira, apontando para o registro do livro especificado.</span></li>
</ul>
<h3>Chave Composta</h3>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Trata-se de uma chave que é composta de dois ou mais atributos (colunas) combinados, formando uma combinação única, cujos valores nunca se repetem (mas podem se repetir isoladamente).</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Uma chave composta geralmente é empregada quando não é possível utilizar uma única coluna de uma tabela para identificar de forma exclusiva seus registros.</span></li>
</ul>
<h3>Chave Surrogada ou Chave Substituta</h3>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Uma chave surrogada é um valor numérico, único, adicionado a uma relação para servir como chave primária, quando nenhuma chave candidata for identificada.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Não possui significado para os usuários e geralmente fica escondida nas aplicações.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">As chaves substitutas são frequentemente usadas no lugar de uma chave primária composta, para simplificação dos relacionamentos.</span></li>
</ul>
<h3><b>Instruções para criação de chaves primárias e estrangeiras</b></h3>
<p>Podemos seguir algumas recomendações simples para identificar e criar chaves primárias e chaves estrangeiras em uma tabela, como por eexmplo:</p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Não é possível haver valores duplicados em uma chave primária</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">No geral, não é possível alterar o valor de uma chave primária</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Chaves estrangeiras são baseadas em valores de dados, classificadas como ponteiros lógicos</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Um valor de uma chave estrangeira deve corresponder a um valor existente em uma chave primária associada (ou valor de chave única). Caso contrário, deve ser nulo (NULL)</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Uma chave estrangeira deve referenciar uma chave primária ou uma coluna de chave única.</span></li>
</ul>
<h3><b>Exemplo de chave primária e chave estrangeira</b></h3>
<p>No exemplo a seguir temos três tabelas relacionadas: tbl_Clientes, tbl_Vendas e tbl_Produtos. A tabela de vendas possui duas chaves estrangeiras, que a relacionam com as tabelas de clientes e de produtos, permitindo assim saber qual produto está incluído na venda, e para qual cliente esse produto foi vendido.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-16861" title="Relacionamento entre Chave Primária e Chave Estrangeira" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/chave-primaria-chave-estrangeira-1024x333.jpg" alt="Relacionamento entre Chave Primária e Chave Estrangeira" width="699" height="227" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/chave-primaria-chave-estrangeira-1024x333.jpg 1024w, https://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/chave-primaria-chave-estrangeira-420x136.jpg 420w, https://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/chave-primaria-chave-estrangeira-768x250.jpg 768w, https://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/chave-primaria-chave-estrangeira.jpg 1271w" sizes="auto, (max-width: 699px) 100vw, 699px" /></p>
<h3>O conceito de Domínio</h3>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">O conceito de Domínio em bancos de dados nos permite definir os tipos de dados usados em cada campo de uma tabela ou relação.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Também permitem especificar valores que são válidos em um campo, de acordo com o tipo de dado e intervalo de valores possível para o tipo.</span></li>
</ul>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-16862" title="O conceito de domínio em modelagem de dados" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/dominio-bancos-de-dados-conceito.jpg" alt="O conceito de domínio em modelagem de dados" width="701" height="331" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/dominio-bancos-de-dados-conceito.jpg 872w, https://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/dominio-bancos-de-dados-conceito-420x198.jpg 420w, https://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/dominio-bancos-de-dados-conceito-768x363.jpg 768w" sizes="auto, (max-width: 701px) 100vw, 701px" /></p>
<h3>Conclusão</h3>
<p>O conceito de chaves e seus tipos é de crucial importância no desenvolvimento de bancos de dados, pois a partir da determinação do campos que serão chaves primárias e estrangeiras é que poderemos estabelecer os relacionamentos entre as tabelas, em um modelo relacional.</p>
<p>Próximo: Cardinalidades em Relacionamentos</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-tipos-de-chaves/">Modelagem de Dados &#8211; Tipos de Chaves</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-tipos-de-chaves/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Modelagem de Dados &#8211; Restrições de Integridade em Bancos de Dados</title>
		<link>https://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-restricoes-de-integridade/</link>
					<comments>https://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-restricoes-de-integridade/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Sat, 06 Jun 2020 14:46:31 +0000</pubDate>
				<category><![CDATA[Modelagem de Dados]]></category>
		<category><![CDATA[Bancos de Dados]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=16825</guid>

					<description><![CDATA[<p>Restrições de Integridade em Bancos de Dados Artigo complementar do Curso Completo de Modelagem de Dados da Bóson Treinamentos no YouTube. A integridade de dados se refere á acurácia, completude e consistência dos dados armazenados em um sistema de banco de dados relacional (ou outro sistema). Isso garante que os dados armazenados possam ser armazenados, consultados e utilizados com confiabilidade, sendo assim dados íntegros &#8211; daí o nome integridade de dados. Trata-se, portanto, da manutenção e garantia da consistência e precisão dos dados, sendo um aspecto crítico no design, implementação e uso de sistemas de armazenamento de dados. Para que seja possível garantir a integridade dos dados, é necessário conhecer e aplicar determinadas restrições de armazenamento, que chamamos de Restrições de Integridade, que dizem respeito a aspectos como tipos dos dados armazenados, relacionamentos entre colunas de chave primária e estrangeira, possibilidade de haver valores nulos ou não, e regras de negócio específicas importantes requisitadas pelo cliente, por exemplo. Tipos de Restrições de Integridade Os tipos de restrições de integridade que estudaremos neste artigo são os seguintes: Integridade Referencial Integridade de Domínio Integridade de Vazio Integridade de Chave Integridade Definida pelo Usuário Vamos detalhar cada um deles a partir de agora. [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-restricoes-de-integridade/">Modelagem de Dados &#8211; Restrições de Integridade em Bancos de Dados</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Restrições de Integridade em Bancos de Dados</h2>
<p><em>Artigo complementar do <a href="https://www.youtube.com/watch?v=Q_KTYFgvu1s&amp;list=PLucm8g_ezqNoNHU8tjVeHmRGBFnjDIlxD" target="_blank" rel="noopener">Curso Completo de Modelagem de Dados</a> da Bóson Treinamentos no YouTube.</em></p>
<p>A integridade de <a href="http://www.bosontreinamentos.com.br/modelagem-de-dados/conceitos-de-dados-informacoes-e-bancos-de-dados/">dados</a> se refere á acurácia, completude e consistência dos dados armazenados em um sistema de banco de dados relacional (ou outro sistema). Isso garante que os dados armazenados possam ser armazenados, consultados e utilizados com confiabilidade, sendo assim dados íntegros &#8211; daí o nome <strong><em>integridade de dados</em></strong>.</p>
<p>Trata-se, portanto, da m<span style="font-weight: 400;">anutenção e garantia da consistência e precisão dos dados, sendo um aspecto crítico no design, implementação e uso de <a href="http://www.bosontreinamentos.com.br/bancos-de-dados/o-que-e-um-banco-de-dados-relacional/">sistemas de armazenamento de dados</a>.</span></p>
<p>Para que seja possível garantir a integridade dos dados, é necessário conhecer e aplicar determinadas restrições de armazenamento, que chamamos de <em><strong>Restrições de Integridade</strong></em>, que dizem respeito a aspectos como tipos dos dados armazenados, relacionamentos entre colunas de chave primária e estrangeira, possibilidade de haver valores nulos ou não, e regras de negócio específicas importantes requisitadas pelo cliente, por exemplo.</p>
<h3>Tipos de Restrições de Integridade</h3>
<p>Os tipos de restrições de integridade que estudaremos neste artigo são os seguintes:</p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Integridade Referencial</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Integridade de Domínio</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Integridade de Vazio</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Integridade de Chave</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Integridade Definida pelo Usuário</span></li>
</ul>
<p>Vamos detalhar cada um deles a partir de agora.</p>
<h3>Integridade de Domínio</h3>
<p><span style="font-weight: 400;">Valores inseridos em uma coluna devem sempre obedecer à definição dos valores que são permitidos para essa coluna &#8211; os valores do </span><b><i>domínio</i></b><span style="font-weight: 400;">.</span></p>
<p><span style="font-weight: 400;">Ex.: em uma coluna que armazena preços de mercadorias, os valores admitidos são do domínio numérico &#8211; ou seja, apenas números. Não há preços usando letras para sua representação.</span></p>
<h4>Integridade de Domínio: Fatores</h4>
<p>Os seguintes fatores impactam a integridade de domínio:</p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Tipo de Dado do campo</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Representação interna do tipo de dado</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Presença ou não do dado</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Intervalos de valores no domínio</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Conjuntos de valores discretos</span></li>
</ul>
<p>Exemplo</p>
<p><span style="font-weight: 400;">Suponha um atributo </span><b><i>Preço do Produto</i></b><span style="font-weight: 400;">: Valor Monetário</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Valor permitido:</span>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">25,33</span></li>
</ul>
</li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Valores não permitidos:</span>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">25 Reais e 33 centavos</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">-32,33</span></li>
</ul>
</li>
</ul>
<p>Neste exemplo, n<span style="font-weight: 400;">ão há preços usando letras ou valores negativos, e o valor </span><span style="font-weight: 400;">25,33 atende à integridade de domínio (numérico e positivo).</span></p>
<h3>Integridade Referencial</h3>
<p><span style="font-weight: 400;">Uma restrição de Integridade Referencial assegura que valores de uma coluna em uma tabela são válidos baseados nos valores em uma outra tabela relacionada.</span></p>
<p><span style="font-weight: 400;">Ex.: Se um produto de ID 523 foi cadastrado em uma tabela de Vendas, então um produto com ID 523 deve existir na tabela de Produtos relacionada.</span></p>
<p><span style="font-weight: 400;">Em resumo: cada valor de uma chave estrangeira deve corresponder a um valor de uma chave primária existente. S</span><span style="font-weight: 400;">erve para manter a consistência entre tuplas de duas relações; Aparecem devido aos relacionamentos entre entidades</span></p>
<p>Exemplo</p>
<p><span style="font-weight: 400;">Atributo </span><b><i>Nome_Produto</i></b><span style="font-weight: 400;">: Caracteres</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Valores permitidos (produtos cadastrados):</span>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Água</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Refrigerante</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Suco</span></li>
</ul>
</li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Valores não permitidos para venda (não existentes na tabela de produtos):</span>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Cerveja</span></li>
</ul>
</li>
</ul>
<p>Neste exemplo, há um problema na <span style="font-weight: 400;">Tabela de Bebidas: o item <em>Cerveja</em> viola a integridade referencial. </span><span style="font-weight: 400;">Não é possível cadastrar uma venda com esse produto, pois ele não existe na tabela de produtos.</span></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-16826" title="Integridade Referencial em Bancos de Dados" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/modelagem-de-dados-integridade-referencial-1024x449.jpg" alt="Integridade Referencial em Bancos de Dados" width="800" height="351" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/modelagem-de-dados-integridade-referencial-1024x449.jpg 1024w, https://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/modelagem-de-dados-integridade-referencial-420x184.jpg 420w, https://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/modelagem-de-dados-integridade-referencial-768x337.jpg 768w, https://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/modelagem-de-dados-integridade-referencial.jpg 1336w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<h4>Integridade Referencial: Atualização e Exclusão de Registros</h4>
<p><span style="font-weight: 400;">Se um registro for excluído em uma tabela (operações <a href="http://www.bosontreinamentos.com.br/mysql/mysql-delete-e-truncate-table-excluir-registros-de-uma-tabela-16/">DELETE e TRUNCATE</a>), então os registros relacionados em outras tabelas que o referenciam talvez precisem ser excluídos.</span></p>
<p><span style="font-weight: 400;">Caso contrário ocorrerá erro. </span><span style="font-weight: 400;">O mesmo se dá com a atualização de registros (operação <a href="http://www.bosontreinamentos.com.br/mysql/mysql-update-modificar-registros-em-tabelas-20/">UPDATE</a>).</span></p>
<h3>Integridade de Vazio</h3>
<p><span style="font-weight: 400;">Este tipo de integridade informa se a coluna é obrigatória ou opcional &#8211; ou seja, se é possível não inserir um valor na coluna.</span></p>
<p><span style="font-weight: 400;">Uma coluna de chave primária, por exemplo, sempre deve ter dados inseridos, e nunca pode estar vazia, para nenhum registro.</span></p>
<h4>Valores Nulos &#8211; NULL</h4>
<p><span style="font-weight: 400;">Um valor <strong>NULL</strong> significa que não existem dados disponíveis para o campo em particular. </span><span style="font-weight: 400;">É diferente de zero, espaço, string vazia ou tabulação, que consistem em algo armazenado.</span></p>
<p><span style="font-weight: 400;">Os nulos podem ser problemáticos, pois indicam:</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">O valor da coluna não é apropriado;</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">O valor não foi inserido;</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">O valor é desconhecido.</span></li>
</ul>
<p><strong>Exemplos de valores NULL</strong></p>
<p><span style="font-weight: 400;">Suponha uma tabela de cadastro de alunos. Nesta tabela t</span><span style="font-weight: 400;">odo aluno deverá ter um nome cadastrado, de modo que esse campo é obrigatório (atributo não-nulo &#8211; <a href="http://www.bosontreinamentos.com.br/mysql/mysql-constraints-restricoes-primary-key-fk-default-etc-06/"><strong>NOT NULL</strong></a>)</span></p>
<p><span style="font-weight: 400;">Nem todo aluno possui telefone, portanto esse campo não é obrigatório (atributo nulo)</span></p>
<div id="attachment_16827" style="width: 813px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-16827" class="wp-image-16827" title="Valores nulos em modelagem de dados" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/modelagem-de-dados-valores-nulos-1024x177.jpg" alt="Valores nulos em modelagem de dados" width="803" height="139" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/modelagem-de-dados-valores-nulos-1024x177.jpg 1024w, https://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/modelagem-de-dados-valores-nulos-420x73.jpg 420w, https://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/modelagem-de-dados-valores-nulos-768x133.jpg 768w, https://www.bosontreinamentos.com.br/wp-content/uploads/2020/06/modelagem-de-dados-valores-nulos.jpg 1288w" sizes="auto, (max-width: 803px) 100vw, 803px" /><p id="caption-attachment-16827" class="wp-caption-text">Valor nulo em uma tabela</p></div>
<h3>Integridade de Chave</h3>
<p><span style="font-weight: 400;">Os valores inseridos na coluna de chave primária (PK) devem ser sempre únicos, não admitindo-se repetições nesses valores. </span><span style="font-weight: 400;">Desta forma, as tuplas (registros) serão sempre distintas.</span></p>
<p><span style="font-weight: 400;">Os valores de chave primária também não podem ser nulos.</span></p>
<h3>Integridade Definida pelo Usuário</h3>
<p><span style="font-weight: 400;">Diz respeito a regras de negócio específicas que são definidas pelo usuário do banco de dados. </span><span style="font-weight: 400;">Por exemplo, pode-se definir que uma coluna somente aceitará um conjunto restrito de valores, como por exemplo apenas as siglas dos estados da federação, e mais nenhum outro valor diferente.</span></p>
<h3>Conclusão</h3>
<p>Conhecer as formas de integridade de dados é muito importante durante o processo de modelagem de dados, pois, é de crucial importância garantir de forma adequada que os dados armazenados sejam confiáveis e que possam ser utilizados com tranquilidade, senado sempre associados a outros dados, além de estarem sempre disponíveis.</p>
<p>Próximo: <a href="http://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-dependencias/">Dependências em Bancos de Dados</a></p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-restricoes-de-integridade/">Modelagem de Dados &#8211; Restrições de Integridade em Bancos de Dados</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-restricoes-de-integridade/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Restrições de Chave Estrangeira &#8211; ON DELETE CASCADE e outras em Bancos de Dados</title>
		<link>https://www.bosontreinamentos.com.br/bancos-de-dados/restricoes-de-chave-estrangeira-on-delete-cascade-e-outras/</link>
					<comments>https://www.bosontreinamentos.com.br/bancos-de-dados/restricoes-de-chave-estrangeira-on-delete-cascade-e-outras/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Tue, 26 Nov 2019 17:15:45 +0000</pubDate>
				<category><![CDATA[Bancos de Dados]]></category>
		<category><![CDATA[Modelagem de Dados]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=15780</guid>

					<description><![CDATA[<p>Restrições de Chave Estrangeira em Bancos de Dados As restrições de chave estrangeira em tabelas de bancos de dados relacionais são um tipo especial de restrições (constraints) definidas e empregadas para excluir ou atualizar linhas em uma tabela referenciada, quando uma operação de um desses tipos ocorre em uma tabela relacionada. As ações de exclusão e atualização são as seguintes: ON DELETE CASCADE &#8211; Uma operação de exclusão em uma tabela referenciada se propaga (cascade = em cascata) para as chaves estrangeiras correspondentes. Ou seja, ao excluir um registro em uma tabela, um registro relacionado em outra tabela é automaticamente excluído. Por exemplo, se uma editora de uma tabela de editoras for excluída, os livros da tabela de livros relacionados com esta editora também serão excluídos automaticamente. ON DELETE SET NULL &#8211; Quando ocorre uma operação de exclusão em uma tabela referenciada, as chaves estrangeiras relacionadas são definidas com valor NULL. Note que os campos de chave estrangeira precisam estar definidos como NULL (aceitar nulos) para que essa operação tenha sucesso. ON DELETE SET DEFAULT &#8211; Ao ocorrer uma operação de exclusão em uma tabela referenciada, as chaves estrangeiras relacionadas em outras tabelas são definidas com um valor padrão (default). ON UPDATE [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/bancos-de-dados/restricoes-de-chave-estrangeira-on-delete-cascade-e-outras/">Restrições de Chave Estrangeira &#8211; ON DELETE CASCADE e outras em Bancos de Dados</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Restrições de Chave Estrangeira em Bancos de Dados</h2>
<p>As restrições de chave estrangeira em tabelas de <a href="http://www.bosontreinamentos.com.br/bancos-de-dados/o-que-e-um-banco-de-dados-relacional/" target="_blank" rel="noopener">bancos de dados relacionais</a> são um tipo especial de restrições (constraints) definidas e empregadas para excluir ou atualizar linhas em uma tabela referenciada, quando uma operação de um desses tipos ocorre em uma tabela relacionada.</p>
<p>As ações de exclusão e atualização são as seguintes:</p>
<ul>
<li><strong>ON DELETE CASCADE</strong> &#8211; Uma operação de exclusão em uma tabela referenciada se propaga (cascade = em cascata) para as chaves estrangeiras correspondentes. Ou seja, ao excluir um registro em uma tabela, um registro relacionado em outra tabela é automaticamente excluído. Por exemplo, se uma editora de uma tabela de editoras for excluída, os livros da tabela de livros relacionados com esta editora também serão excluídos automaticamente.</li>
<li><strong>ON DELETE SET NULL</strong> &#8211; Quando ocorre uma operação de exclusão em uma tabela referenciada, as chaves estrangeiras relacionadas são definidas com valor NULL. Note que os campos de chave estrangeira precisam estar definidos como NULL (aceitar nulos) para que essa operação tenha sucesso.</li>
<li><strong>ON DELETE SET DEFAULT</strong> &#8211; Ao ocorrer uma operação de exclusão em uma tabela referenciada, as chaves estrangeiras relacionadas em outras tabelas são definidas com um valor padrão (default).</li>
<li><strong>ON UPDATE CASCADE</strong> &#8211; Uma operação de atualização em uma tabela referenciada se propaga para as chaves estrangeiras correspondentes. Ou seja, ao modificar um registro em uma tabela, um registro relacionado em uma coluna de chave estrangeira em outra tabela tem seu valor automaticamente atualizado.</li>
<li><strong>ON UPDATE SET NULL</strong> &#8211; Quando uma operação de atualização em uma tabela referenciada é realizada, as chaves estrangeiras relacionadas são definidas com valor NULL. Novamente, os campos de chave estrangeira precisam estar definidos como NULL (aceitar nulos) para que a operação tenha sucesso.</li>
<li><strong>ON UPDATE SET DEFAULT</strong> &#8211; Ao ocorrer uma operação de atualização em uma tabela referenciada, as chaves estrangeiras relacionadas em outras tabelas serão definidas com um valor padrão.</li>
</ul>
<p>Portanto, usamos a opção <strong>CASCADE</strong> quando há uma restrição de existência obrigatória para um campo de chave estrangeira de uma tabela. Já as opções <strong>SET NULL</strong> e <strong>DEFAULT</strong> se aplicam quando a existência de um valor é opcional no campo de chave estrangeira.</p>
<h3>DELETE RESTRICTED e UPDATE RESTRICTED</h3>
<p>Alguns sistemas de bancos de dados, como o IBM DB2, possuem restrições de chave estrangeira adicionais, como explicado a seguir:</p>
<ul>
<li><strong>DELETE RESTRICTED</strong> &#8211; Linhas na tabela referenciada (com a chave primária) somente podem ser excluídas se não houver valores de chave estrangeira correspondentes na tabela relacionada. Ou seja, só podemos excluir uma linha na tabela se ainda não existir nenhum registro relacionado com um valor de chave primária da tabela. Por exemplo, somente é possível excluir um autor da tabela de autores se ainda não houver nenhum livro daquele autor cadastrado na tabela de livros (onde o ID do autor é a chave estrangeira do relacionamento).</li>
<li><strong>UPDATE RESTRICTED</strong> &#8211; Idem ao anterior, porém para a operação de atualização de registros na tabela.</li>
</ul>
<p>Veja exemplos da aplicação dessas <a href="http://www.bosontreinamentos.com.br/mysql/opcoes-de-chave-estrangeira-mysql/">restrições em um banco de dados MySQL aqui</a>.</p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/bancos-de-dados/restricoes-de-chave-estrangeira-on-delete-cascade-e-outras/">Restrições de Chave Estrangeira &#8211; ON DELETE CASCADE e outras em Bancos de Dados</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/bancos-de-dados/restricoes-de-chave-estrangeira-on-delete-cascade-e-outras/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>O que são Índices em Bancos de Dados &#8211; Indexação em Tabelas</title>
		<link>https://www.bosontreinamentos.com.br/bancos-de-dados/o-que-sao-indices-em-bancos-de-dados-indexacao-em-tabelas/</link>
					<comments>https://www.bosontreinamentos.com.br/bancos-de-dados/o-que-sao-indices-em-bancos-de-dados-indexacao-em-tabelas/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Tue, 15 Oct 2019 17:50:25 +0000</pubDate>
				<category><![CDATA[Bancos de Dados]]></category>
		<category><![CDATA[Modelagem de Dados]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=15641</guid>

					<description><![CDATA[<p>O que são Índices em Bancos de Dados Grande parte das consultas a um banco de dados se referem a somente uma pequena parcela dos registros armazenados nas tabelas. Por exemplo, uma consulta do tipo “retorne todos os livros do autor C.J. Date” se refere a apenas uma ínfima parte do total de registros de livros em uma biblioteca ou livraria. É altamente ineficiente para o SGBD ter de ler cada registro na tabela para verificar se o autor é o Date; de forma ideal, o sistema deveria conseguir localizar esses registros diretamente. Para isso, criamos estruturas especiais nas tabelas, chamadas de Índices. Os índices são uma das ferramentas de otimização mais conhecidas e utilizadas pelos desenvolvedores de bancos de dados. O emprego de indexação em tabelas pode aumentar significativamente a performance em consultas ao banco de dados, porém pode diminuir a velocidade de transações como inserts e updates. Portanto, saber quais tarefas são mais importantes no sistema em questão &#8211; se de leitura ou de escrita &#8211; nos dá um ponto de partida para saber como lidar com a indexação. No geral, é interessante termos mais de um índice em uma tabela. O atributo (ou conjunto de atributos) usado [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/bancos-de-dados/o-que-sao-indices-em-bancos-de-dados-indexacao-em-tabelas/">O que são Índices em Bancos de Dados &#8211; Indexação em Tabelas</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>O que são Índices em Bancos de Dados</h2>
<p>Grande parte das consultas a um banco de dados se referem a somente uma pequena parcela dos registros armazenados nas tabelas. Por exemplo, uma consulta do tipo “retorne todos os livros do autor C.J. Date” se refere a apenas uma ínfima parte do total de registros de livros em uma biblioteca ou livraria. É altamente ineficiente para o SGBD ter de ler cada registro na tabela para verificar se o autor é o Date; de forma ideal, o sistema deveria conseguir localizar esses registros diretamente. Para isso, criamos estruturas especiais nas tabelas, chamadas de <strong>Índices</strong>.</p>
<p>Os índices são uma das ferramentas de otimização mais conhecidas e utilizadas pelos desenvolvedores de bancos de dados.</p>
<p>O emprego de indexação em tabelas pode aumentar significativamente a performance em consultas ao banco de dados, porém pode diminuir a velocidade de transações como inserts e updates. Portanto, saber quais tarefas são mais importantes no sistema em questão &#8211; se de leitura ou de escrita &#8211; nos dá um ponto de partida para saber como lidar com a indexação.</p>
<p>No geral, é interessante termos mais de um índice em uma tabela. O atributo (ou conjunto de atributos) usado para procurar registros em uma tabela é chamado de chave de procura.</p>
<p>Por padrão, os SGBDs criam índices automaticamente para campos de:</p>
<ul>
<li>Chave Primária</li>
<li>Chave Estrangeira</li>
<li>Constraint UNIQUE</li>
</ul>
<p>Além disso, podemos criar índices para outras colunas usadas com frequência em buscas ou junções.</p>
<p>Classificamos os índices em duas grandes categorias:</p>
<ul>
<li>Índices Clusterizados (primários)</li>
<li>Índices Não-Clusterizados (secundários).</li>
</ul>
<h3>Índice Clusterizado</h3>
<p>Os Índices clusterizados alteram a forma como os dados são armazenados em um banco de dados, pois ele classifica as linhas de acordo com a coluna que possui o índice.&nbsp;Uma tabela só pode ter um índice clusterizado. Geralmente ele está na coluna que é chave primária da tabela ou, em sua ausência, em uma coluna UNIQUE.<br />
Caso uma tabela não possua um índice clusterizado, suas linhas são armazenadas em uma estrutura não-ordenada chamada de heap.</p>
<p>Normalmente, a chave de busca de um índice primário é a chave primária da tabela (mas nem sempre).</p>
<h3>Índice Não-Clusterizado</h3>
<p>Em um índice não-clusterizado a forma como os dados são armazenados em disco não é alterada, e um objeto separado é criado na tabela, apontando para as linhas da tabela original após a busca. Este tipo de índice se baseia em valores-chave.</p>
<p>Uma tabela pode ter vários índices não-clusterizados.</p>
<p>Os índices secundários melhoram o desempenho das consultas que usam chaves diferentes da chave de procura do índice primário. O projetista do banco de dados deve decidir quais índices não-clusterizados devem ser criados com base na estimativa da frequência de consultas e atualizações dos registros.</p>
<h3>Tipos de índices</h3>
<p>Existem vários tipos de índices que podem ser criados em tabelas, de acordo com técnicas variadas. Os mais comuns são:</p>
<ul>
<li>Índice em Árvore B (B-Tree): Um índice de árvore balanceada possui acesso eficiente para consultas de intervalos. A atualização de uma árvore b é relativamente eficiente, porém seu desempenho pode se degradar conforme o arquivo aumenta de tamanho. É a mais utilizada das estruturas de índices, geralmente sendo o padrão ao criar um novo índice. Uma árvore balanceada significa que todos os caminhos a partir da raiz da árvore até uma de suas folhas são do mesmo comprimento. Colunas com muitos poucos valores (em termos de variedade) &#8211; baixa cardinalidade, como valores do tipo sim/não, masculino/feminino/neutro, conjuntos de cores e outros, não se beneficiam de índices do tipo b-tree.</li>
<li>Índice de Bitmap: Eficientes para consultas que envolvam conjuntos de valores ou baixa cardinalidade, porém se torna menos eficiente se o conjunto se tornar demasiado grande. A atualização de um índice de bitmap é relativamente ineficiente. Esse tipo de índice emprega arrays de bits para verificar se um valor em particular está ou não presente em uma linha, e responde às consultas efetuando operações lógicas bitwise nesses arrays.</li>
<li>Índice de Hashing: Organiza as chaves de procura, com seus ponteiros associados, em uma estrutura de arquivo de hash. Eficientes para acesso a linhas especificas (não intervalos). Pode ser usado para implementar junções (joins) de modo eficiente.</li>
<li>Índice de Várias Tabelas (Multi-Table): ou índices de junção. Contém ponteiros para linhas de diversas tabelas. Pode melhorar o desempenho de junções e da verificação de restrições de integridade de banco de dados.</li>
<li>Índice Booleano: Muito úteis quando uma expressão booleana relevante é componente de condições de restrição.</li>
<li>Índice Funcional: Executa a indexação das linhas de uma tabela com base no resultado da chamada de alguma função especificada sobre os valores das linhas, em vez de indexar com base nos valores em si.</li>
</ul>
<p>A figura a seguir ilustra a estrutura de um índice não-clusterizado do tipo árvore balanceada (b-tree):</p>
<div id="attachment_15646" style="width: 810px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-15646" class="wp-image-15646" title="Árvore Balanceada - Índice b-tree em bancos de dados" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2019/10/arvore-balanceada-b-tree-indice-sql-1024x590.jpg" alt="Árvore Balanceada - Índice b-tree em bancos de dados" width="800" height="461" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2019/10/arvore-balanceada-b-tree-indice-sql.jpg 1024w, https://www.bosontreinamentos.com.br/wp-content/uploads/2019/10/arvore-balanceada-b-tree-indice-sql-420x242.jpg 420w, https://www.bosontreinamentos.com.br/wp-content/uploads/2019/10/arvore-balanceada-b-tree-indice-sql-768x443.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /><p id="caption-attachment-15646" class="wp-caption-text">Árvore Balanceada &#8211; Índice B-Tree</p></div>
<p>No exemplo da figura, o algoritmo de árvore balanceada aumenta o desempenho de consultas que tenham seu resultado filtrado pelo nome da pessoa, que é a coluna com valor-chave indexado. Por exemplo, se for realizada uma consulta que precise retornar dados da pessoa de nome &#8220;Barbara&#8221;, usando essa coluna como critério de filtragem na cláusula WHERE, o processo será realizado acessando o nó raiz, determinando o próximo nó a acessar &#8211;&nbsp; que é o nó intermediário A-G, onde se encontra a inicial &#8220;B&#8221; do nome buscado &#8211; e então acessando diretamente o registro desejado no nó-folha cuja chave possui dados iniciados com a letra &#8220;B&#8221;.</p>
<p>Recomenda-se não indexar tabelas pequenas (que possuam poucos registros); um escaneamento completo da tabela (full table scan) acaba por ser a alternativa mais rápida para obter o resultado de uma consulta neste caso.</p>
<p>E como criamos índices em uma tabela? Confira exemplos nesta lição sobre <a href="http://www.bosontreinamentos.com.br/mysql/indices-em-mysql/">índices em MySQL</a>.</p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/bancos-de-dados/o-que-sao-indices-em-bancos-de-dados-indexacao-em-tabelas/">O que são Índices em Bancos de Dados &#8211; Indexação em Tabelas</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/bancos-de-dados/o-que-sao-indices-em-bancos-de-dados-indexacao-em-tabelas/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>O que é um Banco de Dados Relacional</title>
		<link>https://www.bosontreinamentos.com.br/bancos-de-dados/o-que-e-um-banco-de-dados-relacional/</link>
					<comments>https://www.bosontreinamentos.com.br/bancos-de-dados/o-que-e-um-banco-de-dados-relacional/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Fri, 16 Aug 2019 13:14:01 +0000</pubDate>
				<category><![CDATA[Bancos de Dados]]></category>
		<category><![CDATA[Modelagem de Dados]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=13602</guid>

					<description><![CDATA[<p>Banco de Dados Relacional Um Banco de Dados (BD) é uma coleção organizada de dados. Esses dados são organizados de modo a modelar aspectos do mundo real, para que seja possível efetuar processamento que gere informações relevantes para os usuários a partir desses dados. Existem vários modelos de bancos de dados, desenvolvidos ao longo do tempo, e o mais utilizado atualmente é o Modelo Relacional, que apresentamos nesta lição. Os princípios do modelo relacional foram esboçados pelo matemático britânico E. F. Codd (na IBM) em um artigo publicado em junho de 1970, intitulado &#8220;A Relational Model of Data for Large Shared Data Banks&#8220;, no qual o Dr. Codd propôs o modelo relacional para sistemas de bancos de dados. Antes disso eram usados outros modelos como o modelo de dados hierárquico e o modelo em rede. No modelo relacional os dados são organizados em coleções de tabelas bidimensionais. Essas tabelas são também chamadas de &#8220;Relações&#8221;. Desta forma, uma Relação é uma forma de se organizar os dados em linhas e colunas. O modelo relacional é baseado em lógica e na teoria de conjuntos da matemática. Composição do Modelo Relacional O modelo relacional é composto, basicamente, pelos seguintes elementos: Coleções de objetos [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/bancos-de-dados/o-que-e-um-banco-de-dados-relacional/">O que é um Banco de Dados Relacional</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Banco de Dados Relacional</h2>
<p><span style="font-weight: 400;">Um <strong>Banco de Dados</strong> (BD) é uma coleção organizada de <a href="http://www.bosontreinamentos.com.br/modelagem-de-dados/conceitos-de-dados-informacoes-e-bancos-de-da">dados</a>. Esses dados são organizados de modo a modelar aspectos do mundo real, para que seja possível efetuar processamento que gere informações relevantes para os usuários a partir desses dados.</span></p>
<p>Existem vários modelos de bancos de dados, desenvolvidos ao longo do tempo, e o mais utilizado atualmente é o <strong>Modelo Relacional</strong>, que apresentamos nesta lição.</p>
<p>Os princípios do modelo relacional foram esboçados pelo matemático britânico E. F. Codd (na IBM) em um artigo publicado em junho de 1970, intitulado &#8220;<strong><em>A Relational Model of Data for Large Shared Data Banks</em></strong>&#8220;, no qual o Dr. Codd propôs o modelo relacional para sistemas de bancos de dados.</p>
<p>Antes disso eram usados outros modelos como o modelo de dados hierárquico e o modelo em rede.</p>
<p>No modelo relacional os dados são organizados em coleções de tabelas bidimensionais. Essas tabelas são também chamadas de &#8220;Relações&#8221;.<br />
Desta forma, uma Relação é uma forma de se organizar os dados em linhas e colunas.<br />
O modelo relacional é baseado em lógica e na teoria de conjuntos da matemática.</p>
<h3>Composição do Modelo Relacional</h3>
<p>O modelo relacional é composto, basicamente, pelos seguintes elementos:</p>
<ul>
<li>Coleções de objetos ou relações que armazenam os dados</li>
<li>Um conjunto de operadores que agem nas relações, produzindo outras relações</li>
<li>Integridade de dados, para precisão e consistência.</li>
</ul>
<h3>Banco de Dados Relacional</h3>
<p>Um Banco de dados relacional é uma <strong>coleção de relações</strong>, que são tabelas bidimensionais, onde os dados são armazenados.<br />
Como exemplo, podemos querer armazenar dados sobre os clientes de uma loja. Para isso, criamos tabelas para guardar diferentes conjuntos de dados relacionados a esses clientes, como dados pessoais, dados de compras, crédito, e outras. Cada uma dessas tabelas é uma relação do banco.</p>
<p>Obs.: Não confunda o termo <em><strong>Relação</strong></em> com <em><strong>Relacionamento</strong></em>, que também faz parte do modelo relacional, porém são conceitos distintos e que serão explicados em detalhes neste e nos próximos artigos.</p>
<h3>Componentes de um Banco de Dados Relacional</h3>
<p>Diversos tipos de objetos fazem parte de um banco de dados relacional. Listamos os mais importantes a seguir:</p>
<ul>
<li><strong>Tabela</strong>: estrutura básica de armazenamento no SGBDR. Armazena todos os dados necessários sobre algo do mundo real, como clientes, pedidos ou produtos. também chamada de Relação. Um banco de dados relacional pode conter uma ou mais Tabelas</li>
<li><strong>Tupla</strong>: ou <strong>Linha</strong> / <strong>Registro</strong>, representa todos os dados requeridos por uma determinada ocorrência de entidade em particular. Por exemplo, os dados de um cliente específico. Cada linha em uma tabela deve ser identificada por uma chave primária, de modo a não haver duplicação de registros.</li>
<li><strong>Coluna</strong> ou <strong>Campo</strong>: Unidade que armazena um tipo específico de dado (valor) &#8211; ou não armazena nada, com valor nulo. Esta é uma coluna não-chave, significando que seu valor pode se repetir em outras linhas da tabela.</li>
<li><strong>Relacionamento</strong>: Associação entre as entidades (tabelas), conectadas por chaves primárias e chaves estrangeiras.</li>
<li><strong>Chave Primária</strong> (<em>Primary Key</em>  / PK) :coluna (atributo) que identifica um registro de forma exclusiva na tabela. Por exemplo, o CPF de um cliente, contendo um valor que não se repete na relação.</li>
<li><strong>Chave Estrangeira</strong> (<em>Foreign Key</em> / FK): coluna que define como as tabelas se relacionam umas com as outras. Uma FK se refere a uma PK ou a uma chave única em outra tabela (ou na mesma tabela!). Por exemplo, na tabela de pedidos podemos ter uma chave estrangeira efetuando o relacionamento com a chave primária na tabela de clientes.</li>
<li><strong>Restrições</strong> (<em>Constraints</em>): Propriedades específicas de determinadas colunas de uma relação, como por exemplo se a coluna pode aceitar valores nulos ou não.</li>
<li>Outros: Índices, Stored Procedures, Triggers, etc.</li>
</ul>
<div id="attachment_15216" style="width: 698px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-15216" class="size-full wp-image-15216" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2019/08/banco-de-dados-relacional.png" alt="Elementos de um Banco de Dados Relacional" width="688" height="244" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2019/08/banco-de-dados-relacional.png 688w, https://www.bosontreinamentos.com.br/wp-content/uploads/2019/08/banco-de-dados-relacional-420x149.png 420w" sizes="auto, (max-width: 688px) 100vw, 688px" /><p id="caption-attachment-15216" class="wp-caption-text">Elementos de um Banco de Dados Relacional</p></div>
<p>Nas próximas lições vamos explorar os conceitos de banco de dados relacional apresentados de forma aprofundada, além de introduzir o processo de <a href="https://www.youtube.com/playlist?list=PLucm8g_ezqNoNHU8tjVeHmRGBFnjDIlxD" target="_blank" rel="noopener">Modelagem de Dados</a>.</p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/bancos-de-dados/o-que-e-um-banco-de-dados-relacional/">O que é um Banco de Dados Relacional</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/bancos-de-dados/o-que-e-um-banco-de-dados-relacional/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
	</channel>
</rss>
