AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 64011
Accepted
Sunny
Sunny
Asked: 2014-04-28 07:24:53 +0800 CST2014-04-28 07:24:53 +0800 CST 2014-04-28 07:24:53 +0800 CST

3NF requer 2NF?

  • 772

Estou um pouco confuso com a definição de 3NF.

De acordo com a Wikipédia:

A terceira forma normal (3NF) é uma forma normal usada na normalização do banco de dados. A 3NF foi originalmente definida por EF Codd em 1971. A definição de Codd afirma que uma tabela está na 3NF se e somente se ambas as condições a seguir forem válidas:

  • A relação R (tabela) está na segunda forma normal (2NF)
  • Todo atributo não primo de R é dependente não transitivamente de toda superchave de R.

Mas, de acordo com o livro Database System Concepts 6th Edition de Abraham Silberschatz, Henry F.Korth, S.Sudarshan :

Um esquema de relação R está na terceira forma normal (3NF) em relação a um conjunto F de dependências funcionais se, para todas as dependências funcionais em F+ da forma α → β, onde α ⊆ R e β ⊆ R, pelo menos um dos seguintes retenções:

  • α → β é uma dependência funcional trivial.
  • α é uma superchave para R.
  • Cada atributo A em β − α está contido em uma chave candidata para R.

Além disso, de acordo com o Database Systems 6th Edition de Ramez Elmasri Shamkant B. Navathe :

Um esquema de relação R está na terceira forma normal (3NF) se, sempre que uma dependência funcional não trivial X→A ocorre em R, ou (a) X é uma superchave de R, ou (b) A é um atributo primo de R.

Depois de ler as definições acima, não tenho certeza se um esquema de relação deve estar na 2NF para estar na 3NF. Além disso, um esquema de relação precisa estar na 3NF para estar na BCNF?

normalization dbms
  • 3 3 respostas
  • 4664 Views

3 respostas

  • Voted
  1. Best Answer
    BillThor
    2014-04-28T19:58:08+08:002014-04-28T19:58:08+08:00

    As formas normais são especificadas de forma que, para qualquer forma normal, o modelo também atenda aos critérios para as formas normais de menor número. Então, sim, se o seu modelo está na 3ª forma normal, ele também está na 2ª forma normal e na 1ª forma normal.

    Ao normalizar um modelo, você normalmente trabalha para resolver uma forma normal antes da próxima. Isso torna a normalização mais simples e menos propensa a erros, pois você aplica apenas algumas regras por vez. É possível que uma entidade em uma forma normal inferior também esteja em uma forma normal superior. A maioria das entidades da 3ª forma normal também estão na 4ª e 5ª forma normal.

    4ª, 5ª e 6ª formas normais vão além da dependência funcional. Quando aplicável, eles simplificam ainda mais os dados, à custa de mais tabelas. Eles reduzem a redundância e aumentam a integridade dos dados.

    • 4
  2. peteykun
    2014-04-28T23:23:46+08:002014-04-28T23:23:46+08:00

    Sim, a definição de Korth para 3NF implica 2NF.

    Suponha que haja uma relação Livros

    Livros { pub_id, auth_id, publisher_name, author_name}

    com o conjunto de dependências funcionais:

    pub_id -> publisher_name
    auth_id -> author_name

    A chave candidata aqui é {pub_id, auth_id}.

    Obviamente, esta relação não está na 2NF porque publisher_nameé dependente de pub_id, que é um subconjunto da chave candidata (portanto, não é totalmente dependente funcionalmente da única chave candidata).

    Agora, vamos tentar aplicar a definição de Korth para 3FN.

    • Nenhum dos DFs é trivial.
    • Nem é {pub_id}ou {auth_id}uma superchave.
    • No entanto, qualquer atributo é de fato contido na chave candidata.

    Assim, embora não existam dependências transitivas, esta relação não está na 3FN.

    Além disso, se tentarmos normalizar esta relação para 3NF, seremos forçados a decompor a relação da seguinte forma:

    Editores { pub_id, publisher_name}
    Autores {auth_id, author_name}

    O que é equivalente à decomposição 2NF de Books .

    • 1
  3. Abhishek Sakhaparia
    2014-04-29T02:15:11+08:002014-04-29T02:15:11+08:00

    Ao tentar implementar 2nf e 3nf, você pode ter uma ideia melhor. Em tempo real, você não pode diferenciar entre esses dois, pois eles acontecem ao mesmo tempo. Quando você está 2nf-ing, você simplesmente não pode parar por aí e w 3nf não é ele mesmo se não tiver chaves primárias ou superchaves definidas.

    • -3

relate perguntas

  • O que é relação atômica na primeira forma normal

  • Questão do banco de dados do dicionário multilíngue

  • Coluna duplicada para consultas mais rápidas?

  • As formas normalizadas superiores sempre atendem aos critérios das inferiores?

  • Recursos de exercícios de normalização

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve