Uma tabela sem chave primária é normalizada?

9

Numa palestra, meu palestrante nos mostrou uma mesa sem uma chave primária. Ao ser questionado, ele disse que no 3NF, quando você remove dependências transitivas, não há problema em ter uma tabela sem uma chave primária.

No entanto, nenhuma chave primária implica que não há dependências funcionais - mas 3NF é a remoção de dependências transitivas, e fui ensinado que cada tabela precisa ter uma chave primária para normalização, pois trata-se de dependências funcionais.

Eu sei que é totalmente possível criar uma tabela sem uma chave primária, mas esse banco de dados é considerado normalizado se essa tabela existir?

Devo acrescentar que a tabela não possui nenhuma "chave única", nenhuma primária, nenhuma composta, nenhuma estrangeira.

A tabela mostrada possui três atributos, nenhum deles rotulado como primário ou exclusivo. Perguntei se foi um erro e ele disse que não há problema em ter um. Eu questionei a observação, pois nenhuma das informações da tabela pode ser identificada exclusivamente e ele afirmou que não há problema em ser assim. Isso vai contra o que me ensinaram sobre normalização.

Alex
fonte

Respostas:

15

Se uma relação não possui nenhuma chave candidata (e a chave primária é apenas uma das chaves candidatas), ela pode ter linhas duplicadas; portanto, não é uma relação! (já que as relações são sempre definidas).

Nesse caso, é mais correto chamá-lo de tabela, não de relação, como você fez na sua pergunta, e observe que vários RDBMS efetivamente podem gerenciar não-relações, permitindo tabelas sem qualquer restrição de exclusividade, mesmo que neste caso é muito incomum e produz problemas (anomalias) ao operar com os dados.

Mas, neste caso, falar sobre formas normais não é apropriado: toda a teoria da normalização é baseada na suposição fundamental de que os objetos de interesse são relações , não multisets. De fato, essa teoria é baseada na (um pouco discutida) Suposição de Relação Universal, que assume que todas as relações de um banco de dados são um subconjunto de uma projeção de tal relação, que contém todos os atributos em todas as relações. E esse objeto é de fato uma relação (isto é, um conjunto), não um multiset.

O fato de que, quando se fala em dados do Modelo de Dados Relacional, às vezes trocamos os dois termos, tabelas e relações, não significa que eles sejam realmente sinônimos, e essa diferença é fundamental quando se fala em teoria da normalização. Lembre-se de que nos livros, quando alguma forma normal é introduzida, sempre se diz algo como:

Uma relação está na forma normal xxx se ...

Renzo
fonte
Um multiset não é isomórfico para um conjunto em que você adiciona um countatributo adicional aos elementos?
Barmar 08/02/19
3
@ Barmar sim, mas você adiciona uma chave candidata e todas as dependências funcionais relevantes; portanto, do ponto de vista da teoria da normalização, você está em um caso completamente diferente.
Renzo
11
Quando as pessoas realizam operações relacionais em tabelas não relacionais, elas esperam resultados relacionais. Quando eles não os pegam, eles parecem anômalos.
Walter Mitty
0

3NF refere-se a uma tabela compatível com as 3 primeiras regras de normalização de dados.

  1. Eliminação de grupos repetidos
  2. Eliminação de dados redundantes
  3. Eliminação de colunas não dependentes da chave

A terceira regra requer uma chave. Você está certo, a mesa do palestrante não era 3NF.

Metáfora
fonte