Em ambientes de desenvolvimento colaborativo, encontrar um código SQL complexo escrito por outros é inevitável. As ferramentas de IA generativa podem analisar e explicar rapidamente consultas SQL, decompondo lógica complexa em componentes compreensíveis. Ao usar esses assistentes de IA para decifrar códigos desconhecidos, você pode reduzir o tempo de aprendizagem, melhorar a colaboração e adotar as melhores práticas de desenvolvedores experientes.
Uso de IA generativa para entender melhor o SQL
No SAP HANA Cloud Central - Console SQL, agora é possível permitir que a IA generativa explique o código SQL no SAP HANA Cloud Central - Console SQL. No console SQL, a IA generativa explicará as instruções SQL selecionadas quando você usar a função Explicar instrução SQL usando IA, como mostrado na imagem.

Como fonte, usei o código SQL gerado pela IA na lição anterior. Selecionei todas as instruções SQL e deixei que a IA generativa explique o código para mim. A instrução Explain SQL usando IA gerou uma breve explicação por instrução SQL. O resultado é exibido aqui:
1234567891011121314151617181920212223242526272829303132333435AI Explanation Result:
-- Create a new schema called "my_company" to logically group related tables.
CREATE SCHEMA "my_company";
-- Create a table named "job_titles" in the "my_company" schema to store job positions.
-- The table has a primary key column "job_title_id" and a required column "job_title_name".
CREATE COLUMN TABLE "my_company"."job_titles" (
"job_title_id" NVARCHAR(2) PRIMARY KEY,
"job_title_name" NVARCHAR(100) NOT NULL
);
-- Create a table named "departments" in the "my_company" schema to represent company departments.
-- The table has a primary key "department_id" and columns for department name and head.
CREATE COLUMN TABLE "my_company"."departments" (
"department_id" NVARCHAR(3) PRIMARY KEY,
"department_name" NVARCHAR(100),
"department_head" NVARCHAR(100)
);
-- Create a table named "employees" in the "my_company" schema to store employee information.
-- The table includes an auto-incrementing primary key "employee_id", employee names, department and
-- job references, and hire date.
-- The "department_id" column is a foreign key referencing the "departments" table.
-- The "job_title_id" column is a foreign key referencing the "job_titles" table.
CREATE COLUMN TABLE "my_company"."employees" (
"employee_id" INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
"first_name" NVARCHAR(50),
"last_name" NVARCHAR(50),
"department_id" NVARCHAR(3),
"job_title_id" NVARCHAR(2),
"hire_date" DATE,
FOREIGN KEY ("department_id") REFERENCES "my_company"."departments"("department_id"),
FOREIGN KEY ("job_title_id") REFERENCES "my_company"."job_titles"("job_title_id")
);
Neste exemplo, o, como um comentário, as descrições adicionadas por instrução SQL tornaram todo o código mais fácil de entender.
Gerar um documento de design de modelo de dados
Na próxima etapa, removi o código SQL da resposta e perguntei ao Joule:
1234567891011121314Write me, in human readable natural language, a data model definition document from the following text:
Create a new schema called "my_company" to logically group related tables.
Create a table named "job_titles" in the "my_company" schema to store job positions. The table has a
primary key column "job_title_id" and a required column "job_title_name".
Create a table named "departments" in the "my_company" schema to represent company departments. The
table has a primary key "department_id" and columns for department name and head.
Create a table named "employees" in the "my_company" schema to store employee information. The table
includes an auto-incrementing primary key "employee_id", employee names, department and job references,
and hire date. The "department_id" column is a foreign key referencing the "departments" table. The
"job_title_id" column is a foreign key referencing the "job_titles" table.Joule respondeu com o seguinte:

Definição do modelo de dados: esquema my_company
Síntese
Este modelo de dados define a estrutura organizacional central para uma empresa, capturando informações sobre cargos, departamentos e empregados. Ele foi projetado para suportar o gerenciamento de pessoal, estabelecendo relações claras entre os empregados, os departamentos aos quais pertencem e os cargos que ocupam.
Esquema
| Característica | Detalhe |
|---|---|
| Nome do esquema | meu_empresa |
| Objetivo | Agrupamento lógico de todas as tabelas relacionadas aos dados organizacionais e de pessoal da empresa |
Tabelas
Tabela 1: job_titles
Esta tabela serve como catálogo de referência para todos os cargos que existem na empresa. Cada registro representa uma função de cargo distinta que pode ser atribuída a um ou mais colaboradores. Ele garante que as designações de trabalho sejam padronizadas e referenciadas de forma consistente em toda a organização.
Nome da coluna | Tipo de dados | Restrições | Descrição |
|---|---|---|---|
| job_title_id | INTEGER | Chave primária | Identificador exclusivo para cada cargo |
| job_title_name | VARCHAR | NÃO NULO | O nome ou etiqueta do cargo (por exemplo, "Engenheiro de software", "Gerente de RH") |
Tabela: departamentos
Esta tabela representa as várias unidades organizacionais ou setores de atividade dentro da empresa. Cada registro de departamento captura sua identidade e liderança, permitindo que a organização mapeie os funcionários para suas respectivas unidades de negócios.
Nome da coluna | Tipo de dados | Restrições | Descrição |
|---|---|---|---|
| department_id | INTEGER | Chave primária | Identificador único para cada departamento |
| department_name | VARCHAR | NÃO NULO | O nome oficial do departamento (por exemplo, "Finanças", "Engenharia") |
| department_head | VARCHAR | NULLÁVEL | O nome ou identificador da pessoa que lidera o departamento |
Tabela: colaboradores
Esta é a tabela central do modelo de dados, armazenando todos os registros de empregados. Ele vincula cada empregado ao departamento e ao cargo atribuídos e controla quando ele se juntou à empresa. A chave primária com incremento automático garante que cada funcionário receba um identificador exclusivo gerado pelo sistema sem entrada manual.
Nome da coluna | Tipo de dados | Restrições | Descrição |
|---|---|---|---|
| employee_id | INTEGER | Chave primária, incremento automático | Identificador único gerado pelo sistema para cada empregado |
| first_name | VARCHAR | NÃO NULO | O nome dado ao colaborador |
| last_name | VARCHAR | NÃO NULO | O sobrenome do colaborador |
| department_id | INTEGER | Chave externa → departamentos | Referencia o departamento ao qual o empregado pertence |
| job_title_id | INTEGER | Chave externa → job_titles | Referencia o cargo atribuído do empregado |
| hire_date | DATE | NÃO NULO | A data em que o empregado foi oficialmente contratado |
Relações
| Da tabela | Coluna | Relação | Para tabela | Coluna |
|---|---|---|---|---|
| colaboradores | department_id | Many-to-One | departamentos | department_id |
| colaboradores | job_title_id | Many-to-One | títulos_cargo | job_title_id |
Principais notas de design
As seguintes decisões de design foram tomadas:
- Incremento automático para identidade do colaborador
- A coluna employee_id usa um mecanismo de incremento automático, o que significa que o banco de dados atribui automaticamente um novo valor numérico exclusivo cada vez que um registro do empregado é inserido. Isso remove a carga do gerenciamento manual de IDs exclusivos e evita a duplicação.
- Integridade referencial via chaves externas
- As colunas department_id e job_title_id na tabela de colaboradores são definidas como chaves externas. Isso significa que o banco de dados força que qualquer valor inserido nessas colunas já deve existir na tabela de departamentos ou job_title correspondente, evitando registros órfãos ou inconsistentes.
- Agrupamento lógico no nível do esquema
- Todas as três tabelas são colocadas no esquema my_company. Isso atua como um espaço de nomes lógico que agrupa tabelas relacionadas, facilitando o gerenciamento de permissões de acesso, evitando conflitos de nomes com outros esquemas e comunicando claramente que essas tabelas pertencem ao mesmo domínio empresarial.

Resumo
Esta lição mostrou como a IA generativa pode ser usada para explicar o código SQL e como o Joule pode criar um documento de definição de modelo de dados usando a explicação do código SQL.