- Banco de Dados Definido
- Restrições em Banco de Dados
- Diferença entre Banco de Dados e Planilha
- Tipos de Bancos de Dados
- Software de Banco de Dados
- Sistema de Gerenciamento de Banco de Dados (DBMS)
- MySQL Database
- Uso de Bancos de Dados nos Negócios
- Desafios dos Bancos de Dados
- Futuro dos Bancos de Dados e Bancos Autônomos
- Tipos de Dados (SQL)
- Modelo Lógico
- Código SQL do Modelo
- Fontes e Documentação
Dentro de qualquer negócio, os dados devem, muitas vezes, aderir a certas restrições ou regras. Por exemplo, um número de funcionário deve ser único.
O gerenciador de banco de dados (DBMS) fornece restrições como forma de aplicar tais regras e manter a integridade dos dados.
As restrições podem ser definidas:
- Durante a criação da tabela (
CREATE TABLE
); - Ou posteriormente, com o comando
ALTER TABLE
.
Tipo | Descrição |
---|---|
NOT NULL | Impede que valores nulos sejam inseridos em uma coluna. |
UNIQUE | Garante que valores em uma ou mais colunas não sejam duplicados. |
PRIMARY KEY | Identificador único para cada registro na tabela. |
FOREIGN KEY | Garante integridade referencial, ligando dados entre tabelas. |
CHECK | Restringe os valores que podem ser inseridos em uma coluna (ex: salário ≥ 20000). |
Informacional | Atributo não imposto diretamente pelo DBMS, mas útil para documentação. |
Garante que cada linha em uma tabela seja única e identificável:
- PRIMARY KEY: Identificador único de cada registro.
- UNIQUE: Impede duplicidade de valores em colunas importantes.
- NOT NULL: Evita que colunas essenciais fiquem sem valor.
Mantém relacionamentos consistentes entre tabelas:
- FOREIGN KEY: Cria vínculos entre registros em tabelas diferentes.
- CASCADE: Atualiza ou exclui dados relacionados automaticamente.
- SET NULL / SET DEFAULT / RESTRICT: Define ações alternativas para manter integridade.
Assegura a unicidade e identificação correta dos dados:
- Chaves Candidatas: Campos que poderiam ser chaves primárias.
- Chaves Surrogadas: Identificadores artificiais (exemplo: ID auto-incremento).
- Chaves Naturais: Identificadores baseados em dados reais (exemplo: CPF, matrícula).
Um banco de dados é uma coleção organizada de informações estruturadas, normalmente armazenadas eletronicamente em um sistema de computador.
É geralmente controlado por um sistema de gerenciamento de banco de dados (DBMS).
Juntos, os dados e o DBMS, juntamente com os aplicativos associados, são chamados de sistema de banco de dados.
Os dados em bancos de dados modernos são modelados em linhas e colunas em tabelas, tornando o processamento e a consulta mais eficientes.
A maioria utiliza SQL (Structured Query Language) para escrever e consultar informações.
Característica | Banco de Dados | Planilha |
---|---|---|
Uso | Projetado para múltiplos usuários e grandes volumes de dados | Ideal para um único usuário ou pequenas equipes |
Manipulação de dados | Através de lógica e linguagem estruturada (SQL) | Edição direta de células |
Escalabilidade | Altamente escalável e seguro | Limitado pelo software e pela capacidade do computador |
Acesso simultâneo | Permite múltiplos acessos simultâneos | Geralmente bloqueia durante o uso por outro usuário |
Organizados em tabelas com colunas e linhas, sendo os mais usados desde os anos 1980.
Os dados são armazenados como objetos, refletindo a lógica da programação orientada a objetos.
Compostos por dois ou mais arquivos localizados em sites diferentes, conectados em rede.
Repositórios centrais para consultas e análises rápidas.
Permitem dados não estruturados ou semiestruturados, ideais para aplicativos web modernos.
Armazenam informações em entidades e relacionamentos.
Projetados para lidar com um grande número de transações simultâneas.
Integram diferentes tipos de modelos e funcionam em infraestrutura cloud (DBaaS).
Baseados em machine learning, automatizam ajustes, segurança, backups e manutenção.
O software de banco de dados é utilizado para criar, editar e gerenciar registros.
Ele processa armazenamento, backup, relatórios e controle de segurança.
Esses sistemas são conhecidos como DBMS – Database Management Systems.
Um DBMS é o intermediário entre os dados e os usuários, permitindo:
- Recuperação e atualização de informações;
- Supervisão e controle de acesso;
- Monitoramento e otimização de desempenho.
Exemplos populares: MySQL, Oracle Database, Microsoft SQL Server, PostgreSQL, FileMaker Pro.
O MySQL é um sistema de gerenciamento de banco de dados relacional de código aberto, baseado em SQL.
Amplamente utilizado em aplicações web, ele é otimizado para desempenho e escalabilidade.
Usado em grandes plataformas como Airbnb, Uber, LinkedIn, Facebook, Twitter e YouTube.
Com o avanço da Internet das Coisas (IoT) e Big Data, as empresas acessam volumes cada vez maiores de informações.
Os bancos de dados permitem:
- Melhorar a eficiência operacional;
- Otimizar decisões estratégicas;
- Aumentar escalabilidade e controle;
- Analisar dados em tempo real para tomada de decisão.
Desafio | Descrição |
---|---|
Crescimento exponencial dos dados | Aumento contínuo do volume vindo de múltiplas fontes. |
Segurança da informação | Necessidade de proteger contra vazamentos e ataques cibernéticos. |
Alta demanda de performance | Consultas complexas exigem respostas instantâneas. |
Manutenção e atualização | Requer monitoramento constante e aplicação de correções. |
Escalabilidade | Infraestruturas precisam crescer junto com o negócio. |
Latência e soberania de dados | Algumas empresas exigem execução local por segurança e performance. |
Os bancos de dados autônomos representam a próxima geração de tecnologia, utilizando IA e automação para:
- Ajuste automático de desempenho;
- Autoproteção contra falhas;
- Autorreparo sem downtime.
Essas tecnologias reduzem custos operacionais e aumentam a segurança.
Relatórios como o da Wikibon (2021) e KuppingerCole destacam o Oracle Autonomous Database como referência no setor.
Tipos de dados escalares suportados disponíveis em SQL:
Tipo de dados PL/SQL | Tipo de dados Db2 SQL | Descrição |
---|---|---|
BINARY_INTEGER |
NÚMERO INTEIRO |
Dados numéricos inteiros |
BLOB |
BLOB (4096) |
Dados binários |
BOOLEAN |
BOOLEAN |
Booleano lógico (verdadeiro ou falso) |
CHAR (n) |
CHAR (n) |
Cadeia de caracteres de comprimento fixo |
CHAR VARIADO (n) |
VARCHAR (n) |
Cadeia de caracteres de comprimento variável |
CHARACTER (n) |
CHARACTER (n) |
Dados de cadeia de caracteres fixos |
CHARACTER VARIAR (n) |
VARCHAR (n) |
Cadeia de caracteres variável de até n |
CLOB (n) |
CLOB (n) |
Objeto grande de caracteres |
DATE |
DATA |
Dados de data e hora |
DEC (p, s) |
DEC (p, s) |
Dados numéricos decimais com precisão p e escala s |
DOUBLE |
DOUBLE |
Número de ponto flutuante de precisão dupla |
FLOAT (n) |
REAL / DOUBLE |
Dados de ponto flutuante de precisão variável |
INT |
INT |
Inteiro de quatro bytes |
NCHAR (n) |
NCHAR (n) |
Cadeia de caracteres nacional de comprimento fixo |
NUMBER (p, s) |
NUMBER (p, s) |
Dados numéricos exatos |
SMALLINT |
SMALLINT |
Inteiro de dois bytes |
TIMESTAMP (p) |
TIMESTAMP (p) |
Data/hora com precisão de segundos fracionados |
VARCHAR (n) |
VARCHAR (n) |
Cadeia de caracteres variável |
VARCHAR2 (n) |
VARCHAR2 (n) |
Cadeia de caracteres UTF-32 variável |
Modelo de banco de dados lógico para Departamento Pessoal e Recursos Humanos:
Projeto realizado como atividade proposta em sala.
CREATE TABLE CANDIDATOS
(
ID_CANDIDATO INT PRIMARY KEY,
NOME VARCHAR(n) NOT NULL,
EMAIL INT NOT NULL,
TELEFONE INT NOT NULL,
CURRICULO VARCHAR(n) NOT NULL,
STATUS VARCHAR(n) NOT NULL,
DATA_CADASTRO DATE NOT NULL,
CHECK (ID_CANDIDATO = undefined AND EMAIL = undefined AND TELEFONE = undefined AND CURRICULO = 'undefined' AND STATUS = 'undefined' AND DATA_CADASTRO = undefined)
);
CREATE TABLE FUNCIONARIOS
(
ID_FUNCIONARIO INT PRIMARY KEY,
ID_CANDIDATO INT,
ID_CARGO INT,
DATA ADMISSÃO DATE NOT NULL,
STATUS VARCHAR(n),
CTPS INT NOT NULL,
PIS INT NOT NULL,
idCARGOS INT,
CHECK (ID_FUNCIONARIO = undefined AND ID_CANDIDATO = undefined AND ID_CARGO = undefined AND DATA ADMISSÃO = undefined AND STATUS = 'undefined' AND CTPS = undefined AND PIS = undefined)
);
CREATE TABLE CARGOS
(
ID_CARGO INT PRIMARY KEY,
NOME_CARGO VARCHAR(n) NOT NULL,
DEPARTAMENTO VARCHAR(n) NOT NULL,
NIVEL INT NOT NULL,
DESCRIÇÃO VARCHAR(n) NOT NULL,
SALARIO_BASE INT NOT NULL,
CHECK (ID_CARGO = undefined AND NOME_CARGO = 'undefined' AND DEPARTAMENTO = 'undefined' AND NIVEL = undefined AND DESCRIÇÃO = 'undefined' AND SALARIO_BASE = undefined)
);
CREATE TABLE PROCESSOS
(
ID_PROCESSO INT PRIMARY KEY,
ID_CANDIDATO INT,
ID_VAGA INT NOT NULL,
ETAPA INT NOT NULL,
STATUS VARCHAR(n) NOT NULL,
FEEDBACK VARCHAR(n) NOT NULL,
CHECK (ID_PROCESSO = undefined AND ID_CANDIDATO = undefined AND ID_VAGA = undefined AND ETAPA = undefined AND STATUS = 'undefined' AND FEEDBACK = 'undefined')
);
CREATE TABLE SALARIO
(
ID_SALARIO INT PRIMARY KEY,
ID_FUNCIONARIO INT,
VALOR FLOAT NOT NULL,
DATA_INICIO DATE NOT NULL,
DATA_FIM DATE NOT NULL,
TIPO VARCHAR(n) NOT NULL,
CHECK (ID_SALARIO = undefined AND ID_FUNCIONARIO = undefined AND VALOR = undefined AND DATA_INICIO = undefined AND DATA_FIM = undefined)
);
CREATE TABLE DEPARTAMENTO
(
IS_DEPARTAMENTO INT PRIMARY KEY,
NOME_DEPARTAMENTO VARCHAR(n) NOT NULL,
ORÇAMENTO INT NOT NULL,
ID_GESTOR INT,
CHECK (IS_DEPARTAMENTO = undefined AND ORÇAMENTO = undefined AND ID_GESTOR = undefined)
);
CREATE TABLE VAGAS
(
ID_VAGA INT PRIMARY KEY,
ID_CARGO INT,
DESCRIÇÃO VARCHAR(n) NOT NULL,
STATUS INT NOT NULL,
DATA_ABERTURA DATE PRIMARY KEY,
DATA_FECHAMENTO DATE NOT NULL,
CHECK (ID_CARGO = undefined AND STATUS = undefined AND DATA_ABERTURA = undefined AND DATA_FECHAMENTO = undefined)
);
CREATE TABLE BENEFICIOS
(
ID_BENEFICIO INT PRIMARY KEY,
ID_FUNCIONARIO INT,
TIPO_BENEFICIO INT NOT NULL,
VALOR INT NOT NULL,
DATA_INICIO DATE NOT NULL,
DATA_FIM DATE NOT NULL,
CHECK (ID_BENEFICIO = undefined AND ID_FUNCIONARIO = undefined AND TIPO_BENEFICIO = undefined AND VALOR = undefined AND DATA_INICIO = undefined)
);
CREATE TABLE GESTORES
(
ID_GESTOR INT PRIMARY KEY,
ID_FUNCIONARIO INT,
NIVEL_ACESSO INT NOT NULL,
DATA_INICIO DATE NOT NULL,
DATA_FIM INT NOT NULL,
CHECK (ID_GESTOR = undefined AND ID_FUNCIONARIO = undefined AND NIVEL_ACESSO = undefined AND DATA_INICIO = undefined AND DATA_FIM = undefined)
);
ALTER TABLE FUNCIONARIOS ADD FOREIGN KEY(ID_CARGO) REFERENCES CARGOS (ID_CARGO)
ALTER TABLE FUNCIONARIOS ADD FOREIGN KEY(idCARGOS) REFERENCES CARGOS (idCARGOS)
ALTER TABLE PROCESSOS ADD FOREIGN KEY(ID_CANDIDATO) REFERENCES CANDIDATOS (ID_CANDIDATO)
ALTER TABLE PROCESSOS ADD FOREIGN KEY(ID_VAGA) REFERENCES VAGAS (ID_VAGA)
ALTER TABLE SALARIO ADD FOREIGN KEY(ID_FUNCIONARIO) REFERENCES FUNCIONARIOS (ID_FUNCIONARIO)
ALTER TABLE DEPARTAMENTO ADD FOREIGN KEY(ID_GESTOR) REFERENCES GESTORES (ID_GESTOR)
ALTER TABLE VAGAS ADD FOREIGN KEY(ID_CARGO) REFERENCES CARGOS (ID_CARGO)
ALTER TABLE BENEFICIOS ADD FOREIGN KEY(ID_FUNCIONARIO) REFERENCES FUNCIONARIOS (ID_FUNCIONARIO)
ALTER TABLE GESTORES ADD FOREIGN KEY(ID_FUNCIONARIO) REFERENCES FUNCIONARIOS (ID_FUNCIONARIO)