Uso de IA generativa para entender melhor o SQL

Objective

After completing this lesson, you will be able to use ferramentas de IA generativa para analisar, explicar e entender o código SQL escrito por outros desenvolvedores, permitindo que você compreenda rapidamente consultas complexas e melhore suas próprias práticas de codificação.

Uso de IA generativa para entender melhor o SQL

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.

A imagem mostra um exemplo de como você pode usar a instrução Explain SQL usando a funcionalidade de IA no console SQL.

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:

SQL
1234567891011121314151617181920212223242526272829303132333435
AI 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:

Code Snippet
1234567891011121314
Write 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:

Divisor

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ísticaDetalhe
Nome do esquemameu_empresa
ObjetivoAgrupamento 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 dadosRestriçõesDescrição
job_title_idINTEGERChave primáriaIdentificador exclusivo para cada cargo
job_title_nameVARCHARNÃO NULOO 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 dadosRestriçõesDescrição
department_idINTEGERChave primáriaIdentificador único para cada departamento
department_nameVARCHARNÃO NULOO nome oficial do departamento (por exemplo, "Finanças", "Engenharia")
department_headVARCHARNULLÁVELO 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 dadosRestriçõesDescrição
employee_idINTEGERChave primária, incremento automáticoIdentificador único gerado pelo sistema para cada empregado
first_nameVARCHARNÃO NULOO nome dado ao colaborador
last_nameVARCHARNÃO NULOO sobrenome do colaborador
department_idINTEGERChave externa → departamentosReferencia o departamento ao qual o empregado pertence
job_title_idINTEGERChave externa → job_titles

Referencia o cargo atribuído do empregado

hire_dateDATENÃO NULOA data em que o empregado foi oficialmente contratado

Relações

Da tabelaColunaRelaçãoPara tabelaColuna
colaboradoresdepartment_idMany-to-Onedepartamentosdepartment_id
colaboradoresjob_title_idMany-to-Onetítulos_cargojob_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.
Divisor

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.