4D v16.3

Propriedades de Relações

Página Inicial

 
4D v16.3
Propriedades de Relações

Propriedades de Relações  


 

 

Sempre se desenha uma relação da tabela Muitos a tabela Um.


Os campos relacionados devem ser do mesmo tipo. É possível utilizar estes tipos de campos para os campos chave primária e chave estrangeira:

  • string (Alfa e Texto)
  • numérico (Real, Inteiro, Inteiro longo, Inteiro 64 bits e Float),
  • Hora
  • Booleano
  • Data

Os campos chave primária em geral estão indexados (não obrigatório). As propriedades da relação podem ser configuradas usando  Inspetor ou, em certos casos, usando o menu contextual que aparece quando você clica numa relação com o botão direito.

A área de definição identifica os campos chaves estrangeira e primária.

  • De: O campo “De” é o campo chave estrangeira da tabela Muitos para esta relação. No menu contextual, este campo se chama “campo fonte.”
  • Até: O campo “Até” é o campo chave primária da tabela Um. No menu contextual, este campo se chama “campo destino”. Você traça a relação do campo chave estrangeira da tabela Muitos até o campo chave primária na tabela Um.
  • Cor: Este menu pop up permite definir a cor de uma relação tal como será exibida no editor de estrutura. A cor de uma relação não está associada as suas propriedades.
    A cor de uma relação também pode ser definida utilizando o menu contextual das relações.

As opções Muitos para Um permitem definir o funcionamento da relação quando se abre um registro da tabela Muitos.

  • Nome: Área de entrada do nome da relação Muito para Um (opcional).
    Nota: como parte de um link 4D Mobile, este nome se utiliza para criar um atributo relacional correspondente no modelo junto Wakanda (ver Uso de relações no manual 4D Mobile). Neste caso, deve utilizar um nome que é compatível com as regras JavaScript.
  • Manual/Automática: Este menu permite definir o modo de funcionamento da relação que associa a tabela Muitos a tabela Um. Ao selecionar a opção Automática, as funções de automatização serão ativadas. Por exemplo, quando um registro da tabela [EMPREGADOS] é aberto no ambiente Aplicação, o registro da empresa correspondente é selecionado na tabela [Empresas]. Isto permite a 4D mostrar a informação sobre a empresa para a qual trabalha o empregado.
    Por padrão, é selecionada a opção Manual. Neste caso, você deve administrar a carga e descarga do registro relacionado da tabela Um utilizando as rotinas da linguagem.
    Para maiores informações, consulte o parágrafo Relações manuais e automáticas.
    A propriedade Relação automática Um também pode ser definida através do menu contextual das relações.
  • Lista de registros relacionados: Esta opção tem o efeito de inserir, automaticamente e de maneira invisível, o caractere (@) a todo valor introduzido na tabela Muitos quando o usuário pressiona a tecla Tab ou clica fora do campo. Se o usuário introduz um valor parcial, 4D busca um valor correspondente no campo relacionado da tabela Um. Se o programa encontra somente um valor possível, completa a entrada. Se for encontrado mais de um valor possível, dá ao usuário a lista de valores possíveis.
  • Advertir se registro Um não existe: Se esta opção estiver selecionada, 4D mostra uma caixa de diálogo que permite ao usuário criar o registro Um relacionado se não existir. Por padrão, quando você introduzir um valor em um campo relacionado da tabela Muitos, 4D verifica se existe um registro correspondente na tabela Um relacionada. Se 4D não o encontra, aparece a caixa de diálogo a seguir:

    Esta caixa de diálogo permite criar um registro correspondente na tabela Um enquanto introduz um registro na tabela Muitos. Por exemplo, imagine que seu banco contém uma tabela [Faturas] e uma tabela [Clientes]. Se você introduzir uma fatura na tabela [Faturas] e o cliente a quem está destinada a fatura não tem um registro correspondente na tabela [Clientes] quando valide o registro da tabela [Faturas]. 
    É possível eliminar esta caixa de diálogo deselecionando a opção Advertir se registro Um não existe. Eliminar esta caixa de diálogo é útil quando se deseja controlar a criação do registro Um relacionado utilizando um método.
  • Campo discriminante
    A lista de campos discriminantes permite selecionar um campo adicional para mostrar na lista de valores (que aparece quando usuário escreve o caractere curinga (@) no campo relacionado durante a entrada de dados). Geralmente, é melhor selecionar o campo que melhor identifique ao registro.
    Assim é como funciona esta opção durante a entrada de dados: 4D permite ao usuário consultar os valores da tabela Um enquanto introduz dados no campo chave estrangeira na tabela Muitos. O usuário simplesmente usa o caractere curinga (@) padrão no campo relacionado. Ao fazê-lo, 4D busca a entrada correspondente na tabela Um relacionada.
    O caractere curinga pode ser utilizado de duas formas: para completar uma entrada parcial ou para mostrar a lista de valores válidos. Quando se mostra uma lista, o usuário pode selecionar o valor da lista. Um campo adicional, o campo discriminante, pode ser mostrado junto ao campo relacionado.
    Por exemplo, imagine que o usuário está criado um registro na tabela [Empregados]. Em vez de escrever Acme no campo Empresa, o usuário pode escrever Ac@ e logo pressionar a tecla Tab para passar ao próximo campo. Como @ é o caractere curinga de 4D, esta entrada  significa que “o valor começa por “Ac” e está seguido por outros caracteres”. 4D busca na tabela relacionada o registro que corresponda a este critério. Se só encontra um registro, completa a entrada automaticamente e passa o próximo campo na ordem de entrada do formulário.
    A imagem a seguir mostra este tipo de uso dos caracteres curinga.

    Se 4D encontra mais de um valor que corresponda ao critério, mostra uma lista de valores para que o usuário possa selecionar o valor apropriado. A imagem a seguir mostra a lista:

    É possível especificar um segundo campo que será mostrada na lista para ajudar ao usuário a decidir que empresa selecionar. O segundo campo é o campo discriminante que você selecionou na caixa de diálogo de definição do tipo de relação.
    A imagem a seguir mostra a lista de empresas junto com sua cidade. Este campo discriminante ajuda ao usuário a selecionar a entrada correta se não se lembra o nome da empresa, mas se lembra a cidade em que está localizada.
    Para ver uma listagem completa de todas as empresas na tabela [Empresas], o usuário digita apenas @. 4D exibe uma lista de todas as companhias para que o usuário escolha a correta. A figura abaixo mostra uma lista de companhias sendo exibida:

    A janela de seleção de registros pode ser redimensionadas.
    Para ver uma lista de todas as empresas na tabela [Empresas], o usuário deve escrever @ unicamente. 4D mostra uma lista de todas as empresas para que o usuário selecione a correta.

As opções Um para Muitos controlam as relações automáticas em sentido contrário.

  • Nome: Área de entrada do nome da relação Um para Muitos (opcional).
    Nota: como parte de um link 4D Mobile, este nome se utiliza para criar um atributo relacional correspondente no modelo junto Wakanda (ver Uso de relações no manual 4D Mobile). Neste caso, deve utilizar um nome que é compatível com as regras JavaScript.
  • Manual/Automática: Este menu permite definir o modo de funcionamento da relação que une a tabela Um a tabela Muitos. Se você selecionar a opção Automática, as funções automáticas serão ativadas. Por exemplo, quando um registro da tabela [Empresas] se abre em modo Aplicação, os registros relacionados na tabela [Empregados] são carregados. Isto permite a 4D mostrar os registros dos empregados que trabalham para a empresa em um sub-formulário. Por padrão, a opção Manual é selecionada (não as funções automáticas). Para maiores informações, consulte o parágrafo Relações manuais e automáticas. A propriedade Relação automática Um para Muitos também pode ser definida através do menu contextual das relações. 
  • Autoatribuir valor no subformulário: Esta opção é utilizada para atribuir automaticamente o valor do campo chave primária na tabela Um ao campo chave estrangeira na tabela Muitos durante a entrada de dados. Esta opção só aparece disponível se a opção Automática tiver sido selecionada.
    Esta opção afeta a entrada de dados quando um formulário de entrada de uma tabela Um tem um sub-formulário de uma tabela Muitos relacionada (para maiores informações sobre sub-formulários, consulte a seção Subformulários e widgets).  Se a opção Autoatribuir valor no subformulário estiver selecionada, um usuário pode adicionar registros ao sub-formulário (ou seja, a tabela Muitos relacionada) e ter o valor relacionado automaticamente atribuído aos campos da tabela relacionada.
    Na relação entre a tabela [Empresas] e a tabela [Empregados], a tabela [Empresas] é uma tabela Um e a tabela [Empregados] é a tabela Muitos relacionada. Cada empresa tem um registro na tabela [Empresas] e vários registros na tabela [Empregados]. Quando o campo chave estrangeira da tabela Muitos é exibido no sub-formulário, você pode ver o efeito desta opção: o valor do campo é copiado automaticamente no sub-formulário cada vez que se adiciona um sub-registro.

    Esta opção também funciona quando o campo chave estrangeira da tabela Muitos não se apresenta no sub-formulário: o valor do campo chave primária é copiado automaticamente “internamente” no campo chave estrangeira. É possível verificá-lo passando ao modo página.
    Quando a opção Autoatribuir valor no subformulário não estiver selecionada, os sub-registros criados não são relacionados automaticamente ao registro apropriado da tabela Muitos. Neste caso, você deve associar o sub-registro:  
    • seja manualmente, se mostra o campo chave: no exemplo anterior, foi suficiente introduzir “Telcon” no campo empresa de cada sub-registro,
    • ou por programação: só é necessário executar uma linha de código do tipo
       TableN]Field1:=[Table1]Field1
      durante a criação de sub-registros.
    Nota: Ao modificar o valor do campo relacionado na tabela Um depois de criar registros na tabela Muitos, a opção Designação automática do valor relacionado com subformulários não tem efeito e você deverá atribuir o valor do campo relacionado manualmente ou utilizando a linguagem.

As opções de Integridade referencial controlam a eliminação de registros na tabela Muitos ao excluir um registro na tabela Um. Normalmente, o usuário não pode eliminar registros em uma tabela a menos que seja a tabela atual. Isto significa, por exemplo, que para excluir registros na tabela [Empregados], primeiro você deve convertê-la na tabela atual. Para transformar uma tabela na tabela atual, selecione-a na caixa de diálogo Lista de tabelas no ambiente Desenho.

  • Deixar registros selecionados intactos: Selecionar este botão opção permite ao usuário excluir um registro da tabela Um, deixando intactos os registros correspondentes da tabela Muitos. Isto deixa registros da tabela Muitos sem correspondência com um registro relacionado da tabela Um. O único efeito é fazer com que a informação da tabela Um não esteja disponível. Nenhum registro da tabela Um é carregado quando um registro correspondente aos registros eliminados é carregado na tabela Muitos. 
  • Eliminar registros relacionados: Selecionar este botão lhe indica a 4D que deve excluir automaticamente todos os registros relacionados na tabela Muitos quando um usuário elimine um registro da tabela Um. Esta opção assegura que os registros Muitos relacionados não sejam convertidos em “órfãos” quando se elimine o registro Um correspondente..
  • Não eliminar se há registros relacionados: Selecionar este botão radio impede que o usuário elimine um registro da tabela Um se existirem registros relacionados na tabela Muitos. Esta opção permite assegurar que os registros não sejam eliminados por equivocação. Note que é possível excluir registros livremente da tabela Muitos, sem importar a opção selecionada.

Os botões de opção Eliminar registros relacionados e Não eliminar se há registros relacionados reforçam o que é conhecido como integridade referencial na teoria dos bancos de dados. Quando o controle de integridade referencial está vigente, 4D se assegura que cada registro da tabela Muitos esteja associado a um registro único da tabela Um.

Se existirem várias tabelas relacionadas, o controle de integridade referencial é ativado para cada relação como uma cadeia. Por exemplo, imagine que você tenha a estrutura a seguir. Se você eliminar um registro da tabela [CODIGOS_POSTAIS] (tabela Um) e a opção Excluir registros relacionados tiver sido selecionada para cada relação, 4D primeiro elimina os registros correspondentes da tabela [EMPRESAS] e logo elimina os registros de todos os empregados que trabalham para essas empresas na tabela [EMPREGADOS].

Quando há uma configuração contraditória de controle de integridade referencial, 4D não permite a eliminação de registros. Por exemplo, se você tiver selecionada a opção Eliminar registros relacionados para a relação entre as tabelas [EMPRESA] e [CODIGOS_POSTAIS], mas tem selecionada a opção Não eliminar se há registros relacionados para a relação entre as tabelas [EMPREGADOS] e [EMPRESAS], não será efetuado nenhuma eliminação e os registros das tabelas [EMPRESAS] e [EMPREGADOS] permanecerão intactos.

SQL  

A área SQL do Inspector oferece informação útil para trabalhar com a estrutura através da linguagem SQL.

Para as relações, a área indica as propriedades FOREIGN KEY e REFERENCES.

 
PROPRIEDADES 

Produto: 4D
Tema: Criar uma estrutura de banco de dados

 
HISTÓRIA 

 
ARTICLE USAGE

Manual de Desenho 4D ( 4D v16)
Manual de Desenho 4D ( 4D v16.1)
Manual de Desenho 4D ( 4D v16.3)