<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: mylena</title>
    <description>The latest articles on DEV Community by mylena (@mmsfarias).</description>
    <link>https://dev.to/mmsfarias</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1221200%2F8c4fd0f4-d04c-4549-8100-59e0970dfac7.jpg</url>
      <title>DEV Community: mylena</title>
      <link>https://dev.to/mmsfarias</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mmsfarias"/>
    <language>en</language>
    <item>
      <title>Banco de dados: Modelo conceitual</title>
      <dc:creator>mylena</dc:creator>
      <pubDate>Mon, 03 Jun 2024 14:11:51 +0000</pubDate>
      <link>https://dev.to/mmsfarias/banco-de-dados-modelo-conceitual-loo</link>
      <guid>https://dev.to/mmsfarias/banco-de-dados-modelo-conceitual-loo</guid>
      <description>&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; Post com intuito de gravar meu aprendizado em banco de dados. Não é uma verdade absoluta.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Referência:&lt;/strong&gt; Sistemas de banco de dados, 7ª edição - &lt;em&gt;Navathe&lt;/em&gt; e &lt;em&gt;Elmasri&lt;/em&gt;&lt;/p&gt;




&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Conceitos iniciais&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Modelo conceitual    &lt;/p&gt;

&lt;p&gt;2.1 Entidades&lt;br&gt;
2.2 Atributos&lt;br&gt;
2.3 Relacionamentos&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Superclasse e subclasse&lt;/p&gt;

&lt;p&gt;3.1 Especialização&lt;br&gt;
3.2 Generalização&lt;br&gt;
3.3 Restrições&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Conceitos iniciais
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Modelo de dados:&lt;/strong&gt; Mostra toda a estrutura (tipos, relacionamentos, restrições) de um banco de dados, abstraindo em recursos essenciais para que diferentes pessoas sejam capazes de entender. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alguns dos modelos mais conhecidos:&lt;/strong&gt; Modelo conceitual e modelo físico.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Modelo conceitual:&lt;/strong&gt; Modelo de alto nível, tendo o foco usuários finais. Ou seja, não vai haver um aprofundamento em pontos mais técnicos (para programadores, DBAs), mas sim em entidades, atributos, restrições e relacionamentos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Modelo físico:&lt;/strong&gt; Modelo de baixo nível que descreve mais a fundo sobre como os dados serão armazenados (formato de registro, caminhos de acesso) e o foco são pessoas técnicas.&lt;/p&gt;

&lt;p&gt;Existe o modelo &lt;strong&gt;representativo&lt;/strong&gt; - ou &lt;strong&gt;implementação&lt;/strong&gt; - que é o meio termo entre o conceitual e o físico. Aqui há um aprofundamento sobre os dados, mas ainda sim diferentes tipos de usuários podem ser capazes de compreender.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Esquema (descrição) de banco de dados:&lt;/strong&gt; Diz respeito a esquematização de restrições lógicas, nome de tabelas, campos das tabelas e seus tipos. Um esquema não deve ser alterado com frequência, apenas quando há mudanças de requisitos no projeto - chamado de &lt;strong&gt;evolução do esquema&lt;/strong&gt; -&lt;/p&gt;

&lt;p&gt;Um banco de dados tem &lt;strong&gt;estados&lt;/strong&gt;, eles são:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Estado vazio:&lt;/strong&gt; Esquema sem nenhum registro inserido nele.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Estado inicial:&lt;/strong&gt; Quando uma carga é feita na tabela&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Todo banco em determinado tempo terá seu estado atual, com os registros atuais, porém o estado do banco se altera a cada nova inserção, atualização ou exclusão de registros.&lt;/p&gt;

&lt;p&gt;Com isso, o SGBD tem que &lt;strong&gt;garantir&lt;/strong&gt; o &lt;strong&gt;estado válido&lt;/strong&gt; dos registros, ou seja, garantir que tudo esteja de acordo com a estrutura e restrições do esquema.&lt;/p&gt;

&lt;p&gt;Obs: Os registros são também chamados de instância dos objetos (entidades) ou ocorrências.  &lt;/p&gt;




&lt;h3&gt;
  
  
  Modelo conceitual
&lt;/h3&gt;

&lt;p&gt;O modelo conceitual trabalha com três bases: &lt;strong&gt;entidade, atributos e relacionamentos&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhg0q2us8kfwehnkoaez0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhg0q2us8kfwehnkoaez0.png" alt="Primeiro desenho é o símbolo de um atributo simples, oval com uma linha. O segundo é o símbolo de um atributo multivalorado, oval dupla. O terceiro é o símbolo de uma entidade, um retângulo." width="446" height="76"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Entidades:
&lt;/h4&gt;

&lt;p&gt;É o objeto. Ex: Usuário, Departamento, Empresa e etc&lt;/p&gt;

&lt;h4&gt;
  
  
  Atributos:
&lt;/h4&gt;

&lt;p&gt;São as propriedades (características) que descrevem esse objeto. Ex: Usuário -&amp;gt; Nome, CPF, E-mail.&lt;/p&gt;

&lt;p&gt;Os atributos podem ser de diversos tipos, entre eles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Composto&lt;/strong&gt; ou &lt;strong&gt;Simples (Atômico):&lt;/strong&gt; Atributos compostos são aqueles que podem ser sub-divididos (quebrados) em partes até serem atributos não divisíveis. Então um atributo simples é um atributo que não é divisível.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fejgyb72g572k1qq87nd7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fejgyb72g572k1qq87nd7.png" alt="Imagem do atributo endereço que é composto e tem atributos simples (cidade e estado) e um outro atributo composto logradouro que se divide em rua, bairro e número" width="729" height="318"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Não é obrigatório destrinchar os atributos compostos. Se um atributo for referenciado como um todo ou não especificado, é possível manter como um atributo simples.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff5guopd6kxo23zsluya1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff5guopd6kxo23zsluya1.png" alt="Imagem do atributo Nome que pode ser composto e se dividir em primeiro nome, nome do meio e sobrenome" width="531" height="210"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No exemplo acima, o atributo "Nome" pode ser composto, mas também pode ser referenciado como atributo simples e agrupar os outros atributos. Ex: Nome: Josué Henrique Santos.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Valor único&lt;/strong&gt; ou &lt;strong&gt;Multivalorado:&lt;/strong&gt; Um atributo de valor único é aquele atributo que recebe apenas um valor, enquanto o multivalorado pode ter um conjunto de valores, além de poder estabelecer uma restrições do mínimo e do máximo de valores possíveis.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ex: Uma pessoa tem apenas uma idade, por isso o atributo "Idade" é valor único.&lt;/p&gt;

&lt;p&gt;Ex²: Uma pessoa pode ter zero, uma ou mais graduações, por isso o atributo "Formação" é multivalorado. Além disso, poderia colocar que o máximo de valores possíveis é 3.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Derivado&lt;/strong&gt; ou &lt;strong&gt;Armazenado:&lt;/strong&gt; Um atributo derivado é aquele que deriva de um atributo armazenado. Também podendo derivar de outra entidade relacionada.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ex: Eu tenho o atributo "Idade", onde o valor dele é feito através do cálculo do dia atual com o valor do atributo "Data de nascimento". Ou seja, o atributo "Idade" é derivado, pois deriva do atributo "Data de nascimento", este sendo o atributo armazenado. &lt;/p&gt;

&lt;p&gt;As entidades podem ter um ou mais atributos que são &lt;strong&gt;atributos chaves&lt;/strong&gt; que tem o objetivo de identificar, de forma única, cada entidade.&lt;/p&gt;

&lt;p&gt;Um atributo sozinho pode ser um atributo chave, porém dois ou mais atributos podem formar uma chave (as combinaçãos delas devem ser &lt;strong&gt;únicas&lt;/strong&gt;)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzlspt8p2fejqggrw3yeg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzlspt8p2fejqggrw3yeg.png" alt="Uma entidade com um atributo chave chamado " width="397" height="123"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na imagem acima, o atributo chave "Registro" é formado pela combinação dos atributos simples, "Estado" e "Número". Esse tipo também é chamado de &lt;strong&gt;atributo chave composto.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uma entidade pode ter nenhuma chave e é chamada de entidade fraca.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Exemplo do que foi descrito até agora:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1968pbqc7hq6ynw7mucj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1968pbqc7hq6ynw7mucj.png" alt="Entidade departamento tem cinco atributos, sendo dois atributos-chave (nome e número), um atributo multivalorado (localizações), um que é derivado (gerente) e outro que é a data de início que esse gerente começou a atuar" width="458" height="197"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uma entidade departamento tem cinco atributos, sendo dois atributos-chave (nome e número), um atributo multivalorado (localizações), um que é derivado (gerente) e outro que é a data de início que esse gerente começou a atuar
&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Relacionamentos:
&lt;/h4&gt;

&lt;p&gt;Na fase inicial de um modelo ER, os relacionamentos existentes entre as entidades não precisam estar explícitos, pois isso é refinado durante a evolução do modelo.&lt;/p&gt;

&lt;p&gt;Existem alguns tipos de relacionamentos, entre eles o relacionamento &lt;strong&gt;binário&lt;/strong&gt; (que é o mais comum) e o &lt;strong&gt;terciário&lt;/strong&gt;, que corresponde a quantas entidades estão relacionadas. (Há relacionamentos mais complexos)&lt;/p&gt;

&lt;p&gt;Além disso, existe o relacionamento que é feito entre a mesma entidade. Ex: Um funcionário é supervisionado por outro funcionário. Nesse caso o relacionamento que existe é &lt;strong&gt;autorrelacionado/recursivo.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2773euashchxp8c4w588.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2773euashchxp8c4w588.png" alt="Três exemplos de visualizar o autorrelacionamento. O padrão, o de pé de galinha e usando conjuntos" width="800" height="218"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Há uma &lt;strong&gt;restrição estrutural&lt;/strong&gt; que é a &lt;strong&gt;restrição de participação&lt;/strong&gt; onde os relacionamentos entre as entidades podem ter uma &lt;strong&gt;dependência de existência&lt;/strong&gt; ou não.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Participação total:&lt;/strong&gt; Também conhecida como dependência de existência, a participação total é quando a existência de uma entidade depende dela estar ligada com outra. — &lt;strong&gt;Todas as instâncias precisam estar no relacionamento&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ex: Todo funcionário precisa trabalhar para um departamento. Ou seja, é obrigatório que todas as instâncias do 'Funcionário' participem (estejam ligados) a uma instância de 'Departamento'.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkqer4bl33y6k0vm9g5b7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkqer4bl33y6k0vm9g5b7.png" alt="Entidade 'Funcionario' ligado a entidade 'Departamento' com linha dupla, que significa dependência total" width="596" height="90"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A linha dupla representa que no relacionamento entre as entidades há a dependência total/de existência.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Participação parcial:&lt;/strong&gt; Quando nem todas as instâncias de uma entidade precisam estar ligada com outra.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ex: Um funcionário pode gerenciar um departamento ou nenhum,&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F75ua0h9bh4t5u59myr2d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F75ua0h9bh4t5u59myr2d.png" alt="Entidade 'Funcionario' ligado a entidade 'Departamento' com linha simples, que significa dependência parcial" width="590" height="86"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Os relacionamentos com participação parcial mantém a linha simples.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cardinalidades:&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;1:1 - Um para Um:&lt;/strong&gt; Uma instância da entidade A está, no &lt;strong&gt;máximo&lt;/strong&gt;, associada a uma instância da entidade B (e vice versa)&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Ex: Uma pessoa está associada a apenas um CPF como documento oficial.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nesse caso, o atributo desse relacionamento pode estar na entidade 'Pessoa' ou na entidade 'Documento', por exemplo. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd5rhwkwja2eanv4vuy0t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd5rhwkwja2eanv4vuy0t.png" alt="Entidade 'Pessoa' e entidade 'Documento' com cardinalidade 1:1 e o atributo PESSOA_ID estando na entidade 'Documento'" width="797" height="166"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2.&lt;strong&gt;N:1 ou 1:N - Um para Muitos:&lt;/strong&gt; Quando uma instância de uma entidade A pode estar associada a zero, uma ou várias instâncias de uma entidade B, porém uma instância da entidade B só pode estar associada a, no máximo, uma instância da entidade A.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ex: Um departamento pode ter vários funcionários enquanto um funcionário só pode pertencer a um departamento. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nesse caso, o atributo relacionado fica, &lt;strong&gt;somente&lt;/strong&gt;, na entidade com o lado &lt;strong&gt;N&lt;/strong&gt; do relacionamento.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7fawsn1a0p1azdwtweyc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7fawsn1a0p1azdwtweyc.png" alt="Entidade 'Funcionario' e entidade 'Departamento' com cardinalidade 1:N e o atributo DEPARTAMENTO_ID na entidade 'Funcionario'" width="680" height="184"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3.&lt;strong&gt;N:M ou N:N - Muitos para muitos:&lt;/strong&gt; Várias instâncias de uma entidade A podem estar relacionadas a várias instâncias de uma entidade B (e vice-versa).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ex: Um autor pode escrever vários livros e vários livros podem ser de um mesmo autor.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nesse caso, os atributos de relação são a &lt;strong&gt;combinação das entidades&lt;/strong&gt; e &lt;strong&gt;precisa&lt;/strong&gt; ter uma entidade intermediária.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuq60fqtr6kg7zyfvfv38.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuq60fqtr6kg7zyfvfv38.png" alt="Entidade 'Livro' e entidade 'Autor' com cardinalidade N:N, onde gerou a entidade 'Livro_Autor' que contém o ID_AUTOR e ID_LIVRO" width="617" height="310"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Durante o processo de modelagem de um banco de dados, atributos definidos no refinamento inicial pode se tornar uma entidade independente. Uma forma de avaliar isso é vendo se um atributo está presente em N entidades, dessa forma é possível criar uma entidade independente e evitar a redundância dos dados.&lt;/p&gt;

&lt;p&gt;Da mesma forma que o inverso pode ser feito. Uma entidade estabelecida no refinamento inicial pode se tornar um atributo, se essa entidade estiver relacionada a apenas uma entidade, por exemplo, ela pode se tornar um atributo dessa outra entidade.&lt;/p&gt;




&lt;h3&gt;
  
  
  Superclasse e subclasse
&lt;/h3&gt;

&lt;p&gt;Também conhecido como supertipo e subtipo, esse conceito diz que um conjunto pode ter &lt;strong&gt;subconjuntos&lt;/strong&gt; associados. &lt;/p&gt;

&lt;p&gt;Quando há necessidade, uma entidade é criada para explicitar esse subagrupamento:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F460j6drxe5u0lavmwevh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F460j6drxe5u0lavmwevh.png" alt="Entidade Funcionário com ligação as entidades Secretária, Gerente e Técnico" width="451" height="202"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No exemplo acima, o funcionário é a superclasse e a secretária, técnico e gerente são as subclasses. &lt;/p&gt;

&lt;p&gt;Uma subclasse não pode existir sem estar relacionada a uma superclasse. Ex: Não é possível existir uma secretária sem ser membro da superclasse 'Funcionário'.&lt;/p&gt;

&lt;p&gt;Ou seja, uma entidade de subclasse pertence a entidade de subclasse e também a de superclasse. Então o subtipo herda os atributos de entidade do supertipo.&lt;/p&gt;

&lt;h4&gt;
  
  
  Especialização
&lt;/h4&gt;

&lt;p&gt;Um conjunto de subtipos pode ser a especialização de um supertipo. Ex: Pode haver uma especizalição por 'tipo_cargo' da entidade base 'Funcionário'.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9gw797jem9peihyhuwye.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9gw797jem9peihyhuwye.png" alt="Supertipo 'Funcionário' com uma linha ligando a um círculo com a letra 'd' no meio e duas linhas, com o símbolo U no meio, desse círculo conectando as entidades de subtipo 'Técnico' e 'Secretária' e ao lado uma ligação de 'Funcionário' com o subtipo 'Gerente', onde nesse caso só utiliza a linha com U" width="636" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Os subtipos podem ter atributos normalmente, esses atributos são chamados de &lt;strong&gt;atributos específicos (ou locais)&lt;/strong&gt;, além de que subclasses podem participar de &lt;strong&gt;relacionamentos específicos&lt;/strong&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Generalização
&lt;/h4&gt;

&lt;p&gt;A generalização é o processo contrário da especialização. Quando entidades tem vários atributos comuns, é possível generalizar esses atributos em uma entidade (que se torna uma superclasse).&lt;/p&gt;

&lt;p&gt;Ex: As entidades 'Carro' e 'Caminhão' pode fazer surgir a entidade 'Veiculo', que é uma entidade generalizada e a superclasse dessas outras entidades.&lt;/p&gt;

&lt;p&gt;Ou seja, no final pode-se olhar o processo como generalização/especialização, pois no final do processo ela se complementa. O que diferencia é a motivação/objetivo inicial da modelagem.&lt;/p&gt;

&lt;h4&gt;
  
  
  Restrições
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Subclasse definida por predicado:&lt;/strong&gt; As subclasses são determinadas através de um atributo na superclasse. Ex: A entidade 'Funcionário' tem um atributo chamado 'tipo_emprego' que determina se o funcionário é do tipo 'Técnico', 'Secretária' etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Definida pelo usuário:&lt;/strong&gt; Quando não se tem uma condição explícita para se definir. A separação depende dos usuários do banco de dados no processo da operação de inserção de uma entidade.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Restrição de disjunção (desconexão):&lt;/strong&gt; As subclasses devem ser &lt;strong&gt;disjuntas&lt;/strong&gt;, ou seja, devem pertencer a, &lt;strong&gt;no máximo&lt;/strong&gt;, uma subclasse. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Se as subclasses não forem disjuntas, pode se ter a sobreposição, onde é possível ser membro de mais de uma classe.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fphqujek2pjbbb4hzpooe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fphqujek2pjbbb4hzpooe.png" alt="Entidade superclasse 'Peça' que tem uma linha dupla ligado a um círculo com um 'o' de overlapping dentro e duas linhas distintas partindo desse círculo e ligando as entidades 'P_Fabricada' e 'P_Comprada'" width="586" height="521"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quando há a letra o dentro círculo, significa o overlapping.&lt;/p&gt;

&lt;p&gt;A linha dupla vem do conceito a seguir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Restrição de completude:&lt;/strong&gt; A restrição de completude pode ser parcial ou total.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Quando &lt;strong&gt;total&lt;/strong&gt;, significa que &lt;strong&gt;toda&lt;/strong&gt; entidade da superclasse precisa ser membro de pelo menos uma subclasse da especialização. Por isso a linha dupla.&lt;/p&gt;

&lt;p&gt;A restrição &lt;strong&gt;parcial&lt;/strong&gt; significa que uma entidade &lt;strong&gt;pode&lt;/strong&gt; não pertencer a nenhuma subclasse.&lt;/p&gt;

&lt;p&gt;! Quando houver uma operação de exclusão de entidade da superclasse, isso implica que a entidade na subclasse também seja deletada. &lt;/p&gt;

</description>
      <category>database</category>
      <category>beginners</category>
      <category>sql</category>
      <category>data</category>
    </item>
  </channel>
</rss>
