JayCesar / generation-bootcamp

[💻 Bootcamp ] Um programa de estudos de 3 meses da Generation Brasil, sendo cada qual destinado a diferentes tecnologias.
4 stars 0 forks source link

Introdução a Banco de Dados com MySQL #18

Closed JayCesar closed 1 year ago

JayCesar commented 1 year ago

O que é um banco de dados?

Segundo Korth, um banco de dados é "uma coleção de dados inter-relacionado, representando informações sobre um domínio específico”, ou seja, sempre que for possível agrupar informações que se relacionam e tratam de um mesmo assunto, posso dizer que tenho um banco de dados. Por exemplo, as informações armazenadas de uma lista telefônica, um registros de usuários em um sistema de e-commerce, um sistema de controle de RH de uma empresa.

SGBD

É um sofwtare que possui recursos capazes de manipular as informações do banco de dados e interagir com o usuário. Em inglês seria DBMS: Database Management System;

O objetivo de um Sistema de Banco de Dados é isolar o usuário dos detalhes internos do banco de dados (promover a abstração de dados) e promover a independência dos dados em relação às aplicações, ou seja, tornar independente da aplicação, a estratégia de acesso e a forma de armazenamento.

Tipos de bacnos de dados

Relacionais:

Organizados em tabelas e depedne de uma integração de colunas e linhas;

image

A linguagem usada para manipular essas informações é o SQL (Structured Query Language). Na imagem abaixo temos alguns exemplos de Banco de dados Relacionais:

image

Não Relacionais:

O formato Não Relacional atende uma parcela de dados que não podem ser inseridos e acessados através de tabela, como por exemplo, imagens. É muito valorizado pela sua alta performance e por manter todos os registros em um único lugar. Outro uso muito comum do Banco de dados Não Relacional são as áreas de conhecimento como Data Science, devido ao grande volume de dados. Não é necessa´rio utilizar um sistema de relacionamento entre informações! A linguagem utilizada é o NoSQL (Not Only SQL). Na imagem abaixo temos alguns exemplos de Banco de dados Não Relacionais:

image

SQL NoSQL
Armazenamento de Dados Estruturados por Tabela Armazenamento de Dados estruturados e não-estruturados por colunas, grafos, chave-valor e documentos.
Esquema estático Esquema dinâmico
Maturidade de suporte maior (geralmente pago) Suporte por comunidade independente (open source)
Escalabilidade vertical Escalabilidade horizontal
Pago e Gratuito Gratuito
O desempenho não é alto em todas as consultas. Não suporta pesquisas e cruzamentos muito complexos. Alto desempenho em consultas
Necessidade de predefinição de um esquema de tabela antes da adição de qualquer dado Altamente flexível (fácil adição de colunas e campos de dados não estruturados)
JayCesar commented 1 year ago

Introdução ao Modelo Relacional

Os Bancos de dados Relacionais são constituidos por 4 elementos básicos: campos, colunas, linhas e tabelas:

image


Linguagem SQL

SQL Structured Query Language é a linguagem utilizada pelos bancos de dados relacionais! Ela está dividida em 2 categorias principais:

DML - Linguagem de Manipulação de Dados: instruções DML indicam uma ação para o SGBD executar. Utilizados para recuperar, inserir e modificar um registro no banco de dados. Seus principais comandos são: INSERT, DELETE, UPDATE e SELECT;

DDL - Linguagem de Definição de Dados: instruções DDL são responsáveis pela criação, alteração e exclusão dos objetos no banco de dados, ou seja, pela estrutura do Banco e suas Tabelas. Seus principais comandos são: CREATE DATABASE, CREATE TABLE, ALTER TABLE e DROP TABLE;

Tipos de Dados

Dado Tipo
Texto VARCHAR(n)
Caractere CHAR(n)
Texto muito grande TEXT
Data DATE
Data e Hora DATETIME
Hora TIME
Data e Hora do sistema TIMESTAMP
Inteiro INT
Inteiro grande BIGINT
Ponto Flutuante FLOAT
Ponto Flutuante mais casas decimais DOUBLE
Numero decimal com ponto fixo (10,0) DECIMAL
Booleano (Verdadeiro ou Falso) BOOLEAN
Valores pequenos podendo ser (0 e 1) Bit
Guardar Bytes (arquivos e imagens) BLOB

Chave Primária (PK)

A chave primária é o que torna a linha ou o registro de uma tabela únicos. Geralmente, é utilizada uma sequência numérica automática para a geração dessa chave para que ela não venha a se repetir. Nenhuma linha possuirá o mesmo valor na coluna que é chave primária, ou seja, um identificador único do registro.

Chave Estrangeira (FK)

A chave estrangeira define um relacionamento entre tabelas, comumente chamado de integridade referencial. Esta regra baseia-se no fato de que uma chave estrangeira em uma tabela é a chave primária em outra. Na imagem abaixo, a tabela produtos tem o campo categoria_id (Chave Estrangeira), isto é, ela pode se repetir na tabela de produtos. No entanto, deve ser único na tabela de categorias (Chave Primária), pois assim terá uma referência exclusiva.

image

MER - Modelo Entidade Relacionamento

Assim como todo os projetos, devemos iniciar por um “esboço” do que de fato será nossa base de dados, quando desenhamos esta estrutura, á chamamos de MER - Modelo Entidade Relacionamento onde com apenas um papel e uma caneta podemos desenhar o modelo do nosso banco de dados expondo todos os relacionamento entre as tabelas.

image

Um Modelo Entidade Relacionamento é uma maneira sistemática de descrever e definir um processo de negócio. O processo é modelado como componentes (Entidades) que são ligadas umas as outras por Relacionamentos que expressam as dependências e exigências entre elas.

No exemplo acima, uma Categoria pode possuir zero ou mais Produtos, mas um Produto só pode ser classificado em apenas uma Categoria.

Entidades podem ter várias propriedades (Atributos) que os caracterizam. Uma Entidade e seus Atributos se transformam em uma ou mais Tabelas no Banco de dados, dependendo do tipo Relacionamento.

DER - Diagrama Entidade Relacionamento

O DER - Diagrama Entidade Relacional também pode ser visto como um “esboço” de uma forma mais detalhada em comparação ao MER, porém ele é feito através de uma ferramenta especifica, onde podemos compartilhar de uma forma segura com os demais membros de nossa equipe, e também extrair do nosso DER o código SQL usado para criar o Banco de dados.

⚠️Conclusão: MER é um esboço inicial e DER é um esboço posterior com masi detalhes, tornando possível a extração do código SQL.

JayCesar commented 1 year ago

Entendendo: Relacionamento entre Tabelas

Após terminar o DER, pe preciso definir o relacionamento entre tabelas:

- Relacionamento 1…1 (um para um): cada uma das duas entidades envolvidas referenciam obrigatoriamente apenas uma unidade da outra. Por exemplo, em um banco de dados de currículos, cada usuário cadastrado pode possuir apenas um currículo na base e cada currículo só pode pertencer a um único usuário cadastrado.

image

- Relacionamento 1…n (um para muitos): uma das entidades envolvidas pode referenciar várias unidades da outra, porém, do outro lado cada uma das várias unidades referenciadas só pode estar ligada a uma unidade da outra entidade. Por exemplo, em um sistema de plano de saúde, um usuário pode ter vários dependentes, mas cada dependente só pode estar ligado a um usuário principal.

image

- Relacionamento n…n ou … (muitos para muitos): neste tipo de relacionamento cada entidade, de ambos os lados, podem referenciar múltiplas unidades da outra. Por exemplo, em um sistema de biblioteca, um título pode ser escrito por vários autores, ao mesmo tempo em que um autor pode escrever vários títulos. Assim, um objeto do tipo autor pode referenciar múltiplos objetos do tipo título, e vice versa.

image

Associações entre tabelas

Associações de tabelas ou busca por JOIN podem ser utilizadas para diversas finalidades, como converter em informação os dados encontrados em duas ou mais tabelas. A cláusula JOIN é usada para combinar dados provenientes de duas ou mais tabelas do banco de dados, baseado em um relacionamento entre colunas destas tabelas. Há três categorias principais de JOINS:,

INNER JOIN: Nas pesquisas com INNER JOIN resultado trará somente as linhas que sejam comum nas 2 tabelas, ligadas pelos campos das tabelas em questão na pesquisa.

image

LEFT JOIN A cláusula LEFT JOIN permite obter não apenas os dados relacionados de duas tabelas, mas também os dados não relacionados encontrados na tabela à esquerda da cláusula JOIN. Caso não existam dados relacionados entre as tabelas à esquerda e a direita do JOIN, os valores resultantes de todas as colunas da lista de seleção da tabela à direita serão nulos.

image

RIGHT JOIN Ao contrário do LEFT JOIN, a cláusula RIGHT JOIN retorna todos os dados encontrados na tabela à direita do JOIN. Caso não existam dados associados entre as tabelas à esquerda e à direita de JOIN, serão retornados valores nulos.

image

Exemplos

Os exemplos foram feitos na prática: https://github.com/JayCesar/generation/tree/main/bloco_02/sql/cookbook_sql