Menu English Ukrainian Russo Início

Biblioteca técnica gratuita para amadores e profissionais Biblioteca técnica gratuita


Base de dados. Dados ausentes (mais importante)

Notas de aula, folhas de dicas

Diretório / Notas de aula, folhas de dicas

Comentários do artigo Comentários do artigo

Índice (expandir)

Aula nº 2. Dados ausentes

Dois tipos de valores são descritos em sistemas de gerenciamento de banco de dados para detectar dados ausentes: vazios (ou valores vazios) e indefinidos (ou valores nulos).

Em algumas literaturas (principalmente comerciais), os valores nulos às vezes são chamados de valores vazios ou nulos, mas isso é incorreto. O significado dos significados vazio e indefinido é fundamentalmente diferente, por isso é necessário monitorar cuidadosamente o contexto de uso de um determinado termo.

1. Valores vazios (Valores vazios)

valor vazio é simplesmente um dos muitos valores possíveis para algum tipo de dado bem definido.

Listamos os mais "naturais", imediatos valores vazios (ou seja, valores vazios que poderíamos alocar por conta própria sem ter nenhuma informação adicional):

1) 0 (zero) - valor nulo está vazio para tipos de dados numéricos;

2) false (errado) - é um valor vazio para um tipo de dado booleano;

3) B'' - cadeia de bits vazia para cadeias de comprimento variável;

4) "" - string vazia para strings de caracteres de comprimento variável.

Nos casos acima, você pode determinar se um valor é nulo ou não comparando o valor existente com a constante nula definida para cada tipo de dados. Mas os sistemas de gerenciamento de banco de dados, devido aos esquemas implementados neles para armazenamento de dados de longo prazo, só podem funcionar com strings de comprimento constante. Por causa disso, uma sequência vazia de bits pode ser chamada de sequência de zeros binários. Ou uma string consistindo de espaços ou qualquer outro caractere de controle é uma string vazia de caracteres.

Aqui estão alguns exemplos de strings vazias de comprimento constante:

1) B'0';

2) B'000';

3)''.

Como você pode saber se uma string está vazia nesses casos?

Em sistemas de gerenciamento de banco de dados, uma função lógica é usada para testar a vacuidade, ou seja, o predicado IsEmpty(<expressão>), que literalmente significa "comer vazio". Esse predicado geralmente é incorporado ao sistema de gerenciamento de banco de dados e pode ser aplicado a qualquer tipo de expressão. Se não houver tal predicado em sistemas de gerenciamento de banco de dados, você mesmo poderá escrever uma função lógica e incluí-la na lista de objetos do banco de dados que está sendo projetado.

Considere outro exemplo em que não é tão fácil determinar se temos um valor vazio. Dados do tipo data. Qual valor neste tipo deve ser considerado um valor vazio se a data pode variar no intervalo de 01.01.0100. antes de 31.12.9999/XNUMX/XNUMX? Para fazer isso, uma designação especial é introduzida no SGBD para constantes de data vazias {...}, se o valor desse tipo for escrito: {DD. MILÍMETROS. AA} ou {AA. MILÍMETROS. DD}. Com este valor, ocorre uma comparação ao verificar o valor de vazio. É considerado um valor "completo" bem definido de uma expressão desse tipo e o menor possível.

Ao trabalhar com bancos de dados, os valores nulos costumam ser usados ​​como valores padrão ou são usados ​​quando faltam valores de expressão.

2. Valores nulos

Palavra Nulo usado para denotar valores indefinidos em bancos de dados.

Para entender melhor quais valores são entendidos como nulos, considere uma tabela que é um fragmento de um banco de dados:

Assim, valor indefinido ou Valor nulo - isto é:

1) desconhecido, mas usual, ou seja, valor aplicável. Por exemplo, o Sr. Khairetdinov, que é o número um em nosso banco de dados, sem dúvida tem alguns dados de passaporte (como uma pessoa nascida em 1980 e um cidadão do país), mas eles não são conhecidos, portanto, não estão incluídos no banco de dados . Portanto, o valor Null será escrito na coluna correspondente da tabela;

2) valor não aplicável. O Sr. Karamazov (nº 2 em nosso banco de dados) simplesmente não pode ter nenhum dado de passaporte, porque no momento da criação deste banco de dados ou da entrada de dados nele, ele era uma criança;

3) o valor de qualquer célula da tabela, caso não possamos dizer se é aplicável ou não. Por exemplo, o Sr. Kovalenko, que ocupa a terceira posição no banco de dados compilado por nós, não sabe o ano de nascimento, então não podemos dizer com certeza se ele tem ou não os dados do passaporte. E consequentemente, os valores de duas células na linha dedicada ao Sr. Kovalenko serão Null-value (o primeiro - como desconhecido em geral, o segundo - como um valor cuja natureza é desconhecida). Como qualquer outro tipo de dados, os valores Null também possuem certas Propriedades. Listamos os mais significativos deles:

1) ao longo do tempo, a compreensão do valor Null pode mudar. Por exemplo, para o Sr. Karamazov (Nº 2 em nosso banco de dados) em 2014, ou seja, ao atingir a maioridade, o valor Nulo mudará para algum valor específico e bem definido;

2) O valor nulo pode ser atribuído a uma variável ou constante de qualquer tipo (numérico, string, booleano, data, hora, etc.);

3) o resultado de qualquer operação em expressões com valores nulos como operandos é um valor nulo;

4) uma exceção à regra anterior são as operações de conjunção e disjunção sob as condições das leis de absorção (para mais detalhes sobre as leis de absorção, ver parágrafo 4 da aula nº 2).

3. Valores nulos e a regra geral para avaliar expressões

Vamos falar mais sobre ações em expressões contendo valores nulos.

A regra geral para lidar com valores Nulos (que o resultado das operações em valores Nulos é um valor Nulo) se aplica às seguintes operações:

1) à aritmética;

2) às operações de negação, conjunção e disjunção bit a bit (exceto para as leis de absorção);

3) para operações com strings (por exemplo, concatenação - concatenação de strings);

4) às operações de comparação (<, ≤, ≠, ≥, >).

Vamos dar exemplos. Como resultado da aplicação das seguintes operações, serão obtidos valores nulos:

3 + Nulo, 1/ Nulo, (Ivanov' + '' + Nulo) ≔ Nulo

Aqui, em vez da igualdade usual, usamos operação de substituição "≔" devido à natureza especial de trabalhar com valores nulos. A seguir, este símbolo também será usado em situações semelhantes, o que significa que a expressão à direita do caractere curinga pode substituir qualquer expressão da lista à esquerda do caractere curinga.

A natureza dos valores nulos geralmente resulta em algumas expressões produzindo um valor nulo em vez do nulo esperado, por exemplo:

(x - x), y * (x - x), x * 0 ≔ Nulo quando x = Nulo.

O fato é que ao substituir, por exemplo, na expressão (x - x) os valores x = Null, obtemos a expressão (Null - Null), e a regra geral para calcular o valor da expressão contendo valores Null ​​entre em vigor, e a informação sobre o fato de que aqui o valor Null corresponde à mesma variável é perdida.

Pode-se concluir que ao calcular quaisquer operações que não sejam booleanos, os valores nulos são interpretados como inaplicável, e, portanto, o resultado também é um valor Null.

O uso de valores nulos em operações de comparação não leva a resultados menos inesperados. Por exemplo, as seguintes expressões também produzem valores nulos em vez dos valores booleanos True ou False esperados:

(Nulo < Nulo); (Nulo nulo); (Nulo = Nulo); (Nulo ≠ Nulo);

(Nulo > Nulo); (Nulo ≥ Nulo) ≔ Nulo;

Assim, concluímos que é impossível dizer que um valor Null é igual ou não igual a si mesmo. Cada nova ocorrência de um valor Null é tratada como independente, e cada vez que os valores Null são tratados como valores desconhecidos diferentes. Nisso, os valores nulos são fundamentalmente diferentes de todos os outros tipos de dados, porque sabemos que era seguro dizer sobre todos os valores passados ​​anteriormente e seus tipos que são iguais ou não iguais entre si.

Assim, vemos que os valores Nulos não são os valores das variáveis ​​no sentido usual da palavra. Portanto, torna-se impossível comparar os valores de variáveis ​​ou expressões que contenham valores Null, pois como resultado receberemos não os valores booleanos True ou False, mas valores Null, como nos exemplos a seguir:

(x < Nulo); (x nulo); (x=Nulo); (x ≠ Nulo); (x > Nulo);

(x ≥ Nulo) ≔ Nulo;

Portanto, por analogia com valores vazios, para verificar uma expressão para valores Nulos, você deve usar um predicado especial:

IsNull(<expressão>), que significa literalmente "é Nulo".

A função booleana retorna True se a expressão contiver Null ou for Null, e False caso contrário, mas nunca retornará Null. O predicado IsNull pode ser aplicado a variáveis ​​e expressões de qualquer tipo. Quando aplicado a expressões do tipo vazio, o predicado sempre retornará False.

Por exemplo:

Então, de fato, vemos que no primeiro caso, quando o predicado IsNull foi tirado de zero, a saída acabou sendo False. Em todos os casos, incluindo o segundo e o terceiro, quando os argumentos da função lógica eram iguais ao valor Null, e no quarto caso, quando o próprio argumento era inicialmente igual ao valor Null, o predicado retornava True.

4. Valores nulos e operações lógicas

Normalmente, apenas três operações lógicas são suportadas diretamente em sistemas de gerenciamento de banco de dados: negação ¬, conjunção & e disjunção ∨. As operações de sucessão ⇒ e equivalência ⇔ são expressas em termos delas usando substituições:

(x ⇒ y) ≔ (¬x ∨ y);

(x ⇔ y) ≔ (x ⇒ y) & (y ⇒ x);

Observe que essas substituições são totalmente preservadas ao usar valores nulos.

Curiosamente, usando o operador de negação "¬" qualquer uma das operações conjunção & ou disjunção ∨ pode ser expressa uma através da outra da seguinte forma:

(x & y) ≔¬ (¬x ∨¬y);

(x ∨ y) ≔ ¬(¬x & ¬y);

Essas substituições, assim como as anteriores, não são afetadas por valores nulos.

E agora apresentamos as tabelas verdade das operações lógicas de negação, conjunção e disjunção, mas além dos habituais valores Verdadeiro e Falso, também usamos o valor Nulo como operandos. Por conveniência, introduzimos a seguinte notação: em vez de True, escreveremos t, em vez de False - f, e em vez de Null - n.

1. Negação XX.

Vale a pena notar os seguintes pontos interessantes sobre a operação de negação usando valores Null:

1) ¬¬x ≔ x - a lei da dupla negação;

2) ¬Null ≔ Null - O valor Null é um ponto fixo.

2. Conjunção x & y.

Esta operação também tem suas próprias propriedades:

1) x & y ≔ y & x - comutatividade;

2) x & x ≔ x - idempotência;

3) False & y ≔ False, aqui False é um elemento absorvente;

4) True & y ≔ y, aqui True é o elemento neutro.

3. Disjunção xy.

Свойства:

1) x ∨ y ≔ y ∨ x - comutatividade;

2) x ∨ x ≔ x - idempotência;

3) False ∨ y ≔ y, aqui False é o elemento neutro;

4) True ∨ y ≔ True, aqui True é um elemento absorvente.

Uma exceção à regra geral são as regras para calcular as operações lógicas conjunção & e disjunção ∨ sob as condições de ação leis de absorção:

(Falso & y) ≔ (x & Falso) ≔ Falso;

(Verdadeiro ∨ y) ≔ (x ∨ Verdadeiro) ≔ Verdadeiro;

Essas regras adicionais são formuladas para que, ao substituir um valor Null por False ou True, o resultado ainda não dependa desse valor.

Conforme mostrado anteriormente para outros tipos de operações, usar valores Null em operações Booleanas também pode resultar em valores inesperados. Por exemplo, a lógica à primeira vista é quebrada em a lei da exclusão do terceiro (x ∨ ¬x) e a lei da reflexividade (x = x), pois para x ≔ Null temos:

(x ∨ ¬x), (x = x) ≔ Nulo.

As leis não são cumpridas! Isso é explicado da mesma forma que antes: quando um valor Nulo é substituído em uma expressão, a informação de que esse valor é informado pela mesma variável é perdida, e a regra geral para trabalhar com valores Nulos entra em vigor.

Assim, concluímos: ao realizar operações lógicas com valores Nulos como operando, esses valores são determinados pelos sistemas gerenciadores de banco de dados conforme aplicável, mas desconhecido.

5. Valores nulos e verificação de condição

Assim, do exposto, podemos concluir que na lógica dos sistemas de gerenciamento de banco de dados não existem dois valores lógicos (True e False), mas três, pois o valor Null também é considerado como um dos possíveis valores lógicos. É por isso que muitas vezes é referido como o valor desconhecido, o valor desconhecido.

No entanto, apesar disso, apenas a lógica de dois valores é implementada em sistemas de gerenciamento de banco de dados. Portanto, uma condição com valor Null (uma condição indefinida) deve ser interpretada pela máquina como True ou False.

Por padrão, a linguagem DBMS reconhece uma condição com um valor Null como False. Ilustramos isso com os seguintes exemplos da implementação de instruções condicionais If e While em sistemas de gerenciamento de banco de dados:

Se P então A mais B;

Essa entrada significa: se P for avaliado como Verdadeiro, a ação A será executada e se P for avaliado como Falso ou Nulo, a ação B será executada.

Agora aplicamos a operação de negação a este operador, obtemos:

Se ¬P então B senão A;

Por sua vez, este operador significa o seguinte: se ¬P for avaliado como Verdadeiro, então a ação B será executada, e se ¬P for avaliado como Falso ou Nulo, então a ação A será executada.

E novamente, como podemos ver, quando um valor Null aparece, encontramos resultados inesperados. O ponto é que as duas instruções If neste exemplo não são equivalentes! Embora um deles seja obtido do outro negando a condição e reorganizando os ramos, ou seja, pela operação padrão. Tais operadores são geralmente equivalentes! Mas em nosso exemplo, vemos que o valor Null da condição P no primeiro caso corresponde ao comando B e no segundo - A.

Agora considere a ação da instrução condicional while:

Enquanto P faz A; B;

Como funciona este operador? Enquanto P for True, a ação A será executada, e assim que P for False ou Null, a ação B será executada.

Mas os valores Null nem sempre são interpretados como False. Por exemplo, em restrições de integridade, as condições indefinidas são reconhecidas como Verdadeiras (restrições de integridade são condições impostas aos dados de entrada e garantem sua correção). Isso ocorre porque em tais restrições apenas dados deliberadamente falsos devem ser rejeitados.

E, novamente, em sistemas de gerenciamento de banco de dados, há uma função de substituição IfNull(restrições de integridade, True), com o qual valores nulos e condições indefinidas podem ser representados explicitamente.

Vamos reescrever as instruções condicionais If e While usando esta função:

1) Se IfNull ( P, False) então A else B;

2) Enquanto IfNull(P, False) faça A; B;

Portanto, a função de substituição IfNull(expressão 1, expressão 2) retorna o valor da primeira expressão se ela não contiver um valor Nulo e, caso contrário, o valor da segunda expressão.

Deve-se notar que nenhuma restrição é imposta ao tipo da expressão retornada pela função IfNull. Portanto, usando essa função, você pode substituir explicitamente quaisquer regras para trabalhar com valores nulos.

<< Voltar: Introdução (Sistemas de gerenciamento de banco de dados. Bancos de dados relacionais)

>> Encaminhar: Objetos de dados relacionais (Requisitos para a forma tabular de representação de relacionamentos. Domínios e atributos. Esquemas de relacionamento. Valores nomeados de tuplas. Tuplas. Tipos de tuplas. Relações. Tipos de relacionamentos)

Recomendamos artigos interessantes seção Notas de aula, folhas de dicas:

Microbiologia. Berço

direito da UE. Berço

Farmacologia. Berço

Veja outros artigos seção Notas de aula, folhas de dicas.

Leia e escreva útil comentários sobre este artigo.

<< Voltar

Últimas notícias de ciência e tecnologia, nova eletrônica:

A existência de uma regra de entropia para o emaranhamento quântico foi comprovada 09.05.2024

A mecânica quântica continua a nos surpreender com seus fenômenos misteriosos e descobertas inesperadas. Recentemente, Bartosz Regula do Centro RIKEN de Computação Quântica e Ludovico Lamy da Universidade de Amsterdã apresentaram uma nova descoberta que diz respeito ao emaranhamento quântico e sua relação com a entropia. O emaranhamento quântico desempenha um papel importante na moderna ciência e tecnologia da informação quântica. No entanto, a complexidade da sua estrutura torna a sua compreensão e gestão um desafio. A descoberta de Regulus e Lamy mostra que o emaranhamento quântico segue uma regra de entropia semelhante à dos sistemas clássicos. Esta descoberta abre novas perspectivas na ciência e tecnologia da informação quântica, aprofundando a nossa compreensão do emaranhamento quântico e a sua ligação à termodinâmica. Os resultados do estudo indicam a possibilidade de reversibilidade das transformações de emaranhamento, o que poderia simplificar muito seu uso em diversas tecnologias quânticas. Abrindo uma nova regra ... >>

Mini ar condicionado Sony Reon Pocket 5 09.05.2024

O verão é uma época de relaxamento e viagens, mas muitas vezes o calor pode transformar essa época em um tormento insuportável. Conheça um novo produto da Sony – o minicondicionador Reon Pocket 5, que promete deixar o verão mais confortável para seus usuários. A Sony lançou um dispositivo exclusivo - o minicondicionador Reon Pocket 5, que fornece resfriamento corporal em dias quentes. Com ele, os usuários podem desfrutar do frescor a qualquer hora e em qualquer lugar, simplesmente usando-o no pescoço. Este miniar condicionado está equipado com ajuste automático dos modos de operação, além de sensores de temperatura e umidade. Graças a tecnologias inovadoras, o Reon Pocket 5 ajusta o seu funcionamento em função da atividade do utilizador e das condições ambientais. Os usuários podem ajustar facilmente a temperatura usando um aplicativo móvel dedicado conectado via Bluetooth. Além disso, camisetas e shorts especialmente desenhados estão disponíveis para maior comodidade, aos quais um mini ar condicionado pode ser acoplado. O dispositivo pode, oh ... >>

Energia do espaço para Starship 08.05.2024

A produção de energia solar no espaço está se tornando mais viável com o advento de novas tecnologias e o desenvolvimento de programas espaciais. O chefe da startup Virtus Solis compartilhou sua visão de usar a Starship da SpaceX para criar usinas orbitais capazes de abastecer a Terra. A startup Virtus Solis revelou um ambicioso projeto para criar usinas de energia orbitais usando a Starship da SpaceX. Esta ideia poderia mudar significativamente o campo da produção de energia solar, tornando-a mais acessível e barata. O cerne do plano da startup é reduzir o custo de lançamento de satélites ao espaço usando a Starship. Espera-se que este avanço tecnológico torne a produção de energia solar no espaço mais competitiva com as fontes de energia tradicionais. A Virtual Solis planeja construir grandes painéis fotovoltaicos em órbita, usando a Starship para entregar os equipamentos necessários. Contudo, um dos principais desafios ... >>

Notícias aleatórias do Arquivo

AMD Radeon R9 290 09.11.2013

Após o anúncio em outubro do principal acelerador Radeon R9 290X e uma semana adicional de atraso, a AMD finalmente revelou oficialmente seu segundo acelerador gráfico, que é baseado no mesmo novo chip Hawaii de 28nm com 6,2 bilhões de transistores. No entanto, para reduzir o custo da solução para essas placas de vídeo, foram selecionados chips que operam em menor frequência e possuem unidades de computação desabilitadas.

Como resultado, a placa de vídeo recebeu 2560 processadores de fluxo em vez de 2816 em uma frequência central de até 947 MHz (em vez de 1000 MHz) e um desempenho de computação de pico de 4,9 teraflops. A AMD também está posicionando este acelerador em telas com resolução 4K (Ultra HD) - o número de unidades de operações raster (ROP) permaneceu inalterado em relação ao carro-chefe - 64 (a Radeon HD 7970 possui apenas 32 delas). No entanto, o número de unidades de textura (TMU) foi ligeiramente reduzido - de 176 para 160. Assim como a Radeon R9 290X, a AMD recomenda testar o novo acelerador em resolução Ultra HD - segundo ele, em resolução 4K você pode descobrir qual o solução é realmente capaz de.

Outras características do R9 290 permanecem inalteradas em comparação com o R9 290X: a interface de 512 bits fornece uma taxa de transferência de até 320 GB / s, a quantidade de memória GDDR5 é de 4 GB a 1250 MHz.

A AMD Radeon R9 290, como o acelerador principal, se adapta bem no modo CrossFire. Ao contrário dos aceleradores anteriores da empresa, na série R9 290 os aceleradores interagem sem uma ponte Crossfire especial - toda a comunicação ocorre através de um slot PCIe, e isso não afeta a qualidade do trabalho e o desempenho, mas permite colocar placas de vídeo mais livremente no caso.

A Radeon R9 290 (juntamente com a R9 290X e R7 260X) suporta a nova tecnologia de áudio programável TrueAudio, projetada para levar o ambiente sonoro dos jogos a um nível totalmente novo. A AMD compara TrueAudio em áudio com shaders programáveis ​​em gráficos. TrueAudio será suportado em muitos mecanismos de áudio de jogos. Os primeiros títulos para apoiar a tecnologia incluem Thief da Eidos, Lichdom da Xaviant, Star Citizen da Cloud Imperium Games e Murdered Soul Suspect da Square Enix/AirTight.

O preço esperado do acelerador Radeon R9 290 no mercado norte-americano deve ficar em torno de US$ 450. Em nossa área, a popularidade da solução dependerá de quão grande será a diferença no preço de varejo em comparação com uma placa de vídeo Radeon R9 290X completa.

Outras notícias interessantes:

▪ A eletrônica avaliará o tom do usuário do computador

▪ Pessoas criativas gostam de perder tempo.

▪ Novo Modelo de Expansão do Universo

▪ café protege o coração

▪ Carros Volkswagen com informações projetadas na estrada

Feed de notícias de ciência e tecnologia, nova eletrônica

 

Materiais interessantes da Biblioteca Técnica Gratuita:

▪ seção do site Aforismos de pessoas famosas. Seleção de artigos

▪ artigo Artful Albion. expressão popular

▪ artigo Por que um espelho é considerado perigoso? Resposta detalhada

▪ artigo Turner. Instrução padrão sobre proteção do trabalho

▪ artigo Controlador de velocidade do ventilador PSU. Enciclopédia de rádio eletrônica e engenharia elétrica

▪ artigo Regulador de potência de carga controlado por tensão. Enciclopédia de rádio eletrônica e engenharia elétrica

Deixe seu comentário neste artigo:

Имя:


E-mail opcional):


Comentário:





Todos os idiomas desta página

Página principal | Biblioteca | Artigos | Mapa do Site | Revisões do site

www.diagrama.com.ua

www.diagrama.com.ua
2000-2024