Código Natural/Identificação taxonômica: mudanças entre as edições

→‎Taxonomias Base N: add atribuicao de ID
(→‎Taxonomias Base N: add atribuicao de ID)
Linha 1: Linha 1:
Identificadores únicos, tais como [https://www.postgresql.org/docs/current/functions-sequence.html contadores sequenciais em bases de dados], são fundamentais para a indexação e controle de registros. O ideal, todavia, é que esse identificador traga embutida alguma informação relativa à taxonomia da entidade identificada. Isso porque '''os identificadores de grupos taxonômicos também precisam ser únicos e padronizados'''.
Identificadores únicos, tais como [https://www.postgresql.org/docs/current/functions-sequence.html contadores sequenciais em bases de dados], são fundamentais para a indexação e controle de registros. O ideal, todavia, é que esse identificador traga embutida alguma informação relativa à taxonomia da entidade identificada. Isso porque '''os identificadores de grupos taxonômicos também precisam ser únicos e padronizados'''.


A ilustração do conjunto de frutas ajuda a entender os agrupamentos (taxons).
A ilustração do conjunto de frutas ajuda a entender os agrupamentos ([https://schema.org/Taxon taxons]).


==Taxonomias bit a bit==
==Taxonomias bit a bit==
Linha 17: Linha 17:
[[Arquivo:NatCod-Taxons-p1.png|centro|480px]]
[[Arquivo:NatCod-Taxons-p1.png|centro|480px]]


Se o conjunto dos identificadores de fruta for ordenado lexicograficamente, cada "ramo da árvore taxonômica" (prefixo) corresponderá a um único intervalo.   
Se o conjunto dos '''identificadores''' de fruta for ordenado '''lexicograficamente''' ([[Código natural#Ordenações_lexicográfica_e_numérica|''preorder'']]), '''cada ''taxon'' corresponderá a um único intervalo'''. Lembrando que os ''taxons'' são os "ramos da árvore taxonômica", associados aos prefixos. Na ilustração os IDs de maçã estão no intervalo <code>0</code> até <code>011</code>, o subconjunto das maçãs verdes no subintervalo <code>01</code> até <code>011</code>, e os IDs de laranja de <code>1</code> até <code>111</code>.
 
Como boa prática para identificação pode-se evitar IDs com ''contador'' vazio: os IDs da ilustração saltam os códigos <code>0</code>, <code>1</code> e  <code>01</code>.   
   
   
===Reserva de bits para o prefixo do contador===
===Reserva de bits para o prefixo do contador===
Linha 40: Linha 42:


===Contadores numéricos===
===Contadores numéricos===
Na sintaxe "<code>$prefixo$contador</code>", o contador pode ser representado como número. Computacionalmente o ID é um código, seu prefixo um código (fixo ou condicional), e por fim o contador, depois de isolado (ainda como código) pode sofrer ''cast'' para um número inteiro positivo.
Na sintaxe "<code>$prefixo$contador</code>", o contador pode ser representado como número. Computacionalmente o ID é um código, seu prefixo um código, e por fim o contador, depois de isolado (ainda como código) pode sofrer ''cast'' para um número inteiro positivo.


Sendo um número, podemos calcular o sucessor <code>succ($contador)</code> através da aritmética usual, <code>$contador+1</code>.
Sendo um número, podemos calcular o sucessor <code>succ($contador)</code> através da aritmética usual, <code>$contador+1</code>.
Linha 94: Linha 96:
|101||'''2'''Q||Organge (illustrated)
|101||'''2'''Q||Organge (illustrated)
|}
|}
=== Atribuição dos IDs dentro de uma taxonomia ===
:Supor que a partir de ''k'' bits, digamos ''k''=4, seja possível destacar prefixos válidos para conjuntos e subconjuntos alinhados.
[[Arquivo:NatCod-taxon-ilustraSetsB4h.png|centro|semmoldura|480x480px]]
Imaginemos o caso de uma pequena ''loja de departamentos'', que começou por organizar os produtos mais vendidos: frutas e roupas. Entre as frutas, as mais vendidas são as maçãs, e entre as roupas, os jeans, as camisetas e alguns tipos de roupa feminina.
Olhando para a "régua '''base 4h'''" acima decidimos que frutas ficarão todas com o prefixo <code>0</code>, sendo as maçãs com <code>00</code> e as demais frutas com prefixos <code>01</code>, <code>02</code> e <code>03</code>. Os prefixos 1 e <code>2</code> ficam reservados a outros produtos, e o prefixo <code>3</code> ficou com as roupas.
Cada uma dessas ''classes de produtos'' foi destacado abaixo num diagrama de conjuntos, e os prefixos eleitos indicados no ponto interior mais à esquerda de cada conjunto. No ponto interior mais à direita, o limite superior que uma ''instância'' daquela classe de produto pode receber como identificador único.
[[Arquivo:NatCod-taxon-produtos1.png|centro|miniaturadaimagem|680x680px|Códigos Naturais de 11 bits na base 4h: de <code>0</code> até <code>33333Q</code>, identificando produtos.
Futas: prefixo <code>0</code>. Roupas: prefixo <code>3</code>. Demais produtos: prefixos <code>1</code> e <code>2</code> disponíveis. Maçãs: prefixo <code>00</code>. Demais frutas: prefixos <code>01</code>, <code>02</code> e  <code>03</code> disponíveis.
Maçãs vermelhas, 🍎, prefixo <code>000</code>; maçãs verdes, 🍏, prefixo <code>001</code>.Roupas de mulher, prefixo <code>30</code>: vestidos,👗,<code>300</code>; camisas femininas,👚, <code>302</code>. Demais roupas:
camisetas,👕, prefixo <code>31</code>, e jeans, 👖, prefixo <code>32</code>. Cada maçã vermelha recebe um ID no intervalo <code>000</code> até <code>00033Q</code>; cada maçã verde de <code>001</code> até <code>00133Q</code>; ...;  cada jeans de <code>32</code> até <code>32333Q</code>. ]]
Neste cenário, no inventário inicial foram suficientes 11 bits para identificar todos os produtos com seus prefixos. Por exemplo os IDs das maçãs vermelhas ficaram no intervalo <code>000</code> até <code>00033Q</code>. A ampliação do banco de dados, adotando o dobro, 22 bits, acarretou a ampliação do intervalo da mesma classe, seus IDs passaram a ser de <code>000</code> até <code>00033333333</code>. '''O aumento de bits não afeta os identificadores''', apenas amplia a possibilidade de incluir mais produtos dentro da mesma classe.


==Identificadores sem contador==
==Identificadores sem contador==
2 532

edições