2 532
edições
(→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 " | 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 | 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== |
edições