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ältnotationer 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 en fältnotation (se nedan). Lägg till exempel till följande som en notation i fältet Adresser::fk_Kontakter: "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ältnotationer

Fältnotationer som du anger i dialogrutan Hantera databas inkluderas i DDL. Om du vill förbättra modellens förmåga att generera användbara SQL-satser baserade på DDL kan du använda en notation för att förklara fältets syfte, till exempel när ett fält är en sekundärnyckel som identifierar en post i en relaterad tabell eller när fältets namn kanske inte förstås av alla. Det är också en bra idé att identifiera ett primärnyckelfält som ett sådant i fältnotationen, även om FileMaker även utan den upptäcker att det är en primärnyckel och anger det i DDL.

Mer information om hur du lägger till fältnotationer finns i Definiera avancerade fältalternativ.

Ange fältnotationer för att begränsa vilka fält som tas med

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. Det gör du genom att lägga till fältnotationer i de fält som du vill ta med. När du har lagt till minst en fältnotation i en tabell inkluderas endast fält med notationer i DDL, och fält utan notation tas alltså inte med.

Om tabellen Produkter till exempel innehåller dessa fält men fältet Status inte har någon notation:

Fältnamn Notation

ProduktID

Primär nyckel som unikt identifierar en produkt

ProductName

Beskrivande namn på produkten

Pris

Produktens pris i SEK

Status

(ingen notation)

DDL för denna tabell blir då:

Kopiera
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 notationer tas med.

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ältnotationer. Lägg till exempel till "Foto av kunden" som notation för fältet Kontakter::Foto och "Foto av orderkvitton" som notation för fältet 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 "[] Taggar för produkten, i versalgemen" som notation 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ältnotation så att AI-modellen kan generera den bästa SQL-frågan. Lägg till exempel till "Jobbtitel, giltiga värden är kirurg, läkare, tandläkare, sjuksköterska och farmaceut" som notation 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 ett felaktigt resultat. Utelämna i stället fältnotationer för sammanfattningsfält så att de utesluts från DDL. SQL är avancerat nog att utföra uppgifterna för statistikfält utan att inkludera dem i DDL.

Kommentarer 

Så här bevarar du kompatibiliteten med anpassade appar som använder fältkommentarer i stället för fältnotationer:

  • Om inga fältnotationer anges i en tabell tas alla fält i den tabellen med i DDL. Fältkommentarer, om sådana finns, tas med som beskrivningar i DDL.

  • Om en fältnotation är tom och fältkommentaren börjar med den speciella [LLM]-taggen, används kommentarstexten (utan [LLM]-taggen) i DDL som om den vore en notation.