Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: SQL e a Teoria de Conjuntos

_Créditos das imagens: Grok ### 🚀 Você sabia? SQL e a Teoria de Conjuntos estão mais conectados do que imagina! A linguagem SQL (Structured Query Language) tem suas raízes na teoria de conjuntos, um conceito matemático que trata de coleções de objetos. Em bancos de dados relacionais, cada tabela é um conjunto de linhas (ou tuplas), e operações como SELECT, JOIN, UNION e INTERSECT são inspiradas em operações como união (∪), interseção (∩) e diferença (-). Vamos explorar como isso funciona? 👇 --- ### 🔍 Principais Operações de Conjuntos no SQL Imagine duas tabelas simples: Clientes (Conjunto A): ``` +----+-------+ | ID | Nome | +----+-------+ | 1 | Ana | | 2 | João | | 3 | Maria | +----+-------+ ``` Pedidos (Conjunto B): ``` +----+-----------+ | ID | Cliente_ID| +----+-----------+ | 1 | 1 | | 2 | 2 | | 3 | 1 | +----+-----------+ ``` #### 1. União (UNION) - O que faz: Junta tudo de A e B, sem duplicatas (A ∪ B). - Exemplo: ```sql SELECT id FROM cli...

BlackTDN :: MSSQL :: Identificando e Removendo Tabelas Vazias no Ambiente de Teste do Sistema ERP TOTVS Microsiga Protheus

# Identificando e Removendo Tabelas Vazias no Ambiente de Teste do Sistema ERP TOTVS Microsiga Protheus

No universo da tecnologia e dos sistemas empresariais, a organização e manutenção de bancos de dados desempenham um papel crucial. O sistema ERP (Enterprise Resource Planning) da TOTVS Microsiga Protheus é uma das principais soluções utilizadas por empresas para gerenciar recursos e informações. Nesse contexto, é fundamental garantir que o banco de dados do Protheus esteja otimizado e livre de informações desnecessárias.

Neste artigo, apresentamos um script SQL, para MSSQL, que seleciona todas as tabelas vazias em uma base de teste do sistema ERP da TOTVS Microsiga Protheus e gera instruções para eliminá-las.

```sql
-- Este script SQL foi desenvolvido para ambiente de teste. Execute com responsabilidade.
WITH t AS (
       SELECT t.TABLE_SCHEMA
			 ,t.TABLE_NAME
         FROM INFORMATION_SCHEMA.TABLES t
        WHERE SUBSTRING(t.TABLE_NAME, 4, 3) = '990'
          AND LEFT(t.TABLE_NAME, 3) NOT IN ('SXP', 'SXK', 'SXT', 'SXV')
)
  SELECT 'DROP TABLE [' + t.TABLE_SCHEMA + '].[' + t.TABLE_NAME + ']' AS QDROP
   FROM sys.partitions p
RIGHT JOIN t ON OBJECT_NAME(OBJECT_ID)=t.TABLE_NAME
  WHERE OBJECT_NAME(OBJECT_ID)=t.TABLE_NAME
      AND OBJECTPROPERTY(OBJECT_ID, 'ISUSERTABLE') = 1
      AND SUBSTRING(OBJECT_NAME(OBJECT_ID), 4, 3) = '990'
      AND LEFT(OBJECT_NAME(OBJECT_ID), 3) NOT IN ('SXP', 'SXK', 'SXT', 'SXV')
      AND SUBSTRING(t.TABLE_NAME, 4, 3) = '990'
      AND LEFT(t.TABLE_NAME, 3) NOT IN ('SXP', 'SXK', 'SXT', 'SXV')
      AND p.ROWS = 0
GROUP BY  t.TABLE_SCHEMA
         ,t.TABLE_NAME
ORDER BY t.TABLE_NAME
```
*(sys.partitions)*

Este script SQL executa uma série de verificações para identificar as tabelas que estão vazias e atendem a critérios específicos. Primeiramente, ele procura por tabelas cujos nomes têm '990' na quarta, quinta e sexta posições, o que pode ser uma convenção no sistema Protheus. Além disso, ele não exclui tabelas que começam com 'SXP', 'SXK', 'SXT', ou 'SXV': presumivelmente tabelas do sistema que não devem ser removidas.

Em seguida, a consulta verifica se essas tabelas vazias são realmente tabelas de usuário (não tabelas do sistema) e se possuem zero registros. Se todas essas condições forem atendidas, a consulta gera uma instrução SQL para remover a tabela.

Isso facilita o trabalho de administradores de banco de dados e desenvolvedores do sistema Protheus, permitindo-lhes identificar e remover tabelas vazias que não contribuem para o funcionamento eficiente do sistema, liberando recursos e espaço em disco.

Lembre-se de que, antes de executar uma instrução `DROP TABLE`, é crucial fazer backup dos dados, realizar testes em um ambiente de teste e garantir que a exclusão da tabela vazia seja realmente segura e desejada. A manutenção adequada do banco de dados é essencial para um desempenho consistente e eficiente do sistema ERP Protheus.

----

*O ChatGPT colaborou com esta publicação*

Comentários

Postagens mais visitadas