#piaget #banco-de-dados #psicologia #programacao #analogia

os esquemas do piaget sao literalmente schema de banco de dados

sim. sem metafora. sem exagero. os esquemas do piaget sao literalmente schema de banco de dados (˶˃ ᵕ ˂˶)

ontem eu tava estudando jean piaget pra uma materia e em algum momento meu cerebro de dev simplesmente tiltou. toda vez q a professora explicava um conceito eu so enxergava SQL. e nao eh forçação de barra nao, a parada encaixa perfeitamente.

a programação é a abstração do mundo real. e o piaget, sem saber, descreveu o ciclo de vida de uma migration sql decadas antes do sql existir.

esquemas = schema do banco

piaget fala q a gente nasce com uns esquemas mentais basicos e vai construindo eles ao longo da vida. sao as estruturas q a mente usa pra entender e categorizar tudo q existe.

traduzindo pra dev isso é o DDL do cerebro. as tabelas, as colunas, os tipos, as constraints. tudo q vc conhece e entende do mundo ta mapeado nessa estrutura.

quando vc é bebe vc so tem umas tabelas bem simples tipo "coisa_q_mexe" e "coisa_q_faz_barulho". ai com o tempo vc vai criando mais tabelas e colunas conforme interage com o ambiente. tipo um banco q começa vazio e vai sendo normalizado aos poucos.

e o melhor é q esse schema nunca ta 100% completo. ta sempre evoluindo. igual banco de produção né (¬_¬)

assimilação = INSERT INTO

assimilação é quando vc encontra algo novo e tenta encaixar nos esquemas q ja existem.

tipo, a criança só conhece cachorro. ela vê um cavalo e fala "cachorro grande!"

oq aconteceu no banco?

INSERT INTO cachorro (nome, tamanho, patas, rabo)
VALUES ('cavalo', 'grande', 4, true);

o banco aceitou de boa. pq o schema atual da conta de guardar esse dado provisoriamente sem quebrar a logica. o cavalo tem patas, tem rabo, tem pelos... os campos batem. a info nova foi inserida sem violar constraint nenhuma (≧◡≦)

a assimilação é tipo um INSERT q funciona dentro do schema existente. se os campos encaixam, entra. mesmo q o dado esteja "errado", o banco nao questiona, só armazena.

e é assim q a gente aprende coisas novas no inicio. tenta encaixar no q ja sabe. "ah isso aqui é tipo um X q eu ja conheço". mesma logica.

acomodação = ALTER TABLE

só q uma hora a tabela cachorro começa a dar problema.

a criança percebe q o cavalo faz "iiirrrrí" em vez de latir. e come capim. e tem uma pata q faz pocotó no chao.

a tabela cachorro nao tem coluna pra "relincho" nem pra "come_capim". os dados nao encaixam mais.

o sistema entra em desequilibrio (desconforto cognitivo). as constraints tao gritando. o banco nao aceita mais INSERT simples.

-- era isso q dava erro, a tabela cachorro nao tem esses campos
INSERT INTO cachorro (nome, som, comida, tamanho)
VALUES ('cavalo', 'relincho', 'capim', 'grande');
-- constraint violation! desequilibrio!

ai vc é obrigada a mudar a estrutura.

ALTER TABLE cachorro DROP COLUMN comida;

CREATE TABLE cavalo (
  id SERIAL PRIMARY KEY,
  nome VARCHAR(100),
  som VARCHAR(50),
  comida VARCHAR(50),
  tamanho VARCHAR(20)
);

INSERT INTO cavalo (nome, som, comida, tamanho)
VALUES ('cavalo', 'relincho', 'capim', 'grande');

a acomodação é exatamente isso. vc modifica o schema mental pra dar conta da informação nova q nao encaixava no schema antigo.

as vezes é só adicionar uma coluna (tipo aprender q cachorro tambem pode ser marrom, nao so preto). as vezes é criar uma tabela inteira nova (cavalo é um animal diferente daqueles). é um ALTER TABLE na mente (˶˃ ᵕ ˂˶)

equilibração = commit da migration

e a equilibração é o momento mais satisfatorio de todos.

depois de criar as tabelas novas e rodar os ALTER TABLE, vc dá o commit da migration.

COMMIT;

o banco sai daquele estado de conflito e volta a ficar estavel e limpo. as querys voltam a funcionar. os dados tao organizados do jeito certo.

a mente da criança entrou em equilibrio de novo. ela entendeu q cachorro e cavalo sao coisas diferentes. aprendeu. o sistema ta pronto pra rodar novas querys sem crashar (ノ´ヮ`)ノ*: ・゚

e é isso q piaget chama de equilibração: o processo de sair do desequilibrio (duvida, conflito gerado pelo novo) e chegar num equilibrio melhor q o anterior. aprendizado efetivo.

é literalmente o ciclo de uma migration bem sucedida.

o ciclo todo junto

se vc pensar no ciclo completo ele fica mais ou menos assim:

-- estado inicial: schema basico, tudo em equilibrio
-- encontra estimulo novo (cavalo)

-- tentativa 1: assimilação
INSERT INTO cachorro (...) VALUES (...);
-- funcionou temporariamente, dado guardado

-- detecta anomalia
SELECT * FROM cachorro WHERE nome = 'cavalo';
-- os dados nao batem com a realidade
-- desequilibrio!

-- acomodação
ALTER TABLE cachorro DROP COLUMN comida;
CREATE TABLE cavalo (...);
INSERT INTO cavalo (...) VALUES (...);

-- equilibração
COMMIT;
-- sistema estavel de novo, pronto pra proxima query

pq isso é tao based

a programação tenta imitar exatamente como a gente processa e organiza as coisas no mundo real.

os bancos de dados relacionais nao surgiram do nada. eles sao uma abstração de como a mente humana categoriza informação. tabelas, colunas, relações, constraints... tudo isso existe na nossa cabeça antes de existir no postgres.

e o piaget, sem nunca ter escrito uma linha de codigo, descreveu o ciclo de vida de uma migration sql. sera q ele manjava de Cobol? ( ̄▽ ̄)

enfim. fica ai o pensamento aleatorio de uma dev q tava estudando numa noite de sexta.