Partilhar via


Quickstart: Use o explicador de lógica de negócio

Neste quickstart, aprende como o explicador de lógica de negócio ajuda os programadores a compreender e a trabalhar com lógica de aplicação complexa implementada em frameworks SQL, ORM (Object-Relational Mapping), ou diretamente na base de dados. O assistente analisa o código SQL, modelos ORM ou esquemas de banco de dados existentes para explicar as regras de negócios subjacentes e fornecer documentação acionável.

Introdução

Verifique se você está conectado a um banco de dados e se uma janela do editor ativo está aberta com a extensão MSSQL. Essa conexão permite que o participante do bate-papo @mssql compreenda o contexto do seu ambiente de banco de dados, permitindo sugestões precisas e sensíveis ao contexto. Sem uma conexão de banco de dados, o participante do bate-papo não terá o esquema ou o contexto de dados para fornecer respostas significativas.

Os exemplos a seguir usam o AdventureWorksLT2022 banco de dados de exemplo, que você pode baixar da home page de Exemplos e Projetos da Comunidade do Microsoft SQL Server .

Para obter melhores resultados, ajuste os nomes de tabelas e esquemas para corresponder ao seu próprio ambiente.

Certifique-se de que o chat inclui o prefixo @mssql . Por exemplo, digite @mssql seguido de a sua pergunta ou solicitação. Isso garante que o participante do bate-papo entenda que você está solicitando assistência relacionada ao SQL.

Entenda a lógica de negócios com o GitHub Copilot

O GitHub Copilot pode ajudá-lo a entender e explicar as regras de negócios incorporadas no código do banco de dados, modelos ORM e consultas de aplicativos. De procedimentos armazenados a consultas LINQ e expressões Sequelize, o GitHub Copilot fornece insights de linguagem natural para tornar a lógica complexa mais acessível.

Aqui estão casos de uso comuns e exemplos do que você pode perguntar através do participante do bate-papo:

Explicar a lógica T-SQL

Use o GitHub Copilot para compreender e explicar a lógica do Transact-SQL (T-SQL), desde procedimentos armazenados até instruções condicionais em linha. Se você está revisando regras de desconto, lógica processual ou condições de otimização, o GitHub Copilot pode analisar e documentar regras de negócios implementadas no T-SQL.

Explique um procedimento armazenado

Explain what the `SalesLT.uspGetCustomerOrderHistory` stored procedure does and suggest ways to optimize it.

Depurar um procedimento armazenado

Debug the `SalesLT.uspGetTopSellingProducts` stored procedure and suggest improvements.

Explique a lógica de negócio num excerto de código

Analyze the following SQL code snippet from my current database. Document the business rules implemented in this discount application process, including conditions for eligibility, discount rate adjustments, and any limits imposed on the discount amount. Also, provide actionable insights or suggestions to improve clarity or performance if necessary.

DECLARE @OrderTotal AS DECIMAL (10, 2) = 1500.00;
DECLARE @DiscountCode AS NVARCHAR (20) = 'DISCOUNT10';
DECLARE @DiscountPct AS DECIMAL (5, 2) = CASE WHEN @OrderTotal > 1000.00 THEN 5.0 ELSE 0.0 END;

IF @DiscountCode = 'DISCOUNT10'
    BEGIN
        SET @DiscountPct = CASE WHEN @DiscountPct < 10.0 THEN 10.0 ELSE @DiscountPct END;
    END

DECLARE @DiscountAmount AS DECIMAL (10, 2) = (@OrderTotal * @DiscountPct / 100.0);

IF @DiscountAmount > 200.00
    BEGIN
        SET @DiscountAmount = 200.00;
    END

SELECT @OrderTotal AS OrderTotal,
       @DiscountPct AS DiscountPercentage,
       @DiscountAmount AS DiscountAmount;

Explicar a lógica ORM

Explique uma consulta SQLAlchemy

Explain what the following SQLAlchemy query does:

from sqlalchemy import func

top_customers = (
    session.query(SalesOrderHeader.CustomerID, func.count().label("OrderCount"))
    .group_by(SalesOrderHeader.CustomerID)
    .order_by(func.count().desc())
    .limit(10)
)

Explique uma consulta LINQ do Entity Framework

What does this Entity Framework LINQ query do? Describe how it groups customers by tier based on their total purchases.

var customerTiers = context.SalesOrderHeaders
    .GroupBy(o => o.CustomerID)
    .Select(g => new {
        CustomerID = g.Key,
        TotalSpent = g.Sum(o => o.TotalDue),
        Tier = g.Sum(o => o.TotalDue) >= 10000 ? "Gold" :
               g.Sum(o => o.TotalDue) >= 5000 ? "Silver" : "Bronze"
    });

Explique a lógica de negócio numa consulta Prisma

Analyze the logic of this Prisma query and explain how it determines which products are considered "low inventory".

const lowInventoryProducts = await prisma.product.findMany({
  where: {
    SafetyStockLevel: {
      lt: 50
    }
  },
  select: {
    ProductID: true,
    Name: true,
    SafetyStockLevel: true
  }
});

Explique e comente uma consulta Sequelize

Review and explain what this Sequelize query does. Add inline comments to clarify how it calculates total revenue per customer and filters for customers with significant spending:

const results = await SalesOrderHeader.findAll({
  attributes: ['CustomerID', [sequelize.fn('SUM', sequelize.col('TotalDue')), 'TotalSpent']],
  group: ['CustomerID'],
  having: sequelize.literal('SUM(TotalDue) > 5000')
});

Gerar uma consulta SQLAlchemy para uma lista de produtos

Using SQLAlchemy, generate a query to list products that have never been ordered and ask GitHub Copilot to explain the join logic and filtering behavior.

Recuperar informações do cliente usando uma consulta Prisma

In Prisma, write a query that retrieves customers who placed an order in the last 30 days. Explain what the following Prisma query does. Add inline comments to clarify how the date filtering works and how recent orders are determined:

Compreender a intenção de negócios por meio de consultas

O GitHub Copilot ajuda os desenvolvedores a entender não apenas como uma consulta funciona, mas por que ela existe. Esta explicação inclui o propósito real por detrás dos filtros, agrupamentos e agregações de dados. Essas explicações são especialmente úteis durante a integração, permitindo que os desenvolvedores compreendam os objetivos por trás de relatórios, portas lógicas ou métricas do sistema incorporadas em código SQL e ORM.

Descreva os objetivos de negócio numa consulta T-SQL

Describe the business goal of the following SQL query. What insight is it trying to surface?

SELECT TOP 10 CustomerID,
              COUNT(*) AS OrderCount
FROM SalesLT.SalesOrderHeader
GROUP BY CustomerID
ORDER BY OrderCount DESC;

Resumir a intenção de uma consulta T-SQL

Summarize what this query is intended to achieve from a business perspective.

SELECT ProductID,
       SUM(LineTotal) AS TotalSales
FROM SalesLT.SalesOrderDetail
GROUP BY ProductID
HAVING SUM(LineTotal) > 10000;

Descreva a lógica de negócio num procedimento armazenado

Analyze the `SalesLT.uspGetCustomerOrderHistory` stored procedure and describe the business logic it implements.

Explique a lógica de negócio numa consulta LINQ do Entity Framework

Explain this Entity Framework LINQ query and describe what business logic it implements:

var highValueCustomers = context.SalesOrderHeaders
    .Where(o => o.TotalDue > 1000)
    .GroupBy(o => o.CustomerID)
    .Select(g => new { CustomerID = g.Key, OrderCount = g.Count() })
    .OrderByDescending(x => x.OrderCount)
    .Take(10)
    .ToList();

Explique pressupostos de negócio numa consulta Sequelize

Using Sequelize, explain what this query does and describe any business assumptions it makes:

const customerRevenue = await SalesOrderHeader.findAll({
  attributes: ['CustomerID', [sequelize.fn('SUM', sequelize.col('TotalDue')), 'TotalSpent']],
  group: ['CustomerID'],
  having: sequelize.literal('SUM(TotalDue) > 5000')
});

Partilhar a sua experiência

Para nos ajudar a refinar e melhorar o Copilot do GitHub para a extensão MSSQL, use o seguinte modelo de problema do GitHub para enviar seus comentários: Feedback do Copiloto do GitHub

Ao enviar comentários, considere incluir:

  • Cenários testados – Diga-nos em quais áreas você se focou, por exemplo, criação de esquema, geração de consultas, segurança, localização.

  • O que funcionou bem – Descreva todas as experiências que foram suaves, úteis ou que excederam as suas expectativas.

  • Problemas ou bugs – Inclua quaisquer problemas, inconsistências ou comportamentos confusos. Capturas de tela ou gravações de tela são especialmente úteis.

  • Sugestões de melhoria – Compartilhe ideias para melhorar a usabilidade, expandir a cobertura ou melhorar as respostas do Copiloto do GitHub.