Uc06 Sa1

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 163

SUMÁRIO

3 MODELO DE DADOS E SISTEMA GERENCIADOR DE BANCO DE DADOS_ 21

3.1 OBJETIVO_____________________________________________21

3.2 MODELO E BANCO DE DADOS____________________________21


1 INTRODUÇÃO________________________________________________ 11
3.2.1 Finalidade do Banco de Dados____________________________________ 23
2 INTRODUÇÃO A BANCO DE DADOS_________________________13
3.2.2 Modelo de Dados______________________________________________ 24
2.1 OBJETIVOS____________________________________________13
3.2.3 Modelo x Implementação________________________________________ 26
2.2 DADOS X INFORMAÇÕES________________________________14
3.3 SISTEMA GERENCIADOR DE BANCO DE DADOS______________27
2.2.1 Redundância__________________________________________________ 16
3.3.1 Principais Funções do SGBD______________________________________ 28
2.2.2 Integridade___________________________________________________ 16
3.4 RECAPITULANDO_______________________________________29
2.2.3 Isolamento____________________________________________________ 17
4 PROJETO DE BANCO DE DADOS____________________________31
2.2.4 Segurança____________________________________________________ 17

2.2.5 Acesso Concorrente aos Dados___________________________________ 19 4.1OBJETIVOS_____________________________________________31

2.3 RECAPITULANDO_______________________________________19 4.2 PROJETO DE BANCO DE DADOS___________________________31

4.3 PAPÉIS ENVOLVIDOS NO PROJETO DE BANCO DE DADOS_____34


4.4 ARQUITETURAS FÍSICAS_________________________________35 5.6.3 Entidade Associativa____________________________________________ 46

4.5 RECAPITULANDO_______________________________________37 5.7 TIPOS DE RELACIONAMENTOS____________________________46

5 MODELO ENTIDADE RELACIONAMENTO (MER) I____________________ 39 5.7.1 Relacionamento Tipo Dependência________________________________ 46

5.7.2 Relacionamento Tipo Associativo__________________________________ 47


5.1 OBJETIVO_____________________________________________39

5.2 ENTIDADE_____________________________________________40 5.8 RECAPITULANDO_______________________________________47

5.2.1Relacionamento________________________________________________ 40
6 MODELO ENTIDADE RELACIONAMENTO (MER) II______________49
5.3 ATRIBUTO_____________________________________________41
5.3.1 Valor de um atributo____________________________________________ 41 6.1 OBJETIVOS____________________________________________49

5.3.2 Domínio de um atributo_________________________________________ 41 6.2 CARDINALIDADE_______________________________________49

5.3.3 Características dos atributos de uma entidade_______________________ 42 6.3 COMO NOMEAR OS RELACIONAMENTOS___________________51

5.4 DICIONÁRIO DE DADOS_________________________________44 6.3.1 Substantivo___________________________________________________ 51

6.3.2 Verbo________________________________________________________ 51
5.5 PADRÕES DE NOMENCLATURA___________________________44
6.3.3 Nome das Entidades____________________________________________ 52
5.6 TIPOS DE ENTIDADES___________________________________45
5.6.1 Entidade Primária______________________________________________ 45 6.4 GRAU DE UM RELACIONAMENTO_________________________52

5.6.2 Entidade Fraca ou Dependente___________________________________ 45 6.5 SUBCLASSES, SUPERCLASSES E HERANÇA__________________53


6.6 AGREGAÇÃO__________________________________________54 7.4 ALGORITMO DE MAPEAMENTO DER/MR____________________67

6.7 AUTORRELACIONAMENTO_______________________________55 7.4.1 EXEMPLO DE APLICAÇÃO DE ALGORITMO___________________________ 69

6.8 CARDINALIDADE MÍNIMA E MÁXIMA______________________56 7.5 DICIONÁRIO DE DADOS_________________________________71

6.9 RELACIONAMENTO TOTAL E PARCIAL______________________56 7.6 RECAPITULANDO_______________________________________76

6.10 RECAPITULANDO______________________________________57
8 NORMALIZAÇÃO______________________________________________ 77

7 MODELO RELACIONAL_________________________________________ 59 8.1 OBJETIVO_____________________________________________77

7.1 OBJETIVOS____________________________________________59 8.2 NORMALIZAÇÃO_______________________________________77


8.2.1 Exemplo de normalização________________________________________ 78
7.2 MODELO DE DADOS RELACIONAL (MR)____________________59
8.3 PRIMEIRA FORMA NORMAL______________________________79
7.3 MAPEAMENTO DER/MR__________________________________61
7.3.1 Mapeamento de Entidades_______________________________________ 61 8.4 SEGUNDA FORMA NORMAL______________________________80

7.3.2 Mapeamento de relacionamento__________________________________ 63 8.5 TERCEIRA FORMA NORMAL______________________________81


7.3.3 Generalização/Especialização de Entidades_________________________ 65 8.6 RECAPITULANDO__________________________________________ 83
7.3.4 Agregação____________________________________________________ 66 9 LINGUAGEM SQL – PARTE I________________________________85
7.3.5 Autorrelacionamento___________________________________________ 66
9.1 OBJETIVO_____________________________________________85
9.2 CREATE TABLE_________________________________________85 11 LINGUAGEM SQL – PARTE III______________________________111

9.3 DROP TABLE___________________________________________94 11.1 OBJETIVO____________________________________________111

9.4 CREATE INDEX_________________________________________95 11.2 ATRIBUTOS ALL, DISTINCT, DISTINCTROW E TOP____________112

9.5 CONSTRAINT__________________________________________97 11.3 CLÁUSULA FROM______________________________________114

9.6 RECAPITULANDO_______________________________________99 11.4 CLÁUSULA GROUP BY__________________________________115

11.5 CLÁUSULA HAVING____________________________________117


10 LINGUAGEM SQL – PARTE II_______________________________101
11.6 CLÁUSULA IN_________________________________________118
10.1 OBJETIVO____________________________________________101
11.7 CLÁUSULA ORDER BY__________________________________120
10.2 INSERT INTO__________________________________________101
11.8 CLÁUSULA WHERE_____________________________________122
10.3 DELETE______________________________________________104
11.9 DECLARAÇÃO WITH OWNERACCESS OPTION_______________124
10.4 UPDATE______________________________________________105
11.10 RECAPITULANDO_____________________________________125
10.5 SELECT______________________________________________106

10.6 SELECT INTO__________________________________________108 12 LINGUAGEM SQL – PARTE IV______________________________127

10.7 RECAPITULANDO______________________________________109 12.1 OBJETIVO____________________________________________127

12.2 FUNÇÕES AGREGADAS SQL_____________________________128


12.2.1 Função Avg__________________________________________________ 128 13.5.3 Operador Like________________________________________________ 144

12.2.2 Função Count________________________________________________ 129 13.5.4 Caracteres Curinga____________________________________________ 146

12.2.3 Função Sum__________________________________________________ 130 13.6 RECAPITULANDO______________________________________147


12.3 OPERAÇÃO INNER JOIN_________________________________131

12.4 OPERAÇÕES LEFT E RIGHT JOIN__________________________133 14 ADMINISTRAÇÃO DE BANCO DE DADOS – PARTE I____________149

12.5 OPERAÇÃO UNION____________________________________135 14.1 OBJETIVOS___________________________________________149

12.6 RECAPITULANDO______________________________________136 14.2 SEGURANÇA EM BANCO DE DADOS______________________149


13 LINGUAGEM SQL – PARTE V____________________________________ 137 14.3 VISÕES (VIEWS)_______________________________________153
13.1 OBJETIVO____________________________________________137 14.4 RECAPITULANDO______________________________________155
13.2 SUBCONSULTAS SQL___________________________________138 15 ADMINISTRAÇÃO DE BANCO DE DADOS – PARTE II________________ 157

13.3 INSTRUÇÃO TRANSFORM_______________________________140 15.1 OBJETIVOS___________________________________________157

13.4 DECLARAÇÃO PARAMETERS_____________________________141 15.2 PROCEDIMENTOS E FUNÇÕES___________________________157


15.3 RECAPITULANDO______________________________________160
13.5 OPERADORES: BETWEEN..AND; IN; LIKE E CARACTERES CURINGA_ 142
16 CONCLUSÃO DA DISCIPLINA___________________________________ 161
13.5.1 Operador Between...And________________________________________ 142
17 REFERÊNCIA________________________________________________ 163
13.5.2 Operador In__________________________________________________ 144 MINICURRÍCULO DO ORGANIZADOR_________________________165
1 INTRODUÇÃO

Caro(a) aluno(a) seja bem-vindo(a) à Unidade Curricular de Banco Desse modo, para praticar, você criará um Projeto de Banco de
de Dados. Aqui você estudará um assunto muito importante para área Dados Relacional em conjunto com a criação do Modelo Entidade
de Tecnologia da Informação: os Bancos de Dados. Relacionamento e seu mapeamento para o Modelo Relacional. Em
Para iniciar nossos estudos, primeiramente, você compreenderá seguida, este modelo será traduzido para comandos em linguagem
SQL, utilizada para definição da estrutura e manipulação dos Bancos de
a diferença entre dados e informações. Assim, você aprenderá que
Dados.
transformar dados em informações é uma tarefa dos softwares, além de
aprender como os Bancos de Dados auxiliam neste trabalho. Por fim, aprenderemos um pouco sobre a Administração de
Banco de Dados, compreendendo os conceitos de segurança, visão,
Na sequência, estudaremos como as antigas estruturas de arquivos
procedimentos e funções.
evoluíram até o surgimento do Banco de Dados. Será destacado aqui que
Nosso objetivo é que, ao final da unidade curricular, você seja
sua importância está relacionada ao fato de que são estruturas presentes
capaz de entender que esses dados, uma vez processados, são úteis
em praticamente todos os Sistemas de Informação, cumprindo o papel
para os mais variados contextos, desde sistemas comerciais tradicionais
essencial de armazenamento de dados. (comércio e indústria), passando por grandes sistemas, sistemas
Uma vez compreendida a importância dos Bancos de Dados, o bancários e até mesmo sistemas críticos. Para tanto, forneceremos as
próximo passo será conhecer os conceito de Modelo de Dados e como ferramentas para inseri-lo no contexto da Administração de Dados e a
os Sistemas de Gerenciamento de Banco de Dados implementam prática necessária para construção dos Bancos de Dados.
fisicamente esses Modelos. Tenha um ótimo curso!

TECH IT 11 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


2 INTRODUÇÃO A BANCO DE DADOS

Vivemos em um mundo repleto de dados e de informações, não é Por fim, você aprenderá, por meio de exemplos, qual o contexto
mesmo? Você talvez nem perceba, mas consultar o saldo bancário, ver a de utilização dos bancos de dados e por que eles são importantes
previsão do tempo e jogar na loteria, entre tantas outras atividades do atualmente, além de entender a motivação de seu surgimento e sua
cotidiano, envolvem dados e informações. Porém, com inúmeros meios evolução.
de produção e de transmissão de dados, armazenar e processar tamanha
Bons estudos!
quantidade de material é um desafio nos dias atuais, concorda?

Inicialmente, você entenderá aqui os conceitos de dado e de


2.1 OBJETIVOS
informação, além de saber como os dados são transformados em
informações. Em seguida, conhecerá como os dados eram armazenados • Diferenciar dados e informações.
em décadas passadas e quais os principais problemas relacionados • Entender as estruturas de arquivos.
às formas antigas de armazenamento. Você compreenderá também
que as limitações, existentes no passado, deram origem aos conceitos
básicos da teoria de banco de dados, como redundância, inconsistência,
integridade, entre outros.

TECH IT 13 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


2.2 DADOS X INFORMAÇÕES Na área de Tecnologia da Informação (TI), utilizamos os
softwares. Software é um conjunto de instruções utilizado para realizar
Dado é um conjunto de símbolos sem significado próprio. O
processamento de dados. Isso quer dizer que o software recebe dados
valor de um dado não constitui um conhecimento útil por si só. Já a
como entrada, processa-os e gera informação como saída. Os dados,
informação é o dado associado a determinado significado. A informação
então, fazem parte do software.
é um recurso valioso, que permite gerar e difundir o conhecimento. Mas
como podemos transformar dado em informação? Em outras palavras, A figura 1, a seguir, é uma representação típica do funcionamento
como podemos realizar o processamento de dados? de um software. Veja que os dados são transformados em informação e
que este papel é executado pelo software.

Figura 1 – Sistema monousuário


Fonte: ADAPTADO DE MORAIS, 2014.

TECH IT 14 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Na prática, a transformação dos dados pode ocorrer de duas Seja qual for a maneira de compartilhar os dados, é importante você
formas: para um único usuário (monousuário), conforme ilustrado na saber que, nos últimos anos, houve uma grande evolução na maneira
figura 1, ou de forma compartilhada (multiusuário), como você pode de armazená-los. Os primeiros softwares comerciais desenvolvidos,
ver na figura 2, na sequência, em que os dados são compartilhados por
especialmente na década de 1980, por exemplo, utilizavam arquivos em
vários usuários.
formato de texto puro para armazenamento de dados, que era o jeito
mais comum de guardá-los em arquivos permanentes.

Essa forma antiga de armazenar fazia com que todo o


processamento tivesse de ser realizado pelos programas que acessavam
esses dados. Entenda por processamento aqui as seguintes atividades:
recuperação, inclusão, exclusão e alteração de dados.

Elmasri (2002) e Silberschatz (1999) descrevem os principais


problemas e limitações impostos por essa forma de processamento,
no que diz respeito à redundância, à integridade, ao isolamento, à
segurança, às transações e ao acesso concorrente aos dados. Entenda,
Figura 2 – Sistema multiusuário na sequência, cada uma dessas limitações. Prossiga!
Fonte: ADAPTADO DE MORAIS, 2014.

TECH IT 15 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


2.2.1 Redundância do software, isso nem sempre é garantido, especialmente quando há um
grande número de módulos que compõem o mesmo software.
Por necessidade dos usuários, é possível que um mesmo dado
Conheça, na sequência, outra limitação relacionada ao
tenha de ser repetido em diferentes arquivos. Num sistema de recursos
armazenamento de dados.
humanos, por exemplo, os dados referentes a determinado funcionário
precisam ser replicados no arquivo de folha de pagamento, no de
cadastro de dependentes etc. Essa redundância, se não for controlada 2.2.2 Integridade
de forma adequada, tende a gerar diversos problemas.
Integridade de dados diz respeito a algumas regras (restrições)
O mais comum deles refere-se à atualização dos dados. No exemplo que devem ser seguidas para que os dados se mantenham precisos
que citamos, quando os dados de um funcionário são modificados, todos e consistentes. A altura de um indivíduo, por exemplo, deve ser um
os arquivos que contêm esses dados também devem ser atualizados. número real que varia de 0,30 a 2,50. Já o nome de uma pessoa precisa
Logo, isso ocasiona uma multiplicação de esforço de atualização. ser composto de letras e conter no máximo 50 caracteres.
Outro problema, nessa tarefa, está relacionado ao desperdício de Há tipos de restrições mais complexas, que ocorrem com
espaço utilizado no armazenamento dos dados. Isso geralmente é mais bastante frequência. Elas especificam que um registro (uma linha) em
problemático quando há necessidade de guardar grande quantidade determinado arquivo deve estar relacionado a uma linha em outro
de dados. arquivo. Como exemplo, podemos citar um sistema acadêmico, em que
Por último, existe também o problema de inconsistência de determinada turma só é aberta se há um professor e uma disciplina a ela
dados. Inconsistência é a existência de dados contraditórios (que não vinculados. Nesse caso, tanto o professor quanto a disciplina já devem
representam a realidade) nos arquivos. Esse problema ocorre quando um existir nos arquivos, para que a turma possa ser cadastrada. A esse tipo
arquivo é atualizado e outro não. Como a tarefa de atualização é sempre de restrição dá-se o nome de restrição de integridade referencial.

TECH IT 16 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Um último tipo de restrição determina a exclusividade de valores Esse isolamento é especialmente importante porque permite que
para alguns itens de dados contidos nos arquivos. Por exemplo, um CPF os arquivos sejam alterados sem causar grande impacto ou necessidade
só pode estar relacionado a uma única pessoa em todos os arquivos, de alteração nos programas de aplicação, para tornar a evolução dos
a matrícula de um aluno deve ser única etc. Esse tipo de restrição é sistemas menos traumática para seus usuários.
conhecido como restrição de chave, ou singularidade.
Saiba, a seguir, os problemas ligados à segurança dos dados.
Todas essas restrições, também chamadas de Regras de Negócio,
são derivadas da representação do mundo real que os arquivos retratam.
2.2.4 Segurança
Agora que você já conhece as questões relacionadas à redundância
e à integridade dos dados, aprenda em seguida a importância do Nem todos os usuários estão autorizados ao acesso a todos
isolamento no armazenamento dos dados. Continue! os dados. Uma vez que o controle de acesso de usuários é feito via
programa de aplicação, torna-se difícil garantir a efetividade das regras
2.2.3 Isolamento de segurança necessárias para cada arquivo.

Quando utilizamos os arquivos, a estrutura de cada um deles Dados financeiros ou médicos, por exemplo, geralmente são de
está embutida no código dos programas de aplicação do software que natureza sigilosa. O acesso a esses dados deve ser restrito e controlado.
realizará o processamento dos dados. Desse modo, quaisquer mudanças A utilização de arquivos não permite esse controle. Além disso, pode
na estrutura dos arquivos exigirá alteração em todos os programas que ser necessária a concessão de diferentes tipos de acessos a um mesmo
acessam esses mesmos arquivos. O ideal é que houvesse isolamento e, arquivo. Enquanto um grupo de usuários tem direito de consulta aos
consequentemente, independência entre as estruturas que armazenam dados de determinado arquivo, outro grupo tem direito a alterar, a
os dados e os códigos que os manipulam. excluir e a incluir registros.

TECH IT 17 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Continue a leitura e conheça as propriedades das transações. Confira, na sequência, cada uma dessas propriedades.

• Atomicidade: uma transação deve ser uma unidade atômica


de trabalho, isto é, ou todas as modificações solicitadas para os
dados são realizadas ou nenhuma delas acontece.
• Consistência: quando concluída, uma transação deve deixar
todos os dados em um estado consistente. Isso significa que
todas as restrições de integridade devem ser mantidas.
• Isolamento: Modificações feitas por uma transação devem ser
isoladas de modificações feitas por outras transações. Dessa
Figura 3 – Segurança dos dados é tema recorrente na atualidade forma, o efeito de uma não ocorre sobre outra. Em outras
Fonte: SHUTTERSTOCK, 2019. palavras, as transações são enfileiradas (serializabilidade), de
maneira que uma ocorra somente após o término da outra.
1.1.5 Transações • Durabilidade: depois que uma transação tiver sido concluída,
seus efeitos (dados que foram modificados) ficam gravados
Transação é permanentemente no arquivo.
[...] uma sequência de operações executadas como uma única unidade
lógica de trabalho. Uma unidade lógica de trabalho deve garantir quatro Manter as propriedades ACID é uma tarefa impossível diretamente
propriedades, designadas pelas iniciais ACID (Atomicidade, Consistência, na estrutura de arquivos, uma vez que esse tipo de estrutura não fornece
Isolamento e Durabilidade), para que seja qualificada como uma transação.
os recursos necessários para tal.
(MICROSOFT, 2014).

TECH IT 18 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


SAIBA MAIS aplicações, isso ocorre de fato. Imagine uma instituição bancária, por
exemplo. Os dados de movimentação de conta-corrente dos clientes são
O átomo é a menor partícula de qualquer elemento constituído acessados ao mesmo tempo por milhares de caixas bancários, clientes,
de matéria existente no universo. Sua principal característica é ser
gerentes etc. Já um site de comércio eletrônico, disponibiliza consulta a
indivisível. O átomo é formado por um núcleo central que, por sua
seus produtos para milhares de clientes, que o fazem simultaneamente.
vez, contém prótons (com carga positiva) e nêutrons (sem carga). Ao
redor do núcleo, movimentam-se os elétrons (com carga negativa Outro exemplo é a compra de passagens aéreas. Conforme
e massa insignificante), em diferentes trajetórias imaginárias
a demanda, é relativamente comum um bilhete estar disponível a
conhecidas como órbitas. Com base nessas definições, você pode
entender melhor a propriedade de atomicidade, não é mesmo?
determinado valor em uma consulta e, no minuto seguinte, após nova
consulta, já ter sido vendido ou ter seu preço modificado. Isso ocorre por
que os dados são acessados ao mesmo tempo. Você já passou por esse
tipo de situação?
Saiba, a seguir, as dificuldades que podem ocorrer com o uso de
dados, ao mesmo tempo, por diferentes usuários. Prossiga!
2.3 RECAPITULANDO
Neste material, você aprendeu o conceito de dado e de informação,
2.2.5 Acesso Concorrente aos Dados
entendeu como os dados são transformados em informações e quais são
A execução de várias transações pressupõe acesso simultâneo os principais conceitos relacionados ao universo dos bancos de dados.
aos dados. A ideia de serializabilidade indica que várias transações são Você viu também que, em décadas passadas, os dados eram
solicitadas ao mesmo tempo pelos softwares. Veja que, na maioria das armazenados em arquivos do tipo texto e que isso apresentava uma

TECH IT 19 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


série de limitações. Afinal, deixar a cargo das aplicações tarefas como
controle de redundância, inconsistência ou segurança, por exemplo,
não era viável. Por isso, para resolver essas limitações, surgiu então a
teoria de banco de dados.

Finalmente, você aprendeu que, além dos dados propriamente


ditos, um banco de dados deve incorporar todos os controles necessários
para lidar com as limitações dos sistemas de arquivos.

TECH IT 20 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


3 MODELO DE DADOS E SISTEMA GERENCIADOR DE BANCO DE DADOS

Neste tema, você aprenderá três conceitos-chave para a 3.1 OBJETIVO


administração de dados: o Modelo de Dados, o Banco de Dados (BD) e o
Sistema Gerenciador de Banco de Dados (SGBD). • Entender os conceitos de Modelo de Dados e BD e conhecer
quais os principais Modelos de Dados existentes.
Ao longo da leitura, você compreenderá que os conceitos de
Modelo de Dados e SGBD estão contidos no conceito de BD, que, por
sua vez, é mais amplo e complexo. 3.2 MODELO E BANCO DE DADOS
Além disso, também aprenderá que, enquanto o Modelo de Dados O BD surgiu para substituir a utilização de arquivos como texto para
é a representação da estrutura de BD, o SGBD é o BD associado a um armazenamento definitivo de dados. Segundo a definição de Kroenke
conjunto de softwares utilizados para manipular esses dados. Vamos lá? (1998), por exemplo, a tecnologia de bancos de dados foi amplamente
Bom estudo! desenvolvida para superar as limitações dos sistemas de arquivos.

TECH IT 21 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Vários outros autores trazem diferentes definições do termo BD.
SAIBA MAIS
Essas definições podem ser visualizadas na tabela 1, a seguir.
Em inglês padrão, o termo “data” é usado para o plural, enquanto
Autor Definição o termo “datum” é usado para o singular, segundo Elmasri e
Navathe (2002).
Date (2003, p. 10) “É um Sistema Computadorizado de manutenção de registros.”

“É um conjunto de dados que, associados a um conjunto de


Silberschatz (2012, p. 1) programas para acessá-los, forma um Sistema Gerenciador de
Banco de Dados (SGBD).” Explorando um pouco mais a definição de Elmasri e Navathe (2002),
que pode ser considerada bastante genérica, pode-se dizer que um BD
“É uma Base de Dados associada à sua semântica. Uma Base de
Heuser (2009, p. 20)
Dados, por sua vez, é uma coleção de dados inter-relacionados.” representa algum aspecto do mundo real, que pode ser chamado de
minimundo, ou universo de discurso. As mudanças neste universo são
Elmasri e Navathe “É uma coleção de dados relacionados. Dados são fatos conhecidos
(2011, p. 3) que podem ser registrados e possuem significado implícito.” refletidas no BD.

Tabela 1 – Definições de BD Além disso, outra característica importante de BD está relacionada


Fonte: ADAPTADO DE MORAIS, 2014. ao fato de que geralmente estes se tratam de uma coleção logicamente
coerente de dados com algum significado inerente. Uma variedade
aleatória de dados, por exemplo, não pode ser considerada um BD.

Finalmente, um Banco de Dados é projetado, construído e populado


com dados para uma finalidade específica. Ele possui um grupo definido
de usuários e algumas aplicações previamente concebidas nas quais
estes usuários estão interessados.

TECH IT 22 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Em resumo, podemos afirmar que um BD tem alguma fonte a • Excluir todos os dependentes com idade acima de 18 anos do
partir da qual o dado é derivado, algum grau de interação com eventos cadastro de funcionários;
do mundo real e um público que está ativamente interessado em seu • Incluir uma nova conta-corrente para um cliente.
conteúdo.
Estes são apenas alguns exemplos, em diferentes contextos, da
Agora que você já conhece a definição de BD, a seguir veremos utilidade dos BDs.
suas principais finalidades.
SAIBA MAIS
3.2.1 FINALIDADE DO BANCO DE DADOS
É importante ressaltar que essa manipulação precisa ser
As principais finalidades de um BD são: armazenar dados e permitir especificada em uma linguagem que o BD seja capaz de entender.
que usuários manipulem esses dados. Essa manipulação de dados quer Para isso, é preciso que o BD seja pensado em função do mundo
dizer busca, inserção, atualização e exclusão de dados. Veja a seguir real e que seja representado em um formato estruturado, que
permita sua manipulação. Esse formato estruturado deve ser
alguns exemplos:
criado então a partir de um Modelo de Dados.
• Listar todas as disciplinas oferecidas pelo curso;
• Listar todas as notas de um aluno;
• Listar os proventos e descontos dos salários dos funcionários de
Confira seu conceito em seguida!
uma empresa;
• Atualizar a alíquota de imposto de renda para funcionários que
ganham acima de determinado salário;

TECH IT 23 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


3.2.2 MODELO DE DADOS

Um BD é representado por um Modelo de Dados. Modelo do


BD (ou simplesmente Modelo de Dados), segundo Date (1983), é uma
definição abstrata, autônoma e lógica dos objetos, operadores e outros
elementos que, juntos, constituem a máquina abstrata com a qual os
usuários interagem. Os objetos permitem modelar a estrutura dos
dados, e os operadores, seu comportamento.

Em outras palavras, podemos dizer que o Modelo de Dados é a


descrição formal da estrutura de um banco de dados. Esta estrutura Figura 4 – Exemplo de representação de um Modelo de Dados
pode ser descrita de várias formas (diferentes níveis de abstração), e para Fonte: ADAPTADO DE MORAIS, 2014.
sua construção utilizamos uma linguagem de modelagem de dados.
Confira em seguida os modelos lógicos baseados em objetos mais
utilizados.

Os modelos lógicos baseados em objetos mais utilizados são


o Modelo Entidade Relacionamento (MER) e o Modelo Orientado a
Objetos (OO).

O MER envolve a percepção do mundo real como um conjunto de


objetos (entidades) e seus relacionamentos. As entidades, por sua vez,

TECH IT 24 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


são descritas por seus atributos, e o nível de relacionamento entre elas é 111.111.111-11 João da Silva 3657-9 11.234-1
chamado de cardinalidade.
222.222.222-22 Maria da Silva 3657-9 11.235-6
Já o OO tem por base um conjunto de objetos que possuem
3657-9 11.237-8
propriedades e métodos. As propriedades são os atributos 333.333.333-33 José da Silva

(características) do objeto e os métodos determinam seu 3657-9 11.238-4

comportamento. Figura 5 – Representação do Modelo em Rede


Fonte: ADAPTADO DE MORAIS, 2014.
Na sequência, você conhecerá os modelos lógicos baseados em
registros, que são divididos em três tipos: O último tipo de representação baseada em registros é o Modelo
• O Modelo Relacional (MR) utiliza um conjunto de tabelas que Hierárquico, que é similar ao modelo de rede. A principal diferença
representam os dados e seu relacionamento; uma tabela possui para este tipo de representação está no fato de que os registros são
múltiplas colunas e cada coluna, por sua vez, possui um nome organizados em árvores. Um exemplo deste tipo de estrutura pode ser
único. visualizada em seguida.
• Já o Modelo de Rede possui um conjunto de registros. A relação
entre esses registros são representadas por links (ligações). A
figura, a seguir, ilustra um exemplo da representação do modelo
em rede, no qual um cliente possui várias contas-correntes no
ambiente de um banco.

Figura 6 – Representação do Modelo Hierárquico


Fonte: ADAPTADO DE MORAIS, 2014.

TECH IT 25 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


3.2.3 MODELO X IMPLEMENTAÇÃO implementado, criado com base no modelo, é o elemento que será
utilizado de fato pelo usuário final. A implementação, então, é uma
Até este momento, vimos o conceito de BD e que este é
representação física do modelo, que funciona em um computador real,
representado por um Modelo de Dados. Já o Modelo funciona como
criado a partir de um modelo abstrato.
uma espécie de projeto de uma casa, ou seja, assim como o modelo
não é utilizado na prática por se tratar de uma representação abstrata, Para que esta implementação seja possível, é necessário um
o projeto da casa também não é habitável e servirá apenas para que a software. Esse software é o Sistema Gerenciador de Banco de Dados
casa seja construída com base nele. A figura 7 representa essa analogia. (SGBD).

SAIBA MAIS

Esquema do BD (ou intenção do BD): é cada representação do


modelo. Instância do BD (ou extensão, ou estado): são os dados
contidos num banco de dados em determinado instante.

Figura 7 – Modelo x Implementação


Fonte: ADAPTADO DE MORAIS, 2014.

Neste contexto, fica claro que é importante separar o modelo


de sua implementação. Assim como a casa pronta, o banco de dados

TECH IT 26 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


3.3 SISTEMA GERENCIADOR DE BANCO DE DADOS
Assim como o termo “Banco de Dados”, o termo “Sistema
Gerenciador de Banco de Dados”, ou simplesmente SGBD, também
possui várias definições, como vistas a seguir.

Segundo Silberschatz (2012, p. 13), “o SGBD é um conjunto e dados


associados a um conjunto para acesso a esses dados”. Já para Heuser
(2000, p. 23), “é um software que incorpora as funções de definição,
recuperação e alteração de dados em um banco de dados”.

Elmasri (2002, p. 4), por sua vez, afirma que é “uma coleção de
programas que permitem aos usuários criar e manter um banco de Figura 8 – A estrutura básica de um SGBD
Fonte: ADAPTADA DE ELMASRI, 2002.
dados”.
SAIBA MAIS Agora que você conhece as principais definições e a estrutura
básica de um SGBD, estudaremos as principais funções desse sistema.
Em outras palavras, segundo o mesmo autor, trata-se de um
software, que facilita o processo de construção, manipulação e
Prossiga a leitura!
compartilhamento de banco de dados entre diversos usuários e
aplicações, além de outras funções, como proteção do banco de
dados e sua manutenção.

TECH IT 27 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


3.3.1 PRINCIPAIS FUNÇÕES DO SGBD
SAIBA MAIS
De acordo com Date (1983), as principais funções de um SGBD são:
Um compilador é um programa de computador que, a partir de
• definição de dados; um código-fonte escrito em uma linguagem compilada (alto
nível), cria um programa semanticamente equivalente, porém,
• manipulação de dados;
escrito em linguagem de máquina, que é a linguagem que o
• otimização e execução de consultas; computador entende.
• garantia de segurança e integridade do dados;
• recuperação de dados e concorrência;
3.3.1.2 MANIPULAÇÃO DE DADOS
• manutenção de um dicionário de dados.
Analogamente ao compilador DML, o SGBD também deve possuir
Você estudará cada uma em mais detalhes a seguir. Confira! um processador e um compilador para Linguagem de Manipulação de
Dados (DML). Ou seja, deve ser capaz de acrescentar, buscar, atualizar ou
3.3.1.1 DEFINIÇÃO DE DADOS
excluir dados.
O SGBD deve possuir um processador e um compilador para
Linguagem de Definição de Dados (DDL), e como o próprio nome diz, Como exemplo, podemos citar um comando em linguagem de
essa é a linguagem utilizada para definição da estrutura física do BD. alto nível para selecionar todos os funcionários cujo salário é maior ou
Em outras palavras, podemos dizer que um SGBD deve entender igual a R$ 1000,00 conforme a seguir:
uma linguagem de definição de dados. Por exemplo, para criar uma SELECT * FROM FUNCIONARIO WHERE SALARIO >= 1000
tabela Pessoa, com o CPF e o nome da Pessoa, pode-se utilizar o seguinte
comando em linguagem de alto nível:
CREATE TABLE PESSOA (CPF int 11 NOT NULL, Nome VARCHAR(100))

TECH IT 28 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


3.3.1.3 OTIMIZAÇÃO E EXECUÇÃO DE CONSULTAS obtenha informações sobre os dados que estão sendo armazenados
no banco. Em outras palavras, é considerado um banco de dados de
Requisições em linguagem DML devem ser processadas por um
sistema, não de usuário, e deve conter, entre outras informações, as
componente chamado otimizador, que determina um modo eficiente
definições dos objetos de dados e restrições de segurança e integridade.
de implementar (executar) uma requisição. Após otimizadas, as
requisições são executadas sob o controle de um componente chamado
de gerenciador de tempo de execução. 3.4 RECAPITULANDO
3.3.1.4 GARANTIA DE SEGURANÇA E INTEGRIDADE DOS DADOS Neste tema, estudamos os conceitos de Modelo de Dados, BD e
O SGBD deve ser capaz de monitorar requisições de usuários SGBD.Você aprendeu que o Modelo de Dados é como a planta de uma
e rejeitar todas as tentativas de violar as restrições de segurança e casa, ou seja, é uma representação abstrata que pode ser implementada
integridade definidas pelos seus projetistas. fisicamente. Para essa implementação, usamos os SGBD, um software
que incorpora determinadas funções para facilitar o processo de
3.3.1.5 RECUPERAÇÃO DE DADOS E CONCORRÊNCIA construção, manipulação e compartilhamento de banco de dados.
Esta função é implementada pelo gerenciador de transações
(conforme a figura 5). Ele impõe processos de controle de recuperação e
concorrência dos dados.

3.3.1.6 MANUTENÇÃO DE UM DICIONÁRIO DE DADOS

Um Dicionário de Dados possui os metadados do banco. Metadados


são dados sobre os dados que servem para que o administrador do banco

TECH IT 29 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


4 PROJETO DE BANCO DE DADOS

Neste tema, você entenderá o conceito de projeto de Banco de 4.1 OBJETIVOS


Dados (BD) dentro do contexto da Arquitetura de Sistemas de Banco de
Dados, e o padrão de arquitetura utilizado hoje pelo mercado é o padrão • Entender o conceito de SGBD e compreender o funcionamento
ANSI/SPARC. Além disso, também aprenderá o que é independência de de sua estrutura interna.
dados, um dos conceitos mais importantes na área. • Entender quais são as principais etapas de um projeto de BD.

Em seguida, você conhecerá quais são os papéis dos profissionais


envolvidos em um projeto de BD, ou seja, quais são as responsabilidades 4.2 PROJETO DE BANCO DE DADOS
de cada participante em um projeto.
Projetar um BD envolve, em primeiro lugar, definir a Arquitetura
Finalmente, conhecerá também um pouco mais sobre as arquiteturas
de Banco que será utilizada. Atualmente, a arquitetura padrão para
físicas de um sistema de BD, mais especificamente sobre a arquitetura
sistemas de BD é a ANSI/SPARC, conforme a figura a seguir.
Cliente/Servidor e os Bancos de Dados Distribuídos. Vamos lá?

Bom estudo!

TECH IT 31 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


SAIBA MAIS

ANSI, do inglês“American National Standards Institute”, significa


Instituto Nacional Americano de Padrões. Criado nos Estados
Unidos, é uma organização privada, sem fins lucrativos, que
administra e coordena o sistema norte-americano de padrões e
conformidades. Seu objetivo é criar e manter esses padrões. Já
SPARC, do inglês “Standards Planning and Requirements Committe”,
significa Comitê de Requisitos e Planejamento de Padrões.

Este padrão de arquitetura é baseado em três níveis (ou camadas):

• Visão externa: descreve visões, do inglês view, que é a forma


pela qual os usuários veem e descrevem os dados;

Figura 9 – Arquitetura ANSI/SPARC • Esquema conceitual: descreve a estrutura lógica dos dados;
Fonte: ADAPTADO DE MORAIS, 2014.
• Esquema interno: descreve a estrutura física dos arquivos e os
índices que serão empregados.

Um exemplo de visão externa é a simples descrição das informações


que o banco de dados armazenará. Entenda: o banco de dados do seu
banco tem as seguintes informações sobre os clientes (pessoas físicas):

TECH IT 32 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


CPF, nome, endereço, renda; e uma pessoa pode possuir uma ou mais • Mapeamento Conceitual Interno: define a correspondência entre
contas a ela relacionada. a visão conceitual e o banco de dados armazenado (interna),
especificando o modo como os registros e campos conceituais
Assim, a visão externa deve ser interpretada e mapeada em são representados no nível interno.
um esquema conceitual. O código a seguir mostra como essa visão é
• Mapeamento Externo Conceitual: define a correspondência
representada através de um modelo lógico baseado em registros –
entre a visão externa específica e a visão conceitual.
nesse caso, o Modelo Lógico Relacional.
É importante destacar que a principal vantagem da utilização
Pessoa(CPF: string, Nome: string, Endereço: string, Renda: dessa de arquitetura está no fato de que ela provê certa independência
currency);
entre as camadas, conhecida como Independência de Dados.
Conta(Número_conta: integer, Tipo: string, Saldo: currency,
Limite: currency);
Possui(CPF: string, Número_conta: integer, Status: SAIBA MAIS
integer);
Veja então que existe um processo de mapeamento entre uma
Como dito anteriormente, a última camada da arquitetura é o camada e outra da arquitetura, que pode ocorrer em dois níveis:
esquema interno. Esse esquema deve ser criado a partir do esquema Mapeamento Conceitual Interno e Mapeamento Externo Conceitual.
conceitual, como no código a seguir, escrito em Linguagem de Definição
de Dados (DDL):
Além de prover o conceito de independência de dados, outra
CREATE TABLE Pessoa
vantagem desta arquitetura está no fato de que ela permite a separação
(CPF: string, Nome: string, Endereço: string, Renda:
currency); clara dos papéis (responsabilidades) dos usuários de cada camada. A
CREATE INDEX Id_Nome ON Pessoa(Nome). seguir, vamos aprender sobre esses papéis.

TECH IT 33 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


4.3 PAPÉIS ENVOLVIDOS NO PROJETO DE BANCO na organização física; gerenciamento de autorizações de acesso;
DE DADOS especificação de regras de integridade; descarga (dumping) através de
back-up (cópia de segurança) e recarga (restauração); monitoramento
Os principais papéis envolvidos no projeto são: usuários do desempenho e resposta aos requisitos de mudança.
finais; programadores de aplicações; administradores de BD (DBA);
Além das funções descritas anteriormente, o DBA também é
administradores de dados (DA).
responsável por implementar fisicamente alguns elementos internos
Usuários finais: interagem com o BD sem escrever programas, são ao SGBD, como tabelas (tables), índices, views, constraints, triggers,
eles que definem o que o BD deve conter e, quando implementado stored procedures, schemas ou outras construções específicas de BD
fisicamente, formulam suas solicitações ao BD por meio de linguagens necessárias ao armazenamento, à obtenção e à exclusão de dados ou
de consulta. objetos persistentes (ELMASRI, 2002).
Programadores de aplicações: são profissionais de computação Administradores de Dados (DA): são os responsáveis pelo projeto
que interagem com o BD por meio de chamadas através de Linguagem do BD (criação do modelo conceitual e modelo lógico). O profissional
de Manipulação de Dados (DML). que desempenha este papel deve ter contato direto com os usuários,
Essas chamadas DML normalmente estão envolvidas por pois é através desse contato que a estrutura do BD será criada.
programas escritos em uma linguagem hospedeira. Até este ponto, você percebeu que a arquitetura ANSI/SPARC é
Administrador de Banco de Dados (DBA): tem como principais uma espécie de arquitetura lógica que define as camadas de um projeto
funções definição do esquema interno; definição da estrutura e de BD. Entretanto, a partir do momento em que o BD for implementado
dos métodos de acesso; criação do esquema e das modificações fisicamente, na camada interna existem outros tipos de arquiteturas
(físicas) que são utilizadas para organização e armazenamento dos dados.

TECH IT 34 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Esta perspectiva, de mais alto nível, está relacionada principalmente ao
SAIBA MAIS
suporte à execução do BD.
A principal vantagem desta arquitetura é a divisão do
Na próxima seção, vamos conhecer outras arquiteturas.
processamento entre aspartes cliente e servidor, o que reduz o
tráfego de dados na rede em que estiver instalado.

4.4 ARQUITETURAS FÍSICAS


Segundo o Prof. Sanches (2014, p. 2-3),
A arquitetura dos Sistemas BD, sob a perspectiva da organização [...] a arquitetura cliente-servidor foi desenvolvida para dividir ambientes
física, pode ser dividida basicamente em dois tipos: Arquitetura Cliente/ de computação onde um grande número de estações de trabalho
(computadores pessoais), servidores de arquivos, impressoras, servidores
Servidor (ou centralizada); Arquitetura Distribuída.
de banco de dados e outros equipamentos são conectados juntos por
A Arquitetura Cliente/Servidor possui estrutura bastante simples, uma rede. A ideia é definir servidores especializados, tais como servidor de
arquivos, que mantém os arquivos de máquinas clientes, ou servidores de
sendo dividida em duas partes: Servidor (Server, ou Back End) e Cliente impressão que podem estar conectados a várias impressoras; assim, quando
(Client, ou Front End). O servidor é o próprio SGBD e suporta todas as se desejar imprimir algo, todas as requisições de impressão são enviadas
a este servidor. As máquinas clientes disponibilizam para o usuário as
suas funções básicas. Já o cliente são diversas aplicações, tanto de interfaces (telas) apropriadas para utilizar esses servidores, bem como poder
programadores quanto do SGBD (internas), executadas sobre próprio de processamento para executar aplicações locais. Esta arquitetura se tornou
muito popular por algumas razões. Primeiro, a facilidade de implementação
SGBD.
dada a clara separação das funcionalidades e dos servidores. Segundo,
um servidor é inteligentemente utilizado porque as tarefas mais simples
são delegadas às máquinas clientes mais baratas. Terceiro, o usuário pode
executar uma interface gráfica que lhe é familiar, ao invés de usar a interface
do servidor. Desta maneira, a arquitetura cliente-servidor foi incorporada
aos SGBDs comerciais.

TECH IT 35 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Diferentemente da arquitetura Cliente/Servidor, na qual o BD
fica em um computador central, no SGBD distribuído os dados ficam
armazenados em diversos servidores físicos, que podem estar próximos
ou não, inclusive com vários quilômetros de distância ou até mesmo em
regiões geográficas diferentes.

Figura 10 – Banco de Dados que utiliza a arquitetura Cliente/Servidor


Fonte: SHUTTERSTOCK, 2019.

Na Arquitetura Distribuída, o SGBD funciona em máquinas


diferentes, que podem estar conectadas entre si em uma rede de
comunicações de tal modo que uma única tarefa de processamento
possa se estender a várias máquinas da rede. A comunicação entre as Figura 11 – Banco de Dados Cliente/Servidor na arquitetura distribuída
várias máquinas é efetuada por algum tipo de software de gerenciamento Fonte: SHUTTERSTOCK, 2019.
de rede.
Apesar de ser uma estrutura bastante complexa, a principal
vantagem de se utilizar arquitetura distribuída está no fato de que os
dados estão replicados entre servidores, o que, além de melhorar a
eficiência no desempenho, provê melhora na segurança dos dados em

TECH IT 36 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


caso de desastres, pois não existe mais um único ponto no qual os dados
estão armazenados.

SAIBA MAIS

Para aprofundar o seu conhecimento sobre projeto e arquitetura de


BD, utilize a referência (ELMASRI, 2002).

4.5 RECAPITULANDO
Neste tema, você aprendeu que o conceito de projeto de BD está
dentro de um conceito maior, que, por sua vez, envolve a definição
da Arquitetura de um Sistema de Banco de Dados. Também aprendeu
que o padrão ANSI/SPARC de arquitetura é o padrão utilizado hoje
pelo mercado e que o seu principal benefício é prover a propriedade
conhecida como Independência de Dados.

Em seguida, você conheceu os papéis envolvidos em um projeto


de BD e finalizou conhecendo um pouco mais sobre as arquiteturas
físicas de um Sistema de BD.

TECH IT 37 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


5 MODELO ENTIDADE RELACIONAMENTO (MER) I

Neste tema, você aprenderá os conceitos do Modelo Entidade 5.1 OBJETIVO


Relacionamento (MER). O MER é o principal padrão utilizado atualmente
para Modelagem de Dados e nele estão presentes conceitos importantes Criar um Diagrama Entidade Relacionamento (DER) a partir de um
para o universo do Banco de Dados (BD), como entidade, relacionamento modelo descritivo contendo os seguintes elementos:
e atributo. • entidade;
Mais que um padrão de modelagem, o MER é uma forma de • relacionamento;
analisar um meio externo (contexto), sujeito a interpretações, repleto de
• atributo;
informações incompletas ou com duplo sentido, rico em ambiguidades,
• dicionário de dados;
representando-o através de uma linguagem exata, que pode ser
implementada em um computador. • padrões de nomenclatura;
• tipos de entidades;
• tipos de relacionamentos.

TECH IT 39 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


5.2 ENTIDADE É claro que as informações representadas por uma entidade
dependem do ambiente em que ela está inserida. Por exemplo: para
De acordo com Heuser (2001), entidade é o conjunto de objetos o Ministério da Fazenda, uma pessoa é vista como um contribuinte de
da realidade modelada sobre os quais se deseja manter informações no impostos. Portanto, neste contexto, as informações relevantes de pessoa
BD. Em outras palavras, chamamos de entidade qualquer coisa real ou seriam: CPF, renda anual, despesas médicas, despesas com instrução
abstrata de determinado ambiente, sobre a qual precisamos guardar etc. Já o Ministério da Educação poderia ter outras necessidades de
informações. informações sobre uma pessoa, como: CPF; nível de escolaridade; idade;
Quando estamos modelando o ambiente de uma biblioteca, por data de nascimento etc.
exemplo, as informações a respeito dos livros devem estar representadas
pela entidade LIVRO. Já as relativas aos usuários da biblioteca poderiam
ser representadas pela entidade CLIENTE. As informações relativas ao Figura 12 – Exemplo de representação gráfica para entidades
empréstimo de livros, por sua vez, seriam representadas pela entidade Fonte: ADAPTADO DE MORAIS, 2014.
EMPRÉSTIMO. As reservas de livros, por RESERVA, e assim por diante.
5.2.1 RELACIONAMENTO
Nesse ambiente, as informações da entidade LIVRO poderiam ser:
Conforme Heuser (2001), relacionamento é o conjunto de
nome do livro, ISBN do livro e título do livro. Para a entidade CLIENTE,
associação entre entidades. Assim, chamamos de relacionamento a
poderíamos ter: CPF, nome, endereço e telefone. Para a entidade
associação entre duas entidades ou entre uma entidade e ela mesma.
EMPRÉSTIMO: data do empréstimo, data provável de devolução e taxa de
multa para o caso de devolução com atraso. E, por fim, a entidade RESERVA Para expressar, em um modelo, as disciplinas nas quais um aluno
poderia ter: data da reserva e data provável de disponibilidade do livro. está matriculado, poderíamos definir o relacionamento assim: “O aluno

TECH IT 40 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


está matriculado em...”. O relacionamento para expressar os dependentes
SAIBA MAIS
de determinado empregado, por sua vez, seria: “Empregado tem
dependentes”. Cada entidade tem valores específicos para seus atributos que
diferem ou são iguais aos valores dos atributos de outras entidades
A figura 13 mostra um exemplo de representação gráfica para do mesmo tipo.
relacionamentos.

5.3.1 VALOR DE UM ATRIBUTO

Figura 13 – Exemplo de representação gráfica para relacionamentos Chamamos valor de um atributo o conteúdo que ele pode ter.
Fonte: ADAPTADO DE MORAIS, 2014. Marcos Ferreira, Rosa Cristina, Deusdete da Cunha poderiam ser valores
da entidade ALUNO. Casas Bahia, Carrefour e C&A seriam valores do
5.3 ATRIBUTO atributo Nome da entidade FORNECEDOR.

Ainda, de acordo com Heuser (2001), atributo é o dado que é 5.3.2 DOMÍNIO DE UM ATRIBUTO
associado a cada ocorrência de uma entidade ou de um relacionamento,
É o conjunto de valores que um atributo pode assumir. Exemplo:
ou seja, são partes específicas de determinada entidade.
masculino, feminino são o domínio do atributo Sexo da entidade ALUNO. O
Assim, poderiam ser atributos de uma entidade ALUNO: nome;
atributo Nota da entidade ALUNO tem o domínio: {números reais de 0 a 10}.
número da matrícula; CPF; data de ingresso no curso; endereço; telefone e
data de nascimento. Uma entidade FORNECEDOR, por outro lado, poderia
ter como atributos: CGC; nome; razão social; endereço e capital social.

TECH IT 41 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


• Simples: quando possui um domínio simples. Por exemplo,
o atributo Sexo tem um domínio simples pois é formado pelo
conjunto (único) das letras F e M.
• Composto: quando possui mais de um domínio simples.
Figura 14 – Exemplo de representação gráfica de atributos Endereço de uma pessoa, por exemplo: ele é formado pelos
Fonte: ADAPTADO DE MORAIS, 2014. domínios simples dos Logradouros, dos Bairros, das Cidades, dos
Estados e dos CEPs.
5.3.3 CARACTERÍSTICAS DOS ATRIBUTOS DE UMA ENTIDADE A figura 15 mostra um exemplo de representação gráfica para um
Cada atributo de uma entidade tem as suas características. atributo composto.
Acompanhe na sequência.

• Único: cada entidade tem um valor diferente para este atributo.


Ex.: A matrícula de um aluno em um curso é um atributo único
porque não existe outro com o mesmo número de matrícula.
• Não único: quando o valor pode se repetir em várias entidades. Figura 15 – Exemplo de representação gráfica para um atributo composto
Por exemplo, o aproveitamento de um aluno: mais de um aluno Fonte: ADAPTADO DE MORAIS, 2014.
pode ter a mesma nota.
• Univalorado: quando tem um único valor para cada entidade.
• Obrigatório: quando tem de existir um valor para este atributo Por exemplo, o número de matrícula de um aluno, pois cada
em toda entidade. Por exemplo, o nome do aluno na entidade aluno tem um único número.
ALUNO.

TECH IT 42 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


• Multivalorado: quando pode ter mais de um valor para cada • Não derivado: quando ele não pode ser obtido a partir de outros
entidade. Por exemplo, o telefone de uma pessoa, pois ela pode atributos. Por exemplo, nome de um aluno.
ter o telefone do trabalho e da residência.
• Identificador: é o atributo, ou os atributos, que identifica
uma entidade de um tipo determinado de maneira única. Por
exemplo, a matrícula do aluno e o código da disciplina no tipo
de entidade APROVEITAMENTO.

Figura 16 – Exemplo de representação gráfica para atributo multivalorado


Fonte: ADAPTADO DE MORAIS, 2014.

Figura 18 – Representação para atributos identificadores


• Derivado: quando o seu conteúdo depende do conteúdo de Fonte: ADAPTADO DE MORAIS, 2014.
outros atributos. Por exemplo, o total de uma nota fiscal é formado
pela soma dos totais de cada item componente da nota fiscal.
SAIBA MAIS

Veja que, em sua representação gráfica, o atributo do tipo


identificador deve aparecer sublinhado.

Figura 17 – Exemplo de atributo derivado É importante ressaltar que existem seis tipos de atributos
Fonte: ADAPTADO DE MORAIS, 2014. identificadores, também chamados de chaves ou índices. Os atributos
componentes dos campos-chave não devem permitir valores nulos.

TECH IT 43 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


CHAVE DESCRIÇÃO 5.4 DICIONÁRIO DE DADOS
Superchave É qualquer subconjunto de atributos que
identifica univocadamente uma tupla da relação. O dicionário de dados contém as definições das entidades, dos
Chave É a superchave minimal. Não se pode tirar relacionamentos e dos atributos de um modelo de dados.
nenhum dos seus atributos componentes sem
perder a unicidade.
Chave candidata Qualquer combinação de atributos que pode ser a 5.5 PADRÕES DE NOMENCLATURA
(alternativa) chave da relação.
Chave primária Chave candidata considerada principal. Determina As nomenclaturas de entidades, relacionamento e atributos
a ordenação lógica das tuplas na relação.
seguem padrões específicos.
Chave alternativa Chave candidata que não foi designada como
(única) primária. São eles:
Chave estrangeira Permite associação lógica entre das tuplas de duas
(chave externa) relações (é a chave primária da outra relação). • nome para entidades: letras maiúsculas, geralmente
substantivos no singular;
Tabela 2 – Atributos identificadores
Fonte: ADAPTADO DE MORAIS, 2014. • nome para relacionamentos: letras maiúsculas, geralmente
verbos no infinitivo indicando ação, no singular;

• Não identificador: quando o identificador não identifica por si • nomedeatributo: inicia com letra maiúscula e o restante
só uma entidade dentro de um tipo determinado. Por exemplo, minúsculo. Não são utilizados caracteres especiais.
o nome do aluno não identifica o aluno dentro da entidade
ALUNO.

TECH IT 44 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


5.6 TIPOS DE ENTIDADES 5.6.2 Entidade Fraca ou Dependente
As entidades são classificadas em primária, fraca, ou dependente, É a entidade cuja identificação não pode ser feita por seus próprios
e associativa. Veja na sequência as descrições de cada tipo. atributos, sendo necessários atributos de outra entidade.

Por exemplo, a entidade DEPENDENTE é uma entidade fraca


5.6.1 Entidade Primária pois, para a sua identificação, precisa utilizar atributos da entidade
EMPREGADO (a matrícula do empregado, por exemplo). Ou seja,
É a entidade que existe por si mesma, e a sua identificação quando falamos João Viera (DEPENDENTE) precisamos dizer de quem
completa é feita pelos seus próprios atributos. ele é dependente (EMPREGADO) para que se possa identificá-lo
Ex.: A entidade ALUNO é primária porque é identificada pelos seus completamente. Assim: João Vieira é dependente de Francisco da Rocha.
próprios atributos.

Figura 20 – Representação gráfica de entidade fraca


Fonte: ADAPTADO DE MORAIS, 2014.
Figura 19 – Representação gráfica de entidade primária
Fonte: ADAPTADO DE MORAIS, 2014.

TECH IT 45 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


5.6.3 Entidade Associativa
É a entidade que não se identifica por si mesma e sua existência
depende da existência de duas ou mais outras entidades.

Figura 21 – Representação gráfica de entidade associativa


Fonte: ADAPTADO DE MORAIS, 2014.
SAIBA MAIS

Compõem seu identificador os identificadores das entidades que se 5.7 TIPOS DE RELACIONAMENTOS
associaram para lhe dar origem.

5.7.1 Relacionamento Tipo Dependência


Por exemplo, a entidade APROVEITAMENTO é uma entidade
associativa porque sua identificação só é possível a partir da Matrícula, Chamamos de Relacionamento de Dependência o relacionamento
identificador da entidade ALUNO e de Código, identificador da entidade entre um tipo de entidade primária e um tipo de entidade dependente – fraca.
DISCIPLINA. Assim: João Ribeiro Ferraz (ALUNO) obteve a nota 7,3 Por exemplo, o tipo de entidade EMPREGADO é composto
(APROVEITAMENTO) em Banco de Dados (DISCIPLINA). de entidades primárias porque essas entidades são identificadas
completamente por seus atributos. É razoável imaginarmos que numa
mesma empresa não existam empregados com a mesma matrícula. Já a
as entidades de DEPENDENTE são do tipo fraca porque os seus atributos
não as identificam completamente.

TECH IT 46 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Figura 23 – Relacionamento tipo associativo
Figura 22 – Relacionamento tipo dependência Fonte: ADAPTADO DE MORAIS, 2014.
Fonte: ADAPTADO DE MORAIS, 2014.

5.8 RECAPITULANDO
Neste tema, você aprendeu a criar os principais elementos de um
5.7.2 Relacionamento Tipo Associativo
Diagrama Entidade Relacionamento (DER), que é o principal diagrama
Um relacionamento é do tipo associativo se ele relaciona uma do Modelo Entidade Relacionamento (MER). Mais especificamente,
entidade primária a uma entidade associativa. você conheceu o conceito e a forma de representação dos seguintes
elementos: entidade; relacionamento; atributo; dicionário de dados;
Por exemplo, tanto o relacionamento entre ALUNO e
padrões de nomenclatura; tipos de entidades; tipos de relacionamentos.
APROVEITAMENTO como o relacionamento entre DISCIPLINA e
APROVEITAMENTO são do tipo associativo, pois ambos relacionam
entidades primárias de ALUNO e DISCIPLINA à entidade do tipo
associativa APROVEITAMENTO.

TECH IT 47 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


6 MODELO ENTIDADE RELACIONAMENTO (MER) II

Neste tema, você aprenderá mais conceitos do Modelo Entidade • como nomear os relacionamentos;
Relacionamento (MER). Esses conceitos definem estruturas que também • grau de um relacionamento;
são necessárias para criação do Diagrama Entidade Relacionamento
• subclasses, superclasses e herança;
(DER): cardinalidade dos relacionamentos; como nomear os
• agregação;
relacionamentos; grau de um relacionamento; subclasses, superclasses
e herança; agregação; autorrelacionamento; relacionamento total e • autorrelacionamento;
parcial; cardinalidade mínima e máxima. • cardinalidade mínima e máxima;
• relacionamento total e parcial.
6.1 OBJETIVOS
6.2 CARDINALIDADE
Criar um Diagrama Entidade Relacionamento (DER) a partir de um
modelo descritivo contendo os seguintes elementos: Havendo um relacionamento entre entidades, é necessário identificar
• cardinalidade dos relacionamentos; a cardinalidade, ou seja, quantas linhas (registros ou tuplas) da entidade A
podem estar associadas com uma linha da entidade B e vice-versa.

TECH IT 49 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


A partir desta verificação, podemos definir os tipos de • Relacionamento 1:N (lê-se relacionamento 1 para N): uma
relacionamentos a seguir. ocorrência de entidade se relaciona com várias ocorrências da
outra entidade.
• Relacionamento 1:1 (lê-se relacionamento 1 para 1): um
elemento de um conjunto de entidades se relaciona apenas com um
elemento do outro conjunto.
Figura 26 – Relacionamento 1:N
Fonte: ADAPTADO DE MORAIS, 2014.

Figura 24 – Relacionamento 1:1


Fonte: ADAPTADO DE MORAIS, 2014.

Figura 27 – Instâncias em relacionamento 1:N


Fonte: ADAPTADO DE MORAIS, 2014.

Figura 25 – Instâncias em relacionamento 1:1


Fonte: ADAPTADO DE MORAIS, 2014. • Relacionamento N:N (lê-se relacionamento N para N): nesse
tipo de relacionamento, cada elemento de uma relação X pode
corresponder a vários elementos de uma relação Y e vice-versa.

TECH IT 50 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


IMPORTANTE
6.3 COMO NOMEAR OS RELACIONAMENTOS
A seguir, você aprenderá como nomear os relacionamentos
O relacionamento N:N pode ter ou não atributos. No exemplo a
seguir, o atributo do relacionamento CURSO poderia ser a nota do utilizando substantivo, verbo e nome das entidades. Confira!
aluno.

6.3.1 Substantivo
Para nomear um relacionamento com um substantivo, utilize um
Figura 28 – Relacionamento N:N que represente a forma como as entidades de associam.
Fonte: ADAPTADO DE MORAIS, 2014.

Figura 30 – Relacionamento Nomeado com Substantivo


Fonte: ADAPTADO DE MORAIS, 2014.

6.3.2 Verbo
Para nomear um relacionamento com um verbo, utilize um que
Figura 29 – Instâncias em Relacionamento N:N indique uma ação em que uma das entidades é o sujeito e a outra é o
Fonte: ADAPTADO DE MORAIS, 2014.
objeto.

TECH IT 51 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


6.4 GRAU DE UM RELACIONAMENTO
Figura 31 – Relacionamento nomeado com verbo
O grau de um relacionamento é determinado pelo número de
Fonte: ADAPTADO DE MORAIS, 2014.
entidades que participam do relacionamento. Assim, quando ocorre um
relacionamento que envolve associação entre três ou mais entidades
6.3.3 Nome das Entidades (portanto, com grau maior que dois), há um relacionamento múltiplo.

Para nomear um relacionamento com o nome das entidades,


utilize os nomes das entidades envolvidas no relacionamento.

Figura 33 – Relacionamento Múltiplo de grau 3


Fonte: ADAPTADO DE MORAIS, 2014.

Figura 32 – Relacionamento nomeado com nomes das entidades


Fonte: ADAPTADO DE MORAIS, 2014. SAIBA MAIS
A leitura correta deste relacionamento é a seguinte:
• Um depósito entrega N produtos para N clientes;
• Um produto é entregue por N depósitos a N clientes;
• Um cliente recebe N produtos de N depósitos.

TECH IT 52 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


6.5 SUBCLASSES, SUPERCLASSES E HERANÇA Segundo Elmasri ( 2002), os conceitos de Subclasses e Superclasses
estão diretamente ligados aos conceitos de especialização, generalização
Certos conjuntos de entidades de dados (Superclasses) podem e categoria (ou tipo de união).
ser subdivididos em diversas categorias de elementos (Subclasses),
Entretanto, antes de apresentar esses conceitos, é importante
cada uma se caracterizando por atributos específicos. Chamamos este
aprofundar na semântica de utilização de Superclasses e Subclasses.
processo de particionamento de conjunto de entidades. Como exemplo,
Este tipo de notação é utilizado como um mecanismo de herança entres
poderíamos citar o caso em que a entidade FUNCIONÁRIO (Superclasse)
classes (no caso, entidades).
pode ser subdividida numa categoria de Professores (Subclasse), em
outra de Engenheiros (Subclasse) e em outra de Técnicos (Subclasse).
IMPORTANTE

Em outras palavras, dizemos que as Subclasses herdam todas as


características(atributos) de sua Superclasse, além de possuir algumas
características próprias.

Figura 34 – Generalização de entidades Para entender melhor, vamos considerar, por exemplo, a
Fonte: ADAPTADO DE MORAIS, 2014. Superclasse PESSOA, e as Subclasses FÍSICA e JURÍDICA. Neste caso,
todas as pessoas possuem um endereço, independente se físicas ou
jurídicas. Já o CPF é um atributo específico de pessoas físicas, enquanto
o CNPJ existe somente para pessoas jurídicas.

TECH IT 53 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


modelo etc. Nesse caso, podemos estabelecer a Superclasse VEÍCULO
IMPORTANTE que, por suas vez, possuirá essas características comuns.

Especialização é o processo de definir um conjunto de Subclasses de um Finalmente, o último conceito que devemos conhecer aqui
tipo de entidade. Este tipo de entidade é chamado então de Superclasse é o de categoria ou tipo de união. Esta categoria indica a forma de
da especialização.
relacionamento entre as Superclasses e Subclasses. Assim, uma instância
da entidade VEÍCULO pode ser um CARRO ou um CAMINHÃO, mas
não os dois ao mesmo tempo. Neste caso, este é um relacionamento
disjunto. Já um ALUNO em uma universidade, por exemplo, pode ser
Assim, o conjunto de Subclasses que forma uma especialização é
de GRADUAÇÃO e ao mesmo tempo de PÓS-GRADUAÇÃO, o que indica
definido com base em alguma característica que distingue uma Subclasse
que, neste caso, é um relacionamento sobreposto.
de outra, como CPF e CNPJ para pessoas físicas e jurídicas, por exemplo.

Já a generalização é justamente o processo reverso da


especialização. Nesse caso, as diferenças entre as Subclasses 6.6 AGREGAÇÃO
são suprimidas e suas características comuns são identificadas,
A agregação é considerada uma extensão no MER que permite o
estabelecendo então as Superclasses.
registro do relacionamento de uma entidade com outro relacionamento.
Como exemplo, vamos analisar as seguintes Subclasses: CARRO Ou seja, há a possibilidade de associar dois relacionamentos, conforme
e CAMINHÃO. Veja que, apesar de possuírem características bem a figura a seguir.
diferentes, ambas apresentam diversas informações em comum, tais
como número do chassi, capacidade de passageiros, potência, marca,

TECH IT 54 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


peças que são compostas por partes de outras peças ou departamentos
que pertencem a outros departamentos, por exemplo.

IMPORTANTE

Um autorrelacionamento, portanto, é o relacionamento estabelecido


entre uma entidade e ela mesma.
Figura 35 – Agregação
Fonte: ADAPTADO DE MORAIS, 2014.

A semântica dessa figura indica que um CARTÃO MAGNÉTICO está


relacionado ao par CORRENTISTA e CONTA-CORRENTE. Concluímos,
então, que uma CONTA-CORRENTE por si só não possui cartão magnético
se não tiver um correntista a ela vinculado.

6.7 AUTORRELACIONAMENTO Figura 36 – Autorrelacionamento


Fonte: ADAPTADO DE MORAIS, 2014.
É comum encontrarmos, durante o processo de modelagem,
associações de ocorrências de entidades com outras ocorrências do
mesmo tipo, o que chamamos de autorrelacionamento. É o caso de

TECH IT 55 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


IMPORTANTE IMPORTANTE

A leitura da figura anterior é a seguinte: Cardinalidade mínima e máxima são utilizadas em relacionamentos 1:1,
1:N e N:N.
• um FUNCIONÁRIO é chefe de N funcionários;
• um FUNCIONÁRIO é chefiado por um outro funcionário.
6.9 RELACIONAMENTO TOTAL E PARCIAL
6.8 CARDINALIDADE MÍNIMA E MÁXIMA
Podemos classificar os relacionamentos em totais ou parciais.
A cardinalidade mínima e máxima de um relacionamento também Os totais (ou obrigatórios) são aqueles em que participam todas as
pode ser representada no diagrama. linhas de uma entidade. Os parciais (ou opcionais) são aqueles em que
a participação de todas as tuplas da entidade não é obrigatória. Isso é
determinado em função da cardinalidade mínima do relacionamento.

Figura 37 – Cardinalidade mínima e máxima


Fonte: ADAPTADO DE MORAIS, 2014.
Figura 38 – Relacionamento parcial
No exemplo anterior, temos que a cardinalidade mínima do
Fonte: ADAPTADO DE MORAIS, 2014.
funcionário em relação aos seus dependentes é zero e a máxima é N. Já
a cardinalidade mínima do dependente em relação ao funcionário é um
e a máxima também é um.

TECH IT 56 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Neste exemplo, temos representado que uma agência pode ter Nessa figura, observamos que um CANDIDATO tem de ter uma,
muitas faturas em cobrança ou pode não ter nenhuma. Já uma fatura e só uma, FICHA DE INSCRIÇÃO, que por sua vez, só pode pertencer a
fica em cobrança em uma agência, e pode haver fatura não colocada em um CANDIDATO. Veja que não pode haver CANDIDATO sem FICHA DE
agência nenhuma. INSCRIÇÃO e vice-versa.

6.10 RECAPITULANDO
Figura 39 – Relacionamento total x parcial
Fonte: ADAPTADO DE MORAIS, 2014. Neste tema, estudamos os conceitos importantes para criação
do Diagrama Entidade Relacionamento (DER): cardinalidade dos
Observando a figura anterior, temos que determinado relacionamentos; como nomear os relacionamentos; grau de um
DEPARTAMENTO pode ter muitas divisões ou pode não ter nenhuma relacionamento; subclasses, superclasses e herança; agregação;
DIVISÃO. Uma DIVISÃO, por sua vez, necessariamente tem de estar autorrelacionamento; relacionamento total e parcial; cardinalidade
ligada a um só DEPARTAMENTO. Neste caso, não podem haver divisões mínima e máxima.
que não pertençam a nenhum departamento.
A partir de agora você é capaz de criar esses diagramas utilizando
todos os recursos de modelagem disponíveis. Vamos praticar então?

Figura 40 – Relacionamento Total


Fonte: ADAPTADO DE MORAIS, 2014.

TECH IT 57 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


7 MODELO RELACIONAL

Neste tema, você conhecerá o conceito de Modelo Relacional 7.1 OBJETIVOS


(MR), entendendo que, uma vez construído o Diagrama Entidade
• Converter um DER em MR.
Relacionamento (DER), o próximo passo é o seu mapeamento para o MR.
• Criar um Dicionário de Dados.
Neste sentido, você aprenderá a mapear todos os elementos do
DER em sua representação no Modelo Relacional (MR).
7.2 MODELO DE DADOS RELACIONAL (MR)
Após aprender os mapeamentos, você conhecerá um algoritmo
que auxiliará nesse processo de mapeamento. Por fim, fecharemos o O MR, padrão utilizado atualmente para representação do modelo
tema com um exemplo de Dicionários de Dados. de dados, foi introduzido por Codd em 1970, sendo implementado pela
Bom estudo! maioria dos SGBDs comerciais. Representa um modelo eficiente para a
maioria das aplicações comerciais.

Em uma definição informal, o MR é representado por tabelas,


linhas, colunas e domínios, dentro de uma única estrutura de dados.

TECH IT 59 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Nome CPF Sexo Data Nasc. Profissão
IMPORTANTE
Edison 123456 M 07/03/77 Analista de Sistemas
Pedro 654321 M 01/12/78 Professor O Modelo de Dados é uma representação das necessidades de dados
Maria 299299 F 15/05/54 Bióloga de determinado ambiente e de como esses dados se relacionam. É
uma das primeiras atividades que devem ser executadas ao longo do
Alfredo 238838 M 13/09/70 Professor
processo de identificação e compreensão de um ambiente, tendo em
Fátima 445355 F 19/05/78 Médica vista necessidades de automatização. Além disso, é um dos produtos
Regina 345355 F 17/05/75 Psicóloga da fase de Análise do Ciclo de Vida de um projeto de desenvolvimento
de um sistema.
Tabela 3 – Modelo Relacional de relação grau cinco e cardinalidade seis
Fonte: ADAPTADO DE MORAIS, 2014.

Em uma analogia entre o conceito matemático de relação e a O Modelo Entidade Relacionamento (MER) é representado através
noção trivial de tabela, temos que: cada LINHA da tabela representa de Diagrama Entidade Relacionamento (DER) e construí-lo significa:
uma TUPLA da relação; o NÚMERO DE COLUNAS da tabela representa
• coletar e documentar informações relevantes do ambiente
o GRAU da relação; o NÚMERO DE LINHAS da tabela representa a estudado para construção do DER;
CARDINALIDADE da relação; os VALORES PERMITIDOS em cada coluna
• representar as informações, de forma clara e objetiva, em
da tabela representam o DOMÍNIO da relação.
um formato padrão que possa facilitar o entendimento dos
participantes do processo;
• definir, de maneira clara, o escopo do ambiente modelado;
• adquirir o entendimento do ambiente através de refinamentos
sucessivos do modelo;

TECH IT 60 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


• representar graficamente as necessidades de informação
independente do software e do hardware a serem usados na
implementação do sistema.

7.3 MAPEAMENTO DER/MR MR: ALUNO (Matrícula, Nome)

A seguir, vamos aprender como mapear cada elemento do DER em MR. Figura 41 – DER de uma entidade primária
Fonte: ADAPTADO DE MORAIS, 2014.

7.3.1 Mapeamento de Entidades


O primeiro elemento do DER que mapearemos são as entidades. O atributo identificador da entidade primária deve ser sublinhado.
Você aprenderá a mapear entidades primárias, entidades primárias com Se a entidade possuir mais de um atributo identificador, estes deverão ser
atributos compostos, multivalorados, entidades fracas e associativas. sublinhados.

7.3.1.1 ENTIDADE PRIMÁRIA 7.3.1.2 ENTIDADE PRIMÁRIA COM ATRIBUTO COMPOSTO


A figura a seguir mostra um exemplo de entidade primária ALUNO, A figura seguinte mostra um exemplo de entidade primária ALUNO
com dois atributos: Matrícula e Nome. com dois atributos simples, Matrícula e Nome, e um atributo composto,
Endereço.

TECH IT 61 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


MR: ALUNO (MATRÍCULA, NOME, TELEFONE1, TELEFONE2, TELEFONE3)
MR: ALUNO (Matrícula, Nome, Rua, Quadra, Lote)
ALUNO ENDERECO (Matrícula, Endereço)

Figura 42 – DER de uma entidade primária com atributo composto Figura 43 – DER de uma entidade primária com atributo multivalorado
Fonte: ADAPTADO DE MORAIS, 2014.
Fonte: ADAPTADO DE MORAIS, 2014.

7.3.1.3 ENTIDADE PRIMÁRIA COM ATRIBUTO MULTIVALORADO 7.3.1.4 ENTIDADE FRACA

A figura a seguir mostra um exemplo de entidade primária A figura seguinte mostra um exemplo de entidade primária
ALUNO com dois atributos simples, Matrícula e Nome, e dois atributos EMPREGADO com dois atributos simples, Matrícula e Nome, associada
multivalorados, Endereço e Telefone. a uma entidade fraca Dependente, com dois atributos simples, Código
e Data de Nascimento.

TECH IT 62 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


MR: EMPREGADO (Matrícula, Nome)
DEPENDENTE (Matrícula, Código, Data Nascimento)
MR: ALUNO (Matrícula, Nome) DISCIPLINA (Código, Nome)
APROVEITAMENTO (Matrícula, Código, Nota, Frequência)
Figura 44 – DER de uma entidade fraca
Fonte: ADAPTADO DE MORAIS, 2014.
Figura 45 – DER de uma entidade associativa
O atributo Matrícula na entidade DEPENDENTE é chamado de Fonte: ADAPTADO DE MORAIS, 2014.

chave estrangeira.

A chave primária da entidade DEPENDENTE, por sua vez, é o 7.3.2 Mapeamento de relacionamento
conjunto de atributos Matrícula e Código.
O próximo elemento do DER que mapearemos são os Relacionamentos.
Você aprenderá a mapear relacionamentos 1:1, 1:N e N:N.
7.3.1.5 ENTIDADE ASSOCIATIVA

A figura a seguir mostra um exemplo de duas entidades


primárias, ALUNO e DISCIPLINA, ligadas por uma entidade associativa
APROVEITAMENTO.

TECH IT 63 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


7.3.2.1 RELACIONAMENTO TIPO 1:1

A figura a seguir mostra um exemplo de duas entidades primárias,


HOMEM e MULHER, associadas por relacionamento de cardinalidade 1:1. MR: DEPTO (Cod_Depto, Nome)
MULHER (Cod_Func, Nome_Func, Cod_Depto)

Figura 47 – DER de Relacionamento tipo 1:N


Fonte: ADAPTADO DE MORAIS, 2014.
MR: HOMEM: (Cod_H, Nome)
MULHER (Code_M, Nome, Code_H)
OU 7.3.2.3 RELACIONAMENTO TIPO N:N
MR: HOMEM (Cod_H, Nome, Cod_M)
MULHER (Cod_M, Nome) A figura a seguir mostra um exemplo de duas entidades primárias,
ALUNO e DISCIPLINA, associadas por relacionamento de cardinalidade N:N.
Figura 46 – DER de relacionamento tipo 1:1
Fonte: ADAPTADO DE MORAIS, 2014.

7.3.2.2 RELACIONAMENTO TIPO 1:N MR: ALUNO (Matrícula, Nome) DISCIPLINA (Código, Nome)
ALUNO DISCIPLINA (Matrícula, Código, Nota, Frequência)
A próxima figura mostra um exemplo de duas entidades primárias,
DEPARTAMENTO e FUNCIONÁRIO, associadas por relacionamento de Figura 48 – DER de Relacionamento tipo N:N
Fonte: ADAPTADO DE MORAIS, 2014.
cardinalidade 1:N.

TECH IT 64 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


7.3.2.4 RELACIONAMENTO MÚLTIPLO

A próxima figura mostra um exemplo de relacionamento múltiplo


entre as entidades PRODUTO, DEPÓSITO e CLIENTE.

FUNCIONARIO (Cod_Func, Nome, Tipo)


PROFESSOR (Cod_Func, Titulação)
TECNICO (Cod_Func, Grau_de_Instrução)
ENGENHEIRO (Cod_Func, Especialização)
ou
MR: DEPÓSITO (Cod_Dep, Nome) PRODUTO (Cod_Prod, Nome) FUNCIONARIO (Cod_Func, Nome, Tipo, Titulação, Grau_de_Instrução,
CLIENTE (Cod_Cli, Nome) Especialização)
ENTREGA (Cod_Dep, Cod_Prod, Cod_Cli, Valor)

Figura 49 – DER de relacionamento múltiplo Figura 50 – DER de Generalização/Especialização de entidades


Fonte: ADAPTADO DE MORAIS, 2014. Fonte: ADAPTADO DE MORAIS, 2014.

7.3.3 Generalização/Especialização de Entidades No segundo modelo, algumas tuplas poderão ter os atributos
Titulação, Grau de Instrução e Especialização com valores nulos.
A figura a seguir mostra um exemplo de relacionamento do
tipo Generalização/ Especialização entre as entidades FUNCIONÁRIO,
PROFESSOR, TÉCNICO e ENGENHEIRO.

TECH IT 65 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


7.3.4 Agregação 7.3.5 Autorrelacionamento
A figura seguinte mostra um exemplo de relacionamento do A próxima figura mostra um exemplo de autorrelacionamento
tipo Agregação entre as entidades CORRENTISTA, CONTA-CORRENTE e para entidade FUNCIONÁRIO.
CARTÃO MAGNÉTICO.

MR: FUNCIONÁRIO (CODG_FUNC, NOME)


CHEFIA (CODG_FUNC, CODG_FUNCCHEFE)
CORRENTISTA (CODG_COR, NOME)
CONTACORRENTE (CODG_CCR, TIPO) Figura 52 – DER de Autorelacionamento
CORRENTISTACCR (CODG_COR, CODG_CCR, NÚMERO, SALDO) Fonte: ADAPTADO DE MORAIS, 2014.
CARTAOMAGNÉTICO (CODG_CM, NÚMERO)
CORRENTISTACCRCM (CODG_COR, CODG_CCR, CODGCM, VALIDADE)
Na relação Chefia, os atributos Codg_Func e Codg_FuncChefe
Figura 51 – DER de agregação são chaves estrangeiras da relação funcionário. O conjunto dos dois
Fonte: ADAPTADO DE MORAIS, 2014. atributos compõe o atributo identificador da relação.

Ou,

FUNCIONÁRIO (Codg_Func, Nome, Codg_FuncChefe)

TECH IT 66 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Neste caso, o atributo Codg_FuncChefe poderá permitir valores • Passo 2: Para cada tipo de entidade fraca F no esquema ER cujo
nulos para os casos em que um funcionário não possuir chefe. tipo de entidade forte identificadora é E, crie uma relação R e
inclua todos os atributos simples (ou componentes simples de
Agora que você já sabe como mapear todos os elementos de DER
atributos compostos) de F como atributos de R. Além disso,
em MR, vamos aprender um algoritmo (passo a passo) que ensina como inclua como chave estrangeira em R os atributos que formam
isso pode ser feito para um DER completo. a(s) chave(s) primária(s) da(s) relação(ões) que correspondem ao
tipo de entidade forte identificadora. Esse procedimento mapeia
o relacionamento identificador de F. A chave primária de R é a
combinação da(s) chave(s) primária(s) da(s) entidade(s) forte(s) e
7.4 ALGORITMO DE MAPEAMENTO DER/MR da chave parcial do tipo de entidade fraca F, se existir.
• Passo 3: Para cada tipo de relacionamento R binário 1:1 no
esquema ER, identifique as relações S e T que correspondam
Nesta seção, você aprenderá um algoritmo de mapeamento do DER.. aos tipos de entidades participantes de R. Escolha uma das
relações – digamos, S – e inclua como chave estrangeira em S
Um algoritmo é uma espécie de “receita”, ou roteiro, que mostra passo a
a chave primária de T. É melhor escolher um tipo de entidade
passo os procedimentos necessários para a resolução de uma tarefa.
com participação total em R para desempenhar o papel de S.
• Passo 1: Para cada tipo de entidade forte E no esquema ER, crie Inclua todos os atributos simples (ou componentes simples de
uma relação R que inclua todos os atributos simples de E. Inclua atributos compostos) do tipo de relacionamento R 1:1 como
somente os atributos componentes simples de cada atributo atributos de S.
composto. Escolha um dos atributos-chave de E como chave
primária de R. Se a chave escolhida for composta, o conjunto de
atributos simples que a compõe formará a chave primária de R.

TECH IT 67 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


• Passo 4: Para cada tipo de relacionamento binário R 1:N que não tem A como atributo. A chave primária de R é a combinação de
seja identificador de entidade fraca, identifique a relação S que A com K. Se o atributo multivalorado é composto, então inclua
representa o tipo de entidade participante no lado N do tipo somente seus componentes simples.
de relacionamento. Inclua como chave estrangeira de S a chave
• Passo 7: Para cada tipo de relacionamento n-ário R, com n
primária da relação T que representa o outro tipo de entidade
> 2, crie uma nova relação S para representar R. Inclua como
participante de R; isto se deve ao fato de que cada instância
chaves estrangeiras em S as chaves primárias das relações que
de entidade do lado N se relaciona a, no máximo, uma instância
representam os tipos de entidades participantes de R. Também
de entidade do lado 1 do tipo de relacionamento. Inclua todos
inclua todos os atributos simples (ou componentes simples de
os atributos simples (ou componentes simples de atributos
atributos compostos) como atributos de S. A chave primária de S é,
compostos) do tipo de relacionamento 1:N como atributos de S.
normalmente, a combinação de todas as chaves estrangeiras que
• Passo 5: Para cada tipo de relacionamento binário R M:N, crie referenciam as relações que representam os tipos de entidades
uma nova relação S para representar R. Inclua como chaves participantes de R. No entanto, se a restrição de participação
estrangeiras em S os atributos que formam as chaves primárias (min,max) de um dos tipos de entidades participantes de R (digamos,
das relações que representam os tipos de entidades participantes E) tiver max = 1, então a chave primária de S pode ser simplesmente
de R; a combinação dessas chaves estrangeiras formarão a chave a chave estrangeira que referencia a relação E’ correspondente a E
primária de S. Tambéminclua todos os atributos simples do tipo pois, nesse caso, cada entidade e em E participará em, no máximo,
de relacionamento M:N (ou componentes simples de atributos uma instância de relacionamento de R e, portanto, pode identificar
compostos) como atributos de S. unicamente essa instância de relacionamento.
• Passo 6: Para cada atributo multivalorado A, crie uma nova • Passo 8: Converta cada especialização com m subclasses
relação R que inclui um atributo correspondente a A mais a {S1,S2,...,Sm} e superclasse C, em que os atributos de C são
chave primária K (como chave estrangeira em R) da relação que {k,a1,...,an} e k é a chave primária, em esquemas de relação
representa o tipo de entidade ou tipo de relacionamento que usando uma das quatro opções seguintes.

TECH IT 68 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


∪ = união 7.4.1 EXEMPLO DE APLICAÇÃO DE ALGORITMO
Opção 8.1 – Crie uma relação L para C com atributos Atrs(L) = Considere o Modelo Descritivo a seguir.
{k,a1,...,an} e PK(L) = k. Crie uma relação Li para cada subclasse Si, 1 ≤ i ≤
A Construtora XYZ Ltda. executa projetos de engenharia que são
m, com os atributos Atrs(Li) = {k} ∪ {atributos de Si} e PK(Li) = k.
colocados sob responsabilidade de departamentos de sua estrutura
Opção 8.2 – Crie uma relação Li para cada subclasse Si, 1 ≤ i ≤ m, organizacional.
com atributos Atrs(Li) = {atributos de Si} ∪ {k,a1,...,an} e PK(Li) = k.
A cada projeto deve corresponder um líder e vários funcionários
Opção 8.3 – Crie uma única relação L com atributos Atrs(L) = comuns, os quais podem estar trabalhando em outros projetos também.
{k,a1,...,an} ∪ {atributos de S1} ∪...∪ {atributos de Sm} ∪ {t} e PK(L) = k. Entretanto, o líder só pode chefiar um projeto. É preciso manter
Esta opção é para especializações cujas subclasses são disjuntas, e t é informação sobre as habilitações de cada funcionário para facilitar a
um atributo que indica a subclasse à qual cada tupla pertence, se for o seleção destes.
caso. Esta opção pode gerar um grande número de valores nulos.
A construtora quer ter controle sobre as seguintes informações:
Opção 8.4 – Crie uma única relação L com atributos Atrs(L) = quais são materiais, são provenientes de quais fornecedores, estão
{k,a1,...,an} ∪ {atributos de S1} ∪ ... ∪ {atributos de Sm} ∪ {t1,t2,...,tm} sendo fornecidos para quais projetos.
e PK(L) = k. Esta opção é para especializações cujas subclasses são
A partir deste Modelo Descritivo, propomos o seguinte DER,
sobrepostas, e cada ti, 1 ≤ i ≤ m, é um atributo booleano que indica se a
visualizado na figura a seguir.
tupla pertence à subclasse Si.

A seguir um exemplo de como aplicar este algoritmo.

TECH IT 69 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Aplicando o Algoritmo aprendido, obtemos o seguinte MR:
CONSTRUTORA (Numr_Const, Nome_Const);
DEPARTAMENTO (Numr_Const, Codg_Depto, Nome_Dpto,
Qtdade_Func);
PROJETO (Numr_Depto, Codg_Proj, Nome_Proj, Data_Inicio,
Data_Fim);
MATERIAL (Codg_Mat, Nome_Mat);
PROJETO_MATERIAL (Codg_Proj, Codg_Mat, Quantidade);
FORNECEDOR (Codg_Forn, Nome_Forn, Logradouro, Cidade, UF);
FORNECEDOR_MATERIAL (Codg_Forn, Codg_Mat, Quantidade,
Data, Valor);
FUNCIONARIO (Codg_Func, Nome, Data_Nascimento);
LIDER (Codg_Func, Gratificação);
FUNCIONARIOLIDER (Codg_Func, Codg_Projeto);
FUNCIONARIOPARTICIPA (Codg_Func, Codg_Proj, Função, Data_
Inicio, Data_Fim);

Figura 53 – DER do exemplo sugerido HABILIDADE (Codg_Func, Descrição);


Fonte: ADAPTADO DE MORAIS, 2014.

TECH IT 70 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


7.5 DICIONÁRIO DE DADOS Nome Descrição Tipo MV CP DV Observações

Este dicionário de dados tem como objetivo descrever as entidades e


Tabela 4 – Taxonomia dos atributos
os relacionamentos identificados no DER/MR. A seguir, é apresentada uma
Fonte: ADAPTADO DE MORAIS, 2014.
notação utilizada na taxonomia dos atributos das entidades identificadas.
Nome: Nome do atributo. Obs.: O Atributo identificador deve
Tal notação é importante porque servirá de referência para o
ser sublinhado e em negrito. A cardinalidade de atributo [<Nome do
próximo passo da criação do Banco de Dados, que é o mapeamento
atributo> (cardinalidade mínima, cardinalidade máxima)] também deve
para o Modelo Físico. Posteriormente, as entidades serão apresentadas,
ser representada. Quando não for descrita, o valor assumido será (1,1),
juntamente com seus respectivos atributos e, em seguida, serão listados
ou seja, o atributo é obrigatório e monovalorado.
os relacionamentos entre essas entidades.
Ex.: Telefone(0,2). A entidade que possuir este atributo possui no
mínimo 0 e no máximo 2 telefones. Sendo que o telefone não é obrigatório.
IMPORTANTE
Descrição: descrição do valor do atributo.
Notação utilizada para taxonomia dos atributos.
Tipos dos atributos:
Entidade <Nome da Entidade>: <Descrição da Entidade>
• T(n): texto com n caracteres;
• I(n): número inteiro com n algarismos;
• N(n,d): número decimal com n algarismos no total, sendo d
decimais;

TECH IT 71 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


• S/N: lógico (sim, não); Uma firma vende produtos de limpeza. Cada produto é
• D: data; caracterizado por código único, nome do produto, categoria (e.g.
detergente, sabão em pó, sabonete etc.) e preço. A categoria é uma
• M: campo texto longo.
classificação criada pela própria firma. A firma possui informações sobre
todos seus clientes. Cada cliente é identificado por um código único
MV: atributo multivalorado. Seus valores devem ser colocados na (também interno à firma), o nome do cliente, endereço (rua, número,
coluna observação. sala, cidade, CEP, UF), telefone, status do cliente (“bom”,“médio”,“ruim”) e
CP: atributo composto. A composição do atributo deve ser seu limite de crédito. Guarda-se igualmente a informação dos pedidos
colocada na coluna observação. feitos pelos clientes. Cada pedido possui um número e guarda-se a data
de elaboração do pedido. Cada pedido pode envolver de um a vários
DV: atributo derivado. A derivação do atributo deve ser colocada
produtos, cada qual com a quantidade indicada nesse pedido e o valor
na coluna observação.
total dessa quantidade.
Observações: toda e qualquer observação a respeito dos atributos.

Vamos fazer um exemplo desde a criação do DER para praticar?


No exemplo a seguir, vamos criar um dicionário de dados a partir do
modelo descritivo.

TECH IT 72 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


1º Passo – Criação do DER 2º Passo – Mapeamento para o modelo relacional

CLIENTE (Código, Nome, Classificação, Limite de Crédito, Rua,


Número, Sala, Cidade, UF, CEP, Telefone)

PRODUTO (Código, Nome, Tipo, Preço)

PEDIDOCLIENTE (CódigoCliente, Número, Data) CódigoCliente,


NúmeroPedidoCliente, NúmeroProduto Quantidade, Valor_Total)

3º Passo – Criação do Dicionário de Dados

a. Descrição das entidades


Entidade CLIENTE: representa todos os clientes da firma.

Figura 54 – DER do exemplo


Fonte: ADAPTADO DE MORAIS, 2014.

TECH IT 73 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


NOME DESCRIÇÃO TIPO MV CP DV OBSERVAÇÕES Endereço Endereço S N N
Código Código do I(4) N N N Quando um completo do
cliente para novo cliente Cliente
controle é cadastrado Rua Rua em que o T(50) N N N
interno da na firma, ele cliente reside
firma. recebe uma nova Número (0,1) Número na I(5) N N N
numeração. rua em que o
Nome Nome T(50) N N N cliente reside
completo do Sala (0,1) I(5) N N N
cliente.
Cidade Cidade em T(50) N N N
Classificação Tipo do I(1) N N N 0 – Bom, 1 – que o cliente
cliente Médio, 2 – Ruim. reside
Só pode receber
os valores 0, 1 e 2. UF UF em que o T(2) N N N
cliente reside
Limite de Limite de N(8,2) N N N Calculado de
Crédito crédito do acordo com a CEP (0,1) CEP do T(10) N N N Formato 99.999-
cliente. classificação: endereço do 999
Ruim <= cliente
R$500,00 Telefone (0,2) Telefone(s) do T(17) N N N Formato (0xxxx)
Médio <= Cliente 9999-9999.
R$1000,00 Tabela 5 – Entidade cliente
Bom – Qualquer Fonte: ADAPTADO DE MORAIS, 2014.
valor .

TECH IT 74 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Entidade PRODUTO: representa todos os produtos que a firma Entidade PEDIDOCLIENTE: representa todos os pedidos efetuados pelo
comercializa. cliente.
DESCRIÇÃO TIPO MV CP DV OBSERVAÇÕES
NOME DESCRIÇÃO TIPO MV CP DV OBSERVAÇÕES
Número Número do I(4) N N N Quando um novo pedido
Código Código do I(4) N N N Quando um novo pedido para é cadastrado na firma
produto para produto é cadastrado controle interno ele recebe uma nova
controle na firma, ele recebe da firma. numeração.
interno da uma nova numeração.
Data Data do Pedido D N N N Formato dd/mm/yyyy
firma
Nome Nome T(50) N N N Tabela 7 – Entidade pedidocliente
completo do Fonte: ADAPTADO DE MORAIS, 2014.
produto
Tipo Tipo do I(1) N N N 0 – Sabão em pó,
produto 1 – Detergente, 2 – Entidade PEDIDOPRODUTO: representa todos os produtos existentes
Sabonete. Só pode
receber os valores 0, em um pedido.
1 e 2. NOME DESCRIÇÃO TIPO MV CP DV Observações
Preço Valor do N(8,2) N N N O valor do produto é Quantidade Quantidade do I(5) N N N
produto definido pela tabela produto dentro
de preços da firma do pedido
no momento do seu
cadastro. Valor_Total Valor do produto N(8,2) N N S Quantidade
de acordo com a * Valor do
Tabela 6 – Entidade produto quantidade Produto.
Fonte: ADAPTADO DE MORAIS, 2014. Tabela 8 – Entidade pedidoproduto
Fonte: ADAPTADO DE MORAIS, 2014.

TECH IT 75 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


b. Descrição dos relacionamentos 7.6 RECAPITULANDO
FAZ: Representa o fato de um cliente fazer zero ou vários
pedidos e um pedido ser feito por 1 e somente 1 cliente. Você aprendeu todos os passos necessários para a modelagem
completa de um Banco de Dados, estudando o conceito de Modelo
Relacional (MR) e como converter o DER para este modelo. Aprendeu
também um algoritmo para auxiliar neste processo de mapeamento e,
Figura 55 – Descrição de relacionamentos “FAZ” por fim, estudou um exemplo de Dicionários de Dados.
Fonte: ADAPTADO DE MORAIS, 2014.

POSSUI: Representa o fato de um pedido, que possui um cliente


relacionado, possuir um ou vários produtos e um produto fazer parte de
zero ou vários pedidos.

Figura 56 – Descrição de relacionamentos “POSSUI”


Fonte: ADAPTADO DE MORAIS, 2014.

TECH IT 76 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


8 NORMALIZAÇÃO

Neste tema, você aprenderá um dos conceitos mais importantes


8.2 NORMALIZAÇÃO
do universo Banco de Dados (BD): o conceito de normalização.

Normalização ajuda a minimizar redundâncias e inconsistências A teoria da normalização foi escrita por Codd em 1972 e consiste

nos BDs, tornando sua manipulação (alteração e recuperação dos em três formas normais, nas quais em cada etapa uma relação passa a

dados) mais simples e, como consequência, facilitando a manutenção satisfazer um conjunto de restrições estabelecidas.

dos Sistemas de Informação.


SAIBA MAIS
Vamos aprender mais sobre este conceito? Bom estudo!
Posteriormente, a teoria foi estendida pelo autor até a quinta forma normal.

8.1 OBJETIVO Podemos citar como principais objetivos da normalização os seguintes:

• Entender o conceito de primeira, segunda e terceira formas • minimização de redundâncias e inconsistências;


normais. • facilidade de manipulação do BD (alteração e recuperação dos
dados);
• facilidade de manutenção dos Sistemas de Informação.

TECH IT 77 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Elmasri (2002) cita também que a normalização garante, além Nº DO PEDIDO: DATA DO PEDIDO: DATA DO PEDIDO:
de consistência, economia de espaço de armazenamento, pois um
conjunto de relações (tabelas) normalizadas diminuem a redundância CGC DO CLIENTE: NOME DO CLIENTE:
dos dados. O autor afirma também que a normalização é uma espécie
de “filtragem” ou “purificação” para fazer com que o projeto tenha mais ENDEREÇO DO CLIENTE
qualidade. Assim, os resultados esperados com a normalização são:

• lista de relações necessárias e seus atributos; CÓD. DO ITEM NOME DO ITEM QUANTIDADE PREÇO UNITÁRIO PREÇO TOTAL

• relações estáveis capazes de suportar mudanças.

TOTAL DO PEDIDO:

8.2.1 Exemplo de normalização Tabela 9 – Pedido


Fonte: ADAPTADO DE MORAIS, 2014.
Para podermos estudar a técnica de normalização, tomaremos
como exemplo uma estrutura de dados correspondente a um pedido
Assim, a notação da relação pedido não normalizada pode ser
de compra de um cliente para um fornecedor. Temos, então, como
descrita da seguinte forma:
estrutura do pedido:
PEDIDO (Numero, Data, Data_Entrega, CGC_Cliente, Nome_
Cliente, Endereço_Cliente, Código_Item, Nome_Item, Quantidade,
Preço_Unitário, Preço_Total, Total_Pedido).

TECH IT 78 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


As instâncias da relação pedido não normalizadas, por sua vez, são: Passo 2: Retirar da relação original os grupos de repetição;

1 11/10 15/10 111 Cli 1 E1 1 Item 1 10 50,00 500,00 660,00 Passo 3: Criar nova relação com a chave da relação original e os demais
1 11/10 15/10 111 Cli 1 E1 2 Item 2 5 10,00 50,00 660,00 atributos do grupo de repetição;
1 11/10 15/10 111 Cli 1 E1 3 Item 3 6 5,00 30,00 660,00
Passo 4: Repetir o passo 3 para cada grupo de repetição.
1 11/10 15/10 111 Cli 1 E1 4 Item 4 8 10,00 80,00 660,00

Tabela 10 – Instâncias do pedido


Fonte: ADAPTADO DE MORAIS, 2014.
Assim, a notação da relação pedido na primeira forma normal
pode ser escrita da seguinte maneira:
A seguir, você estudará as três formas normais descritas por Codd.
• PEDIDO (Numero, Data, Data_Entrega, CGC_Cliente, Nome_
Cliente, Endereço_Cliente, Total_Pedido).
8.3 PRIMEIRA FORMA NORMAL • ITENSDOPEDIDO (Numero do Pedido, Código_Item, Nome_Item,
Quantidade, Preço_ Unitário, Preço_Total).
Uma relação está na primeira forma normal se não contiver grupos
de repetição. Assim, a solução para colocar a relação descrita na seção As instâncias da relação pedido na primeira forma normal, por sua
anterior em primeira forma normal é desmembrar a relação em uma vez, são:
ou mais relações sem grupos de repetição. Os passos para realizar este
1 11/10 15/10 111 Cli 1 E1 660,00
processo são descritos a seguir:

Passo 1: Determinar a chave da relação original e a chave de cada Tabela 11 – Instâncias do pedido na primeira forma normal
Fonte: ADAPTADO DE MORAIS, 2014.
grupo de repetição;

TECH IT 79 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


ITENS DO PEDIDO • Passo 1: Retirar da relação original o atributo que dependa de
parte da chave;
1 1 Item 1 10 50,00 500,00
• Passo 2: Criar nova relação com a chave da relação original
1 2 Item 2 5 10,00 50,00
da qual o(s) atributo(s) depende(m) e o(s) atributo(s) que
1 3 Item 3 6 5,00 30,00
depende(m) dessa chave.
1 4 Item 4 8 10,00 80,00
Assim, a notação da relação pedido na segunda forma normal
Tabela 12 – Instâncias dos itens do pedido na primeira forma normal
pode ser escrita da seguinte maneira:
Fonte: ADAPTADO DE MORAIS, 2014.
PEDIDO (Numero, Data, Data_Entrega, CGC_Cliente, Nome_
Agora que você conhece a primeira forma, que tal conhecer a
Cliente, Endereço_Cliente, Total_Pedido).
segunda? Então, vamos lá!
ITENSDOPEDIDO (Numero do Pedido, Código_Item, Quantidade,
Preço_Total).
8.4 SEGUNDA FORMA NORMAL
ITEM (Código_Item, Nome_Item, Preço_Unitário).
Uma relação está na segunda forma normal caso esteja na primeira
forma normal e se todos os atributos não chaves são dependentes de As instâncias da relação pedido na primeira forma normal são:
toda chave, e não apenas parte da chave. A solução para colocar a relação PEDIDO
descrita na seção anterior em segunda forma normal é desmembrar
a relação de modo que não haja atributo não chave dependente de 1 11/10 15/10 111 Cli1 E1 660,00
apenas parte da chave. Os passos para este processo são os descritos a
Tabela 13 – Instância da relação de primeira forma normal do pedido
seguir: Fonte: ADAPTADO DE MORAIS, 2014.

TECH IT 80 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


ITENS DO PEDIDO 8.5 TERCEIRA FORMA NORMAL
1 1 10 50,00
1 2 5 10,00 Uma relação está na terceira forma normal, também conhecida
1 3 6 5,00 como Forma Normal Boyce-Codd (FNBC), se estiver na segunda forma
1 4 8 10,00 normal e se todos os atributos não chave forem independentes entre
Tabela 14 – Instância da relação de primeira forma normal dos itens do pedido si. A solução para colocar a relação da seção anterior na terceira forma
Fonte: ADAPTADO DE MORAIS, 2014. normal é desmembrar a relação de modo que os atributos não chave
sejam dependentes exclusivamente da chave. Os passos para este
ITEM procedimento são os descritos a seguir:
1 Item 1 50,00
Passo 1: Retirar da relação original os atributos que dependam de
2 Item 2 10,00
outro atributo não chave;
3 Item 3 5,00
4 Item 4 10,00 Passo 2: Criar uma nova relação para cada atributo que possui
outro(s) atributo(s) dependente(s) dele.
Tabela 15 – Instância da relação de primeira forma normal do item
Fonte: ADAPTADO DE MORAIS, 2014. A notação da relação pedido na terceira forma normal pode ser
escrita assim:

PEDIDO (Numero, Data, Data_Entrega, CGC_Cliente, Total_Pedido).

CLIENTE (CGC_Cliente, Nome_Cliente, Endereço_Cliente).

TECH IT 81 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


ITENSDOPEDIDO (Numero do Pedido, Código_Item, Quantidade, ITENSDOPEDIDO
Preço_Total). 1 1 10 500,00
ITEM (Código_Item, Nome_Item, Preço_Unitário). 1 2 5 50,00
1 3 6 30,00
1 4 8 80,00
Já as instâncias da relação pedido na primeira forma normal são:
Tabela 18 – Instância da relação de primeira forma normal dos itens do pedido
PEDIDO Fonte: ADAPTADO DE MORAIS, 2014.

1 11/10 15/10 111 660,00


ITEM Atualmente a formal normal mais utilizada é a terceira.
Tabela 16 – Instância da relação de primeira forma normal do pedido
Fonte: ADAPTADO DE MORAIS, 2014. 1 Item 1 50,00
2 Item 2 10,00
CLIENTE 3 Item 3 5,00
4 Item 4 10,00
111 Cli 1 E1
Tabela 19 – Instância da relação de primeira forma normal do item
Tabela 17 – Instância da relação de primeira forma normal do cliente
Fonte: ADAPTADO DE MORAIS, 2014.
Fonte: ADAPTADO DE MORAIS, 2014.

TECH IT 82 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Apesar de existirem, na teoria, a quarta e quinta formas normais, estas 8.6 RECAPITULANDO
são pouco utilizadas na prática, uma vez que, dependendo do caso,
podem tornar a manipulação dos dados “pesada”. Nesta aula, você aprendeu o conceito de normalização, um pouco
de seu histórico, sua importância e seus objetivos. Aprendeu também
A quarta forma normal se caracteriza pela ausência de relações de
como deixar uma relação na primeira, segunda e terceira formas normais.
Dependência Multivaloradas indesejáveis e, portanto, pode ser utilizada
para identificar e decompor essas relações. Já a quinta forma normal Se você quiser aprender mais sobre normalização, uma ótima
existe quando houver a presença da chamada Dependência de Junção. referência é o livro do Professor Heuser (2009), que explica que, para
que uma tabela seja bem projetada, ela deve necessariamente estar
em uma forma normal. Ele também apresenta quatro formas normais e
SAIBA MAIS
como obtê-las.
Aprenda mais sobre o conceito de Dependência Multivalorada e
Dependência de Junção em “Sistemas de banco de dados: fundamentos
e aplicações” (2002).

TECH IT 83 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


9 LINGUAGEM SQL - PARTE I

Neste material, você aprenderá alguns dos comandos da • CREATE TABLE


Linguagem SQL. SQL, do inglês Structured Query Language, quer dizer • ALTER TABLE
Linguagem Estrutura de Consulta, utilizada tanto para definição da • DROP TABLE
estrutura do Banco de Dados quanto para sua manipulação.
• CONSTRAINT
Assim, veremos que para definição da estrutura utilizamos a
• CREATE INDEX
variação SQL-DDL. DDL, do inglês Data Definition Language, significa
Linguagem de Definição de Dados. E, para manipulação dos dados
utilizamos a variação SQL-DML, do inglês Data Manipulation Language, 9.2 CREATE TABLE
que significa Linguagem de Manipulação de Dados. Antes de aprender a sintaxe do primeiro comando SQL, vamos
Bom estudo! primeiramente estabelecer o projeto de BD padrão que será utilizado. A figura
a seguir mostra o DER de um sistema acadêmico. Em seguida, é apresentado
o Dicionário de Dados necessário para execução dos comandos.
9.1 OBJETIVO
Na sequencia, você vai aprender e implementar os seguintes
comandos em linguagem SQL:

TECH IT 85 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Dicionário de Dados

Siglas:

• ID – Os atributos que tiverem S (sim) no campo ID formam a


chave primária da relação.
• CE – Os atributos que tiverem S (sim) no campo CE formam a
chave estrangeira da relação.
• OB – S – Atributo Obrigatório / N – Atributo não obrigatório
• NAT – Tipo do Campo (N – INTEGER, C – VARCHAR(N) OU CHAR(N),
D – DATE, R – REAL)
• TAM – Tamanho do campo
• DEC – Número de Casas Decimais
• DOM – Domínio do Atributo

ATRIBUTOS ID CE OB NAT TAM DEC DOM


DEPARTAMENTO Codigo S S C 3 0
Nome S C 30 0

Figura 57 – DER Sistema Acadêmico


Fonte: ADAPTADO DE MORAIS, 2014.

TECH IT 86 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


ATRIBUTOS ID CE OB NAT TAM DEC DOM ATRIBUTOS ID CE OB NAT TAM DEC DOM
CPF S S N 11 0 Codigo_Curso S S S
Nome S C 30 0 Codigo S S N 4 0
Data_ DISCIPLINA Nome S C 30 0
S D
Nascimento Creditos S N 1
Logradouro S C 30 0 Prelecao S N 1
PROFESSOR
Bairro S C 20 0 Laboratorio S N 1
Cidade S C 20 0
(1) Relacionado com curso.
Estado S C 2 0
Cep S N 8 0 ATRIBUTOS ID CE OB NAT TAM DEC DOM
Codigo_ CPF_Professor S S (1) S
S(1) S
Departamento VINCULO Codigo_Curso S S (2) S
(1) Relacionado com departamento. Codigo_
S (2) S
Disciplina
ATRIBUTOS ID CE OB NAT TAM DEC DOM
(1) Relacionado com professor.
Codigo S S C 3 0 (2) Relacionado com disciplina.
CURSO Nome S C 30 0
Codigo_ S(1) S ATRIBUTOS ID CE OB NAT TAM DEC DOM
Departamento DIA DA
Codigo S S N 1 0
SEMANA
(1) Relacionado com departamento. Nome S C 9 0

TECH IT 87 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


ATRIBUTOS ID CE OB NAT TAM DEC DOM ATRIBUTOS ID CE OB NAT TAM DEC DOM
Ano S S N 4 0 DIAS DE Codigo_Curso S S(1) S
Numero S S N 1 0 AULA Codigo_Disciplina S S(1) S
SEMESTRE
Data_InicioAula S D NumeroTurma S S(1) S
Data_
S D (1) Relacionado com Turma.
TerminoAula
(1) Relacionado com Dia da Semana.

ATRIBUTOS ID CE OB NAT TAM DEC DOM ATRIBUTOS ID CE OB NAT TAM DEC DOM
Codigo_Curso S S(1) S Código_Curso S S(1) S
Codigo_Disciplina S S(1) S Codigo_Disciplina S S(1) S
TURMA NumeroTurma S S C 3 NúmeroTurma S S(1) S
NumeroSubTurma S S C 1 NúmeroSubTurma S S(1) S
Ano_Semestre S S(2) S AULA Ano_Semestre S S(1) S
Numero_Semestre S S(2) S Número_Semestre S S(1) S
(1) Relacionado com disciplina. Data S S D
(2) Relacionado com semestre. Número S S N 1
Resumo S C 60
ATRIBUTOS ID CE OB NAT TAM DEC DOM CPF_Professor S(2) S
DIAS DE Codigo_Curso S S(1) S
(1) Relacionado com Turma.
AULA Codigo_Disciplina S S(1) S
(2) Relacionado com Professor
NumeroTurma S S(1) S

TECH IT 88 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


ATRIBUTOS ID CE OB NAT TAM DEC DOM ATRIBUTOS ID CE OB NAT TAM DEC DOM
Matrícula S S N 10 0 Código_Curso S S(1,2) S
Nome S C 30 0 Código_Disciplina S S(1,2) S
Data_Nascimento S D 0 NúmeroTurma S S(1,2) S
Logradouro S C 30 0 NúmeroSubTurma S S(1,2) S
ALUNO
Bairro S C 20 0 Ano_Semestre S S(1,2) S
FREQUÊNCIA
Cidade S C 20 0 Número_Semestre S S(1,2) S
Estado S C 2 0 Data_Aula S S(1) S
Cep S N 8 0 Número_Aula S S(1) S
Sexo S C 1 Matrícula_Aluno S S(2) S
Data_Matrícula S S(2) S
ATRIBUTOS ID CE OB NAT TAM DEC DOM IndPresenca S C 1
Código_Curso S S(1) S (1) Relacionado com Aula.
Código_Disciplina S S(1) S (2) Relacionado com Matricula.
NúmeroTurma S S(1) S
MATRÍCULA Ano_Semestre S S(1) S
Número_Semestre S S(1) S
MatrÍcula_Aluno S S(2) S
Data_Matrícula S S D
Nota_Final S R 3 1
(1) Relacionado com Turma.
(2) Relacionado com Aluno.

TECH IT 89 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Agora que estabelecemos o DER e o Dicionário de Dados, o Sintaxe
próximo passo é executar os comandos. Para execução dos comandos
CREATE TABLE tabela (campo1 tipo [(tamanho)] [NOT NULL] [índice1]
SQL, é necessário um software SGBD.
[, campo2 tipo[(tamanho)] [NOT NULL] [índice2] [, ...]] [, CONSTRAINT
índicedemulticampos [, ...]])
IMPORTANTE A instrução CREATE TABLE tem estas partes:

Recomendamos a utilização da última versão disponível do SGBD PARTE DESCRIÇÃO


PostgreSQL. Parte tabela O nome da tabela a ser criada.
campo1, campo2 O nome do campo ou dos campos a serem
Este software está disponível gratuitamente no site <http://www.
criados na nova tabela. Uma tabela deve ter
postgresql.org/>. Como ferramenta visual para execução dos comandos, pelo menos um campo.
sugerimos o software PGAdmin, também em sua última versão,
disponível de forma gratuita em tipo O tipo de dados de campo na nova tabela.
tamanho O tamanho do campo em caracteres (somente
<http://www.pgadmin.org/>. Manuais de utilização de ambos os softwares os campos Texto e Binário).
estão disponíveis no seus respectivos sites.
índice1, índice2 Uma cláusula CONSTRAINT que define um
índice de campo único.
Índicedemulticampos Uma cláusula CONSTRAINT que define um
Para definir uma nova tabela, seus campos e suas restrições de índice de campos múltiplos.

campo, use a instrução CREATE TABLE da seguinte forma:

TECH IT 90 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Agora, que tal alguns exemplos? Vamos lá! c) Para criar a tabela DISCIPLINAS, temos:

a) Para criar a tabela DEPARTAMENTO, teríamos: CREATE TABLE DISCIPLINAS

CREATE TABLE DEPARTAMENTOS • (CodigoCurso Text(3) NOT NULL,

• (Codigo Text(3) NOT NULL, Nome Text(30) NOT NULL, • Numero INTEGER NOT NULL,

• CONSTRAINT PrkDep PRIMARY KEY (Codigo) • Nome Text(30) NOT NULL,


• Creditos Byte NOT NULL,

b) Para criar a tabela CURSOS, por sua vez, faríamos da seguinte • Laboratorio Byte NOT NULL,
forma: • Prelecao Byte NOT NULL,

CREATE TABLE CURSOS • CodigoDepartamento Text(3) NOT NULL,

• (Codigo Text(3) NOT NULL, Nome Text(30) NOT NULL, • CONSTRAINT PrkDisciplina PRIMARY KEY (CodigoCurso, Numero),

• CodigoDepartamento Text(3) NOT NULL, • CONSTRAINT FrkCursoDisciplina FOREIGN KEY (CodigoCurso)

• CONSTRAINT PrkCurso PRIMARY KEY (Codigo), • REFERENCES CURSOS (Codigo)

• CONSTRAINT FrkDepCurso FOREIGN KEY (CodigoDepartamento)


• REFERENCES DEPARTAMENTOS (Codigo))

TECH IT 91 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


d) Já para criar a Tabela SEMESTRES, seria da seguinte maneira: • FOREIGN KEY (CodigoCurso,NumeroDisciplina) REFERENCES
DISCIPLINAS (CodigoCurso,Numero),
CREATE TABLE SEMESTRES
• CONSTRAINT FrkDisciplinaSemestre
• (Ano Integer NOT NULL, Numero Byte NOT NULL,
• FOREIGN KEY (AnoSemestre,NumeroSemestre) REFERENCES
• CONSTRAINT PrkSemestre PRIMARY KEY (Ano,Numero))
SEMESTRES (Ano,Numero))
e) Por fim, para criar a Tabela TURMAS:
IMPORTANTE
CREATE TABLE TURMAS

• (CodigoCurso Text(3) NOT NULL, Uma cláusula CONSTRAINT estabelece várias restrições em um campo
e pode ser utilizada para estabelecer a chave primária.
• NumeroDisciplina INTEGER NOT NULL,
• Numero Text(3) NOT NULL,
8.2 ALTER TABLE
• NumeroSubturma Text (1) NOT NULL,
• AnoSemestre Integer NOT NULL, A instrução ALTER TABLE modifica a estrutura de uma tabela depois

• NumeroSemestre Byte NOT NULL, de ter sido criada com a instrução CREATE TABLE, observe:

• CONSTRAINT PrkTurma Sintaxe

• PRIMARY KEY (CodigoCurso, NumeroDisciplina, Numero, ALTER TABLE tabela {ADD {COLUMN campo tipo[(tamanho)] [NOT NULL]
NumeroSubTurma, AnoSemestre,NumeroSemestre), [CONSTRAINT índice] | CONSTRAINT índicedemulticampos} | DROP
• CONSTRAINT FrkDisciplinaTurma {COLUMN campo I CONSTRAINT nomedoíndice} }

TECH IT 92 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


A instrução ALTER TABLE tem estas partes: Para entender melhor esta instrução, veja alguns exemplos para
modificar a estrutura da tabela:
PARTE DESCRIÇÃO
Tabela O nome da tabela a ser alterada. a) acrescentar na tabela DEPARTAMENTOS, o atributo DataDeCriacao
Campo O nome do campo a ser adicionado ou de preenchimento opcional e do tipo data.
excluído da tabela. ALTER TABLE DEPARTAMENTOS
Tipo O tipo de dados de campo.
ADD COLUMN DataDeCriacao Date
Tamanho O tamanho do campo em caracteres
(somente os campos Texto e Binário). b) excluir da tabela DEPARTAMENTOS o atributo DataDeCriacao. ALTER
Índice O índice para campo. Consulte o tópico TABLE DEPARTAMENTOS DROP COLUMN DataDeCriacao
da cláusula CONSTRAINT para maiores
Através da instrução ALTER TABLE, você pode alterar uma tabela existente
informações sobre como construir este
índice. de diversas maneiras, como:
Índicedemulticampos A definição de um índice de campos • utilizando ADD COLUMN para adicionar um novo campo à
múltiplos a ser adicionado à tabela. Consulte tabela. Você especifica o nome do campo, o tipo de dados e
o tópico da cláusula CONSTRAINT para (para campos Texto e Binário) um tamanho opcional;
maiores informações sobre como construir
• utilizando ADD CONSTRAINT para adicionar um índice de
esta cláusula.
campos múltiplos;
Nomedoíndice O nome do índice de campo múltiplo a ser
removido. • utilizando DROP COLUMN para excluir um campo. Você especifica
somente o nome do campo;

TECH IT 93 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


• utilizar DROP CONSTRAINT para excluir um índice de campos Sintaxe
múltiplos. Você especifica somente o nome do índice após a
DROP {TABLE tabela | INDEX índice ON tabela}
palavra reservada CONSTRAINT.
A instrução DROP tem estas partes:
SAIBA MAIS
PARTE DESCRIÇÃO
Você não pode adicionar ou excluir mais de um campo ou índice de Tabela O nome da tabela a ser excluída ou a tabela a
cada vez. partir da qual um índice deve ser excluído.
Além disso, você pode utilizar NOT NULL em um campo único ou Índice O nome do índice a ser excluído da tabela.
dentro de uma cláusula CONSTRAINT nomeada que se aplica a uma
CONSTRAINT de campo único ou de campos múltiplos. Contudo, você Abaixo são apresentados alguns exemplos.
pode aplicar a restrição NOT NULL somente uma vez a um campo,
pois, senão, ocorrerá um erro em tempo de execução. c. Excluir a tabela TABEXEMPLO criada pelo comando a seguir:
Criando a tabela

CREATE TABLE TABEXEMPLO (Codigo Text(3), Nome Text(30),


9.3 DROP TABLE DataNascimento Date, CONSTRAINT PrkTabExemplo PRIMARY
KEY (Codigo))
Esta instrução exclui uma tabela existente de um banco de dados
Excluindo a tabela
ou exclui um índice existente de uma tabela com o seguinte comando:
DROP TABLE TABEXEMPLO

TECH IT 94 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


d. Excluir o índice IdxNome criado pelos comandos a seguir: Sintaxe
Criando o índice (Vide comando CREATE INDEX) CREATE [ UNIQUE ] INDEX índice ON tabela (campo [ASC|DESC][, campo
CREATE INDEX IdxNome ON DEPARTAMENTOS (Nome ASC) [ASC|DESC],

Excluindo o Índice IdxNome ...])

DROP INDEX IdxNome ON DEPARTAMENTOS [WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]

A instrução CREATE INDEX tem estas partes:


SAIBA MAIS
PARTE DESCRIÇÃO
Você deve fechar a tabela para poder excluí-la ou remover um índice índice O nome do índice a ser criado.
dela. Para isso, você também pode utilizar ALTER TABLE.
tabela O nome da tabela existente que conterá o índice.
Sendo assim, você pode utilizar CREATE TABLE para criar uma tabela
campo O nome do campo ou dos campos a serem indexados. Para
e CREATE INDEX ou ALTER TABLE para criar um índice. Para modificar
uma tabela, por sua vez, use ALTER TABLE. criar um índice de campo único, liste o nome do campo
entre parênteses após o nome da tabela. Para criar um
índice de campos múltiplos, liste o nome de cada campo a
ser incluído no índice. Para criar índices descendentes, use
9.4 CREATE INDEX a palavra reservada DESC; caso contrário, assume-se que os
índices são ascendentes.
Esta instrução cria um novo índice em uma tabela existente,
conforme a seguir.

TECH IT 95 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Confira alguns exemplos para entender melhor esta instrução. maneira a seguir:

a. Para criar um índice único para o campo nome da tabela CREATE INDEX IdxNome
DEPARTAMENTOS, faça da seguinte maneira: ON DEPARTAMENTOS (Nome ASC)
CREATE UNIQUE INDEX IdxNome WITH IGNORE NULL
ON DEPARTAMENTOS (Nome ASC) A cláusula WITH IGNORE NULL proíbe valores nulos no índice.
A cláusula UNIQUE indica que o índice criado não pode ter valores
d. Para proibir valores duplicados no campo ou nos campos
duplicados. indexados de diferentes registros, use a palavra reservada UNIQUE.
b. Para criar um índice para o campo nome da tabela Além disso, na cláusula WITH opcional, você pode impor regras de
DEPARTAMENTOS, proibindo a entrada de dados nulos, por validação de dados, como:
sua vez, faça da seguinte forma:
• proibindo entradas Null no campo ou campos indexados dos
CREATE INDEX IdxNome
novos registros, utilizando a opção DISALLOW NULL;
ON DEPARTAMENTOS (Nome ASC) • impedindo que registros com valores Null no campo ou campos
WITH DISALLOW NULL indexados sejam incluídos no índice utilizando a opção IGNORE
NULL;
A cláusula WITH DISALLOW NULL proíbe a entrada de dados nulos
• designando o campo ou campos indexados como a chave
no campo nome.
primária utilizando a palavra reservada PRIMARY. Isto significa
c. Para criar um índice para o campo nome da tabela que a chave é exclusiva e, portanto, você pode omitir a palavra
DEPARTAMENTOS que não contenha valores nulos, faça da reservada UNIQUE.

TECH IT 96 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Sintaxe
SAIBA MAIS
Restrição de campo único:
Você também pode utilizar a instrução ALTER TABLE para adicionar um
índice de campo único ou de campos múltiplos a uma tabela e pode CONSTRAINT nome {PRIMARY KEY | UNIQUE | NOT NULL |
utilizar a instrução ALTER TABLE ou a instrução DROP para remover um REFERENCES tabelaexterna
índice criado com ALTER TABLE ou CREATE INDEX.
[(campoexterno1, campoexterno2)]}

Restrição de campos múltiplos:


9.5 CONSTRAINT
CONSTRAINT nome
Uma constraint, ou simplesmente restrição, é semelhante a um
{PRIMARY KEY (primária1[, primária2 [, ...]]) |
índice, embora também possa ser utilizada para estabelecer uma relação
com outra tabela. UNIQUE (exclusiva1[, exclusiva2 [, ...]]) |

Você utiliza a cláusula CONSTRAINT nas instruções ALTER TABLE e NOT NULL (nãonulo1[, nãonulo2 [, ...]]) |
CREATE TABLE para criar ou excluir restrições. Há dois tipos de cláusulas FOREIGN KEY (ref1[, ref2 [, ...]])
CONSTRAINT: um para criar uma restrição em um campo único e outro
REFERENCES tabelaexterna [(campoexterno1 [,
para criar uma restrição em mais de um campo. Confira!
campoexterno2 [, ...]])]}

TECH IT 97 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


A cláusula CONSTRAINT tem estas partes: Você utiliza a sintaxe para uma restrição de campo único na
cláusula de definição de campo de uma instrução ALTER TABLE ou
PARTE DESCRIÇÃO
CREATE TABLE que se segue imediatamente à especificação do tipo de
Nome O nome da restrição a ser criada
dados do campo.
O nome do campo ou campos a ser
primária1,primária2
designado(s) à chave primária. Já para uma restrição de campos múltiplos, você utiliza a palavra
O nome do campo ou campos a reservada CONSTRAINT fora de uma cláusula de definição de campo em
exclusiva1, exclusiva2 ser designado(s) como uma chave
exclusiva. uma instrução ALTER TABLE ou CREATE TABLE.

O nome do campo ou campos que Assim, utilizando CONSTRAINT, você pode designar um campo
nãonulo1, nãonulo2,
estão restritos a valores não NULL
como um dos seguintes tipos de restrições:
O nome do campo ou campos de uma
ref1, ref2 chave externa que fazem referência a • você pode utilizar a palavra reservada UNIQUE para designar um
campos em outra tabela. campo como chave exclusiva. Isto significa que não pode haver
O nome da tabela externa contendo o dois registros em uma tabela que tenha o mesmo valor neste
Tabelaexterna campo ou campos especificados por
campo. Assim, você pode restringir qualquer campo ou lista de
campoexterno.
campos como exclusivo. Contudo, se uma restrição de campos
O nome do campo ou campos na
tabelaexterna especificados por ref1,
múltiplos for designada como uma chave exclusiva, os valores
campoexterno1,campoexterno2 ref2. Você pode omitir esta cláusula combinados de todos os campos no índice devem ser exclusivos,
se o campo referenciado for a chave mesmo que dois ou mais registros tenham o mesmo valor em
primária de tabelaexterna.
apenas um dos campos;

TECH IT 98 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


• você pode utilizar as palavras reservadas PRIMARY KEY para 9.6 RECAPITULANDO
designar um campo ou conjunto de campos em uma tabela
como uma chave primária. Entretanto, todos os valores na chave Nesta aula, você aprendeu a sintaxe dos seguintes comandos em
primária devem ser exclusivos e não nulos e só pode haver uma linguagem SQL: CREATE TABLE, que permite criar uma tabela; ALTER
chave primária para uma tabela;
TABLE, que tem a função de realizar alterações na estrutura da tabela;
• você pode utilizar as palavras reservadas FOREIGN KEY para DROP TABLE, responsável por remover uma tabela ou um índice existente;
designar um campo como uma chave externa. Assim, se a chave CREATE INDEX, cria um novo índice em uma tabela existente; e, por fim,
primária da tabela externa consistir em mais de um campo, você
CONSTRAINT, que permite estabelecer uma relação com outra tabela.
deverá utilizar uma definição de restrição de campos múltiplos,
listando todos os campos referenciais, o nome da tabela externa Desse modo, agora você é capaz de utilizar estes comandos para
e os nomes dos campos referenciados na tabela externa, na criar o seu banco de dados.
mesma ordem em que os campos referenciais são listados. Por
outro lado, se o campo ou os campos referenciados forem a
chave primária da tabela externa, você não precisará especificá-
los –por padrão, o mecanismo de banco de dados se comporta
como se a chave primária da tabela externa fosse os campos
referenciados.

TECH IT 99 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


10 LINGUAGEM SQL - PARTE II

Neste material, você estudará os seguintes comandos da • INSERT INTO


Linguagem SQL: INSERT INTO; DELETE; UPDATE; SELECT INTO; SELECT. • DELETE
Com isso, você aprenderá a criar tabelas e utilizar estes comandos • UPDATE
para inserir, excluir e atualizar dados nas tabelas, além de realizar • SELECT INTO
consultas aos dados contidos nelas. Vamos lá?
• SELECT
Bom estudo!

• Premissa: banco de dados criado no exercício proposto no 10.2 INSERT INTO


capítulo 9.
Esta instrução adiciona um registro ou múltiplos registros a uma
tabela. Isto é chamado de consulta acréscimo. Veja a seguir como realizá-la.
10.1 OBJETIVO
Sintaxe
Na sequência, você vai aprender e implementar os seguintes
Acréscimo de múltiplos registros:
comandos em linguagem SQL:
INSERT INTO destino [IN bancodedadosexterno] [(campo1[, campo2[, ...]])]

TECH IT 101 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


SELECT [origem.]campo1[, campo2[, ...] Os valores a serem inseridos nos campos específicos do novo
registro. Cada valor é inserido no campo que corresponde à
FROM expressãodetabela posição do valor na lista: valor1 é inserido no campo1 do novo
valor1, valor2
registro, valor2 no campo2, e assim por diante. Você deve
Consulta acréscimo de registro único: separar os valores com uma vírgula e colocar os campos de
texto entre aspas (‘ ‘).
INSERT INTO destino [(campo1[, campo2[, ...]])]

VALUES (valor1[, valor2[, ...]) Você pode usar a instrução INSERT INTO para adicionar um único

A instrução INSERT INTO possui as partes a seguir. registro a uma tabela usando a sintaxe da consulta acréscimo de registro
único, como mostrado anteriormente.

PARTE DESCRIÇÃO Nesse caso, o código especifica o nome e o valor de cada campo
O nome da tabela ou consulta à qual acrescentar os do registro. Além disso, você deve especificar cada um dos campos
Destino - Banco de
registros. O caminho até um banco de dados externo. Para do registro ao qual será atribuído um valor, além de informar, é claro,
dados externo
obter uma descrição do caminho, consulte a cláusula IN.
o valor para aquele campo. Quando você não especifica os campos, o
O nome da tabela ou consulta a partir da qual os registros
0 Origem
vão ser copiados. valor padrão, ou Null, é inserido para colunas ausentes. Os registros são
Nomes dos campos aos quais os dados serão acrescentados, adicionados ao fim da tabela.
se seguirem a um argumento destino, ou os nomes dos
Campo 1 e Campo 2
campos a partir dos quais os dados serão obtidos, se Você também pode usar INSERT INTO para acrescentar um conjunto
seguirem a um argumento de origem.
de registros de outra tabela ou consulta utilizando a cláusula SELECT ...
O nome da tabela ou das tabelas das quais os registros são
Expressão de tabela
inseridos. Este argumento pode ser um nome de tabela FROM, como mostrado anteriormente na sintaxe da consulta acréscimo
simples ou um composto resultante de uma operação INNER
JOIN, LEFT JOIN ou RIGHT JOIN, ou uma consulta salva. de múltiplos registros. Nesse caso, a cláusula SELECT especifica os
campos a acrescentar na tabela destino especificada.

TECH IT 102 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


SAIBA MAIS SAIBA MAIS

A tabela origem ou destino pode especificar uma tabela ou uma Use a cláusula IN para acrescentar os registros a uma tabela em outro
consulta. Se for especificada uma consulta, o mecanismo de banco de banco de dados.
dados Microsoft Jet acrescenta registros a todas as tabelas especificadas
E, para criar uma nova tabela, use a instrução SELECT... INTO, em lugar de
pela consulta.
criar uma consulta criar tabela.

Também é importante destacar que a instrução INSERT INTO é


opcional, porém, quando incluída, precede a instrução SELECT. Uma consulta acréscimo copia registros de uma ou mais tabelas
para outra. As tabelas que contêm os registros que você acrescenta não
Assim, se a tabela de destino contiver uma chave primária,
são afetadas pela consulta acréscimo. Portanto, para descobrir quais
certifique-se de acrescentar valores exclusivos não Null ao campo ou
registros serão acrescentados antes de executar a consulta acréscimo,
campos da chave primária; se não o fizer, o mecanismo de banco de
primeiro execute e visualize os resultados de uma consulta seleção que
dados Microsoft Jet não acrescentará os registros.
use os mesmos critérios de seleção.
Se você acrescentar os registros a uma tabela com um campo Desse modo, em vez de acrescentar registros existentes de outra
AutoNumeração e quiser renumerar os registros acrescentados, não tabela, você pode especificar o valor de cada campo em um único registro
inclua esse campo. Inclua o campo AutoNumeração na consulta se novo, usando a cláusula VALUES. Se você omitir a lista de campos, a cláusula
quiser conservar os valores originais do campo. VALUES deverá incluir valores para todos os campos da tabela; caso contrário,
a operação INSERT falhará. Use uma instrução INSERT INTO adicional com
uma cláusula VALUES para cada registro adicional que quiser criar.
A seguir, estudaremos a instrução DELETE. Vamos lá?

TECH IT 103 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


10.3 DELETE Essa instrução, DELETE, é especialmente útil quando você quer
excluir muitos registros.
Esta instrução remove os registros de uma ou mais tabelas
Para excluir uma tabela inteira do banco de dados, você pode usar
relacionadas na cláusula FROM que satisfaçam à cláusula WHERE descrita
o método Execute com uma instrução DROP. No entanto, se você excluir
conforme a seguir.
a tabela, a estrutura será perdida. Em contrapartida, quando você usa
Sintaxe DELETE, somente os dados são excluídos. Assim, a estrutura da tabela
DELETE [tabela.*] FROM tabela WHERE critérios e todas as suas propriedades, como atributos de campo e índices,
permanecem intactos

A instrução DELETE possui as partes a seguir. SAIBA MAIS

PARTE DESCRIÇÃO Você pode usar DELETE para remover registros de tabelas que estão em
um relacionamento “um para muitos” com outras tabelas. As operações
O nome opcional da tabela da qual são excluídos
tabela.* de exclusão em cascata fazem com que os registros em tabelas que estão
registros.
no lado “muitos” do relacionamento sejam excluídos quando o registro
tabela O nome da tabela da qual são excluídos registros. correspondente no lado “um” do relacionamento é excluído na consulta.
Uma expressão que determina os registros a serem Por exemplo, nos relacionamentos entre as tabelas Clientes e Pedidos, a
Critérios
excluídos. tabela Clientes está no lado “um” e a tabela Pedidos está no lado “muitos”.
Portanto, a exclusão de um registro de Clientes resulta na exclusão dos
registros Pedidos correspondentes se a opção de exclusão em cascata
estiver especificada.

TECH IT 104 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


É importante destacar que o comando DELETE exclui registros 10.4 UPDATE
inteiros, não somente os dados em campos específicos. Por isso, se
você quiser excluir valores de um campo específico, crie uma consulta
atualização que altere os valores para Null. A instrução UPDATE altera valores de campos em uma tabela
especificada, com base em critérios especificados, conforme a seguir.
IMPORTANTE

Depois de remover os registros utilizando uma consulta exclusão, você Sintaxe


não poderá desfazer a operação. Se quiser saber quais registros foram
excluídos, examine antes os resultados de uma consulta seleção que use UPDATE tabela SET novovalor WHERE critérios
os mesmos critérios e, depois, execute a consulta exclusão.

A instrução UPDATE possui as partes a seguir.


O próximo item abordará a instrução UPDATE. Confira!
PARTE DESCRIÇÃO
tabela O nome da tabela contendo os dados que você quer
modificar.
novovalor Uma expressão que determina o valor a ser inserido
em um campo específico dos registros atualizados.
critérios Uma expressão que determina quais registros serão
atualizados. Apenas os registros que satisfazem à
expressão são atualizados.

TECH IT 105 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Essa instrução é especialmente útil quando você quer alterar vários 10.5 SELECT
registros ou quando os registros que você quer alterar estão em várias tabelas.
A instrução SELECT retorna informações do banco de dados como
Desse modo, você pode alterar vários campos ao mesmo tempo. O
um conjunto de registros.
exemplo a seguir aumenta os valores de Quantia do Pedido em 10% e os
valores de Frete em 3% para transportadores no Reino Unido (UK), observe:

UPDATE Pedidos Sintaxe

SET QuantiaDoPedido = QuantiaDoPedido * 1.1, Frete = Frete * 1.03 SELECT [atributo] { * | tabela.* | [tabela.]campo1 [AS alias1] [,
[tabela.]campo2 [AS alias2] [, ...]]}
WHERE PaísDeDestino = ‘UK’;
FROM expressãodetabela [, ...] [IN bancodedadosexterno]
IMPORTANTE [WHERE... ]

[GROUP BY... ]
UPDATE não gera um conjunto de resultados. Além disso, depois de
atualizar os registros usando uma consulta de atualização, você não [HAVING... ]
poderá desfazer a operação. Se quiser saber quais os registros que foram
atualizados, examine antes os resultados de uma consulta seleção que [ORDER BY... ]
usem os mesmos critérios e, depois, execute a consulta de atualização.
[WITH OWNERACCESS OPTION]
Além disso, mantenha sempre cópias de backup dos dados. Se você
atualizar os registros errados, poderá recuperá-los a partir das cópias.

Em seguida, veremos a instrução SELECT.

TECH IT 106 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


A instrução SELECT possui as partes a seguir. Para executar esta operação, o mecanismo de banco de dados
Microsoft Jet procura a tabela ou tabelas especificadas, extrai as colunas
PARTE DESCRIÇÃO
escolhidas, seleciona as linhas que atendem aos critérios e classifica ou
atributo Um dos atributos a seguir: ALL, DISTINCT,
DISTINCTROW ou TOP. Você utiliza o atributo para agrupa as linhas resultantes na ordem especificada.
restringir o número de registros retornados. Se
nenhum for especificado, o padrão será ALL.
É importante destacar que a instrução SELECT não altera os dados
no banco de dados, sendo geralmente a primeira palavra em uma
* Especifica que todos os campos da tabela ou
tabelas especificadas estão selecionados. instrução SQL.
tabela O nome da tabela contendo os campos a partir
dos quais os registros são selecionados. IMPORTANTE
campo 1, campo 2 Os nomes dos campos contendo os dados que
você deseja recuperar. Se você incluir mais de um
A maioria das instruções SQL são instruções SELECT ou SELECT...INTO.
campo, eles serão recuperados na ordem listada.
alias1, alias2 Os nomes a serem utilizados como cabeçalhos de
coluna em lugar dos nomes originais de coluna
em tabela. A sintaxe mínima para uma instrução SELECT é: SELECT campos
expressãodetabela O nome da tabela ou tabelas contendo os dados FROM tabela.
que você deseja recuperar.
Você pode utilizar um asterisco (*) para selecionar todos os campos
bancodedadosexterno nome do banco de dados que contém as tabelas
em expressãodetabela se elas não estiverem no em uma tabela. O exemplo a seguir seleciona todos os campos na tabela
banco de dados atual. Funcionários.

SELECT * FROM Funcionários

TECH IT 107 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Se um nome de campo for incluído em mais de uma tabela na O exemplo a seguir utiliza o título ContagemDePessoas para
cláusula FROM, coloque antes dele o nome da tabela e o operador “.” nomear o objeto Field retornado no objeto Recordset resultante.
(ponto). No exemplo a seguir, o campo Departamento está tanto na
SELECT COUNT(CódigoDoFuncionário)
tabela Funcionários quanto na tabela Supervisores. A instrução SQL
AS ContagemDePessoas FROM Funcionários;
seleciona os departamentos a partir da tabela Funcionários e os nomes
de supervisores a partir da tabela Supervisores. Você pode utilizar as outras cláusulas em uma instrução SELECT
para ampliar a restrição e organizar os dados retornados.
SELECT Funcionários.Departamento,Supervisores.SupvNome
Aprenderemos a seguir sobre a instrução SELECT INTO. Vamos lá?
FROM Funcionários INNER JOIN Supervisores

WHERE Funcionários.Departamento =Supervisores.Departamento;


10.6 SELECT INTO

IMPORTANTE
A instrução SELECT INTO cria uma tabela.
Sempre que utilizar funções agregadas ou consultas que retornam nomes
Sintaxe
de objetos Field ambíguos ou duplicados, você deve utilizar a cláusula AS
para fornecer um nome alternativo para o objeto Field. SELECT campo1[, campo2[, ...]] INTO novatabela [IN
bancodedadosexterno] FROM origem

TECH IT 108 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


A instrução SELECT...INTO possui as partes a seguir: Além disso, convém definir uma chave primária para a nova tabela, pois
os campos na nova tabela herdam o tipo de dados e tamanho de cada
PARTE DESCRIÇÃO campo das tabelas base da consulta, mas nenhuma outra propriedade
do campo ou da tabela é transferida.
Os nomes dos campos a serem copiados na nova
campo1, campo2
tabela.
O nome da tabela a ser criada. Deve ser compatível SAIBA MAIS
com as convenções de nomenclatura padrão.
novatabela Para adicionar dados a uma tabela existente, use a instrução INSERT INTO
Se novatabela for igual ao nome de uma tabela
existente, ocorrerá um erro interceptável. em vez de criar uma consulta acréscimo.
O caminho para um banco de dados externo. E para descobrir quais registros serão selecionados antes de executar
bancodedadosexterno Para obter uma descrição do caminho, consulte a a consulta criar tabela, examine antes os resultados de uma instrução
cláusula IN. SELECT que use os mesmos critérios de seleção.
O nome da tabela existente a partir da qual os
origem registros são selecionados. Podem ser tabelas
simples ou múltiplas ou uma consulta.
10.7 RECAPITULANDO
Você pode utilizar consultas “criar tabela” para arquivar registros, Nesta aula você aprendeu a sintaxe de alguns comandos em linguagem
fazer cópias de backup das tabelas ou fazer cópias para exportar para SQL: INSERT INTO, para inclusão de dados; DELETE, para exclusão de
outro banco de dados, ou ainda para usar como base para relatórios que dados; UPDATE, para atualização dos dados; SELECT, para realizar
exibem dados sobre determinado período de tempo. Por exemplo, você consultas de dados; e, por fim, SELECT INTO, para criação de uma tabela.
poderia produzir um relatório de vendas mensais por região, executando Agora você poderá utilizar esses comandos e executar as quatro
a mesma consulta criar tabela com todos os meses. operações básicas oferecidas por um banco de dados.

TECH IT 109 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


11 LINGUAGEM SQL - PARTE III

Neste material, você estudará os atributos e as cláusulas para o comando 11.1 OBJETIVO
SELECT da linguagem SQL. Como atributos, temos: ALL, DISTINCT,
DISTINCTROW e TOP. E as cláusulas são: FROM, GROUP BY, HAVING, IN, Na sequência, você vai aprender e implementar o comando SELECT
ORDER BY, WHERE, WITH OWNERACCESS OPTION. com os seguintes atributos e cláusulas:

Você aprenderá que os atributos são responsáveis por especificar os • Atributos ALL, DISTINCT, DISTINCTROW e TOP
dados a serem selecionados em uma consulta, e as cláusulas, por sua • Cláusula FROM
vez, podem agrupar, ordenar e filtrar dados em uma consulta. Vamos lá?
• Cláusula GROUP BY
Bom estudo! • Cláusula HAVING
Premissa: banco de dados criado no exercício do Capítulo 9. • Cláusula IN
• Cláusula ORDER BY
• Cláusula WHERE
• Declaração WITH OWNERACCESS OPTION

TECH IT 111 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


11.2 ATRIBUTOS ALL, DISTINCT, DISTINCTROW E TOP Sintaxe

SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]]

Esta instrução especifica registros selecionados com consultas FROM tabela


SQL, sendo descrita da seguinte maneira: Uma instrução SELECT contendo estes atributos possui as partes a seguir:

PARTE DESCRIÇÃO
ALL Adotada quando você não inclui um dos atributos. O mecanismo de banco de dados Microsoft Jet seleciona todos os registros que atendam às condições na
instrução SQL. Os dois exemplos a seguir são equivalentes e retornam todos os registros da tabela Funcionários:
SELECT ALL *
FROM Funcionários
ORDER BY CódigoDoFuncionário;
SELECT *
FROM Funcionários
ORDER BY CódigoDoFuncionário;
DISTINCT Omite registros que contêm dados duplicados nos campos selecionados. Para serem incluídos nos resultados da consulta, os valores de cada campo listado na
instrução SELECT devem ser exclusivos. Por exemplo, vários funcionários listados em uma tabela Funcionários podem ter o mesmo sobrenome.
Se dois registros contiverem Smith no campo Sobrenome, a instrução SQL a seguir retornará somente um deles:
SELECT DISTINCT Sobrenome
FROM Funcionários;
Se você omitir DISTINCT, esta consulta retornará os dois registros Smith. Se a cláusula SELECT contiver mais de um campo, a combinação de valores de todos os
campos deverão ser exclusivos para que um dado registro seja incluído nos resultados.

TECH IT 112 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


DISTINCTROW Omite dados baseado em registros duplicados completos, e não somente campos duplicados. Por exemplo, você
poderia criar uma consulta que associasse as tabelas Cliente e Pedidos no campo CódigoDoCliente. A tabela Clientes não contém campos CódigoDoCliente
duplicados, mas a tabela Pedidos contém, pois cada cliente pode fazer vários pedidos. A instrução SQL a seguir mostra como você pode utilizar DISTINCTROW
para produzir uma lista de empresas que têm pelo menos um pedido, mas sem exibir detalhes sobre esses pedidos:
SELECT DISTINCTROW NomeDaEmpresa
FROM Clientes INNER JOIN Pedidos
ON Clientes.CódigoDoCliente = Pedidos.CódigoDoCliente
ORDER BY NomeDaEmpresa;
Se você omitir DISTINCTROW, esta consulta produzirá várias linhas para cada empresa que tenha mais de um pedido.
Assim, DISTINCTROW produz um efeito somente quando você seleciona campos de algumas, mas não todas as tabelas utilizadas na consulta. Portanto,
DISTINCTROW será ignorado se a consulta incluir somente uma tabela ou se você obtiver saída de campos de todas as tabelas.
TOP n Retorna certo número de registros que caem no topo ou na base de um intervalo especificado por uma cláusula ORDER BY. Suponha que você deseje obter os
[PERCENT] nomes dos 25 melhores estudantes da classe de 1994:
SELECT TOP 25 Nome, Sobrenome FROM Estudantes
WHERE AnoDeGraduação = 1994 ORDER BY MédiaDeNotas DESC;
Se você não incluir a cláusula ORDER BY, a consulta retornará um conjunto arbitrário de 25 registros da tabela Estudantes que satisfaçam a cláusula WHERE. O atributo
TOP, por outro lado, não escolhe entre valores iguais. No exemplo anterior, se a 25ª e a 26ª melhores médias de notas forem iguais, a consulta retornará 26 registros.

SAIBA MAIS

Você também pode utilizar a palavra reservada PERCENT para retornar certa porcentagem de
registros que se situem no topo ou na base de um intervalo especificado pela cláusula ORDER BY.

TECH IT 113 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Suponha que, em vez dos 25 melhores estudantes, você queira os Sintaxe
10% inferiores da classe:
SELECT listadecampos
SELECT TOP 10 PERCENT Nome, Sobrenome
FROM expressãodetabela [IN bancodedadosexterno]
FROM Estudantes

WHERE AnoDeGraduação = 1994 Uma instrução SELECT contendo uma cláusula FROM possui as
partes a seguir:
ORDER BY MédiaDeNotas ASC;

O atributo ASC especifica um retorno de valores inferiores. O valor PARTE DESCRIÇÃO


que se segue a TOP deve ser um Integer sem sinal. TOP não afeta o fato listadecampos O nome do campo ou campos a serem
de a consulta ser ou não atualizável. recuperados juntamente com quaisquer
aliases de nome de campo, funções agregadas
tabela= O nome da tabela a partir da qual os registros são SQL, atributos de seleção (ALL, DISTINCT,
DISTINCTROW ou TOP) ou outras opções da
recuperados. instrução SELECT.
Agora que você conhece alguns dos atributos, estudaremos as expressãodetabela Uma expressão que identifica uma ou
mais tabelas a partir das quais os dados
cláusulas. Começaremos pela FROM. Vamos lá? são recuperados. A expressão pode ser
um simples nome de tabela, um nome de
consulta salvo ou uma composição resultante
11.3 CLÁUSULA FROM de um INNER JOIN, LEFT JOIN ou RIGHT JOIN.
bancodedadosexterno O caminho completo de um banco de dados
Esta instrução especifica as tabelas ou consultas que contêm os externo contendo todas as tabelas em
campos listados na instrução SELECT conforme a seguir. expressãodetabela.

TECH IT 114 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


11.4 CLÁUSULA GROUP BY
SAIBA MAIS
Esta instrução combina registros com valores idênticos na lista de
FROM é exigido e segue-se a qualquer instrução SELECT. Assim, a ordem
dos nomes de tabela em expressãodetabela não é importante.
campos especificada em um único registro. Assim, um valor de resumo
é criado para cada registro se você incluir uma função agregada SQL,
como Sum ou Count, na instrução SELECT.

Portanto, para um melhor desempenho e facilidade de utilização, Sintaxe


convém utilizar uma tabela vinculada em vez de uma cláusula IN para
SELECT listadecampos
recuperar dados de um banco de dados externo.
FROM tabela
O exemplo a seguir mostra como você pode recuperar os dados da
tabela Funcionários. WHERE critérios

SELECT Sobrenome, Nome [GROUP BY listadecamposdegrupo]

FROM Funcionários;

A seguir, estudaremos a instrução GROUP BY. Confira!

TECH IT 115 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Uma instrução SELECT contendo uma cláusula GROUP BY possui
as partes a seguir: SAIBA MAIS

PARTE DESCRIÇÃO
A instrução GROUP BY é opcional.
listadecampos O nome do campo ou dos campos a serem recuperados
com qualquer alias de nome de campo, funções agregadas
SQL, atributos de seleção (ALL, DISTINCT, DISTINCTROW ou
TOP) ou outras opções da instrução SELECT.
tabela O nome da tabela a partir da qual os registros são Os valores de resumo são omitidos se não houver uma função
recuperados. Para obter maiores informações, consulte a agregada SQL na instrução SELECT.
cláusula FROM.
critérios Critérios de seleção. Se a instrução incluir uma cláusula Valores Null nos campos GROUP BY são agrupados e não são
WHERE, o mecanismo de banco de dados Microsoft Jet omitidos. Contudo, valores Null não são avaliados em nenhuma função
agrupará valores depois de aplicar as condições WHERE aos
registros. SQL agregada.
listadecamposdegrupo Os nomes de até 10 campos utilizados para agrupar Utilize a cláusula WHERE para excluir linhas que você não deseja
os registros. A ordem dos nomes de campo em
listadecamposdegrupo determina os níveis de que permaneçam agrupadas e utilize a cláusula HAVING para filtrar os
agrupamento do nível mais alto ao mais baixo do registros depois de eles terem sido agrupados.–
agrupamento.
Todos os campos na lista de campos SELECT devem estar incluídos
na cláusula GROUP BY ou serem incluídos como argumentos em uma
função SQL agregada.

Em seguida, veremos a cláusula HAVING.

TECH IT 116 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


11.5 CLÁUSULA HAVING Sintaxe

SELECT listadecampos
Esta instrução especifica quais registros agrupados são exibidos
na instrução SELECT com uma cláusula GROUP BY. Depois de GROUP FROM tabela
BY combinar os registros, HAVING exibirá qualquer registro agrupado WHERE critériosdeseleção
pela cláusula GROUP BY que satisfaça às condições da cláusula HAVING.
GROUP BY listadecamposdegrupo
Confira!
[HAVING critériosdegrupo]

Uma instrução SELECT contendo uma cláusula GROUP BY possui as partes a seguir:

PARTE DESCRIÇÃO
listadecampos O nome do campo ou dos campos a serem recuperados com qualquer alias de nome de campo, funções agregadas
SQL, atributos de seleção (ALL, DISTINCT, DISTINCTROW ou TOP) ou outras opções da instrução SELECT.
tabela O nome da tabela a partir da qual os registros são recuperados. Para obter maiores informações, consulte a cláusula
FROM.
critériosdeseleção Critérios de seleção. Se a instrução incluir uma cláusula WHERE, o mecanismo de banco de dados Microsoft Jet agrupará
valores depois de aplicar as condições WHERE aos registros.

listadecamposdegrupo Os nomes de até 10 campos utilizados para agrupar registros. A ordem dos nomes de campo em
listadecamposdegrupo determina os níveis de agrupamento do nível mais alto ao mais baixo de agrupamento.
critériosdegrupo Uma expressão que determina quais registros agrupados exibir.

TECH IT 117 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


É importante destacar que a instrução HAVING é opcional. Além disso, 11.6 CLÁUSULA IN
é semelhante a WHERE, que determina quais registros são selecionados.
Mas, ao invés de determinar os selecionados, depois de os registros serem Esta instrução identifica tabelas em qualquer banco de dados
externo ao qual o mecanismo de banco de dados Microsoft Jet pode se
agrupados com o GROUP BY, determina quais serão exibidos.
conectar, como um banco de dados dBASE ou Paradox ou um banco de
SELECT CódigoDaCategoria, Sum(UnidadesNoEstoque) dados Microsoft Jet externo. Veja a forma como é descrita.
FROM Produtos
GROUP BY CódigoDaCategoria Sintaxe
HAVING Sum(UnidadesNoEstoque) > 100 And Like “BOS*”; Para identificar uma tabela de destino:
[SELECT | INSERT] INTO destino IN
IMPORTANTE
{caminho | [“caminho”“tipo”] | [“” [tipo; DATABASE = caminho]]}
Uma cláusula HAVING pode conter até 40 expressões
vinculadas por operadores lógicos, como And e Or.
Para identificar uma tabela de origem:
FROM expressãodetabela IN
O próximo item abordará a cláusula IN. Vamos lá? {caminho | [“caminho”“tipo”] | [“” [tipo; DATABASE = caminho]]}

TECH IT 118 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Uma instrução SELECT contendo uma cláusula IN possui as partes caminho especifica o diretório contendo os arquivos .dbf ou .db. O nome
a seguir: do arquivo de tabela deriva do argumento destino ou expressãodetabela.

PARTE DESCRIÇÃO Para especificar um banco de dados não Microsoft Jet, anexe
destino O nome da tabela externa à qual os dados são um ponto e vírgula (;) ao nome e coloque-o entre aspas simples (‘ ‘) ou
inseridos.
duplas (“ “). Por exemplo, tanto ‘dBASE IV;’ quanto “dBASE IV;” são aceitos.
expressãodetabela O nome da tabela ou tabelas a partir das quais os
dados são recuperados. Este argumento pode ser um Além disso, você também pode utilizar a palavra reservada
único nome de tabela, uma consulta salva ou uma
DATABASE para especificar o banco de dados externo. Por exemplo, as
composição resultante de um INNER JOIN, LEFT JOIN
ou RIGHT JOIN. linhas a seguir especificam a mesma tabela.
caminho O caminho completo para o diretório ou arquivo
contendo tabela.
tipo O nome do tipo de banco de dados utilizado para ... FROM Table IN “” [dBASE IV; DATABASE=C:\DBASE\DATA\SALES;];
criar tabela se um banco de dados não for o Microsoft
Jet (por exemplo, dBASE III, dBASE IV, Paradox 3.x ou ... FROM Table IN “C:\DBASE\DATA\SALES”“dBASE IV;”
Paradox 4.x).

Você pode utilizar IN para se conectar a um único banco de dados Para um melhor desempenho e facilidade de uso, utilize uma
externo de cada vez. tabela vinculada em lugar de IN.
Em alguns casos, o argumento caminho refere-se ao diretório que
contém os arquivos do banco de dados. Por exemplo, ao trabalhar com
tabelas de banco de dados dBASE, FoxPro ou Paradox, o argumento

TECH IT 119 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


SAIBA MAIS Uma instrução SELECT contendo uma cláusula ORDER BY possui
as partes a seguir:
Você também pode utilizar a palavra reservada IN como um
operador de comparação em uma expressão. Para obter maiores PARTE DESCRIÇÃO
informações, consulte o operador In. listadecampos O nome do campo ou campos a serem recuperados com
qualquer alias de nome de campo, funções SQL agregadas,
atributos de seleção (ALL, DISTINCT, DISTINCTROW ou TOP)
A próxima cláusula a ser estudada é chamada ORDER BY. Confira! ou outras opções da instrução SELECT.

tabela O nome da tabela a partir da qual os registros são


11.7 CLÁUSULA ORDER BY recuperados. Para obter maiores informações, consulte
a cláusula FROM.
Esta instrução classifica os registros resultantes de uma consulta critériosdeseleção Critérios de seleção. Se a instrução incluir uma cláusula
WHERE, o mecanismo de banco de dados Microsoft
em um campo ou campos especificados, em ordem crescente ou
Jet ordenará os valores depois de aplicar as condições
decrescente da seguinte maneira: WHERE aos registros.
campo1, campo2 Os nomes dos campos nos quais os registros devem
ser classificados.
Sintaxe
SELECT listadecampos SAIBA MAIS
FROM tabela
ORDER BY é opcional. Entretanto, se desejar que os dados sejam
WHERE critériosdeseleção exibidos em ordem classificada, então você deverá utilizá-la.

[ORDER BY campo1 [ASC | DESC ][, campo2 [ASC | DESC ]][, ...]]]

TECH IT 120 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


É importante ressaltar que a ordem de classificação padrão é Outro ponto importante a ser destacado é que se você especificar
ascendente (de A a Z, de 0 a 9). Os dois exemplos a seguir classificam os um campo contendo dados de Memorando ou Objeto OLE na cláusula
nomes dos funcionários pela ordem do sobrenome. Observe: ORDER BY, um erro será gerado. O mecanismo de banco de dados
SELECT Sobrenome, Nome Microsoft Jet não classifica campos desses tipos.

FROM Funcionários Além disso, ORDER BY é geralmente o último item em uma


instrução SQL, sendo possível incluir campos adicionais em sua cláusula.
ORDER BY Sobrenome;

SELECT Sobrenome, Nome


SAIBA MAIS
FROM Funcionários
Os registros são classificados pelo primeiro campo listado após ORDER
ORDER BY Sobrenome ASC;
BY. Os registros que têm valores iguais naquele campo serão então
classificados pelo valor no segundo campo listado e assim por diante.
Para classificar em ordem decrescente (de Z a A, de 9 a 0), adicione
a palavra reservada DESC ao final de cada campo que você queira
Em seguida, veremos a última cláusula deste tema, que é chamada
classificar em ordem decrescente. O exemplo a seguir seleciona os
WHERE. Vamos lá?
salários e os classifica em ordem decrescente.

SELECT Sobrenome, Salário

FROM Funcionários

ORDER BY Salário DESC, Sobrenome;

TECH IT 121 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


11.8 CLÁUSULA WHERE O mecanismo de banco de dados Microsoft Jet seleciona os
registros que satisfazem às condições listadas na cláusula WHERE. Se
Esta instrução especifica quais registros das tabelas listadas na você não especificar essa cláusula, a consulta retornará todas as linhas
cláusula FROM são afetados por uma instrução SELECT, UPDATE ou da tabela. Por outro lado, se você especificar mais de uma tabela na
DELETE, conforme a seguir. consulta e não tiver incluído uma cláusula WHERE ou uma cláusula JOIN,
Sintaxe a consulta irá gerar um produto cartesiano das tabelas.

SELECT listadecampos Assim como as outras instruções, WHERE é opcional, mas quando
incluída se segue ao FROM. Por exemplo, você pode selecionar todos os
FROM expressãodetabela
funcionários no departamento de vendas (WHERE Depto =‘Vendas’) ou todos
WHERE critérios os clientes com idades entre 18 e 30 anos (WHERE Idade Between 18 And 30).

Uma instrução SELECT contendo uma cláusula WHERE possui as IMPORTANTE


partes a seguir:
Se você não utilizar uma cláusula JOIN para executar operações de
PARTE DESCRIÇÃO associação SQL em várias tabelas, o objeto Recordset resultante não será
listadecampos O nome do campo ou campos a serem recuperados com quaisquer atualizável.
aliases de nome de campo, atributos de seleção (ALL, DISTINCT,
DISTINCTROW ou TOP) ou outras opções da instrução SELECT.
Destaca-se aqui que WHERE é semelhante a HAVING, determinando
expressãodetabela O nome da tabela ou tabelas a partir das quais os dados são
recuperados.
quais registros são selecionados. Da mesma forma, depois de os registros
critérios Uma expressão que os registros devem atender para serem serem agrupados com GROUP BY, HAVING determina quais registros
incluídos nos resultados da consulta. serão exibidos.

TECH IT 122 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


SELECT [Restaurante Favorito do Cliente]
SAIBA MAIS

Utilize a cláusula WHERE para eliminar os registros que você não


deseja que sejam agrupados por uma cláusula GROUP BY. Quando você especifica o argumento critérios, os literais de data
deverão estar no formato dos EUA, mesmo que você não esteja utilizando
a versão norte-americana do mecanismo de banco de dados Microsoft
Utilize várias expressões para determinar quais registros a instrução Jet. Por exemplo, 10 de maio de 1996 é escrito 10/5/96 no Brasil e 5/10/96
SQL retorna. Por exemplo, a instrução SQL a seguir seleciona todos os nos Estados Unidos. Por isso, certifique-se de colocar os literais de data
funcionários cujos salários sejam maiores que R$21.000. entre sinais de número (#), como mostrado nos exemplos a seguir.
SELECT Sobrenome, Salário Portanto, para encontrar registros datados de 10 de maio de
FROM Funcionários 1996 em um banco de dados dos Estados Unidos, você deve utilizar a
instrução SQL a seguir:
WHERE Salário > 21000;
SELECT *

Uma cláusula WHERE pode conter até 40 expressões vinculadas FROM Pedidos
por operadores lógicos, como And e Or. WHERE DataDeEnvio = #5/10/96#;
Por isso, ao digitar um nome de campo que contém um espaço ou
uma pontuação, coloque o nome entre colchetes ([ ]). Por exemplo, uma
tabela de informações sobre o cliente poderia incluir informações sobre
clientes específicos:

TECH IT 123 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Além disso, você também pode utilizar a função DateValue, que Se a coluna referenciada na sequência de critérios for do tipo GUID,
é sensível às configurações internacionais estabelecidas pelo Microsoft a expressão de critérios utilizará uma sintaxe ligeiramente diferente:
Windows. Por exemplo, utilize este código para os Estados Unidos:
WHERE ReplicaID = {GUID {12345678-90AB-CDEF-1234-567890ABCDEF}}
SELECT *
Não deixe de incluir as chaves e os hifens embutidos, como
FROM Pedidos mostrado.

WHERE DataDeEnvio = DateValue(‘5/10/96’); O próximo item abordará a declaração WITH OWNERACCESS


OPTION. Vamos conferir?

E utilize este código para o Brasil:

11.9 DECLARAÇÃO WITH OWNERACCESS OPTION


SELECT *

FROM Pedidos Em um ambiente multiusuários com um grupo de trabalho seguro,


use esta declaração com uma consulta para conceder ao usuário que
WHERE DataDeEnvio = DateValue(‘10/5/96’);
executa a consulta as mesmas permissões que as do proprietário da
consulta. Observe:

Sintaxe

Instrução sql WITH OWNERACCESS OPTION

TECH IT 124 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


IMPORTANTE Entretanto, se você deseja impor configurações de segurança de grupo
de trabalho e permissões de usuários, não inclua a declaração WITH
OWNERACCESS OPTION.
A declaração WITH OWNERACCESS OPTION é opcional..

SAIBA MAIS

Para compreender melhor esta declaração, confira o exemplo a


Essa opção requer que você tenha acesso ao arquivo System.mdw
seguir que permite ao usuário visualizar informações sobre salários associado ao banco de dados, sendo realmente útil somente nas
(mesmo que, de outra forma, o usuário não tenha permissão para implementações de multiusuários com segurança.
visualizar a tabela FolhaDePagamento), desde que o proprietário da
consulta tenha essa permissão:

SELECT Sobrenome, Nome, Salário


11.10 RECAPITULANDO
FROM Funcionários Neste material, você aprendeu os seguintes atributos e as cláusulas
para o comando SELECT da linguagem SQL: atributos ALL, DISTINCT,
ORDER BY Sobrenome
DISTINCTROW e TOP; cláusulas FROM, GROUP BY, HAVING, IN, ORDER BY,
WITH OWNERACCESS OPTION; WHERE, WITH OWNERACCESS OPTION.
Se de alguma outra forma o usuário for impedido de criar ou adicionar a Agora você é capaz de aprimorar seus comandos SELECT através de
uma tabela, você pode usar WITH OWNERACCESS OPTION para permitir seus principais atributos. Além disso, você poderá criar consultas com
que ele execute uma consulta criar tabela ou consulta acréscimo. agrupamentos (GROUP BY, HAVING), ordenar seus resultados (ORDER
BY) e filtrá-los através da cláusula WHERE.

TECH IT 125 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


12 LINGUAGEM SQL - PARTE IV

A Linguagem SQL permite que você realize alguns cálculos 12.1 OBJETIVO
simples dentro das declarações SELECT. Neste material, você aprenderá
os comandos conhecidos como funções agregadas SQL, que são: Avg, Na sequência, você vai aprender e implementar os seguintes
Count e Sum. comandos em linguagem SQL:

Além disso, você estudará as operações INNER JOIN, LEFT JOIN e • funções agregadas SQL: Avg, Count e Sum;
RIGHT JOIN e UNION, que permitem realizar a união dos valores de duas • operação INNER JOIN;
tabelas em um único resultado. Vamos lá?
• operações LEFT JOIN e RIGHT JOIN;
Bom estudo! • operação UNION.
• Premissa: banco de dados criado no exercício do capitulo 9.

TECH IT 127 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


12.2 FUNÇÕES AGREGADAS SQL uma constante ou uma função (que pode ser intrínseca ou definida pelo
usuário, mas nenhuma das outras funções agregadas SQL).
Com os SQL funções agregadas, você pode determinar várias
A média calculada por Avg é a média aritmética (a soma dos
estatísticas em conjuntos de valores, utilizando-as em uma consulta e
valores dividida pelo número de valores), não incluindo nenhum campo
em expressões agregadas na propriedade SQL de um objeto QueryDef
Null no cálculo.
ou ao criar um objeto Recordset baseado em uma consulta SQL.

As funções agregadas são divididas em: Avg, Count e Sum. A seguir, SAIBA MAIS
iremos estudá-las com maior aprofundamento. Confira!
Você pode utilizar Avg em uma expressão de consulta e na propriedade
SQL de um objeto QueryDef ou ao criar um objeto Recordset baseado
em uma consulta SQL.
12.2.1 Função Avg
Essa função calcula a média aritmética de um conjunto de valores
A seguir, conheceremos a função Count. Acompanhe!
contido em um campo especificado em uma consulta, conforme a
sintaxe a seguir:

Avg(expr)

O espaço reservado expr representa uma expressão de sequência


que identifica o campo que contém os dados numéricos dos quais
você quer tirar uma média ou uma expressão que realiza um cálculo.
Os operandos em expr podem incluir o nome de um campo de tabela,

TECH IT 128 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


12.2.2 Função Count É importante destacar que a função Count não conta registros que
tenham campos Null, exceto quando expr for o caractere curinga asterisco
Essa função calcula o número de registros retornado por uma (*). Nesse caso, Count calculará o número total de registro, inclusive
consulta de acordo com a sintaxe: aqueles que contêm campos Null. Count(*) é consideravelmente mais
Count(expr) rápido que Count([Nome da Coluna]).

O espaço reservado expr representa uma expressão de sequência IMPORTANTE


de caracteres que identifica o campo que contém os dados que você Não coloque o asterisco entre aspas (‘ ‘).
quer contar ou uma expressão que realiza um cálculo. Os operandos
em expr podem incluir o nome de um campo de tabela ou função (que
O exemplo a seguir calcula o número de registros na tabela Pedidos.
pode ser intrínseca ou definida pelo usuário, mas nenhuma outra função
agregada SQL). Você pode contar qualquer tipo de dado, inclusive texto. SELECT Count(*) AS TotalDePedidos

Essa função pode ser utilizada para contar o número de registros FROM Pedidos;
em uma consulta base. Por exemplo, para contar o número de pedidos Por outro lado, se expr identificar vários campos, a função Count
enviados a determinado país. Contudo, embora expr possa realizar um contará um registro somente se um dos campos não for Null. Se todos os
cálculo em um campo, Count simplesmente computa o número de campos especificados forem Null, o registro não será contado.
registros, independentemente dos valores armazenados nos registros.
IMPORTANTE

Separe os nomes de campo com um “e comercial” (&).

TECH IT 129 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


O exemplo a seguir mostra como você poderia limitar a contagem que identifica o campo que contém os dados numéricos que você quer
aos registros nos quais DataDeEnvio ou Frete não fosse Null. adicionar ou uma expressão que realiza um cálculo. Os operandos em
expr podem incluir o nome de um campo de tabela, uma constante
SELECT Count(‘DataDeEnvio & Frete’) AS [Not Null]
ou uma função (que pode ser intrínseca ou definida pelo usuário, mas
FROM Pedidos;
nenhuma das outras funções agregadas SQL).

A função Sum totaliza os valores em um campo. Por exemplo,


SAIBA MAIS
você poderia utilizar a função Sum para determinar o custo total dos
Você pode utilizar Count em uma expressão de consulta, na encargos de frete.
propriedade SQL de um objeto QueryDef ou durante a criação de um
Entretanto, ignora os registros que contenham campos Null. O
objeto Recordset baseado em uma consulta SQL.
exemplo a seguir mostra como você pode calcular a soma dos produtos
dos campos PreçoUnitário e Quantidade.
Em seguida, estudaremos a função Sum. Vamos lá?
SELECT Sum(PreçoUnitário * Quantidade)AS [Receita Total]

FROM [Detalhes do Pedido];


12.2.3 Função Sum
SAIBA MAIS
Essa função retorna a soma de um conjunto de valores contido em
um campo especificado em uma consulta, conforme a sintaxe a seguir. Assim como na função Count, você pode utilizar a função Sum
em uma expressão de consulta, na propriedade SQL de um objeto
Sum(expr) QueryDef ou durante a criação de um objeto Recordset, com base em
uma consulta SQL.
O espaço reservado expr representa uma expressão de sequência

TECH IT 130 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Agora que você conhece as funções agregadas, estudaremos a Você pode usar uma operação INNER JOIN em qualquer cláusula
operação INNER JOIN. Vamos lá? FROM, que é o tipo mais comum de associação. As associações internas
combinam registros de duas tabelas sempre que houver valores
correspondentes em um campo comum a ambas.
12.3 OPERAÇÃO INNER JOIN
Essa operação também pode ser utilizada com as tabelas
Esta operação combina registros de duas tabelas sempre que houver Departamentos e Funcionários para selecionar todos os funcionários
valores correspondentes em um campo comum conforme a seguir: em cada departamento. Em contrapartida, para selecionar todos
Sintaxe os departamentos (mesmo que alguns não tenham funcionários
designados para eles) ou todos os funcionários (mesmo que alguns não
FROM tabela1 INNER JOIN tabela2 ON tabela1.campo1 opercomp
sejam designados a um departamento), você pode usar uma operação
tabela2.campo2
LEFT JOIN ou RIGHT JOIN para criar uma associação externa.
A operação INNER JOIN possui as partes a seguir:
IMPORTANTE
PARTE DESCRIÇÃO
tabela1, Os nomes das tabelas das quais os registros são combinados. Se você tentar associar campos contendo dados de Memorando ou Objeto
tabela2 OLE, ocorrerá um erro.
campo1, Os nomes dos campos que são associados. Se não forem
campo2 numéricos, os campos deverão ser do mesmo tipo de dados
e conter o mesmo tipo de dados, mas não precisarão ter o
mesmo nome.
Você pode associar quaisquer dois campos numéricos de tipos
opercomp Qualquer operador de comparação relacional: “=,”“<,”“>,”“<=,” semelhantes. Por exemplo, a associação de campos AutoNumeração e
“>=,” ou “<>.” Longo. Entretanto, você não pode associar os tipos de campo Único e Duplo.

TECH IT 131 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


O exemplo a seguir mostra como você poderia associar as tabelas INNER JOIN tabela2
Categorias e Produtos no campo CódigoDaCategoria.
ON tabela1.campo1 opercomp tabela2.campo1 AND
SELECT NomeDaCategoria, NomeDoProduto
ON tabela1.campo2 opercomp tabela2.campo2) OR
FROM Categorias
ON tabela1.campo3 opercomp tabela2.campo3)];
INNER JOIN Produtos

ON Categorias.CódigoDaCategoria = Produtos.
CódigoDaCategoria; Você pode também aninhar instruções JOIN usando a seguinte
sintaxe:

SELECT campos
No exemplo anterior, CódigoDaCategoria é o campo associado, mas
não é incluído na saída da consulta, pois não está incluído na instrução FROM tabela
SELECT. Para incluir o campo associado, adicione o nome do campo na
INNER JOIN (tabela2 INNER JOIN [( ]tabela3
instrução SELECT ¾, neste caso, Categorias. CódigoDaCategoria.
[INNER JOIN [( ]tabelax [INNER JOIN ...)]
Além disso, você pode também vincular várias cláusulas ON em
uma instrução JOIN, usando a sintaxe a seguir. ON tabela3.campo3 opercomp tabelax.campox)]

SELECT campos ON tabela2.campo2 opercomp tabela3.campo3)

FROM tabela1 ON tabela1.campo1 opercomp tabela2.campo2;

TECH IT 132 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


As operações LEFT JOIN e RIGHT JOIN possuem as partes a seguir:
SAIBA MAIS

PARTE DESCRIÇÃO
Uma instrução LEFT JOIN ou RIGHT JOIN pode ser aninhada dentro de
tabela1, tabela2 Os nomes das tabelas das quais os registros
uma INNER JOIN, mas uma INNER JOIN não pode ser aninhada dentro de
uma LEFT JOIN ou de uma RIGHT JOIN.
são combinados.
campo1, campo2 Os nomes dos campos que são associados. Os
campos devem ser do mesmo tipo e conter o
No item a seguir abordaremos as operações LEFT e RIGHT JOIN. Confira! mesmo tipo de dados, mas não precisam ter o
mesmo nome.
opercomp Qualquer operador de comparação relacional:
12.4 OPERAÇÕES LEFT E RIGHT JOIN “=,”“<,”“>,”“<=,” “>=,” ou “<>.”

Utilize uma operação LEFT JOIN para criar uma associação externa
Esta operação combina registros da tabela de origem quando esquerda, que inclui todos os registros da primeira (esquerda) de duas
usados em qualquer cláusula FROM. Observe! tabelas, mesmo que não haja valores correspondentes para os registros
na segunda tabela (direita).
Sintaxe
Utilize uma operação RIGHT JOIN, por sua vez, para criar uma
FROM tabela1 [ LEFT | RIGHT ] JOIN tabela2
associação externa direita, que inclui todos os registros da segunda
ON tabela1.campo1 opercomp tabela2.campo2 (direita) de duas tabelas, mesmo que não haja valores correspondentes
para registros na primeira (esquerda) tabela.

TECH IT 133 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Para compreender melhor, pense o seguinte: você poderia usar LEFT Neste exemplo, CódigoDaCategoria é o campo associado, mas não
JOIN com as tabelas Departamentos (esquerda) e Funcionários (direita) é incluído nos resultados da consulta pois não está incluído na instrução
para selecionar todos os departamentos, inclusive os que não tenham SELECT. Para adicionar o campo associado, digite o nome do campo na
funcionários designados a eles. Para selecionar todos os funcionários, instrução SELECT ¾, neste caso, Categorias. CódigoDaCategoria.
inclusive os que não estão designados para um departamento, você
IMPORTANTE
usaria RIGHT JOIN.
Se você tentar associar campos contendo dados de Memorando ou
O exemplo a seguir mostra como você poderia associar as tabelas
Objeto OLE, ocorrerá um erro.
Categorias e Produtos no campo CódigoDaCategoria. A consulta produz
uma lista de todas as categorias, inclusive aquelas que não contêm
produtos. Para criar uma consulta que inclua somente registros nos quais os
dados nos campos associados sejam os mesmos, utilize uma operação
SELECT NomeDaCategoria, NomeDoProduto
INNER JOIN.
FROM Categorias
IMPORTANTE
LEFT JOIN Produtos
Uma operação LEFT JOIN ou RIGHT JOIN pode ser aninhada dentro de
ON Categorias.CódigoDaCategoria = Produtos.CódigoDaCategoria; uma operação INNER JOIN, mas uma INNER JOIN não pode ser aninhada
dentro de uma LEFT JOIN ou de uma RIGHT JOIN. Consulte a matéria
sobre como aninhar no tópico INNER JOIN para ver como aninhar
associações dentro de outras associações.

Em seguida, estudaremos a operação UNION. Vamos lá?

TECH IT 134 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


12.5 OPERAÇÃO UNION TABLE [Novas Contas] UNION ALL

SELECT *
Esta operação cria uma consulta união, que combina os resultados
de duas ou mais consultas ou tabelas independentes, conforme a seguir. FROM Clientes

WHERE QuantiaDoPedido > 1000;

Sintaxe

[TABLE] consulta1 UNION [ALL] [TABLE] consulta2 [UNION [ALL] [TABLE] Como padrão, nenhum registro duplicado é retornado quando
consultan [ ... ]] você usa uma operação UNION. Entretanto, você pode incluir o atributo
ALL para assegurar que todos os registros sejam retornados. Isso faz
A operação UNION possui as partes a seguir:
com que a execução da consulta seja mais rápida.

PARTE DESCRIÇÃO Além disso, todas as consultas em uma operação UNION devem
consulta1-n Uma instrução SELECT, o nome de uma consulta solicitar o mesmo número de campos. Mas é importante destacar que os
armazenada ou o nome de uma tabela armazenada campos não deverão ter o mesmo tamanho ou tipo de dados.
precedida da palavra- chave TABLE.
Use aliases somente na primeira instrução SELECT, pois eles são
ignorados em qualquer outra. Na cláusula ORDER BY, refira-se aos
Você pode mesclar os resultados de duas ou mais consultas,
campos pelo que são chamados na primeira instrução SELECT.
tabelas e instruções SELECT, em qualquer combinação, em uma única
operação UNION. O exemplo a seguir mescla uma tabela denominada Você pode usar uma cláusula GROUP BY ou HAVING em cada
Novas Contas com uma instrução SELECT. argumento consulta para agrupar os dados retornados.

TECH IT 135 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Você pode usar uma cláusula ORDER BY no fim do último
argumento consulta para exibir os dados retornados em uma ordem
especificada.

12.6 RECAPITULANDO
Neste tema, você aprendeu a sintaxe dos comandos da Linguagem
SQL, conhecidas como funções agregadas SQL, como: Avg, Count e
Sum. Além disso, estudou também as operações INNER JOIN, LEFT JOIN
e RIGHT JOIN e UNION.

Portanto, agora você é capaz de criar comandos SQL para funções


agregadas, ou seja, poderá executar cálculos em conjunto de valores e
retornar um único valor, com a média para a função Avg, a contagem
de valores para a função Count e a soma de valores para a função Sum.
Além disso, você também poderá fazer junções entre tabelas, isto é, unir
os valores de duas tabelas em um único resultado.

TECH IT 136 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


13 LINGUAGEM SQL - PARTE V

Neste material, estudaremos as subconsultas, que permitem 13.1 OBJETIVO


realizar consultas mais dinâmicas e evitar dados duplicados. Você
também aprenderá os comandos da Linguagem SQL denominados Na sequência, você vai aprender e implementar os seguintes
instrução TRANSFORM, que realiza consultas de referência cruzada, e comandos em linguagem SQL:
declaração PARAMETERS, que permite a utilização de parâmetros. • subconsultas SQL;
Por fim, você estudará os operadores: Between...And, In, Like e • instrução TRANSFORM;
Caracteres Curinga, que facilitam a definição de critérios para realização
• declaração PARAMETERS;
de consultas. Vamos lá?
• operadores: Between...And; In; Like; Caracteres Curinga.
Bom estudo!

• Premissa: Banco de dados criado no exercício do tema 8.

TECH IT 137 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


13.2 SUBCONSULTAS SQL Você pode usar uma consulta em lugar de uma expressão na lista
de campos de uma instrução SELECT ou em uma cláusula WHERE ou
Uma subconsulta é uma instrução SELECT aninhada dentro de HAVING. Em uma subconsulta, por sua vez, você usa uma instrução
uma instrução SELECT, SELECT...INTO, INSERT...INTO, DELETE ou UPDATE SELECT para proporcionar um conjunto de um ou mais valores
ou de uma outra subconsulta. Observe! específicos para avaliar na expressão de cláusula WHERE ou HAVING.
Sintaxe Destaca-se aqui que para recuperar registros na consulta principal que
Você pode usar três formas de sintaxe para criar uma subconsulta: satisfaçam a comparação com qualquer registro recuperado na subconsulta
é necessário utilizar o atributo ANY ou SOME, que são sinônimos. O exemplo
comparação [ANY | ALL | SOME] (instruçãosql)
a seguir retorna todos os produtos cujo preço unitário é maior que o de
expressão [NOT] IN (instruçãosql) qualquer produto vendido com um desconto de 25% ou mais:
[NOT] EXISTS (instruçãosql) SELECT * FROM Produtos
Uma subconsulta possui as partes a seguir: WHERE PreçoUnitário > ANY
PARTE DESCRIÇÃO (SELECT PreçoUnitário
comparação Uma expressão e um operador de comparação que
compara a expressão com os resultados da subconsulta. FROM DetalhesDoPedido
expressão Uma expressão para a qual o conjunto de resultados da WHERE Desconto >= .25);
subconsulta é procurado.
instruçãosql Uma instrução SELECT, que segue o mesmo formato e
regras de qualquer outra instrução SELECT. Deve estar
entre parênteses.

TECH IT 138 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Entretanto, caso você deseje recuperar somente os registros da
IMPORTANTE
consulta principal que satisfaçam a comparação com todos os registros
recuperados na subconsulta, utilize o atributo ALL. Se você tivesse Você pode também usar aliases de nome de tabela em uma consulta para
alterado ANY para ALL no exemplo anterior, a consulta retornaria somente se referir a tabelas relacionadas em uma cláusula FROM fora da subconsulta.
os produtos cujo preço unitário fosse maior que o de todos os produtos
vendidos com um desconto de 25% ou mais. Isso é bem mais restritivo. O exemplo a seguir retorna os nomes dos funcionários cujos
O atributo IN, por sua vez, é utilizado para recuperar somente salários são iguais ou maiores do que o salário médio de todos os
os registros da consulta principal para os quais algum registro na funcionários que têm o mesmo cargo. A tabela Funcionários recebe o
subconsulta contenha um valor igual. Veja o exemplo a seguir que alias “T1”:
retorna todos os produtos com um desconto de 25% ou mais:
SELECT Sobrenome, Nome, Título, Salário
SELECT * FROM Produtos FROM Funcionários AS T1
WHERE CódigoDoProduto IN WHERE Salário >= (SELECT Avg(Salário)
(SELECT CódigoDoProduto FROM DetalhesDoPedido FROM Funcionários
WHERE Desconto >= .25); WHERE T1.Título = Funcionários.Título) Order by Título;
Da mesma forma, você pode usar NOT IN para recuperar somente É importante destacar que, no exemplo anterior, a palavra
os registros na consulta principal para os quais nenhum registro na reservada AS é opcional.
subconsulta contenha um valor igual. E, utilizar o EXISTS (com a palavra
reservada NOT opcional) em comparações verdadeiro/falso para
determinar se a subconsulta retorna algum registro.

TECH IT 139 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


A instrução TRANSFORM possui as partes a seguir:
SAIBA MAIS

Algumas subconsultas são permitidas em consultas de tabela de PARTE DESCRIÇÃO


referência cruzada — especificamente como atributos (os da cláusula funçãoagrg Uma função agregada SQL que opera sobre os dados
WHERE). Subconsultas, como saída (as da lista SELECT), não são permitidas selecionados.
em consultas de tabela de referência cruzada. instruçãoselect Uma instrução SELECT.
campodinâmicol O campo ou a expressão que você quer usar para
criar títulos de coluna no conjunto de resultados da
A seguir, estudaremos a instrução TRANSFORM. Vamos lá?
consulta.
valor1, valor2 Valores fixos usados para criar títulos de colunas.
13.3 INSTRUÇÃO TRANSFORM
Quando se resumem dados utilizando uma consulta tabela de
Essa instrução cria uma consulta tabela de referência cruzada, referência cruzada, você seleciona valores de campos ou expressões
conforme descrito a seguir. especificadas como títulos de colunas para poder visualizar os dados em
Sintaxe um formato mais compacto do que com uma consulta seleção.

TRANSFORM funçãoagrg Neste caso, a instrução TRANSFORM é opcional, mas quando


for incluída, será a primeira instrução em uma sequência SQL. Isso
instruçãoselect
porque ela antecede uma instrução SELECT que especifica os campos
PIVOT campocentral [IN (valor1[, valor2[, ...]])] usados como títulos de linhas e uma cláusula GROUP BY que especifica
o agrupamento de linhas. Opcionalmente, você pode incluir outras
cláusulas, como WHERE, que especifiquem critérios adicionais de seleção

TECH IT 140 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


ou de classificação. Além disso, você também pode usar subconsultas A declaração PARAMETERS possui as partes a seguir:
como atributos — especificamente aqueles em uma cláusula WHERE — PARTE DESCRIÇÃO
em uma consulta tabela de referência cruzada. nome O nome do parâmetro. Atribuído à propriedade Name do objeto
PARAMETER e usado para identificar esse parâmetro na coleção
IMPORTANTE PARAMETERS. Você pode usar nome como uma sequência de
caracteres que é exibida em uma caixa de diálogo enquanto o
Os valores retornados em campodinâmico são usados como títulos de aplicativo executa a consulta. Para isso, use colchetes ([ ]) para
colunas no conjunto de resultados da consulta. Por exemplo, articular envolver o texto que contém espaços ou pontuação. Por exemplo,
os números das vendas no mês da venda em uma consulta tabela de [Preço baixo] e [Começar relatório com que mês?] são argumentos
nome válidos.
referência cruzada criaria 12 colunas. Você pode também restringir
campodinâmico para criar títulos a partir de valores fixos (valor1, valor2) tipodedados Um dos tipos de dados SQL do Microsoft Jet primários ou seus
sinônimos.
relacionados na cláusula IN opcional, e incluir valores fixos para os quais
não existam dados para criar colunas adicionais.
Para consultas executadas regularmente, você pode utilizar uma
declaração PARAMETERS para criar uma consulta parâmetro, ajudando
O próximo item tratará da declaração PARAMETERS. Confira!
a automatizar o processo de alteração dos critérios da consulta. Nessa
consulta, o código precisará fornecer os parâmetros a cada vez que a
13.4 DECLARAÇÃO PARAMETERS consulta for executada.

Declara o nome e o tipo de dados de cada parâmetro em uma IMPORTANTE


consulta parâmetro de acordo com a sintaxe a seguir.
A declaração PARAMETERS é opcional, mas quando incluída precede
Sintaxe
qualquer outra instrução, inclusive SELECT.
PARAMETERS nome tipodedados [, nome tipodedados [, ...]]

TECH IT 141 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Ressaltamos que, se a declaração incluir mais de um parâmetro, separe- 13.5 OPERADORES: BETWEEN..AND; IN; LIKE E
os com vírgulas. Observe o exemplo a seguir que inclui dois parâmetros: CARACTERES CURINGA
PARAMETERS [Preço baixo] Currency, [Data inicial] DateTime;
A seguir, estudaremos os operadores Between..And, IN, LIKE e
Caracteres Curinga. Confira!
IMPORTANTE

Você pode usar nome, mas não tipodedados, em uma cláusula WHERE
ou HAVING.
13.5.1 Operador Between...And
O exemplo a seguir espera que dois parâmetros sejam fornecidos
Este operador determina se o valor de uma expressão se situa
e, então, aplica os critérios aos registros na tabela Pedidos:
dentro de um intervalo especificado de valores. Você pode utilizar este
PARAMETERS [Preço baixo] Currency, [Data inicial] DateTime; operador em instruções SQL.
SELECT NúmeroDoPedido, QuantiaDoPedido Sintaxe
FROM Pedidos expr [Not] Between valor1 And valor2
WHERE QuantiaDoPedido > [Preço baixo] AND DataDoPedido
>= [Data inicial];

Agora que você conhece as instruções e declarações, estudaremos


os operadores BETWEEN..AND; IN; LIKE e caracteres curinga. Vamos lá?

TECH IT 142 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


A sintaxe do operador Between...And possui as partes a seguir. O exemplo a seguir determina se um pedido foi enviado a um
local situado em um intervalo de códigos postais. Se o código postal
PARTE DESCRIÇÃO
estiver entre 98101 e 98199, a função IIf retornará “Local”. Caso contrário,
expr Expressão que identifica o campo que contém os dados a
retornará “Nãolocal”. Observe:
serem avaliados.
valor1, Expressões em relação às quais você deseja avaliar expr. SELECT IIf(CódigoPostal Between 98101 And 98199, “Local”,
valor2 “Nãolocal”) FROM Editores

Se expr, valor1 ou valor2 forem Null, Between... And retornará um


Se o valor de expr estiver entre valor1 e valor2 (inclusive), o valor Null.
operador Between...And retornará True; caso contrário, retornará False. É importante destacar que os caracteres curinga, como *, são
Além disso, você pode incluir o operador lógico Not para avaliar a tratados como literais, portanto, você não pode utilizá-los com o
condição oposta (isto é, se expr estiver situado fora do intervalo definido operador Between...And. Por exemplo, você não pode utilizar 980* e 989*
por valor1 e valor2). para localizar todos os códigos postais que começam com 980 e 989.
Em vez disso, você tem duas alternativas: pode adicionar uma expressão
SAIBA MAIS
para a consulta que pegue os três caracteres da esquerda do campo de

Você poderia utilizar Between...And para determinar se o valor de um


texto e utilizar Between... And nesses caracteres, ou pode preencher os
campo está situado em um intervalo numérico especificado. valores superior e inferior com caracteres extras – nesse caso, 98000 a
98999, ou 98000 a 98999 – 9999 se estiver utilizando códigos postais
estendidos (você deve omitir o 0000 dos valores inferiores, pois, caso
contrário, 98000 será excluído se alguns códigos postais tiverem seções

TECH IT 143 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


e outros não). Not para avaliar a condição oposta (isto é, se expr não está na lista de
valores).
A seguir, conheceremos o operador IN. Acompanhe!
Por exemplo, você pode utilizar In para determinar os pedidos a
13.5.2 Operador In serem enviados a um conjunto de regiões especificadas:

SELECT *
Este operador determina se o valor de uma expressão é igual a
algum dos vários valores em uma lista especificada. FROM Pedidos

Sintaxe WHERE RegiãoDeRemessa In (‘Avon’,’Glos’,’Som’)

expr [Not] In(valor1, valor2, . . .) Em seguida, estudaremos o operador Like. Confira!

A sintaxe do operador In possui as partes a seguir: 13.5.3Operador Like


Se expr for encontrado na lista de valores, o operador In retornará
Este operador compara uma expressão de sequência com um
True; caso contrário, retornará False. Você pode incluir o operador lógico
padrão em uma expressão SQL.
PARTE DESCRIÇÃO Sintaxe
expr Expressão que identifica o campo que contém os
expressão Like “padrão”
dados a serem avaliados.
valor1, valor2 Expressão ou lista de expressões em relação à qual
você deseja avaliar expr.

TECH IT 144 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


A sintaxe do operador Like possui as partes a seguir: Like “P[A-F]###”

PARTE DESCRIÇÃO A tabela a seguir mostra como você pode utilizar Like para testar
expressão Expressão SQL utilizada em uma cláusula WHERE. expressões para diferentes padrões.
padrão Sequência ou literal de sequência de caracteres em TIPO DE CORRESPONDÊNCIA
relação à qual expressão é comparada. Coincidente Não coincidente (retorna
Padrão
(retorna True) False)
Você pode utilizar o operador Like para localizar valores em um
aa, aBa, aBBBa aBC *ab* abc,
campo que correspondam ao padrão especificado. Para padrão, você Vários caracteres a*a
AABB, Xab aZb, bac
pode especificar o valor completo (por exemplo, Like “Smith”) ou pode
Caractere especial a[*]a a*a aaa
utilizar caracteres curinga para encontrar um intervalo de valores (por
Vários caracteres ab* abcdefg, abc cab, aab
exemplo, Like “Sm*”).
Um único caractere a?a aaa, a3a, aBa aBBBa
Em uma expressão, você pode utilizar o operador Like para Um único dígito a#a a0a, a1a, a2a aaa, a10a
comparar um valor de campo a uma expressão de sequência. Por Intervalo de
[a-z] f, p, j 2, &
exemplo, se você digitar Like “C*” em uma consulta SQL, a consulta caracteres
retornará todos os valores de campo que começam com a letra C. Em Fora de um intervalo [!a-z] 9, &, % b, a
uma consulta parâmetro, você pode solicitar ao usuário que forneça um Nenhum dígito [!0-9] A, a, &, ~ 0, 1, 9
padrão pelo qual procurar. Combinado a[!b-m]# An9, az0, a99 abc, aj0

O exemplo a seguir retorna dados que começam com a letra P, Agora que você já conhece os operadores, estudaremos os
seguida por qualquer letra entre A e F e três dígitos, confira: Caracteres Curinga. Vamos lá?

TECH IT 145 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


13.5.4 Caracteres Curinga
IMPORTANTE
A correspondência interna de padrões oferece uma ferramenta
versátil para fazer comparações de sequências. A tabela a seguir mostra Os caracteres especiais colchete de abertura ([ ), ponto de interrogação
os Caracteres Curinga que você pode utilizar com o operador Like e o (?), sinal de número (#) e asterisco (*) podem ser utilizados, para que
número de dígitos ou sequências aos quais eles podem corresponder. correspondam diretamente a eles mesmos, somente se estiverem
Confira! entre colchetes. Também, podem ser utilizados fora de um grupo
como um caractere individual.
Caractere(s) em padrão Coincide com expressão

? Qualquer caractere isolado

* Zero ou mais caracteres Além de uma simples lista de caracteres entre colchetes,
listadecaract pode especificar um intervalo de caracteres através da
# Qualquer dígito isolado (0 — 9)
utilização de um hífen (-) para separar os limites superior e inferior do
[listadecaract] Qualquer caractere isolado em listadecaract intervalo. Por exemplo, a utilização de [A-Z] em padrão resultará em
[!listadecaract] Qualquer caractere isolado não presente em listadecaract uma correspondência se a posição do caractere correspondente em
Você pode utilizar um grupo de um ou mais caracteres expressão contiver qualquer uma das letras maiúsculas no intervalo de
(listadecaract) entre colchetes ([ ]) para coincidir com qualquer caractere A a Z. Assim, você pode incluir vários intervalos entre os colchetes sem
isolado em expressão, podendo incluir praticamente qualquer caractere delimitar os intervalos. Por exemplo, [a-zA-Z0-9] corresponde a qualquer
do conjunto de caracteres ANSI, inclusive dígitos. caractere alfanumérico.

TECH IT 146 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


É importante ressaltar outras regras importantes para 13.6 Recapitulando
correspondência de padrão. Confira na sequência.
Neste tema, você aprendeu a sintaxe dos seguintes comandos da
• Um ponto de exclamação(!) no início de listadecaract significa
Linguagem SQL: subconsultas SQL; instrução TRANSFORM; declaração
que uma correspondência será feita se qualquer caractere, exceto
aqueles na listadecaract, for encontrado em expressão. Quando PARAMETERS; operadores: Between...And; In; Like; Caracteres Curinga.
utilizado sem colchetes, o ponto de exclamação corresponderá Agora você poderá tornar os seus comandos SQL mais eficientes
a si mesmo. através da criação de subconsultas, realizar consultas de referência
• Você pode utilizar o hífen (-), seja no início (depois de um ponto cruzada usando a instrução TRANSFORM e utilizar parâmetros através
de exclamação, se este for utilizado) ou no fim de listadecaract, da declaração PARAMETERS. Finalmente, você também poderá refinar
para corresponder a si mesmo. Se estiver em qualquer outro
ainda mais os resultados das suas consultas com os operadores
local, o hífen identificará um intervalo de caracteres ANSI.
Between... And, In, Like e com a utilização de Caracteres Curinga.
• Quando você especifica um intervalo de caracteres, eles devem
aparecer em ordem de classificação crescente (A-Z ou 0-100). [A-
Z] é um padrão válido, mas [Z-A] não é.

IMPORTANTE

A sequência de caracteres [ ] é ignorada; ela é considerada uma sequência


de comprimento zero (“”).

TECH IT 147 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


14 ADMINISTRAÇÃO DE BANCO DE DADOS – PARTE I

Neste tema, você aprenderá os conceitos de Segurança em Banco 14.1 OBJETIVOS


de Dados e Visões (Views), que tratam dos resultados de uma consulta.
Mas, antes de apresentar estes conceitos, é importante observar que • Compreender o conceito de Segurança em Banco de Dados.
nesta aula você deverá pensar como um Administrador de Banco • Compreender o conceito de Visão (View).
de Dados (DBA), que é a pessoa responsável, entre outras coisas, por
administrar o Banco de Dados (BD).
14.2 SEGURANÇA EM BANCO DE DADOS
Para administrar o BD, o DBA deve utilizar o Sistema de
Gerenciamento de Banco de Dados (SGBD), que é o software que Quem cuida da segurança do Banco de Dados é o Administrador de
incorpora a função de definição de manipulação de BD. Em resumo, a Dados (DA) e o DBA. Para orientá-lo, o Manual de Auditoria de Sistemas do
partir deste momento, você é o DBA, responsável pela administração do TCU (1998, p. 81-86) apresenta um roteiro para a avaliação da segurança
BD utilizando um SGBD. Vamos conhecer suas atividades, então? em bancos de dados baseado em controles que permitem separar a
responsabilidade do DA e do DBA, no que diz respeito à segurança.

TECH IT 149 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


A seguir, são descritos estes controles: controles da administração As tarefas a seguir são de responsabilidade tanto do DA quanto
de dados; controles da administração de banco de dados; controles do DBA.
de acesso ao banco de dados e dicionário de dados; controles sobre Controles de acesso ao banco de dados e dicionário de dados:
o conteúdo e as alterações no dicionário de dados; disponibilidade e devem existir mecanismos para restringir o acesso a arquivos de
recuperação do banco de dados; integridade do banco de dados. dados e ao dicionário de dados (senhas, tabelas e perfis de segurança),
O manual definiu e documentou algumas das responsabilidades impedindo o acesso a pessoas não autorizadas.
relacionadas à administração de dados. Confira! O acesso ao software e às tabelas de segurança do SGBD e aos
Controles da administração de dados (responsabilidade perfis de segurança do dicionário de dados, por sua vez, deve ser
do DA): coordenação da manutenção dos dados (definição, criação, limitado. Por este motivo, devem ser estabelecidos procedimentos de
exclusão e propriedade dos dados); estabelecimento de políticas de autorização de acesso ao banco de dados, que devem ser cumpridos.
acesso, confidencialidade e integridade de dados; manutenção da Além disso, devem ser produzidos registros históricos de acesso e
documentação; coordenação entre administração de dados, usuários e atualização, bem como trilhas de auditoria que possibilitem investigar o
programação de sistemas; desenvolvimento e manutenção de padrões. acesso e a atualização a elementos da base de dados.
Controles da administração de banco de dados (responsabilidade
do DBA): projeto e manutenção da estrutura da base de dados; revisão e IMPORTANTE
avaliação da confiabilidade do sistema gerenciador de banco de dados;
O gerenciador de BD deve controlar o acesso simultâneo aos elementos de
avaliação do pessoal encarregado das funções de banco de dados; dados e possuir mecanismos para prevenir processamento incorreto nessas
treinamento do pessoal responsável pela administração de banco de situações.
dados; segurança de dados.

TECH IT 150 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Controles sobre o conteúdo e alterações no dicionário de dados: Disponibilidade e recuperação do banco de dados: a
deve ser verificado ser há consistência entre as estruturas de dados organização deve estabelecer políticas e procedimentos que garantam
do BD e do dicionário de dados, que deve conter, pelo menos: data a disponibilidade do banco de dados e sua pronta recuperação após a
de criação e última atualização; descrição de cada elemento de dados; ocorrência de falhas operacionais ou desastres.
chaves utilizadas; estrutura de cada elemento de dados (qual registro
Integridade do banco de dados: deve ser verificado se existem
lógico contém o elemento); programas e sistemas que utilizam cada
procedimentos para avaliar o desempenho do banco de dados, se o
elemento de dados e de que forma.
gerenciador de banco de dados apresenta elementos de controle sobre
Também é necessário estabelecer procedimentos para produção a organização, o acesso e o compartilhamento de dados. Além disso,
de cópias de segurança (backup) e recuperação do dicionário de dados. também deve ser verificado se existem mecanismos de controle sobre a
Aqui também devem ser mantidas trilhas de auditoria que permitam integridade dos dados, das rotinas e do dicionário de dados do sistema
supervisionar mudanças nos dicionários de dados. gerenciador de banco de dados. A seguir, para esclarecer o conteúdo,
serão apresentados os comandos em linguagem SQL para criação e
exclusão de usuários. A criação é realizada com o comando:
IMPORTANTE
CREATE USER nome_do_usuário;
A alteração e a criação de novos nomes de arquivos e descrição de dados
devem ser controladas e seguir padrões e políticas predefinidos. Exemplo: CREATE USER Admin;

A exclusão, por sua vez, segue o comando:

DROP USER nome_do_usuário;

Exemplo: DROP USER Admin;

TECH IT 151 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Em ambos os comandos, Nome_do_usuário é o parâmetro com o A sintaxe para criação de um usuário com autorização de
nome do usuário que você quer criar. É importante que este nome não criação de BD é:
contenha espações ou caracteres especiais. CREATE USER nome_do_usuário CREATEDB.
Assim, caso você queira listar os usuários existentes no BD, basta
executar o seguinte comando:
c. Senha: por questões de segurança, é recomendável que todo
SELECT usename FROM pg_user; usuário tenha uma senha. Para isso, o parâmetro PASSWORD
deve ser informado:

Em Grupo de Desenvolvimento Global do PostgreSQL (PostgreSQL CREATE USER nome_do_usuário PASSWORD ‘senha’;
2007, p. 306 e 307) são definidos alguns atributos importantes para
criação de usuários.
Uma vez criados os usuários, o próximo passo é a definição
a. Superusuário: não está sujeito a autorizações ou verificações dos níveis de permissão de acesso aos objetos de banco de dados.
de permissão. Somente ele pode criar novos usuários. A sintaxe
Basicamente, os seguintes privilégios podem ser concedidos: SELECT
para criação de um superusuário é:
(seleção), INSERT (inserção), UPDATE (atualização) e DELETE (exclusão).
CREATE USER nome_do_usuário CREATEUSER.
A sintaxe básica para o comando de permissão de acesso é a
seguinte:
b. Criação de banco de dados: deve ser dada uma permissão
GRANT privilegio ON objeto TO usuário;
explícita para que um usuário possa criar bancos de dados
(exceto para os superusuários que já possuem esta autorização). O “privilegio” é o parâmetro que indica o nível de acesso que o

TECH IT 152 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


usuário terá sobre o objeto. Pode ser SELECT, INSERT, UPDATE e DELETE. 14.3 VISÕES (VIEWS)
Objeto, por sua vez, é o nome da tabela (ou outros objetos) a qual será
concedido o acesso. E “usuário” é o nome do usuário que terá o privilégio. Uma Visão, do inglês View, é um tipo de tabela virtual que não
existe fisicamente, derivada de uma ou mais tabelas físicas do BD ou a
partir de outras Visões. Elas são importantes porque permitem extrair
O exemplo a seguir é um comando que fornece privilégio de conhecimento relevante, de forma transparente para o usuário, a partir
seleção na tabela aluno para o usuário admin. dos dados armazenados, tornando o acesso à informação mais eficiente.

A principal vantagem da utilização de Visões está no fato de que a


GRANT SELECT ON ALUNO TO ADMIN; consulta realizada através deste tipo de mecanismo tende a ser mais rápida
e mais simples para o usuário final. De forma simples, isso ocorre porque,
SAIBA MAIS para cada Visão no SGBD, é criada uma espécie de tabela temporária que
já vem otimizada para aquele tipo de acesso às tabelas físicas.
Aprenda mais sobre os conceitos fundamentais de Segurança em BD no
Para entender melhor, vamos pensar na seguinte situação: em uma
link: <http://www.devmedia.com.br/artigo-sql-magazine-27-seguranca-
Universidade você tem a associação entre Professores e Departamentos, ou
em-banco- de-dados-conceitos-fundamentais/6903>.
seja, um Professor pertence a um Departamento, que por sua vez tem vários
professores em seu quadro. A figura a seguir representa o DER desta realidade.

Figura 58 – DER Professor/Departamento


Fonte: ADAPTADO DE MORAIS, 2014.

TECH IT 153 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Convertendo o DER da figura anterior para o Modelo Relacional b. Criação da tabela PROFESSOR
(MR) correspondente, temos as seguintes relações: CREATE TABLE PROFESSOR
PROFESSOR (Matricula, Nome); (Matricula INTEGER NOT NULL,
DEPARTAMENTO (Sigla, Nome, Endereço); Nome Text(30) NOT NULL,

Sigla Text(3) NOT NULL,


Para criação física deste MR, por sua vez, utilizamos os seguintes CONSTRAINT PrkProf PRIMARY KEY (Matricula),
comandos:
CONSTRAINT FrkProfDep FOREIGN KEY (Sigla)
a. Criação da tabela DEPARTAMENTO
REFERENCES DEPARTAMENTO (Sigla));
CREATE TABLE DEPARTAMENTO
Agora que criamos as tabelas fisicamente, imagine a seguinte
(Sigla Text(3) NOT NULL,
situação: seus usuários precisam consultar com muita frequência a lista
Nome Text(30) NOT NULL, de professores por departamento, contendo sigla, nome e endereço
Endereco Texto(100) NOT NULL, do departamento, além da matrícula e nome dos professores que
pertencem a este departamento. Como realizar essa consulta?
CONSTRAINT PrkDep PRIMARY KEY (Sigla));
É neste momento que surge a importância da View. Ao invés de
criar comandos para acessar repetidamente esses dados, a partir das
tabelas físicas originais, recomenda-se a criação de uma Visão. Desta
forma, o SGBD otimizará esta consulta para que melhore principalmente

TECH IT 154 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


o seu desempenho e para que o acesso a esses dados se torne mais
SAIBA MAIS
simples. Vamos ver como isso funciona na prática através do exemplo
a seguir.
Você pode aprender um pouco mais sobre a criação no programa Visões em
Para atender a solicitação de seus usuários, você pode criar uma Microsoft (2014).
Visão, através do seguinte comando:

CREATE VIEW DeptoProfessores

(Sigla, Nome_Depto, Endereco, Matricula, Nome_Prof ) as


14.4 RECAPITULANDO
SELECT d.Sigla, d.Nome, d.Endereco, p.Matricula, p.Nome
Neste tema, você aprendeu os conceitos de Segurança em Banco
FROM DEPARTAMENTO D
de Dados e Visões (Views). Compreendendo, assim, que para Administrar
INNER JOIN PROFESSOR P ON D.Sigla = P.Sigla um Banco de Dados, você deve ser um Administrador de Banco de Dados
ORDER BY d.Sigla (DBA) e dominar algum software SGBD.

Por fim, você aprendeu a criar uma Visão na prática e como isso pode
ser útil para seus usuários, para tratar os resultados de uma consulta e
Veja que a partir de agora você dará acesso à Visão para seus
também para transformar as consultas complexas em consultas simples.
usuários, tornando seu trabalho mais simples, uma vez que eles não
precisam gerar um comando complexo, evitando que tenham acesso
direto às tabelas físicas.

TECH IT 155 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


15 ADMINISTRAÇÃO DE BANCO DE DADOS – PARTE II

Neste tema, você estudará os conceitos de procedimento 15.1 OBJETIVOS


(procedure) e função (function) no contexto dos Sistemas de
Gerenciamento de Banco de Dados (SGBDs). Também aprenderá que • Compreender o conceito de procedimento (procedure).
procedimento é um conjunto de comandos para definir os usuários • Compreender o conceito de função (function).
que terão autorização a determinadas execuções que, por sua vez, são
utilizadas para manipular o acesso de dados de um sistema de BD.
15.2 PROCEDIMENTOS E FUNÇÕES
Por fim, você também estudará a importância dessas estruturas
para os SBGDs e quando elas podem ser utilizadas. Vamos lá? Antes de apresentar o conceito de procedimento e função no
contexto dos SGBDs, é importante entender o que são essas estruturas para
Bom estudo!
área de programação de computadores e quais as diferenças entre elas.

Segundo o professor Dotti (2014), no desenvolvimento de


software podemos definir blocos de execução internos a um programa,

TECH IT 157 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


chamados subprogramas. Cada bloco, por sua vez, contém um conjunto
IMPORTANTE
de instruções que executa uma tarefa determinada, sendo chamados de
procedimento (procedures) ou função (function). As funções são avaliadas e retornam um valor ao programa, além dos
possíveis parâmetros de saída.
A utilização desses blocos favorece a legibilidade e manutenção
do programa, além de auxiliar no domínio da complexidade da Os procedimentos e as funções também estão presentes nos SGBDs.

definição do programa, já que podemos tratar partes do problema de Pode-se destacar que o PostgreSQL (POSTGRESQL, 2014), por exemplo,
permite que os procedimentos e as funções, definidos pelos usuários,
forma isolada.
sejam escritos em diferentes linguagens de programação. E essas
linguagens são chamadas genericamente de linguagens procedurais
IMPORTANTE
(PLs, do inglês Procedural Language).

Subprogramas têm parâmetros que podem ser de entrada, saída ou ambos.

SAIBA MAIS
Agora sabemos como definir os blocos de execução. Entretanto, Aprenda mais sobre funções e procedimentos na documentação do
qual a diferença entre procedimentos e funções? Podemos dizer que um PostgreSQL (POSTGRESQL, 2014), que é um dos SBGDs mais utilizados
procedimento não retorna valor nenhum, diferentemente da função, na atualidade.
que obrigatoriamente retorna um valor a determinada variável.

TECH IT 158 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Segundo o manual do PostgreSQL (2014, p. 1), Apesar de permitir a utilização de várias linguagens na sua
construção, a maioria dos manuais dos principais SGBDs recomenda
a utilização da linguagem SQL. Isso porque a linguagem SQL, na sua
[...] no caso de uma função escrita em uma linguagem procedural,
versão PL/SQL (extensões de Linguagem Procedural para o SQL, do inglês
o servidor de banco de dados não possui nenhum conhecimento interno
Procedural Language extensions to SQL), é a que o PostgreSQL (e a maioria
sobre como interpretar o texto do código fonte da função. Em vez disso,
dos bancos de dados relacionais) utiliza como linguagem de comandos,
a tarefa é passada para um tratador especial que conhece os detalhes da
tendo como principal característica a portabilidade e fácil aprendizagem.
linguagem. O tratador pode fazer todo o trabalho de análise gramatical
Para ser executado pelo SGBD, o comando em linguagem SQL deve ser
e sintática, execução, etc., por si próprio, ou pode servir como um elo de
enviado pelo cliente ao servidor de BD, aguardar que seja processado, receber
ligação entre o PostgreSQL e a implementação existente de uma linguagem
os resultados, realizar algum processamento e enviar o próximo comando
de programação. O tratador em si é uma função escrita na linguagem
para o servidor. Entretanto, tudo isso gera tráfego na rede se o cliente não
C, compilada como um objeto compartilhado, e carregado conforme
estiver na mesma máquina em que se encontra o servidor de BD.
necessário, como qualquer outra função escrita na linguagem C.
Finalmente, os procedimentos e as funções em linguagem PL/SQL
podem ser agrupados em um bloco de processamento, em uma série de
SAIBA MAIS
comandos dentro do servidor de BD, juntando a organização da linguagem
procedural com a facilidade de uso da linguagem SQL e economizando
Conheça mais sobre a linguagem C em JAMSA (1999).
muito tempo, porque não há necessidade da sobrecarga de comunicação
entre o cliente e o servidor. Isso tende a aumentar o desempenho durante
o processamento dos comandos, conforme o Manual PostgreSQL (2014).

TECH IT 159 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Agora que sabemos suas funções, qual a importância dos
SAIBA MAIS
procedimentos e das funções? Pode-se dizer que, basicamente, essas
estruturas são utilizadas para: criar procedimentos de funções e de gatilhos; Para aprofundar seu conhecimento sobre gatilhos, consulte o PostgreSQL
(2007, p. 469-471).
adicionar estruturas de controle à linguagem SQL; realizar processamentos
complexos; herdar todos os tipos de dados, funções e operadores definidos
pelo usuário, de acordo como Manual PostgreSQL (2014).

GLOSSÁRIO
15.3 RECAPITULANDO
Gatilho, do inglês trigger, conforme o Manual PostgreSQL (2014), é um
Neste tema, você estudou os conceitos de procedimento (procedure)
recurso de programação executado sempre que o evento associado
ocorrer. É um tipo especial de procedimento armazenado, que é executado
e função (Function), aprendendo que ambos são instruções que executam
sempre que há uma tentativa de modificar os dados de uma tabela que é uma tarefa determinada, sendo de suma importância para o SBGDs.
protegida por ele. É muito utilizada para ajudar a manter a consistência dos Assim, a partir de agora você será capaz de aplicar o seu conhecimento
dados ou para propagar alterações em determinado dado de uma tabela sobre essas estruturas, uma vez que você já conhece os conceitos. Para
para outras. Um bom exemplo é um gatilho criado para controle de quem praticar, utilize o Manual do PostgreSQL (POSTGRESSQL, 2007, p. 571), que
alterou a tabela. Nesse caso, quando a alteração for efetuada, o gatilho é
disponibiliza exemplos de criação de procedimentos.
“disparado” e grava em uma tabela de histórico de alteração, o usuário e a
data/hora da alteração, por exemplo.

TECH IT 160 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


16 CONCLUSÃO DE DISCIPLINA

Ao concluir esta disciplina, esperamos que você tenha formas normais, além de transformar este DER em Modelo Relacional (MR)
compreendido que Banco de Dados é um dos assuntos mais e implementar este MR em Modelo Físico, utilizando linguagem SQL.
importantes da área de Tecnologia da Informação (TI), uma vez que
Em relação à linguagem SQL, estudamos dois tipos: Linguagem de
esses bancos estão presentes em praticamente todos os softwares,
Definição de Dados (DDL) e Linguagem de Manipulação de Dados (DML).
sendo responsável pelo armazenamento dos dados processados.
Assim, com a linguagem SQL-DDL, você é capaz criar a estrutura de um
Além do conceito de Banco de Dados, durante seus estudos Banco de Dados. E, com a linguagem SQL-DML, você pode manipular
você também aprendeu a diferença entre dados e informações, como as bases de dados criadas, especialmente através do comando SELECT.
os dados são transformados em informações através dos softwares e
Agora que você já conhece as principais questões desta disciplina, você
como os Bancos de Dados são importantes neste contexto.
se tornou apto a administrar algumas partes de um Banco de Dados, mais
Após estudar os principais pontos desta disciplina, você se tornou especificamente na parte de segurança, visão, procedimentos e funções.
capaz de projetar um Banco de Dados Relacional, criando o Diagrama
Entidade Relacionamento (DER), na primeira, segunda, terceira e quarta

TECH IT 161 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


17 REFERÊNCIAS
BRASIL. Tribunal de Contas da União. Manual de auditoria de sistemas. KROENKE, D. M. Banco de dados – fundamentos, projeto e
Brasília: TCU, Secretaria de Auditoria e Inspeções, 1998. implementação. Rio de Janeiro: LTC, 1998.

DATE, C. J. Introdução a sistemas de bancos de dados. Rio de Janeiro: LAUREANO, M. Estrutura de dados com algoritmos e C. Rio de Janeiro:
Campus, 2003. Brasport, 2008.

DOTTI, F. L. Linguagem Pascal: funções e procedimentos. Disponível MICROSOFT. Crate trigger (Transact-SQL). Disponível em: <http://msdn.
em: <http://www.inf.pucrs.br/~fldotti/lapro1/prfun.htm>. Acesso em: microsoft.com/pt-br/library/ms189799.aspx>. Acesso em: 23 out. 2014.
23 out. 2014.
MICROSOFT. Create view. Disponível em: <http://msdn.microsoft.com/
ELMASRI, R., & NAVATE, S. Sistemas de banco de dados: fundamentos e pt-br/library/>. Acesso em: 23 out. 2014.
aplicações. 6. ed. Rio de Janeiro: Pearson, 2011.
MORAIS, E. Banco de Dados 1. Disponível em: <http://www.edison.eti.
HEUSER, C. A. Projeto de banco de dados. Porto Alegre: Bookman, 2009. br/bd1_ufg> Acesso em: 16 abr. 2015.

JAMSA, K., & KANDLER, L. Programando em C/C++ o melhor guia para POSTGRESQL GLOBAL DEVELOPMENT GROUP. Documentação do
programação em C/C++. São Paulo: Makron Books, 1999. PostgreSQL 8.0.0. Disponível em: <http://ftp.unicamp.br/pub/apoio/
postgresql/pgdocptbr800->. Acesso em: 23 out. 2014.
KORTH, H. F. Sistema de banco de dados. 6. ed. Rio de Janeiro:
Elisevier, 2012.

TECH IT 163 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


TECH IT 164 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ
MINICURRÍCULO DO
ORGANIZADOR

Alexandre Luis Kloch


Alexandre Luis Kloch é Tecnólogo em Análise e Desenvolvimento de áreas de Gestão e Tecnologia da Informação da Unidade Campus da
Sistemas desde 2010; Especialista em Desenvolvimento Web 2011; Indústria do SENAI/PR. Treinador medalhista de ouro na etapa estadual
Licenciatura em Educação Profissional em 2012; tem experiência como da Seletiva World Skills 2016 e representante do estado do Paraná na
Técnico e Analista em Desenvolvimento de Sistemas. Leciona no SENAI etapa nacional da World Skills 2016 na ocupação TI. Atualmente atua
desde 2008, atuando nos cursos de aprendizagem, técnico e qualificação. como tutor, conteudista e analista de tecnologias da educação no
Coordenador dos cursos de aprendizagem, técnico e qualificações das Núcleo de EAD do SENAI/PR.

TECH IT 165 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


CRÉDITOS
SENAI – DEPARTAMENTO REGIONAL DO PARANÁ

José Antônio Fares Erica Luz de Souza Ricardo Luiz Freire de Menezes Junior
Diretor Regional Orientação Pedagógica Projeto Gráfico

Giovana Chimentao Punhagui Karem Morigi Ricardo Luiz Freire de Menezes Junior
Gerente Executiva de Educação Revisão Ortográfica e Gramatical Ana Célia Souza França
Diagramação, Revisão de Arte e Fechamento de Arquivo
Vanessa Sorda Frason Daniel Gustavo Hella
Gerente de Educação Profissional Estela Pereira
Raphael Hardy Fioravanti
Jacielle Feltrin Vila Verde Ribeiro Coordenação de Projeto
Sandra Cristina Brasil Toloto
Coordenação Pedagógica Ricardo Luiz Freire de Menezes Junior
Projeto Gráfico
Alexandre Luis Kloch
Iris Jerusa D Amico Burger André Dias
Coordenação Técnica , Organização e revisão técnica Aline Sentone
Ilustrações e Tratamento de Imagens

TECH IT 166 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ

Você também pode gostar