← tópicos

Específicos · Bancos de Dados

Modelagem relacional: MER, chaves, integridade referencial, normalização (1FN/2FN/3FN)

Aqui a banca descreve certo e rotula errado: leia a descrição primeiro e só depois o nome — nível de abstração, forma normal, tipo de chave ou lado da cardinalidade.

Média152 itens no tópico

A ideia que organiza o assunto

Modelar é traduzir a mesma realidade três vezes, e cada tradução perde uma liberdade. No modelo conceitual existe o que o negócio tem: entidades, atributos, relacionamentos, sem tabela nem SGBD. No modelo lógico isso vira tabela, coluna, chave primária, chave estrangeira e restrição — já preso ao tipo de banco, mas ainda não ao produto. No modelo físico vira arquivo, bloco, índice, tipo proprietário e particionamento, agora dependente do software instalado. Cada elemento do vocabulário deste tópico mora em exatamente um desses três andares, e sabe-se em qual porque basta perguntar: isso muda se eu trocar de SGBD? Chave e restrição não mudam; índice e tipo de dado mudam; entidade e relacionamento não existiam nesse nível ainda.

Essa escada é a ideia que organiza o assunto porque é também o que a banca ataca. A distorção dominante aqui não é técnica, é de rótulo: a frase descreve corretamente um nível, uma forma normal, um tipo de chave ou um lado da cardinalidade, e o nome colado nela é o do vizinho. Em 38 itens errados medidos, 14 são exatamente isso — um termo trocado pelo seu par — e outros 10 são a mesma relação lida no sentido inverso. Somados, dois terços. O resto do conteúdo da frase costuma estar impecável, e é por isso que o item engana: quem lê buscando um erro técnico não encontra nada.

Daí a rotina que resolve a maioria dos itens: leia a descrição até o fim, decida sozinho a que ela pertence, e só então volte ao nome que o item lhe deu. Se os dois não coincidirem, o item está errado, por mais correta que seja cada palavra isolada.

Três pares sustentam quase tudo o que sobra.

Identificar dentro × apontar para fora. A chave primária identifica linhas da própria tabela; a chave estrangeira aponta para a chave primária de outra (ou da mesma, no autorrelacionamento). O verbo referenciar sempre chama chave estrangeira, nunca primária. Como consequência direta, a ligação da integridade referencial é assimétrica: estrangeira de um lado, primária do outro. Item que emparelhe primária com primária já caiu.

Onde caberia mais de um valor. Uma célula guarda um valor só. É dessa restrição, e de nenhuma outra, que saem a 1FN (nada de lista dentro da célula), a regra de mapeamento 1:N (a chave estrangeira desce para o lado muitos, porque só lá ela cabe em uma linha) e a necessidade da tabela associativa no N:N (nenhum dos dois lados comporta a referência).

A escada da normalização. Cada degrau retira uma classe de anomalia e deixa as outras de pé: 1FN tira valor não atômico, 2FN tira dependência parcial, 3FN tira dependência transitiva, FNBC tira determinante que não é chave candidata, 4FN tira dependência multivalorada, 5FN tira dependência de junção. E são cumulativos: não se fala em 4FN antes da FNBC. Item que declare o problema resolvido num degrau intermediário — “na 2FN as redundâncias são eliminadas” — está generalizando.

Por que se usa (e o que custa)

Normalizar compra consistência: eliminado o dado repetido, some a possibilidade de atualizar uma cópia e esquecer a outra, e somem junto as três anomalias clássicas — a de inserção (não conseguir cadastrar o fornecedor enquanto não houver produto dele), a de alteração (mudar o endereço em quinze linhas e errar uma) e a de exclusão (apagar o último pedido e perder o cliente).

Paga-se em junções. Mais tabelas significam mais JOIN por consulta, e uma consulta analítica que atravessa sete tabelas normalizadas é lenta por construção. Daí a modelagem dimensional do data warehouse fazer o caminho oposto de propósito: a dimensão é desnormalizada, aceita redundância, e ganha com isso menos junções e mais desempenho de leitura. Os dois desenhos não competem — servem a cargas diferentes, uma de escrita transacional, outra de leitura analítica — e confundi-los é o erro que este tópico cobra na fronteira com modelagem multidimensional.

A integridade referencial tem o seu próprio custo: cada inserção e cada atualização da tabela filha exigem uma verificação na tabela pai, e cada exclusão na pai obriga a decidir o que fazer com os filhos. Não há resposta única — o padrão SQL oferece rejeitar (RESTRICT, NO ACTION), anular (SET NULL), repor o valor padrão (SET DEFAULT) ou propagar (CASCADE) — e é justamente essa pluralidade que o item generalizante ignora.

Como funciona

Os elementos do MER. A entidade é o objeto do mundo real sobre o qual se guarda informação; o atributo é a sua propriedade; o relacionamento associa entidades — nunca atributos. Um subconjunto dos atributos, o identificador, distingue uma ocorrência das demais; ele pode ter uma ou várias colunas, mas assume um único valor por ocorrência. Os atributos ainda se classificam em simples ou composto (decomponível em partes com significado próprio), monovalorado ou multivalorado, armazenado ou derivado (calculável a partir de outros).

Cardinalidade. Escreve-se como par (mínima, máxima) em cada extremidade do relacionamento. A máxima (1 ou n) define o tipo — 1:1, 1:N, N:N — e a mínima (0 ou 1) define a obrigatoriedade da participação. São dois eixos independentes: um item pode acertar o tipo e errar a obrigatoriedade. Nos diagramas que a CEBRASPE imprime, o par escrito junto de uma entidade limita quantas ocorrências dela entram na associação, de modo que o limite da entidade sobre a qual o item pergunta está na extremidade oposta.

Entidade fraca. É a que não tem existência própria: depende de uma entidade forte e desaparece com ela, e a sua identificação só se completa com a chave da proprietária. Ter chave estrangeira, sozinho, não torna uma entidade fraca — o lado N de qualquer 1:N também tem.

Especialização e generalização. Dois eixos, de novo independentes: disjunção (disjunta, em que a entidade pertence no máximo a uma subclasse × sobreposta, em que pode pertencer a várias) e completude (total, em que toda ocorrência da superclasse está em alguma subclasse × parcial).

Entidade associativa. É o relacionamento tratado como entidade, geralmente para poder participar de outro relacionamento. Num diagrama, reconhece-se por carregar chaves estrangeiras para duas outras entidades.

Do MER para as tabelas. O mapeamento é mecânico e indexado pela cardinalidade. 1:1 — funde as duas entidades em uma tabela ou põe a chave estrangeira em um dos lados (de preferência o de participação obrigatória). 1:N — a chave estrangeira vai para o lado N, e só. N:N — não há lado que comporte a referência, então nasce uma terceira tabela, associativa, com as chaves estrangeiras das duas entidades e os atributos do próprio relacionamento (a quantidade comprada, a data da contratação). Atributo multivalorado vira tabela própria com chave estrangeira para o dono. Especialização vira tabela única com discriminador, ou uma tabela por subclasse.

A hierarquia das chaves. Superchave é qualquer conjunto de atributos que identifica unicamente uma linha; chave candidata é a superchave mínima; chave primária é a candidata eleita, única e não nula; chaves alternativas são as candidatas restantes, implementadas com UNIQUE. A chave estrangeira é a coluna que referencia uma chave primária — ou uma candidata com UNIQUE, já que o alvo precisa de índice único para que a referência não fique ambígua. A chave primária pode ser simples ou composta, de qualquer tipo de dado; nada no modelo exige coluna única nem numérica.

As quatro restrições de integridade. Domínio — o valor pertence ao tipo e à faixa admitidos pela coluna; olha para dentro da célula. Entidade — a chave primária é única e não nula. Referencial — o valor da chave estrangeira existe como chave na tabela referenciada; olha para fora da tabela. Semântica — a regra de negócio (CHECK, trigger). Os itens deste tópico confundem sistematicamente as duas primeiras com a terceira.

Dependência funcional. A → B significa que, fixado o valor de A, o de B fica determinado. É o instrumento de toda a normalização. Parcial: B depende de apenas parte de uma chave composta. Transitiva: a chave determina A, e A, que não é chave, determina B. Multivalorada: A determina um conjunto de valores de B, independente dos demais atributos.

As formas normais, na ordem. 1FN — todos os domínios atômicos: sem valor composto, sem multivalorado, sem relação aninhada dentro da célula. 2FN — 1FN mais dependência total da chave primária, isto é, nenhum atributo não chave dependendo de só parte dela; por isso uma tabela de chave simples já está em 2FN automaticamente, pois não há parte própria da chave de que depender. 3FN — 2FN mais ausência de dependência transitiva: toda coluna não chave depende diretamente da chave, sem passar por outra coluna não chave (é a regra que expulsa o campo calculável a partir de outros da mesma linha). FNBC — todo determinante é chave candidata. 4FN — sem dependência multivalorada. 5FN, ou forma normal de projeção-junção — a tabela não pode mais ser decomposta em projeções menores de chaves diferentes e reconstituída por junção sem perda; alcançada a 5FN, não resta anomalia eliminável por projeção.

Decomposição. Normalizar é substituir uma relação por projeções, e a decomposição só vale se for sem perda: a junção das projeções tem de reproduzir exatamente a original. Entre as decomposições sem perda, prefere-se a que gera projeções independentes, que preservam as dependências funcionais e permitem atualizar cada tabela sem consultar as outras.

O que decide os itens

Os três níveis de abstração — o cluster mais letal do tópico, e o que a banca mais repete com o rótulo trocado:

níveldescrevenele aparecemnele não aparecem
conceitual (MER, DER)o domínio e as regras de negócio; visão geral do conteúdo do sistema; nasce na coleta de requisitosentidade, atributo, relacionamento, cardinalidadetabela, SGBD, índice, normalização
lógicoa estrutura conforme vista pelo usuário do SGBDtabela, coluna, chave primária e estrangeira, restrições, normalizaçãoíndice, arquivo, particionamento
físicocomo o dado é efetivamente armazenado; depende do produto instaladoarquivo, bloco, índice, tipo proprietário, tablespacerequisitos, regras de negócio

A frase “visualização geral do conteúdo do sistema, de como será organizado e das regras de negócio envolvidas” é do conceitual — ela circula no corpus duas vezes, assinada uma vez como “modelo lógico” e outra como “modelo físico”, e as duas vezes é Errado.

Chaves — quem faz o quê:

identificareferenciapode repetirpode ser nula
superchavesim (não necessariamente mínima)nãonão
chave candidatasim, minimamentenãonãonão
chave primáriasim (a candidata eleita)nãonãonão
chave alternativasim (UNIQUE)nãonãoem geral sim
chave estrangeiranãosimsimsim, se o vínculo for opcional

Restrições de integridade — a espécie certa:

restriçãogarantepergunta que a identifica
domínioo valor está no tipo/faixa da colunaesse valor cabe aqui?
entidadechave primária única e não nulaesta linha é distinguível?
referenciala chave estrangeira aponta para valor existenteesse valor existe na outra tabela?
semânticaa regra de negócio (CHECK, trigger)isso faz sentido para o negócio?

Regra prática: se a frase menciona duas tabelas, a restrição em jogo é a referencial; se menciona tipo de dado, é a de domínio.

Cada forma normal e a sua anomalia — a tabela que decide mais itens do tópico:

formaexigeremovepalavra que a denuncia
1FNdomínios atômicosvalor composto, multivalorado, aninhadoatômico, repetitivo, lista na célula
2FNdependência total da chavedependência parcialtoda a chave, chave composta
3FNdependência direta da chavedependência transitivadiretamente, sem intermediário, campo calculado
FNBCtodo determinante é chave candidatadeterminante não candidatodeterminante
4FNausência de dependência multivaloradamultivaloradamultivalorada
5FNtoda dependência de junção implicada pelas chavesdependência de junçãoprojeção, junção sem perda

Dois testes independentes em qualquer item de forma normal: a anomalia citada pertence àquela forma? e a forma anterior foi respeitada? Basta um falhar.

Mapeamento por cardinalidade:

cardinalidadequantas tabelasonde vai a referência
1:11 (fundida) ou 2chave estrangeira em um dos lados, de preferência o obrigatório
1:N2chave estrangeira no lado N
N:N3tabela associativa com as duas chaves estrangeiras

Vocabulário formal do modelo relacional — a tradução que resolve os itens mais curtos:

formalusual
relaçãotabela
tuplalinha, registro
atributocoluna, campo
domínioconjunto de valores válidos da coluna
graunúmero de atributos
cardinalidade da relaçãonúmero de tuplas

A chave primária é formada por atributos, nunca por tuplas: a tupla é o que ela identifica, não aquilo de que ela é feita.

Normalizado × dimensional:

relacional normalizadomultidimensional
redundânciabaixa, por projetoalta, por projeto
junções por consultamuitaspoucas
formas normaisperseguidasirrelevantes
chave que liga as tabelasnatural ou substitutasubstituta, gerada no DW, sem valor semântico
cargaescrita transacionalleitura analítica

Números que caem

tabelas geradas por um relacionamento N:N3
tabelas geradas por um 1:N2 (chave estrangeira no lado N)
colunas admitidas em uma chave primária1 ou mais — composta é legítima
valores por célula na 1FN1
forma normal garantida por uma tabela 1FN de chave simples2FN
cardinalidade máxima de cada lado num 1:11
formas normais usuais, em ordem1FN, 2FN, 3FN, FNBC, 4FN, 5FN
ações possíveis de chave estrangeira na exclusão4 (RESTRICT/NO ACTION, SET NULL, SET DEFAULT, CASCADE)
espécies de restrição de integridade4 (domínio, entidade, referencial, semântica)

Como a CEBRASPE derruba você aqui

Medido sobre 78 dos 152 itens do tópico (os 51 primeiros grupos): 39 Certos e 39 Errados, com 38 itens errados classificados. A outra metade está sendo explicada em paralelo; quando entrar, esta seção é reescrita contra o corpus inteiro.

Trocar o nome e deixar a descrição intacta — 14 dos 38 itens errados, 37%. É a assinatura do tópico, e os 14 casos são todos a mesma operação: um par de termos vizinhos, invertido. “A chave utilizada em uma tabela de dados que referencia outra tabela” rotulada como chave primária — é a estrangeira. “De acordo com a restrição de domínio…, em uma chave estrangeira, o valor do campo tem que coincidir com uma chave primária de uma tabela referenciada” — é integridade referencial. Restrições de integridade são utilizadas para garantir que uma informação seja do tipo de dado definido” — é a restrição de domínio, uma espécie apresentada como o gênero. “Integridade referencial ocorre quando se liga duas tabelas por suas chaves primarias — o par é sempre assimétrico. “Considera-se que uma tabela está na terceira forma normal quando não existem dependências multivaloradas” — a descrição é impecável e é da 4FN. “as interações entre dois atributos são representadas pelos relacionamentos” — relacionamento liga entidades. “uma chave primária formada por uma ou mais tuplas — por atributos. “entidade dissociativa — nome que não existe; a certa é associativa. “o MER tem por objetivo modelar de forma concreta/física — é conceitual. A defesa é sempre a mesma: decida a que a descrição pertence antes de ler o rótulo.

Ler a relação no sentido inverso — 10 dos 38, 26%. Aqui os termos estão certos e a direção está trocada. Do lado da cardinalidade: “a referência lógica estará colocada na entidade que possuir o lado um da cardinalidade” — desce sempre para o lado muitos, porque uma coluna guarda um valor só; e as duas leituras erradas de diagrama impresso, “um hospital pode estar vinculado a várias universidades” e “Uma Apolice pode estar associada a mais de uma instância de Carro, ambas contrariadas pelo (1,1) escrito na extremidade oposta. Do lado da normalização: “estará em 5FN quando o conteúdo dela puder ser reconstruído” — a definição é de impossibilidade, é quando não puder. Do lado dos processos: “o mapeamento do relacionamento não deve seguir a cardinalidade — é ela que governa o mapeamento; e “obtenção de um modelo lógico não relacional a partir de um modelo lógico relacional — engenharia reversa sobe o nível de abstração, nunca desce. Do lado da desnormalização: “a estrutura multidimensional oferece baixa redundância — é o contrário, e de propósito. Diante de qualquer afirmação de direção, redesenhe as duas pontas antes de julgar: qual lado tem muitos, de onde se parte, aonde se chega.

Justificar com uma causa inventada — 5 dos 38. Formato traiçoeiro porque a afirmação principal costuma ser verdadeira e só a justificativa é falsa. “A tabela vsoftware está na segunda forma normal (2FN), porque contém uma chave estrangeira referenciada à tabela software” — a tabela até está em 2FN, mas forma normal se apura por dependência funcional, e presença de chave estrangeira jamais é argumento. “Em Acidente não há atributo identificador, devido o relacionamento Envolvido ser opcional — a ausência do identificador é real e a causa não existe: cardinalidade mínima nada decide sobre identificador. “os objetos são definidos no nível de esquema, logo, não depende do software que já está sendo usado” — a conclusão contradiz a premissa, e o modelo físico é justamente o dependente do produto. “o cliente terá de cadastrar cada produto nos módulos de vendas e compras, pois a redundância será controlada pelo usuário, e não pela modelagem — é a razão de existir da modelagem que foi invertida. Verifique afirmação e justificativa separadamente: basta a justificativa cair.

Atribuir a um elemento o trabalho de outro — 4 dos 38. “A modelagem lógica de dados inclui índices — índice é físico. “o modelo conceitual … aplica regras para evitar redundâncias” — normalização é do lógico. “Na quarta forma normal (4FN), as dependências parciais e transitivas por si só são eliminadas” — 2FN e 3FN é que as eliminam, e a 4FN nem começa antes da FNBC. “é correto afirmar que funcionario é uma entidade associativa” — a associativa é a tabela que carrega as chaves estrangeiras de duas entidades, que ali era outra.

Fechar o processo cedo demais ou estender a definição — 4 dos 38. “Na segunda forma normal, as redundâncias são eliminadas — a 2FN remove só a dependência parcial. Qualquer atributo de uma tabela representada na terceira forma normal pode ser alterado sem que ocorra interferência” — a garantia é sobre atributos não chave. “sempre que uma linha for removida, automaticamente as linhas de outras tabelas que fazem referência a ela também serão removidas”CASCADE é uma opção entre quatro. exige que a chave seja formada por um único campo, preferencialmente numérico” — exigência que o modelo não faz.

Uma advertência de calibragem. O padrão de modalidade medido em outros tópicos de TI — permissivo tende a Certo, restritivo tende a Errado — não funciona aqui. Nos 78 itens medidos, as frases só restritivas ficam em 16 Certos contra 16 Errados, empate perfeito, e os itens que contêm um absoluto (sempre, somente, apenas, todo, qualquer) ficam em 11 Certos contra 10 Errados. A razão é a mesma que faz o padrão falhar nos tópicos jurídicos: aqui os absolutos são quase todos da definição, não do redator. “se e somente se … todos os atributos não chave puderem ser obtidos somente por meio da chave primária” é a 3FN literal, e é Certo; “todos os seus atributos forem atômicos” é a 1FN literal, e é Certo. A pergunta útil continua sendo “de quem é esse absoluto?” — da definição da forma normal, da regra de mapeamento, ou do autor do item.

Onde a prova realmente concentra. Nos 78 itens: 26 de normalização (desses, 25 sobre 1FN, 2FN e 3FN — a FNBC é nomeada uma única vez e nunca definida, a 4FN aparece 2 vezes e a 5FN 2), 22 de chaves e integridade (chave primária é a expressão mais frequente do tópico, em 29 dos 78 enunciados), 18 de MER, cardinalidade e entidades, 9 de níveis de abstração e 3 de assuntos de fronteira. Duas leituras dessa distribuição valem o tempo de estudo: normalização é o tema mais cobrado e o mais amigável — 18 Certos contra 8 Errados, porque a maioria dos Certos é a definição literal de uma forma normal; e níveis de abstração é o mais perigoso — 7 Errados em 9 —, apesar de a ementa do tópico sequer mencionar conceitual, lógico e físico. Quem estuda só o que o título promete deixa de fora o cluster com a pior taxa de acerto.

Itens com diagrama impresso: 5, dos quais 4 Errados. Quando o enunciado mandar olhar uma figura, desconfie por padrão e leia a extremidade oposta da que o item cita.

Erros clássicos

Achar que o par da integridade referencial é simétrico. Nunca é: chave estrangeira de um lado, chave primária (ou candidata com UNIQUE) do outro. Primária com primária, ou estrangeira com estrangeira, derruba o item sozinho.

Confundir restrição de domínio com integridade referencial. Domínio olha para dentro da coluna — esse valor cabe aqui? Referencial olha para fora da tabela — esse valor existe lá? Se a frase envolve duas tabelas, não é domínio.

Supor que CASCADE é o comportamento padrão da exclusão. É a opção mais lembrada e por isso a mais generalizada pela banca. Integridade referencial se garante impedindo referências órfãs — e rejeitar a exclusão cumpre isso tão bem quanto propagá-la.

Discutir 2FN numa tabela de chave simples. Sem chave composta não existe parte própria da chave, logo não existe dependência parcial, logo a tabela em 1FN já está em 2FN. A primeira pergunta de todo item de 2FN é quantas colunas a chave tem.

Classificar uma tabela em forma normal olhando para chaves, índices ou restrições. Forma normal é um fato sobre dependências funcionais entre colunas, e nada mais. Chave estrangeira, índice e UNIQUE não entram na conta.

Tratar as formas normais como independentes. São cumulativas. Nenhuma tabela está em 3FN sem estar em 2FN, nem em 4FN sem estar na FNBC. Item que pule um degrau — “ainda que a tabela não esteja previamente na FNBC” — já errou.

Pôr a chave estrangeira no lado um do 1:N. Uma célula não guarda uma lista. Se a referência não cabe em uma linha, ela desceu para o lado errado.

Esperar que uma tabela associativa tenha sempre por chave primária as duas chaves estrangeiras. É o padrão, e ele falha assim que o par puder se repetir — quando o mesmo servidor contrata o mesmo produto duas vezes, por exemplo. Procure no enunciado a frase que autoriza a repetição: é ela que decide o item.

Confundir atributo multivalorado com atributo composto. O composto se resolve desmembrando em colunas; o multivalorado exige tabela filha. Os dois violam a 1FN, por motivos diferentes.

Ler a cardinalidade do lado errado do diagrama. Nos diagramas usados pela banca, o par (mín, máx) escrito junto de uma entidade limita quantas ocorrências dela entram na associação — de modo que o limite da entidade citada no item está na outra ponta. Confira sempre as duas.

Achar que ter chave estrangeira faz de uma entidade uma entidade fraca. O lado N de todo 1:N tem chave estrangeira. Entidade fraca é a que não tem existência própria e cuja identificação só se completa com a chave da entidade forte.

Levar a busca por baixa redundância para dentro do data warehouse. Dimensão é desnormalizada de propósito, e a chave que liga fato e dimensão é substituta, gerada no próprio DW e deliberadamente sem significado — é essa ausência de semântica que permite preservar o histórico quando a origem muda.

Praticar151 itens