Bästa praxis för databasschema i generering av DDL och SQL-frågor
Scriptsteget Utför SQL-fråga på naturligt språk och Funktionen GetTableDDL genererar DDL (Data Definition Language) som sammanfattar databasschemat för de angivna tabellförekomsterna. Den underliggande logiken är beroende av fältinställningar och relationsdiagrammet för merparten av databasschemat, men kan också innehålla fältkommentarer som du anger i dialogrutan Hantera databas som ytterligare information.
När databasschemat skickas till en AI-modell för att generera SQL-frågor kan du förbättra modellens förmåga att generera användbara SQL-uttryck genom att följa bästa praxis som beskrivs här.
Använd alfanumeriska tabell- och fältnamn
Fältnamn ska helst vara kompatibla med SQL-92-standarden. Använd i allmänhet alfanumeriska tecken. Använd inte specialtecken, förutom understreck (_). Försök att undvika att använda blanksteg, men du kan om det behövs. (FileMaker hanterar tabell- och fältnamn som innehåller blanksteg korrekt vid kommunikation med en AI-modell).
Använd fält för primära och främmande nycklar
Fält för primära och främmande nycklar i en relation måste ha samma datatyp – tal, text eller till och med datum eller tidsstämpel, om det finns en anledning till det.
Primärnyckelfält
Alla fält med ett unikt värde kan användas som primärnyckelfält. Bästa praxis är dock att använda samma kriterier som FileMaker använder för att automatiskt identifiera ett primärnyckelfält.
För att kunna identifieras måste ett primärnyckelsfält antingen vara standardfältet Primärnyckel (eller en kopia av det) eller uppfylla något av följande kriterier:
-
använder ett automatiskt inmatat löpnummer och följande alternativ är markerade:
-
under automatiska data, Förhindra ändring av värdet vid datainmatning
-
under kontroll, Unikt värde
-
-
använder en automatiskt inmatad beräkning som innehåller funktionen Get ( UUID ) eller Get ( UUIDNummer ) och under automatiska data är alternativet Förhindra ändring av värdet vid datainmatning markerat
-
är ett lagrat beräkningsfält som innehåller funktionen Get ( UUID ) eller Get ( UUIDNummer )
-
använder ett automatiskt serienummer
Mer information finns i Definiera automatisk inmatning av data, Definiera fältkontroll och Definiera tillval för fältindex.
Främmande nyckelfält
Ett fält för främmande nyckel kan ha samma namn som motsvarande primärnyckelfält i en relaterad tabell, men det är inget krav. Till exempel representerar ett främmande nyckelfält med namnet fk_Kontakter i tabellen Adresser en relation från tabellen Kontakter till tabellen Adresser. Bästa praxis är att använda ett namn som är logiskt för dig, eftersom det också kommer att vara ett bra namn för en AI-modell.
För att göra fältets syfte tydligare och för att ange relationen till en annan tabell kan du beskriva fältet ytterligare i fältkommentarerna (se nedan). Lägg till exempel till följande som en kommentar i fältet Adresser::fk_Kontakter: "[LLM] Främmande nyckel för en-till-många-relation med tabellen Kontakter."
Obs! En främmande nyckel och dess relation till en relaterad tabell ingår endast i DDL om båda tabellförekomster i relationen anges.
Lägg till fältkommentarer
Fältkommentarer som du anger i dialogrutan Hantera databas inkluderas i DDL. För att förbättra modellens förmåga att generera användbara SQL-uttryck baserat på DDL kan du använda kommentaren för att förklara syftet med fältet. Om ett fält till exempel är en främmande nyckel som identifierar en post i relaterad tabell, eller om fältets namn kanske inte är allmänt känt. Det är också en bra idé att identifiera ett primärnyckelfält som ett sådant i fältkommentaren , även om FileMaker även utan den upptäcker att det är en primärnyckel och anger det i DDL.
Mer information finns i Definiera och ändra fält.
Lägg till taggen [LLM] för att begränsa inkluderade fält
I stället för att inkludera alla tabellfält i DDL kan du ange vilka fält som är viktiga, och på så vis minska ovidkommande information som skickas till modellen vilket kan försämra kvaliteten på svaret. Gör det genom att lägga till den speciella taggen [LLM] i början av fältkommentaren, och ange sedan en beskrivande kommentar efter behov. Alla andra fält i tabellen vars kommentar inte börjar med taggen [LLM] utesluts från DDL.
Om tabellen Produkter till exempel innehåller dessa fält men kommentaren i fältet Status inte börjar med taggen [LLM]:
Fältnamn |
Kommentar |
---|---|
ProduktID |
[LLM] Primär nyckel som unikt identifierar en produkt |
Produktnamn |
[LLM] Beskrivande namn på produkten |
Pris |
[LLM] Produktens pris i SEK |
Status |
Status för produkten i lager. Värdena är I lager, Beställt |
DDL för denna tabell blir då:
CREATE TABLE "Produkter" (
"ProduktID" int, /*Primär nyckel som unikt identifierar en produkt*/
"Produktnamn" varchar(255), /*Beskrivande namn på produkten*/
"Pris" int, /*Pris på produkten i SEK*/
PRIMARY KEY (ProduktID)
);
Observera att endast de tre fälten med taggen [LLM]
ingår, och taggen [LLM]
i sig utelämnas.
Särskilja fält med samma namn i flera tabeller
Ibland kan en databas ha fält med samma namn i flera tabeller. Fältet Foto i tabellen Kontakter lagrar till exempel bilden av kunder, medan ett annat fält med namnet Foto i tabellen Beställningar lagrar bilden av orderkvitton. För att säkerställa att en AI-modell kan skilja på de olika syftena med dessa fält, kan du förtydliga det genom att lägga till fältkommentarer. Lägg till exempel till "[LLM] Foto av kunden" som fältkommentar i Kontakter::Foto och "[LLM] Foto av orderkvitton" som fältkommentar till Beställningar::Foto.
Ange när skiftläget har betydelse
SQL-frågor är skiftlägeskänsliga, så resultaten kan variera beroende på om texten är skriven med versaler eller gemener. Till exempel lagrar fältet Taggar i tabellen Produkter taggarna för varje produkt, alla med versalgemen. För att undvika oväntade frågeresultat kan du i det här fallet lägga till "[LLM] Taggar för produkten, i versalgemen” som kommentar till fältet Produkter::Taggar.
Ange giltiga fältvärden
För fält som använder anpassade värdelistor för att ange giltiga fältvärden är bästa praxis att ange giltiga värden i en fältkommentar så att AI-modellen kan generera den bästa SQL-frågan. Lägg till exempel till "[LLM] Jobbtitel, giltiga värden är kirurg, läkare, tandläkare, sjuksköterska och farmaceut" som en fältkommentar till fältet Kontakter::Titel.
Fråga inte statistikfält
Värdet för ett statistikfält i en FileMaker-databas beror på posterna i de aktuella hittade postena, så en SQL-fråga kan i vissa fall returnera felaktiga resultat. Använd i stället taggen [LLM]
i fältkommentarer så att statistikfält utesluts. SQL är avancerat nog att utföra uppgifterna för statistikfält utan att inkludera dem i DDL.