Considere o esquema de banco de dados relacional a seguir: LOCALIDADE ( id_loc , nome_localidade, cidade, estado ) COORDENADOR ( id_coord , nome_coord, id_loc ) Restrições de integridade: Tabela LOCALIDADE: id_loc é chave primária; nome_localidade ≠ NULO; cidade ≠ NULO; estado = {‘PR’ ou ‘SC’ ou ‘RS’}. Tabela COORDENADOR: id_coord é chave primária; nome_coord ≠ 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
- A)híbrida.
Errada, porque híbrida mistura fragmentação horizontal e vertical, e aqui a ideia é apenas dividir linhas com base em outra tabela.
- B)horizontal derivada.
Certa, porque a tabela COORDENADOR é fragmentada em função da fragmentação de LOCALIDADE, o que caracteriza fragmentação horizontal derivada.
- C)horizontal primária.
Errada, porque fragmentação horizontal primária ocorre quando a própria tabela é dividida diretamente por seu critério de seleção, sem depender de outra relação.
- D)vertical.
Errada, porque fragmentação vertical divide colunas, e aqui o problema fala em distribuir tuplas, isto é, linhas.
- E)replicação.
Errada, porque replicação significa copiar os dados para varios locais, e nao fragmentá-los em partes distintas.
Gabarito: B
Em banco de dados distribuído, a fragmentação pode ser horizontal, vertical ou híbrida. A horizontal separa linhas; a vertical separa colunas; e a híbrida mistura as duas. Quando a tabela COORDENADOR é distribuída com base no critério usado para fragmentar LOCALIDADE, voce não está escolhendo seus próprios pedaços de forma independente: a divisão dela depende da fragmentação de outra tabela. Isso é exatamente a ideia de fragmentação horizontal derivada, muito comum para preservar a referência entre as tabelas e manter os dados próximos uns dos outros. No enunciado, LOCALIDADE foi dividida pelo estado, e os registros de COORDENADOR serão distribuídos em função da localidade. Como COORDENADOR tem chave estrangeira para LOCALIDADE(id_loc), faz sentido que seus registros acompanhem os fragmentos de LOCALIDADE aos quais pertencem. Ou seja, os coordenadores ficam no fragmento correspondente à localidade referenciada, evitando consultas atravessando o mapa inteiro do banco como se fosse um caça ao tesouro. A palavra-chave aqui é "em função do critério de localidade apresentado". Isso indica dependência de outra relação, e não um corte feito diretamente pelos atributos da própria tabela COORDENADOR. Por isso, o gabarito é a letra B. Em doutrina de banco de dados distribuído, essa é a classificação clássica de fragmentação horizontal derivada: a fragmentação de uma relação é obtida a partir da fragmentação de outra relação relacionada por chave estrangeira.