Escolar Documentos
Profissional Documentos
Cultura Documentos
– Relacional;
– Hierárquico;
– Em rede;
– Orientado a objetos;
Uma breve história sobre BD...
Durante a primeira metade da década de 70, surgiram vários bancos de dados eletrônicos e as
grandes empresas se empenharam cada vez mais em aprimorar o acesso a essa ferramenta.
No inicio da segunda metade dessa década surge a linguagem SQL como resultado de uma
estudo de Phd Edgar Frank Codd (E.F. Codd) para o laboratório de pesquisas da IBM em San
José, Califórnia. Os primeiros aplicativos comerciais a usarem o SQL como linguagem surgem
no final da década de 70. Na época existiam vários outros padrões de linguagem comercias
usadas pelos SGBDs, mas o principal diferencial do SQL era que ele permitia trabalhar com
bancos de dados relacionais. O sucesso do SQL chamou a atenção da ANSI (American
National Standarts Institute) que procurava uma linguagem para definir como padrão dos
Banco de Dados. Em 1982, foi lançada a primeira versão padronizada do SQL
O que é SQL?
• A acrônico SQL significa:
Porém muitas vezes ele se esquece de um ponto muito importante para a maioria dos
sistemas...
“A função básica de um sistema é receber informações, armazena-las e/ou manipula-las de
forma a que o usuário tenha sempre acesso a um resultado final satisfatório.”
Alguns objetivos importantes no planejamento do banco de dados:
• Integridade
• Performance
• Escalabilidade
• Segurança
• Manutenção das tabelas
• Manutenção dos dados
Integridade
Toda vez que os dados de um BD são alterados existe a possibilidade da integridade lógica ser
afetada. A integridade de dados em SGDBs é uma combinação de:
Integridade semântica: os dados de uma coluna sempre serão do tipo de dado definido na
criação da coluna.
Integridade de entidade: cada linha de uma tabela possui um indicador que garanta a
unicidade da mesma.
Integridade referencial: os relacionamentos lógicos entre as entidades, após sua definição,
serão forçados pelos SGDB.
Integridade de domínio: domínio é um conjunto de valores previamente definido no qual uma
coluna só poderá conter valores pertencentes a esse domínio (exemplo: Coluna idade –
Maiores de 18 anos)
Alguns exemplos:
• Um cliente pode ter seu endereço alterado e seu pedido ser enviado para outro local;
• Um produto inexistente por ser inserido acidentalmente no roll de produtos disponíveis
para comercialização;
• O preço de um produto pode ser calculado com valor inferior ao normal e ser
disponibilizado como “oferta”;
• As movimentações de retirada de um cliente podem ser processadas como crédito.
Escalabilidade
Atomicidade - Todas as ações que compõem a unidade de trabalho da transação devem ser
concluídas com sucesso, para que seja efetivada. Se durante a transação qualquer ação que
constitui unidade de trabalho falhar, a transação inteira deve ser desfeita (rollback). Quando
todas as ações são efetuadas com sucesso, a transação pode ser efetivada e persistida em
banco (commit).
Consistência - Todas as regras e restrições definidas no banco de dados devem ser
obedecidas. Relacionamentos por chaves estrangeiras, checagem de valores para campos
restritos ou únicos devem ser obedecidos para que uma transação possa ser completada com
sucesso.
Isolamento - Cada transação funciona completamente à parte de outras estações. Todas as
operações são parte de uma transação única. O principio é que nenhuma outra transação,
operando no mesmo sistema, possa interferir no funcionamento da transação corrente(é um
mecanismo de controle). Outras transações não podem visualizar os resultados parciais das
operações de uma transação em andamento (ainda em respeito à propriedade da
atomicidade).
Durabilidade - Significa que os resultados de uma transação são permanentes e podem ser
desfeitos somente por uma transação subseqüente.Por exemplo: todos os dados e status
relativos a uma transação devem ser armazenados num repositório permanente, não sendo
passíveis de falha por uma falha de hardware.
Essas quatro propriedades são conhecidas como ACID.
Modelos de entidade
Ao iniciarmos o planejamento de um Banco de Dados é importante termos claro qual é o tipo
de SGBD que vamos utilizar e quais os modelos de entidade permitidos por ele.
Existem vários modelos de entidade:
Modelo Tabular: Consiste em uma única tabela de matriz simples e bidimensional . Por
exemplos uma planilha eletrônica
Modelo Escalável em Rede: Consiste em um conjunto de tabelas não relacionadas (algumas
vezes inclusive me BD diferentes) que são acessadas por sistemas distribuídos
Modelo Não Relacional: Consiste em um conjunto de tabelas (ou arquivos textos) não
relacionados, as informações de uma tupla não são importadas para outras tabelas do DB
Modelo Relacional: Conhecido como MER (Modelo Entidade Relacionamento) consiste em
uma teoria matemática que permite através de um relacionamento cardinal que os dados de
duas ou mais tabelas sejam interligados e complementares entre si.
O MER é o modelo mais utilizado hoje em dia (por ser o mais utilizado na grande maioria dos
SGBDs) e será o que iremos estudar com maior ênfase
O que é um sistema de informação?
“Implementação informatizada de processos de negócios já existentes.”
Exemplo: Um sistema de informatização de uma loja digital, deve basear-se nos
conhecimentos (expertises), dos vendedores e gestores de lojas reais para identificar todas as
possíveis ações do sistema.
Modelagem
Capturar os processos de um segmento (regras de negócio) e transforma-los em um MODELO
que possa ser manipulado e/ou processado pelo computador.
Domínio - É o conjunto das regras de negócio de uma segmento (necessidade, departamento,
empresa), ou seja, todas os processos e informações necessárias para se desenvolver um
sistema.
Modelo Entidade-Relacionamento - O MER se baseia em 2 elementos principais para
otimizar o armazenamento das informações obtidas pelas regras de negócio
O que é uma entidade?
“A entidade representa um elemento do domínio da aplicação dentro do modelo”.
As entidades são a representação das informações do mundo real colocadas de forma
organizadas dentro do mundo computacional.
Exemplos: Pessoa, Carro, Fornecedor, Aluno, ...
O que é Atributo ?.
“Uma entidade pode se definida por meio de suas características”.
“Atributo é um dado associada a cada ocorrência de uma entidade ou relacionamento”.
Tipos de atributos
Monovalorado – O Atributo tem somente um valor associado a ele.
Exemplo: Data de Nascimento em relação a entidade Pessoa
Multivalorado – O Atributo pode receber vários valores.
Exemplo: Jogadores em relação a entidade Time
Produtos em relação a entidade Catalogo de
Composto – Um conjunto de atributos que da a ideia de uma única informação
Exemplo: Endereço em relação a entidade Cadastro de Clientes
Derivado – O valor do atributo é dado baseando-se em outro atributo da entidade
Exemplo: Idade que baseia-se no atributo Data de Nascimento
O que é Instância ?
“Instância é uma ocorrência de uma entidade em particular”
O que é identificador?
“Conjunto de um ou mais atributos, cujos valores identificam de maneira unívoca uma
ocorrência da entidade”
Quando realizamos uma busca entre as diversas instancias de uma entidade usando o
identificador o resultado será sempre boleano (ou existe ou não existe). O indicador também e
chamado de Chave
Domínios fortes e fracos em identificadores
Forte – Quando um dos atributos permite naturalmente a unicidade da ocorrência
Fraco – Quando nenhum dos atributos do domínio permitem a identificação de unicidade das
ocorrências
Instância de um relacionamento“Instância de um relacionamento são associações
particulares dentro de um conjunto”
Grau de relacionamento
“O grau de relacionamento indica quantos conjuntos de entidades estão envolvidos
naquele relacionamento”
• Unário
• Binário
• Ternário
• Quaternário
O que é cardinalidade?
“Cardinalidade é o número (mínimo, máximo) de ocorrências de uma entidade
relacionada a outra.”
Tipos de cardinalidades
Um – para – um (1-1)
Para cada ocorrência que houver na tabela mãe, somente poderá haver uma ocorrência
na tabela filho
Um – para – muitos (1-N)
Para cada ocorrência que houver na tabela mãe, poderão haver várias ocorrência na
tabela filho
Muitos – para – muitos (N-N)
Podem haver várias ocorrência na tabela mãe relacionadas a várias ocorrência na tabela
filho
O modelo relacional
“o modelo relacional hoje em dia e largamente utilizado no mercado por que:
1º As tecnologias envolvida nos BD Relacionais já são tecnologias experimentadas...
2º Já são tecnologias consistentes...
3º Existem diversos SGBDs voltados para BDs relacionais.
Facilitando com isso a implementação desse modelo quando vamos desenvolver aplicações
comerciais.”
Relação = Conjunto de elementos da mesma estrutura.
Estrutura de dados
“A estrutura baseada em TABELAS usadas para implementar relações (entidades ou
relacionamentos)”
Ou seja, todo projeto de implementação de um banco de dados relacional deve partir de suas
tabelas (entidades).
Tabelas“As tabelas são usadas para implementar relações (conjunto de dados) que vão
armazenar as ocorrências de entidades ou relacionamentos em um BD relacional.”
Antes de começarmos...
O padrão SQL que iremos trabalhar nessa primeira parte do curso é o padrão SQL-2003 ou
SQL-3 da ANSI.
A maioria dos SGBDs atuais utilizam esse padrão como base para suas linguagens, porém é
comum encontramos breves diferenças entre a sintaxe dessas declarações em cada um
desses SGBDs.
Caso encontre dificuldade em executar alguma das instruções consulte a documentação do
SGBD que estiver utilizando.
Criando um Banco de Dados
CREATE DATABASE
CREATE DATABASE nome
[WITH [LOCATION = ‘caminho’]
[TEMPLATE = gabarito]
[ENCODING = codificação]
nome - O nome do banco de dados a ser criado.
caminho - Um local alternativo no sistema de arquivos onde será armazenado o banco de
dados, especificado como uma cadeia de caracteres; ou DEFAULT para utilizar o local padrão.
gabarito - Nome do banco de dados a ser usado como gabarito para a criação do novo banco
de dados, ou DEFAULT para utilizar o banco de dados de gabarito padrão (template1).
codificação - Método de codificação multibyte a ser utilizado no novo banco de dados.
Especifique o nome como uma cadeia de caracteres (por exemplo, 'SQL_ASCII'), ou o número
inteiro da codificação, ou DEFAULT para utilizar a codificação padrão.
Criando um usuário
CREATE USER
CREATE USER nome_do_usuário
[WITH [ENCRYPTED | UNENCRYPTED] PASSWORD 'senha'
[CREATEDB | NOCREATEDB |
CREATEUSER | NOCREATEUSER |
IN GROUP nome_do_grupo |
VALID UNTIL 'data_hora']
nome_do_usuário - O nome do usuário.
senha - Define a senha do usuário.
Se não se planeja utilizar autenticação por senha pode-se omitir esta opção, mas o usuário não
será capaz de se conectar a um servidor autenticado por senha.
A senha pode ser definida ou alterada posteriormente através do comando ALTER USER.
ENCRYPTED ou UNENCRYPTED - Estas palavras chave controlam se a senha é armazenada
criptografada, ou não.
CREATEDB ou NOCREATEDB Estas cláusulas definem a permissão para o usuário criar
bancos de dados.
será válida para sempre
CREATE USER nome_do_usuário
[WITH [ENCRYPTED | UNENCRYPTED] PASSWORD 'senha'
[CREATEDB | NOCREATEDB |
CREATEUSER | NOCREATEUSER |
IN GROUP nome_do_grupo |
VALID UNTIL 'data_hora']
CREATEUSER ou NOCREATEUSER Estas cláusulas determinam se é permitido ou não o
usuário criar novos usuários.
nome_do_grupo - O nome do grupo onde o usuário será incluído como um novo membro.
Nomes de vários grupos podem estar presentes.
data_hora - A cláusula VALID UNTIL define uma data e hora após a qual a senha do usuário
não é mais válida. Se esta cláusula for omitida, a conta será válida para sempre
Alterando os privilégios de um usuário
ALTER USER
ALTER USER nome_do_usuário
[WITH [ENCRYPTED | UNENCRYPTED] PASSWORD 'senha'
[CREATEDB | NOCREATEDB |
CREATEUSER | NOCREATEUSER |
IN GROUP nome_do_grupo |
VALID UNTIL 'data_hora']
nome_do_usuário - O nome do usuário cujos privilégios serão alterados.
senha – nova senha do usuário
ENCRYPTED ou UNENCRYPTED – Informar esta clausula caso deseje alterar a forma de
armazenamento da senha.
CREATEDB ou NOCREATEDB – Informar esta cláusula caso deseje alterar a permissão do
usuário em criar ou não novos bancos de dados.
CREATEUSER ou NOCREATEUSER – Informar esta cláusula caso deseje alterar a permissão
do usuário em criar ou não novos usuários
ALTER USER nome_do_usuário
[WITH [ENCRYPTED | UNENCRYPTED] PASSWORD 'senha'
[CREATEDB | NOCREATEDB |
CREATEUSER | NOCREATEUSER |
IN GROUP nome_do_grupo |
VALID UNTIL 'data_hora']
nome_do_grupo - O nome do novo grupo onde o usuário será incluído como membro. Nomes
de vários grupos podem estar presentes.
data_hora – a nova data de validade do usuário.
Apagando um usuário
DROP USER
DROP USER nome_do_usuário
nome_do_usuário - O nome de um usuário existente
Criando um grupo de usuários
CREATE GROUP
CREATE GROUP nome_do_grupo
[WITH USER ‘...’, ‘...’,...]
nome_do_grupo - O nome do novo grupo onde o usuário serão inclusos como membro.
USER – O nome dos usuários já criados que a esse novo grupo.
Usuários que pertençam a outros grupos podem ser inclusos em novos grupos.
Caso a cláusula USER na seja utilizado o SQL criará um grupo sem nenhum membro.
Incluindo ou Excluindo usuários num grupo
ALTER GROUP
ALTER GROUP nome_do_grupo
[WITH ADD ‘...’, ‘...’,...]
[ DROP ‘...’, ‘...’,...]
nome_do_grupo - O nome do grupo onde o(s) usuário(s) serão inclusos ou deletados.
ADD – Cláusula para incluir novos membros a um grupo
DROP – Cláusula para excluir membros de um grupo
Excluindo um grupo
DROP GROUP
DROP GROUP nome_do_grupo
nome_do_grupo - O nome do grupo que será deletado.
Ao se deletar um grupo todos os membros do grupo são automaticamente desvinculados
desse grupo.
Existem alguns SGBDs que só permitem que o grupos vazios sejam excluidos.
Criando uma view de uma tabela
CREATE VIEW
CREATE VIEW visão nomes_de_colunas, ...,
AS SELECT consulta
visão - O nome da visão a ser criada.
nomes_de_colunas - Uma relação opcional de nomes a serem usados para as colunas da
visão. Quando fornecidos, estes nomes substituem os nomes inferidos a partir da consulta
SQL.
consulta - Uma consulta SQL que fornece as colunas e as linhas da visão.
Posteriormente iremos aprender os argumentos do comando SELECT e suas cláusulas
Qual a diferença entre uma View e uma Consulta?
A View é um comando que cria uma visão diferente de uma tabela ou conjunto de tabelas
(usando com cláusula o comando SELECT) e mantem essa visão disponível para ser usada a
qualquer momento, já a Consulta só é executada no momento e não permanece sua execução.
Excluindo um view
DROP VIEW
DROP VIEW nome_da_view
nome_da_view - O nome da view que será deletado.
Quando utilizada de forma correta as view otimizam o desempenho de um banco de dados,
porém manter views que nunca são utilizadas acabam por deixar os bancos mais lentos.
Server Host: localhost
Username: root
Password: 123456
mysql >
Criar um banco de dados com o nome de bibliote usando a codificação de caracteres utf8
show databases;
Sintaxe:
use biblioteca;
aluno
ra
inteiro (int)
tamanho 10
www.google.com.br
Server Host = localhost
Username = root
Password = 123456
Finalizar um comando em SQL usar ";" ou "\g"
Para criar em SQL usamos CREATE (estrutura)
Para deletar em SQL usamos o DROP (estrutura)
Criando um banco de dados
create database biblioteca charset utf8;
Mostrando os banco de dados criados:
show databases;
Selecionando o banco a ser usado.
USE biblioteca;
Criando Tabelas em SQL;
Sintaxe:
CREATE TABLE nomedatabela (
atributo tipodedados(tamanhodocampo) opcoesdoatributo,
atributo2 tipodedados(tamanhodocampo) opcoesdoatributo,
atributo3 tipodedados(tamanhodocampo) opcoesdoatributo,
atributo4 tipodedados(tamanhodocampo) opcoesdoatributo
);
CREATE TABLE aluno (
ra int(20) unsigned not null primary key auto_increment,
nomealuno char(40) not null,
telefone char(11) not null,
email char(40) not null,
cpf char(11) not null,
endereco char(50) not null
);
CREATE TABLE funcionario (
codigof int(20) unsigned not null primary key auto_increment,
nomefunc char(40) not null,
telefone char(11) not null,
email char(40) not null,
cpf char(11) not null,
endereco char(50) not null,
cargo char(30) not null
);
VISUALIZANDO A ESTRUTURA DA TABELA:
desc nomedatabela ou describe nomedatabela;
desc aluno;
VISUALIANDO AS TABELAS DO BANCO DE DADOS;
show tables;
telefone
11
caracter
nao pode ser nulo
ra
chave primaria
inteiro
20
não pode ser negativo (unsigned)
não ser nulo (not null)
incrementado automaticamente (auto_increment)
nomealuno
40
caracter
não pode ser nulo
use biblioteca;
Visualizando as tabelas:
show tables;
Visualizando a estrutura da tabela:
desc aluno;
desc funcionario;
desc livro;
desc emprestimo;
desc reserva;
Inserindo dados no banco:
Sintaxe do INSERT:
INSERT INTO tabela VALUES (valor1,valor2,valor3,valor4,valor5...);
CREATE TABLE aluno (
ra int(20) unsigned not null primary key auto_increment,
nomealuno char(40) not null,
telefone char(11) not null,
email char(40) not null,
cpf char(11) not null,
endereco char(50) not null);
INSERT INTO aluno VALUES (NULL,'Mane da Silva','5555-
4444','manedasilva@sumare.edu.br',1112223334,'Av. Joao Dias, 3000, Santo Amaro');
INSERT INTO aluno VALUES (NULL,'Joao da Cabecao','6666-
7777','joaocabecao@sumare.edu.br',4445553332,'Av. Santo Amaro, 335, Santo Amaro');
INSERT INTO aluno VALUES (NULL,'Chico Coco','7777-
8888','chicococo@sumare.edu.br',6667778889,'Rua do Barro, 85, Mandaqui');
Recuperando os dados no banco de dados.
Sintaxe do SELECT:
SELECT Oqueconsultar ondeconsultar opções;
desc aluno;
desc funcionario;
desc livro;
desc reserva;
desc emprestimo;
);
SELECT - Sintaxe:
ALTER TABLE livro ADD codigof int(20) unsigned not null AFTER ra;
ALTER TABLE livro ADD CONSTRAINT fk_ra FOREIGN KEY (ra) REFERENCES aluno(ra);
ALTER TABLE livro ADD CONSTRAINT fk_codigof FOREIGN KEY (codigof) REFERENCES
funcionario(codigof);
Altere a tabela livro adicionando uma constraint de nome fk_ra como chave secundaria
usando o campo da tabela livro ra referencia a tabela aluno no campo ra
'YYYY-MM-DD HH:MM:SS'