O que é um Banco de dados?
O que é um Banco de dados? | ||||||
É o lugar onde os dados "físicos" de um sistema/plataforma/site estão armazenados e, normalmente, são contratados serviços de terceiros (amazon, azure, google...) para que isso possa ser feito. Existem coisas que precisam ser asseguradas, como segurança dos dados, backup, disponibilidade e velocidade de acesso... | ||||||
Abaixo, o banco de dados físico, um conjunto de discos que armazenam os dados em binário | ||||||
| ||||||
Como a imagem acima dá a entender, os dados ficam armazenados em um conjunto de discos rígidos, formados por um monte de zero's e um's e que para o gerenciador do banco, não trazem sentido algum. Para interpretar esses dados, utilizamos um negócio que se chama Sistema de Gerenciamento de Banco de Dados ou SGBD. | ||||||
Mas o que é um SGBD? | ||||||
Um SGBD é um software que nos possibilita enxergar e manipular essas informações do banco de dados que são ilegíveis para humanos. Ele basicamente transforma os zero's e um's em tabelas com linhas e colunas que conseguem se relacionar entre si, trazendo assim uma coerência para os dados. Exemplos de SGBDs são: PostgreSQL, MySQL, OracleDB por enquanto falaremos apenas dos relacionais. | ||||||
Além dos motivos já citados, outro motivo de se utilizar serviços de terceiros para instanciar o teu DB é que para realizar uma transação (operação) nele, tem um conjunto de propriedades de tem de ser atendidas e que são denominadas ACID, que é um acrônimo para Atomicidade, Consistência, Isolamento e Durabilidade. Vos explico cada uma na sequência do pente: | ||||||
Atomicidade: Em uma transação que envolve mais de uma parte, ou essa transação é executada totalmente ou não será executada, isso garante que cada transação seja atômica. | ||||||
Consistência: A transação cria um novo estado válido dos dados que em caso de falha retorna ao estado anterior. | ||||||
Isolamento: Uma transação em andamento e que ainda não foi validada deve permanecer isolada de qualquer outra transação. | ||||||
Durabilidade: Os dados validados são registados pelo sistema de uma forma que mesmo no caso de uma falha, os dados estarão disponíveis em seu estado salvo. | ||||||
| ||||||
Ótimo, acho que já estamos convencidos de que é melhor contratar um serviço pronto do que implementar do zero e passar necessidade. Mas como nos comunicamos com o SGBD? Aí que entra o tal do SQL. | ||||||
SQL (Structured Query Language) | ||||||
É a linguagem que nós humanos conseguimos escrever instruções que o SGBD entenda. Ela é uma linguagem bastante parecida com um inglês estruturado e permite definir o comportamento, estrutura e modo como os dados devem ficar dentro do BD e também inserir os dados nele. A seguir um exemplo simples de uma criação de tabela em SQL para vocês não ficarem no escuro: | ||||||
| ||||||
Antes de entrar mais a fundo no SQL, eu sinto muito (não tanto), mas precisamos falar sobre algo mais teórico, que é como organizar os dados em um banco. | ||||||
Modelagem de Banco de Dados ao meu ver é uma das principais responsabilidades e capacidade de um desenvolvedor Backend, pois é aqui que é definido a escalabilidade do teu sistema, organização dos dados (algo que pode facilitar a velocidade de implementação e entendimento do mesmo). Nessa modelagem, temos algumas coisas que precisamos definir: | ||||||
Entidades: É a representação de um conjunto de informações sobre um determinado conceito do sistema - Uma tabela e que graficamente é utilizado o retângulo para sua representação. Essa entidade possui um identificador único chamado de Chave Primária que é utilizada para identificar uma ocorrência/linha da coluna da tabela, e que para isso, ela precisa ser única e não nula. Também tem características que são chamadas de atributos. Por ex: Uma entidade/tabela chamada Médico possuí características/atributos como CRM e que gráficamente são representados por setas com uma bolinha na ponta. Veja: | ||||||
| ||||||
Tá mas e esse Losango no meio escrito Atendimento? | ||||||
Esse losango é utilizado pra representar uma relação entre duas entidades. Essa relação possui uma cardinalidade que é representada em (0,n)/(minima,máxima) e que basicamente define a ocorrência de uma dentro da outra. Elas se relacionam por uma chave estrangeira que é uma chave primária em outra tabela. | ||||||
Essas relações possuem cardinalidades básicas pré definidas, vamos nos ater apenas a ocorrência máxima delas. | ||||||
1 - N: Uma ocorrência de uma entidade pode estar presente várias vezes em outra, mas não o contrário. Relação de Marca-ModeloDeTenis. | ||||||
1 - 1: Relação única entre duas tabelas, ou seja, uma ocorrencia em cada uma. | ||||||
N - N: Exemplo filme e ator, onde um ator pode estar em vários filmes e um filme tem vários atores. Essa relação é a mais problemática, onde ela precisa gerar outra tabela, chamada TabelaRelação, gerando assim, duas novas relações 1-n. | ||||||
Desafio: Modelem um sistema que armazene informações sobre alunos de uma universidade. |