Código Natural/Requisitos e motivações: mudanças entre as edições

Sem resumo de edição
(sections order)
Linha 2: Linha 2:


A seguir os '''problemas motivadores''' e '''requisitos''' utilizados originalmente para se obter a definição das operações essenciais.  Os requisitos são, indiretamente, soluções dos problemas.
A seguir os '''problemas motivadores''' e '''requisitos''' utilizados originalmente para se obter a definição das operações essenciais.  Os requisitos são, indiretamente, soluções dos problemas.
== Requisitos na representação interna  ==
Códigos em um banco de dados podem ser identificadores ou simples atributos (ex. hashes de integridade). A aplicação mais importante é a identificação única, que, tradicionalmente, nos bancos de dados é implementada través de números naturais, ditos "seriais", tipicamente em 32 ou 64 bits.
: Requisito '''R1.1''': ser um tipo de dado de ''n'' bits, com o código natural "embutido" em um número inteiro de comprimento ''m'' compatível, com diferença ''m-n'' a menor possível; e com implementações de alta performance em ''m''=32 e ''m''=64.
: Requisito '''R1.2''': oferecer uma função "'''sucessor(x)'''", que retorna o próximo ''x'' numa listagem ordenada; da maneira análoga que um contador numérico de "+1".
: Requisito '''R1.3''': permitir as ordenações lexicográfica (prioritária) e por nível (secundária). 
Através da ordenação lexicográfica é possível associar [[wikipedia:Nested set model|conjuntos aninhados]] a intervalos, e portanto realizar operações hierárquicas de alta performance fazendo uso apenas dos identificadores. Por isso R2.3 é de grande importância para "identificadores inteligentes", que preservam informação sobre a sua hierarquia.


== Requisitos na representação textual  ==
== Requisitos na representação textual  ==
Linha 7: Linha 18:
Números binários são representações válidas da [[wikipedia:positional notation|notação posicional numérica]] base2, e podem ser representados de forma mais compacta (mais amigável para o ser humano) através de bases maiores, tais como base8 (sistema octal) ou base10 (sistema decimal). Códigos, todavia, '''não possuem um sistema posicional adequado''', não existe um padrão para se representar todos os códigos naturais, nem sequer na base4 é possível.
Números binários são representações válidas da [[wikipedia:positional notation|notação posicional numérica]] base2, e podem ser representados de forma mais compacta (mais amigável para o ser humano) através de bases maiores, tais como base8 (sistema octal) ou base10 (sistema decimal). Códigos, todavia, '''não possuem um sistema posicional adequado''', não existe um padrão para se representar todos os códigos naturais, nem sequer na base4 é possível.


:Requisito '''R1.1'''. Essa "representação compacta e amigável para humanos" é necessária, e portanto é o primeiro requisito.
:Requisito '''R2.1'''. Essa "representação compacta e amigável para humanos" é necessária, e portanto é o primeiro requisito.


A escolha das bases mais adequadas, todavia, também requer justificativas: descritas em [[Código natural/Notação posicional]], e resultam em um conjunto limitado de bases, as quais se tornam requisitos:
A escolha das bases mais adequadas, todavia, também requer justificativas: descritas em [[Código natural/Notação posicional]], e resultam em um conjunto limitado de bases, as quais se tornam requisitos:


:Requisito '''R1.2'''.  Oferecer representações nas bases&nbsp;''N'' com <math>N \in \{4,8,16,32\}</math>; principalmente base&nbsp;16.
:Requisito '''R2.2'''.  Oferecer representações nas bases&nbsp;''N'' com <math>N \in \{4,8,16,32\}</math>; principalmente base&nbsp;16.


Outro problema é a '''ordem''': listagens de códigos representados em outras bases,  precisam seguir a mesma ordem que as listagens binárias, ou seja, a [[cadeia de bits#Ordenação_de_cadeias_de_bits|ordem lexicográfica natural dos bits]]. Isso porque códigos naturais, independentemente da representação, precisam '''exibir a ordem hierárquica''', de modo que "ramos da hierarquia" fiquem listados dentro de um intervalo único. Em <math>X_{2}</math> por exemplo iniciamos pelo 0, depois 00, depois 01, depois 1, etc. O ramo dos "filhos de 0" ficam ordenados no intervalo [0,00,01] da listagem lexicográfica. Os "filhos de 1" no intervalo [1,10,11].
Outro problema é a '''ordem''': listagens de códigos representados em outras bases,  precisam seguir a mesma ordem que as listagens binárias, ou seja, a [[cadeia de bits#Ordenação_de_cadeias_de_bits|ordem lexicográfica natural dos bits]]. Isso porque códigos naturais, independentemente da representação, precisam '''exibir a ordem hierárquica''', de modo que "ramos da hierarquia" fiquem listados dentro de um intervalo único. Em <math>X_{2}</math> por exemplo iniciamos pelo 0, depois 00, depois 01, depois 1, etc. O ramo dos "filhos de 0" ficam ordenados no intervalo [0,00,01] da listagem lexicográfica. Os "filhos de 1" no intervalo [1,10,11].


:Requisito '''R1.3'''. A ordenação de texto orientada a diferentes idiomas, num banco de dados relacional, é conhecida como [[wikipedia:Collation|''collation'']]; portanto é necessário estabelecer a ''collations'' adequadas a cada base de representação textual do código natural.
:Requisito '''R2.3'''. A ordenação de texto orientada a diferentes idiomas, num banco de dados relacional, é conhecida como [[wikipedia:Collation|''collation'']]; portanto é necessário estabelecer a ''collations'' adequadas a cada base de representação textual do código natural.
 
== Requisitos na representação interna  ==
Códigos em um banco de dados podem ser identificadores ou simples atributos (ex. hashes de integridade). A aplicação mais importante é a identificação única, que, tradicionalmente, nos bancos de dados é implementada través de números naturais, ditos "seriais", tipicamente em 32 ou 64 bits.
 
: Requisito '''R2.1''': ser um tipo de dado de 32 ou 64 bits, com fácil conversão para números inteiros de comprimento equivalente.
: Requisito '''R2.2''': oferecer uma função "'''sucessor(x)'''", que retorna o próximo ''x'' numa listagem ordenada, da maneira análoga que um contador numérico de "+1".
: Requisito '''R2.3''': permitir as ordenações lexicográfica (prioritária) e por nível (secundária). 
 
Através da ordenação lexicográfica é possível associar [[wikipedia:Nested set model|conjuntos aninhados]] a intervalos, e portanto realizar operações hierárquicas de alta performance fazendo uso apenas dos identificadores. Por isso R2.3 é de grande importância para "identificadores inteligentes", que preservam informação sobre a sua hierarquia.


== Problemas na representação textual baseN ==
== Problemas na representação textual baseN ==