Skip to content

Latest commit

 

History

History
139 lines (97 loc) · 10.9 KB

topico-23.md

File metadata and controls

139 lines (97 loc) · 10.9 KB

[Tópico T23] - Modelo Entidade Relacionamento (MER) - Demanda informacional

by Prof. Plinio Sa Leitao-Junior (INF/UFG)

O projetista do banco de dados toma várias decisões durante o projeto conceitual, baseando-se nos requisitos de dados. Certamente, o projetista participa de várias iterações para a análise e para a evolução do esquema conceitual. Possivelmente, o projetista se depara com vários pontos de imprecisão, tais como aqueles listados para a atividade do Tópico 06.

O projeto conceitual do banco de dados envolve o emprego de um modelo de alto-nível, para a especificação do esquema conceitual do banco de dados. Nossa ementa adota o Modelo Entidade Relacionamento (MER) para guiar o projeto conceitual.

Requisitos de dados - BD Empresa

Retomemos os requisitos do BD Empresa[1], que estão transcritos a seguir.

A empresa é organizada em departamentos. Cada departamento tem um nome exclusivo, um número exclusivo e um funcionário em particular que o gerencia. Registramos a data inicial em que esse funcionário começou a gerenciar o departamento. Um departamento pode ter vários locais.
Um departamento controla uma série de projetos, cada um deles com um nome exclusivo, um número exclusivo e um local exclusivo.
Armazenamos o nome, número de Cadastro de Pessoa Física, endereço, salário, sexo (gênero) e data de nascimento de cada funcionário. Um funcionário é designado para um departamento, mas pode trabalhar em vários projetos, que não necessariamente são controlados pelo mesmo departamento. Registramos o número atual de horas por semana que um funcionário trabalha em cada projeto. Também registramos o supervisor direto de cada funcionário (que é outro funcionário).
Queremos registrar os dependentes de cada funcionário para fins de seguro. Para cada dependente, mantemos o nome, sexo, data de nascimento e o parentesco com o funcionário.

Diagrama Entidade Relacionamento (DER)

Quando se emprega o MER para o projeto conceitual, qual é a especificação (representação) do esquema conceitual do banco de dados?

O Diagrama Entidade Relacionamento (DER) é uma representação visual do esquema conceitual do banco de dados.

Com base nos requisitos de dados do BD Empresa, o seguinte Diagrama Entidade Relacionamento (DER)[1] foi produzido pelo projetista do banco de dados.

Cada elemento do DER - retângulo, losango, elipse - possui um significado particular.

Nos exemplos abaixo são ressaltados: (i) o significado particular de alguns dos elementos do DER para o BD Empresa; (ii) a distinção entre tipo de entidade e entidade; e (iii) a distinção entre tipo de relacionamento e relacionamento.

  • FUNCIONARIO é um tipo de entidade, cujo significado é conjunto de funcionários da empresa:
    • 'o João da Silva' é uma entidade do tipo FUNCIONARIO.
  • DEPARTAMENTO é um tipo de entidade, cujo significado é conjunto de departamentos da empresa:
    • 'Recursos Humanos' é uma entidade do tipo DEPARTAMENTO.
  • TRABALHA_PARA é um tipo de relacionamento binário que associa FUNCIONARIO e DEPARTAMENTO, cujo signicado é funcionario trabalha para departamento:
    • 'o João da Silva trabalha para o departamento Recursos Humanos' é um relacionamento do tipo TRABALHA_PARA.
  • GERENCIA é um tipo de relacionamento binário que associa FUNCIONARIO e DEPARTAMENTO, cujo signicado é funcionario gerencia departamento:
    • 'a Ana Lima gerencia o departamento Vendas' é um relacionamento do tipo GERENCIA.

Um pouco de grafos ...

Seja o Grafo G = (V, A), onde:

  • G é um grafo que modela algum aspecto do mundo-real;
  • V é um conjunto de vértices;
  • A é um conjunto de arestas;
  • vi possui um significado particular, ∀ viV;
  • ai possui um significado particular, ∀ aiA.

A figura a seguir ilustra o grafo G = ( {v1, v2, v3, v4, v5} , {a1, a2, a3, a4, a5, a6, a7 a8} ).
Observe na figura que cada aresta particular conecta dois vértices possivelmente distintos (exceto a aresta a6).

Essencialmente, um subgrafo é um grafo dentro de um grafo maior.

Formalmente, G = (V, A) é um subgrafo de G = (V, A) se:

  • V ⊆ V, ou seja, V é um subconjunto de V, e
  • A ⊆ A, ou seja, A é um subconjunto de A.

Para ilustrar, considere que o Grafo G = ( {v1, v2, v3, v4, v5} , {a1, a2, a3, a4, a5, a6, a7 a8} ) possui os dois subgrafos:

  • Se G = ( {v1, v3, v4} , {a2, a8} ), então G é um subgrafo de G.
  • Se G∗∗ = ( {v1, v3, v4} , {a3, a8} ), então G∗∗ é um subgrafo de G.

Vale repetir que cada elemento de um grafo - vértice ou aresta - possui um significado particular.
Então, o conteúdo do grafo é a união dos significados particulares de seus vértices e arestas.

Os grafos G e G∗∗ diferem entre si por uma única aresta (a2 em vez de a3, e vice-versa). Como o conteúdo de um grafo é a união do significado particular de cada vértice e aresta, então o conteúdo de G é distinto do conteúdo de G∗∗.

Emprego de grafos ... no contexto do DER

A especificação por meio de um DER pode ser percebida como um grafo G = (V, A).

A partir da analogia entre DER e grafos, conforme a figura acima, identificam-se os elementos:

  • os tipos de entidade (os retângulos no DER) são os vértices do grafo;
  • os tipos de relacionamento (os losangos no DER) são as arestas do grafo;
  • os atributos (as elipses no DER) e outras restrições (os números (1 e N) e as linhas simples e duplas no DER) promovem o significado particular para cada vértice e aresta do grafo.

Demanda informacional da aplicação

Sobre a adequação do esquema conceitual às demandas informacionais da aplicação, uma questão pertinente é:

Questão 01: As demandas informacionais da aplicação são atendidas a partir do esquema conceitual especificado no DER?
Noutras palavras, o projetista de banco de dados produziu um esquema conceitual capaz de atender a todas as demandas informacionais da aplicação?

Por exemplo, o DER produzido para o BD Empresa poderia ser avaliado quanto ao atendimento às seguintes consultas:

  • Consulta 01: Que funcionários trabalham para um particular departamento?
  • Consulta 02: Quem é o gerente de cada departamento?
  • Consulta 03: Que funcionários trabalham em um particular projeto?
  • Consulta 04: Que funcionários possuem o maior número de dependentes?

A resposta à Questão 01 perpasssa pela análise do esquema conceitual (representado pelo DER), para identificar que subgrafos são necessários e suficientes para atender cada demanda informacional da aplicação.

Para promover o entendimento, vamos considerar o grafo para o DER do BD Empresa:

  • Grafo G = ( {DEPARTAMENTO, DEPENDENTE, FUNCIONARIO, PROJETO} , {CONTROLA, DEPENDENTES_DE, GERENCIA, SUPERVISAO, TRABALHA_EM, TRABALHA_PARA} )

Se uma demanda informacional pode ser atendida a partir do esquema conceitual do banco de dados, então existe pelo menos um subgrafo [do DER] cujo conteúdo é necessário e suficiente para o processamento da demanda. A seguir estão alguns subgrafos e exemplos de demandas informacionais atendidas pelos mesmos.

  • Subgrafo G = ( {DEPARTAMENTO, FUNCIONARIO} , {TRABALHA_PARA} )
    • Que funcionários trabalham para cada departamento?
    • Quantos funcionários trabalham para cada departamento?
    • Qual a média salarial de cada departamento?
  • Subgrafo G∗∗ = ( {DEPARTAMENTO, FUNCIONARIO} , {GERENCIA} )
    • Quem é o gerente de cada departamento?
    • Dentre os gerentes atuais, qual deles está mais tempo na gerência do departamento?
    • Qual a média salarial dos gerentes de departamento?
  • Subgrafo G∗∗∗ = ( {FUNCIONARIO, PROJETO} , {TRABALHA_EM} )
    • Que funcionários trabalham em cada projeto?
    • Que funcionários trabalham em mais de um projeto?
    • Que projetos possuem mais de um funcionário que trabalha nele?
  • Subgrafo G∗∗∗∗ = ( {DEPENDENTE, FUNCIONARIO} , {DEPENDENTES_DE} )
    • Quais os dependentes de cada funcionários?
    • Quantos dependentes possuem cada funcionário?
    • Que funcionários possuem o maior número de dependentes?

Questão 02: Os Subgrafos G e G∗∗, apresentados acima, possuem o mesmo conjunto de vértices - {DEPARTAMENTO, FUNCIONARIO} - mas diferem em relação às arestas: TRABALHA_PARA e GERENCIA, respectivamente.
Por que várias das demandas informacionais atendidas por G não podem ser atendidas por G∗∗, e vice-versa?

A resposta à Questão 02 está atrelada ao significado de cada elemento dos subgrafos, especificamente as arestas TRABALHA_PARA e GERENCIA.

Atividade (data limite: 03/10/2021 23h59min59s)

Criar uma issue no projeto https://github.com/plinioleitao/bd-2021-1-bia, com o título "Tópico 23", para responder:

Seja o esquema conceitual do BD Empresa, que está representado por meio do DER apresentado acima. Avalie se as demandas informacionais abaixo podem ser atendidas pelo esquema conceitual.

  1. Que projetos possuem gerentes de departamento que trabalham nesses projetos? (Responda Sim ou Não)
  2. Qual o nome dos funcionários que não possuem dependentes? (Responda Sim ou Não)
  3. Quantos funcionários aposentados existem na empresa ? (Responda Sim ou Não)
  4. Que funcionários trabalham para um departamento que controla algum projeto que eles trabalham em? (Responda Sim ou Não)
  5. Quais os gerentes de departamento que também são supervisores? (Responda Sim ou Não)
  6. Qual o número médio de dependentes por empregado em cada departamento? (Responda Sim ou Não)

Artefatos

  1. Issue criada no projeto https://github.com/plinioleitao/bd-2021-1-bia, cujo título é "Tópico 23", para indicar suas reflexões iniciais sobre demandas informacionais atendidas a partir de um DER.

Bibliografia

[1] ELMASRI, R.; NAVATHE, S. B. Sistemas de Banco de Dados. 6. ed. Pearson, 2011.