Livro
Livro
Livro
DE DADOS
FICHA CATALOGRÁFICA
“Graduação - EaD”.
1. Banco de Dados 2. SQL 3. Dados. 4. EaD. I. Título.
CDD - 005.74
Impresso por:
ACADÊMICO!
AVISO IMPORTANTE!
BOA SORTE!
RECURSOS DE IMERSÃO
A P RO F UN DANDO EU INDICO
P E N SAN D O JUNTO S
ZO O M N O CO NHEC I M ENTO
I N DICAÇÃO DE L IVRO
4
CAMINHOS DE APRENDIZAGEM
9
UNIDADE 1
TRANSAÇÕES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44
MODELAGEM DE DADOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
MODELAGEM DE DADOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
RELACIONAMENTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59
NORMALIZAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5
CAMINHOS DE APRENDIZAGEM
MODELO RELACIONAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
O MODELO RELACIONAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
ATRIBUTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
DOMÍNIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84
RELACIONAMENTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86
CARDINALIDADE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .88
95
UNIDADE 2
SQL BÁSICO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
RESTRIÇÕES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
6
CAMINHOS DE APRENDIZAGEM
165
UNIDADE 3
SCHEMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
7
CAMINHOS DE APRENDIZAGEM
RENAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
8
UNIDADE 1
TEMA DE APRENDIZAGEM 1
CONCEITO DE BANCO DE
DADOS
ME. EDSON YANAGA
ESP. CARLOS DANILO LUZ
MINHAS METAS
1
1
UNIDADE 1
1
1
UNIDADE 1
VAMOS RECORDAR?
Sabemos que a ideia de banco de informações/dados veio antes da era dos
computadores. Desde os primórdios, eles já tinham seu modo de armazena-
mento de informações por meio de livros e registros, por exemplo. Atualmente,
com o advento tecnológico, ainda que não percebamos, manipulamos infor-
mações em um banco de dados por meio de um sistema. Com o crescimento
da tecnologia e das diversas linguagens de programação, houve a necessi-
dade de padronizar o acesso ao banco de dados. Eis que surgem os SGBDs,
com o intuito de resolver problemas de acesso e confiabilidade de informações,
atribuindo também o padrão de linguagem SQL.
Ao conhecermos o SGBD, entenderemos que sua base estrutural segue o mod-
elo de dados relacional, que é utilizado pela grande maioria dos sistemas de
gerenciamento. O modelo relacional tem sua base na matemática, com a rep-
resentação das informações em tabelas e colunas. Ao compararmos o SGBDs
MySQL e Oracle, por exemplo, considerados os bancos mais utilizados no mer-
cado, é preciso refletir sobre os pontos positivos e negativos desses sistemas,
para que, assim, consigamos chegar a uma consideração relevante.
Caro(a) aluno(a), você já ouviu falar em banco de dados? Sabe o quanto o utili-
zamos em nosso dia a dia? Alguns devem ter pensado “eu não o utilizo em meu
cotidiano”, mas estão enganados. Se pensarmos em qualquer empresa, assimila-
remos a gestão a um sistema – e todo e qualquer sistema tem um banco de dados
vinculado. Um usuário que utiliza algum desses sistemas está manipulando as
informações em um banco de dados.
A ideia de banco de dados não surgiu na era dos computadores, já que des-
de os primórdios há formas de armazenamento de informações. Uma das mais
tradicionais que conhecemos são os livros, que armazenavam informações de
pessoas e de empresas, além de fichários, livros-ponto, cadernetas, arquivo morto,
dentre outras. Alguns dos maiores problemas eram o de armazenagem, busca e
1
1
UNIDADE 1
“
Banco de dados é basicamente um sistema computadorizado de
manutenção de registros; em outras palavras, é um sistema compu-
tadorizado cuja finalidade geral é armazenar informações e permitir
que os usuários busquem e atualizem essas informações quando
solicitar. (DATE, 2003, p. 06)
P E N SAN DO J UNTO S
Será que ainda existem empresas que trabalham com um banco de dados como apenas
um livro de registro?
1
1
UNIDADE 1
Você já deve saber que temos vários tipos de aplicações e linguagens de desen-
volvimento, tais como: Java, Delphi, PHP, C# e outras. Podemos considerar como
linguagens primordiais: COBOL, Basic, C etc.
No início da década de 1980, surgiram os primeiros padrões de acesso a da-
dos. Identificou-se que eles continham muitas funcionalidades em comum, por
exemplo, a interface gráfica para interagir com o usuário. Porém, nem toda parte
do código é igual, já que cada linguagem e programa contêm rotinas e funciona-
lidades diferentes para se manipular as informações.
1
1
UNIDADE 1
1
1
UNIDADE 1
Características de SGBD
Gerenciamento de acesso
Consultas eficazes
1
1
UNIDADE 1
módulos responsáveis pela escolha da consulta mais ágil, baseando-se nos dados
já armazenados, são os de processamento de consulta e otimização.
Backup e restauração
SGBD NO MERCADO
MySQL
O MySQL foi criado pela empresa MySQL AB e teve os primeiros manuais desen-
volvidos por David Axmark, Allan Larsson e Michael (Monty) Widenius. O grande
sucesso do MySQL se deve à grande facilidade de interagir com a programação
PHP (Hypertext Preprocessor), sendo considerado um dos principais no desenvol-
vimento de websites. Em virtude de ser suportado por vários sistemas operacionais,
ele sempre está disponível em pacotes de hospedagem de sites na internet.
Ele ganha destaque pelo seu desempenho, ótima estabilidade e por não exigir
grandes recursos de hardware para seu uso, compatível com várias linguagens
além do PHP, como Java, Delphi, Python e ASP (MySQL AB, 2001, s.p.).
Em 16 de janeiro de 2008, a empresa desenvolvedora do MySQL foi comprada
pela Sun Microsystems. O MySQL possui duas formas de distribuição: open source
com base na GPL e com licença comercial.
1
1
UNIDADE 1
ZO O M N O CO NHEC I M ENTO
O que seria uma licença General Public License (GNU)? Em uma tradução
para o português, seria licença pública geral. Também conhecida como
software livre, ela tem como base quatro principais termos:
Oracle
Foi desenvolvido pela empresa Oracle Corporation por meio de seus fundadores
Larry Ellison, Bob Miner e Ed Oates. Larry Ellison viu uma oportunidade de
desenvolver um projeto que atende a uma falha dos demais concorrentes. Em
1977, os sistemas eram enormes e com software ineficientes, somente técnicos
bem treinados conseguiam manipular e gerir a entrada e a saída de dados. Em
1978, entrava no mercado o Oracle Versão 1, que, por sua vez, revolucionou a
computação empresarial (ORACLE, [2016], s.p.). Algumas das principais carac-
terísticas do Oracle são:
1
1
UNIDADE 1
Surgida em 2005, a licença GPL (General Public License) e livre para distribui-
ção contempla os sistemas operacionais Windows e Linux. O tamanho desta
versão para distribuição é em torno de 150 MB e se restringe ao uso de apenas
um CPU, tendo também um limite de, no máximo, 4 GB de dados por usuário e
1 GB (Gigabyte) de memória. O suporte ela é efetuado por meio de comunida-
des on-line. No final deste tema, será demonstrado como efetuar a instalação da
versão Oracle Database XE.
1
1
UNIDADE 1
SQL Server
SGBD é desenvolvido e distribuído pela empresa Microsoft. Ele teve seu início de
desenvolvimento em parceria com a Sybase, com foco nas plataformas da IBM
(International Business Machines). Após o surgimento do Windows NT, tornou-
-se exclusivo para o sistema operacional Windows. Vendo sua perda de espaço
no mercado para os concorrentes, a empresa anunciou em 2016 a versão do SQL
Server para o Linux, tentando, assim, atingir a meta de SGBD mais utilizado no
mundo corporativo. Algumas de suas principais funções são:
2
2
UNIDADE 1
Tabela 1: Edições disponíveis para SQL Server / Fonte: Microsoft ([2016], s.p.).
E U IN D ICO
PostgreSQL
2
2
UNIDADE 1
Por ser um projeto open source, ele conta com milhares de programadores em-
penhados na melhoria de seus códigos e se mantém por meio de patrocínios e
doações. Atualmente, a versão mais estável é a 9.4 e traz consigo a ferramenta
PG Admin III, destinada a uma maior facilidade na manipulação dos dados.
Os SGBDs apresentados têm como base o modelo de dados relacional.
SILBERSCHATZ; KORTH; SUDARSHANet al. (2006, p. 15) o definem como
sendo “[...] um conjunto de tabelas para representar tanto os dados quanto
as relações entre eles”.
Pelo fato de as informações serem representadas de forma simples, sua
implementação é utilizada pela maioria dos SGBDs do mercado e temos que
entender também, prezado(a) aluno(a), qual o conceito de modelo de dados.
“
Modelo de Dados: uma coleção de ferramentas conceituais para
descrever dados, relações de dados, semântica de dados e restri-
ções de consistência. Um modelo de dados oferece uma maneira
de descrever o projeto de um Banco de Dados no nível físico,
lógico e de view. (SILBERSCHATZ; KORTH; SUDARSHANet
al., 2006, p. 5)
2
2
UNIDADE 1
2
2
UNIDADE 1
O modelo de rede foi criado como uma extensão do modelo hierárquico, sendo
seu principal diferencial permitir que um mesmo tipo de registro esteja
agrupado em um único setor. Com base na Figura 2 do modelo hierárquico,
temos as informações dos alunos separadas em linha e as informações da insti-
tuição em um nível abaixo. O modelo de rede agrupa todos os dados dos alunos
em um único lugar e os da instituição em outro.
O sistema de Data Base Task Group (DBTG) normatiza esse modelo de
dados, sendo seu foco garantir a recuperação dos dados para as aplicações do
mesmo modo que estão armazenadas.
2
2
UNIDADE 1
2
2
UNIDADE 1
_ALUNO _CURSO
2
2
UNIDADE 1
o modelo relacional ainda toma grande parte do mercado por sustentar os siste-
mas de negócios tradicionais.
Conforme utilizado nos modelos anteriores, vamos verificar o diagrama do
modelo de dados orientado a objetos. Para representá-lo, é utilizada a Linguagem
de Modelagem Unificada – Unified Modeling Language (UML).
2
2
UNIDADE 1
MODELO RELACIONAL
“
O modelo relacional representa o Banco
de Dados como uma coleção e relações.
Informalmente, cada relação se parece
com uma tabela de valores ou, em al-
guma extensão, com um arquivo de re-
gistros “plano”. (ELMASRI; NAVATHE,
2005, p. 90)
2
2
UNIDADE 1
2
2
UNIDADE 1
Configurando o MYSQL
Partindo do ponto que você, aluno(a), já deve ter lido nesta unidade sobre as
principais características do MySQL, vamos para a instalação e a configuração
dele. Primeiramente, vamos acessar o site oficial do MySQL1.
3
3
UNIDADE 1
Figura 7: Local onde devemos encontrar o link para download / Fonte: o autor.
Após o acesso à página, clique na aba “Downloads” para ter acesso a uma outra
página, como mostra a Figura 8, que deverá seguir para a página “Community”:
3
3
UNIDADE 1
3
3
UNIDADE 1
Figura 11: Informação de como proceder para efetuar o download / Fonte: o autor.
Agora com o download completo, basta darmos dois cliques sobre ele para ini-
ciar a execução e a instalação do nosso MySQL. Após o início da instalação, será
necessário concordar com a licença de uso, conforme a imagem a seguir:
3
3
UNIDADE 1
3
3
UNIDADE 1
Agora com o Visual C++ já instalado, a tela da instalação do nosso MySQL ficará
marcada, indicando que já possuímos o Visual C++:
3
3
UNIDADE 1
Com a instalação finalizada, porém ainda com o banco de dados não configura-
do, a tela ficará da seguinte maneira:
3
3
UNIDADE 1
Figura 19: Opção de inserção, login e senha para acessar o MySQL / Fonte: o autor.
Para irmos ao próximo passo importante, devemos clicar em “Next” até chegar
à seguinte tela:
3
3
UNIDADE 1
Figura 21: Primeira tela do programa instalado e sendo executado / Fonte: o autor.
Para conectar ao banco de dados instalado por meio dos passos acima, basta clicar
sobre a instância criada, conforme destacado na imagem acima. Posteriormente,
clique em “Connect”, informando a senha da instalação conforme a imagem a seguir:
Figura 22: Inserindo login e senha para acesso ao banco de dados / Fonte: o autor.
3
3
UNIDADE 1
Configurando o Oracle XE
3
3
UNIDADE 1
DICA
Geralmente, o próprio instalador configura como serviço do Windows, mas
como exige-se muitos recursos, em “Serviços” é possível configurar o serviço
OracleXETNSListener e OracleServiceXE para iniciar manualmente. Assim,
quando necessitar do banco de dados, é só iniciá-lo no “Menu Iniciar”, opção
“Start Database”.
Figura 24: Opção para download do Oracle SQL Developer / Fonte: o autor.
■ Baixando o SQL*Plus.
4
4
UNIDADE 1
4
4
UNIDADE 1
Se utilizar um sistema de banco de dados parece uma solução natural, qual seria
a solução alternativa? Pense em algumas aplicações que você utiliza e que
não fazem uso de SGBDs. Processadores de texto, planilhas, ferramentas de
desenho etc. são alguns exemplos dessas aplicações. O que todas têm em comum?
A necessidade de se armazenar a informação manipulada por meio de arquivos.
Em qualquer aplicação que necessite do armazenamento de dados, faz-se
necessário dispor de algum mecanismo que permita que esses sejam gravados de
modo persistente. A abordagem de arquivos tem suas vantagens, por exemplo,
a portabilidade dos dados. Você pode carregá-los eletrônica ou fisicamente para
locais diferentes de modo bastante simples, mas dentre as desvantagens dessa
abordagem, há todo o trabalho necessário para se criar um formato e processar
a sua gravação e recuperação – e, acredite, não é pouco trabalho!
Um SGBD, por outro lado, já dispõe de uma série de funcionalidades prontas
para serem utilizadas pelo desenvolvedor da aplicação. Desse modo, uma série
de preocupações passa a ser delegada a um software de terceiros (o SGBD). A
seguir, apresentaremos uma série de características que diferenciam a abordagem
de sistemas de banco de dados da manipulação manual das informações (como
em arquivos, por exemplo).
4
4
UNIDADE 1
IN D ICAÇ ÃO DE LI V RO
4
4
UNIDADE 1
TRANSAÇÕES
4
4
UNIDADE 1
4
4
UNIDADE 1
4
4
UNIDADE 1
4
4
UNIDADE 1
NOVOS DESAFIOS
Caro(a) aluno(a), conhecemos o conceito de banco de dados e aprendemos que
a ideia de banco de informações veio antes da era dos computadores. Desde os
primórdios, já havia um modo de armazenamento de informações, por meio de
livros e registros em papel. Destacamos algumas vantagens de utilizar o banco de
dados. Identificamos que, ainda que não percebamos, manipulamos informações
em um banco de dados por meio de um sistema.
Com o crescimento da tecnologia e das diversas linguagens de programação,
houve a necessidade de padronizar o acesso ao banco de dados. Eis que surgem
os SGBDs, com o intuito de resolver problemas de acesso e confiabilidade de
informações, atribuindo também o padrão de linguagem SQL.
Também foi apresentado a você, aluno(a), alguns dos mais conceituados tipos
de SGBDs, sendo o MySQL, Oracle, SQL Server, PostgreSQL, temos disponíveis
vários outros não mencionados aqui. Ao conhecermos o SGBD, vimos que sua
base estrutural segue o modelo de dados relacional, mas para compreendermos
o porquê dessa escolha, estudamos os outros tipos de modelos de dados, hierár-
quico, rede, relacional e orientado a objetos.
O modelo de dados relacional é utilizado pela grande maioria dos SGBDs,
por isso que estudamos esse modelo com mais detalhes, que tem sua base na
matemática, com a representação das informações em tabelas e colunas.
Podemos considerar que fizemos uma breve comparação entre o SGBDs
MySQL e Oracle, considerados os bancos mais utilizados no mercado, além de
efetuarmos passo a passo a instalação deles. Esses programas serão utilizados
no decorrer de nossa disciplina. Esperamos que tenha aproveitado o conteúdo
apresentado para enriquecer seus conhecimentos, até a próxima!
4
4
AGORA É COM VOCÊ
1. Conforme vimos neste tema, a ideia de um Banco de Dados veio antes da era dos
computadores, o conceito de banco de informações não se limita apenas em arqui-
vos digitais. Assinale Verdadeiro (V) ou Falso (F) no que podemos considerar como
Banco de Dados:
( ) Planilhas Eletrônicas.
( ) Papel de Carta.
( ) Livro de Registros.
( ) Arquivo Morto.
( ) Arquivo.
I - Identificação.
II - Tuplas.
III - Atributos.
IV - Correlações.
V - Relação.
a) Apenas I, II e V.
b) Apenas II e III.
c) Apenas II, III e IV.
d) Apenas II, III e V.
e) Todas as afirmativas.
4
4
UNIDADE 1
TEMA DE APRENDIZAGEM 2
MODELAGEM DE DADOS
ESP. CARLOS DANILO LUZ
MINHAS METAS
5
5
UNIDADE 1
5
5
UNIDADE 1
MODELAGEM DE DADOS
“
a modelagem de dados é um método de análise que, a partir de
fatos relevantes a um contexto de negócio, determina a perspectiva
dos dados, permitindo organizá-los em estruturas bem definidas e
estabelecer regras de dependência entre eles, além de produzir um
modelo expresso por uma representação descritiva e gráfica.
5
5
UNIDADE 1
Figura 1: Estágios da modelagem de dados / Fonte: Adaptada de Puga, França e Goya (2005).
ZO O M N O CO NHEC I M ENTO
Modelo Conceitual
5
5
UNIDADE 1
Modelo Lógico
UNIDADE 1
Modelo Físico
Este modelo é utilizado para efetuar a sintonia de banco de dados com o intuito
de otimizar o desempenho. Puga, França e Goya (2013, p. 80) afirmam que “[...]
o modelo físico de dados representa a estrutura para armazenamento físico dos
dados, expressando a forma como as informações serão armazenadas fisicamente,
em termos computacionais”.
Conforme mencionado no modelo lógico, a implementação do SGBD pode
influenciar as estruturas físicas que são criadas nessa etapa de acordo com o
SGBD escolhido. Alterações efetuadas no modelo físico não interferem nas apli-
cações que estão utilizando o banco de dados. Essas alterações podem acontecer
após a implementação e funcionamento do SGBD.
P E N SA N DO J UNTO S
5
5
UNIDADE 1
Figura 4: Símbolos usados no desenvolvimento do DER / Fonte: adaptada de Cardoso e Cardoso (2012).
Entidades
Uma entidade representa uma tabela do Banco de Dados no DER. Podemos consi-
derar a tabela como um conjunto ou objeto de informações. Vamos considerar uma
entidade com o nome de alunos. Na tabela alunos, será armazenado um conjunto
de informação sobre a entidade. Para Heuser (2009), entidade é um conjunto de
objetos da realidade modelada sobre os quais deseja-se manter informações no
banco de dados. Dessa forma, o banco de dados é separado por entidades (tabelas).
Conforme informado anteriormente, uma entidade é representada em um
DER por meio de um retângulo com o nome da tabela ao centro dele. Alguns
exemplos de entidades são mostrados na Figura 5.
5
5
UNIDADE 1
Atributos
5
5
UNIDADE 1
Vamos utilizar a entidade alunos como exemplo. Os atributos dela são: matrí-
cula, nome, CPF etc. Perceba que os atributos são os dados que esperamos no
cadastro de um aluno. Veremos, na Figura 8, como é a composição do DER com
entidades e atributos.
Tipos de Atributos
5
5
UNIDADE 1
Chaves
RELACIONAMENTOS
5
5
UNIDADE 1
Tipos de Relacionamentos
Figura 14: Representação do relacionamento binário / Fonte: adaptada de Cardoso e Cardoso (2012).
6
6
UNIDADE 1
Figura 15: Representação do relacionamento ternário / Fonte: adaptada de Cardoso e Cardoso (2012).
Cardinalidade de Relacionamentos
Prezado(a) aluno(a), agora que você já conhece os elementos básicos para montar
um DER, é necessário inserir algumas restrições e informações para que ele não
fique generalizado, mas o mais próximo da regra de negócio apresentada. Por
meio do MER, podemos utilizar a cardinalidade de relacionamentos.
“
A cardinalidade permite expressar o número de ocorrências com
que uma entidade pode tomar parte em um relacionamento. Per-
mite também expressar as possibilidades e restrições de associações
entre uma entidade e outra. (CARDOSO; CARDOSO, 2012, p. 35)
6
6
UNIDADE 1
(x:y)
Mínima
Cardinalidade 1:1
Acontece quando temos apenas uma ocorrência a ser registrada para cada enti-
dade em ambos os lados, em que a cardinalidade atribuída é 1:1. Podemos utilizar
como exemplo o relacionamento professor e disciplina sendo: um professor pode
ministrar uma disciplina.
1:1 1:1
professor ministrar disciplina
1 1
professor ministrar disciplina
1 1
Figura 18: Representação da cardinalidade 1:1 / Fonte: adaptada de Cardoso e Cardoso (2012).
Cardinalidade 1:N
Acontece quando temos uma ocorrência mínima para muitos, então a cardina-
lidade atribuída é 1:N. Com base no exemplo anterior, vamos mudar um pouco
o cenário: um professor pode ministrar várias disciplinas no curso.
6
6
UNIDADE 1
1:N 1:1
professor ministrar disciplina
1 N
professor ministrar disciplina
1 1
Figura 19: Representação da cardinalidade 1:N / Fonte: adaptada de Cardoso e Cardoso (2012).
Cardinalidade N:1
Podemos nos deparar com o contrário, quando temos múltiplas ocorrências para
apenas 1 e a cardinalidade atribuída é N:1. Com base no exemplo anterior, va-
mos mudar novamente o cenário: uma disciplina pode ser ministrada por vários
professores.
N:1 1:N
professor ministrar disciplina
N 1
professor ministrar disciplina
N 1
Cardinalidade N:N
6
6
UNIDADE 1
N:N N:N
professor ministrar disciplina
N N
professor ministrar disciplina
N N
Figura 21: Representação da cardinalidade N:N / Fonte: adaptada de Cardoso e Cardoso (2012).
Cardinalidade 0:1
0:1 1:1
EMPREGADO ALOCAÇÃO MESA
0 1
EMPREGADO ALOCAÇÃO MESA
1 1
6
6
UNIDADE 1
Cardinalidade 0:N
Acontece quando temos muitas ocorrências sem termos algumas restrições mí-
nimas. Continuando com o exemplo da empresa: contamos com muitas mesas
disponíveis no setor, mas para que elas estejam no setor, não é obrigatório ter um
empregado vinculado a elas.
0:N 1:1
EMPREGADO ALOCAÇÃO MESA
0 N
EMPREGADO ALOCAÇÃO MESA
1 1
Cardinalidade Ternária
6
6
UNIDADE 1
CIDADE DISTRIBUIDOR
N 1
DISTRIBUIÇÃO
PRODUTO
NORMALIZAÇÃO
6
6
UNIDADE 1
■ Elaborar uma única tabela, mas ela vai contar com redundância de dados.
Nessa tabela, as informações vão aparecer repetidas em cada linha.
■ Outra alternativa é criar outra tabela para cada tabela alinhada. Dessa for-
ma, os dados são separados em duas tabelas para melhorar a organização.
6
6
UNIDADE 1
Figura 26: Tabela representada na primeira forma normal / Fonte: adaptada de Heuser (2009).
A etapa da segunda forma normal (2FN) tem como função a eliminação de re-
dundância de dados. Para que seja possível efetuar a 2FN da tabela, deve-se já
estar na 1FN. Vamos dividir novamente a segunda tabela de forma que a nossa
chave é CodAluno, conforme a Figura 27.
6
6
Figura 27: Tabela representada na segunda forma normal / Fonte: adaptada de Heuser (2009).
Figura 28: Tabela representada na terceira forma normal / Fonte: adaptada de Heuser (2009).
IN D ICAÇÃO DE LI V RO
Engenharia de Requisitos
Autores: Carlos Eduardo Vazquez e Guilherme Siqueira Simões
Editora: Brasport
Sinopse: este livro apresenta a engenharia de requisitos de um ponto
de vista prático com diversos exercícios e estudo de caso, sendo, prin-
cipalmente, voltado à comunicação com o cliente.
7
7
UNIDADE 1
NOVOS DESAFIOS
Prezado(a) aluno(a)! Aqui compreendemos que a estruturação de um banco de dados
se inicia na modelagem de dados. Esta etapa é de suma importância na construção
do banco de dados, a fim de evitarmos falhas no decorrer do projeto. Ainda, com-
preendemos que a modelagem pode ser classificada como conceitual, lógica e física.
Aprendemos os conceitos do MER e sobre o DER, elementos que são con-
siderados padrões do modelo conceitual para a modelagem de dados. Ao co-
nhecermos os itens que compõem um DER, sendo as entidades e os atributos,
temos uma visão mais ampla sobre o nosso banco de dados, de forma simples,
mas muito eficiente. Compreendemos também que as entidades não podem ficar
soltas no DER, pois igualmente como ocorre no banco de dados, as tabelas po-
dem ser interligadas. Por isso, foi lhe apresentado o relacionamento, forma essa
de demonstrar a associação entre entidades.
Para que nosso DER represente de forma mais fiel a regra de negócio estabe-
lecida no início da nossa estrutura, temos que aplicar a cardinalidade de relacio-
namentos que nos informa quais as obrigações e as restrições no relacionamento
entre entidades, podendo ser elas de autorrelacionamento, binário ou ternário.
Por fim, vimos a normalização, item que é muito utilizado na engenharia
reversa de dados quando temos algum documento e gostaríamos de gerar um
DER. Os dados desse documento se encontram em uma tabela não normalizada,
passando pelas 1FN, 2FN e 3FN, para que possamos extrair as informações em
tabelas com base no modelo relacional.
Pois bem, caro(a) aluno(a), esperamos que tenha aproveitado o conhecimento
aqui exposto. Até mais!
7
7
AGORA É COM VOCÊ
a) Coleta de Dados.
b) Estruturação do Banco de Dados.
c) Engenharia de Requisitos.
d) Análise de Requisitos.
e) DER.
2. Com base no que estudamos neste tema, defina de forma simples o que são entidade
e atributos no modelo relacional.
7
7
MEU ESPAÇO
7
7
UNIDADE 1
TEMA DE APRENDIZAGEM 3
MODELO RELACIONAL
ESP. VICTOR DE MARQUI PEDROSO
MINHAS METAS
7
7
UNIDADE 1
7
7
UNIDADE 1
O MODELO RELACIONAL
Entidade:
Atributo: ou
Relacionamento:
7
7
UNIDADE 1
Entidades (Tabelas)
Alunos Viagem
Carros Aluguel
INTRODUÇÃO À MODELAGEM
7
7
UNIDADE 1
Bibliotecário Livro
Carro Itinerário
Assim, iremos popular o nosso sistema com as entidades necessárias para a im-
plementação. Vale lembrar que essa fase é importantíssima e deve ser feita com
muita atenção. Você pode se perguntar o motivo de tanta importância e vou
exemplificar de maneira prática. A comparação dessa fase inicial é a mesma de
uma obra de uma casa, pois, uma vez que for mal dimensionada a estrutura,
podemos ter sérios e irreversíveis problemas no futuro. A seguir, seguem dois
exemplos de uma análise a partir de uma descrição textual narrativa.
Analisando o Exemplo 1 (Figura 6), temos como substantivos atendente, que po-
demos nomear como funcionário. Temos também as palavras “cliente” e “gêneros”.
Com isso, para a implementação do que fora relatado e do que é relevante, teremos
a necessidade de criação de três entidades, sendo elas: funcionário, cliente e gênero.
7
7
UNIDADE 1
ZO O M N O CO NHEC I M ENTO
Fonte: o autor.
ATRIBUTOS
7
7
UNIDADE 1
Produto
Código Valor_Venda
Produto
Valor_Custo Descrição
TIPOS DE ATRIBUTOS
8
8
UNIDADE 1
petida, ou seja, para uma entidade cliente, temos um nome para cada
cliente, podendo acontecer de dois clientes terem o mesmo nome, mas
informando um dado para cada cliente. A seguir, temos a representação
do atributo simples:
CPF CPF
Cliente Cliente
Nome Nome
Funcionário Funcionário
Matrícula Telefones
Funcionário
Sexo Data_nascimento
8
8
UNIDADE 1
Logradouro
Bairro
Matrícula Endereço
Cidade
Sexo Funcionário
Complemento
Data_nascimento
O atributo-chave deve ser íntegro, ou seja, sem repetições, e não pode ser nulo
(valores vazios). A sua representação pode ser demonstrada de maneira subli-
nhada ou com o círculo destacado na borda em negrito, conforme a Figura 13:
Código ou Código
8
8
UNIDADE 1
ZO O M N O CO NHEC I M ENTO
O Google está na mídia o tempo todo, mas existem dados sobre a companhia que algu-
mas pessoas ainda desconhecem. O Business Insider reuniu 10 fatos curiosos sobre a
gigante da web que merecem atenção. Confira a seguir.
Nome – esse atributo pode confundir um pouco, pois cada funcionário tem
seu nome, porém pode haver funcionários com o mesmo nome. Logo, po-
demos perceber que o nome ser utilizado como um identificador pode nos
trazer problemas.
8
8
UNIDADE 1
Endereço Nome
Funcionário
Matrícula
DOMÍNIO
Matrícula Inteiro 3
Nome Caractere 40
Idade Inteiro 3
Fonte: o autor.
8
8
UNIDADE 1
_ _
_ _ _ _
Figura 15: Exemplo da aplicação de uma chave estrangeira entre duas tabelas
Fonte: os autores.
Outro exemplo:
8
8
UNIDADE 1
_ _ _ _
_ _Nome
_Cod _Nome
Figura 16: Exemplo da aplicação de uma chave estrangeira entre duas tabelas / Fonte: os autores.
RELACIONAMENTOS
Analisando o modelo relacional, as entidades não podem ficar isoladas, uma vez
que as informações estarão organizadas futuramente para o acesso de forma in-
tegrada. Para essa organização sem perda de conteúdo, as entidades devem estar
associadas, ligadas entre si. No Modelo Entidade Relacionamento (MER), não é
permitido ligar uma entidade diretamente a outra. Quando há uma associação,
ela é representada por um relacionamento e o relacionamento é apresentado na
forma de um losango. Para a associação entre entidades, deve-se seguir a notação
básica, que são entidades ligadas ao relacionamento por linhas retas, conforme a
Figura 17. Sempre que um relacionamento for indicado, é necessário verificar a
validade nos dois sentidos. Atenção! As setas não fazem parte do diagrama e são
apenas para ilustrar os sentidos.
Funcionário Setor
8
8
UNIDADE 1
Tipos de relacionamentos
Alunos Pessoas
Gerenciar Casar
Disciplina
Figura 21: Exemplo de relacionamento ternário / Fonte: Cardoso e Cardoso (2012, p. 62).
8
8
UNIDADE 1
Vale lembrar que, entre duas entidades, também pode haver relacionamento, ou
seja, uma entidade pode estar associada a outra por mais de um relacionamento,
conforme o exemplo a seguir:
Gerenciar
Horário
Figura 23: Exemplo de relacionamento contendo um atributo / Fonte: Cardoso e Cardoso (2012, p. 63).
Conforme o exemplo citado (Figura 23), podemos dizer que o atributo horário
é parte comum das entidades associadas no relacionamento, pois esse informa
em que horário o palestrante ministra o referido tema.
CARDINALIDADE
8
8
UNIDADE 1
(x:y)
Cardinalidade Mínima
Cardinalidade Máxima
■ Um para um (1:1).
■ Um para muitos (1:N).
■ Muitos para muitos (N:N) ou N:M.
1 1
Cliente Compra Produto
1 1
Figura 24: Exemplo de cardinalidade um para um / Fonte: Cardoso e Cardoso (2012, p. 64).
8
8
UNIDADE 1
1 N
Cliente Compra Produto
1 1
Figura 25: Exemplo de cardinalidade um para N / Fonte: Cardoso e Cardoso (2012, p. 65).
1 N
Cliente Compra Produto
N 1
Figura 26: Exemplo de cardinalidade N para N / Fonte: Cardoso e Cardoso (2012, p. 65).
1 N
Vários Clientes Compra Produto
N 1
Figura 27: Exemplo de cardinalidade N para N / Fonte: Cardoso e Cardoso (2012, p. 66).
Cardinalidade mínima
9
9
UNIDADE 1
0,N 1,N
Cliente Compra Produto
Figura 28: Exemplo de cardinalidade N para N / Fonte: Cardoso e Cardoso (2012, p. 67).
NOVOS DESAFIOS
Procuramos demonstrar os assuntos de maneira que você possa entender melhor
as questões que permeiam os conceitos básicos do modelo relacional de banco de
dados. Vale enfatizar que tivemos a oportunidade de estudar a respeito de concei-
tos básicos do modelo relacional, como o Diagrama Entidade e Relacionamento
(DER), tuplas, entidades, atributos, relacionamentos, cardinalidades etc. Esses con-
ceitos são importantes para quem deseja aprender, de maneira correta, a iniciar a
criação de um projeto de banco de dados, tendo como principal objetivo dar a você,
estudante, uma melhor aplicabilidade no momento da iniciação de um projeto.
Espero que esses conceitos tenham sido explanados de maneira clara e obje-
tiva, sempre buscando exemplificar para que seja direto ao ponto e, assim, possa
facilitar o seu estudo, entendimento e aprendizado. Aproveito o momento para
deixar aqui o meu incentivo à fixação desse conteúdo, pois esses conceitos são im-
prescindíveis para quem deseja iniciar o desenvolvimento de um banco de dados.
9
9
AGORA É COM VOCÊ
a) Código do Produto
b) Descrição do Produto
c) Unidade do Produto
d) Valor do Produto
e) Classificação do Produto
f) Valor Custo do Produto
9
9
MEU ESPAÇO
9
9
MEU ESPAÇO
9
9
UNIDADE 2
TEMA DE APRENDIZAGEM 4
SQL BÁSICO
ME. EDSON YANAGA
MINHAS METAS
9
9
UNIDADE 2
9
9
UNIDADE 2
O Conceito de Schema
Em sua versão inicial, a SQL não possuía um mecanismo para agrupar tabelas
relacionadas. Como consequência, todas as tabelas no SGBD coexistiam dentro
de um mesmo “ambiente”. A partir do SQL-92, criou-se o conceito de schema,
que é simplesmente um conjunto de tabelas relacionadas. Do mesmo modo que
9
9
UNIDADE 2
O comando CREATE TABLE é utilizado para criar uma tabela. O primeiro pa-
râmetro do comando é o nome da tabela a ser criada, seguido dos atributos e de
seus respectivos tipos e eventuais restrições do atributo. Restrições de integridade
referencial podem ser definidas ao final do comando.
contato
id nome sobrenome nascimento peso
email
id email contato_fk
telefone
id telefone contato_fk
grupo afiliação
id nome grupo_fk contato_fk
9
9
UNIDADE 2
1
1
1
UNIDADE 2
TIPOS DE DADOS
A SQL define um conjunto de tipos de dados básicos para os seus atributos. Dife-
rentes produtos adicionam tipos de dados diferentes ao conjunto suportado, mas
todos os produtos disponíveis no mercado suportam ao menos estes tipos básicos:
1
1
1
UNIDADE 2
RESTRIÇÕES
A linguagem SQL permite que todos os atributos (com exceção daqueles que
compõem a chave primária) sejam nulos. Se o seu modelo de negócios não per-
mite que um atributo seja nulo, é necessário especificar uma restrição de “not
null” na declaração do atributo.
Outra consideração (pequena talvez) sobre o “not null” é que, no mínimo, o
SGBD terá que gravar um bit (ou um byte) a mais em cada atributo em casos de
campos “null”. Se um atributo permitir nulos, então o SGBD terá que, primeira-
mente, saber se o campo é nulo ou não e, depois, armazenar o próprio conteúdo.
Além de valores nulos, também há possibilidade de se definir um valor padrão
para os atributos utilizando-se a cláusula “DEFAULT <valor>”. Caso esse atributo
seja omitido durante a inserção de uma linha da tabela, assume-se o valor padrão.
Por padrão na SQL, caso nenhuma cláusula seja declarada, os atributos
permitirão valores nulos e o valor padrão também será nulo. Como exemplo,
poderíamos definir “Silva” como o sobrenome padrão dos nossos contatos no
comando CREATE TABLE:
1
1
1
UNIDADE 2
nascimento DATE,
peso DECIMAL(10,2)
);
Para especificar uma chave primária, utiliza-se a cláusula “PRIMARY KEY”. Caso
a chave primária possua um único atributo, ela pode ser declarada no próprio
atributo (como no exemplo da tabela contato):
1
1
1
UNIDADE 2
contato_fk INT,
);
contato_fk INT,
);
contato_fk INT,
);
1
1
1
UNIDADE 2
Carro Itinerário
1
1
1
UNIDADE 2
Nesse exemplo, pode-se notar que, em uma consulta, é permitido realizar o join
entre várias tabelas diferentes e, novamente nesse caso, todas estão relacionadas
por meio de uma condição de combinação baseada em chaves estrangeiras.
Exemplo 3: selecione o id do telefone de todos os contatos cujo peso seja maior que 70.
SELECT telefone.id
O Exemplo 3 mostra como devemos definir os nomes dos atributos nas cláusulas
quando há a possibilidade de ambiguidade na definição dos nomes. Tanto a ta-
bela contato quanto a tabela telefone possuem um atributo denominado de “id”.
1
1
1
UNIDADE 2
Nesse caso, devemos informar à SQL qual é o atributo “id” que desejamos obter,
prefixando o atributo com o nome de sua respectiva tabela. No caso do exemplo,
eliminamos a ambiguidade descrevendo o atributo como “telefone.id”.
fk AND n = ‘Joaquim’;
Uma facilidade na construção de consultas que têm termos repetidos sendo re-
ferenciados é a criação de um alias. Um alias é um apelido definido para um
determinado termo da consulta SQL. No Exemplo 4, definimos que o atributo
contato.nome possui um alias “n” e que o atributo grupo.nome possui um alias
“g”. Desse modo, no restante dessa consulta, não precisamos mais nos referenciar
a esses atributos pela referência completa, torna-se possível, então, simplesmente
escrevermos a condição final da consulta como sendo n = ‘Joaquim’.
SELECT c.peso
FROM contato c
1
1
1
UNIDADE 2
SELECT nascimento
FROM contato;
SELECT *
FROM contato
Quando não se deseja limitar quais atributos devem ser retornados na consulta,
pode-se utilizar um asterisco (“*”) para determinar ao SQL que processe todos
os atributos de todas as tabelas da cláusula FROM no resultado da consulta SQL.
FROM contato;
1
1
1
UNIDADE 2
Embora o modelo relacional seja baseado na teoria geral dos conjuntos e, mate-
maticamente, em conjuntos não haja elementos repetidos, permite-se elementos
repetidos em tabelas e, consequentemente, nos resultados das consultas, esses
elementos repetidos são exibidos. Nas situações em que se deseje eliminar as
tuplas repetidas nos resultados das consultas, pode-se utilizar a cláusula “DIS-
TINCT”, como no Exemplo 8.
SELECT *
FROM telefone
SELECT *
FROM contato
Outro caractere especial que pode ser utilizado em condições “LIKE” é o “_”. Ele
representa um único caractere arbitrário utilizado na busca. Como as datas em
SQL podem ser representadas como uma string “AAAA-MM-DD”, utilizamos o
“_” para preencher os campos da nossa busca.
1
1
1
UNIDADE 2
Exemplo 11: selecione todos os contatos cujo peso esteja entre 90 e 100.
SELECT *
FROM contato
Exemplo 12: selecione o nome de todos os contatos por ordem alfabética crescente.
SELECT nome
FROM contato
A cláusula “ORDER BY” da SQL permite que o resultado da busca seja ordenado
de acordo com os parâmetros informados. Uma cláusula “ORDER BY” pode
ordenar os resultados de modo ascendente ou descendente. Para tanto, basta
adicionar respectivamente o modificador “ASC” ou “DESC” na cláusula. O valor
“ASC” é o padrão e o valor assumido caso o modificador seja omitido.
1
1
1
UNIDADE 2
FROM contato
Até agora, pudemos definir quais são os comandos básicos da SQL para a execu-
ção de consultas básicas em nossos bancos de dados. A partir de agora, aborda-
remos os comandos da SQL que permitem a adição, a atualização e a remoção de
tuplas (linhas), que, respectivamente, correspondem ao insert, update e delete.
O comando INSERT
1
1
1
UNIDADE 2
nome varchar(30),
sobrenome varchar(30)
);
1
1
1
UNIDADE 2
SELECT nome,sobrenome
FROM contato
O comando UPDATE
UPDATE contato
UPDATE contato
1
1
1
UNIDADE 2
UPDATE contato
O valor nulo também pode ser utilizado como valor de atribuição em comandos
UPDATE, desde que as restrições do schema do banco de dados assim o permitam,
assim como o comando INSERT. Vale lembrar que todas as restrições do schema
que se aplicam ao comando INSERT também são válidas para o comando UPDATE.
O comando DELETE
WHERE id = 5;
1
1
1
UNIDADE 2
E U IN D ICO
1
1
1
UNIDADE 2
NOVOS DESAFIOS
Temos a convicção de que você, como profissional comprometido(a) e fluente em
inglês (sim, na área de Tecnologia da Informação, inglês é obrigatório e deveria ser o
idioma principal), já abordará seus(suas) colegas, alunos(as) e profissionais, falando
“síquel” em vez do famigerado “esse-quê-ele”, quando se referir à linguagem SQL.
Como toda tecnologia e assunto novo, SQL exige prática para o domínio.
Acreditamos piamente na educação por meio de exemplos como a melhor forma
de se formar profissionais que consigam utilizar os conhecimentos assimilados
na execução prática das tarefas. Durante este tema, pudemos estudar a formação
dos comandos INSERT, UPDATE e DELETE e suas respectivas sintaxes e cláu-
sulas individuais. Em seguida, por meio de exemplos, praticamos uma série de
diferentes definições de comandos e explicamos o que se esperava de cada um
deles, bem como sua motivação.
Crie seus próprios schemas baseado(a) nas abstrações reais do mundo que o cer-
ca, exercite-se e execute consultas e comandos de modificação SQL nesses seus sche-
mas! Com a prática cotidiana, você perceberá que SQL também é bastante simples.
Até agora, fomos capazes de abordar as estruturas básicas da linguagem SQL
para que nos nossos próximos passos possamos nos dedicar a alguns casos mais
elaborados de uso dessa popular linguagem.
1
1
1
AGORA É COM VOCÊ
1
1
1
UNIDADE 2
TEMA DE APRENDIZAGEM 5
MAIS SQL
ME. EDSON YANAGA
MINHAS METAS
1
1
1
UNIDADE 2
O valor NULL representa um valor ausente, mas que pode ter diferentes inter-
pretações. Algumas possibilidades de uso para o valor NULL são:
1
1
1
UNIDADE 2
A avaliação de comandos de consulta SQL com valores NULL merece uma aten-
ção especial. Todos os fundamentos de computação baseiam-se na lógica boo-
leana, o que implica que as expressões possuem sempre somente dois valores
possíveis: verdadeiro (TRUE) ou falso (FALSE).
Como em SQL os atributos podem ter valor nulo, agora as expressões que en-
volvem os atributos podem resultar em valores verdadeiros (TRUE), falso (FAL-
SE) ou em um terceiro valor, que é representado por NULL. Esse terceiro valor
pode ser checado de um modo especial com os operadores SQL definidos, como
IS e IS NOT. Ademais, todas as condições da cláusula WHERE de comandos SQL
filtram as linhas baseando-se no valor verdadeiro (TRUE) das expressões. Nesse
caso, linhas que sejam avaliadas pelas expressões da cláusula WHERE como falso
(FALSE) ou como o valor representado por NULL simplesmente são descartadas
(com exceção da operação de OUTER JOIN).
Comecemos com alguns exemplos ainda baseados no schema apresentado
no tema anterior.
SELECT *
FROM contato
SELECT *
FROM contato
1
1
1
UNIDADE 2
SELECT telefone
SELECT telefone
FROM telefone
WHERE contato_fk IN
SELECT id
FROM contato
);
1
1
1
UNIDADE 2
há diferença entre as duas consultas: são equivalentes. Toda consulta que utiliza
um join pode ser reescrita na forma de uma consulta aninhada (com subqueries).
Decidir entre uma forma e outra passa a ser uma questão de gosto, conve-
niência e legibilidade de código. Há alguns anos, poderia ser argumentado que
uma forma seria mais rápida que outra ou vice-versa. Entretanto, devido à evolu-
ção dos interpretadores de SQL nos Sistemas Gerenciadores de Banco de Dados
(SGDBS) modernos, essa diferença hoje é praticamente nula: todos os SGBDs
modificam internamente as consultas fornecidas e automaticamente já escolhem
o melhor plano de execução. Isso faz que boa parte das supostas “otimizações”
que muitos DBAs realizam em consultas SQL tornem-se inócuas, pois o SGBD,
na maioria das vezes, reescreverá as consultas para a melhor forma possível.
No exemplo anterior, note o uso da cláusula IN (<subquery>). A cláusula IN
espera um conjunto de valores sendo retornado pela subquery dentro dos parên-
teses, que deve ser compatível com o atributo sendo comparado pela cláusula IN.
Na hipótese de você ter certeza da sua subquery retornar um único valor em vez de
retornar um conjunto de valores, pode substituir o IN pelo operador de igual (‘=’).
Mas até nas situações de um único valor sendo retornado, o operador IN continua
equivalente. É por esse motivo que muitos programadores acabam adotando a con-
venção de se utilizar o operador IN em todas as consultas que envolvem subqueries.
Considere nos exemplos o seguinte schema representado pela Figura 1:
funcionário
id nome sobrenome cargo
subordinado
id nome sobrenome superior_fk
1
1
1
UNIDADE 2
nome varchar(30),
sobrenome varchar(30),
cargo varchar(30)
);
nome varchar(30),
sobrenome varchar(30),
superior_fk int,
);
1
1
1
UNIDADE 2
FROM funcionario AS f
WHERE id IN(
SELECT superior_fk
FROM subordinado AS s
);
Esse exemplo reescrito com uma subquery é um caso especial de consulta aninha-
da em SQL, pois, como você pode notar, a subquery utiliza atributos da consulta
externa em sua cláusula WHERE. Chamamos esse caso especial de consultas
aninhadas correlacionadas.
FROM funcionario AS f
WHERE EXISTS (
SELECT *
FROM subordinado AS s
);
1
1
1
UNIDADE 2
FROM funcionario AS f
SELECT *
FROM subordinado AS s
);
No tema anterior, nós vimos que o conceito de join permite que façamos consul-
tas que utilizam duas ou mais tabelas, unidas por meio de uma ou mais condições
que unem os elementos das duas ou mais tabelas. Em alguns casos, é mais fácil
compreender as consultas se elas forem escritas na forma com join em vez de
misturar as condições de join na cláusula WHERE. Voltemos a utilizar o schema
definido no tema anterior em nossos exemplos a seguir.
Exemplo 6: selecione o nome de todos os contatos cujo telefone inicie com “44”.
SELECT nome
‘44%’;
1
1
1
UNIDADE 2
SELECT nome
Nesse caso do exemplo reescrito com JOIN, a cláusula FROM possui uma joined
table que contém todos os atributos de ambas as tabelas unidas pelo JOIN e pela
condição do JOIN, que é o predicado após o ON. Na SQL, o tipo de JOIN padrão,
quando simplesmente declarado pela cláusula JOIN, é o inner join, que descarta
todas as tuplas que não possuam um valor correspondente na segunda tabela
do JOIN. Os outros tipos de JOIN disponíveis são descritos na tabela a seguir:
1
1
1
UNIDADE 2
Exemplo 7: selecione todos os nomes de contatos que iniciem com a letra “A” e
seus respectivos telefones. Se o contato não tiver um telefone, mostre somente o
nome e NULL como o valor do telefone.
É um caso típico de LEFT JOIN, em que você deseja listar todos os contatos,
tendo eles telefone ou não.
Uma das grandes vantagens da SQL e dos bancos de dados relacionais, se compa-
rados com outras alternativas não relacionais, são as suas funções de agregação.
Essas funções permitem uma análise resumida das informações armazenadas nas
tabelas. Funções de agregação populares da SQL incluem COUNT, SUM, MAX,
MIN e AVG que executam as funções matemáticas respectivas de contagem,
soma, valor máximo, valor mínimo e média aritmética.
FROM contato;
1
1
1
UNIDADE 2
SELECT COUNT(*)
FROM contato
FROM contato;
Funções de Agrupamento
1
1
1
UNIDADE 2
FROM contato
GROUP by sobrenome;
Na avaliação dessa consulta, todas as tuplas da tabela contato são divididas em grupos
cujo sobrenome seja igual. Ao aplicarmos a função COUNT(*), em vez de contar to-
das as tuplas da tabela, ela conta somente as tuplas de cada grupo. O resultado é uma
lista que contém os sobrenomes e as quantidades de contatos com cada sobrenome.
FROM contato
GROUP by sobrenome
1
1
1
UNIDADE 2
1
1
1
UNIDADE 2
Exemplo 15: adicione uma coluna apelido na tabela contato contendo 15 caracteres.
Exemplo 16: adicione uma coluna apelido na tabela contato contendo 15 carac-
teres e com valor padrão de “Senhor”:
1
1
1
UNIDADE 2
A coluna apelido é removida da tabela contato desde que não haja nenhuma
restrição de integridade referencial nessa coluna.
Exemplo 19: supondo que ainda não houvesse uma integridade referencial entre
a tabela telefone e a tabela contato, adicione-a.
contato(id);
IN D ICAÇÃO DE LI V RO
1
1
1
UNIDADE 2
NOVOS DESAFIOS
Finalmente, chegamos ao fim do nosso tema. Nesse ponto, você provavelmente
já terá assimilado conteúdo suficiente para poder desenvolver algumas aplica-
ções utilizando sistemas de bancos de dados. Como descrevemos lá no início, é
bastante provável que você se depare, em sua vida profissional, com consultas
um tanto quanto complexas.
Lembre-se de que todo problema pode ser decomposto em partes menores
de fácil solução. Utilize essa técnica e aplique os conceitos assimilados com os
exemplos apresentados neste tema para resolvê-los. A teoria é importantíssima,
mas a prática é uma atividade fundamental para que você possa converter toda
essa teoria aprendida em resultados – tanto pessoais quanto profissionais.
A prática das atividades de autoestudo pode auxiliá-lo(a) na trabalhosa ta-
refa de assimilação dos conceitos apresentados nesta unidade. Analise-as com
carinho e tenha um bom proveito.
1
1
1
AGORA É COM VOCÊ
1
1
1
MEU ESPAÇO
1
1
1
UNIDADE 2
TEMA DE APRENDIZAGEM 6
ESTUDO DE CASO
ESP. VICTOR DE MARQUI PEDROSO
MINHAS METAS
1
1
1
UNIDADE 2
Restrições e Premissas:
1
1
1
UNIDADE 2
■ Uma venda pode ter vários itens, porém esses itens po-
dem ter apenas um produto cada.
■ Não teremos cadastros de empresas, pois não temos filiais.
■ Empresa.
■ Vendas.
■ Produtos.
■ Clientes.
■ Vendedores.
CRIANDO AS ENTIDADES E OS
RELACIONAMENTOS (DER)
1
1
1
UNIDADE 2
1° Relacionamento:
(1,1) (1,N)
Clientes Possui Venda
Figura 1: Exemplo de relacionamento em que uma venda pode ter apenas um cliente
Fonte: o autor.
CLIENTES
VENDA
Figura 2: Exemplo de relacionamento em que uma venda pode ter apenas um vendedor demonstrado em
formato de tabela / Fonte: o autor.
2° Relacionamento:
(1,1) (1,N)
Vendedor Contém Venda
Figura 3: Exemplo de relacionamento em que uma venda pode ter apenas um vendedor.
Fonte: o autor.
1
1
1
UNIDADE 2
VENDEDOR
VENDA
Figura 4: Exemplo de relacionamento em que uma venda pode ter apenas um vendedor demonstrado em
formato de tabelas / Fonte: o autor.
3° Relacionamento:
(1,1) (1,N)
Venda Contém Venda_Itens
Figura 5: Exemplo de relacionamento em que uma venda pode ter apenas vários itens / Fonte: o autor.
1
1
1
UNIDADE 2
VENDA
VENDA_ITENS
Figura 6: Exemplo de relacionamento em que uma venda pode ter apenas vários itens demonstrado em
formato de tabelas / Fonte: o autor.
4° Relacionamento:
(1,1) (1,1)
Produtos Está Venda_Itens
1
1
1
UNIDADE 2
PRODUTOS
VENDA_ITENS
Figura 8: Exemplo de relacionamento em que um produto pode estar em vários itens demonstrado em
formato de tabelas / ,Fonte: o autor.
1
1
1
UNIDADE 2
Clientes Vendedor
(1,1) (1,1)
(1,N) (1,N)
Possui Venda Contém
(1,1)
Contém
(1,N)
(1,1) (1,1)
Produtos Está Venda_Itens
1
1
1
UNIDADE 2
1
1
1
UNIDADE 2
1
1
1
UNIDADE 2
■ Criando as tabelas
■ PRODUTOS
PROD_DESCRI VARCHAR(60),
PROD_VPRECO NUMERIC(18,4),
PROD_UNIDAD VARCHAR(5),
PROD_FAMILI VARCHAR(10)
);
1
1
1
UNIDADE 2
■ CLIENTES
CLI_TIPOPESSOA CHAR(1),
CLI_STATUS VARCHAR(15),
CLI_BAIRRO VARCHAR(30),
CLI_ESTADO CHAR(2),
CLI_PAIS VARCHAR(6),
CLI_INSCRESTADUAL VARCHAR(25),
CLI_CEP VARCHAR(9),
CLI_CIDADE VARCHAR(35),
CLI_CNPJ_CPF VARCHAR(18),
CLI_ENDERE VARCHAR(60),
CLI_RAZAOSOCIAL VARCHAR(60),
CLI_NOMEFANTASIA VARCHAR(30),
CLI_EMAIL VARCHAR(60)
);
■ VENDEDOR
VEN_NOME VARCHAR(30),
VEN_CNPJ_CPF VARCHAR(18),
VEN_TIPOPESSOA CHAR(1),
VEN_INSCRESTADUAL VARCHAR(25),
VEN_STATUS VARCHAR(15),
VEN_EMAIL VARCHAR(60),
VEN_VPERCENT_COMIS NUMERIC(5,4)
);
1
1
1
UNIDADE 2
■ VENDA
VDA_DMOVTO DATE,
VDA_VDINHEIRO NUMERIC(18,2),
VDA_VCARTAO NUMERIC(18,2),
VDA_VCHEQUE NUMERIC(18,2),
VDA_VPRAZO NUMERIC(18,2),
VDA_VOUTROS NUMERIC(18,2),
VDA_VTOTAL NUMERIC(18,2),
VDA_VRECEB NUMERIC(18,2),
VDA_VTROCO NUMERIC(18,2),
VDA_CODCLI_CLI INTEGER,
VDA_CODVEN_VEN INTEGER,
VDA_VDESC NUMERIC(18,2),
■ VENDA_ITENS
1
1
1
UNIDADE 2
Para inserir atributos nas tabelas, utilizamos o comando ALTER TABLE ADD.
A seguir, incluiremos alguns atributos para cada tabela:
■ PRODUTOS
■ CLIENTES
■ VENDEDOR
1
1
1
UNIDADE 2
■ VENDA
■ VENDA_ITENS
Para deletar atributos nas tabelas, utilizamos o comando ALTER TABLE DROP.
A seguir, excluiremos alguns atributos para cada tabela:
■ PRODUTOS
1
1
1
UNIDADE 2
■ CLIENTES
■ VENDEDOR
■ VENDA
■ VENDA_ITENS:
1
1
1
UNIDADE 2
Deletando as Tabelas
■ PRODUTOS
1
1
1
UNIDADE 2
■ CLIENTES
VALUES (1, ‘F’, ‘ATIVO’, ‘JARDIM COLINA’, ‘SP’, ‘BRASIL’, ‘ISENTO’, ‘67009-
VALUES (2, ‘J’, ‘ATIVO’, ‘ZONA 1’, ‘PR’, ‘BRASIL’, ‘123.123.234’, ‘87009-
■ VENDEDOR
hotmail.com’, 1.5);
cial@malurepresenta.com.br’, 2.0);
1
1
1
UNIDADE 2
■ VENDA
■ VENDA_ITENS
1
1
1
UNIDADE 2
■ PRODUTOS
UPDATE PRODUTOS
WHERE PROD_CHAVE = 1;
UPDATE PRODUTOS
WHERE PROD_CHAVE = 1;
1
1
1
UNIDADE 2
■ CLIENTES
INATIVO*/
UPDATE CLIENTES
Paulista III*/
UPDATE CLIENTES
WHERE CLI_CHAVE = 1;
■ VENDEDOR
Graças da Silva*/
UPDATE VENDEDOR
WHERE VEN_CHAVE = 1;
1 para 2.0*/
UPDATE VENDEDOR
WHERE VEN_CHAVE = 1;
1
1
1
UNIDADE 2
■ PRODUTOS
Produtos*/
a 1 */
WHERE PROD_CHAVE = 1;
■ CLIENTES
WHERE CLI_CHAVE = 1;
1
1
1
UNIDADE 2
■ VENDEDOR
WHERE VEN_CHAVE = 1;
1
1
1
UNIDADE 2
■ CLIENTES
SELECT *
FROM CLIENTES
WHERE CLI_CHAVE = 1;
SELECT
CLI_CHAVE,
CLI_TIPOPESSOA,
CLI_STATUS,
CLI_NOMEFANTASIA,
CLI_ESTADO,
CLI_PAIS
FROM CLIENTES
1
1
1
UNIDADE 2
■ VENDAS
01/01/2015 */
SELECT *
FROM VENDA
6000.00 */
SELECT VDA_DMOVTO
FROM VENDA
SELECT MAX(VDA_VTOTAL)
FROM VENDA;
■ VENDA E VENDAS_ITENS
seja retornada. */
SELECT
VENDA_ITENS.VDI_QQUANTI AS “Quantidade”,
ITENS.VDI_CHAVE_VDA;
1
1
1
UNIDADE 2
IN D ICAÇ ÃO DE LI V RO
NOVOS DESAFIOS
No estudo de banco de dados, nada melhor que a prática aliada à teoria. Neste tema,
tivemos como objetivo demonstrar um passo a passo de como é a criação de um
banco de dados, partindo desde o momento em que as características são passadas
pelo cliente (análise dos requisitos) até o momento da criação prática utilizando a
linguagem Structured Query Language (SQL) ou linguagem de consulta estruturada.
Ainda aqui, demonstramos alguns comandos que nos ajudam tanto na cria-
ção como na manutenção de um banco de dados. Tenha este tema como base de
consulta em seus estudos diários, assim poderá não apenas saber os comandos
ensinados, mas também aplicá-los de maneira correta sempre que necessário.
Contudo, vale enfatizar que o aprendizado de banco de dados e SQL de-
manda muita leitura e muita prática/treino. Nossa sugestão é que você tente
sempre fazer os exercícios e, em seguida, possa revisá-los para que a fixação
do conteúdo seja ainda melhor.
1
1
1
AGORA É COM VOCÊ
1. O comando DROP TABLE é utilizado para excluir uma tabela. Partindo desta afirmação
analise a instrução SQL abaixo e responda assinalando a alternativa correta:
2. O comando UPDATE modifica os valores de uma ou mais tuplas (linhas) das tabelas
selecionadas. Nesse contexto, analise a instrução SQL a seguir e assinale a alterna-
tiva correta:
UPDATE FUNCIONARIOS
SET FUN_DT_ADMISSAO = '20/10/2015'
WHERE FUN_MATRICULA = 100;
1
1
1
AGORA É COM VOCÊ
3. Para nos ajudar a entender o motivo pelo qual uma entidade será criada, podemos
utilizar do recurso da Descrição Textual Narrativa. Baseando-se nesse conceito, leia
a frase a seguir: “O gerente do departamento de compras recebe e aprova vários
pedidos ao dia".
1
1
1
MEU ESPAÇO
1
1
1
un a
i
UNIDADE 3
TEMA DE APRENDIZAGEM 7
MINHAS METAS
1
1
1
UNIDADE 3
SCHEMA
1
1
1
UNIDADE 3
Assim, universidade é o nome do schema a ser criado pelo comando. Uma das
principais vantagens da utilização de schemas em banco de dados são as permis-
sões que se pode atribuir e revogar ao usuário, pois podemos, dessa maneira, ter
vários schemas e vários usuários em um banco de dados. Entretanto, determina-
dos usuários têm acesso a somente um schema no banco de dados.
1
1
1
UNIDADE 3
Após clicar neste botão, será possível darmos um nome ao nosso novo schema
de dados, conforme a Figura 2:
Universidade - Schema
Universidade
Conforme vemos, o nome do nosso novo schema será “Universidade”. Vale lembrar
que essa notação será utilizada em todo o nosso desenvolvimento. Para que seja cria-
do de fato esse novo schema, será necessário clicar em “Apply”, em que será mostrado
uma tela com o comando SQL a ser aplicado no banco de dados para a criação.
“universidade”
Dessa maneira, basta clicar em “Apply” e, depois, em “Finish”, para que o SGBD
aplique o comando no banco de dados e crie o nosso schema, que pode ser con-
sultado por meio dos schemas presentes do lado esquerdo inferior no Workben-
ch, conforme a Figura 4:
1
1
1
UNIDADE 3
universidade
Show schemas
Esse comando deverá ser executado com script SQL no Workbench. Para que
seja aberto, devemos clicar no botão, logo abaixo de “File”. Após o editor de SQL
aberto, basta digitar o comando e clicar no botão para que o Workbench execute
os comandos. Após a execução, os dados serão apresentados logo a seguir, con-
forme vemos na Figura 5:
1
1
1
UNIDADE 3
universidade
Dessa forma, caro(a) aluno(a), você pode se perguntar: do que se trata a ferra-
menta Workbench? Ela é uma interface gráfica que traduz comandos feitos pelo
usuário em linguagem SQL, para que, assim, seja possível sua aplicação no banco
de dados. Todas as ações feitas dentro do Workbench podem ser substituídas por
comandos via terminal no prompt do DOS, por exemplo.
TIPOS DE DADOS
Para que possamos efetuar a criação de uma tabela, primeiro necessitamos saber
mais um pouco sobre os tipos de dados. Em seguida, identificaremos os princi-
pais tipos de dados do MySQL, que será a ferramenta adotada para o desenvol-
vimento de todo o nosso conteúdo. Conforme Passos (2010, s.p.):
“
Alguns campos numéricos possuem a opção UNSIGNED. Isso quer
dizer que o número não pode ser negativo. Por exemplo: o campo
TINYINT com a opção UNSIGNED vai de 0 até 255, sem a opção
UNSIGNED vai de -128 até 127. A opção ZEROFILL completa o
1
1
1
UNIDADE 3
1
1
1
UNIDADE 3
1
1
1
UNIDADE 3
CHAVE PRIMÁRIA
As criações de nossas tabelas foram feitas sem a identificação de uma chave pri-
mária. A função da chave primária em uma tabela no banco de dados é a de que
nunca haverá a repetição de um mesmo valor para esse campo.
1
1
1
UNIDADE 3
Agora, com os comandos executados em seu banco de dados, temos as três tabelas
devidamente criadas, mas sem dependência entre elas. Ou seja, todas estão distintas
no banco de dados. Para solucionar esses problemas e trabalharmos melhor com
a integridade dos dados, criaremos mais uma coluna (id_pessoa) nas tabelas de
endereço e telefone. As tabelas mencionadas farão parte da criação de nossa foreign
key, sendo referenciadas pelo campo identificador da tabela de pessoa.
1
1
1
UNIDADE 3
Agora com as tabelas prontas, podemos criar referências entre as tabelas endereço
e telefone com a tabela de pessoa. Para isso, devemos efetuar a criação da foreign
key na tabela de endereço e telefone referenciando a tabela de pessoa.
1
1
1
UNIDADE 3
Após todas as alterações aplicadas em nossa base de dados, criando, assim, a in-
tegridade em nossos dados, elas, que antes não tinham nenhum tipo de ligação,
agora formam o Modelo Entidade Relacionamento (MER) da Figura 9:
1
1
1
UNIDADE 3
1
1
1
UNIDADE 3
Inserindo o endereço 1:
Inserindo o endereço 2:
1
1
1
UNIDADE 3
Agora, nós já temos uma pessoa em nossa base que possui dois endereços. Por
final, iremos inserir os telefones pertencentes a essa pessoa.
Inserindo o telefone 1:
Inserindo o telefone 2:
A partir dos dados inseridos nas tabelas, podemos tirar algumas conclusões. A
pessoa com nome de João possui dois endereços, um na Av. Paraná e outro na
Av. Brasil, sendo o primeiro o endereço de sua casa, e o outro de sua empresa.
Além disso, ele possui dois números de telefone.
Um forte elemento para a aprendizagem da linguagem SQL é a prática. Desse
modo, sugiro a você que efetue mais inserções no banco de dados seguindo os
comandos exemplificados anteriormente, sempre lembrado de que não é possível
ter um valor de uma chave primária repetida na tabela.
1
1
1
UNIDADE 3
{ } </>
COMANDO DESCRIBE
DESCRIBE nome_da_tabela;
Vamos exemplificar esse comando com a tabela pessoa, a qual já criamos nesta
mesma unidade. O comando a ser executado deverá ser:
describe pessoa;
1
1
1
UNIDADE 3
O retorno dos dados para esse comando deverá ser uma linha para cada coluna
da tabela conforme Figura 10:
Figura 10: Modelo de uma linha para cada coluna / Fonte: o autor.
1
1
1
UNIDADE 3
IN D ICAÇ ÃO DE LI V RO
NOVOS DESAFIOS
Prezado(a) aluno(a)! Neste tema, procuramos demonstrar na prática a utilidade dos
conceitos mais importantes. Trabalhamos na prática os comandos DDL e DML.
Espero que esta prática tenha evidenciado a você como é prazeroso trabalhar com
banco de dados, compreendendo os princípios teóricos que abrangem este grande
mercado de trabalho. Dessa maneira, procuramos exemplos da prática. Sugiro que
caso você não tenha seguidos os passos, execute como exercício cada comando
deste tema, pois o passo a passo criará sua base de dados, as tabelas e irá populá-las.
Todos os conceitos abordados fazem parte do dia a dia de um programador
e é essencial para o desenvolvimento de qualquer programa que trabalhe em
conjunto com um banco de dados.
1
1
1
AGORA É COM VOCÊ
a) DML
b) DTL
c) DQL
d) DDL
e) DCL
a) DML
b) DTL
c) DQL
d) DDL
e) DCL
3. Sobre os tipos de dados assinale, verdadeiro ou falso para os itens relacionados abaixo:
a) V, V, V, F
b) V, F, V, F
c) V, V, F, F
d) F, V, F, V
e) F, F, V, V
1
1
1
MEU ESPAÇO
1
1
1
UNIDADE 3
TEMA DE APRENDIZAGEM 8
A LINGUAGEM SQL
ESP. JEFERSON KAISER
MINHAS METAS
1
1
1
UNIDADE 3
HISTÓRIA DA SQL
Tudo começou no início dos anos 1970, por meio de uma pesquisa da empresa
International Business Machine (IBM), com o Dr. E. F. Codd, a qual levou ao
desenvolvimento de um produto chamado SEQUEL (ou Linguagem de Consul-
ta em Inglês Estruturado, em português). Posteriormente, a SEQUEL veio a se
transformar na SQL ou linguagem de consulta estruturada.
A IBM e os demais fornecedores de banco de dados relacionais querem pa-
dronizar a forma de acessar e manipular seus dados em um banco de dados
1
1
1
UNIDADE 3
relacional. Embora a IBM tenha sido a primeira a desenvolver esse tipo de tec-
nologia, foi a Oracle quem lançou comercialmente o banco de dados relacional.
1
1
1
UNIDADE 3
1
1
1
UNIDADE 3
Cláusula Select
Os dados retornados por uma consulta SQL são, naturalmente, uma relação,
pensando em uma consulta simples. Segue o exemplo de um SELECT simples:
1
1
1
UNIDADE 3
SELECT nome_pessoa
FROM pessoa
SELECT DISTINCT *
FROM pessoa
WHERE
1
1
1
UNIDADE 3
SELECT *
FROM pessoa
WHERE codigo_pessoa =1
SELECT *
FROM pessoa
WHERE nome_pessoa = ꞌJOAOꞌ
O primeiro exemplo trata de uma consulta para trazer os dados da tabela “pessoa”,
desde que exista uma pessoa com o código da pessoa que contenha o número
um. No segundo exemplo, o resultado depende extremamente de o nome da
pessoa ser JOAO.
OPERADOR DESCRIÇÃO
< Menor que
> Maior que
<= Menor que ou igual a
>= Maior que ou igual a
>= Não igual
!= Não igual
= Igual a
1
1
1
UNIDADE 3
A partir desse quadro, podemos elaborar os filtros que se aplicam a nossa ne-
cessidade.
Os campos de tipo data são muito úteis para o armazenamento de datas e horas.
As datas, quando utilizadas nos filtros, devem seguir o mesmo padrão utilizados
para os caracteres sendo delimitadas por aspas única.
FROM
Finalmente, vamos falar da cláusula FROM. Ela é responsável por fazer a ligação
com a tabela que vamos efetuar a consulta. Em resumo, ela especifica as tabelas
que possuem as colunas listadas na cláusula SELECT. Por exemplo, para trazer-
mos em uma consulta todos os dados da tabela “pessoa”, teríamos que especificar
a tabela “pessoa” na cláusula FROM do SELECT, conforme exemplo a seguir:
SELECT *
FROM pessoa
1
1
1
UNIDADE 3
INSERT
1
1
1
UNIDADE 3
UPDATE
O comando UPDATE é utilizado para efetuar alterações nas linhas já existentes
no banco de dados, que, possivelmente, foram gravadas por meio do comando
INSERT. Da mesma maneira que o INSERT, o UPDATE pode afetar uma linha
somente ou um conjunto de linhas existentes na tabela. Para que se possa delimi-
tar a linha ou quais linhas receberão a alteração, é utilizada a cláusula WHERE,
que recebe os mesmos tratamentos do SELECT.
Um grande diferencial do UPDATE é que não é possível atualizar campos de
mais de uma tabela de uma única vez. Ao atualizar uma linha ou várias linhas, o
UPDATE determina quais colunas atualizar e, assim, não é necessário atualizar
cada coluna da linha. Poderá ser alterada apenas uma coluna da linha. Caso a
coluna já estiver preenchida com algum valor, o valor antigo será substituído pelo
novo valor passado pelo comando UPDATE. Caso a coluna estiver vazia, ela será
preenchida depois do UPDATE com o novo valor. A sintaxe básica é a seguinte:
DELETE
DELETE nome_da_tabela;
1
1
1
UNIDADE 3
Como já tratamos no início desta unidade, DDL (em inglês, Data Definition
Language) é um conjunto dos comandos da linguagem SQL utilizado para a
definição das estruturas dos dados, fornecendo as instruções para a criação, a
modificação e a remoção das tabelas do banco de dados.
Na linguagem SQL, podemos definir que uma tabela poderá conter campos com
valores nulos. O único campo que não poderá ficar nulo é a chave primária. Caso
seja obrigatório o preenchimento, deve-se criar esse campo com o atributo NOT
NULL, pois, assim, reforçamos a necessidade de se informar um valor para um
determinado campo na tabela. Dessa maneira, o campo especificado não pode-
rá deixar de ser informado, pois não pode ficar em branco, ou seja, não poderá
conter NULL em seu valor.
Chaves e Integridade
Chaves primárias
Para que seja possível especificar uma chave primária, utiliza-se a cláusula PRI-
MARY KEYS (em inglês, Primary Keys ou “PK”). Uma chave primária tem a
função de se tornar um registro em uma tabela única. Assim, nunca haverá a
repetição de um mesmo valor para este campo. A chave primária pode ser atri-
buída a um ou mais campos, considerando, dessa maneira, que nunca haverá a
repetição da combinação desses dois valores na mesma tabela no banco de da-
1
1
1
UNIDADE 3
dos. Segue a sintaxe para a utilização da PRIMARY KEYS, lembrando que esses
comandos vão ao final da sintaxe de criação das tabelas:
A chave estrangeira acontece quando um campo de uma tabela for chave primá-
ria em outra tabela. Podemos pensar da seguinte maneira: sempre que houver o
relacionamento 1:N entre duas tabelas, a tabela 1 receberá a chave primária e a
tabela N receberá a chave estrangeira. A seguir, a sintaxe para a criação:
1
1
1
UNIDADE 3
desse comando é o nome da tabela, seguido dos campos, seus respectivos tipos
e suas devidas restrições. Por exemplo:
1
1
1
UNIDADE 3
Há muitas alterações que podem ser efetuadas em uma tabela após a sua criação e
muitas alterações em seu meio físico. Essas são de responsabilidade do administra-
dor do banco de dados, mas muitas outras são puramente lógicas e poderão ser fei-
tas por meio dos desenvolvedores SQL. Seguem exemplos das alterações possíveis:
1
1
1
UNIDADE 3
Removendo restrição
2
2
2
UNIDADE 3
A P RO F UNDA NDO
O termo “computação nas nuvens” vem do inglês “cloud computing”, que é a atual
tendência para softwares. Alguns anos atrás, para você poder acessar um programa,
como o Word, por exemplo, era necessário instalá-lo no seu computador, pagando uma
taxa (em geral alta). Quando falamos de computação nas nuvens, partimos do princípio
de que você não precisa instalar o Word no seu computador e poderá acessá-lo pela in-
ternet (pagando pelo uso ou um valor fixo mensal – bem abaixo do que quando precisava
comprá-lo). Mas isso é possível!? Sim, o Word pode ser acessado apenas pela internet.
É fácil perceber que os dados desse aplicativo não estão no seu computador, mas em
uma rede com acesso à internet. Uma vez conectado, você poderá desfrutar de todas as
suas ferramentas on-line e acessar seu trabalho de qualquer lugar.
2
2
2
UNIDADE 3
Concedendo Permissões
2
2
2
UNIDADE 3
■ ROLLBACK - faz com que as mudanças nos dados feitos pelos coman-
dos DML existentes, desde o último COMMIT ou ROLLBACK, sejam
descartadas.
Digamos que você pediu para excluir dados dentro do banco de dados:
2
2
2
UNIDADE 3
P E N SAN D O J UNTO S
Fonte: o autor.
NOVOS DESAFIOS
Caro(a) aluno(a), com a finalização do estudo sobre este conteúdo, podemos con-
cluir que a prática da SQL é de extrema importância para o amplo entendimento e
conhecimento especializado. Durante este tema, estudamos os principais coman-
dos de um banco de dados para a criação, a alteração e a remoção das tabelas, além
de comandos para a inserção, a alteração e a remoção de dados em uma tabela.
Também estudamos as permissões dos usuários com a concessão e revogação de
privilégios, a fim de garantir a segurança e a integridade do nosso banco de dados.
Vimos que a cada comando DML executado no banco de dados é controlado
por uma transação, ou seja, por meio dos comandos DTL. Todos esses dados
foram trabalhados de uma forma genérica para todos os bancos de dados que
usam como linguagem a SQL.
2
2
2
AGORA É COM VOCÊ
a) Select
b) From
c) Where
d) And
e) In
3. O ________ é utilizado para delimitar os dados a serem retornados pela nossa con-
sulta, os filtros a serem aplicados se restringem a linhas utilizando operadores de
comparação em um conjunto de campos e valores literários.
a) Select
b) From
c) Where
d) Width
e) View
2
2
2
UNIDADE 3
TEMA DE APRENDIZAGEM 9
MANIPULAÇÃO DE DADOS
ESP. JEFERSON KAISER
MINHAS METAS
Identificar na prática a utilidade das teorias aplicadas com relação à linguagem SQL.
2
2
2
UNIDADE 3
2
2
2
UNIDADE 3
ser consultada pelo SGBD e deverá conter dados. Dessa forma, iremos trabalhar
aqui com as informações utilizadas nos temas 7 e 8. Primeiramente, vamos re-
lembrar a sintaxe do comando:
Nossa primeira consulta será na tabela de pessoa, da qual iremos trazer todas as
colunas. Na linguagem SQL, existe um comando específico para retornar todos
os dados da coluna. Esse comando é dado por meio do “*”, que é uma forma
abreviada de dizer “todas as colunas”.
Select *
From pessoa;
2
2
2
UNIDADE 3
Para a entrada das funções sum e avg, os dados necessariamente precisam ser
numéricos. Entretanto, as outras funções podem ser operadas com dados do tipo
não numéricos, como as strings e seus semelhantes.
Dessa maneira vamos exemplificar a função sum com o campo total da tabela
pedido_item:
select sum(total)
from universidade.pedido_item
2
2
2
UNIDADE 3
Nosso resultado deverá apresentar apenas um registro com a soma dos 5 registros
desse campo na tabela.
select avg(total)
from universidade.pedido_item
Nesse caso, nosso resultado será a média entre os 5 registros da tabela. Quando
desejamos encontrar o número de registros que um select irá nos retornar uti-
lizamos a função count. A notação para esta função sem SQL é count(*), como
no exemplo a seguir:
'
select count(*)
from universidade.pedido_item
2
2
2
UNIDADE 3
select avg(total)
from universidade.pedido_item
select max(total)
from unicesumar.pedido_item
A P RO F UNDA NDO
2
2
2
UNIDADE 3
select id_pedido,
sum(valor)
from universidade.pedido_item
group by id_pedido
O select nos traz a soma da coluna valor agrupador pelo id_pedido, conforme
explicação anterior. Para exemplificar esta consulta, foi inserido mais um pedido
na tabela de pedido e mais alguns itens relacionados com o segundo pedido.
2
2
2
UNIDADE 3
Por padrão, a cláusula order by lista os resultados em forma crescente. Para que
seja possível especificar a ordem de retorno, podemos especificar desc, para de-
crescente, ou asc, para a ordem crescente dos dados. Além disso, a ordenação pode
ser feita por mais de 1 campo da consulta. Vamos supor que precisamos ordenar
uma consulta por mais de um campo:
Select *
From pedido_item
Order by desc_pedido, valor
Dessa forma, primeiro, nossa consulta irá ser ordenada pela descrição do produto
e, posteriormente, irá ordenar o segundo campo, sempre respeitando a ordenação
anterior. Vale lembrar que, como a classificação de um grande número de registros
pode ser demorada, esse tipo deverá ser feito somente quando necessário.
2
2
2
UNIDADE 3
Seletc *
From pedido_item
Where valor > 20
Select *
From pedido_item
Where valor between 10 and 20
Ao invés de:
Select *
From pedido_item
Where valor >= 10 and valor <= 20
2
2
2
UNIDADE 3
VALORES NULOS
Select *
From pedido_item
Where valor is null
RENAME
Nome_do_campo_ou_tabela as nome_novo
2
2
2
UNIDADE 3
Select pedido_item.desc_produto,
Pedido_item.valor,
pedido_item.qtde
From pedido_item
Select pd.desc_produto,
pd.valor,
pd.qtde
From pedido_item as pd
Dessa maneira, rebatizam o nome da tabela, para que a consulta fique mais sim-
ples. A utilização na cláusula from é logo depois do nome da tabela a qual se
deseja a associação, com a palavra as entre eles, como no exemplo anterior. Vale
lembrar que a utilização do as é opcional, pois o próprio SGBD subentende essa
utilização. Assim como em muitos livros, aqui iremos tratar esse rename como a
criação de um alias para as tabelas ou colunas.
Para que seja possível efetuar uma consulta utilizando mais de uma tabela, é
necessário trabalharmos com a cláusula from de nosso select. Veja no exemplo a
seguir, em que estamos acrescentando uma tabela no from, “Tabela2”, lembrando
que para essa prática é necessário “ligarmos” as tabelas com a cláusula where em
suas respectivas chaves primárias e estrangeiras.
2
2
2
UNIDADE 3
SELECT
Tabela1.coluna1,
Tabela1.coluna2,
Tabela2.coluna1,
Tabela2.coluna2
FROM Tabela1, Tabela2
WHERE Tabela1.chave_primaria = Tabela2.chave_estrangeira
Vale lembrar que a utilização de alias é opcional antes do nome das colunas.
Contudo, essa é uma prática muito utilizada, facilitando assim o entendimento
e uma possível manutenção no código. A utilização do alias antes do nome do
campo se torna obrigatória quando temos o mesmo campo em mais de uma ta-
bela de nossa consulta. Geralmente, isso acontece muito com as chaves primárias
e estrangeiras, sendo assim, nesse caso, é obrigatório que se indique de qual tabela
deverá retornar o dado. Considere que informar em qual tabela está a coluna
facilita o trabalho do Banco de Dados. Essa prática leva a maior agilidade na
recuperação da informação. A união regular se dá pela união na cláusula where
da chave primária com a chave estrangeira das tabelas.
</>
2
2
2
UNIDADE 3
Select id_pessoa
From pessoa
Select *
From pedido
Where id_pessoa in (Select id_pessoa
From pessoa)
2
2
2
UNIDADE 3
A função Exists e Not Exists da SQL é usada para verificar se o resultado de uma
consulta aninhada correlacionada é vazio (não contém nenhum registro) ou
não. A construção do exists retorna um valor true se a subconsulta não é vazia.
Pensando dessa maneira, vamos escrever um select que nos traga somente os
dados das pessoas que possuem pedido.
Select pes.*
From pessoa pes
Where exists (select ped.*
From pedido ped
Where ped.id_pessoa = pes.id_pessoa)
Select pes.*
From pessoa pes
Where not exists (select ped.*
From pedido ped
Where ped.id_pessoa = pes.id_pessoa)
Em muitas situações, temos que alterar um dado de uma tabela, sem alterar todos
os seus valores. A instrução UPDATE deve ser utilizada nesse caso. Bem parecida
com a instrução de insert e delete, podem ser selecionados os campos que devem
ser atualizados. Supondo que desejamos alterar o valor dos produtos em 10%,
deveremos escrever o seguinte comando:
2
2
2
UNIDADE 3
Update pedido_item
Set valor = valor * 1.1
Update pedido_item
Set valor = valor * 1.1
Where valor >=10
Update pedido_item
Set valor = valor * 1.1
Where valor > (select avg(valor)
From pedido_item)
2
2
2
UNIDADE 3
O update fornece uma instrução chamada case, que nos dá a opção de fazer duas
atualizações com uma única instrução update. Em uma forma geral, a instrução
case é a seguinte:
Case
When predicado1 then
Resultado1
When predicado12 then
Resultado2
Else
resultado0
End
Para atualizarmos o valor dos produtos menores que R$10,00 em 10% e os pro-
dutos maiores que R$10,00 em 5%, devemos escrever o seguinte comando:
Update pedido_item
Set valor = case
When valor <=10 then
Valor = valor * 1,1
Else
Valor = valor * 1,05
End
2
2
2
UNIDADE 3
Vale lembrar que o comando delete trabalha apenas com uma relação. Caso seja
necessário remover os dados de diversas tabelas, é necessário utilizar um coman-
do de delete para cada uma. A cláusula where pode ser tão complexa quanto a
cláusula where de um select, porém, pensando em simplicidade, podemos tam-
bém executar o comando delete sem o uso da cláusula where e, assim, todos os
registros da tabela em questão serão apagados. Exemplo:
2
2
2
UNIDADE 3
ROLLBACK E COMMIT
2
2
2
UNIDADE 3
TRUNCATE E DROP
Para que seja possível remover uma tabela de um Banco de Dados, utilizamos
o comando drop table. O comando drop table exclui do Banco de Dados a
tabela e todas as informações nela contida. Esse comando é muito simples.
Segue a sintaxe:
2
2
2
UNIDADE 3
IN D ICAÇ ÃO DE LI V RO
NOVOS DESAFIOS
Prezado(a) acadêmico(a), após conhecermos os comandos básicos da linguagem
SQL, sendo os de Linguagem de Manipulação de Dados (DML), Linguagem de
Definição de Dados (DDL) e Linguagem de Controle de Dados (DCL), entre
outros apresentados na unidade anterior, apresentamos por meio deste tema
alguns conceitos e comandos mais avançados sobre o SQL.
Foram apresentados comandos e formas mais avançadas de seleção de dados
em uma tabela. Alguns que facilitam a manipulação da informação e ajudam a
refinar nossas buscas, tornando a consulta mais eficaz. Por meio dessas consultas, a
manipulação de dados fica mais clara. Podemos citar como exemplo os comandos
de contagem, soma, ordenação de apresentação dos dados (crescente ou decrescen-
te) e a cláusula Where, que é fundamental em várias consultas ao Banco de Dados.
Ao falarmos de seleção de dados, nos deparamos em casos que precisamos
manipular mais do que uma tabela. Trabalhamos, também, neste tema, essa ques-
tão, que pode nos ajudar em nosso processo de desenvolvimento de software.
2
2
2
UNIDADE 3
Nesse sentido, aprendemos duas formas de efetuar por meio de uma consulta
em várias tabelas ou subqueries.
Entendemos que, em um Banco de Dados, as informações podem ser modi-
ficadas a qualquer momento. Pensando nisso, conhecemos algumas formas de
efetuar a alteração dos dados por meio do comando UPDATE, além de enten-
dermos a função dos comandos ROLLBACK e COMMIT, esses sendo úteis em
casos de situação efetuadas de modo errado no Banco de Dados.
Por fim, conhecemos os comandos TRUNCATE, DELETE e DROP. Todos têm
o mesmo princípio, limpar os dados da tabela, cada um com sua particularidade. São
comandos que podem ser perigosos se não forem manipulados de modo adequado.
Chegamos ao fim deste conteúdo, esperamos que esse tema tenha contribuído
de forma significativa em sua aprendizagem. Prezado acadêmico(a), um forte
abraço e até a próxima!
2
2
2
AGORA É COM VOCÊ
2. Sabemos que o truncate é responsável por limpar os registros de uma tabela, e que
ele é mais rápido que o comando delete. Esse comando é mais rápido por não se
tratar de um comando DML. Dessa maneira, cite as principais diferenças entre os
comandos DELETE e TRUNCATE.
3. Uma subconsulta é uma expressão select - from - where que é utilizada dentro de
outra consulta. Esse uso é muito comum para se realizar teste de participação de
conjuntos, fazer comparações e determinar a cardinalidade dos conjuntos. O co-
nectivo IN testa um conjunto de valores produzidos pelo select na cláusula where,
ou ainda podemos trabalhar com o NOT IN que testa a ausência de um conjunto de
valores. Exemplifique a utilização de subqueries de acordo com o que estudamos.
2
2
2
REFERÊNCIAS
UNIDADE 1
Tema 1
AMADEU, C. V. Banco de dados. São Paulo: Person Education Brasil, 2015.
ELMASRI, R.; NAVATHE, S. B. Sistemas de Banco de Dados. São Paulo: Pearson Education,
2005.
PIMENTEL, D.; FONTENELLE, R. Licenças. O sistema operacional GNU, 12 abr. 2022. Dispo-
nível em: http://www.gnu.org/licenses/licenses.html. Acesso em: 31 nov. 2016.
SILBERSCHATZ, A.; KORTH, H. F.; SUDARSHAN, S. Sistemas de banco de dados. 5. ed. Rio
de Janeiro: Elsevier-Campus, 2006.
Tema 2
PUGA, S.; FRANÇA, E.; GOYA, M. Banco de dados: implementação em SQL, PL/SQL e Oracle
11g. São Paulo: Pearson Education do Brasil, 2013.
2
2
2
REFERÊNCIAS
Tema 3
NUVENS, E. Google: história, curiosidades e tudo que você precisa saber sobre a empresa.
Olhar digital, 18 dez. 2018. Disponível em: https://olhardigital.com.br/2018/12/18/tira-du-
vidas/google-historia-curiosidades-e-tudo-que-voce-precisa-saber-sobre-o-buscador/.
Acesso em: 03 jan 2023.
UNIDADE 2
Tema 4
SILBERSCHATZ, A.; KORTH, H. F.; SUDARSHAN, S. Sistema de banco de dados. São Paulo:
Makron Books do Brasil, 1999.
CEZAR Taurion, da IBM, fala das vantagens da computação em nuvem. [S. l.: s. n.], 2010. 1
vídeo (7 min.). Publicado pelo canal CDTV. Disponível em: https://www.youtube.com/wat-
ch?v=HJre77TPpSw. Acesso em: 03 jan. 2023.
Tema 5
WATSON, J.; RAMKLASS, R. OCA Oracle Database 11g: fundamentos I ao SQL. Rio de Ja-
neiro: Alta Books, 2008.
Tema 6
ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. São Paulo: Pearson Addison
Wesley, 2011.
2
2
2
REFERÊNCIAS
UNIDADE 3
Tema 7
HEUSER, C. A. Projeto de banco de dados: vol. 4. 6. ed. Porto Alegre: Bookman, 2008.
PASSOS, T. Realizando duas ou mais consultas com UNION e UNION ALL no MySQL. Tiago
Passos, 20 jun. 2010. Disponível em: http://blog.tiagopassos.com/author/admin/page/37.
Acesso em: 18. nov. 2016.
Tema 8
CARVALHO, P. F. Linguagem SQL. DocPlayer, 2016. Disponível em: http://docplayer.com.
br/16602595-Linguagem-sql-dml-linguagem-de-manipulacao-de-dados.html. Acesso em:
04 jan. 2023.
COMPUTAÇÃO nas nuvens: o que é isto. Get.commerce, 29 jul. 2015. Disponível em: https://
rswa.com.br/2015/07/29/o-que-e-computacao-nas-nuvens/. Acesso em: 04 jan. 2023.
SILBERSCHATZ, A.; KORTH, H. F.; SUDARSHAN, S. Sistema de banco de dados. 3. ed. São
Paulo: Makron Books do Brasil, 1999.
WATSON, J.; RAMKLASS, R. Fundamentos I SQL: OCA Oracle Database 11g. Rio de Janeiro:
Alta Books, 2012.
Tema 9
SILBERSCHATZ, A.; KORTH, H. F.; SUDARSHAN, S. Sistema de Banco de Dados. 3 ed. São
Paulo: Makron Books do Brasil, 1999
PICHILIANI, M. Quais são os erros mais comuns em bancos de dados? 2013. Disponível
em: http://imasters.com.br/banco-de-dados/quais-sao-os-erros-mais-comuns-em-ban-
cos-de-dados/?trace=-1519021197&source=single. Acesso em: 6 jan. 2023.
2
2
2
CONFIRA SUAS RESPOSTAS
UNIDADE 1
Tema 1
1. V, F, V, V, F.
2. D.
Tema 2
1. C
3.
a) Pedido, Produtos e Cliente.
b) Professor, Disciplina e Curso.
c) Livros e Seções.
d) Médicos, Tratamentos e Pacientes.
Tema 3
1. Entidades Concretas são entendidas como objetos do mundo real que podem ser
separadas e distinguíveis de outro objeto. Já as Entidades Abstratas são aquelas que
não temos de maneira tangível (intangível).
2
2
2
CONFIRA SUAS RESPOSTAS
2.
3.
a)
B)
C)
2
2
2
CONFIRA SUAS RESPOSTAS
UNIDADE 2
Tema 4
1.
2.
a) SELECT aluno.nome FROM aluno, curso, matricula WHERE curso. nome=”Banco de
Dados” AND curso.id=matricula.curso_fk AND matricula. aluno_fk=aluno.id;
2
2
2
CONFIRA SUAS RESPOSTAS
3. Exemplos de comandos para esta atividade, lembrando que podemos gerar inúmeros
comandos, INSERT para ter maior quantidade de dados para manipular com os co-
mandos UPDATE e DELETE:
INSERT INTO aluno (id, nome, sobrenome, ra, email) VALUES (“1”, “João”, “Silva”,“100000”,
“jao@email.com”);
UPDATE curso SET ano=”2016” WHERE nome=”Banco de Dados”
DELETE FROM professor WHERE id=”5”
Tema 5
1.
2
2
2
CONFIRA SUAS RESPOSTAS
2.
a) SELECT beneficiario.nome FROM beneficiario INNER JOIN dependente ON benefi-
ciario.nome = dependente.nome;
3.
a) SELECT sobrenome, altura FROM beneficiario GROUP BY nome;
Tema 6
1. C.
2. D.
3. D.
UNIDADE 3
Tema 7
1. A.
2. A.
3. A.
2
2
2
CONFIRA SUAS RESPOSTAS
Tema 8
1. D.
2. A.
3. C.
Tema 9
1. Utilizado para efetuar o agrupamento pelo id_produto da tabela de pedido:
select id_pedido,
sum(valor)
from unicesumar.pedido_item
Não existe Rollback para o comando TRUNCATE, mas para o DELETE sim. O comando
TRUNCATE remove o registro permanente.
Você não pode usar condições (cláusula WHERE) com o comando TRUNCATE. Mas
com o comando DELETE, você pode escrever usando condições (cláusula WHERE).
3.
Select *
From pessoa
Where id_pessoa in (Select id_pessoa
From pedido)
Nesse select estamos retornando somente as pessoas que possuem pedido no Banco
de Dados.
2
2
2
CONFIRA SUAS RESPOSTAS
2
2
2
CONFIRA SUAS RESPOSTAS
2
2
2
CONFIRA SUAS RESPOSTAS
2
2
2
CONFIRA SUAS RESPOSTAS
2
2
2