AnswerBun.com

É recomendável utilizar o tipo JSON nas colunas na tabela abaixo

Stack Overflow em Português Asked by Ismael Silva Limq on December 18, 2020

Estou aprendendo banco de dados relacionais, então resolvi criar um sistema de administração de escolas, fiz uma tabela unicamente para guardar todo o histórico escolar do aluno (todos os boletins com outras informações). Na tabela, cada coluna de um boletim é do tipo JSON, esses arquivos terão um formato pré-definido, achei que seria uma boa usar JSON mas agora fiquei com um pé atrás.
Em fim, é recomendável NO MEU CASO usar o tipo JSON nas colunas?

[Abaixo encontra-se uma parte da tabela como imagino em MySQL]

'''

CREATE TABLE historico_esc_aluno (

        boletim1SerieF1 JSON NOT NULL,
        boletim2SerieF1 JSON NOT NULL,
        boletim3SerieF1 JSON NOT NULL,
        boletim4SerieF1 JSON NOT NULL,
        boletim5SerieF2 JSON NOT NULL,
        boletim6SerieF2 JSON NOT NULL,
        boletim7SerieF2 JSON NOT NULL,
        boletim8SerieF2 JSON NOT NULL,
        boletim1SerieM1 JSON NOT NULL,
        boletim2SerieM2 JSON NOT NULL,
        boletim3SerieM3 JSON NOT NULL,

) DEFAULT charset = utf8;

'''

Pensei em usar MongoDB (para fazer o histórico somente), porém vi um vídeo que falava que não é a melhor prática quando se quer guardar informações a longo prazo (dados que não podem ser perdidos).

One Answer

Estou aprendendo banco de dados relacionais, então resolvi criar um sistema de administração de escolas

Se você está aprendendo banco de dados relacional, deveria deixar de lado o tipo de dado JSON e procurar entender modelagem conceitual e normalização de dados com os tipos mais comuns, para poder então tomar a decisão de utilizar JSON ou não neste cenário específico.

Não há problemas no tipo JSON, há casos em que ele pode ser útil em um banco relacional, mas quando se utiliza este tipo de banco você normalmente está procurando pelo ACID, uma sigla para indicar Atomicidade, Consistência, Isolamento e Durabilidade.

Por JSON ser um documento, é difícil garantir sua consistência, constraints semelhantes ao comportamento de chaves estrangeiras são mais complexas de serem criadas. A consulta de valores específicos nesta coluna pode tornar-se mais difícil, e você terá de usar funções específicas do SGBD para manipular a informação. Além isso, você precisará entender a diferença de desempenho das operações que você mais vai utilizar para saber se é viável para seu projeto.

Enfim, é recomendável NO MEU CASO usar o tipo JSON nas colunas?

Não há nenhum benefício em utilizar um banco de dados relacional para ter uma tabela apenas com colunas do tipo JSON, principalmente quando seus dados tem potencial de consulta, manipulação e construção de relatórios. Você deve entender sua estrutura e normalizar ela para atender suas necessidades.

Pensei em usar MongoDB (para fazer o histórico somente), porém vi um vídeo que falava que não é a melhor prática quando se quer guardar informações a longo prazo (dados que não podem ser perdidos).

Você precisa entender os motivos quando alguém fala que não é a melhor prática (ou que é a melhor prática).

Enquanto os bancos de dados relacionais garantem o ACID, um banco de dados não relacional pode abrir mão de um desses pilares para garantir algum outro benefício, sendo este normalmente maior velocidade, escalabilidade, suporte a agregações, etc. O MongoDB por exemplo, até algum tempo atrás não possuía recurso para transações, algo que em banco de dados relacionais é utilizado para garantir atomicidade (todas ou nenhuma das operações serão realizadas).

Seus dados não serão perdidos utilizando MongoDB, mas se um banco de dados não relacional é o ideal para o seu cenário é uma decisão que você precisa tomar considerando as características das duas tecnologias.

Documentação do tipo de dado JSON no MYSQL, falando sobre normalização e suas manipulações.

Correct answer by Vinícius on December 18, 2020

Add your own answers!

Related Questions

Por que a função retorna o valor undefined

2  Asked on September 26, 2021 by lucas-ribeiro

         

Executar evento em botão tkinter

1  Asked on March 18, 2021 by rodrigo-cesarino

   

como executar uma procedure com parametro em php

1  Asked on March 6, 2021 by teste1234

   

Criar uma Trigger com JOIN para duplicar os dados

1  Asked on March 5, 2021 by richard-lucas

   

ConcurrentModificationException como proceder?

2  Asked on February 28, 2021 by roknauta

   

Materialize.css inserir icon por cima de uma imagem do card

1  Asked on February 26, 2021 by laranja-mecnica

     

Consultar grupos de distribuição do Active Directory

1  Asked on February 25, 2021 by renato-souza

 

Capturar dados de classes com python

0  Asked on February 24, 2021 by bruno-rayol

     

Como faço para não precisar ficar fazendo requisição toda hora a api?

1  Asked on February 24, 2021 by eduardo-nogueira

     

Como abrir ou fechar todos os itens de um Accordion

1  Asked on February 23, 2021 by fabrcio

     

Utilizar DataTable com Lazy dentro de vários p:tab

0  Asked on February 22, 2021 by ramon-borges

         

Renomear Extent Report após execução dos testes

0  Asked on February 22, 2021 by julliane-freitas

     

Números Palíndromos em C

1  Asked on February 21, 2021 by matheusramos43

 

Preencher lista e finalizar laço python

2  Asked on February 21, 2021 by oroborus_0

       

Formatação CSS para geração de PDF

1  Asked on February 20, 2021 by amanda-lima

   

Identificar um com jQuery

3  Asked on February 19, 2021

   

Ask a Question

Get help from others!

© 2022 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, MenuIva, UKBizDB, Menu Kuliner, Sharing RPP, SolveDir