01 Bancos de Dados Relacionais e Não Relacionais Flashcards
Quem e quando foram criados os Bancos de Dados Relacionais?
Quais os 3 SGBDs (Sistema de Gerenciamente de Bancos de Dados) mais conhecidos nos dias atuais?
SGBDs relacionais mais conhecidos hoje são
Edgar Codd 1970 IBM
MySQL (Oracle)
Oracle (Oracle)
SQL Server (Microsoft)
Cite características do Modelo de Relacional
Organizado em tuplas, normalizado e possui integridade referencial
Descreva as 4 conceitos básicos do banco de dados relacional (ACID):
Atomicidade (a transação é executada totalmente ou não é executada = 0 ou 1)
Consistência (sistema sempre consistente após uma operação, “mudanças são imediatas”)
Isolamento (transação não sofre interferência de outra transação concorrente)
Durabilidade (o que foi salvo não é mais perdido)
Força a consistência ao final de cada transação
Um banco de dados é uma coleção de dados relacionados e acessíveis
Os dados são fatos que podem ser gravados e possuem um significado implícito
3 tipos de dados que podem ser armazenados:
Estruturados (“tabela”)
Semiestruturados
Desestruturados (“vídeo)
Pacote de software que facilita a criação e manutenção de um banco de dados?
SGBDs (Sistema de Gerenciamente de Bancos de Dados)
Programa para manipular banco de dados + Banco de dados == ?
Sistema de Banco de Dados
Vantagens do SGDB
Processamento eficiente de consultas
Podemos usar índeces (“indexes”) pra fazer isso ainda mais rápido
Baseado em estruturas de dados (árvores == “trees”)
Facilita backup / recuperação
Força para que cada dado seja do tipo correto
Modelo de dados?
Conjunto de conceitos que se usa para descrever a estrutura do Banco de Dados (BD) e certas restrições que o banco deve garantir.
Quais as 3 categorias de modelos de dados?
Conceituais (alto nível) - conceitos que descrevem os dados como os usuários percebem / baseado em entidades, atributos e relacionamentos (independentes de SGDB)
Físicos
Quais as 3 categorias de modelos de dados?
Conceituais (alto nível) - conceitos que descrevem os dados como os usuários percebem / baseado em entidades, atributos e relacionamentos (independentes de SGDB) - alta abstração (conseguimos puxar muito)
Físicos (baixo nível) - conceitos que descrevem como os dados estão armazenados no computador (tipos e tamanho de registros)
Dados lógicos (representativos ou de implementação) - “intermediário” entre os 2 anteriores - modelo relacional é um exemplo
Defina esquemas.
Descrição da estrututra de um banco de dados.
(textual ou gráfica).
Diagrama esquemático apresenta a estrutura de cada tipo de registro, mas não as instâncias reais dos registros.
Defina Instâncias ou Snapshots.
A cada novo registro inserido ou removido, o estado (instância) do banco se altera.
5 subgrupos de linguage SQL?
Linguagem de Definição de Dados (DDL - Data Denition Language): usada para definição dos esquemas
Linguagem de Manipulação de Dados (DML - Data Manipulation Language): utilizada pelos usuários para incluir, alterar, excluir, etc
Linguagem de Controle de Dados (DCL - Data Control Language) - utilizada para conceder e retirar privilégios de usuários de BD em objetos de BD (grant, revoke)
Linguagem de Consulta de Dados (DQL - Data Query Language) - recuperação de dados (???)
Linguagem de Controle de Transação (TCL - Transaction Control Language) - utilizada para lidar com transações no banco de dados
Simplicidade, Eficiência, Formal, teoria matemática das relações entre conjuntos + álgebra
Representa entidade e relacionamento
Linguagem unificada para definição e manipulação de dados
Modelo Relacional
Tupla ==
Linha
Cada linha representa uma entidade ou relacionamento do mundo real
Cada uma pode ser interpretada como um fato, uma determinada instância da afirmação
Atributo ==
Coluna
As colunas são atributos que dão valores a cada linha
Podem existir atributos multivalorados (ex: mais de um telefone)
Relação ==
Tabela
Domínio ==
Conjunto de valores que um atributo pode ter
Conjunto de valores indivisíveis (atômicos) que um atributo pode ter
O que é definido como conjunto mínimo de valores dos atributos que identifica unicamente uma tupla (linha).
Garante restrição de unicidade!
Chave
podem existir chaves compostas
O que é definido como conjunto mínimo de valores dos atributos que identifica unicamente uma tupla (linha).
Garante restrição de unicidade!
Chave
podem existir chaves compostas
Não pode ter valor nulo
Um atributo em um coluna pode ser não chave, mas pode fazer referência a uma coluna chave de outra tabela. Usamos o nome Chave Estrangeira ou Foreign Key (FK) para este tipo de atributo. Quais são as 2 regras que estas devem seguir?
Os atributos de FK de R1 têm o mesmo domínio da PK de R2
Um Valor de FK de uma tupla T1 deve ser igual a um valor de PK para uma tupla T2 ou ser null (nulo)
Quais as operações básicas para atualizar as relações?
INSERT (Inserir)
UPDATE (Alterar)
DELETE (Excluir)
3 comportamentos quando uma operação de exclusão causa uma violação da integridade?
Bloqueio (restrict) - não deixa excluir
Propagação (cascade) - propaga a exclusão
Substituição por nulo (set null) - modifica para nulo as referenciadas
Entidades x Relacionamentos no banco de dados
Lembrar do vídeo…
se N pra N tem que fazer nova tabela
1 pra N, N pra 1, 1 pra 1, etc
N significa mais de 1
Normalização
Esquemas de relação são decompostos
Avalia cada relação sob os critérios de cada forma normal e as decompõe
Uma relação R está normalizada (ou seja, nas 3FNs) se todos os seus atributos são dependentes exclusivamente de suas chaves
Primeira Forma Normal (1FN): eliminação de atributos compostos e/ou multivalorados
impede as “relações dentro de relações”
Segunda Forma Normal (2FN): uma relaçao R está na 2FN se todo atributo de R não pertencente a uma de suas chaves for totalmente dependente da chave primária (mesmo ela sendo composta)
dois atributos relacionados não podem ficar na mesma tabela
CREATE TABLE ( , (numero_de_campos), CONSTRAINT PRIMARY KEY () );
(clicar em executar pra criar a tabela)
Exemplos de types:
int == integer
varchar == caracteres
CREATE TABLE - cria tabela
CONSTRAINT xxxx PRIMARY KEY - cria chave primária
dar preferencia pra usar pk_xxxxx
insert into (xxxxxx, yyyyyy) values (X, Y);
insere o valor X na coluna xxxxx e valor Y na coluna yyyyy
select * from nome_da_tabela
gera a tabela com os dados informados
smallint ==
char ==
date ==
número inteiro de 2 bytes
cadeia de caracteres
data
alter table == add == drop column == add constraint e drop constraint == drop table ==
alterar tabela adiciona novo atributo remover atributo adicionar ou remover constraint exclui tabela
delete
where xxxx = yy
x = nome do atributo y = valor que queremos excluir
update
set xxxxx = yyyyy
where zzzzzz = wwww
Mudar o atributo X para o valor Y onde o atributo Z tem valor W
SELECT nome_atrbituto, atributo2, atributo2 + 100
FROM nome_tabela
soma 100 no atributo 2 e cria essa nova coluna
SELECT nome_atrbituto, atributo2, atributo2 + 100 as novo_nome_atributo2
FROM nome_tabela
mostra tabela com esse novo nome
comandop é o “as” serve pra tudo
SELECT nome_atrbituto, atributo2, atributo2 + 100 as novo_nome_atributo2
FROM nome_tabela
mostra tabela com esse novo nome
comando é o “as” serve pra tudo
nome disso é alias
E
pertence ? não entendi
Executar scripts pode ter item faltando pra deletar (drop)?
Sim
select distinct atributo1
from linha
o que faz DISTINCT?
não retorna itens duplicados
WHERE
Condição pra limitar linhas
<=
>=
<>
Menor igual
Maior igual
Diferente
AND
OR
NOT
A e B verdadeiros
A e/ou B verdadeiros
A e B falsos
LIKE (“parece”)
LIKE ‘%xxxxx%’
LIKE ‘_a%’
Procura todo xxxxx, não interessa o que vem antes ou depois
Procura tudo com 2a letra a, nao interessa o antes (um _) ou depois (%, quantos quiser)
BETWEEN
NOT IN
entre
não está
MAX ( ) MIN ( ) AVG ( ) SUM ( ) COUNT (* )
máximo, mínimo, média, soma, quantidade de valores
atributo
exceto no count, que usa *
GROUP BY
Agrupar consulta para determinado atributo
HAVING
tipo um WHERE mas que filtra grupos
tendo
SELECT * ou qualquer coisa
FROM xxxxxxx X join yyyyyy Y on X.atributo1 = Y.atributo1
…. ON
junção de duas tabelas
SELECT * ou qualquer coisa
FROM xxxxxxx X JOIN yyyyyy Y ON X.atributo1 = Y.atributo1
junção de duas tabelas
SELECT * ou qualquer coisa
FROM xxxxxxx X LEFT OUTER JOIN yyyyyy Y ON X.atributo1 = Y.atributo1
Retorna tudo da esquerda (xxxxx),
da direita só quem faz condição de junção
SELECT * ou qualquer coisa
FROM xxxxxxx X RIGHT OUTER JOIN yyyyyy Y ON X.atributo1 = Y.atributo1
Retorna tudo da direita (yyyyyy),
da esquerda só quem faz condição de junção
SELECT * ou qualquer coisa
FROM xxxxxxx X FULL OUTER JOIN yyyyyy Y ON X.atributo1 = Y.atributo1
Retorna tudo da tabela xxxxx e yyyyyyy
SELECT * ou qualquer coisa
FROM xxxxxxx X CROSS JOIN yyyyyy Y ON X.atributo1 = Y.atributo1
Retorna multiplicação da esquerda por direita (numero de linhas total é linhas da x vezes y)
“self join”
SELECT * ou qualquer coisa
FROM xxxxxxx X INNER JOIN xxxxxx X ON X.atributo1 = X.atributo2
Junção de tabela com ela mesma
round(avg(atributo1),2) from …
arredonda duas casas decimais da média do atributo1
poderiam ser 0, 1, 3 casas decimais etc