Meilleures pratiques pour le schéma de base de données avec la génération de requêtes DDL et SQL

L'action de script Exécuter une requête SQL en langage naturel et la fonction GetTableDDL génèrent un DDL (Data Definition Language) qui résume le schéma de base de données des occurrences de table spécifiées. La logique sous-jacente repose sur les paramètres de rubrique et le graphique des relations pour la majeure partie du schéma de la base de données, mais peut également inclure des annotations de rubrique que vous saisissez dans la boîte de dialogue Gérer la base de données comme informations supplémentaires.

Lorsque le schéma de base de données est envoyé à un modèle d'IA pour générer des requêtes SQL, respecter ces meilleures pratiques permet d'améliorer la capacité du modèle à générer des instructions SQL utiles.

Utiliser des noms de table et de rubrique alphanumériques

Il est préférable que les noms de rubriques soient conformes à la norme SQL-92. En général, utilisez des caractères alphanumériques ; n'utilisez pas de caractères spéciaux, à l'exception du trait de soulignement (_). Essayez d'éviter les espaces, même si ils sont pris en charge (FileMaker peut gérer les noms de tables et de rubriques contenant des espaces tout en communiquant avec un modèle d'IA).

Utiliser les rubriques de clé primaire et de clé étrangère

Les rubriques de clé primaire et de clé étrangère dans une relation doivent être associées au même type de données : numéro, texte ou même date ou horodatage, si nécessaire.

Rubrique Clé primaire

Toute rubrique avec une valeur unique peut être utilisée comme rubrique de clé primaire. Cependant, la meilleure pratique consiste à utiliser les mêmes critères que ceux utilisés par FileMaker pour détecter automatiquement une rubrique de clé primaire.

Pour pouvoir être détectée, une rubrique de clé primaire doit être la rubrique CléPrimaire par défaut (ou une copie de celle-ci) ou répondre à l'un des critères suivant :

  • utiliser un numéro de série à saisie automatique, et avoir les options suivantes sélectionnées :

    • pour la saisie automatique, Entrées auto. non modifiables lors de la saisie ;

    • pour la validation, Valeur unique.

  • utiliser un calcul saisi automatiquement qui inclut la fonction Obtenir ( UUID ) ou Obtenir ( UUIDnombre ) et avoir l'option de saisie automatique Entrées auto. non modifiables lors de la saisie sélectionnée.

  • être une rubrique de calcul stockée qui inclut la fonction Obtenir ( UUID ) ou Obtenir ( UUIDnombre ).

  • utiliser un numéro de série à saisie automatique.

Consultez les sections Définition de l'entrée automatique de données, Définition de la validation des rubriques et Définition des options d'indexation des rubriques.

Rubrique Clé étrangère

Une rubrique de clé étrangère peut avoir le même nom que la rubrique de clé primaire correspondant dans une table liée, mais cela n'est pas obligatoire. Par exemple, une rubrique de clé étrangère nommée ce_Contacts dans la table Adresses représente une relation entre la table Contacts et la table Adresses. La meilleure pratique consiste à utiliser un nom qui a du sens pour vous, car ce sera également un nom utile pour le modèle d'IA.

Pour rendre le rôle de la rubrique plus clair et spécifier la relation avec une autre table, vous pouvez décrire la rubrique plus en détail dans une annotation (voir ci-dessous). Par exemple, ajoutez ce qui suit en tant qu'annotation dans la rubrique Addresses::ce_Contacts : « Clé étrangère pour une relation un-à-plusieurs avec la table Contacts. »

Remarque  Une clé étrangère et sa relation avec une table liée ne sont incluses dans le DDL que si les deux occurrences de table dans la relation sont spécifiées.

Ajouter des annotations de rubrique

Les annotations que vous saisissez dans la boîte de dialogue Gérer la base de données sont incluses dans le DDL. Pour améliorer la capacité du modèle à générer des instructions SQL utiles basées sur le DDL, vous pouvez utiliser une annotation pour expliquer le but de la rubrique. Par exemple, lorsqu'une rubrique est une clé étrangère qui identifie un enregistrement dans une table liée, ou lorsque le nom de la rubrique pourrait ne pas être communément compris. Pour une rubrique de clé primaire, même si FileMaker la détecte et indique dans le DDL qu'il s'agit d'une clé primaire, il est toujours judicieux de l'identifier comme tel dans l'annotation.

Pour en savoir plus sur l'ajout d'annotations, consultez la section Définition des options de rubrique avancées.

Spécifier des annotations pour limiter les rubriques incluses

Plutôt que d'inclure toutes les rubriques d'une table dans le DDL, vous pouvez spécifier uniquement celles qui sont importantes, ce qui réduit les informations superflues envoyées au modèle, susceptibles de dégrader la qualité de la réponse. Pour ce faire, ajoutez des annotations aux rubriques que vous souhaitez inclure. Après avoir ajouté au moins une annotation de rubrique dans une table, seules les rubriques avec des annotations sont incluses dans le DDL ; celles qui n'ont pas d'annotations sont exclues.

Par exemple, si la table Produits inclut ces rubriques mais que la rubrique État ne comporte pas d'annotation :

Nom de rubrique Annotation

IDProduit

Clé primaire qui identifie un produit de manière unique

Nom du Produit

Nom descriptif du produit

Prix

Prix du produit en EUR

État

(pas d'annotation)

Le DDL pour cette table est alors :

Copier
CREATE TABLE "Produits" (
"IDProduit" int, /*Clé primaire qui identifie un produit de manière unique*/
"NomProduit" varchar(255), /*Nom descriptif du produit*/
"Prix" int, /*Prix du produit en EUR*/
PRIMARY KEY (IDProduit)
);

Notez que seules les trois rubriques avec des annotations sont incluses.

Distinguer les rubriques avec le même nom dans plusieurs tables

Parfois, une base de données peut avoir des rubriques portant le même nom dans plusieurs tables. Par exemple, une rubrique Photo de la table Contacts stocke l'image des clients, tandis qu'une autre rubrique Photo de la table Commandes stocke l'image des reçus de commande. Pour vous assurer qu'un modèle d'IA peut distinguer les rôles de ces rubriques, ajoutez des annotations descriptives. Par exemple, ajoutez « Photo du client » comme annotation pour la rubrique Contacts::Photo et « Photo des reçus de commande » comme annotation pour la rubrique Commandes::Photo.

Déterminer quand la casse est importante

Les requêtes SQL sont sensibles à la casse, de sorte que les résultats peuvent différer selon que le texte est en majuscules ou en minuscules. Par exemple, une rubrique Balises dans la table Produits stocke les balises de chaque produit, selon leur nom propre. Dans ce cas, pour éviter des résultats de requête inattendus, ajoutez « Balises du produit, en nom propre » comme annotation pour la rubrique Produits::Balises.

Fournir les valeurs de rubrique valides

Pour les rubriques qui utilisent des listes de valeurs personnalisées afin de spécifier des valeurs valides, une bonne pratique consiste à fournir les valeurs valides dans une annotation, afin que le modèle d'IA puisse générer la meilleure requête SQL. Par exemple, ajoutez « Titre du poste, les valeurs valides sont Chirurgien, Médecin, Dentiste, Infirmière et Pharmacien » comme annotation pour la rubrique Contacts::Titre.

Ne pas interroger les rubriques Statistique

La valeur d'une rubrique Statistique dans une base de données FileMaker dépend des enregistrements du jeu trouvé actuel, de sorte qu'une requête SQL peut renvoyer un résultat incorrect dans certains cas. Au lieu de cela, omettez les annotations pour les rubriques de type Statistique afin qu'ils soient exclus du DDL. SQL est suffisamment sophistiqué pour effectuer les tâches des rubriques Statistique sans les inclure dans le DDL.

Remarques 

Pour maintenir la compatibilité avec les applications personnalisées qui utilisent des commentaires au lieu d'annotations de rubriques :

  • Si aucune annotation n'est spécifiée dans une table, toutes les rubriques de cette table sont incluses dans le DDL. Les commentaires, le cas échéant, sont inclus comme descriptions dans le DDL.

  • Si une annotation est vide et que le commentaire commence par la balise spéciale [LLM], le texte du commentaire (sans la balise [LLM]) est utilisé dans le DDL comme s'il s'agissait d'une annotation.