Vous dessinez toujours un lien de la table N vers la table 1.
Les champs liés doivent être d'un type identique ou compatible. Vous pouvez utiliser les types suivants pour les champs clés primaire et d’appel :
chaîne (Alpha et Texte),
numérique (Entier, Entier long, Entier 64 bits, Réel et Float),
Heure,
Booléen,
Date.
Le champ clé primaire doit généralement être indexé (non obligatoire). Les propriétés des liens peuvent être paramétrées dans la ou, pour certaines d’entre elles, dans le menu contextuel qui apparaît lorsque vous cliquez avec le bouton droit de la souris sur un lien.
La zone Définition identifie les champs clés d’appel et primaire.
De : Le champ “De” est le champ clé d’appel de la table N pour ce lien. Dans le menu contextuel, ce champ est appelé “champ source”.
Vers : Le champ “Vers” est le champ clé primaire de la table 1. Dans le menu contextuel, ce champ est appelé “champ destination”. Le lien est tracé de la table N (champ clé d’appel) vers la table 1 (champ clé primaire).
Couleur : Ce pop up menu vous permet de définir la couleur du lien tel qu’il est sera affiché dans l’éditeur de Structure. La couleur d’un lien n’est pas liée à ses propriétés. La couleur du lien peut également être définie via le menu contextuel des liens.
Les options de cette zone permettent de définir le fonctionnement du lien, dans le cadre d’une relation de N vers 1, lorsqu’un enregistrement de la table N est ouvert.
Nom : Zone de saisie du nom du lien aller (facultatif).
Manuel/Automatique : Ce menu permet de définir le mode de fonctionnement du lien concernant les relations de la table N vers la table 1. Si vous sélectionnez l’option Automatique, des automatismes seront activés. Par exemple, quand un enregistrement de la table [Employés] est ouvert en mode Application, l’enregistrement de la société correspondante est sélectionné dans la table [Sociétés]. Ceci permet à 4D, si vous le souhaitez, d’afficher des informations sur la société pour laquelle l’employé travaille. Par défaut, l’option Manuel est sélectionnée. Dans ce cas, vous devrez gérer le chargement et le déchargement de l’enregistrement lié de la table 1 à l’aide des routines du langage. Pour plus d’informations, reportez-vous au paragraphe Liens manuels et automatiques. La propriété Lien aller automatique peut également être définie via le menu contextuel des liens.
Liste des enregistrements liés : Cette option a pour effet d’insérer, automatiquement et de manière invisible, le caractère joker (@) derrière toute valeur saisie dans la table N au moment où l’utilisateur appuie sur la touche Tab ou clique hors du champ. Si l’utilisateur a saisi partiellement une valeur, 4D recherche alors une valeur correspondante dans le champ lié de la table 1. Si le programme trouve une seule valeur possible, il complète la saisie. S’il en trouve plusieurs, une liste des valeurs possibles est proposée à l’utilisateur.
Confirmation de création : Si cette option est cochée, 4D affiche une fenêtre qui permet à l’utilisateur de créer l’enregistrement parent s’il n’existe pas. Par défaut, lorsque vous saisissez une valeur dans un champ lié de la table N, 4D vérifie si un enregistrement parent existe déjà dans la table liée. Si 4D n’en trouve pas, la boîte de dialogue suivante apparaît :
Cette boîte de dialogue vous permet de créer un enregistrement correspondant dans la table 1, pendant que vous procédez à la saisie dans la table N. Par exemple, supposez que votre base contienne une table [Factures] et une table [Clients]. Si vous saisissez une facture dans la table [Factures] et que le client auquel elle est destinée n’a pas encore d’enregistrement dans la table [Clients], 4D vous demandera dans ce cas si vous souhaitez créer l’enregistrement correspondant dans la table [Clients] lors de la validation de l’enregistrement de la table [Factures]. Vous pouvez supprimer cette boîte de dialogue en désélectionnant l’option Confirmation de création. Supprimer cette boîte de dialogue est utile lorsque vous souhaitez gérer la création d’un enregistrement parent à l’aide de méthodes.
Champ discriminant La liste des champs discriminants vous permet de sélectionner un champ supplémentaire qui sera affiché dans la liste des valeurs (qui apparaît lorsque l’utilisateur saisit le joker @ dans le champ lié lors de la saisie). Généralement, il est souhaitable de sélectionner le champ qui identifie le mieux l’enregistrement. Voici comment fonctionne cette option en cours de saisie : 4D permet à l’utilisateur de consulter les valeurs de la table 1 lorsqu’il saisit des données dans le champ d’appel de la table N. L’utilisateur place simplement le caractère standard “joker” (@) dans le champ lié. Dans ce cas, 4D recherche des valeurs correspondantes dans la table 1 liée. Le Joker peut être utilisé de deux manières : pour compléter une saisie partielle ou pour afficher la liste des valeurs valides. Lorsqu’une liste est affichée, l’utilisateur peut y sélectionner une valeur. Un champ supplémentaire, le champ discriminant, peut être affiché avec le champ lié. Supposons que l’utilisateur soit en train de créer un enregistrement dans la table [Employés]. Plutôt que de saisir “Au bon bois S.A.” en toutes lettres dans le champ Société, l’utilisateur peut saisir A@ puis appuyer sur la touche Tabulation pour passer au champ suivant. Comme le caractère @ est le caractère joker de 4D, cette saisie a la signification suivante : “la valeur commence par un A et peut être suivie de tout caractère”. 4D recherche dans la table liée l’enregistrement qui correspond à ce critère. S’il en trouve un, il complète la saisie et sélectionne le champ suivant dans l’ordre de saisie. Les écrans ci-dessous illustrent ce type d’utilisation du joker.
Si 4D trouve plus d’une valeur qui correspond au critère, il affiche une liste de valeurs afin que l’utilisateur puisse sélectionner celle qui lui convient :
Vous pouvez spécifier un second champ qui sera affiché dans la liste pour aider l’utilisateur à choisir la société qu’il doit sélectionner. Le deuxième champ est le champ discriminant que vous avez sélectionné dans la boîte de dialogue de définition de type du lien. La figure ci-dessous représente la liste des sociétés ainsi que leur localisation. Ce champ discriminant aide l’utilisateur qui ne sait pas si la société s’appelle Callisto ou Crystal mais qui se souvient que cette société est basée à Berlin :
La fenêtre de choix d’enregistrement peut être redimensionnée. Pour visualiser la liste de toutes les sociétés de la table [Sociétés], il suffit de ne saisir que le caractère @. 4D affiche alors la liste complète de toutes les sociétés de la table afin que l’utilisateur puisse sélectionner celle qui convient.
Les propriétés de la zone Lien retour contrôlent le fonctionnement des liens automatiques lorsqu’un enregistrement de la table 1 est ouvert.
Nom : Zone de saisie du nom du lien retour (facultatif).
Manuel/Automatique : Ce menu permet de définir le mode de fonctionnement du lien concernant les relations de la table 1 vers la table N. Si vous sélectionnez l’option Automatique, des automatismes seront activés. Par exemple, quand un enregistrement de la table [Sociétés] est ouvert en mode Application, les enregistrements liés dans la table [Employés] sont chargés. Ceci permet à 4D d’afficher les enregistrements des employés de cette société dans un sous-formulaire inclus. Par défaut, l’option Manuel est sélectionnée (pas d’automatismes). Pour plus d’informations sur ce point, reportez-vous au paragraphe Liens manuels et automatiques. La propriété Lien retour automatique peut également être définie via le menu contextuel des liens.
Mise à jour auto dans les sous-formulaires : Cette option est utilisée pour recopier automatiquement pendant la saisie la valeur du champ clé primaire de la table 1 dans le champ clé d’appel de la table N. Cette option n’est utile que si l’option Automatique est sélectionnée pour le lien retour. Cette option affecte la saisie des données lorsque le formulaire d’entrée d’une table 1 comporte un sous-formulaire inclus d’une table N (pour plus d’informations sur les sous-formulaires, reportez-vous au chapitre Sous-formulaires et widgets). Si l’option Mise à jour auto dans les sous-formulaires est sélectionnée pour le lien, l’utilisateur peut ajouter des enregistrements dans le sous-formulaire inclus (la table N) et voir la valeur liée automatiquement affectée aux champs de la table liée. Dans le lien entre la table [Sociétés] et la table [Employés], la table [Sociétés] est la table 1 et la table [Employés] la table N. Chaque société possède un enregistrement dans la table [Sociétés] et plusieurs enregistrements dans la table [Employés]. Lorsque le champ clé d’appel de la table N est affiché dans le sous-formulaire, vous pouvez visualiser l’effet de l’option : la valeur du champ est recopiée automatiquement dans le sous-formulaire à chaque ajout de sous-enregistrement.
L’option fonctionne également lorsque le champ clé d’appel de la table N n’est pas affiché dans le sous-formulaire : la valeur du champ clé primaire est bien recopiée automatiquement “en interne” dans le champ clé d’appel (vous pouvez le vérifier en passant en mode page). Lorsque l’option Mise à jour auto dans les sous-formulaires n’est pas cochée, les sous-enregistrements créés ne sont pas automatiquement reliés à l’enregistrement approprié de la table N. Dans ce cas, vous devez rattacher le sous-enregistrement :
soit manuellement, si le champ clé est affiché : dans l’exemple précédent, il suffit de saisir “Au bon bois S.A.” dans le champ Société de chaque sous-enregistrement,
soit par programmation : il suffit d’exécuter une ligne de code du type
[TableN]Champ1:=[Table1]Champ1
lors de la création du sous-enregistrement.
Note : Si vous modifiez dans la table 1 le champ lié après l’avoir créé dans la table N, l’option Mise à jour auto dans les sous-formulaires sera sans effet. Dans ce cas, vous devrez mettre les valeurs à jour manuellement ou à l’aide du langage.
Quand des tables sont liées, 4D vous permet de déterminer les conséquences, dans la table N, de la suppression d’un enregistrement dans la table 1. Normalement, l’utilisateur ne peut pas supprimer d’enregistrements dans une table autre que la table courante. Cela signifie, par exemple, que pour supprimer des enregistrements dans la table [Employés], l’utilisateur doit tout d’abord en faire la table courante. Pour rendre une table courante, vous pouvez utiliser la Liste des tables en mode Développement.
Pas d’intégrité référentielle : Sélectionner ce bouton radio permet à l’utilisateur de supprimer un enregistrement de la table 1 tout en laissant intacts les enregistrements correspondants de la table N. Ceci laisse alors les enregistrements de la table N sans correspondance avec un enregistrement de la table 1. Le seul effet de cette manipulation est de rendre indisponibles les informations de la table 1 pour ces enregistrements. Aucun enregistrement de la table 1 n’est chargé lorsqu’un enregistrement correspondant à celui supprimé, est chargé dans la table N.
Suppression enregistrements liés : Sélectionner ce bouton radio permet à l’utilisateur de supprimer un enregistrement de la table 1 et de supprimer automatiquement tous les enregistrements correspondants de la table N. Ce choix vous permet d’être certain qu’aucun enregistrement de la table N n’existe sans enregistrement correspondant dans la table 1. Ce choix rend particulièrement aisé la suppression d’enregistrements indésirables mais peut aussi avoir pour résultat la suppression d’enregistrements utiles.
Suppression impossible si enregistrements liés : Sélectionner ce bouton radio interdit la suppression d’un enregistrement de la table 1 s’il y a des enregistrements correspondants dans la table N. Cette option permet de s’assurer qu’aucun enregistrement de la table N n’est supprimé par erreur, mais nécessite par ailleurs que la première étape de la suppression d’un enregistrement de la table 1 soit la suppression de tous les enregistrements correspondants de la table N (il est aisé de réaliser une telle suppression en faisant une recherche dans le champ lié sur la valeur de l’enregistrement de la table 1). Il est à noter que vous pouvez supprimer librement des enregistrements dans la table N, quelle que soit l’option sélectionnée.
Les boutons radio Suppression enregistrements liés et Suppression impossible si enregistrements liés se rapportent au concept théorique d’intégrité référentielle d’une base de données. Quand ce concept doit être respecté, 4D s’assure que chaque enregistrement de la table N est relié à un enregistrement unique de la table 1.
Si votre base possède plusieurs tables liées, le contrôle d’intégrité référentielle est activé comme dans une chaîne. Par exemple, supposons que la structure de votre base soit celle qui est représentée ci-dessous. Si un Pays est supprimé dans la table [Affranchissements] (une table 1) et que l’option Suppression enregistrements liés est sélectionnée pour chaque lien, 4D supprime tout d’abord les enregistrements correspondants dans la table [Sociétés], puis dans la table [Employés] tous les enregistrements des employés de ces sociétés.
Confronté à des paramétrages de suppression contradictoires, 4D n’autorise pas la suppression. Par exemple, si l’option Suppression enregistrements liés est sélectionnée pour le lien entre la table [Sociétés] et la table [Affranchissements] mais que l’option Suppression impossible si enregistrements liés est sélectionnée pour le lien entre la table [Employés] et la table [Sociétés], aucune suppression n’aura lieu et les enregistrements des tables [Employés] et [Sociétés] resteront intacts.
La zone SQL de l’Inspecteur fournit des informations utiles en cas d’exploitation de la structure via le langage SQL. Pour les liens, la zone indique les propriétés FOREIGN KEY et les REFERENCES.
PROPRIÉTÉS
Produit : 4D
Thème : Définir la structure de la base de données
Nom intl. : Relation properties