[firebase-br] modelo de dados auto relacionamento ou hierarquivo

Gustavo Novaes gutonovaes19 em gmail.com
Qua Ago 7 14:44:51 -03 2019


Boa tarde.

Tenho um modelo de dados , atualmente, com chaves compostas, semelhante à
um plano de contas e que funciona em um banco paradox. (estou migrando para
FB).

TABELA NIVEL1 - CODIGO (8), NOME(30) -------(código, aqui é "gerado" pelo
usuário, ele escolhe. Algumas empresas usam siglas)
TABELA NIVEL2 - CODNIVEL1(A,8-FK), CODIGO(A,8), NOME(30).
TABELA NIVEL3 - CODNIVEL1(A,8-FK), CODNIVEL2(A,8-FK), NIVEL3 (A,8),
NOME(A,30).

Embora soubesse não ser adequado, ou muito inadequado e perigoso, pretendia
manter esse modelo na migração da aplicação para o FB por razões diversas.
Porém, eu já vinha recebendo alertas de colegas que poderia resultar em um
banco mais pesado, ter problemas de performance, etc. Após do FDD 16 e com
a explicação da seletividade , dentre outras informações, achei melhor
modificar esse modelo.
Não tenho certeza se um modelo auto-relacionamento seria mais adequado ou
se mantenho 3 tabelas relacionadas entre si, referenciando a ancestral
através de sua ID.

Exemplo:

Auto-relacionamento

TABELA NIVEL - ID(INTEGER, NOME(CHAR,30), CODIGO_DO_USUARIO(CHAR,8 -
UNIQUE), idAncestral(Integer, permite NULL)


Modelo aninhado

TABELA NIVEL1 - ID (integer), NOME (CHAR,30) , CODIGO_DO_USUÁRIO(CHAR,8 -
UNIQUE);

TABELA NIVEL2 - ID(integer) NOME (CHAR,30), CODIGO_DO_USUARIO9CHAR,8) -
UNIQUE), idNivel1(integer-FK pra tabela nivel1);

TABELA NIVEL3 - ID(integer) NOME (CHAR,30), CODIGO_DO_USUARIO9CHAR,8) -
UNIQUE), idNivel2(integer-FK pra tabela nivel2);


Essas tabelas são chaves-estrangeiras para outras do banco de dados.
Atualmente ocupam 48 caracteres (2 bytes por caracter? é isso?)
Pesquisando da web vi modelos de dados onde, na chave primaria, foi
utilizado (char,10). Mas, se eu fosse aplicar na minha "necessidade", não
teria como garantir a exclusividade da PK, certo?

Por fim, vi um artigo que sugere usar uma classe do delphi chamada TGui
para gerar códigos exclusivos.

Grato pela ajuda. Abraços.



*Gustavo Novaes *



Mais detalhes sobre a lista de discussão lista