- Álgebra Relacional
- Programação em Banco de Dados
- Ciclo de Valoração de Dados
- Modelo Relacional
- Modelo Não Relacional
- Modelo Graph
- Modelo Key-Value
- Modelo Wide-Column
Uma base de dados relacional é uma coleção de tabelas de duas dimensões. O modelo relacional tem como base a Álgebra Relacional e concatena quatro elementos básicos:
- Tabelas
- Colunas
- Linhas
- Campos
Esses elementos são manipulados comumente através da Linguagem SQL
, uma linguagem declarativa orientada a banco de dados. O manejo desses elementos geram:
-
Relações entre os objetos
-
Operadores que criam novas relações
-
Operações que manipulam relações inteiras
-
Resultados das operações, ou seja, as novas relações que podem ser manipuladas por operações de teoria dos conjuntos (álgebra relacional) e funções agregadas
Operações relacionadas à Teoria dos Conjuntos.
R1 U R2
Considerando dois conjuntos de dados A e B que possuem o mesmo tipo de tupla, ou seja:
- Possuem o mesmo número de atributos
- Os atributos correspondentes tem o mesmo domínio
Então, o resultado da UNIÃO entre esses conjuntos é um conjunto C com todas as tuplas de A e B, sem repetir os dados.
R1 ∩ R2
Produz uma relação que inclui as tuplas em comum de R1 e R2, sendo que os dois conjuntos possuem o mesmo tipo de tupla.
- Selecionando uma tupla de dados entre bancos distintos:
SELECT *
FROM nome_do_banco.primeira_tabela AS p
INNER JOIN nome_do_banco.segunda_tabelas AS s
ON p.chave_primeira_tabela = s.chave_segunda_tabela
R1 - R2
Produz uma relação que inclui todas as tuplas de R1 que não constam em R2. Neste caso os dois conjuntos também possuem o mesmo tipo de tupla.
- Selecionando sequências de dados exclusivas da primeira tabela + interseção de dados:
SELECT *
FROM nome_do_banco.primeira_tabela AS p
LEFT JOIN nome_do_banco.segunda_tabela AS s
ON p.chave = s.chave
- Selecionando sequências de dados exclusivas da segunda tabela + interseção de dados:
SELECT *
FROM nome_do_banco.primeira_tabela AS p
RIGHT JOIN nome_do_banco.segunda_tabela AS s
ON p.chave = s.chave
- Selecionando sequências de dados exclusivas da primeira tabela (RIGHT EXCLUDING JOIN):
SELECT *
FROM nome_do_banco.primeira_tabela AS p
RIGHT JOIN nome_do_banco.segunda_tabela AS s
ON p.chave = s.chave
WHERE p.chave IS NULL
- Selecionando sequências de dados exclusivas da segunda tabela (LEFT EXCLUDING JOIN):
SELECT *
FROM nome_do_banco.primeira_tabela AS p
LEFT JOIN nome_do_banco.segunda_tabela AS s
ON p.chave = s.chave
WHERE s.chave IS NULL
R1 X R2
Esta relação possui os atributos de R1 e de R2, incluindo como tuplas todas as possíveis combinações de tuplas de R1 e R2.
Produz uma nova relação com apenas alguns atributos de R e exclui possíveis tuplas duplicadas.
- Eliminando dados duplicados:
SELECT
DISTINCT(primeiro_campo)
FROM nome_do_banco.nome_da_tabela
ORDER BY primeiro_campo
- Distinguindo strings:
SELECT *
FROM nome_do_banco.nome_da_tabela
WHERE nome_do_campo LIKE 'Palavra%'
I. Localiza dados que possuam ou não um dado de texto específico. É um comando
case sensitive
.
II. O
%
indica a posição do critério de texto em relação ao valor do campo.
III. Traz todos os campos que possuem
"Palavra"
antes do restante dos dados
IV. Se =
%Palavra
, traria todos os campos onde "Palavra" está no final do texto
V. Caso =
%Palavra%
, traria qualquer dado que possua "Palavra" no meio dos dados
Para que funcione, a quantidade de campos do SELECT e os tipos precisam estar parametrizados.
- Unindo seleções:
SELECT a.tabela AS campo_exemplo,
a.tabela2 AS campo_exemplo2
FROM nome_do_banco.primeira_tabela a
UNION
SELECT b.tabela3 AS exemplo,
b.tabela4 AS exemplo2
FROM nome_do_banco.segunda_tabela b
Incluem a seleção, filtragem e ordenação dos dados. As tabelas no SGBD podem ser criadas a qualquer momento, ficando disponíveis para CRUD logo após sua criação. Um banco de dados só deve ser utilizado para CRUD:
Create
Read
Update
Delete
Comandos usados para estruturar, criar, modificar e remover tabelas ou databases, gerenciando objetos.
create
alter
drop
CREATE USER 'myapp'@'%' IDENTIFIED BY 'senha'
WITH MAX_QUERIES_PER_HOUR 200
MAX_UPDATES_PER_HOUR 100
MAX_CONNECTIONS_PER_HOUR 50
MAX_USER_CONNECTIONS 30;
Compila comandos SELECT
repetidos muitas vezes, deixando essa visão de consulta sempre disponível.
CREATE VIEW ClientesGold
AS
SELECT Nome1, Sobrenome1
FROM Clientes
WHERE Gold = 'S';
Pode ser usado afim de manter um histórico de alterações de registros (logs
) ou até para manter integridade.
CREATE TRIGGER nome_do_gatilho ON dono.Nome_da_Tabela
/* Opções de comando CRUD do gatilho */
FOR INSERT
FOR UPDATE
FOR SELECT
FOR DELETE
AS
/* Código a ser executado */
Um padrão comum adotado para nomes de tabelas é o tb_nome
. O nome das colunas é de livre escolha, já o seu tipo pode ser numérico
ou não numérico
e o seu tamanho está relacionado a sua alocação na memória do banco.
Quanto as restrições, sua classificação se dá através de NULL
E NOT NULL
e sua integridade pelo comando CONSTRAINT
, para primary key PK
e foreing key FK
.
CREATE TABLE tb_nome_da_entidade
(
nome_da_coluna TIPO(TAMANHO) [RESTRIÇÕES],
entidade1 VARCHAR(40) NOT NULL,
entidade2 INTEGER NOT NULL,
entidade3 DATE,
CONSTRAINT tb_nome_da_entidade_pk PRIMARY KEY (entidade1),
CONSTRAINT tb_nome_da_entidade_fk FOREIGN KEY (entidade2) REFERENCES tb_entidade2(entidade2)
);
DROP TABLE nome_da_tabela
ALTER TABLE nome_da_tabela
ALTER TABLE nome_da_tabela ADD nome_campo TIPO
ALTER TABLE nome_da_tabela DROP COLUMN** nome_campo
Usada para recuperar, inserir, remover e alterar dados inativos na database.
select
insert
update
delete
A clásula WHERE
é usada para filtrar os registros, sendo seu uso SEMPRE RECOMENDÁVEL. Para atualizar apenas um registro, usar a clausula na chave primária.
Igual =
Maior >
Menor <
Maior igual >=
Menor igual <=
Diferente <>
USE nome_do_banco
SELECT *
FROM nome_do_banco.nome_da_tabela
SELECT *
FROM nome_do_banco.nome_da_tabela
WHERE nome_do_campo = 'Critério'
Na seleção de dados, é possível criar hélias, ou seja, apelidos para os campos que existem nas tabelas do banco.
SELECT
primeiro_campo as novo_nome_do_campo
FROM nome_do_banco.nome_da_tabela
SELECT
primeiro_campo,
segundo_campo,
terceiro_campo
FROM nome_do_banco.nome_da_tabela
WHERE nome_do_campo = 'Critério'
SELECT
primeiro_campo
FROM nome_do_banco.nome_da_tabela
WHERE nome_do_campo = 'Critério'
AND nome_outro_campo = 'Outro critério'
SELECT
primeiro_campo
FROM nome_do_banco.nome_da_tabela
WHERE nome_do_campo = 'Critério'
OR nome_outro_campo = 'Outro critério'
SELECT
primeiro_campo
FROM nome_do_banco.nome_da_tabela
WHERE nome_do_campo = 'Critério'
AND nome_outro_campo != 'Outro critério'
SELECT
primeiro_campo as novo_nome_do_campo
FROM nome_do_banco.nome_da_tabela
WHERE nome_do_campo = 'Critério'
ORDER BY novo_nome_do_campo, nome_do_campo
SELECT
primeiro_campo
FROM nome_do_banco.nome_da_tabela
WHERE nome_do_campo = 'Critério'
ORDER BY primeiro_campo DESC
Comandos utilizados pelo administrador para controlar o acesso dos usuários.
grant
revoke
Algumas operações do SGBD não podem ser executadas em função da Álgebra Relacional e envolvem funções matemáticas agregadas. São elas:
- SUM
- AVG
- MAX
- MIN
- COUNT
SELECT count(*)
FROM nome_do_banco.nome_tabela
SELECT sum(tabela_numerica)
FROM nome_do_banco.nome_tabela
SELECT avg(tabela_numerica)
FROM nome_do_banco.nome_tabela
SELECT min(tabela_numerica)
FROM nome_do_banco.nome_tabela
SELECT max(tabela_numerica)
FROM nome_do_banco.nome_tabela
Se dá através das functions e dos stored procedures.
CREATE PROC InserirTempe
@estado varchar(2)
@temperatura int
AS
BEGIN
INSERT INTO tb_temperaturas
VALUES (@estado, @temperatura)
END
/* Chamando o procedure criado */
EXECUTE InserirTempe('São Paulo', 50)
/* Declarando uma variável*/
DECLARE @min_temperatura int
DECLARE @min_temperatura int, @max_temperatura int
/* Atribuindo valores*/
SET @min_temperatura = 3
/* Atribuindo valor no bloco SQL*/
SELECT
@min_temperatura = minimoTemperatura
FROM tb_temperaturas
WHERE estado = 'São Paulo'
- IF ELSE
IF(
SELECT minimoTemperatura FROM tb_temperaturas
WHERE estado = 'São Paulo') <5)
/* Comandos SQL para o IF */
ELSE
/* Comandos SQL para o ELSE */
- SELECT CASE
SELECT CASE minimoTemperatura
WHEN 5 THEN 'Frio'
WHEN 22 THEN 'Agradável'
WHEN 40 THEN 'Calor'
ELSE 'Sem temperatura registrada'
END AS SensacaoTermica
FROM tb_temperaturas
- WHILE
WHILE(SELECT avg(temperaturaMinima) FROM tb_temperaturas) < 15
BEGIN
/* Comandos SQL para o WHILE */
END
CREATE FUNCTION ObterMinTempe(@estado varchar)
RETURNS min_temperatura
AS
BEGIN
DECLARE @min_temperatura int
SELECT
@min_temperatura = minimoTemperatura
FROM tb_temperaturas
WHERE estado = @estado
RETURN @min_temperatura
END
/* Chamando a função criada */
SELECT ObterMinTempe('São Paulo')
Transformação dos dados em informações úteis, depois agregando inteligência e gerando tecnologia e conhecimento. Um banco de dados, no qual esses dados são armazenados, se baseia nas entidades do mundo real que compõem o sistema de informação.
Responsável por organizar os dados afim de transformar os mesmos em informação. Ideal quando as entidades, modelos, relacionamentos e afins estão bem claros. Baseia-se em alguns pilares como:
Armazenamento dos dados de forma ordenada, como uma "ficha" ou uma linha.
Tuplas
Sequência de dados e/ou elementos, lista de registros
Estrutura de dados sem preenchimento.
Espaços de preenchimento da tabela.
Visão criada dinamicamente por consulta que tem por objetivo simplificar a mesma. Não armazena dados e logo, não ocupa espaço físico na memória.
Procedimento armazenado executado automaticamente pelo SGBD. Disparado sempre que há ocorrência de um evento que modifique uma determinada tabela, como a criação ou exclusão de um registro.
Similar aos stored procedures, porém possui menos recursos e sempre retorna algo.
-
scalar functions
Retorna um tipo de dado e um valor. -
inline table-valued functions
Retorna o resultado de uma consulta. -
multi-statement table-valued functions
Retorna o resultado em uma tabela pré-definida como parâmetro.
Semelhantes às funções de algoritmos, elas são códigos SQL (T-SQL
) que são compilados como objetos dentro do SGBD, estando diretamente ligadas a ele. Manipulam caracateres, números, datas e afins, além de poderem converter e consolidar dados.
Funções em geral possuem parãmetros que, usualmente, são identificados e separados dentro de parênteses.
- Ambiente de Chamada
Espaço de solicitações nas quais os códigos recebem e processam argumentos, retornando resultados que podem apresentar natureza numérica, de caracateres (string
), data ouNULL
.
Comumente recebem um número como parâmetro e retornam um outro como resultado.
ROUND(valor1) AS valorArredondado
valorNumerico * 1.2 AS aumento20porcento
TRUNCATE(valor2, 1) AS valorCasasDecimais
RAND
RAND(N)
ABS
Só aceitam caracteres como parâmetros de entrada, podendo retornar tanto o mesmo quanto números.
LENGHT(entrada0) tamanhoEntrada
CONCAT(entrada1, '', entrada2) AS saida1
LCASE()
LOWER()
LTRIM()
REPLACE()
SUBSTRING()
Recebem parâmetros do tipo data e podem retornar tanto resultados em formato de data quanto numéricos.
SELECT NOW() FROM DUAL
DATEDIFF(NOW(), '2022-04-30 22:20:10')
DATE_FORMAT(dadoData, '%W %M, %Y)
ADD_MONTHS
CURRENT_TIMESTAMP
LOCALTIME
LOCAMTIMESTAMP
YEAR
DATEOFYEAR
TIMEDIFF
Também chamadas de funções de casting, são usadas para converter um valor de entrada em outro. Pode ter por objetivo tornar um dado manipulável através de novas funções.
TO_CHAR
CAST
CONVERT
Possuem o mesmo objetivo das Funções Nativas, porém as armazenadas são criadas e mantidas pelo desenvolvedor do SGBD. Duas funções não podem apresentar a mesma assinatura
.
- Assinatura de Função
Refere-se ao nome e o retorno de chamada de uma função.
Uma função determinística (DETERMINISTIC
) retorna o tipo de dado e valor estipulado independente do parâmetro de entrada (quando há), já uma função não determinística pode eventualmente não retornar os procedimentos determinados.
CREATE FUNCTION nomefuncao(
parametrodeentrada TIPODEDADO(VALOR)
)
RETURNS TIPODEDADO(VALOR) DETERMINISTIC
RETURN 'Texto';
BEGIN
DECLARE nomevariavel TIPODEDADO(VALOR);
SET nomevariavel = valordeclarado();
RETURN nomevariavel;
END;
SELECT NOW(),
nomefuncao()
FROM DUAL;
Como em outras linguagens, no SQL o ponto e vírgula ;
demarca o fim de um comando (transação), portanto, para que a execução de uma função ocorra sem erros, é preciso sinalizar seu início e fim por meio do comando DELIMITER
.
DELIMITER //
CREATE FUNCTION
BEGIN
END //
DELIMITER ;
"Programas" compilados dentro do banco de dados que executam comandos SQL, podendo ou não receber parâmetros de entrada, bem como retornar valores. Sua função é implementar um CRUD
, tendo como objetivo fim a execução de um comando.
Critério ou protocolo de organização dos registros, otimizando a busca. Um exemplo seria um fluxo de caixa cujo índice é o período ou data.
Atributo ou conjunto de atributos que identifica uma única entidade dentro de um conjunto de entidades. Uma chave deve ser mínima, ou seja, nenhum atributo que a compõe poderá ser retirado da mesma.
-
Primary Key
(PK) A chave primária (candidata) é um indexador da unidade dos dados, não se repetindo em nenhum registro e unificando cada registro em particular. -
Foreign Key
(FK) A chave estrangeira é um atributo usado para relacionar entidades, um campo de referência na tabela filha que relaciona dados da tabela mãe.
Maneira pela qual os dados entre diferentes registros e tabelas se comunicam, gerando informações. Um relacionamento entre entidades define existência de registro, por exemplo, não existe um professor sem alunos ou produto sem pedido.
Exemplo 1️⃣ :
PK = CPF
Não é possível criar um registro com um CPF já cadastrado no banco.
Exemplo 2️⃣ :
FK = CLIENTE
Pode-se relacionar um número do cliente com vários pedidos diferentes.
É incomum que haja um relacionamento ternário entre entidades, considerando que a modelagem segue a teoria dos conjuntos, mas pode acontecer.
Uma chave primária não pode ter o mesmo valor em duas tuplas distintas da mesma relação.
Uma chave primária não pode ter valor nulo em nenhuma tupla da relação.
Usada para manter a consistência entre tuplas de uma relação. Relaciona-se com o conceito de chave estrangeira na medida que o atributo de uma entidade não pode existir sem a entidade. Por exemplo, uma certidão de ônus sem imóvel.
O Sistema de Gerenciamento de Banco de Dados é o sistema de software responsável pela gestão dos bancos de dados. É uma coleção de dados inter-relacionados e um conjunto de mecanismo de acesso aos mesmos.
Todo SGBD divide-se em três níveis.
Arquitetura em Camadas | |
---|---|
Nível Físico | Esquema interno de armazenamento em disco |
Nível Lógico | Abstração dos dados e projeção do esquema registro-tabela-etc |
Nível View | Implementação do modelo elaborado no nível lógico trabalhando com linguagens |
Problema >
Nível descritivo >
Nível conceitual >
Nível computacional >
Nível físico
Concatenar quais entidades do mundo real serão representadas no projeto e descrever suas características em uma linguagem intermediária. A entidade é uma representação de um elemento real. Um elemento do conjunto de entidades é também uma entidade, identificada por características específicas, os atributos.
Atributo <> Valor
- Atributo = cor
- Valor = vermelho
Um atributo não possui outros atributos. Se um atributo possui muitas ramificações de valores no banco, ele deve ser uma entidade e se relacionar com outras. Um atributo pode ser classificado como simples e composto, mono ou multivalorado, nulo ou derivado.
Um atributo simples não é passível de divisão em partes.
Exemplo: NOME DE UM CLIENTE
Um atributo composto é divido em partes.
Exemplo: NOME COMPLETO DE UM CLIENTE, INCLUINDO SOBRENOMES
- Considera a capacidade de decompor um campo, sendo a diferença fundamental a forma de modelar.
Um atributo monovalorado possui apenas um valor para a entidade de referência.
Exemplo: NÚMERO DA CASA DE UM CLIENTE
Um atributo multivalorado pode assumir diversos valores.
Exemplo: TELEFONE PARA CONTATO DE UM CLIENTE
Pode ou não possuir um valor. Seu valor também pode ser desconhecido.
Exemplo: NOME DOS DEPENDENTES DE UM CLIENTE
- Para o usuário, o campo é identificado como opcional.
Seu valor pode ser derivado de outros atributos.
Exemplo: CONSOLIDAÇÃO DOS CAMPOS **dataContratacaoServico** E **dataAtual** GERANDO UM ATRIBUTO **tempoUsoServico**
Padrão que elucida o funcionamento de um modelo de dados que, por sua vez, representa entidades, seus atributos e as relações entre os mesmos.
O
lollipop
preenchido é um atributo que representa um campo chave(PK)
.
O
losango
representa arelação
entre as entidades
Representação do mínimo e máximo da relação entre entidades.
📚 Estrutura:
(mínimo, máximo)
📚 Exemplo:
(0, N)
Linha direcional em uma teoria dos conjuntos que delimita o tipo de cardinalidade.
(a) Um para um
(b) Um para muitos
(c) Muitos para um
(d) Muitos para muitos
Organização e divisão das tabelas do banco de dados visando a maior eficiência possível, diminuindo a redundância e permitindo a evolução do banco com a integridade dos dados. Esse processo se dá através de regras chamadas formas normais. Os principais conceitos envolvidos na normatização são as relações e as chaves (candidatas, primárias e estrangeiras). As relações podem ser entendidas como um equivalente matemático para tabela.
O foco da normalização é chegar em uma dependência funcional irredutivel à esquerda. Vai da Primeira Forma Normal (1FN) até a Quinta (5FN)
Relação de determinância e dependência entre atributos.
Atributo X | Atributo Y |
---|---|
Determinante | Dependente |
CPF | Nome |
Y = f(X) | |
f(CPF) = Nome |
CPF -> Nome
Classificação de Dependência Funcional | ||
---|---|---|
Tipo | Descrição | Exemplo |
Dependência Funcional Total | Ao remover qualquer atributo A de um componente X a dependência deixa de existir | AB -> C, D {cnpj, razão social} -> nome fantasia, nire AB - cnpj dependência de nire e nome fantasia deixa de existir |
Dependência Funcional Parcial | Um atributo A pode ser removido do componente X sem alterar a dependência | AB -> C, D {matrícula, inscrição municipal} -> rgi, iptu inscrição municipal -> iptu iptu não depende de matrícula |
Dependência Funcional Trivial | Um determinante com mais de um atributo pode determinar seus próprios membros quando isolados | {banco, agência} -> banco |
Dependência Funcional Não Trivial | Um dito determinante identifica outro atributo qualquer e o mesmo não faz parte do determinante | {banco, agência} -> cidade |
Dependência Funcional Irredutível à Esquerda | O lado esquerdo de uma DF é irredutível quando o determinante está em sua forma mínima, não sendo possível reduzir a quantidade de atributos determinantes sem perder a DF | {cidade, estado} -> país = não é irredutível {estado} -> país = irredutível |
Uma forma de identificar facilmente uma dependência transitiva é quando um ou mais atributos se repetem constantemente, mas eles dependem de um atributo não chave.
A dependência transitiva pode criar os seguintes problemas:
-
Perda completa de dados ao excluir dados unitários;
-
Falta de versatilidade na inserção de dados, apresentando relatórios dependentes;
-
Com a mudança de um atributo, há necessidade de alterar TODOS os registros da tabela
Uma entidade está na 1FN quando cada atributo contém somente um valor e se encontra em somente um lugar. Este é o conceito de atomicidade de dados. Um campo não pode receber tipos diferentes de valores.
Para obter a 1FN são necessárias algumas etapas:
-
Atributo Monovalorados Os atributos não podem ser multivalorados, ou seja, não podem apresentar mais de um valor. Por exemplo, o telefone pode ser um atributo multivalorado, já que uma pessoa pode ter de um telefone. Para manter a normalização, cada valor diferente do atributo deve ser atribuído em um registro diferente, repetindo todos os dados nas colunas restantes, mantendo a consistência dos dois registros.
-
Entidades Unidimensionais A entidade não pode ter mais de duas dimensões, uma entidade com um propósito não pode assumir outro propósito. Por exemplo, uma plataforma de cadastro destinado para pessoa física, que armazena CPF, não pode se alternar para armezenar também CNPJ.
-
Atributo de Tipo Único de Dado Um atributo não pode apresentar mais de um tipo de dado, como numérico e de texto, sendo apenas tratado de forma diferente. Deve-se decompor a tabela para separar os tipos distintos de dados.
-
Definição de Chave Primária Deve-se definir uma chave.
Uma tabela está na segunda forma da normal se estiver na primeira forma da normal e se todo atributo não-chave for determinado por todos os campos da chave primária. Ou seja, é preciso eliminar as dependências funcionais (DF) parciais.
Visa diminuir a redudância e o desagrupamento das informações. Nesta forma, a tabela passa a representar um número menor de entidades, sendo o cenário ideal uma situação na qual cada entidade seja armazenada em apenas uma tabela.
Para obter a 2FN são necessárias algumas etapas:
-
Chave Primária Eleger a chave primária (PK) da tabela
-
Verificação de DF Parciais Verificar a existência de DF parciais
-
Decomposição de dados Mover campos que não se enquadram na 2FN para uma nova tabela e fazer a decomposição sem perdas
-
Eliminação da DF Parcial Na nova tabela criada, repetir os passos anteriores até que seja eliminada a DF parcial
Também tem por objetivo reduzir as redundâncias, desagrupando as tabelas de forma que cada uma represente apenas UMA entidade.
Para obter a 3FN são necessárias algumas etapas:
- Identificação e Eliminação da Transitividade Uma tabela está na 3FN se estiver primeiro na 2FN e se todo atributo não-chave for determinado de forma não transitiva pela chave primária. Ou seja, todo atributo não-chave deve ser determinado SOMENTE pela chave primária. Deve-ser repetir esses passos até eliminar completamente a transitivdade.
Exemplo:
NotaFical -> {Data, CodForn, Nome, Telefone, Endereço}
- Neste cenário, os atributos Nome, Telefone e Endereço sempre vão se repetir nos registros, pois dependem do atributo não chave CodForn.
O cenário ideal seria:
Tabela 1: {NotaFiscal} -> CodForn
Tabela 2: CodForn -> {Nome, Telefone, Endereço}
Afim de garantir ACID
(Atomicidade, Consistência, Isolamento e Durabilidade) para o banco, é preciso implementar um controle dos acessos que os usuários fazem ao mesmo, chamados de transações, principalmente quando tentam acessar a mesma informação simultâneamente. O gerenciamento de transações em um SGBD comumente é feito sob o seguinte esquema:
Abertura de transação > Bloqueio da tabela > Commit
As transações podem receber dois tipos de bloqueio, o compartilhado e o exclusivo.
Caso sua instrução seja de leitura
, mais de uma transação pode acessar a mesma informação.
Caso sua instrução seja de gravação
, ela não pode receber um bloqueio compartilhado.
A transação que recebe o bloqueio exclusivo fica reservada para a instrução que compõe a transação, não permitindo que outra faça uso do mesmo dado.
(NoSQL) Possui dados semiestruturados, ou seja, o modelo não possui um schema
bem definido, apresentando até certo grau de desestruturação das informações. O armazenamento do mesmo é visto em forma de documentos e não de tabelas como o modelo relacional.
- A linguagem de acesso depende do SGBD, não seguindo o modelo T-SQL com
SELECT
e afins.
JSON | |
---|---|
Estrutura de informação com notação JavaScript | |
Hierarquia de Diretório | |
Coleções | |
Etiquetas | |
Metadados |
Tem o objetivo de represntar relacionamento e a navegação entre eles, sendo ideal para detecção de fraudes.
Como se fosse uma tabela com apenas duas colunas, na qual os valores ficam agrupados na segunda e chave na primeira. É um banco extremamente performático por possuir uma estrutura limitada.
Chave | Valor |
---|---|
C1 | AAA, BBB, CCC |
C2 | A, B |
C3 | AAA, 2, 21/02/2022 |
Um banco de dados colunar é geralmente usado para aplicativos de transações, pois possui a capacidade de recuperar colunas rapidamente.