Unidade 1 - Fundamentos e Arquitetura de Sistemas de Banco de Dados
Segundo Korth, um banco de dados é uma coleção de dados inter-relacionados que representa informações sobre um domínio específico do mundo real.
Compreender a diferença entre dados brutos e informação processada é fundamental para trabalhar com bancos de dados eficazmente.

Dados brutos, isolados e sem contexto que não geram conhecimento por si só. Exemplo: o número "11 98765-4321" sozinho.

Dados organizados e contextualizados que geram conhecimento útil. Exemplo: "João Silva - 11 98765-4321".
Estruturação lógica e segura das informações, facilitando o acesso e manutenção dos dados corporativos.
Recuperação ágil de informações através de mecanismos otimizados de busca e indexação.
Fornece dados confiáveis e atualizados para embasar decisões estratégicas nas organizações.
Um sistema de banco de dados é composto por diversos elementos que trabalham de forma integrada para garantir o funcionamento adequado.
Informações armazenadas de forma estruturada e organizada.
Equipamentos físicos para armazenamento e processamento.
Sistema que gerencia e controla o acesso aos dados.
Pessoas que interagem com o sistema em diferentes níveis.
Sistema de Gerenciamento de Banco de Dados (SGBD) é o software responsável por controlar, organizar e facilitar o acesso aos dados armazenados.
Líder empresarial em soluções corporativas robustas.
Popular solução open-source para web.
SGBD open-source com recursos avançados.
Solução Microsoft para ambientes Windows.

Isolar o usuário dos detalhes complexos sobre como e onde os dados são fisicamente armazenados no sistema.
Promover separação entre a estrutura lógica dos dados e as aplicações, permitindo mudanças sem impacto nos programas.
Minimiza duplicação de dados e inconsistências através de normalização e controles centralizados.
Permite acesso simultâneo de múltiplos usuários com controle de concorrência e transações.
Garante proteção dos dados através de mecanismos de autenticação, autorização e validação.
Embora os SGBDs ofereçam inúmeras vantagens, existem cenários onde sua utilização pode não ser a melhor escolha.
Sistemas com volume reduzido de dados e poucos usuários podem não justificar a complexidade e custo de um SGBD completo.
Aplicações com necessidades particulares de desempenho ou armazenamento que não se beneficiam das funcionalidades padrão de um SGBD.
Ambientes com limitações severas de hardware, orçamento ou expertise técnica para manutenção.
A arquitetura moderna de sistemas de banco de dados segue predominantemente o modelo cliente-servidor, com componentes distribuídos.
Interface de aplicação que solicita serviços e apresenta resultados ao usuário final.
Processa requisições, executa consultas e gerencia o armazenamento dos dados.
Infraestrutura de comunicação que conecta clientes e servidores.
A arquitetura em três camadas proporciona flexibilidade e independência entre os diferentes níveis do sistema.
Define como os dados são efetivamente armazenados em disco: estruturas de arquivos, índices e métodos de acesso.
Descreve quais dados são armazenados e seus relacionamentos através de esquemas, tabelas e restrições.
Apresenta aos usuários apenas a parte relevante do banco, simplificando a complexidade e aumentando a segurança.
A independência de dados é um dos pilares fundamentais dos sistemas de banco de dados modernos, permitindo evolução sem impacto.

Mudanças na forma de armazenamento físico não afetam o esquema lógico nem as aplicações.
Alterações no esquema lógico não requerem modificações nas aplicações que utilizam o banco.
Os três níveis de abstração trabalham juntos para proporcionar uma visão organizada e eficiente dos dados.
Usuários
Estruturas
Armazenamento
O modelo ER é uma ferramenta fundamental para representar a estrutura lógica de um banco de dados de forma visual e intuitiva.

Objetos do mundo real que possuem existência independente, como Aluno, Professor, Produto.
Propriedades ou características que descrevem as entidades, como nome, matrícula, data de nascimento.
Associações significativas entre entidades, representando interações do mundo real.
Vamos visualizar um caso prático de modelagem ER para um sistema acadêmico simples.
ORGANIZAÇÃO INCORRETA

ORGANIZAÇÃO CORRETA

O modelo lógico traduz o modelo conceitual para estruturas compatíveis com o SGBD escolhido, mantendo independência do armazenamento físico.
Identificam unicamente cada registro.
Estabelecem relacionamentos entre tabelas.
Garantem integridade dos dados.

MODELO INCORRETO - SEM A TABELA ASSOCIATIVA (MATRÍCULA)

O modelo físico especifica como os dados serão efetivamente armazenados e acessados, focando em desempenho e eficiência.
Estruturas que aceleram consultas através de organização especial dos dados, permitindo acesso direto.
Organização física dos dados em disco, incluindo estratégias de particionamento para grandes volumes.
Ajustes de parâmetros, buffers e configurações para maximizar performance do sistema.
-- =========================
-- Tabela: ALUNO
-- =========================
CREATE TABLE aluno (
matricula INT NOT NULL,
nome VARCHAR(100) NOT NULL,
CONSTRAINT pk_aluno
PRIMARY KEY (matricula)
);
-- =========================
-- Tabela: TURMA
-- =========================
CREATE TABLE turma (
codigo INT NOT NULL,
semestre VARCHAR(10) NOT NULL,
CONSTRAINT pk_turma
PRIMARY KEY (codigo)
);
-- =========================
-- Tabela: MATRICULA
-- (tabela associativa N:N)
-- =========================
CREATE TABLE matricula (
aluno_matricula INT NOT NULL,
turma_codigo INT NOT NULL,
data DATE NOT NULL,
situacao VARCHAR(20) NOT NULL,
CONSTRAINT pk_matricula
PRIMARY KEY (aluno_matricula, turma_codigo),
CONSTRAINT fk_matricula_aluno
FOREIGN KEY (aluno_matricula)
REFERENCES aluno (matricula)
ON UPDATE CASCADE
ON DELETE RESTRICT,
CONSTRAINT fk_matricula_turma
FOREIGN KEY (turma_codigo)
REFERENCES turma (codigo)
ON UPDATE CASCADE
ON DELETE RESTRICT
);
aluno_matricula, turma_codigo);data, situacao).A evolução dos modelos de dados reflete a busca contínua por representações mais flexíveis e eficientes da informação.
Década de 1960. Estrutura em árvore, usado em sistemas legados como IMS da IBM.
Década de 1970. Permite relacionamentos mais complexos que o hierárquico.
1970-presente. Baseado em teoria matemática, tornou-se o padrão dominante.
Proposto por Edgar F. Codd em 1970, o modelo relacional revolucionou a área de banco de dados com sua elegância matemática.

Dados organizados em estruturas bidimensionais com linhas e colunas.
Cada linha representa uma instância ou registro único de dados.
Cada coluna representa uma propriedade ou característica dos dados.
O mercado oferece diversas opções de SGBDs relacionais, cada um com características e públicos específicos.
Solução enterprise robusta, amplamente utilizada em grandes corporações para aplicações críticas.
SGBD open-source popular, especialmente em aplicações web e startups.
Open-source avançado com recursos enterprise e forte conformidade com padrões SQL.
Solução Microsoft integrada ao ecossistema Windows e Azure cloud.
As linguagens de banco de dados são categorizadas conforme sua função específica no gerenciamento dos dados.
Linguagem de Definição de Dados usada para criar e modificar a estrutura do banco: CREATE, ALTER, DROP.
Linguagem de Manipulação de Dados para inserir, atualizar, deletar e consultar: SELECT, INSERT, UPDATE, DELETE.
Linguagem de Controle de Dados para gerenciar permissões e acessos: GRANT, REVOKE.
Diferentes tipos de usuários interagem com o banco de dados em diversos níveis de complexidade e responsabilidade.
Administradores que gerenciam e mantêm o sistema.
Programam aplicações que acessam o banco.
Utilizam aplicações para interagir com dados.
Projetam e modelam estruturas de dados.
A proteção dos dados é fundamental para garantir confiabilidade, privacidade e conformidade regulatória.
O gerenciamento adequado da redundância é essencial para manter a consistência e qualidade dos dados.
Armazenamento duplicado aumenta custos com infraestrutura.
Mesmos dados em locais diferentes podem ter valores conflitantes.
Mudanças precisam ser replicadas em múltiplos locais.

Vamos explorar os comandos básicos para recuperar informações de um banco de dados relacional.
SELECT nome, email
FROM clientes
WHERE cidade = 'São Paulo';Especifica quais colunas deseja recuperar dos dados.
Indica de qual tabela os dados serão extraídos.
Define condições para filtrar os registros retornados.
Aprenda a definir a estrutura de uma nova tabela utilizando o comando CREATE TABLE.
CREATE TABLE alunos (
matricula INT PRIMARY KEY,
nome VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE,
data_nascimento DATE,
curso VARCHAR(50)
);
Após criar a estrutura, utilize o comando INSERT para popular a tabela com registros.
INSERT INTO alunos (matricula, nome, email, data_nascimento, curso)
VALUES
(1001, 'Maria Silva', 'maria@email.com', '2000-05-15', 'Sistemas de Informação'),
(1002, 'João Santos', 'joao@email.com', '1999-08-22', 'Ciência da Computação'),
(1003, 'Ana Costa', 'ana@email.com', '2001-03-10', 'Engenharia de Software');Vamos revisar os principais conceitos abordados nesta unidade sobre fundamentos de banco de dados.
Banco de dados, diferença entre dados e informação, componentes de um sistema de BD.
Papel do SGBD, modelo cliente-servidor, arquitetura em três camadas, independência de dados.
Modelo conceitual (ER), modelo lógico (tabelas relacionais), modelo físico (armazenamento).
Continue sua jornada no mundo dos bancos de dados aprofundando-se nos tópicos avançados.
Aprofunde-se em técnicas de modelagem ER avançada, normalização e otimização de esquemas.
Explore joins complexos, subconsultas, funções agregadas, procedures e triggers.
Trabalhe com SGBDs em projetos práticos, desenvolvendo aplicações completas.
Este é o momento para esclarecer dúvidas, compartilhar ideias e aprofundar os conceitos apresentados.
Introdução a Banco de Dados