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

Eu li a definição de 1NF que é, “Se cada atributo da relação for atômico”. Diga-me o que é Atomic.

Comentários

Resposta

1NF requer que cada posição de atributo em cada tupla em cada relação contenha um único valor do tipo apropriado . Os tipos podem ser arbitrariamente complexos. Na verdade, os tipos podem ser relações. (O livro de CJ Date Banco de dados em profundidade: teoria relacional para profissionais trata esse problema de uma forma que é muito fácil de entender.)

“Atômico” nunca realmente significou “indivisível”, razão pela qual esse termo está finalmente caindo em desuso. Em termos gerais, “atômico” significa que se um valor possui partes componentes, o dbms ignora a existência dessas partes ou fornece funções para manipulá-las. Por exemplo, um valor de carimbo de data / hora tem essas partes.

  • Ano
  • Mês
  • Dia
  • Horas
  • Minutos
  • Segundos
  • Milissegundos

Esse tipo de valor é obviamente divisível, e todos os sistemas de gerenciamento de banco de dados fornecem funções para manipular essas partes. Eles também fornecem uma maneira de selecionar um carimbo de data / hora como um valor único. (O que, claro, é.)

Resposta

“Atômico” se refere à noção original de Codd de 1969 de que cada atributo em cada tupla dentro de uma relação deve consistir em um único valor e não permitir estruturas multivaloradas do tipo suportado em bancos de dados como o modelo CODASYL.

Em SQL DBMSs modernos, a atomicidade não é realmente um problema. As tabelas SQL não permitem colunas com vários valores e os valores são sempre “atômicos”.

Comentários

  • Tecnicamente verdade, mas as tabelas SQL permitem strings grandes como valores , que é uma lacuna na prática. Um campo de string que contém vários números inteiros decimais separados por vírgulas, datas ASCII, etc., certamente parece violar a intenção da atomicidade, quer siga a letra ou não …

Resposta

Atômico significa dados que não podem ser mais divididos.

Regra de atomicidade:

  • regra 1: uma coluna com dados atômicos não pode ter vários valores do mesmo tipo de dados na mesma coluna.
  • regra2: uma tabela com dados atômicos não pode ter várias colunas com o mesmo tipo de dados.

Assim como a coluna fullname não pode “dizer que pode ser atômica porque pode ser dividida em sobrenome, nome. Uma coluna com interesse também pode ser dividida ainda mais, então uma coluna pode” t ser dividido é conhecido como atômico.

Resposta

Significa que a chave não pode ser decomposta. Digamos que você tenha uma tabela com três colunas, nome, sobrenome e número_telefone. Você declara uma chave primária composta em (nome próprio, sobrenome). Essa chave primária não é atômica porque, na verdade, é composto de duas colunas. Agora, digamos que você altere sua tabela para duas colunas, full_name e telephone_number, com uma chave primária em full_name. A chave agora é atômica? Não, porque em seu aplicativo você pode dividi-lo em nome e sobrenome ainda, no espaço. Agora vamos fazer nossa tabela id, full_name e telephone_number, chave primária em id (que é um inteiro). Isso é atômico, porque o inteiro não pode ser decomposto de forma significativa.

Comentários

  • seu exemplo, entretanto, começa com a afirmação de que atomicidade ” significa que a chave não pode ser decomposta “. Isso ‘ não é o que significa. Significa que atributos consistem em um único valor. Não há nada ” não atômico ” sobre uma chave que consiste em vários atributos.

Resposta

Originalmente, Codd parece ter significado que nenhum valor é um conjunto. Este é um ponto de partida útil, mas “atômico” não tem significado ontológico quando se trata de bancos de dados (algo CJ Date está certo apontar). Codd tentou formalizar a definição como algo que não poderia ser decomposto fora das especificações operações de banco de dados ial (ou seja, um carimbo de data / hora é atômico porque extrair o ano é uma operação especial do banco de dados). Em outras palavras, se o banco de dados pode quebrar sub-valores, tudo bem. Mas você não deve ter conjuntos (listas não ordenadas) ou objetos que requerem lógica de aplicativo para quebrar.

Com o tempo e lutando com esse problema em ambientes operacionais, eu proporia uma definição intermediária de atomicidade, mais estrita que Codd e sem a toca do coelho que Date discute:

Um valor é atômico para fins de primeira forma normal se e somente se:

  1. O valor não é um conjunto (sim, Eu sei que Date discorda) e
  2. Não há referências de chave estrangeira para qualquer subparte do campo.

Em particular, a representação de um valor não pode determinar sua atomicidade. Representar um endereço IP como “10.0.0.1” vs ARRAY [10,0,0,1] vs 167772161 não importa para a análise 1NF, pois todos os três se referem ao mesmo valor atômico.

Em particular, comum (e às vezes útil!) As violações 1NF relacionadas à atomicidade incluem:

  1. Armazenamento de uma matriz de tags em uma postagem ou comentário de blog.
  2. Armazenamento de tabelas dentro de tabelas, onde a tabela interna tem um requisito de integridade referencial contra outra relação em outro lugar.

Esses problemas geram, mais ou menos, as mesmas anomalias de dados.

Resposta

Considere um local na Terra. Posso encontrá-lo com pares (longitude, latitude) ou com o código HTM (Hierarchical Triangular Mesh). Uma vez que ambos medem os mesmos dados. Este é um fato físico, que podemos medir com um telefone celular; traduz um número de grade em [longitude, latitude] para você), eles devem ser atômicos ou compostos em seu modelo.

Não confunda a escala usada para medição e notação usada para exibir os dados com o natureza dos dados.

Comentários

  • Eu editei esta postagem devido a alguns erros de digitação. Não ‘ não acredito que este usuário seja o verdadeiro Joe Celko, mas pesquisei por representação em meta.stackexchange.com e encontrei este discussão . Confira as respostas dos Srs. Atwood e Spolsky, os fundadores da stackexchange. Parece ser permissível.

Resposta

A chave atômica é aquele tipo de chave primária que não pode ser decomposta. significa que esta chave não é mais dividida, como Student_ID, Employee_ID.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *