Aanbevolen procedures voor databaseschema's bij het genereren van DDL- en SQL-query's

De Voer SQL-query uit met natuurlijke taal scriptstap en de GetTableDDL functie Generate Data Definition Language (DDL) die het databaseschema van de opgegeven tabel bevat. De onderliggende logica is gebaseerd op veldinstellingen en de relatiegrafiek voor het grootste deel van het databaseschema, maar kan ook de opmerkingen bevatten die u invoert in het dialoogvenster Database beheren als aanvullende informatie.

Wanneer een databaseschema naar een AI-model wordt verzonden om SQL-query's te genereren, helpt het volgen van deze aanbevolen procedures het model beter in staat te stellen nuttige SQL-instructies te genereren.

Gebruik alfanumerieke tabel- en veldnamen

Veldnamen kunnen het beste voldoen aan de SQL-92-norm. Gebruik in het algemeen alfanumerieke tekens; gebruik geen speciale tekens, behalve onderstrepingstekens (_). Probeer spaties te vermijden, maar dat kan, indien nodig (FileMaker verwerkt tabel- en veldnamen die spaties bevatten correct tijdens de communicatie met een AI-model).

De velden Primaire sleutel en Refererende sleutel gebruiken

De velden Primaire sleutel en Refererende sleutel in een relatie moeten hetzelfde gegevenstype hebben: getal, tekst of zelfs datum- of tijdstempel, als er een reden is om dit te doen.

Primaire-sleutelveld

Elk veld met een unieke waarde kan worden gebruikt als primair sleutelveld. De beste methode is echter om dezelfde criteria te gebruiken die FileMaker gebruikt om automatisch een primair sleutelveld te detecteren.

Om te kunnen worden gedetecteerd, moet een primaire-sleutelveld het standaardveld PrimaireSleutel zijn (of een kopie ervan) of voldoen aan een van de volgende criteria:

  • er moet een automatisch ingevoerd serienummer zijn gebruikt en de volgende opties moeten zijn geselecteerd:

    • Wijzigen van waarde tijdens gegevensinvoer verbieden voor automatisch invoeren

    • Unieke waarde voor validatie

  • het veld moet gebruikmaken van een automatisch ingevulde berekening die de Get (UUID)- of Get (UUIDnummer)-functie bevat en de optie voor automatisch invoeren Wijzigen van waarde tijdens gegevensinvoer verbieden is geselecteerd

  • het veld moet een opgeslagen berekeningveld zijn dat de Get (UUID)- of Get (UUIDnummer)-functie bevat.

  • er moet een automatisch ingevoerd serienummer worden gebruikt

Raadpleeg Automatische gegevensinvoer definiëren, Veldbevestiging definiëren en Veldindexeringsopties definiëren.

Refererende-sleutelveld

Een refererende-sleutelveld kan dezelfde naam hebben als het corresponderende primaire-sleutelveld in een gerelateerde tabel, maar dat hoeft niet. Een refererende-sleutelveld met de naam fk_Contacts in de tabel Adressen vertegenwoordigt bijvoorbeeld een relatie tussen de tabel Contactpersonen en de tabel Adressen. De aanbevolen procedure is om een naam te gebruiken die voor u zinvol is, want het zal ook een nuttige naam zijn voor een AI-model.

Om het doel van het veld duidelijker te maken en de relatie met een andere tabel op te geven, kunt u het veld verder beschrijven in het veld Opmerkingen (zie hieronder). Voeg bijvoorbeeld het volgende toe als opmerking in het veld Adresses::fk_Contacts: "[LLM] refererende sleutel voor een-op-veel relatie met contactpersonen".

Opmerking  Een refererende sleutel en de relatie ervan met een gerelateerde tabel worden alleen in de DDL opgenomen als beide tabelvermeldingen in de relatie zijn opgegeven.

Veldopmerkingen toevoegen

Veldopmerkingen die u invoert in het dialoogvenster Database beheren, worden opgenomen in de DDL. Om het model beter in staat te stellen nuttige SQL-instructies te genereren op basis van de DDL, kunt u de opmerking gebruiken om het doel van het veld uit te leggen. Bijvoorbeeld wanneer een veld een refererende sleutel is waarmee een record in een gerelateerde tabel wordt geïdentificeerd of wanneer de naam van het veld niet algemeen wordt begrepen. Voor een primair sleutelveld , zelfs als FileMaker het detecteert en in de DDL aangeeft dat het een primaire sleutel is, is het nog steeds een goed idee om het als zodanig te identificeren in het opmerkingenveld.

Raadpleeg Velden definiëren en wijzigen.

Voeg de [LLM]-tag toe om het aantal opgenomen velden te beperken

In plaats van alle velden van een tabel op te nemen in de DDL, kunt u alleen de velden opgeven die belangrijk zijn, waardoor er minder externe informatie naar het model wordt verzonden die de kwaliteit van de respons kan verslechteren. Voeg hiervoor de speciale [LLM]-tag toe aan het begin van de veldopmerking en voer vervolgens indien nodig een beschrijvende opmerking uit. Andere velden in de tabel waarvan de opmerking niet begint met de tag [LLM] worden uitgesloten van de DDL.

Als de tabel Producten bijvoorbeeld deze velden bevat, maar de opmerking in het veld Status niet begint met de tag [LLM]:

Veldnaam

Opmerking

ProductID

[LLM] Primaire sleutel die een product uniek identificeert

ProductName

[LLM] Beschrijvende naam van het product.

Prijs

[LLM] Prijs van het product in USD

Status

Status van product op voorraad. Waarden zijn op voorraad, in bestelling

Dan is de DDL voor deze tabel:

Kopiëren
CREATE TABLE "Producten" (
"ProductID" int, /*Primaire sleutel die een product uniek identificeert*/
"ProductName" varchar(255), /*Beschrijvende naam van het product*/
"Price" int, /*Prijs van het product in USD*/
PRIMARY KEY (ProductID)
);

Merk op dat alleen de drie velden met de [LLM] tag worden opgenomen en dat de [LLM] tag zelf wordt weggelaten.

Onderscheid maken tussen velden met dezelfde naam in meerdere tabellen

Soms bevat een database velden met dezelfde naam in meerdere tabellen. In een veld Foto in de tabel Contactpersonen wordt bijvoorbeeld de afbeelding van klanten opgeslagen, terwijl in een ander veld Foto in de tabel Bestellingen de afbeelding van orderbevestigingen wordt opgeslagen. Om ervoor te zorgen dat een AI-model de verschillende doeleinden van deze velden kan onderscheiden, voegt u opmerkingen toe ter verduidelijking. Voeg bijvoorbeeld "[LLM] Foto van klant" toe aan het veld Contacts::Photo en "[LLM] Foto van orderbevestigingen" aan het veld Orders::Photo.

Aangeven wanneer een zaak belangrijk is

SQL-query's zijn hoofdlettergevoelig, dus de resultaten kunnen verschillen, afhankelijk van de vraag of tekst hoofdletters of kleine letters heeft. In het veld Tags in de tabel Producten worden bijvoorbeeld de tags van elk product opgeslagen, allemaal in titelletters. Voeg in dit geval "[LLM]-tags van het product, in hoofdletters" toe als opmerking voor het veld Products::Tags om onverwachte queryresultaten te voorkomen.

De geldige veldwaarden opgeven

Voor velden die aangepaste waardenlijsten gebruiken om geldige veldwaarden op te geven, kunt u het beste de geldige waarden in een veldopmerking opgeven, zodat het AI-model de beste SQL-query kan genereren. Voeg bijvoorbeeld "[LLM] Functie, geldige waarden zijn chirurg, arts, tandarts, verpleegkundige en apotheker" toe als een opmerking in het veld Contacts::Title.

Voer geen query uit op samenvattingsvelden

De waarde van een samenvattingsveld in een FileMaker-database is afhankelijk van de records in de huidige gevonden reeks, dus een SQL-query kan in sommige gevallen een onjuist resultaat opleveren. Gebruik in plaats daarvan de tag [LLM] in opmerkingen in het veld, zodat samenvattingsvelden worden uitgesloten. SQL is geavanceerd genoeg om de taken van samenvattingsvelden uit te voeren zonder deze op te nemen in de DDL.