DEV Community

mylena
mylena

Posted on • Updated on

Banco de dados: Modelo conceitual

Disclaimer: Post com intuito de gravar meu aprendizado em banco de dados. Não é uma verdade absoluta.

Referência: Sistemas de banco de dados, 7ª edição - Navathe e Elmasri


  1. Conceitos iniciais

  2. Modelo conceitual

    2.1 Entidades
    2.2 Atributos
    2.3 Relacionamentos

  3. Superclasse e subclasse

    3.1 Especialização
    3.2 Generalização
    3.3 Restrições


Conceitos iniciais

Modelo de dados: 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.

Alguns dos modelos mais conhecidos: Modelo conceitual e modelo físico.

1. Modelo conceitual: 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.

2. Modelo físico: 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.

Existe o modelo representativo - ou implementação - 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.

Esquema (descrição) de banco de dados: 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 evolução do esquema -

Um banco de dados tem estados, eles são:

  • Estado vazio: Esquema sem nenhum registro inserido nele.
  • Estado inicial: Quando uma carga é feita na tabela

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.

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

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


Modelo conceitual

O modelo conceitual trabalha com três bases: entidade, atributos e relacionamentos

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.

Entidades:

É o objeto. Ex: Usuário, Departamento, Empresa e etc

Atributos:

São as propriedades (características) que descrevem esse objeto. Ex: Usuário -> Nome, CPF, E-mail.

Os atributos podem ser de diversos tipos, entre eles:

  • Composto ou Simples (Atômico): 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.

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

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.

Imagem do atributo Nome que pode ser composto e se dividir em primeiro nome, nome do meio e sobrenome

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.

  • Valor único ou Multivalorado: 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.

Ex: Uma pessoa tem apenas uma idade, por isso o atributo "Idade" é valor único.

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.

  • Derivado ou Armazenado: Um atributo derivado é aquele que deriva de um atributo armazenado. Também podendo derivar de outra entidade relacionada.

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.

As entidades podem ter um ou mais atributos que são atributos chaves que tem o objetivo de identificar, de forma única, cada entidade.

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

Uma entidade com um atributo chave chamado

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

  • Uma entidade pode ter nenhuma chave e é chamada de entidade fraca.

Exemplo do que foi descrito até agora:

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

  • 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

Relacionamentos:

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.

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

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 é autorrelacionado/recursivo.

Três exemplos de visualizar o autorrelacionamento. O padrão, o de pé de galinha e usando conjuntos

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

  • Participação total: 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. — Todas as instâncias precisam estar no relacionamento

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'.

Entidade 'Funcionario' ligado a entidade 'Departamento' com linha dupla, que significa dependência total

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

  • Participação parcial: Quando nem todas as instâncias de uma entidade precisam estar ligada com outra.

Ex: Um funcionário pode gerenciar um departamento ou nenhum,

Entidade 'Funcionario' ligado a entidade 'Departamento' com linha simples, que significa dependência parcial

Os relacionamentos com participação parcial mantém a linha simples.

  • Cardinalidades:
  1. 1:1 - Um para Um: Uma instância da entidade A está, no máximo, associada a uma instância da entidade B (e vice versa)
  • Ex: Uma pessoa está associada a apenas um CPF como documento oficial.

Nesse caso, o atributo desse relacionamento pode estar na entidade 'Pessoa' ou na entidade 'Documento', por exemplo.

Entidade 'Pessoa' e entidade 'Documento' com cardinalidade 1:1 e o atributo PESSOA_ID estando na entidade 'Documento'

2.N:1 ou 1:N - Um para Muitos: 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.

  • Ex: Um departamento pode ter vários funcionários enquanto um funcionário só pode pertencer a um departamento.

Nesse caso, o atributo relacionado fica, somente, na entidade com o lado N do relacionamento.

Entidade 'Funcionario' e entidade 'Departamento' com cardinalidade 1:N e o atributo DEPARTAMENTO_ID na entidade 'Funcionario'

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

  • Ex: Um autor pode escrever vários livros e vários livros podem ser de um mesmo autor.

Nesse caso, os atributos de relação são a combinação das entidades e precisa ter uma entidade intermediária.

Entidade 'Livro' e entidade 'Autor' com cardinalidade N:N, onde gerou a entidade 'Livro_Autor' que contém o ID_AUTOR e ID_LIVRO

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.

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.


Superclasse e subclasse

Também conhecido como supertipo e subtipo, esse conceito diz que um conjunto pode ter subconjuntos associados.

Quando há necessidade, uma entidade é criada para explicitar esse subagrupamento:

Entidade Funcionário com ligação as entidades Secretária, Gerente e Técnico

No exemplo acima, o funcionário é a superclasse e a secretária, técnico e gerente são as subclasses.

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'.

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.

Especialização

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'.

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

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

Generalização

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).

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

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.

Restrições

  • Subclasse definida por predicado: 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.

  • Definida pelo usuário: 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.

  • Restrição de disjunção (desconexão): As subclasses devem ser disjuntas, ou seja, devem pertencer a, no máximo, uma subclasse.

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

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'

Quando há a letra o dentro círculo, significa o overlapping.

A linha dupla vem do conceito a seguir:

  • Restrição de completude: A restrição de completude pode ser parcial ou total.

Quando total, significa que toda entidade da superclasse precisa ser membro de pelo menos uma subclasse da especialização. Por isso a linha dupla.

A restrição parcial significa que uma entidade pode não pertencer a nenhuma subclasse.

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

Top comments (0)