Árvore de páginas

1. Não é permitido tabelas de movimento mais compartilhadas do que tabelas de cadastro

Em nenhuma parte do sistema é permito o uso de tabelas de movimentos mais compartilhadas do que as tabelas de cadastro.

Isso porque deixar a tabela de movimento mais compartilhada do que a tabela de cadastros causará quebra na integridade referencial das tabelas. 

Na verdade, esse conceito se aplica a quaisquer tabelas que possuam relacionamento 1:n (um para muitos). Pode ser cadastro x movimento, cabeçalho x item etc..


Por exemplo:

Tabelas: Cadastro de clientes (SA1) e títulos a receber (SE1)

Relacionamento: (relacionamento 1:n → isto é, deve existir um, e somente um registro de cadastro de clientes para muitos títulos a receber)

Compartilhamentos adequados: Mesmo nível de compartilhamento entre ambas as tabelas ou tabela de cadastros de clientes (SA1) mais compartilhada do que a tabela de títulos a receber (SE1).

O que ocorre se a tabela de títulos a receber for mais compartilhada do que a tabela de cadastro de clientes? Haverá margem para a existência de um registro na tabela de títulos a receber relacionada a mais de um cliente, quebrando a integridade referencial das tabelas.

Tabela SA1Tabela SE1Permitido?
CompartilhadoCompartilhadoSim
CompartilhadoExclusivoSim
ExclusivoCompartilhadoNão
ExclusivoExclusivoSim


Alguns exemplos de tabelas que possuem o relacionamento 1:n (um para muitos) no módulo financeiro incluem, mas não se limitam a:

Um registroPara muitos registros
SA1SE1
SA2

SE2

SA3SE1
SEHSE1
SEHSE2
SA6FK5
SA6SEE
SA6SEA
SA6SE8

Isso significa que SE1 não pode ser mais compartilhada do que SA1, SE2 não pode ser mais compartilhada do que SA2 e assim por diante.


Nota aos desenvolvedores

Tentar contornar cenários de compartilhamento indevido (talvez utilizando variáveis de ambiente ou campos MSFIL e FILORIG) acarretará em código de alta complexidade, criação de débitos técnicos e perda de performance. Essa prática não é recomendada. O relacionamento deve utilizar a chave estrangeira.

2. O que significa "mais compartilhada"?

Em ambientes configurados com gestão de empresas, o Protheus permite o compartilhamento das tabelas em três níveis diferentes: Empresa, Unidade de negócio e Filial. Quando uma tabela está compartilhada em mais níveis do que outra, dizemos que ela é mais compartilhada do que a outra.


Exemplo: Tabela SA1 mais compartilhada do que SE2

* C = Compartilhada, E = Exclusiva


TabelaSA1SE1
EmpresaCE
Unidade de negócioCE
FilialCE
TabelaSA1SE1
EmpresaCE
Unidade de negócioCE
FilialCC
TabelaSA1SE1
EmpresaCE
Unidade de negócioCC
FilialCC
TabelaSA1SE1
EmpresaEE
Unidade de negócioCE
FilialC

E

TabelaSA1SE1
EmpresaEE
Unidade de negócioCE
FilialC

C

TabelaSA1SE1
EmpresaEE
Unidade de negócioEE
FilialC

E

3. Como saber qual o relacionamento entre as tabelas?

Essa informação pode ser obtida na tabela de Relacionamentos (SX9).

Os campos Domínio (X9_DOM) e Contra Domínio (X9_CDOM) indicam as tabelas que estão sendo relacionadas, e os campos Cardinalidade do Domínio (X9_LIGDOM) e Cardinalidade do Contra Domínio (X9_LIGCDOM) indicam como é o relacionamento.

Ainda no exemplo de SA1 x SE1, vemos que o relacionamento é 1:n.

Mais informações: SX9 – Relacionamento entre tabelas

4. Outras informações

Compartilhamento de tabelas relacionadas ao Cadastro de Clientes


Importante

Qualquer alteração no dicionário de dados ou na estrutura do banco de dados deve ser feita por um Administrador de Banco de Dados (DBA) ou outro profissional igualmente qualificado.