DDL 및 SQL 쿼리 생성의 데이터베이스 스키마에 대한 우수 사례
자연어로 SQL 쿼리 수행 스크립트 단계 및 GetTableDDL 함수는 지정된 테이블 발생의 데이터베이스 스키마를 요약하는 데이터 정의 언어(DDL)를 생성합니다. 기본 로직은 대부분의 데이터베이스 스키마에 대한 필드 설정 및 관계 그래프에 의존하지만 데이터베이스 관리 대화 상자에 입력한 필드 주석을 추가 정보로 포함할 수도 있습니다.
데이터베이스 스키마가 SQL 쿼리를 생성하기 위해 AI 모델로 전송될 때, 이러한 우수 사례를 따르면 유용한 SQL 문을 생성하는 모델의 능력을 향상시키는 데 도움이 됩니다.
영숫자 테이블 및 필드 이름 사용
필드 이름은 SQL-92 표준을 준수하는 것이 가장 좋습니다. 일반적으로 영숫자 문자를 사용하십시오. 밑줄(_)을 제외하고 특수 문자를 사용하지 마십시오. 공백은 필요한 경우 외에는 사용하지 마십시오(FileMaker는 AI 모델과 통신하는 동안 공백이 포함된 표 및 필드 이름을 올바르게 처리합니다).
기본 키 및 외래 키 필드 사용
관계의 기본 키 및 외래 키 필드는 필요한 경우 동일한 데이터 유형(숫자, 텍스트 또는 날짜나 타임스탬프)이어야 합니다.
기본 키 필드
고유 값을 가진 모든 필드를 기본 키 필드로 사용할 수 있습니다. 그러나 가장 좋은 방법은 FileMaker가 기본 키 필드를 자동으로 감지하는 데 사용하는 것과 동일한 기준을 사용하는 것입니다.
발견을 위해서는 주요 키 필드가 기본 PrimaryKey 필드(또는 복사본)이거나 다음 조건을 충족해야 합니다.
-
자동 입력 일련 번호를 사용하면 다음 옵션이 선택됩니다.
-
자동 입력에 대한 데이터 입력 중 값을 수정할 수 없음 옵션
-
유효성 검증에 대한 고유 값 옵션
-
-
Get(UUID) 또는 Get(UUID번호) 함수를 포함하는 자동 입력 계산을 사용하고, 자동 입력 옵션인 데이터 입력 중 값을 수정할 수 없음이 선택되어 있습니다.
-
해당 필드가 Get(UUID) 또는 Get(UUIDNumber) 함수를 포함하는 저장된 계산 필드
-
자동 입력 일련 번호 사용
자동 데이터 입력 정의하기, 필드 유효성 검증 정의하기 및 필드 인덱싱 옵션 정의하기를 참조하십시오.
외부 키 필드
외부 키 필드는 관련 테이블의 해당 기본 키 필드와 동일한 이름을 가질 수 있지만 그럴 필요는 없습니다. 예를 들어, 주소 테이블의 fk_Contacts라는 외부 키 필드는 연락처 테이블에서 주소 테이블까지의 관계를 나타냅니다. AI 모델에도 도움이 되는 이름이 될 것이므로 가장 적합한 이름을 사용하는 것이 가장 좋습니다.
필드의 목적을 더 명확하게 하고 다른 테이블과의 관계를 지정하기 위해, 필드 주석에서 필드를 더 자세히 설명할 수 있습니다(아래 참조). 예를 들어 Addresses::fk_Contacts 필드에 "[LLM] 연락처 테이블과의 일대다 관계에 대한 외래 키"를 주석으로 추가합니다.
참고 외부 키와 관련 테이블과의 관계는 관계에서 두 테이블 발생이 모두 지정된 경우에만 DDL에 포함됩니다.
필드 주석 추가
데이터베이스 관리 대화 상자에 입력한 필드 주석은 DDL에 포함됩니다. DDL을 기반으로 유용한 SQL 문을 생성하는 모델의 기능을 향상시키기 위해 주석을 사용하여 필드의 목적을 설명할 수 있습니다. 예를 들어, 필드가 관련 테이블에서 레코드를 식별하는 외부 키이거나 필드 이름이 일반적으로 이해되지 않을 수 있는 경우입니다. 기본 키 필드의 경우 FileMaker가 이를 감지하고 DDL에서 기본 키임을 표시하더라도 필드 주석에서 기본 키로 식별하는 것이 좋습니다.
필드 정의 및 변경하기를 참조하십시오.
[LLM] 태그를 추가하여 포함된 필드를 제한합니다.
DDL에 테이블의 모든 필드를 포함하는 대신 중요한 필드만 지정할 수 있으므로 응답의 품질을 저하시킬 수 있는 모델에 전송되는 불필요한 정보를 줄일 수 있습니다. 이렇게 하려면 특수 [LLM]
태그를 필드 주석의 시작 부분에 추가한 다음 필요에 따라 설명 주석을 추가합니다. 주석이 [LLM]
태그로 시작하지 않는 테이블의 다른 필드는 DDL에서 제외됩니다.
예를 들어 제품 테이블에 다음 필드가 포함되어 있지만 상태 필드의 주석이 [LLM]
태그로 시작되지 않는 경우:
필드 이름 |
설명 |
---|---|
ProductID |
[LLM] 제품을 고유하게 식별하는 기본 키 |
ProductName |
[LLM] 제품의 자세한 이름 |
가격 |
[LLM] 제품의 가격(USD) |
상태 |
인벤토리에 있는 제품의 상태. 값이 재고 있음, 주문 시 |
그러면 이 테이블의 DDL은 다음과 같습니다.
CREATE TABLE "제품" (
"ProductID" int, /*제품을 고유하게 식별하는 기본 키*/
"ProductName" varchar(255), /*제품의 자세한 이름*/
"Price" int, /*제품의 가격(USD)*/
PRIMARY KEY (ProductID)
);
[LLM]
태그가 있는 세 개의 필드만 포함되고 [LLM]
태그 자체는 생략됩니다.
여러 테이블에서 동일한 이름을 가진 필드 구별
데이터베이스가 여러 테이블에 같은 이름의 필드를 가질 수 있는 경우도 있습니다. 예를 들어 연락처 테이블의 사진 필드에는 고객의 이미지가 저장되고 주문 테이블의 다른 사진 필드에는 주문 영수증 이미지가 저장됩니다. AI 모델이 이러한 필드의 다양한 목적을 구별할 수 있도록 필드 주석을 추가하여 명확히 하십시오. 예를 들어 Contacts::Photo 필드 주석에 '[LLM] 고객의 사진'을 추가하고 '[LLM] 주문 영수증'을 Orders::Photo 필드 주석에 추가합니다.
케이스가 중요한 경우 지정
SQL 쿼리는 대소문자를 구분하므로 텍스트가 대문자인지 소문자인지에 따라 결과가 다를 수 있습니다. 예를 들어 제품 테이블의 태그 필드는 각 제품의 태그를 모두 제목 케이스로 저장합니다. 이 경우 예기치 않은 쿼리 결과를 피하기 위해 Products::Tags 필드의 주석으로 "[LLM] 제품의 태그, 단어의 첫 글자를 대문자로"를 추가합니다.
유효한 필드 값을 제공
사용자 지정 값 목록을 사용하여 유효한 필드 값을 지정하는 필드의 경우 AI 모델이 최상의 SQL 쿼리를 생성할 수 있도록 필드 주석에 유효한 값을 제공하는 것이 좋습니다. 예를 들어, Contacts::Title 필드의 필드 설명으로 "[LLM] 직책, 올바른 값은 외과의, 내과의, 치과의, 간호사 및 약사"를 추가합니다.
요약 필드를 쿼리하지 마십시오.
FileMaker 데이터베이스의 요약 필드 값은 현재 발견된 집합의 레코드에 따라 다르므로 SQL 쿼리가 잘못된 결과를 반환할 수 있습니다. 대신 필드 주석에 [LLM]
태그를 사용하여 요약 필드가 제외되도록 합니다. SQL은 요약 필드를 DDL에 포함하지 않고도 작업을 수행할 수 있을 만큼 정교합니다.