Pular para o conteúdo principal

Questão de Banco de Dados — Banco de Dados Distribuídos — FGV 2024

Banco de DadosBanco de Dados Distribuídos
Código
fg165227
Banca
FGV
Órgão
ALEP
Ano
2024
Cargo
Ana Leg ( )
Considere o esquema de banco de dados relacional a seguir:   LOCALIDADE ( id_loc <PK>, nome_localidade, cidade, estado ) COORDENADOR ( id_coord <PK>, nome_coord, id_loc <FK> )   Restrições de integridade:   Tabela LOCALIDADE: id_loc é chave primária; nome_localidade \ne NULO; cidade \ne NULO; estado = {‘PR’ ou ‘SC’ ou ‘RS’}.   Tabela COORDENADOR: id_coord é chave primária; nome_coord \ne NULO; id_loc é chave estrangeira e referencia LOCALIDADE(id_loc).   A equipe que administra o banco de dados em tela decidiu convertê-lo de uma versão centralizada para uma distribuída. Para isso, decidiu que a divisão dos dados será guiada pelo critério do estado ao qual a localidade pertence. Ou seja, após distribuir os registros de localidade por fragmentos, os dados da tabela COORDENADOR serão distribuídos em função do critério de localidade apresentado.   No que concerne à divisão a ser realizada na tabela COORDENADOR, a fragmentação de suas tuplas (linhas) dever ser classificada como
  1. Ahíbrida.
  2. Bhorizontal derivada.
  3. Chorizontal primária.
  4. Dvertical.
  5. Ereplicação.
Revelar gabarito e comentário

GabaritoB — horizontal derivada.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Fragmentação Horizontal Derivada em Banco de Dados Distribuídos

Gabarito: letra B. A fragmentação aplicada à tabela COORDENADOR é horizontal derivada, pois as tuplas são divididas com base na fragmentação de outra tabela (LOCALIDADE), utilizando a chave estrangeira id_loc como critério de associação. A fragmentação horizontal primária, por outro lado, seria aplicada diretamente sobre os atributos da própria tabela, sem depender de outra relação.

A fragmentação é uma técnica fundamental em bancos de dados distribuídos, que consiste em dividir as relações (tabelas) em partes menores, chamadas fragmentos, que são armazenadas em diferentes sites da rede. O objetivo é melhorar o desempenho das consultas, reduzindo a quantidade de dados transferidos entre os nós, e aumentar a disponibilidade e a confiabilidade do sistema. Existem dois tipos principais de fragmentação: a horizontal e a vertical. A fragmentação horizontal divide a tabela em subconjuntos de linhas (tuplas), enquanto a vertical divide em subconjuntos de colunas (atributos).

A fragmentação horizontal pode ser primária ou derivada. A fragmentação horizontal primária é definida diretamente sobre os atributos da própria relação, usando um predicado (condição) que seleciona quais linhas pertencem a cada fragmento. Por exemplo, na tabela LOCALIDADE, poderíamos criar fragmentos com base no estado: LOCALIDADE_PR (estado = 'PR'), LOCALIDADE_SC (estado = 'SC') e LOCALIDADE_RS (estado = 'RS'). Já a fragmentação horizontal derivada é aplicada a uma relação que possui uma chave estrangeira para outra relação que já foi fragmentada. Nesse caso, as tuplas da relação filha são distribuídas de acordo com a fragmentação da relação pai, garantindo que as tuplas relacionadas fiquem no mesmo site, o que facilita a execução de junções (joins) e reduz a comunicação entre os nós.

No cenário apresentado, a tabela LOCALIDADE é fragmentada horizontalmente com base no estado (PR, SC ou RS). A tabela COORDENADOR possui uma chave estrangeira id_loc que referencia LOCALIDADE(id_loc). Para distribuir os dados de COORDENADOR, a equipe decide seguir o mesmo critério de fragmentação de LOCALIDADE. Isso significa que cada tupla de COORDENADOR será alocada no mesmo fragmento (e, portanto, no mesmo site) da localidade à qual está associada. Por exemplo, um coordenador cujo id_loc pertence a uma localidade do estado 'PR' será armazenado no fragmento correspondente a 'PR'. Essa é a definição exata de fragmentação horizontal derivada: a fragmentação de uma relação é derivada da fragmentação de outra relação, com base na chave estrangeira.

A distinção entre fragmentação horizontal primária e derivada é crucial para entender a questão. A primária é aplicada diretamente sobre a relação, sem depender de outras. A derivada é aplicada sobre uma relação que possui uma chave estrangeira para uma relação já fragmentada, herdando o critério de fragmentação. A banca explora exatamente essa diferença: muitos candidatos podem confundir a fragmentação de COORDENADOR com uma fragmentação horizontal primária, mas o fato de ela ser guiada pela fragmentação de LOCALIDADE a torna derivada. A pegadinha está em reconhecer que a fragmentação de COORDENADOR não é independente, mas sim dependente da fragmentação de LOCALIDADE.

Critério

Fragmentação Horizontal Primária

Fragmentação Horizontal Derivada

Base da divisão

Atributos da própria tabela

Chave estrangeira de outra tabela já fragmentada

Dependência

Independente de outras relações

Dependente da fragmentação da relação pai

Exemplo no cenário

Dividir COORDENADOR por nome_coord ou outro atributo próprio

Dividir COORDENADOR pelo id_loc que referencia LOCALIDADE fragmentada por estado

Objetivo principal

Distribuir tuplas por predicado local

Manter tuplas relacionadas no mesmo site (facilitar junções)

Alternativa A — ❌ Incorreta

A fragmentação híbrida é uma combinação de fragmentação horizontal e vertical, onde a relação é dividida tanto em linhas quanto em colunas. No caso, a tabela COORDENADOR é dividida apenas em linhas (tuplas), seguindo o critério de estado da localidade. Não há divisão de colunas, portanto não se trata de fragmentação híbrida.

Alternativa B — ✅ Correta ⟵ GABARITO

A fragmentação de COORDENADOR é horizontal derivada, pois as tuplas são divididas com base na fragmentação da tabela LOCALIDADE, utilizando a chave estrangeira id_loc. A distribuição das tuplas de COORDENADOR é derivada da fragmentação de LOCALIDADE, garantindo que coordenadores e suas respectivas localidades fiquem no mesmo fragmento.

Alternativa C — ❌ Incorreta

A fragmentação horizontal primária seria aplicada diretamente sobre os atributos de COORDENADOR, sem depender de outra tabela. Como a fragmentação de COORDENADOR é guiada pela fragmentação de LOCALIDADE, ela não é primária, mas sim derivada.

Alternativa D — ❌ Incorreta

A fragmentação vertical divide a tabela em subconjuntos de colunas (atributos). No caso, a tabela COORDENADOR é dividida em linhas (tuplas), não em colunas. Portanto, não se trata de fragmentação vertical.

Alternativa E — ❌ Incorreta

A replicação consiste em copiar os dados e armazená-los em vários nós, para redundância e melhor desempenho. No caso, os dados de COORDENADOR são divididos em fragmentos, não copiados integralmente para vários sites. Portanto, não se trata de replicação.

Gabarito: letra B

Link permanente: /questoes/fg165227