Partilhar via


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

Neste quickstarter, 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 SQL, frameworks de mapeamento objeto-relacional (ORM) 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

Certifica-te de que estás ligado a uma base de dados e que tens uma janela de editor ativa aberta com a extensão MSSQL. Quando se liga, o participante @mssql do chat compreende o contexto do seu ambiente de base de dados e pode dar sugestões precisas e conscientes do contexto. Se não se ligar a uma base de dados, o participante do chat não tem o esquema ou 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. Este prefixo garante que o participante do chat percebe que está a pedir assistência relacionada com 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 que áreas se focou, por exemplo, criação de esquemas, geração de consultas, segurança, localização.

  • O que funcionou bem: Descreva quaisquer experiências que tenham sido tranquilas, úteis ou que tenham superado as suas expectativas.

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

  • Sugestões para melhoria: Partilhe ideias para melhorar a usabilidade, expandir a cobertura ou melhorar as respostas do GitHub Copilot.