A 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 Database em profundidade: teoria relacional para praticantes trata essa questão de uma maneira muito fácil de entender.)
"Atomic" nunca significou realmente "indivisível", e é por isso que esse termo está finalmente caindo em desuso. Falando livremente, "atômico" significa que se um valor tem 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, é.)
"Atomic" refere-se à 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.
Nos SGBDs SQL modernos, a atomicidade não é realmente um problema. As tabelas SQL não permitem colunas multivaloradas e os valores são sempre "atômicos".
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.
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 que não pode ser dividida é conhecida como atômica.
Codd originalmente parece ter significado que nenhum valor é em si 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 que CJ Date está certo em apontar). Codd tentou formalizar a definição como algo que não poderia ser decomposto fora das operações especiais do banco de dados (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 puder quebrar subvalores, tudo bem. Mas você não deve ter conjuntos (listas não ordenadas) ou objetos que exijam a quebra da lógica do aplicativo.
Com o tempo e lutando com esse problema em ambientes operacionais, eu proporia uma definição intermediária de atomicidade, mais rigorosa 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:
O valor não é um conjunto (sim, eu sei que Date discorda) e
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, as violações comuns (e às vezes úteis!) da 1NF em relação à atomicidade incluem:
Armazenar uma matriz de tags em uma postagem de blog ou comentário.
Armazenar tabelas dentro de tabelas, onde a tabela interna tem um requisito de integridade referencial em relação a outra relação em outro lugar.
Esses problemas geram, mais ou menos, as mesmas anomalias de dados.
Isso significa que a chave não pode ser decomposta. Digamos que você tenha uma tabela com três colunas, nome próprio, sobrenome e telefone_número. Você declara uma chave primária composta em (nome próprio, sobrenome). Essa chave primária não é atômica porque na verdade é composta por duas colunas. Agora digamos que você altere sua tabela para duas colunas, full_name e phone_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 próprio e sobrenome ainda, no espaço. Agora vamos fazer nossa tabela id, full_name e phone_number, chave primária em id (que é um inteiro). Isso é atômico, porque o inteiro não pode ser decomposto significativamente.
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; ele traduz um número de grade em [longitude, latitude] para você), ambos 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 a natureza dos dados.
"Atômica" significa apenas qualquer coisa que não seja uma relação. A 1NF trata da eliminação de domínios que possuem relações como elementos. Qualquer coisa que não seja uma relação é permitida como valores.
Os valores atômicos são apenas atômicos no que diz respeito à álgebra relacional, por exemplo, você não pode projetar ou selecionar partes de um valor atômico da mesma forma que pode decompor uma relação.
Isso não significa que os valores atômicos sejam estritamente indivisíveis - por exemplo, bancos de dados podem ter funções para selecionar uma substring de uma string. Mas isso requer funções especiais. Você não pode decompor uma string apenas usando SELECT ou WHERE, como você pode fazer para uma tabela.
A chave atômica é aquele tipo de chave primária que não pode ser decomposta, o que significa que essa chave não é mais dividida, como Student_ID,Employee_ID.
A 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 Database em profundidade: teoria relacional para praticantes trata essa questão de uma maneira muito fácil de entender.)
"Atomic" nunca significou realmente "indivisível", e é por isso que esse termo está finalmente caindo em desuso. Falando livremente, "atômico" significa que se um valor tem 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.
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, é.)
"Atomic" refere-se à 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.
Nos SGBDs SQL modernos, a atomicidade não é realmente um problema. As tabelas SQL não permitem colunas multivaloradas e os valores são sempre "atômicos".
Atômico significa dados que não podem ser mais divididos.
Regra de atomicidade:
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 que não pode ser dividida é conhecida como atômica.
Codd originalmente parece ter significado que nenhum valor é em si 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 que CJ Date está certo em apontar). Codd tentou formalizar a definição como algo que não poderia ser decomposto fora das operações especiais do banco de dados (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 puder quebrar subvalores, tudo bem. Mas você não deve ter conjuntos (listas não ordenadas) ou objetos que exijam a quebra da lógica do aplicativo.
Com o tempo e lutando com esse problema em ambientes operacionais, eu proporia uma definição intermediária de atomicidade, mais rigorosa 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:
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, as violações comuns (e às vezes úteis!) da 1NF em relação à atomicidade incluem:
Esses problemas geram, mais ou menos, as mesmas anomalias de dados.
Isso significa que a chave não pode ser decomposta. Digamos que você tenha uma tabela com três colunas, nome próprio, sobrenome e telefone_número. Você declara uma chave primária composta em (nome próprio, sobrenome). Essa chave primária não é atômica porque na verdade é composta por duas colunas. Agora digamos que você altere sua tabela para duas colunas, full_name e phone_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 próprio e sobrenome ainda, no espaço. Agora vamos fazer nossa tabela id, full_name e phone_number, chave primária em id (que é um inteiro). Isso é atômico, porque o inteiro não pode ser decomposto significativamente.
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; ele traduz um número de grade em [longitude, latitude] para você), ambos 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 a natureza dos dados.
"Atômica" significa apenas qualquer coisa que não seja uma relação. A 1NF trata da eliminação de domínios que possuem relações como elementos. Qualquer coisa que não seja uma relação é permitida como valores.
Os valores atômicos são apenas atômicos no que diz respeito à álgebra relacional, por exemplo, você não pode projetar ou selecionar partes de um valor atômico da mesma forma que pode decompor uma relação.
Isso não significa que os valores atômicos sejam estritamente indivisíveis - por exemplo, bancos de dados podem ter funções para selecionar uma substring de uma string. Mas isso requer funções especiais. Você não pode decompor uma string apenas usando SELECT ou WHERE, como você pode fazer para uma tabela.
A chave atômica é aquele tipo de chave primária que não pode ser decomposta, o que significa que essa chave não é mais dividida, como Student_ID,Employee_ID.