<?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/category/modelagem-de-dados/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bosontreinamentos.com.br/category/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:36:41 +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>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>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>Modelagem de Dados &#8211; Testes no Banco de Dados do Projeto Prático</title>
		<link>https://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-testes-no-banco-de-dados-do-projeto-pratico/</link>
					<comments>https://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-testes-no-banco-de-dados-do-projeto-pratico/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Wed, 03 Oct 2018 20:41:18 +0000</pubDate>
				<category><![CDATA[Modelagem de Dados]]></category>
		<category><![CDATA[Bancos de Dados]]></category>
		<category><![CDATA[SQL]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=13337</guid>

					<description><![CDATA[<p>Testes no Banco de Dados do Projeto Prático de Modelagem de Dados Artigo complementar do Curso Completo de Modelagem de Dados da Bóson Treinamentos no YouTube. A seguir disponibilizamos todos os códigos SQL das consultas e correções de tabelas que foram empregados nos testes da implementação do banco de dados utilizado no projeto prático do Curso de Modelagem de Dados da Bóson Treinamentos, disponível em nosso canal do YouTube. A primeira parte traz códigos para correções e a segunda, os testes em si (consultas SQL). Correções e inserções de dados -- TESTES FINAIS E CORREÇÕES -- Alterar campo NOTA da tabela Disc_Hist para tipo FLOAT ALTER TABLE Disc_Hist MODIFY COLUMN NOTA FLOAT(4,2); -- Inserir alguns dados de disciplinas e notas nos históricos, que estavam faltando INSERT INTO Disc_Hist (Cod_Historico, Cod_Disciplina, Nota, Frequência) VALUES (1, 2, 7, 6), -- Marcos - Psicologia Cognitiva (cod 2) (2, 3, 8.5, 2), -- Beatriz - Programação em C (cod 3) (3, 1, 6.8, 8); -- Gabriel - Raciocínio Lógico (cod 1) -- Inserir dados de tipos de telefones e os telefones dos alunos INSERT INTO Tipo_Telefone (Tipo_Telefone) VALUES ('Res'), ('Com'), ('Cel'), ('Rec'); INSERT INTO Telefones_Aluno (RA, Cod_Tipo_Telefone, Num_Telefone) VALUES (1, 1, 28467853), (2, 1, [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-testes-no-banco-de-dados-do-projeto-pratico/">Modelagem de Dados &#8211; Testes no Banco de Dados do Projeto Prático</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>Testes no Banco de Dados do Projeto Prático de 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><img loading="lazy" decoding="async" class="aligncenter wp-image-13339" title="Curso de Modelagem de Dados - Testes no Banco de Dados" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2018/10/modelagem-dados-testes-banco-dados.jpg" alt="Curso de Modelagem de Dados - Testes no Banco de Dados" width="300" height="211" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2018/10/modelagem-dados-testes-banco-dados.jpg 560w, https://www.bosontreinamentos.com.br/wp-content/uploads/2018/10/modelagem-dados-testes-banco-dados-420x296.jpg 420w" sizes="auto, (max-width: 300px) 100vw, 300px" /></p>
<p>A seguir disponibilizamos todos os códigos SQL das consultas e correções de tabelas que foram empregados nos testes da implementação do banco de dados utilizado no projeto prático do <a href="https://www.youtube.com/watch?v=c7r8t4qYWS0" target="_blank" rel="noopener">Curso de Modelagem de Dados da Bóson Treinamentos</a>, disponível em nosso canal do YouTube.</p>
<p>A primeira parte traz códigos para correções e a segunda, os testes em si (consultas SQL).</p>
<h3>Correções e inserções de dados</h3>
<pre><span style="color: #339966;"><strong>-- TESTES FINAIS E CORREÇÕES</strong></span>
<span style="color: #339966;"><strong>-- Alterar campo NOTA da tabela Disc_Hist para tipo FLOAT</strong></span>
<span style="color: #ff0000;"><strong>ALTER TABLE Disc_Hist</strong></span>
<span style="color: #ff0000;"><strong>MODIFY COLUMN NOTA FLOAT(4,2);</strong></span>
<span style="color: #339966;"><strong>-- Inserir alguns dados de disciplinas e notas nos históricos, que estavam faltando</strong></span>
<span style="color: #ff0000;"><strong>INSERT INTO Disc_Hist (Cod_Historico, Cod_Disciplina, Nota, Frequência)</strong></span>
<span style="color: #ff0000;"><strong>VALUES</strong></span>
<span style="color: #ff0000;"><strong>(1, 2, 7, 6),<span style="color: #339966;"> -- Marcos - Psicologia Cognitiva (cod 2)</span></strong></span>
<span style="color: #ff0000;"><strong>(2, 3, 8.5, 2),<span style="color: #339966;"> -- Beatriz - Programação em C (cod 3)</span></strong></span>
<span style="color: #ff0000;"><strong>(3, 1, 6.8, 8);<span style="color: #339966;"> -- Gabriel - Raciocínio Lógico (cod 1)</span></strong></span></pre>
<pre><span style="color: #339966;"><strong>-- Inserir dados de tipos de telefones e os telefones dos alunos</strong></span>
<span style="color: #ff0000;"><strong>INSERT INTO Tipo_Telefone (Tipo_Telefone)</strong></span>
<span style="color: #ff0000;"><strong>VALUES</strong></span>
<span style="color: #ff0000;"><strong>('Res'),</strong></span>
<span style="color: #ff0000;"><strong>('Com'),</strong></span>
<span style="color: #ff0000;"><strong>('Cel'),</strong></span>
<span style="color: #ff0000;"><strong>('Rec');</strong></span>
<span style="color: #ff0000;"><strong>INSERT INTO Telefones_Aluno (RA, Cod_Tipo_Telefone, Num_Telefone)</strong></span>
<span style="color: #ff0000;"><strong>VALUES</strong></span>
<span style="color: #ff0000;"><strong>(1, 1, 28467853),</strong></span>
<span style="color: #ff0000;"><strong>(2, 1, 24653298),</strong></span>
<span style="color: #ff0000;"><strong>(2, 3, 996324521),</strong></span>
<span style="color: #ff0000;"><strong>(3, 1, 36549875),</strong></span>
<span style="color: #ff0000;"><strong>(3, 3, 994532165),</strong></span>
<span style="color: #ff0000;"><strong>(4, 1, 21956345),</strong></span>
<span style="color: #ff0000;"><strong>(4, 3, 986321452),</strong></span>
<span style="color: #ff0000;"><strong>(5, 1, 24569832),</strong></span>
<span style="color: #ff0000;"><strong>(5, 2, 23854696),</strong></span>
<span style="color: #ff0000;"><strong>(6, 1, 27698753);</strong></span></pre>
<h3>Consultas para testes</h3>
<pre><span style="color: #339966;"><strong>-- 1. RAs, Nomes e Sobrenomes dos Alunos, Nomes dos Cursos e Períodos das Turmas, ordenados pelo primeiro nome de aluno:</strong></span>
<span style="color: #ff0000;"><strong>SELECT A.RA, A.Nome_Aluno, A.Sobrenome_Aluno, T.Periodo, C.Nome_Curso</strong></span>
<span style="color: #ff0000;"><strong>FROM Aluno A</strong></span>
<span style="color: #ff0000;"><strong>INNER JOIN Curso C</strong></span>
<span style="color: #ff0000;"><strong>ON C.Cod_Curso = A.Cod_Curso</strong></span>
<span style="color: #ff0000;"><strong>INNER JOIN Turma T</strong></span>
<span style="color: #ff0000;"><strong>ON A.Cod_Turma = T.Cod_Turma</strong></span>
<span style="color: #ff0000;"><strong>ORDER BY A.Nome_Aluno;
</strong></span>
<span style="color: #339966;"><strong>-- 2. Todas as disciplinas cursadas por um aluno, com suas respectivas notas:</strong></span>
<span style="color: #339966;"><strong>-- Aluno: RA 3 (Beatriz)</strong></span>
<span style="color: #ff0000;"><strong>SELECT A.Nome_Aluno, A.Sobrenome_Aluno, D.Nome_Disciplina, DH.Nota</strong></span>
<span style="color: #ff0000;"><strong>FROM Aluno A</strong></span>
<span style="color: #ff0000;"><strong>INNER JOIN Aluno_Disc AD</strong></span>
<span style="color: #ff0000;"><strong>ON A.RA = AD.RA</strong></span>
<span style="color: #ff0000;"><strong>INNER JOIN Disciplina D</strong></span>
<span style="color: #ff0000;"><strong>ON D.Cod_Disciplina = AD.Cod_Disciplina</strong></span>
<span style="color: #ff0000;"><strong>INNER JOIN Historico H</strong></span>
<span style="color: #ff0000;"><strong>ON A.RA = H.RA</strong></span>
<span style="color: #ff0000;"><strong>INNER JOIN Disc_Hist DH</strong></span>
<span style="color: #ff0000;"><strong>ON H.Cod_Historico = DH.Cod_Historico</strong></span>
<span style="color: #ff0000;"><strong>WHERE A.RA = 3;
</strong></span>
<span style="color: #339966;"><strong>-- 3. Nomes e sobrenomes dos professores, e disciplinas que ministram com suas cargas horárias:</strong></span>
<span style="color: #ff0000;"><strong>SELECT CONCAT(P.Nome_Professor, ' ', P.Sobrenome_Professor) AS Docente,</strong></span>
<span style="color: #ff0000;"><strong>D.Nome_Disciplina, D.Carga_Horaria</strong></span>
<span style="color: #ff0000;"><strong>FROM Professor P</strong></span>
<span style="color: #ff0000;"><strong>INNER JOIN Prof_Disciplina PD</strong></span>
<span style="color: #ff0000;"><strong>ON P.Cod_Professor = PD.Cod_Professor</strong></span>
<span style="color: #ff0000;"><strong>INNER JOIN Disciplina D</strong></span>
<span style="color: #ff0000;"><strong>ON D.Cod_Disciplina = PD.Cod_Disciplina</strong></span>
<span style="color: #ff0000;"><strong>ORDER BY D.Nome_Disciplina;
</strong></span>
<span style="color: #339966;"><strong>-- 4. Gerar "relatório" com nomes, sobrenomes, CPF dos alunos, tipos e números de telefones e&nbsp;endereços completos.</strong></span>
<span style="color: #ff0000;"><strong>SELECT CONCAT(A.Nome_Aluno, ' ', A.Sobrenome_Aluno) AS Aluno, A.CPF, T.Num_Telefone, CONCAT(TL.Tipo_Logradouro, ' ', E.Nome_Rua, ', ', E.Num_Rua) AS Logradouro, E.Complemento, E.CEP</strong></span>
<span style="color: #ff0000;"><strong>FROM Aluno A</strong></span>
<span style="color: #ff0000;"><strong>INNER JOIN Telefones_Aluno T</strong></span>
<span style="color: #ff0000;"><strong>ON A.RA = T.RA</strong></span>
<span style="color: #ff0000;"><strong>INNER JOIN Endereco_Aluno E</strong></span>
<span style="color: #ff0000;"><strong>ON A.RA = E.RA</strong></span>
<span style="color: #ff0000;"><strong>INNER JOIN Tipo_Logradouro TL</strong></span>
<span style="color: #ff0000;"><strong>ON TL.Cod_Tipo_Logradouro = E.Cod_Tipo_Logradouro;
</strong></span>
<span style="color: #339966;"><strong>-- 5. Listar as disciplinas, indicando seus departamentos, cursos e professores</strong></span>
<span style="color: #ff0000;"><strong>SELECT Di.Nome_Disciplina, C.Nome_Curso,</strong></span>
<span style="color: #ff0000;"><strong>CONCAT(P.Nome_Professor, ' ', P.Sobrenome_Professor) AS Docente, De.Nome_Departamento</strong></span>
<span style="color: #ff0000;"><strong>FROM Disciplina Di</strong></span>
<span style="color: #ff0000;"><strong>INNER JOIN Departamento De</strong></span>
<span style="color: #ff0000;"><strong>ON Di.Cod_Departamento = De.Cod_Departamento</strong></span>
<span style="color: #ff0000;"><strong>INNER JOIN Prof_Disciplina PD</strong></span>
<span style="color: #ff0000;"><strong>ON Di.Cod_Disciplina = PD.Cod_Disciplina</strong></span>
<span style="color: #ff0000;"><strong>INNER JOIN Professor P</strong></span>
<span style="color: #ff0000;"><strong>ON P.Cod_Professor = PD.Cod_Professor</strong></span>
<span style="color: #ff0000;"><strong>INNER JOIN Curso_Disciplina CD</strong></span>
<span style="color: #ff0000;"><strong>ON Di.Cod_Disciplina = CD.Cod_Disciplina</strong></span>
<span style="color: #ff0000;"><strong>INNER JOIN Curso C</strong></span>
<span style="color: #ff0000;"><strong>ON C.Cod_Curso = CD.Cod_Curso</strong></span>
<span style="color: #ff0000;"><strong>ORDER BY Di.Nome_Disciplina;</strong></span></pre>
<p>O vídeo a seguir mostra os testes realizados, com as respectivas explicações em detalhes:</p>
<p><iframe loading="lazy" src="https://www.youtube.com/embed/XLAEHJg_5YQ" width="640" height="480" frameborder="0" allowfullscreen="allowfullscreen"><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start">﻿</span></iframe></p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-testes-no-banco-de-dados-do-projeto-pratico/">Modelagem de Dados &#8211; Testes no Banco de Dados do Projeto Prático</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-testes-no-banco-de-dados-do-projeto-pratico/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Conceitos de Dados, Informações e Bancos de Dados</title>
		<link>https://www.bosontreinamentos.com.br/modelagem-de-dados/conceitos-de-dados-informacoes-e-bancos-de-dados/</link>
					<comments>https://www.bosontreinamentos.com.br/modelagem-de-dados/conceitos-de-dados-informacoes-e-bancos-de-dados/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Tue, 28 Aug 2018 11:57:37 +0000</pubDate>
				<category><![CDATA[Modelagem de Dados]]></category>
		<category><![CDATA[Bancos de Dados]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=13154</guid>

					<description><![CDATA[<p>Dados, Informações e Bancos de Dados Artigo complementar do Curso Completo de Modelagem de Dados da Bóson Treinamentos no YouTube. Nesta lição vamos conceituar alguns termos-chave importante no área de dados. Dados x Informação Dados: São fatos em uma forma primária, que podem ser armazenados em algum meio. Ex.: CPF, Nome, Data Informação: São os fatos organizados de maneira a produzir um significado -&#62; Dados colocados em contexto. Ex.: Lista de clientes com seus números de CPF, ordenados. Metadados Definimos Metadados como sendo “Dados sobre os dados”. Permitem efetuar a representação e identificação dos dados, garantindo sua consistência e persistência. Os Metadados são mantidos no Dicionário de Dados (ou em um Catálogo de Dados). Bancos de Dados 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. Um BD é composto por diversos objetos, tais como: tabelas, esquemas, visões, consultas, relatórios, procedimentos, triggers, entre outros, que são gerenciados por meio do uso de uma aplicação especial denominada Sistema de Gerenciamento de Bancos de Dados (SGBD). Aplicações dos Bancos de Dados [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/modelagem-de-dados/conceitos-de-dados-informacoes-e-bancos-de-dados/">Conceitos de Dados, Informações e 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>Dados, Informações e 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>Nesta lição vamos conceituar alguns termos-chave importante no área de dados.</p>
<p><strong>Dados x Informação</strong></p>
<p><span style="font-weight: 400;">Dados: São fatos em uma forma primária, que podem ser armazenados em algum meio.</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Ex.: CPF, Nome, Data</span></li>
</ul>
<p><span style="font-weight: 400;">Informação: São os fatos organizados de maneira a produzir um significado -&gt; Dados colocados em contexto.</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Ex.: Lista de clientes com seus números de CPF, ordenados.</span></li>
</ul>
<h3>Metadados</h3>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Definimos Metadados como sendo “Dados sobre os dados”.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Permitem efetuar a representação e identificação dos dados, garantindo sua consistência e persistência.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Os Metadados são mantidos no Dicionário de Dados (ou em um Catálogo de Dados).</span></li>
</ul>
<h3>Bancos de Dados</h3>
<p><span style="font-weight: 400;">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.</span></p>
<p><span style="font-weight: 400;">Um BD é composto por diversos objetos, tais como: tabelas, esquemas, visões, consultas, relatórios, procedimentos, triggers, entre outros, que são gerenciados por meio do uso de uma aplicação especial denominada Sistema de Gerenciamento de Bancos de Dados (SGBD).</span></p>
<h3>Aplicações dos Bancos de Dados</h3>
<p><span style="font-weight: 400;">Os bancos de dados encontram aplicações em inúmeras áreas, tais como:</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Sistemas bancários</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Reservas em hotéis</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Controle de estoque em supermercados</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Catálogo de livros em bibliotecas</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">E-commerce</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Receita Federal</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">YouTube</span></li>
</ul>
<h3>SGBD</h3>
<p><em><strong>Sistema de Gerenciamento de Bancos de Dados</strong></em></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Um SGBD é uma coleção de softwares que permite aos usuários criarem e manterem um ou mais bancos de dados.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">São usados nas tarefas de definição, construção, manipulação e compartilhamento dos bancos de dados entre aplicações e usuários.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Permitem proteger o banco de dados e mantê-lo ao longo do tempo.</span></li>
</ul>
<h4>Exemplos de SGBDs</h4>
<p>A seguir temos alguns exemplos de SGBDs populares no mercado, listados sem nenhuma ordem específica.</p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Oracle Database</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Microsoft SQL Server</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">MySQL</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">IBM DB2</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">SAP Sybase</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">MongoDB</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Teradata</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">PostgreSQL</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">SQLite</span></li>
</ul>
<p><strong>Exemplo de SGBDR &#8211; SQL Server:</strong></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-13155" title="SGBDR SQL Server - Bancos de dados" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2018/08/sgbdr-sql-server-fabio-dos-reis.png" alt="SGBDR SQL Server - Bancos de dados" width="591" height="398" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2018/08/sgbdr-sql-server-fabio-dos-reis.png 653w, https://www.bosontreinamentos.com.br/wp-content/uploads/2018/08/sgbdr-sql-server-fabio-dos-reis-420x283.png 420w" sizes="auto, (max-width: 591px) 100vw, 591px" /></p>
<h3>Sistema de Banco de Dados</h3>
<p><span style="font-weight: 400;">A figura a seguir ilustra a relação entre usuários, databases, SGBDs e as aplicações que acessam os dados:</span></p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-13156" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2018/08/sistema-banco-de-dados-boson.png" alt="Sistema de bancos de dados" width="596" height="148" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2018/08/sistema-banco-de-dados-boson.png 596w, https://www.bosontreinamentos.com.br/wp-content/uploads/2018/08/sistema-banco-de-dados-boson-420x104.png 420w" sizes="auto, (max-width: 596px) 100vw, 596px" /></p>
<h3>Características e Funcionalidades de Bancos de Dados</h3>
<p>Um banco de dados possui diversas características importantes, sendo que algumas são listadas a seguir.</p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Controle de Redundância</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Múltiplas Visões dos Dados</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Controle de Concorrência</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Backup e Restauração</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Autenticação e Autorização de acesso</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Restrições de Integridade</span></li>
</ul>
<p>Estudaremos essas e outras características de um BD ao longo de nosso curso.</p>
<p>Anterior: <a href="http://www.bosontreinamentos.com.br/bancos-de-dados/o-que-sao-bancos-de-dados/">O que é um Banco de Dados</a></p>
<p style="text-align: right;">Próximo: Modelos de Bancos de Dados</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/modelagem-de-dados/conceitos-de-dados-informacoes-e-bancos-de-dados/">Conceitos de Dados, Informações e 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/conceitos-de-dados-informacoes-e-bancos-de-dados/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>Modelagem de Dados &#8211; Implementação do Banco de Dados do Projeto Prático</title>
		<link>https://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-implementacao-do-banco-de-dados-do-projeto-pratico/</link>
					<comments>https://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-implementacao-do-banco-de-dados-do-projeto-pratico/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Thu, 23 Aug 2018 12:51:33 +0000</pubDate>
				<category><![CDATA[Modelagem de Dados]]></category>
		<category><![CDATA[Bancos de Dados]]></category>
		<category><![CDATA[SQL]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=13164</guid>

					<description><![CDATA[<p>Implementação do Banco de Dados do Projeto Prático Artigo complementar do Curso Completo de Modelagem de Dados da Bóson Treinamentos no YouTube. Abaixo temos os códigos que foram empregados na implementação do banco de dados utilizado no projeto prático do Curso de Modelagem de Dados da Bóson Treinamentos, disponível no canal do YouTube. Códigos para criação do banco de dados e das suas tabelas: -- Criar Banco CREATE DATABASE db_Faculdade; USE db_Faculdade; -- Criar Tabelas CREATE TABLE Departamento ( Cod_Departamento INT PRIMARY KEY AUTO_INCREMENT, Nome_departamento VARCHAR(20) NOT NULL ); CREATE TABLE Professor ( Cod_Professor INT PRIMARY KEY AUTO_INCREMENT, Nome_Professor VARCHAR(20) NOT NULL, Sobrenome_Professor VARCHAR(50) NOT NULL, Status_Professor TINYINT, Cod_Departamento INT, CONSTRAINT fk_Codigo_departamento FOREIGN KEY(Cod_Departamento) REFERENCES Departamento (Cod_Departamento) ); CREATE TABLE Curso ( Cod_Curso INT PRIMARY KEY AUTO_INCREMENT, Nome_Curso VARCHAR(30), Cod_Departamento INT, CONSTRAINT fk_Cod_Departamento FOREIGN KEY (Cod_Departamento) REFERENCES Departamento (Cod_Departamento) ); CREATE TABLE Turma ( Cod_Turma INT PRIMARY KEY AUTO_INCREMENT, Cod_Curso INT, Periodo VARCHAR(8), Num_Alunos INT, Data_Inicio DATE, Data_Fim DATE, CONSTRAINT fk_Cod_Curso FOREIGN KEY (Cod_Curso) REFERENCES Curso (Cod_Curso) ); CREATE TABLE Disciplina ( Cod_Disciplina INT PRIMARY KEY AUTO_INCREMENT, Cod_Disciplina_Depende INT NULL, /* Auto-relacionamento */ Nome_Disciplina VARCHAR(30), Cod_Departamento INT NOT NULL, Carga_Horaria INT NOT NULL, Descrição VARCHAR(80), Num_Alunos INT NOT NULL, CONSTRAINT [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-implementacao-do-banco-de-dados-do-projeto-pratico/">Modelagem de Dados &#8211; Implementação do Banco de Dados do Projeto Prático</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>Implementação do Banco de Dados do Projeto Prático</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>Abaixo temos os códigos que foram empregados na implementação do banco de dados utilizado no projeto prático do <a href="https://www.youtube.com/watch?v=c7r8t4qYWS0" target="_blank" rel="noopener">Curso de Modelagem de Dados da Bóson Treinamentos</a>, disponível no canal do YouTube.</p>
<h3>Códigos para criação do banco de dados e das suas tabelas:</h3>
<pre><span style="color: #339966;"><strong>-- Criar Banco</strong></span>
<span style="color: #000080;"><strong>CREATE DATABASE db_Faculdade;</strong></span>
<span style="color: #000080;"><strong>USE db_Faculdade;
</strong></span>
<span style="color: #339966;"><strong>-- Criar Tabelas</strong></span>
<span style="color: #000080;"><strong>CREATE TABLE Departamento (</strong></span>
<span style="color: #000080;"><strong> Cod_Departamento INT PRIMARY KEY AUTO_INCREMENT,</strong></span>
<span style="color: #000080;"><strong> Nome_departamento VARCHAR(20) NOT NULL</strong></span>
<span style="color: #000080;"><strong>);
</strong></span>
<span style="color: #000080;"><strong>CREATE TABLE Professor (</strong></span>
<span style="color: #000080;"><strong> Cod_Professor INT PRIMARY KEY AUTO_INCREMENT,</strong></span>
<span style="color: #000080;"><strong> Nome_Professor VARCHAR(20) NOT NULL,</strong></span>
<span style="color: #000080;"><strong> Sobrenome_Professor VARCHAR(50) NOT NULL,</strong></span>
<span style="color: #000080;"><strong> Status_Professor TINYINT,</strong></span>
<span style="color: #000080;"><strong> Cod_Departamento INT,</strong></span>
<span style="color: #000080;"><strong> CONSTRAINT fk_Codigo_departamento FOREIGN KEY(Cod_Departamento) REFERENCES Departamento (Cod_Departamento)</strong></span>
<span style="color: #000080;"><strong>);
</strong></span>
<span style="color: #000080;"><strong>CREATE TABLE Curso (</strong></span>
<span style="color: #000080;"><strong> Cod_Curso INT PRIMARY KEY AUTO_INCREMENT,</strong></span>
<span style="color: #000080;"><strong> Nome_Curso VARCHAR(30),</strong></span>
<span style="color: #000080;"><strong> Cod_Departamento INT,</strong></span>
<span style="color: #000080;"><strong> CONSTRAINT fk_Cod_Departamento FOREIGN KEY (Cod_Departamento) REFERENCES Departamento (Cod_Departamento)</strong></span>
<span style="color: #000080;"><strong>);
</strong></span>
<span style="color: #000080;"><strong>CREATE TABLE Turma (</strong></span>
<span style="color: #000080;"><strong> Cod_Turma INT PRIMARY KEY AUTO_INCREMENT,</strong></span>
<span style="color: #000080;"><strong> Cod_Curso INT,</strong></span>
<span style="color: #000080;"><strong> Periodo VARCHAR(8),</strong></span>
<span style="color: #000080;"><strong> Num_Alunos INT,</strong></span>
<span style="color: #000080;"><strong> Data_Inicio DATE,</strong></span>
<span style="color: #000080;"><strong> Data_Fim DATE,</strong></span>
<span style="color: #000080;"><strong>CONSTRAINT fk_Cod_Curso FOREIGN KEY (Cod_Curso) REFERENCES Curso (Cod_Curso)</strong></span>
<span style="color: #000080;"><strong>);
</strong></span>
<span style="color: #000080;"><strong>CREATE TABLE Disciplina (</strong></span>
<span style="color: #000080;"><strong> Cod_Disciplina INT PRIMARY KEY AUTO_INCREMENT,</strong></span>
<span style="color: #000080;"><strong> Cod_Disciplina_Depende INT NULL, /* Auto-relacionamento */</strong></span>
<span style="color: #000080;"><strong> Nome_Disciplina VARCHAR(30),</strong></span>
<span style="color: #000080;"><strong> Cod_Departamento INT NOT NULL,</strong></span>
<span style="color: #000080;"><strong> Carga_Horaria INT NOT NULL,</strong></span>
<span style="color: #000080;"><strong> Descrição VARCHAR(80),</strong></span>
<span style="color: #000080;"><strong> Num_Alunos INT NOT NULL,</strong></span>
<span style="color: #000080;"><strong> CONSTRAINT fk_Cod_Departamento_Disciplina FOREIGN KEY (Cod_Departamento) REFERENCES Departamento (Cod_Departamento),</strong></span>
<span style="color: #000080;"><strong> CONSTRAINT fk_Cod_Disciplina FOREIGN KEY (Cod_Disciplina_Depende) REFERENCES Disciplina (Cod_Disciplina)</strong></span>
<span style="color: #000080;"><strong>);
</strong></span>
<span style="color: #000080;"><strong>CREATE TABLE Prof_Disciplina (</strong></span>
<span style="color: #000080;"><strong> Cod_Professor INT NOT NULL,</strong></span>
<span style="color: #000080;"><strong> Cod_Disciplina INT NOT NULL,</strong></span>
<span style="color: #000080;"><strong> PRIMARY KEY (Cod_Professor, Cod_Disciplina), </strong></span>
<span style="color: #000080;"><strong> CONSTRAINT fk_Cod_Professor_Prof FOREIGN KEY (Cod_Professor) REFERENCES Professor (Cod_Professor),</strong></span>
<span style="color: #000080;"><strong> CONSTRAINT fk_Cod_Disciplina_Prof FOREIGN KEY (Cod_Disciplina) REFERENCES Disciplina (Cod_Disciplina)</strong></span>
<span style="color: #000080;"><strong>);
</strong></span>
<span style="color: #000080;"><strong>CREATE TABLE Curso_Disciplina (</strong></span>
<span style="color: #000080;"><strong> Cod_Curso INT NOT NULL,</strong></span>
<span style="color: #000080;"><strong> Cod_Disciplina INT NOT NULL,</strong></span>
<span style="color: #000080;"><strong> PRIMARY KEY (Cod_Curso, Cod_Disciplina), </strong></span>
<span style="color: #000080;"><strong> CONSTRAINT fk_Cod_Curso_Disci FOREIGN KEY (Cod_Curso) REFERENCES Curso (Cod_Curso),</strong></span>
<span style="color: #000080;"><strong> CONSTRAINT fk_Cod_Disciplina_Disci FOREIGN KEY (Cod_Disciplina) REFERENCES Disciplina (Cod_Disciplina)</strong></span>
<span style="color: #000080;"><strong>);
</strong></span>
<span style="color: #000080;"><strong>CREATE TABLE Aluno (</strong></span>
<span style="color: #000080;"><strong> RA INT PRIMARY KEY AUTO_INCREMENT,</strong></span>
<span style="color: #000080;"><strong> Nome_Aluno VARCHAR(20) NOT NULL,</strong></span>
<span style="color: #000080;"><strong> Sobrenome_Aluno VARCHAR(20) NOT NULL,</strong></span>
<span style="color: #000080;"><strong> CPF VARCHAR(11) NOT NULL,</strong></span>
<span style="color: #000080;"><strong> Status_Aluno TINYINT(1) NOT NULL,</strong></span>
<span style="color: #000080;"><strong> Cod_Turma INT,</strong></span>
<span style="color: #000080;"><strong> Sexo VARCHAR(1),</strong></span>
<span style="color: #000080;"><strong> Cod_Curso INT,</strong></span>
<span style="color: #000080;"><strong> Nome_Pai VARCHAR(50) NOT NULL,</strong></span>
<span style="color: #000080;"><strong> Nome_Mae VARCHAR(50) NOT NULL,</strong></span>
<span style="color: #000080;"><strong> Email VARCHAR(50) NOT NULL,</strong></span>
<span style="color: #000080;"><strong> Whatsapp VARCHAR(20) NOT NULL,</strong></span>
<span style="color: #000080;"><strong> CONSTRAINT fk_Cod_Turma_Aluno FOREIGN KEY(Cod_Turma) REFERENCES Turma (Cod_Turma),</strong></span>
<span style="color: #000080;"><strong> CONSTRAINT fk_Cod_Curso_Aluno FOREIGN KEY(Cod_Curso) REFERENCES Curso (Cod_Curso)</strong></span>
<span style="color: #000080;"><strong>);
</strong></span>
<span style="color: #000080;"><strong>CREATE TABLE Aluno_Disc (</strong></span>
<span style="color: #000080;"><strong> RA INT NOT NULL,</strong></span>
<span style="color: #000080;"><strong> Cod_Disciplina INT NOT NULL,</strong></span>
<span style="color: #000080;"><strong> PRIMARY KEY (RA, Cod_Disciplina),</strong></span>
<span style="color: #000080;"><strong> CONSTRAINT fk_RA_Aluno FOREIGN KEY (RA) REFERENCES Aluno (RA),</strong></span>
<span style="color: #000080;"><strong> CONSTRAINT fk_Cod_Disciplina_Aluno FOREIGN KEY (Cod_Disciplina) REFERENCES Disciplina (Cod_Disciplina)</strong></span>
<span style="color: #000080;"><strong>);
</strong></span>
<span style="color: #000080;"><strong>CREATE TABLE Historico (</strong></span>
<span style="color: #000080;"><strong> Cod_Historico INT PRIMARY KEY AUTO_INCREMENT,</strong></span>
<span style="color: #000080;"><strong> RA INT NOT NULL,</strong></span>
<span style="color: #000080;"><strong> Data_Inicio DATE NOT NULL,</strong></span>
<span style="color: #000080;"><strong> Data_Final DATE,</strong></span>
<span style="color: #000080;"><strong> CONSTRAINT fk_Cod_RA FOREIGN KEY (RA) REFERENCES Aluno (RA)</strong></span>
<span style="color: #000080;"><strong>);
</strong></span>
<span style="color: #000080;"><strong>CREATE TABLE Disc_Hist (</strong></span>
<span style="color: #000080;"><strong> Cod_Historico INT NOT NULL,</strong></span>
<span style="color: #000080;"><strong> Cod_Disciplina INT NOT NULL,</strong></span>
<span style="color: #000080;"><strong> Nota INT,</strong></span>
<span style="color: #000080;"><strong> Frequência INT,</strong></span>
<span style="color: #000080;"><strong> PRIMARY KEY (Cod_Historico, Cod_Disciplina), </strong></span>
<span style="color: #000080;"><strong> CONSTRAINT fk_Cod_Historico FOREIGN KEY (Cod_Historico) REFERENCES Historico (Cod_Historico),</strong></span>
<span style="color: #000080;"><strong> CONSTRAINT fk_Cod_Disciplina_Hist FOREIGN KEY (Cod_Disciplina) REFERENCES Disciplina (Cod_Disciplina)</strong></span>
<span style="color: #000080;"><strong>);
</strong></span>
<span style="color: #000080;"><strong>CREATE TABLE Tipo_Telefone(</strong></span>
<span style="color: #000080;"><strong> Cod_Tipo_Telefone INT PRIMARY KEY AUTO_INCREMENT,</strong></span>
<span style="color: #000080;"><strong> Tipo_Telefone VARCHAR(8)</strong></span>
<span style="color: #000080;"><strong>);
</strong></span>
<span style="color: #000080;"><strong>CREATE TABLE Telefones_Aluno (</strong></span>
<span style="color: #000080;"><strong> Cod_Telefones_Aluno INT PRIMARY KEY AUTO_INCREMENT,</strong></span>
<span style="color: #000080;"><strong> RA INT NOT NULL,</strong></span>
<span style="color: #000080;"><strong> Cod_Tipo_Telefone INT NOT NULL,</strong></span>
<span style="color: #000080;"><strong> Num_Telefone VARCHAR(20) NOT NULL,</strong></span>
<span style="color: #000080;"><strong> CONSTRAINT fk_Cod_RA_Tel FOREIGN KEY (RA) REFERENCES Aluno (RA),</strong></span>
<span style="color: #000080;"><strong> CONSTRAINT fk_Cod_Tipo_Telefone FOREIGN KEY (Cod_Tipo_Telefone) REFERENCES Tipo_Telefone (Cod_Tipo_Telefone)</strong></span>
<span style="color: #000080;"><strong>);
</strong></span>
<span style="color: #000080;"><strong>CREATE TABLE Tipo_Logradouro (</strong></span>
<span style="color: #000080;"><strong> Cod_Tipo_Logradouro INT PRIMARY KEY AUTO_INCREMENT,</strong></span>
<span style="color: #000080;"><strong> Tipo_Logradouro VARCHAR(11)</strong></span>
<span style="color: #000080;"><strong>);
</strong></span>
<span style="color: #000080;"><strong>CREATE TABLE Endereco_Aluno (</strong></span>
<span style="color: #000080;"><strong> Cod_Endereco_Aluno INT PRIMARY KEY AUTO_INCREMENT,</strong></span>
<span style="color: #000080;"><strong> RA INT NOT NULL,</strong></span>
<span style="color: #000080;"><strong> Cod_Tipo_Logradouro INT NOT NULL,</strong></span>
<span style="color: #000080;"><strong> Nome_Rua VARCHAR(50) NOT NULL,</strong></span>
<span style="color: #000080;"><strong> Num_Rua INT NOT NULL,</strong></span>
<span style="color: #000080;"><strong> Complemento VARCHAR(20) NULL,</strong></span>
<span style="color: #000080;"><strong> CEP VARCHAR(8) NOT NULL,</strong></span>
<span style="color: #000080;"><strong> CONSTRAINT fk_Cod_RA_End FOREIGN KEY(RA) REFERENCES Aluno (RA),</strong></span>
<span style="color: #000080;"><strong> CONSTRAINT fk_Cod_Tipo_Lougradouro FOREIGN KEY(Cod_Tipo_Logradouro) REFERENCES Tipo_Logradouro (Cod_Tipo_Logradouro)</strong></span>
<span style="color: #000080;"><strong>);</strong></span></pre>
<h3>Inserindo dados nas tabelas</h3>
<p>Após criarmos as tabelas iremos carregá-las com alguns dados para que seja possível realizar testes no banco de dados. Insira registros usando os códigos a seguir (você pode inserir mais registros, se assim o desejar):</p>
<pre><span style="color: #339966;"><strong>-- Carga de Dados para Testes</strong></span>
<span style="color: #000080;"><strong>INSERT INTO Departamento (Nome_Departamento)
VALUES</strong></span>
<span style="color: #000080;"><strong>('Ciências Humanas'),</strong></span>
<span style="color: #000080;"><strong>('Matemática'),</strong></span>
<span style="color: #000080;"><strong>('Biológicas'),</strong></span>
<span style="color: #000080;"><strong>('Estágio');
</strong></span>
<span style="color: #000080;"><strong>INSERT INTO Professor (Nome_Professor, Sobrenome_Professor, Status_Professor, Cod_Departamento)</strong></span>
<span style="color: #000080;"><strong>VALUES</strong></span>
<span style="color: #000080;"><strong>('Fábio', 'dos Reis', 0, 2),</strong></span>
<span style="color: #000080;"><strong>('Sophie', 'Allemand', 1, 1),</strong></span>
<span style="color: #000080;"><strong>('Monica', 'Barroso', 1, 3);
</strong></span>
<span style="color: #000080;"><strong>INSERT INTO Curso (Nome_Curso, Cod_Departamento)
VALUES</strong></span>
<span style="color: #000080;"><strong>('Matemática', 2),</strong></span>
<span style="color: #000080;"><strong>('Psicologia', 1),</strong></span>
<span style="color: #000080;"><strong>('Análise de Sistemas', 2),</strong></span>
<span style="color: #000080;"><strong>('Biologia', 3),</strong></span>
<span style="color: #000080;"><strong>('História', 1),</strong></span>
<span style="color: #000080;"><strong>('Engenharia', 2);
</strong></span>
<span style="color: #000080;"><strong>INSERT INTO Turma (Cod_Curso, Periodo, Num_Alunos, Data_Inicio, Data_Fim)</strong></span>
<span style="color: #000080;"><strong>VALUES</strong></span>
<span style="color: #000080;"><strong>(2, 'Manhã', 20, '2016-05-12', '2017-10-15'),</strong></span>
<span style="color: #000080;"><strong>(1, 'Noite', 10, '2014-05-12', '2020-03-05'),</strong></span>
<span style="color: #000080;"><strong>(3, 'Tarde', 15, '2012-05-12', '2014-05-10');
</strong></span>
<span style="color: #000080;"><strong>INSERT INTO Disciplina (Nome_Disciplina, Cod_Departamento, Carga_Horaria, Descrição, Num_Alunos)</strong></span>
<span style="color: #000080;"><strong>VALUES</strong></span>
<span style="color: #000080;"><strong>('Raciocínio Lógico', 2, 1200, 'Desenvolver o raciocínio lógico', 50),</strong></span>
<span style="color: #000080;"><strong>('Psicologia Cognitiva', 1, 1400, 'Entender o funcionamento do aprendizado', 30),</strong></span>
<span style="color: #000080;"><strong>('Programação em C', 2, 1200, 'Aprender uma linguagem de programação', 20),</strong></span>
<span style="color: #000080;"><strong>('Eletrônica Digital', 2, 300, 'Funcionamento de circuitos digitais', 30);
</strong></span>
<span style="color: #000080;"><strong>INSERT INTO Aluno (Nome_Aluno, Sobrenome_Aluno, CPF, Status_Aluno, Cod_Turma, Sexo, Cod_Curso, Nome_Pai, Nome_Mae, Email, Whatsapp)</strong></span>
<span style="color: #000080;"><strong>VALUES</strong></span>
<span style="color: #000080;"><strong>('Marcos', 'Aurelio Martins', 14278914536, 1, 2, 'M', 3, 'Marcio Aurelio', 'Maria Aparecida', 'marcosaurelio@gmail.com', 946231249),</strong></span>
<span style="color: #000080;"><strong>('Gabriel', 'Fernando de Almeida', 14470954536, 1, 1, 'M', 1, 'Adão Almeida', 'Fernanda Almeida', 'gabrielalmeida@yahoo.com', 941741247),</strong></span>
<span style="color: #000080;"><strong>('Beatriz', 'Sonia Meneguel', 1520984537, 1, 3, 'F', 3, 'Samuel Meneguel', 'Gabriella Meneguel', 'batrizmene@hotmail.com', 945781412),</strong></span>
<span style="color: #000080;"><strong>('Jorge', 'Soares', 14223651562, 1, 3, 'M', 4, 'João Soares', 'Maria Richter', 'jorgesoares@gmail.com', 925637857),</strong></span>
<span style="color: #000080;"><strong>('Ana Paula', 'Ferretti', 32968914522, 1, 3, 'F', 5, 'Marcio Ferretti', 'Ana Hoffbahn', 'anapaulaferretti@hotmail.com', 974267423),</strong></span>
<span style="color: #000080;"><strong>('Mônica', 'Yamaguti', 32988914510, 1, 2, 'F', 6, 'Wilson Oliveira', 'Fernanda Yamaguti', 'monyamaguti@outlook.com', 932619560);
</strong></span>
<span style="color: #000080;"><strong>INSERT INTO Aluno_Disc (RA, Cod_Disciplina)</strong></span>
<span style="color: #000080;"><strong>VALUES</strong></span>
<span style="color: #000080;"><strong>(3, 1),</strong></span>
<span style="color: #000080;"><strong>(1, 2),</strong></span>
<span style="color: #000080;"><strong>(2, 3),</strong></span>
<span style="color: #000080;"><strong>(4, 3),</strong></span>
<span style="color: #000080;"><strong>(5, 4),</strong></span>
<span style="color: #000080;"><strong>(6, 1);
</strong></span>
<span style="color: #000080;"><strong>INSERT INTO Curso_Disciplina(Cod_Curso, Cod_Disciplina)</strong></span>
<span style="color: #000080;"><strong>VALUES</strong></span>
<span style="color: #000080;"><strong>(1, 1),</strong></span>
<span style="color: #000080;"><strong>(2, 2),</strong></span>
<span style="color: #000080;"><strong>(3, 3),</strong></span>
<span style="color: #000080;"><strong>(6, 4);
</strong></span>
<span style="color: #000080;"><strong>INSERT INTO Prof_Disciplina(Cod_Professor, Cod_Disciplina)</strong></span>
<span style="color: #000080;"><strong>VALUES</strong></span>
<span style="color: #000080;"><strong>(2, 1),</strong></span>
<span style="color: #000080;"><strong>(1, 2),</strong></span>
<span style="color: #000080;"><strong>(3, 3),</strong></span>
<span style="color: #000080;"><strong>(2, 4);
</strong></span>
<span style="color: #000080;"><strong>INSERT INTO Historico (RA, Data_Inicio, Data_Final)</strong></span>
<span style="color: #000080;"><strong>VALUES</strong></span>
<span style="color: #000080;"><strong>(2, '2016-05-12', '2017-10-15'),</strong></span>
<span style="color: #000080;"><strong>(3, '2014-05-12', '2020-03-05'),</strong></span>
<span style="color: #000080;"><strong>(1, '2010-05-12', '2012-05-10');
</strong></span>
<span style="color: #000080;"><strong>INSERT INTO Tipo_Logradouro (Tipo_Logradouro)</strong></span>
<span style="color: #000080;"><strong>VALUES</strong></span>
<span style="color: #000080;"><strong>('Rua'),</strong></span>
<span style="color: #000080;"><strong>('Avenida'),</strong></span>
<span style="color: #000080;"><strong>('Alameda'),</strong></span>
<span style="color: #000080;"><strong>('Travessa');
</strong></span>
<span style="color: #000080;"><strong>INSERT INTO Endereco_Aluno (RA, Cod_Tipo_Logradouro, Nome_Rua, Num_Rua, Complemento, CEP)</strong></span>
<span style="color: #000080;"><strong>VALUES</strong></span>
<span style="color: #000080;"><strong>(2, 1, 'das Giestas', 255, 'Casa 02', 02854000),</strong></span>
<span style="color: #000080;"><strong>(3, 3, 'Lorena', 10, 'Apto 15', 02945000),</strong></span>
<span style="color: #000080;"><strong>(1, 2, 'do Cursino', 1248, '', 0851040),</strong></span>
<span style="color: #000080;"><strong>(4, 1, 'das Heras', 495, '', 03563142),</strong></span>
<span style="color: #000080;"><strong>(5, 3, 'Santos', 1856, '', 04523963),</strong></span>
<span style="color: #000080;"><strong>(6, 4, 'Matão', 206, '', 04213650);</strong></span></pre>
<p>O vídeo a seguir mostra o processo de criação e carga dessas tabelas no banco, que batizamos de db_Faculdade:</p>
<p><iframe loading="lazy" src="https://www.youtube.com/embed/c7r8t4qYWS0" width="640" height="480" frameborder="0" allowfullscreen="allowfullscreen"><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start">﻿</span></iframe></p>
<p>Na próxima parte da lição iremos realizar uma série de testes no banco, criando diversas consultas que envolvam todas as tabelas criadas.</p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/modelagem-de-dados/modelagem-de-dados-implementacao-do-banco-de-dados-do-projeto-pratico/">Modelagem de Dados &#8211; Implementação do Banco de Dados do Projeto Prático</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-implementacao-do-banco-de-dados-do-projeto-pratico/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
	</channel>
</rss>
