Banco de Dados
Dado: Conjunto de Bits/Bytes Informação: Dados com identificação e significado; dado processado Conhecimento: Informação aplicada a uma utilidade; auxilia na tomada de decisão
Banco de Dados: Coleção de dados inter-relacionados e persistentes
Arquitetura Three-Schema | ANSI-SPARC
American National Standards Institute - Standards Planning and Requirements Committee
Padrão americano de projeto abstrato para um sistema de gerenciamento de banco de dados
Proposto em 1978
Objetivo: separar as aplicações do banco de dados
Esquema Externo: Visão do usuário
Esquema Conceitual: Visão conceitual
Esquema Interno: Visão interna
SGBD - Sistema Gerenciador de BD: Coleção de programas responsável pelo gerenciamento dos dados em um BD; podem ser classificados pelo modelo (Relacional, Hierárquico, Redes, Orientado a Objetos, Objeto-Relacional, NoSQL)
Redução do Consumo de Memória
Filtragem de dados: Operações otimizadas trazem poucos dados, operando diretamente no servidor
Não é necessário carregar (select) dados para realizar operações
Realizar todas as operações com o menor número de comandos possível (client side)
Transações ACID
Atomicidade: Transações são, geralmente, compostas de várias declarações (comandos / operações), a atomicidade garante que cada transação seja tratada como uma entidade única; se uma única operação do bloco falhar, toda a transação deverá ser cancelada
Consistência: Assegurar que uma transação somente leve o banco de dados de um estado válido a outro, mantendo a estabilidade do banco
Isolamento: As transações são isoladas para que as simultâneas não interfiram ou afetem umas às outras; cada solicitação é tratada como se estivesse ocorrendo de forma independente, mesmo que ocorram simultaneamente
Durabilidade: Garante que as alterações de dados feitas por transações executadas com sucesso sejam preservadas, mesmo em caso de falha do sistema.
Modelagem de Dados
Organizar a o conhecimento sobre os dados; construção de um modelo de dados consistente para ser aplicado em qualquer SGBD moderno
Estabelece o vínculo entre as necessidades do usuário e a solução de software correspondente, gerando uma redução da complexidade do projeto
Abstração: Ocultação de detalhes técnicos para o usuário final; destacar apenas recursos essenciais
Projeto Conceitual: Visão do usuário; entidades, atributos e relacionamentos
MER (Modelo Entidade-Relacionamento)
DER (Diagrama Entidade-Relacionamento)
Projeto Lógico: Voltado para implementação; requisitos + modelo de BD
Modelo relacional (tabelas)
Modelo hierárquico e XML (árvore)
Modelo orientado a objetos (classes e objetos complexos)
Projeto Físico: implementação, codificação
Modelo Relacional
1970 (IBM)
Representar dados como uma coleção de relações
Cada relação em formato de tabelas (colunas, linhas)
Domínio: Conjunto de valores permitidos para um dado; restrição para preenchimento dos dados; para um domínio existem operações válidas (somar, dividir, extrair dia...)
Domínios básicos: inteiro, string
Domínios compostos: data, hora
Domínios definidos: (0, 120), (‘M’, ‘F’)
Atributos: Campo; item de dado do BD; possui nome e domínio
nome: string
idade: (0, 120)
Tupla: Registro; conjunto de pares (atributo, valor); define ocorrência de um fato do mundo real
Valor de um atributo é definido no momento da criação da tupla; deve ser compatível com o domínio ou NULL; deve ser atômico (indivisível)
Tupla de aluno:
{(nome, ‘João’), (idade, 34), (matrícula, 03167034), ...}
Relação: Tabela (coleção de tuplas); composto por um cabeçalho e um corpo
Cabeçalho: Número fixo de atributos (grau da relação)
Corpo: Número variável de tuplas (cardinalidade da relação)
Chave: Identificadores dos dados; pode ser valores/campos combinados (chave composta)
Chave primária (pk): Identificação única; pk(R)
Chave estrangeira (fk): Equivalência de valor com chave primária; fk(R1)→pk(R2)
Dicionário de Dados: Lista organizada com todos os elementos que compõem um BD; repositório centralizado com informações sobre os dados, como: significado, relacionamentos, origem, uso e formatos
Normalização do BD
Reorganização das entidades
Garante boa estrutura da tabela e consistência dos dados
Técnica de design de banco de dados que reduz a redundância de dados e elimina anomalias
Divisão de tabelas maiores em tabelas menores
Anomalias: Ocorrem devido ao mau planejamento e não normalização de BDs, geralmente por excesso de dados em uma mesma tabela; dependências parciais e transitivas
Inclusão: Repetição desnecessária de valores ao inserir um dado
Atualização: Inconsistências no bd ao excluir um dado
Exclusão: Inconsistências no bd ao atualizar um dado
Dependências
Funcional : Relação entre atributos/colunas
ex.
CPF | Nome
Funcional Parcial: Coluna não depende da PK ou de toda PK (se for composta)
ex. PK =
ID_Aluno+ID_Materia+Semestre|Nome_Materia|NotaNome_Materia depende apenas de ID_Materia
Funcional Transitiva: Coluna depende de outra coluna que não é uma PK
ex. PK =
ID_Funcionario|Nome_Funcionario|ID_Cargo|Nome_Cargo|SalarioNome_Cargo depende de ID_Cargo
Atributos
Multivalorados: Podem conter mais de um valor para o mesmo registro (linha)
ex. campo Telefone contem dois números, fixo e celular
Compostos: Atributos que poderiam ser subdivididos em vários atributos
ex. Endereço com Rua, Bairro, Cidade e UF
Formas Normais 1NF
Dados atômicos (indivisíveis) e únicos
Eliminar atributos multivalorados (nova tabela) e compostos (nova coluna)
Criar uma tabela separada para cada conjunto de dados relacionados
Identificar cada conjunto de dados relacionados com uma PK
2NF
Depende da 1NF
Eliminar dependência funcional parcial (nova tabela)
Cada atributo não-chave deve depender da PK
Criar tabelas separadas para cada PK ou combinação de atributos que se aplicam a vários registros
Relacionar essas tabelas com uma FK
3NF
Depende da 2NF
Eliminar dependência funcional parcial transitiva (nova tabela)
Atributo não-chave depende de outro atributo não-chave
Eliminar campos que não dependem da PK
Alocar em uma nova tabela e relacionar a uma PK
SQL (Structured Query Language)
Linguagem de Consulta Estruturada para banco de dados não relacional comerciais
Padrão para SGBDs
*(asterisco): AllLIKE: Semelhante?: Substitui charDESCRIBE/DESC: Apresenta informações sobre a estrutura de objetos da base de dados
Tipos de Dados
FOAT e DOUBLE
Tipo de ponto flutuante, armazenado como notação científica: parte significativa e expoente
ex. 3,54 seria armazenado como = $355 * (10²)$
é armazenado apenas 345 e -2, tendo 10 como base
Como a base dos computadores é binária, números simples precisariam de mais bits para serem representados com precisão
Para números que sofrerão cálculos consecutivos, podem haver arredondamentos que geram imprecisão no resultado final
O mesmo ocorre com tipos double, com menor efeito por poder armazenar com maior precisão
DECIMAL
Tipo de ponto fixo
Não possui os mesmos prolemas que float e double
Definido em quantidade de dígitos e quantidade de casas decimais
DECIMAL(10,2)- para valores financeiros

Constraints
Restrições; regras pré definidas impostas às colunas; controlar dados que são inseridos
NOT NULLUNIQUECHECKDEFAULT
NULL
x = NULLex != NULLnão funcionamUsar
x IS NULLex IS NOT NULL
NULL não são encontrados nas queries
Para considerar NULL, usar
WHERE name != 'john' OR name IS NULL
Primary Key X Unique
Identifica cada linha de forma única em uma tabela
Identifica valores únicos em uma coluna de uma tabela
Não aceita valores NULL
Aceita valores NULL
Uma tabela pode ter somente 1
Uma tabela pode ter mais de 1
Um índice clusterizado é criado por padrão
Índices não-clusterizados são criados nas colunas
Comandos
Data Definition Language (DDL)
Usado para definir o esquema do banco de dados; criar e modificar a estrutura dos objetos
CREATE: Criar tabelaDROP: Excluir tabelaALTER: Modificar estrutura; adicionar, alterar, excluir colunas; modificar restrições, índices; renomear tabelaMODIFY: Modificar atributos de colunas em uma tabela existente, como o tipo de dado ou tamanho ㅤㅤㅤ
PRIMARY KEY: Unica, exclusiva; não pode ser nulo; tabela possui apenas uma chave primáriaFOREIGN KEY: Estabelecer e manter a integridade dos dados entre tabelas relacionadas; pode ser nula (registro órfão); possível ter mais de uma na tabelaCONSTRAINT: Aplica regra a um campo ou conjunto de campos para garantir a integridade dos dadosREFERENCES: Especifica a tabela e a coluna que a chave estrangeira deve referenciarCASCADE, SET NULL, SET DEFAULT, RESTRIC:CASCADE: Propaga a operação para as tabelas dependentesSET NULL:Define os campos relacionados como NULL quando a operação é realizada (ex. se registro pai é deletado, campos da chave estrangeira nos filhos são definidos como NULL)SET DEFAULT: Define os campos relacionados para um valor padrão predefinidoRESTRICT: Impede que a operação seja realizada se houver registros dependentes
ON DELETE: Especifica o que acontece com os registros dependentes quando um registro pai é excluídoON UPDATE: Define o comportamento dos registros dependentes quando um registro pai é atualizado
Primary Key - Foreign Key
Criar tabela | Inserção de Dados
Alterações
Data Manipulation Language (DML)
Interagem com dados dentro de tabelas; adicionar, editar ou excluir dados de um banco de dados
INSERT: Insere dados em uma tabela específicaConteúdo a ser inserido (Values) deve estar indicado entre apóstrofo (' ')
UPDATE: Atualiza dados em uma tabela especificadaCritérios
WHEREsão indicados como WHERE
DELETE: Exclui dados de uma tabela especificada
WHERE: Especifica critérios de seleção da consultaORDER BY: Especifica critérios para ordenação dos registros da tabela;ASC(ascendente),DESC(descendente)
(DQL) Data Query
Seleciona dados de uma ou mais tabelas para leitura ou consulta
SELECT
Funções Agregadas
SUM()COUNT()AVG()MIN()MAX()
Consultas Avançadas
Na sua forma básica, a declaração SELECT recupera linhas e colunas de uma tabela
A cláusula WHERE é usada para filtrar as linhas que serão retornadas pela SELECT
Pode-se utilizar a palavra-chave AS para renomear cabeçalhos das colunas retornadas por um SELECT
JOIN permite recuperação de dados relacionados
Condições JOIN dizem como recuperar os dados especificados na cláusula FROM

Data Control Language (DCL)
Controlar a parte de segurança do bando de dados; estabelece permissões e privilégios
GRANT: permiteREVOKE: revoga
Transaction Control Language (TCL)
Controle de transações (comandos DML) no SQL
STORED PRODECURES: conjunto de comandos que podem ser executados de uma só vezTRIGGERS: gatilho p/ evento especial (pode afetar outras tabelas) ㅤㅤㅤBEGIN: inicia nova transaçãoCOMMIT: salva açãoROLLBACK: desfazer açãoSAVEPOINT: subdivisão de transição longa
Views
Tabelas virtuais que permitem visualizar resultados de consultas de tabelas reais
Traz visão otimizada dos dados
Restringe acesso total a base de dados por qualquer usuário
Índices
Auxiliam o SGBD a localizar registros com mais facilidade, para consultas frequentes
Economiza tempo de operações I/O
Podem ser criados em tabelas, views e tabelas temporárias
Fornecem uma pesquisa ordenada de informação para consultas
É possível criar índices na criação de uma tabela
Index != Chave
Sequências
Permite criar um objeto na base de dados que gera uma sequência automática de números (autoincremento)
O objeto é um elemento externo às tabelas
Pode ser usado para alimentar atributos que necessitem de um campo com essa característica; por exemplo se aplicações externas que ao acessarem o banco de dados, um novo número e exclusivo pode ser gerado
Atualizado