Você está na página 1de 115

MANUAL DO CURSO DE LICENCIATURA EM

GESTÃO DE SISTEMAS DE INFORMAÇÃO

DESENHO DE BASE DE DADOS

ENSINO ONLINE. ENSINO COM FUTURO 2022


2º ANO Disciplina: Desenho de Base de Dados

CÓDIGO UNISCED1-GSI03
GSITOTAL HORAS/ 1
SEMESTRE 150
CRÉDITOS (SNATCA) 60
NÚMERO DE TEMAS 14
UNISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 20 Ano Disciplina/Módulo: Desenho de
base de dados

Direitos de autor (copyright)


Este manual é propriedade da Universidade Aberta UNISCED (UNUNISCED), e contém
reservados todos os direitos. É proibida a duplicação ou reprodução parcial ou total
deste manual, sob quaisquer formas ou por quaisquer meios (electrónicos, mecânico,
gravação, fotocópia ou outros), sem permissão expressa de entidade editora
(Universidade Aberta UNISCED (UNUNISCED).
A não observância do acima estipulado o infractor é passível a aplicação de processos
judiciais em vigor no País.

Universidade Aberta UNISCED (UNUNISCED)


Vice -Reitoria Académica
Rua Dr. Almeida Lacerda, No 212 Ponta - Gêa
Beira - Moçambique Telefone: +258 23 323501
Cel: +258 82 3055839

Fax: 23323501
E-mail:direcção@unUNISCED.edu.mz
Website: www.unUNISCED.edu.mz
UNISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 20 Ano Disciplina/Módulo: Desenho de
base de dados

Agradecimentos

Universidade Aberta Isced (UNISCED) agradece a colaboração dos seguintes indivíduos e


instituições na elaboração deste manual:

Autora Vilma Tomásia da Fonseca Francisco Manuel

Coordenação Direcção Académica do UNISCED


Universidade Aberta Isced (UNISCED)
Design
Instituto Africano de Promoção da Educação a Distancia (IAPED)
Financiamento e Logística
Revisão Científica e Ornélio Chaúque
Linguística
Ano de Publicação 2018
Local de Publicação UNISCED – BEIRA
UNISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 20 Ano Disciplina/Módulo: Desenho de
base de dados

Índice

1 VISÃO GERAL 1
1.1 Benvindo à Disciplina/Módulo de Contabilidade Geral ......................................... 1
1.2 Objectivos do Módulo ............................................................................................. 1
1.3 Quem deveria estudar este módulo ........................................................................ . 1
1.4 Como está estruturado este módulo ......................................................................... 2
1.5 Ícones de actividade ................................................................................................ 5
1.6 Habilidades de estudo .............................................................................................. 5
1.7 Precisa de apoio? ..................................................................................................... 7
1.8 Tarefas (avaliação e auto-avaliação) ....................................................................... 7
1.9 Avaliação ................................................................................................................. 8

2 TEMA – I: SISTEMA DE BASE DE DADOS. 11


2.1 Introdução, historial dos bancos de dados. ............................................................ 11
2.1.1 Introdução e história dos bancos de dados. ......................................... 11
2.1.2 Sumário ................................................................................................ 13
2.1.3 Exercícios da auto avaliação ............................................................... 14
2.1.4 Exercicios de avaliação ....................................................................... 14
2.2 UNIDADE Temática 2.2.: Base de dados, sistema, sistema de informação, sistema
de base de dados e sistema de gerenciamento de banco de dados. ................................. 15
2.2.1 Introdução ............................................................................................ 15
2.2.2 Sistema................................................................................................. 15
2.2.2.1 Sistema de informação .................................................................. 16
2.2.2.2 Sistema de base de dados .............................................................. 17
2.2.2.2.1 Base de dados .................................................................... 18
2.2.2.2.2 Sistema de gerenciamento de banco ................................ 18
2.2.3 Sumário ................................................................................................ 24
2.2.4 Exercícios do auto avaliação ............................................................... 24
2.2.5 Exercícios de avaliação ....................................................................... 25
2.3 UNIDADE Temática 2.2.: Modelos de base de dados ......................................... 27
2.3.1 Introdução. ........................................................................................... 27
2.3.2 Modelo hierárquico .............................................................................. 28
2.3.3 Modelo em rede ................................................................................... 29
2.3.4 Modelo relacional ................................................................................ 30
2.3.5 Modelo orientado a objeto ................................................................... 31
2.3.6 Sistemas objectos relacionais .............................................................. 32
2.3.7 Sumário ................................................................................................ 32
2.3.8 Exercícios da autoavaliação ................................................................. 33
2.3.9 Exercícios de avaliação ....................................................................... 33

3 TEMA – III: MODELO RELACIONAL. 34


3.1 UNIDADE Temática 3.1: Modela relacional ........................................................ 34
3.1.1 Introdução. ........................................................................................... 34
3.1.2 Conceitos Básicos. ............................................................................... 35
3.1.2.1 Atributos ........................................................................................ 35

iii
UNISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 20 Ano Disciplina/Módulo: Desenho de
base de dados

3.1.2.2 Domínio ......................................................................................... 35


3.1.2.3 Tuplas ............................................................................................ 36
3.1.2.4 Relações ........................................................................................ 36
3.1.2.5 Schemas ......................................................................................... 37
3.1.2.6 Chaves ........................................................................................... 37
3.1.2.7 Restrição de integridade ................................................................ 38
3.1.3 Exercícios de auto avaliação ................................................................ 39
3.1.4 Exercícios de avaliação ....................................................................... 40
3.2 Álgebra relacional ................................................................................................. 41
3.2.1 Introdução. ........................................................................................... 41
3.2.1.1 União ............................................................................................. 41
3.2.1.2 Intercessão ..................................................................................... 42
3.2.1.3 Diferença ....................................................................................... 42
3.2.1.4 Produto cartesiano ......................................................................... 43
3.2.1.5 Seleção .......................................................................................... 44
3.2.1.6 Projeção ......................................................................................... 45
3.2.1.7 Join ................................................................................................ 46
3.2.1.8 Divisão .......................................................................................... 48
3.2.2 Exercícios de auto avaliação ................................................................ 49
3.2.3 Exercícios de avaliação ....................................................................... 50
3.2.4 Normalização e dependência funcional .............................................. 51
3.2.5 Introdução. ........................................................................................... 51
3.2.6 Dependência funcional ........................................................................ 54
3.2.7 Exercícios de auto avaliação ................................................................ 55
3.2.8 Exercícios de avaliação ....................................................................... 54

4 TEMA – IV: MODELAGEM RELACIONAL. 57


4.1 UNIDADE Temática 4.1: Introdução e conceitos. ................................................ 57
4.1.1 Modelo entidade relacionamento. ........................................................ 57
4.1.2 Sumário ................................................................................................ 58
4.1.3 Exercícios da unidade .......................................................................... 60
4.2 UNIDADE Temática 4.1: Diagrama entidade relacionamento. ............................ 62
4.2.1 Diagrama entidade relacionamento (DER). ......................................... 62
4.2.2 Sumário ................................................................................................ 63
4.2.3 Exercícios da unidade .......................................................................... 64
4.3 Exercícios do Tema ............................................................................................... 65
5 TEMA – 4: SQL .................................................................................................... 66
5.1 UNIDADE Temática 4.1: Introdução .................................................................. 66
5.1.1 Introdução ............................................................................................ 67
5.1.2 Historical ............................................................................................. 66
5.1.3 Tipos de dados ..................................................................................... 68
5.2 UNIDADE Temática 4.2.: DDL ............................................................................ 69
5.2.1 DDL ..................................................................................................... 69
5.2.2 Criação de Tabela ................................................................................ 69
5.2.2.1 Valores predefinidos ..................................................................... 70
5.2.2.2 Valores Nulos –NULL .................................................................. 71
5.2.2.3 Restrições ...................................................................................... 71
5.2.2.4 Integridade referencial ................................................................... 73

iv
UNISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 20 Ano Disciplina/Módulo: Desenho de
base de dados

5.2.3 Criação de Schema .............................................................................. 74


5.2.4 Criação de views .................................................................................. 75
5.2.5 Índices (indexes) .................................................................................. 75
5.2.6 Modificando objectos no banco de dados............................................ 77
5.2.7 Renomeando objetos no banco de dados. ............................................ 78
5.2.8 Eliminação de objectos ........................................................................ 78
5.3 DML ...................................................................................................................... 78
5.3.1 Cláusulas .............................................................................................. 79
5.3.2 Operadores Lógicos ............................................................................. 79
5.3.3 Operadores relacionais ........................................................................ 79
5.3.4 Funções de Agregação ......................................................................... 80
5.3.5 Inserção de dados ................................................................................. 80
5.3.6 Atualização de dados ........................................................................... 81
5.3.7 Consultas de dados .............................................................................. 81
5.4 DCL ....................................................................................................................... 82
5.5 Transações e controle de concorrência. ................................................................. 84
5.5.1 Transações ........................................................................................... 85
5.5.2 Controlo de concorrência. .................................................................... 86

6 PL/SQL
6.1 Introdução .............................................................................................................. 90
6.2 Extensões procedurais usose benefícios ................................................................ 90
6.2.1 Reuso de Código .................................................................................. 91
6.2.2 performance de tráfego de rede ........................................................... 91
6.2.3 Elementos chaves da linguagem procedural ........................................ 91
6.2.4 Variáveis e atribuição .......................................................................... 91
6.2.5 Módulos, sub programas e blocos de estruturas. ................................. 92
6.2.6 Passagem de parâmetros ...................................................................... 92
6.2.7 Bloco condicional ................................................................................ 93
6.2.8 Repetição de execução (LOOP) .......................................................... 93
6.2.9 Cursores ............................................................................................... 94
6.2.10 Tratamento de excepções ..................................................................... 95
6.2.11 Procedimentos armazenados (Store procedures) ................................. 96
6.2.12 ..................................................................................................................... 97
6.2.13 Funções (Fuctions) .............................................................................. 98
6.2.14 Gatilhos (Triggers) ............................................................................ 100

7 Exercícios 101

8 Referências 108

v
1 VISÃO GERAL

1.1 Benvindo à Disciplina/Módulo de Desenho de Base de


Dados

1.2 Objectivos do Módulo

Ao terminar o estudo deste módulo de desenho de base de dados,


o estudante deverá ser capaz de:
Criar uma base de dados relacional
Conhecer os modelos de base de dados
existentes
Saber trabalhar com SQL e PL\SQL
Gerir uma base de dados
Conhecer os princípios fundamentais dos
bancos de dados e seus sistemas
gerenciadores.


Saber os conceitos de banco de dados, sistemas de
gerenciamento de banco de dados.

Conhecer a história evolutiva dos bancos de dados.
Objectivos Específicos  
Conhecer e entender os conceitos relacionados a bancos de
dados relacionais.
Conhecer os diferentes tipos de estrutura de armazenamento
dos bancos de dados.

Saber criar e manipular bancos de dados relacionais usando a
linguagem SQL.
Saber criar funcionalidades avançadas trazidas pela extensão
PL/SQL

1.3 Quem deveria estudar este módulo

Este Módulo foi concebido para estudantes do 2º ano do curso de


licenciatura Gestão de Sistemas de Informação do UNISCED.
Poderá

1
ocorrer, contudo, que haja leitores que queiram se actualizar e
consolidar seus conhecimentos nessa disciplina, esses serão bem-
vindos, não sendo necessário para tal se inscrever. Mas poderá
adquirir o manual.

1.4 Como está estruturado este módulo

Este módulo de Desenho de Base de Dados, para estudantes do 2º


ano do curso de licenciatura em Gestão de Sistemas de Informação,
à semelhança dos restantes do UNISCED, está estruturado como
se segue:
Páginas introdutórias
 
 Um índice completo.

Uma visão geral detalhada dos conteúdos do módulo,
resumindo os aspectos-chave que você precisa conhecer para
melhor estudar. Recomendamos vivamente que leia esta
secção com atenção antes de começar o seu estudo, como
componente de habilidades de estudos.
Conteúdo desta Disciplina / módulo

Este módulo está estruturado em Temas. Cada tema, por sua vez
comporta certo número de unidades temáticas ou simplesmente
unidades. Cada unidade temática se caracteriza por conter uma
introdução, objectivos, conteúdos.
No final de cada unidade temática ou do próprio tema, são
incorporados antes o sumário, exercícios de auto-avaliação, só
depois é que aparecem os exercícios de avaliação.
Os exercícios de avaliação têm as seguintes características: Puros
exercícios teóricos/Práticos, Problemas não resolvidos e
actividades práticas, incluído estudo de caso.

2
Outros recursos

A equipa dos académicos e pedagogos do UNISCED, pensando em si,


num cantinho, recôndito deste nosso vasto Moçambique e cheio de
dúvidas e limitações no seu processo de aprendizagem, apresenta
uma lista de recursos didácticos adicionais ao seu módulo para você
explorar. Para tal o UNISCED disponibiliza na biblioteca do seu centro
de recursos mais material de estudos relacionado com o seu curso
como: Livros e/ou módulos, CD, CD-ROOM, DVD. Para além deste
material físico ou electrónico disponível na biblioteca, pode ter
acesso a Plataforma digital moodle para alargar mais ainda as
possibilidades dos seus estudos.

3
Auto-avaliação e Tarefas de avaliação

Tarefas de auto-avaliação para este módulo encontram-se no final


de cada unidade temática e de cada tema. As tarefas dos
exercícios de auto-avaliação apresentam duas características:
primeiro apresentam exercícios resolvidos com detalhes. Segundo,
exercícios que mostram apenas respostas.
Tarefas de avaliação devem ser semelhantes às de auto-avaliação
mas sem mostrar os passos e devem obedecer o grau crescente de
dificuldades do processo de aprendizagem, umas a seguir a outras.
Parte das terefas de avaliação será objecto dos trabalhos de
campo a serem entregues aos tutores/docentes para efeitos de
correcção e subsequentemente nota. Também constará do exame
do fim do módulo. Pelo que, caro estudante, fazer todos os
exercícios de avaliação é uma grande vantagem.

Métodos de avaliação

Em todas as disciplinas serão considerados os seguintes tipos de


avaliações:

Avaliação formativa – será observada os trabalhos


de campo e as participações nos fóruns de
discussões. Para cada actividade a média pesam em
25% sobre avaliação final.
Avaliação sumativa – Ao final do semestre, haverá
uma prova presencial de avaliação o valor da prova
pesa 75% da pontuação total

Comentários e sugestões

Use este espaço para dar sugestões valiosas, sobre determinados


aspectos, quer de natureza científica, quer de natureza didáctico-
Pedagógica, etc, sobre como deveriam ser ou estar apresentadas.
Pode ser que graças as suas observações que, em gozo de
confiança, classificamo-las de úteis, o próximo módulo venha a ser
melhorado.

4
1.5 Ícones de actividade

Ao longo deste manual irá encontrar uma série de ícones nas


margens das folhas. Estes ícones servem para identificar
diferentes partes do processo de aprendizagem. Podem indicar
uma parcela específica de texto, uma nova actividade ou tarefa,
uma mudança de actividade, etc.

1.6 Habilidades de estudo

O principal objectivo deste campo é o de ensinar aprender a


aprender. Aprender aprende-se.

Durante a formação e desenvolvimento de competências, para


facilitar a aprendizagem e alcançar melhores resultados, implicará
empenho, dedicação e disciplina no estudo. Isto é, os bons
resultados apenas se conseguem com estratégias eficientes e
eficazes. Por isso é importante saber como, onde e quando
estudar. Apresentamos algumas sugestões com as quais esperamos
que caro estudante possa rentabilizar o tempo dedicado aos
estudos, procedendo como se segue:

1º Praticar a leitura. Aprender a Distância exige alto domínio de


leitura.

2º Fazer leitura diagonal aos conteúdos (leitura corrida).

3º Voltar a fazer leitura, desta vez para a compreensão e


assimilação crítica dos conteúdos (ESTUDAR).

4º Fazer seminário (debate em grupos), para comprovar se a sua


aprendizagem confere ou não com a dos colegas e com o padrão.

5º Fazer TC (Trabalho de Campo), algumas actividades práticas ou


as de estudo de caso se existirem.

IMPORTANTE: Em observância ao triângulo modo-espaço-tempo,


respectivamente como, onde e quando...estudar, como foi referido
no início deste item, antes de organizar os seus momentos de
estudo reflicta sobre o ambiente de estudo que seria ideal para si:
Estudo melhor em casa/biblioteca/café/outro lugar? Estudo
melhor à noite/de manhã/de tarde/fins-de-semana/ao longo da
semana? Estudo melhor com música/num sítio sossegado/num
sítio barulhento!? Preciso de intervalo em cada 30 minutos, em
cada hora, etc.

5
É impossível estudar numa noite tudo o que devia ter sido
estudado durante um determinado período de tempo; Deve
estudar cada ponto da matéria em profundidade e passar só ao
seguinte quando achar que já domina bem o anterior.

Privilegia-se saber bem (com profundidade) o pouco que puder ler


e estudar, que saber tudo superficialmente! Mas a melhor opção é
juntar o útil ao agradável: Saber com profundidade todos
conteúdos de cada tema, no módulo.

Dica importante: não recomendamos estudar seguidamente por


tempo superior a uma hora. Estudar por tempo de uma hora
intercalado por 10 (dez) a 15 (quinze) minutos de descanso
(chama-se descanso à mudança de actividades). Ou seja que
durante o intervalo não se continuar a tratar dos mesmos assuntos
das actividades obrigatórias.

Uma longa exposição aos estudos ou ao trabalho intelectual


obrigatório pode conduzir ao efeito contrário: baixar o rendimento
da aprendizagem. Por que o estudante acumula um elevado
volume de trabalho, em termos de estudos, em pouco tempo,
criando interferência entre os conhecimentos, perde sequência
lógica, por fim ao perceber que estuda tanto mas não aprende, cai
em insegurança, depressão e desespero, por se achar injustamente
incapaz!

Não estude na última da hora; quando se trate de fazer alguma


avaliação. Aprenda a ser estudante de facto (aquele que estuda
sistematicamente), não estudar apenas para responder a questões
de alguma avaliação, mas sim estude para a vida, sobre tudo,
estude pensando na sua utilidade como futuro profissional, na área
em que está a se formar.

Organize na sua agenda um horário onde define a que horas e que


matérias deve estudar durante a semana; Face ao tempo livre que
resta, deve decidir como o utilizar produtivamente, decidindo
quanto tempo será dedicado ao estudo e a outras actividades.

É importante identificar as ideias principais de um texto, pois será


uma necessidade para o estudo das diversas matérias que
compõem o curso: A colocação de notas nas margens pode ajudar
a estruturar a matéria de modo que seja mais fácil identificar as
partes que está a estudar e Pode escrever conclusões, exemplos,
vantagens, definições, datas, nomes, pode também utilizar a
margem para colocar comentários seus relacionados com o que
está a ler; a melhor altura para sublinhar é imediatamente a seguir
à compreensão do texto e não depois de uma primeira leitura;

6
Utilizar o dicionário sempre que surja um conceito cujo significado
não conhece ou não lhe é familiar;

1.7 Precisa de apoio?

Caro estudante, temos a certeza que por uma ou por outra razão, o
material de estudos impresso, lhe pode suscitar algumas dúvidas
como falta de clareza, alguns erros de concordância, prováveis
erros ortográficos, falta de clareza, fraca visibilidade, página
trocada ou invertidas, etc). Nestes casos, contacte os serviços de
atendimento e apoio ao estudante do seu Centro de Recursos (CR),
via telefone, sms, E-mail, se tiver tempo, escreva mesmo uma carta
participando a preocupação.
Uma das atribuições dos Gestores dos CR e seus assistentes
(Pedagógico e Administrativo), é a de monitorar e garantir a sua
aprendizagem com qualidade e sucesso. Dai a relevância da
comunicação no Ensino a Distância (EAD), onde o recurso as TIC se
torna incontornável: entre estudantes, estudante – Tutor, estudante
– CR, etc.
As sessões presenciais são um momento em que você caro
estudante, tem a oportunidade de interagir fisicamente com staff
do seu CR, com tutores ou com parte da equipa central do
UNISCED indigitada para acompanhar as sua sessões presenciais.
Neste período pode apresentar dúvidas, tratar assuntos de
natureza pedagógica e/ou administrativa.
O estudo em grupo, que está estimado para ocupar cerca de 30%
do tempo de estudos a distância, é muita importância, na medida
em que lhe permite situar, em termos do grau de aprendizagem
com relação aos outros colegas. Desta maneira ficará a saber se
precisa de apoio ou precisa de apoiar aos colegas. Desenvolver
hábito de debater assuntos relacionados com os conteúdos
programáticos, constantes nos diferentes temas e unidade
temática, no módulo.

1.8 Tarefas (avaliação e auto-avaliação)

O estudante deve realizar todas as tarefas (exercícios, actividades e


auto avaliação), contudo nem todas deverão ser entregues, mas é
importante que sejam realizadas. As tarefas devem ser entregues
duas semanas antes das sessões presenciais seguintes.
Para cada tarefa serão estabelecidos prazos de entrega, e o não
cumprimento dos prazos de entrega, implica a não classificação do
estudante. Tenha sempre presente que a nota dos trabalhos de

7
campo conta e é decisiva para ser admitido ao exame final da
disciplina/módulo.
Os trabalhos devem ser entregues ao Centro de Recursos (CR) e os
mesmos devem ser dirigidos ao tutor/docente.
Podem ser utilizadas diferentes fontes e materiais de pesquisa,
contudo os mesmos devem ser devidamente referenciados,
respeitando os direitos do autor.

O plágio1 é uma violação do direito intelectual do(s) autor(es). Uma


transcrição à letra de mais de 8 (oito) palavras do testo de um
autor, sem o citar é considerado plágio. A honestidade, humildade
científica e o respeito pelos direitos autorais devem caracterizar a
realização dos trabalhos e seu autor (estudante do UNISCED).

1.9 Avaliação

Muitos perguntam: Com é possível avaliar estudantes à distância,


estando eles fisicamente separados e muito distantes do
docente/tutor! Nós dissemos: Sim é muito possível, talvez seja uma
avaliação mais fiável e consistente.
Você será avaliado durante os estudos à distância que contam com
um mínimo de 90% do total de tempo que precisa de estudar os
conteúdos do seu módulo. Quando o tempo de contacto presencial
conta com um máximo de 10%) do total de tempo do módulo. A
avaliação do estudante consta detalhada do regulamentado de
avaliação.
Os trabalhos de campo por si realizados, durante estudos e
aprendizagem no campo, pesam 25% e servem para a nota de
frequência para ir aos exames.
Os exames são realizados no final da cadeira disciplina ou modulo e
decorrem durante as sessões presenciais. Os exames pesam no
mínimo 75%, o que adicionado aos 25% da média de frequência,
determinam a nota final com a qual o estudante conclui a cadeira.
A nota de 10 (dez) valores é a nota mínima de conclusão da cadeira.
Nesta cadeira o estudante deverá realizar pelo menos 2 (dois)
trabalhos e 1 (um) (exame).
Algumas actividades práticas, relatórios e reflexões serão utilizados
como ferramentas de avaliação formativa.
Durante a realização das avaliações, os estudantes devem ter em
consideração a apresentação, a coerência textual, o grau de
cientificidade, a forma de conclusão dos assuntos, as

1
Plágio - copiar ou assinar parcial ou totalmente uma obra literária, propriedade
intelectual de outras pessoas, sem prévia autorização.

8
recomendações, a identificação das referências bibliográficas
utilizadas, o respeito pelos direitos do autor, entre outros.
Os objectivos e critérios de avaliação constam do Regulamento de
Avaliação.

9
2 TEMA – I: SISTEMA DE BASE DE DADOS.

UNIDADE Temática 1.1. Introdução, historial dos bancos de dados.

UNIDADE Temática 1.2. Base de dados, sistema, sistema de


informação, sistema de base de dados e sistema de gerenciamento de
banco de dados.

UNIDADE Temática 1.3. Modelos de banco de dados.

2.1 Introdução, historial dos bancos de dados.

Objectivos
específicos Ao completar esta unidade, você deverá ser capaz de:

Descrever o historial evolutivo de bancos de dados e sistemas de


gerenciamentos.

2.1.1 Introdução e história dos bancos de dados.

Os dados são um dos ativos mais importantes de qualquer


organização. Ele é usado e coletado em praticamente todos os
lugares, desde empresas que tentam determinar padrões de
consumo com base no uso do cartão de crédito, até agências
espaciais que tentam coletar dados de outros planetas. Os dados,
por mais importantes que sejam, precisam de um software robusto,
seguro e altamente disponível que possa armazená-los e processá-
los rapidamente. A resposta a esses requisitos é um banco de dados
sólido e confiável. O uso de software de gerenciamento de banco de
dados é generalizado, mas é dado como certo pelos bilhões de
usuários diários em todo o mundo. Sua presença está em toda parte
desde a recuperação de dinheiro por meio de um caixa eletrônico
até o acesso a crachás em um local de escritório seguro. (Neeraj
Sharma, at all; 2010).

11
Segundo (Quickbase, 2018), A necessidade por organização de
informação surgiu desde os primórdios da nossa historia. No passado,
elaborados sistemas de banco de dados foram desenvolvidos por
grandes escritórios governamentais e privados, bibliotecas, hospitais e
organizações empresariais. Alguns dos princípios básicos desses
sistemas de armazenamento ainda são usados hoje. Já na década de
1960, o banco de dados informatizado começaram a surgir, quando o
uso de computadores se tornou uma opção mais econômica para
organizações privadas. Havia dois modelos de dados populares nesta
década, sendo um modelo de rede chamado CODASYL e um modelo
hierárquico chamado IMS. Um sistema de banco de dados que provou
ser um sucesso comercial foi o sistema SABRE que foi usado pela IBM
para ajudar a American Airlines a gerenciar seus dados de reservas. De
1970 a 1972, E.F. Codd publicou um artigo importante para propor o
uso de um modelo de banco de dados relacional, e suas ideias
mudaram a forma como as pessoas pensavam sobre bancos de dados.
Em seu modelo, o esquema do banco de dados, ou organização lógica,
é desconectado do armazenamento de informações físicas, e isso se
tornou o principal padrão dos sistemas de banco de dados.

(Quickbase, 2018) Descreve que na década de 1970, dois grandes


protótipos de bancos de dados relacionais foram criados entre os
anos de 1974 e 1977, e eles foram o Ingres, desenvolvido na UBC, e
o System R, criado na IBM. O Ingres usou uma linguagem de
consulta conhecida como QUEL e levou à criação de sistemas como
o Ingres Corp, o MS SQL Server, o Sybase, o PACE da Wang e o
Britton-Lee. Por outro lado, o System R utilizou a linguagem de
consulta SEQUEL e contribuiu para o desenvolvimento de SQL / DS,
DB2, Allbase, Oracle e Non-Stop SQL. Foi também nessa década que
os sistemas de gerenciamentos de bancos de dados (SGBD) tornou-
se um termo reconhecido. Prosseguindo com a senda do historial,
em 1976, um novo modelo de banco de dados chamado Entity-
Relationship (entidade relacionamento), ou ER, foi proposto por
Peter Chen. Esse modelo possibilitou que os designers se
concentrassem na aplicação de dados, em vez de na estrutura lógica
da tabela. Na década 80, a Structured Query Language, ou SQL,
tornou-se a linguagem de consulta padrão.

Os sistemas de bancos de dados relacionais tornaram-se um sucesso


comercial, pois o rápido aumento nas vendas de computadores
impulsionou o mercado de banco de dados, e isso causou um grande
declínio na popularidade dos modelos de bancos de dados
hierárquicos e de rede. O DB2 tornou-se o principal produto de
banco de dados da IBM e a introdução do IBM PC resultou nos
estabelecimentos de muitas novas empresas de banco de dados e no
desenvolvimento de produtos como PARADOX, RBASE 5000, RIM,

12
Dbase III e IV, Database Manager OS / 2. e Watcom SQL. (Quickbase,
2018)

Início da década de 1990, após um abalo na indústria de bancos de


dados, a maioria das empresas sobreviventes vendeu produtos de
bancos de dados complexos a preços elevados. Nessa época, novas
ferramentas de cliente para o desenvolvimento de aplicativos foram
lançadas, e estas incluíam o Oracle Developer, o PowerBuilder, o VB e
outros. Diversas ferramentas para produtividade pessoal, como ODBC e
Excel / Access, também foram desenvolvidas. Protótipos para Object
Database Management Systems, ou ODBMS, foram criados no início
dos anos 90. Nos meados da década de 1990, O advento da Internet
levou ao crescimento exponencial da indústria de banco de dados. Os
usuários médios de desktop começaram a usar sistemas de banco de
dados cliente-servidor para acessar sistemas de computador que
continham dados legados. (Quickbase, 2018).

Nos finais dos anos 90, o aumento do investimento em negócios on-


line resultou em um aumento na demanda por conectores de banco
de dados da Internet, como Front Page, Active Server Pages, Java
Servelets, Dream Weaver, ColdFusion, Enterprise Java Beans e
Oracle Developer 2000. GCC, MySQL, Apache e outros sistemas
trouxeram uma solução open source para a Internet. Com o
aumento do uso da tecnologia de ponto de venda, o processamento
de transações on-line e o processamento analítico on-line
começaram a amadurecer. (Quickbase, 2018)

Na década de 2000, Embora a indústria da Internet tenha


experimentado um declínio no início dos anos 2000, os aplicativos de
banco de dados continuaram a crescer. Novas aplicações interativas
foram desenvolvidas para PDAs, transações de ponto de venda e
consolidação de fornecedores. Atualmente, as três principais empresas
de banco de dados do mundo ocidental são Microsoft, IBM e Oracle. O
processo evolutivo continua até os dias de hoje.

2.1.2 Sumário
O processo de evolutivo das tecnologias na área de armazenamento
dos dados deu-se muito pela necessidade de melhoria de processos e
métodos que permitissem melhorar o armazenamento, acesso e
manipulação de informações. O necessidade de armazenamento vem
desde primórdios da nossa historia, evoluindo para grandes salas de
organizações governamentais e privadas no formato físico, passando
para meios de armazenamentos

13
digitais em ficheiros de computadores. Contudo o processo evolutivo
continuo visando melhorar as formas de armazenamento, tal situação
originou a criação de métodos como em rede, hierárquico, relacional,
orientado em objeto. Visto que a necessidade de aprimorar ainda
continua, novos métodos surgiam ao longo dos tempos.

2.1.3 Exercícios da auto avaliação


1. Os sistemas de armazenamentos informatizados começaram
a surgem nas décadas?
A. 80. B. 60. C. 90. D.70.

2. Com massificação do uso de sistemas informatizados nos


processo de armazenamento de dados, existiam dois
sistemas muitos utilizados. Quais foram?
A. CODASYL e IMS. B. SABRE e System R. C. Sybase e PACE.
D. DB2 e Allbase.

3. O sistema da IBM que ajudou a American Airlines a gerenciar


seus dados de reservas foi:
A. Sybase. B. System R C. SABRE. D. CODASYL.

4. Qual das opções abaixo faz parte dos primeiros protótipos de


sistemas do modelo relacional?
A. DB2. B. System R. C. SABRE. D. ALLBASE.

5. O modelos relacional foi por proposto por?


A. Cood. B. Peter Chen. C. SYBASE. D. Microsoft.

Respostas: 1-B, 2-A, 3 - C, 4 –B, 5 - A .

2.1.4 Exercicios de avaliação

1. O system R foi desenvolvida por?


A. Microsoft. B. IBM. C. UBC. D. Sybase.

2. O System R usou como linguem de consulta?


A. SEQUEL. B. QUEL. C. SQL. D.PL.

3. O modelo entidade relacionamento foi proposto por:


A. Cood. B. Peter Chen. C. SYBASE. D. Microsoft.

14
4. A linguagem de consulta que tornou padrão foi?

A. QUEL. B. SEQUEl. C. PL. D. SQL.

Respostas: 1 - B, 2 - A, 3 - B, 4 - D.

2.2 UNIDADE Temática 2.2.: Base de dados, sistema, sistema de


informação, sistema de base de dados e sistema de
gerenciamento de banco de dados.

Ao completar esta unidade, você deverá ser capaz de:


 Descrever o que é um banco de dados,
sistema, sistema de banco de dados e sistema
de gerenciamento de banco de dados.
 
Conhecer o conceito de dados e informação;
Objectivos  
específicos  Entender a estrutura de um sistema de banco de dados.
 
Conhecer a estrutura de um sistema de gerenciamento de banco de dados.

2.2.1 Introdução
Todo e qualquer sistema trabalha para um propósito, os sistemas de base de
dados tem com propósito o armazenamento e processamento de informação.
A capacidade de armazenamento está associada ao banco de dados e o
processo de manipulação associado um conjunto de ferramentas.

2.2.2 Sistema
Um Sistema é um conjunto de elementos que trabalham de forma
colaborativa por um determinado propósito. Nele, cada componente atua
como parte importante no sistema, sendo responsável por determinadas
atividades. As atividades executadas por um determinado componente
podem servir como entrada para outro componente. Os sistemas operam
num determinado ambiente.

15
2.2.2.1 Sistema de informação
Refere-se a Sistemas de Informação todo o sistema que seja ele automatizado
ou manual, que tenha por objetivo coletar, processar, transmitir e disseminar
dados que representam informação.

Para (TURBAN, 2004 apud wikipedia, 2018), o sistema de informação coleta,


processa, armazena, analisa e transmite informações com um objetivo
específico atuando dentro de um contexto.

Elas possuem inputs geralmente dados e instruções e disponibilizam como


saídas (outputs) relatórios, cálculos, etc.

O sistema de informação, opera dentro de um ambiente, que não seja


necessariamente computadorizado, mesmo que atualmente a maioria, sejam
grandes sistemas computacionais.

Dois componentes diretamente ligados aos sistemas de informação são os


dados e as informações.

Informações são dados oferecidos de uma forma significativa e útil para os


indivíduos ou seja, elas resultam do processamento de dados, já os Dados
esses representam fatos brutos que reportam eventos que estão ocorrendo
nas organizações ou no ambiente físico, antes de terem sido organizados e
arranjados de uma forma que as pessoas possam entendê-las e usá-las. Ou
sejam são fatos que nada significam isoladamente.

Dentre as várias formas de classificação, os sistemas de informações podem


ser classificados como formais ou informais.

Formais, funcionam a base de padrões incluindo processo pré-definidos,


entrada e saídas padronizadas e definições fixas.

As informais, não estão restritas a padrões fixos, podem assumir diversas


formas, que vão desde por exemplo, uma rede de comunicação informal em
uma empresa, até um grupo de amigos que troca mensagens eletrónicas
eletronicamente.

Tipos Sistema de informação usados nas empresas

Numa organização, os sistemas de informação podem ajudar desde os


processos de coletas, armazenamento e manipulação de informação, até aos
processos que auxiliem na tomada de decisões estratégicas. Elas podem
melhorar o fluxo de informação interna e externamente.

Os principais tipos sistemas de informação nas organizações podem ser:

16
1. Sistema de processamento de transações (SPT) - Sistemas que Têm a
função de realizar e registrar as transações e informações necessárias
para funcionamento da organização. Auxiliando a condução do
negócio, constituindo a base operacional da organização.
2. Sistemas de informações gerenciais (SIG) - responsáveis pelo
desenvolvimento de relatórios sobre o desempenho atual da
organização, permitindo monitorar e controlar a empresa e até
mesmo prever o seu desempenho futuro.

3. Sistema de apoio à decisão (SAD utilizados para dar suporte as


atividades dos gestores (supervisão, controlo, tomada de decisão),
elas utilizam como entradas informações obtidas pelo SPT e SIG e
também informações externas.

4. Sistema de apoio ao executivo (SAE): utilizadas para suportar as


atividades de planeamento de longo prazo concebidos para auxiliar na
tomada de decisão não estruturada através do uso avançado de
gráficos e comunicações.

2.2.2.2 Sistema de base de dados

Um sistema de base de dados é um sistema composto pelo banco de dados e


um conjunto de programas que permitem acesso, armazenamento e
manipulação desses dados. Quer isso dizer que um sistema de base da dados
composto por uma coleção organizada de dados e programas que
possibilitam a manipulação de esses dados. O esquema abaixo apresenta uma
visão do que pode ser o sistema de banco de dados.

Figura 1- Sistema de base de dados – FONTE: autor, 2018.

17
2.2.2.2.1 Base de dados
Banco da dados nada mais são do que uma coleção de informação
organizada, ou seja uma repositório contendo um conjunto de informação
organizada. O enfoque dos bancos de dados estão na informação organizada.
quer isso dizer que, conjunto de informação não organizada, não pode ser
considerada um banco de dados.

Características de bancos de dados.


Segundo (Kriegel & Trukhnov, 2003), um banco de dados deve ter as
seguintes características desejáveis:
1. Capacidade necessária - A função de banco de dados é armazenar
dados, é necessário que as capacidades de armazenamentos estejam
salvaguardadas para suprir a demanda de armazenamento.
2. Segurança adequada – sendo os dados um recurso valioso para as
organizações, é preciso que os mesmos estejam seguros.
3. Ambiente multiusuário – os dados de dados devem permitir acesso a
múltiplos usuários. Contudo é importante manter mecanismo de
segurança que controlem esses acessos múltiplos com objetivos de
garantir a integridade dos dados.
4. Efetividade – para além de armazenamento de dados, é importante
que estejam disponíveis mecanismos que permitam o rápido acesso e
manipulação dos dados.
5. Escalabilidade – os dados precisam ser flexíveis e adaptáveis
facilmente as mudanças de negócios da organização, Permitindo que
as mudanças não afetem significativamente os mesmo.
6. Amigável ao usuário – os bancos de dados não devem estar
restringidos aos programadores e pessoal técnico, elas devem se
desenvolvidas para ser fácies de usar por qualquer usuário da mesma.

2.2.2.2.2 Sistema de gerenciamento de banco


Dados armazenados de nada servem se não podem ser acessados e
manipulados. Bancos de dados são simplesmente coleções de dados
organizados, o seu acesso, manipulação é feito a partir de um componente do
sistema de base de dados chamado sistema de gerenciamento de bancos de
dados ou simplesmente SGBD.
Sistema de gerenciamento de bancos de dados (SGBD) é um conjunto de
programas que controlam o acesso, armazenam, gerenciam, permitem o
acesso aos dados do banco de dados, (Neeraj Sharma, 2010).

18
Figura 2 - Função de SGBD – FONTE : autor, 2018

Arquiteturas

As arquiteturas de bancos de dados foram evoluindo a medida que novos


desafios e necessidades foram surgindo. Segundo (Osvaldo Kotaro Takai, 2005) as
arquiteturas de banco de dados podem ser descritas de seguinte forma:

1. Plataformas centralizadas. Na arquitetura centralizada, existe um


computador com grande capacidade de processamento, o qual é o
hospedeiro do SGBD e emuladores para os vários aplicativos. Esta
arquitetura tem como principal vantagem a de permitir que muitos
usuários manipulem grande volume de dados. Sua principal
desvantagem está no seu alto custo, pois exige ambiente especial para
mainframes e soluções centralizadas.

2. Sistemas de Computador Pessoal - PC. Os computadores pessoais


trabalham em sistema stand-alone, ou seja, fazem seus processamentos
sozinhos. No começo esse processamento era bastante limitado, porém,
com a evolução do hardware, tem-se hoje PCs com grande capacidade de
processamento. Eles utilizam o padrão Xbase e quando se trata de SGBDs,
funcionam como hospedeiros e terminais. Desta maneira, possuem um
único aplicativo a ser executado na máquina. A principal vantagem
destaarquitetura é a simplicidade.

3. Banco de Dados Cliente-Servidor. Na arquitetura Cliente-Servidor, o


cliente (front_end) executa as tarefas do aplicativo, ou seja, fornece a
interface do usuário (tela, e processamento de entrada e saída). O
servidor (back_end) executa as consultas no DBMS e retorna os

19
resultados ao cliente. Apesar de ser uma arquitetura bastante popular,
são necessárias soluções sofisticadas de software que possibilitem o
tratamento de transações, as confirmações de transações (commits),
desfazer transações (rollbacks), linguagens de consultas (stored
procedures) e gatilhos (triggers). A principal vantagem desta arquitetura
é a divisão do processamento entredois sistemas, o que reduz o
tráfego de dados na rede.

4. Banco de Dados Distribuídos (N camadas). Nesta arquitetura, a


informação está distribuída em diversos servidores. Cada servidor atua
como no sistema cliente-servidor, porém as consultas oriundas dos
aplicativos são feitas para qualquer servidor indistintamente. Caso a
informação solicitada seja mantida por outro servidor ou servidores, o
sistema encarrega-se de obter a informação necessária, de maneira
transparente para o aplicativo, que passa a atuar consultando a rede,
independente de conhecer seus servidores. Exemplos típicos são as
bases de dados corporativas, em que o volume de informação é muito
grande e, por isso, deve ser distribuído em diversos servidores. Porém,
não é dependente de aspectos lógicos de carga de acesso aos dados,
ou base de dados fracamente acopladas, em que uma informação
solicitada vai sendo coletada numa propagação da consulta numa
cadeia de servidores. A característica básica é a existência de diversos
programas aplicativos consultando a rede para acessar os dados
necessários, porém, sem o conhecimento explícito de quais servidores
dispõem desses dados.

5. Three-Schema - A arquitetura mais difundida na literatura é a


Arquitetura “Three-Schema” (também conhecida como arquitetura
ANSI/SPARC), proposta por Tsichritzis & Klug em 1978. A meta desta
arquitetura é separar as aplicações de usuários da base de dados física.
Nesta arquitetura, esquemas podem ser definidos em três níveis:

20
Figura 3 - Arquitetura Three-Schema – FONTE: (Osvaldo Kotaro Takai, 2005).

I. O nível interno tem um esquema interno que descreve a estrutura de


armazenamento físico da base de dados. O esquema interno usa um
modelo de dados físico e descreve todos os detalhes de
armazenamento de dados e caminhos de acesso à base de dados;

II. O nível conceitual tem um esquema conceitual que descreve a


estrutura de toda a base de dados. O esquema conceitual é uma
descrição global da base de dados, que omite detalhes da estrutura de
armazenamento físico e se concentra na descrição de entidades, tipos
de dados, relacionamentos e restrições. Um modelo de dados de alto-
nível ou um modelo de dados de implementação podem ser utilizados
neste nível.

III. O nível externo ou visão possui esquemas externos ou visões de


usuários. Cada esquema externo descreve a visão da base de dados de
um grupo de usuários da base de dados. Cada visão descreve,
tipicamente, a parte da base de dados que um particular grupo de
usuários está interessado e esconde deste o restante da base de
dados. Um modelo de dados de alto-nível ou um modelo de dados de
implementação podem ser usados neste nível.

21
Figura 4 - Visão interna do SGBD – FONTE: (Juliano, 2014).

Capacidades
Os sistemas de gerenciamentos de bancos de dados são responsáveis por
uma serie de atividades de gestão de bancos de dados. Para que ela possa
executar essas atividades elas deve ter algumas caraterísticas e capacidades.

Segundo (Osvaldo Kotaro Takai, 2005), um SGBD deve ter as seguintes


capacidades:

1. Controle de Redundância - no processamento tradicional de arquivos,


muitos grupos de usuários mantêm seus próprios arquivos para
manipular suas aplicações de processamento, que pode provocar o
armazenamento de informações redundantes, tal situação pode
causar problemas de duplicação de esforços, desperdício de espaço e
Inconsistência causada pela alteração em alguns arquivos e em outros
não, ou em todos os arquivos, porém, de maneira independente;

2. Compartilhamento de Dados: SGBD’s multiusuários devem fornecer


controlo de concorrência para assegurar que atualizações simultâneas
resultem em modificações corretas.

3. Restrições de Acesso Multiusuário: quando múltiplos usuários


compartilham uma base de dados, é comum que alguns usuários não
autorizados não tenham acesso a todas as Informações da base de
dados. O SGBD deve ter a capacidade de definir e controlar as
restrições definidas para permitir que simplesmente usuários
autorizados tenham acesso as informações disponíveis para elas.

4. Fornecimento de Múltiplas Interfaces: devido aos vários tipos de


usuários, com variados níveis de conhecimento técnico, um SGBD deve
fornecer uma variedade de interfaces para atendê-los.

5. Representação de Relacionamento Complexo entre Dados: uma base


de dados pode possuir uma variedade de dados que estão inter-

22
relacionados de muitas maneiras. Um SGBD deve ter a capacidade de
representar uma variedade de relacionamentos complexos entre
dados, bem como recuperar e modificar dados relacionados de
maneira fácil e eficiente;

6. Reforçar Restrições de Integridade: muitas aplicações de base de


dados terão certas restrições de integridade de dados. A forma mais
elementar de restrição de integridade é a especificação do tipo de
dado de cada item. Existem tipos de restrições mais complexas.

7. Fornecer Backup e Restauração: Um SGBD deve fornecer recursos


para restauração caso ocorram falhas de hardware ou software. O
subsistema de backup e restauração do SGBD é o responsável pela
restauração.

Profissionais e Atividades envolvidas em um SGBD.

(Osvaldo Kotaro Takai, 2005), descreve os seguinte profissionais e actividades:

I. Administrador da Base de Dados: em qualquer organização onde muitas


pessoas compartilham muitos recursos, existe a necessidade de um
administrador chefe para supervisionar e gerenciar estes recursos. Num
ambiente de base de dados, o recurso primário é a própria base de dados
e os recursos secundários são o próprio SGBD e softwares relacionados. A
administração desses recursos é de responsabilidade do DBA (“Database
Administrator”). O DBA é responsável por autorizar acesso à base de
dados e coordenar e monitorar seu uso. O DBA é responsável por
problemas, tais como, quebra de segurança ou baixo desempenho. Em
grandes organizações, o DBA é auxiliado por técnicos;

II. Projetistas da Base de Dados: os projetistas de base de dados têm a


responsabilidade de identificar os dados a serem armazenados na Base de
Dados e escolher estruturas apropriadas para representar e armazenar
tais dados. Estas tarefas são geralmente executadas antes que a base de
dados seja utilizada. É responsabilidade destes projetistas obter os
requisitos necessários dos futuros usuários da base. Tipicamente, os
projetistas interagem com cada grupo de usuários em potencial e
definem visões da base de dados para adequar os requisitos e
processamentos de cada grupo. Estas visões são entãoanalisadas e,
posteriormente, integradas para que, ao final, o projeto da base de dados
possa ser capaz de dar subsídio aos requisitos de todos os grupos de
usuários. Analistas de Sistemas e Programadores de Aplicação:

A. analistas de sistemas determinam os requisitos de usuários


finais, especialmente dos usuários comuns, e desenvolvem
especificações das transações para atender a estes requisitos;

23
B. programadores de aplicações implementam estas
especificações produzindo programas e, então, testam,
depuram, documentam e mantêm estes programas. Analistas e
programadores devem estar familiarizados com todas as
capacidades fornecidas pelo SGBD para desempenhar estas
tarefas.

III. Usuários Finais - existem profissionais que precisam ter acesso à base
de dados para consultar, modificar e gerar relatórios. A base de dados
existe para estes usuários. Existem algumas categorias de usuários
finais:

A. usuários ocasionais: ocasionalmente fazem acesso à base de


dados, mas eles podem necessitar de diferentes informações a
cada vez que fazem acesso. Eles podem usar uma linguagem
de consulta sofisticada para especificar suas requisições e são,
tipicamente, gerentes de médio ou alto-nível;
B. usuários comuns ou paramétricos: estes usuários realizam
operações padrões de consultas e atualizações, chamadas
TRANSAÇÕES PERMITIDAS, que foram cuidadosamente
programadas e testadas. Estes usuários constantemente
realizam recuperações e modificações na base de dados;
C. usuários sofisticados: incluem engenheiros, analistas de
negócios e outros que procuraram familiarizar-se com as
facilidades de um SGBD para atender aos seus complexos
requisitos;

IV. Profissionais de Apoio:


A. Projetistas e Implementadores de SGBD.
B. Desenvolvedores de Ferramentas.
C. Operadores de Manutenção.

2.2.3 Sumário
Um sistema de base de dados inclui o banco de dados e o conjunto de
programas que permitem a manipulação desses dados. A necessidade
de organização e estruturação de informações foi um dos factores que
contribui para o desenvolvimento de banco de dados e sistema de
gerenciamentos dos bancos. Atores com Ted Codd e Peter Chen
participaram de forma activa no processo de criação de padrões e
soluções na área de bancos de dados.

2.2.4 Exercícios do auto avaliação


1. Sistema?

24
A. Conjunto de elemento trabalhando de forma colaborativa
para atingir determinado objetivo.
B. Uma coleção desorganizada de dados.
C. Uma coleção não organizada de dados ou informação.
D. Conjunto de elemento trabalhando sem objetivos comuns

2. Base de dados?
A. Um coleção de dados.
B. Uma coleção de desorganizada de dados.
C. Uma coleção organizada de dados.
D. Conjunto de elemento trabalhando por objetivo comum.

3. Qual opções não representa uma Características de base de


dados?
A. Escalabilidade. B. Segurança. C. capacidade de
armazenamento. D. vulnerabilidade.

4. Sistema de base de dados?


A. Um coleção de dados e conjunto de ferramentas.
B. Uma coleção de desorganizada de dados.
C. Uma coleção organizada de dados e conjunto de ferramentas.
D. Conjunto de elemento trabalhando por objetivo individual.

5. Qual o objetivos dos sistemas de informação?


A. Coletar, manipular e disseminar informação.
B. Desenvolver estruturas de complexas de dados.
C. Reduzir a capacidade de processamento do homem D.
Aumentar a capacidade de processamento do homem
Respostas: 1- A, 2- C, 3- D, 4-C, 5-A.

2.2.5 Exercícios de avaliação


1. Sistema de informação?
A. Todo sistema cujo objectivo é a manipulação
de informação.
B. Todo resultado do processamento de dados.
C. Coleção de dados e programas.
D. Conjunto de interfaces que permitem a comunicação
com outros sistemas.

25
2. Um Dados representa?
A. Factos brutos que descrevem eventos e factos.
B. Resultado do processamento dos dados.
C. Instância de informação.
D. Descrição informal das tecnologias.

3. Uma Informação representa:


A. Dados brutos que descrevem eventos e factos.
B. Resultado do processamento dos dados.
C. Instância de dados.
D. Descrição formal do conhecimento

4. Qual o objecto de estudo do sistema de informação.

A. Informação. B. Sistema. C. Dado. D. Processamento.

5. Selecione a opção mais correcta: SGBD é:

A. Cunjuto de programas que permite a manipulação dos dados


do banco de dados.

B. Banco de dados e um cunjuto de programas que permitem a


manipulação desses dados.

C. Resposítorio de informação que podem ser utilizados


posteriormente.

D. Conjunto de elementos que trabalham de forma colaboractiva


para atinguir um objectivo comum, sendo a informação o objecto
a ser manipulado.

Respostas: 1- A, 2-A , 3-B, 4 -A, 5-A .

26
2.3 UNIDADE Temática 2.2.: Modelos de base de dados

Ao completar esta unidade, você deverá ser capaz de:


banco de dados e sua
Conhecer e entender os diferentes modelos de
estrutura de armazenamento de informação.

Objectivos
específicos

2.3.1 Introdução.

Os modelos de dados, definem arquitetura interna dos dados no


banco de dados, ou seja elas definem a forma como os dados no
banco de dado estarão organizados. Ao longo dos tempos, foram
vários os modelos de dados que foram surgindo, cada um com suas
limitações e vantagens. Os modelos primeiros modelos a serem
implementado foram o hierárquico e modelo em rede, contudo
devido as suas limitações foram superados pelo modelo relacional,
que até os dias de hoje, este é o modelo de dados mais implementado
nos bancos de dados.
para (Neeraj Sharma, 2010), a evolução dos modelos de dados,
podem ser dividas historicamente em nove épocas.

1. Rede – 1970.
2. Hierárquico – 1960 – 1970.
3. Relacional – 1980.
4. Entidade relacionamento -1970
5. Relacional estendido - 1980
6. Semântico - 1970 - 1980
7. Orientado objeto 1980- 1990
8. Objeto relacional – 1980 - 1990
9. Semiestruturado (XML) -1990 – presente.

O modelo hierárquico voltou novamente sendo muito utilizado


atualmente, isso devido a novas tendências de base de dados as
chamadas NoSql, na qual o SQL não é utilizada como linguagem para
acesso e manipulação de dados. Alguns exemplos de sistemas de
gerenciamento de bancos de dados que usam esse padrão são:
MongoBD, Firebase só para citar alguns.

27
2.3.2 Modelo hierárquico

Como referenciado por (Osvaldo Kotaro Takai, 2005), o modelo


hierárquico foi o primeiro a ser reconhecido como um modelo de
dados. Seu desenvolvimento somente foi possível devido à
consolidação dos discos de armazenamento endereçáveis, pois esses
discos possibilitaram a exploração de sua estrutura de endereçamento
físico para viabilizar a representação hierárquica das informações.

Nesse modelo de dados, os dados são estruturados em hierarquias ou


árvores. Os nós das hierarquias contêm ocorrências de registros, onde
cada registro é uma coleção de campos (atributos), cada um contendo
apenas uma informação. O registro da hierarquia que precede a outros
é o registro-pai, os outros são chamados de registros-filhos. Neste
modelo, um nó filho, só pode conter um nó pai, contudo um nó pai
pode conter vários nós filhos.

Uma ligação é uma associação entre dois registros. O relacionamento


entre um registro-pai e vários registros-filhos possui cardinalidade 1:N
(1 para muito). Os dados organizados segundo este modelo podem ser
acessados segundo uma sequência hierárquica com uma navegação do
topo para as folhas e da esquerda para a direita. Um registro pode
estar associado a vários registros diferentes, desde que seja replicado.

A replicação possui duas grandes desvantagens: pode causar


inconsistência de dados quando houver atualização e o desperdício de
espaço é inevitável.
O sistema comercial mais divulgado no modelo hierárquico foi o
Information Management System da IBM Corp(IMS).

Grande parte das restrições e consistências de dados estava contida


dentro dos programas escritos para as aplicações. Era necessário
escrever programas na ordem para acessar o banco de dados.

Um diagrama de estrutura de árvore descreve o esquema de um


banco de dados hierárquico. Tal diagrama consiste em dois
componentes básicos: Caixas, as quais indicam os tipos de registros e
as Linhas que indicam às ligações entre os tipos de registros.

28
Figura 5 - Diagrama de estrutura de árvore Cliente - Conta
Corrente –
FONTE: (Osvaldo Kotaro Takai, 2005)

2.3.3 Modelo em rede

(Osvaldo Kotaro Takai, 2005),realça que o modelo em redes surgiu


como uma extensão ao modelo hierárquico, eliminando o conceito de
hierarquia e permitindo que um mesmo registro estivesse envolvido
em várias associações.

No modelo em rede, os registros são organizados em grafos onde


aparece um único tipo de associação (set) que define uma relação 1:N
(um para muito) entre 2 tipos de registros: proprietário e membro.
Desta maneira, dados dois relacionamentos 1:N entre os registros A e
D e entre os registros C e D é possível construir um relacionamento
M:N entre A e D.

Ao contrário do modelo em hierárquico, o modelo em rede permite


que um nó filho tenha mas do que um pai, permitindo assim
relacionamento de muitos para muito (n:m).

O gerenciador Data Base Task Group (DBTG) da CODASYL (Committee


on Data Systems and Languages) estabeleceu uma norma para este
modelo de banco de dados, com linguagem própria para definição e
manipulação de dados. Os dados tinham uma forma limitada de
independência física. A única garantia era que o sistema deveria
recuperar os dados para as aplicações como se eles estivessem
armazenados na maneira indicada nos esquemas.

29
Os geradores de relatórios da CODASYL também definiram sintaxes
para dois aspectos chaves dos sistemas gerenciadores
de dados: concorrência e segurança. O mecanismo de segurança
fornecia uma facilidade na qual parte do banco de dados (ou área)
pudesse ser bloqueada para prevenir acessos simultâneos, quando
necessário.
A sintaxe da segurança permitia que uma senha fosse associada a cada
objeto descrito no esquema. Ao contrário do Modelo Hierárquico, em
que qualquer acesso aos dados passa pela raiz, o modelo em rede
possibilita acesso a qualquer nó da rede sem passar pela raiz.

No Modelo em Rede o sistema comercial mais divulgado é o CAIDMS


da Computer Associates. O diagrama para representar os conceitos do
modelo em redes consiste em dois componentes básicos: Caixas, que
identificam aos registros e Linhas, que identificam às associações.

O modelo em rede tinha como desvantagem, a complexidade de


sistema e dificuldade de implementação e manutenção adicionado a
independência estrutural fraca.

Figura 6 - Diagrama de estrutura de dados Cliente - Conta


Corrente –
FONTE: (Osvaldo Kotaro Takai, 2005)

2.3.4 Modelo relacional


(Osvaldo Kotaro Takai, 2005), Sustenta que o modelo relacional
apareceu devido às seguintes necessidades:

Aumentar a independência de dados nos sistemas


gerenciadores de banco de dados;

30
Prover um conjunto de funções apoiadas em álgebra relacional
para armazenamento e recuperação de dados;
Permitir processamento ad hoc (Processamento dedicado,
exclusivo).
O modelo relacional, tendo por base a teoria dos conjuntos e álgebra
relacional, foi resultado de um estudo teórico realizado por CODD
(investigador da IBM) . O Modelo relacional revelou-se ser o mais
flexível e adequado ao solucionar os vários problemas que se colocam
no nível da concepção e implementação da base de dados.
A estrutura fundamental do modelo relacional são as relações
(tabela). Uma relação é constituída por um ou mais atributos
(campos) que definem o tipo de dados a armazenar. Cada instância
do esquema (linha) é chamada de tupla (registro). O modelo
relacional não tem caminhos pré-definidos para se fazer acesso aos
dados como nos modelos em rede e hierárquico. Ela, implementa
estruturas de dados organizadas em relações. Porém, para trabalhar
com essas tabelas, algumas restrições precisaram ser impostas para
evitar aspectos indesejáveis, como: Repetição de informação,
incapacidade de representar parte da informação e perda de
informação. Essas restrições são: integridade referencial, chaves e
integridade de junções de relações.

Figura 7- Tabelas do modelo relacional Cliente - Conta Corrente –


FONTE: (Osvaldo Kotaro Takai, 2005)

2.3.5 Modelo orientado a objeto


Os bancos de dados orientados a objeto começaram a se tornar
comercialmente viáveis em meados de 1980. A motivação para seu
surgimento está em função dos limites de armazenamento e
representação semântica impostas no modelo relacional.
A habilidade para criar os tipos de dados necessários é uma
característica das linguagens de programação orientadas a objetos.

31
Contudo, estes sistemas necessitam guardar representações das
estruturas de dados que utilizam no armazenamento permanente. A
estrutura padrão para os bancos de dados orientados a objetos foi
feita pelo Object Database Management Group (ODMG). Esse grupo é
formado por representantes dos principais fabricantes de banco de
dados orientados a objeto disponíveis comercialmente. Membros do
grupo têm o compromisso de incorporar o padrão em seus produtos.
O termo Modelo Orientado a Objetos é usado para documentar o
padrão que contém a descrição geral das facilidades de um conjunto
de linguagens de programação orientadas a objetos e a biblioteca de
classes que pode formar a base para o Sistema de Banco de Dados.
Quando os bancos de dados orientados a objetos foram introduzidos,
algumas das falhas perceptíveis do modelo relacional pareceram ter
sido solucionadas com esta tecnologia e acreditava-se que tais bancos
de dados ganhariam grande parcela do mercado. Hoje, porém,
acredita-se que os Bancos de Dados Orientados a Objetos serão
usados em aplicações especializadas, enquanto os sistemas relacionais
continuarão a sustentar os negócios tradicionais, onde as estruturas
de dados baseadas em relações são suficientes. O diagrama de classes
UML serve geralmente como o esquema para o modelo de dados
orientado a objetos.

2.3.6 Sistemas objectos relacionais

A área de atuação dos sistemas Objeto-Relacional tenta suprir a


dificuldade dos sistemas relacionais convencionais, que é o de
representar e manipular dados complexos, visando ser mais
representativos em semântica e construções de modelagens. A
solução proposta é a adição de facilidades para manusear tais dados
utilizando-se das facilidades disponibilizadas pela SQL (Structured
Query Language) existentes. Para tal, foi necessário adicionar:
extensões dos tipos básicos no contexto SQL; representações para
objetos complexos no contexto SQL; herança no contexto SQL e
sistema para produção de regras. (Osvaldo Kotaro Takai, 2005).

2.3.7 Sumário
Modelos de dados, definem como os dados estarão organizados noa
bancos de dados. Cada modelo de dados arquiteta os dados segundo
suas normas. Modelo relacional é até os dias de hoje o modelo mais
implementado, nele os dados são organizados em tabelas (entidades),
com um conjunto de atributos e registros (linhas ou tuplas). Outros
modelos como o em rede, organizam seus dados numa arquitetura de
rede, definindo suas restrições e regras.

32
2.3.8 Exercícios da autoavaliação
1. Qual dos modelos abaixo continua sendo o mais utilizado
atualmente.
A. Relaciona. B. registro. C. Hierárquico. D.
Tuplas.

2. Qual das opções abaixo não representa um modelo de dados?


A. Relaciona. B. registro. C. Hierárquico. D.
objecto-ralacional.

3. O modelo relacional organiza seus dados usando


A. Tabelas. B. arvore. C. Rede. D. Registro.

4. O modelo Hierárquico organiza seus dados usando


B. Tabelas. B. arvore. C. Rede. D. grafos.

5. O modelo em rede organiza seus dados usando


C. Tabelas. B. arvore. C. Redes. D. objetos.
Respostas: 1 -A, 2 - B, 3 -A, 4 -B, 5 – C.

2.3.9 Exercícios de avaliação

1. O modelo orientado a objeto organiza seus dados usando:


A. Tuplas. B. grafos. C. Rede. D. objetos.

2. Dos modelos de dados abaixo, qual deles foi o primeiro a ser


considerado como um modelo de dados.
A. Relaciona. B. registro. C. Hierárquico. D.
objecto-ralacional.

3. Dos modelos de dados abaixo, qual deles não permite que


um nó filho tenha mais de um nó pai.
A. Relaciona. B. registro. C. Hierárquico. D.
Rede .

4. No modelo relacional, tuplas


identificam. A. Cada coluna da tabela.
B. Cada linha da tabela.
C. Informação contida em cada coluna da tabela.
D. Todas as colunas da tabela.

5. Os modelos de dados definem:

33
A. As Formas de acesso aos dados nos bancos de dados
B. As Formas de manipulação de dados nos bancos de dados
C. As formas como os dados estarão organizados nos bancos de
dados.
D. As formas de restrição de segurança nos bancos de dados.
Respostas: 1- D, 2 – C, 3 – C, 4- B, 5 – C.

3 TEMA – III: MODELO RELACIONAL. UNIDADE

Temática 3.1. Introdução e conceitos.

UNIDADE Temática 3.2. Álgebra relacional.

UNIDADE Temática 3.2. dependência funcional e normalização.

3.1 UNIDADE Temática 3.1: Modela relacional

Ao completar esta unidade, você deverá ser capaz de:


 
 Descrever e compreender o modelo de dados relacional.


Conhecer o conceitos e função de relação, atributos, domínio e outros
conceitos envolvidos no modelo relacional.
Objectivos
específicos
3.1.1 Introdução.
Dentre todos os modelos de dados existentes, o modelo relacional
foi e continua sendo o modelo mais utilizado para armazenamento
de dados. Proposto por Edgar Codd em 1970 como resultado de
uma pesquisa feita na IBM empresa América de tecnologias. Neste
modelo o principal elemento é a relação, composta por um conjunto
de atributos e tuplas também conhecidas como instâncias ou
registros. As relações relacionam-se umas com as outras com
objetivo de forma um sistema mais robusto.

34
3.1.2 Conceitos Básicos.

Termos com relação, atributos, domínio, chave primária, ect. São


termos que fazem parte integrante do modelo relacional.

3.1.2.1 Atributos

Um atributo representa uma característica de um objeto ou dado. Ele


deve ter um nome que permitirá que tal característica do objeto possa
ser acessado. O nome deve ser significativo, isto é, deve representar
algo do objecto. Por exemplo, os atributos de uma pessoa podem ser:
nome, apelido, data de nascimento, etc. No modelo relacional, os
atributos definem os nomes das colunas nas tabelas.

Figura 8 - Relação Aluno, cabeçalho atributo, corpo tuplas.


FONTE : autor, 2018.

A figura acima, representa uma relação aluno com cabeçalho ou


atributos num,nome, data_nasc, contacto, curso,apelido, ano_insc. A
relação possui um corpo com três tuplas (linhas). Para cada tupla
existe um valor da linha associado ao atributo, por exemplo o valor
2017, pertece a terceira linha e está asssociado so atributo ano_insc.

3.1.2.2 Domínio
Um domínio representa um conjunto de valores atómicos em que tais
valor são todos do mesmo tipo ou possuem propriedades em comum.
Ao conjunto de todos os valores possíveis para um determinado
atributo dá-se o nome de domínio. Os dados do domínio são atómicos
ou simples, porque não podem sofrer mais nenhuma decomposição.

Os domínios são aplicados sobre os atributos das relações. Por exemplo, o


domínio do atributo curso da relação

35
aluno, é composto por todos os cursos disponíveis. O domínio do
atributo nome é composto por todos valores que podem ser
resultados de caracteres.

Uma forma simples de definir um domínio, é dizer que o domínio


representa o tipo de dados que o atributo está associado. Se um
atributo é definido como inteiro, significa que seu domínio é o
conjunto dos números inteiros.

3.1.2.3 Tuplas
Uma tupla ou linha de uma tabela, é um conjunto ordenado de valores
que representam características de dados num determinado período
do tempo. Podemos ver uma tupla como uma instância da tabela, que
associa valores aos atributos da tabela.

3.1.2.4 Relações
Uma relação representa o elemento principal do modelo relacional.
Ela consiste num corpo e um cabeçalho. O cabeçalho consiste num
conjunto fixo de atributos A1, A2, A3,…….,.An, sendo que para um
atributo Ai, corresponde somente a exatamente um único numa
determinada relação. O Corpo de uma relação corresponde a um
conjunto variável no tempo de tuplas.

Uma relação possui um grau e uma cardinalidade. O grau da relação é


definido pelo número de atributos enquanto a cardinalidade pelo
número de tuplas ou linhas da relação. Diferente do grau que possui
um número fixo, a cardinalidade varia no tempo podendo aumentar
ou diminuir. A relação aluno possui um grau fixo sete e uma
cardinalidade variável de três.

Uma relação deve possuir as seguintes propriedades:


Ter um nome único dentro do mesmo domínio.
• Ter de zero a n linhas, cuja ordenação é indiferente dado que
não são identificadas pela sua posição.
• Ser composta por um ou mais atributos, onde a ordem não é
importante, pois identificam-se pelo nome e não pela sua
posição;
• Cada um dos atributos contém valores definidos dentro
determinado domínio particular, o que quer dizer que num
mesmo atributo os dados são obrigatoriamente todos do
mesmo tipo;
• Numa mesma relação não podem existir dois atributos com o
mesmo nome;
• Cada relação tem que ter uma chave primária.

36
• A intersecção de uma coluna com uma linha corresponde a
um valor. Não é permitida a existência de grupos de atributos
repetidos;
• Os dados, ou valores, são sempre atómicos.

3.1.2.5 Schemas
Um esquema no modelo relacional, é uma descrição formal de todos
bancos de dados relacionais e todas as relações existentes entre elas.
(Neeraj Sharma, 2010)

3.1.2.6 Chaves
O modelo relacional utiliza chaves para identificar tuplas. As chaves
são utilizadas para garantir a segurança e restrições no banco de
dados. Essas restrições garantiram a consistência e integridade dos
dados. Existem três tipos de chaves: Chaves candidatas, chaves
primárias e chaves estrangeiras.

A. Chaves candidatas.
É um identificador único para uma tupla numa relação. Por
predefinição, uma relação teve conter pelo menos uma chave
candidata.
Segundo (C.J.Date, apude Neeraj Sharma, 2010), uma chave
candidata pode ser difinida da seguinte forma:
Seja R uma relação com atributos A1, A2, A3, . . . . An. O conjuto
K={Ai, Aj . . . . . , Ak} de R é chamado de chave candidata de R se e
so se satisfaça as seguintes propriedades independentes:
I. Singularidade: em qualquer período do tempo, a
relação R, não pode conter duas tuplas com mesmo
valor Ai, mesmo valor Aj e mesmo valor Ak.
II. Minimalidade: Nenhum dos atributos Ai, Aj….Ak,
pode ser descartado de K sem a destruição da
propriedade singularidade.

B. Chave primária
Representa um identificador único de um tupla numa relação.
Uma chave primária é uma chave candidata escolhida para
representar a relação no banco de dados e para fornecer uma
maneira única de presentar cada tupla na relação. Uma relação
possui sempre uma chave primária.
Os sistemas de gerenciamento de banco de dados permitem a
definição da chave primária no momento da criação das tabelas.
Contudo ela também pode ser especificada despois do processo
de criação das tabelas. A sub-linguagem DDL geralmente permite
a definição de chave primária a partir da construção
PRIMARY KEY.

37
Na relação aluno definida nas sessões anteriores, o atributo
num (número do aluno) pode ser utilizada como chave
primária da relação.

C. Chave estrangeira
Uma chave estrangeira, é um atributo ou conjunto de atributos
numa relação R1 cujos valores devem ser iguais a chave primária
de uma determinada relação R2. Na relação Aluno, o atributo
curso pode ser considerado como uma chave estrangeira se
considerar-mos que existem uma tabela que armazena a
informação dos cursos. Sendo assim, o atributo curso está
referenciando um atributo de uma outra tabela (tabela cursos).

3.1.2.7 Restrição de integridade


Usam-se as restrições de integridade para proteger e garantir e a
consistência dos dados em Banco de dados relacionais. Ela garante
que dados representem correctamente a realidade modelada.

1. Restrição de integridade da relação

Essa restrição define que os atributos que compõem uma


chave primária não podem conter o valor nulo. Por exemplo se,
duas ou mais linhas tiverem o valor nulo nos atributos
definidos como chave primária, não seria possível distingui-las
entre si. Por definição, não é possível identificar um valor nulo
por representar um valor desconhecido, pelo que uma chave
primária nunca pode ser nula. Se a chave primária for
composta, nenhum dos seus elementos pode ter o valor nulo.
Esta regra assegura que é sempre possível identificar cada um
das tuplas duma relação.

2. Restrição de integridade referencial


A integridade referencial é uma restrição definida entre duas
relações com o objectivo de salvaguardar a consistência dos
dados entre as tuplas das relações envolvidas. De um modo
simples, pode-se dizer que a integridade referencial determina
que uma linha numa relação A que está referida a uma outra
relação B tem que obrigatoriamente estar ligada a uma linha
existente na relação B.

3. Restrição de domínio
Essa restrição permite Definir o conjunto de valores possíveis
ou permitidos por um atributo.

4. Restrição do nulo.

38
Define que um atributo não pode receber valor nulo.

5. Restrição de unicidade (UNIQUE).


Serve para definir que cada valor de um atributo seja ser único.

6. Restrição de verificação (CHECK)


Define uma condição na relação que verificada sempre que os
dados são manipulados.

3.1.3 Exercícios de auto avaliação

1. Um relação é composta por:


A. Tabela e corpo.
B. Cabeçalho e corpo.
C. Cabeçalho e atributos.
D. Corpo e tuplas.

2. Cabeçalho de uma relação representa:


A. Um conjunto de relações.
B. Conjunto de tuplas.
C. Conjunto de atributos.
D. Domínios da relação.

3. Atributo de relação representa:


A. Uma instância da relação.
B. Uma característica da relação.
C. O valor de uma tupla.
D. Uma linha da relação.

4. Uma tupla de uma relação representa:


A. Um domínio da relação.
B. Uma característica da relação.
C. O valor de uma tupla.
D. Uma linha da relação.

5. Corpo de uma relação.


A. Um conjunto de relações.
B. Conjunto de tuplas.
C. Conjunto de atributos.
D. Domínios da relação.

Respostas: 1- B, 2- C, 3- B, 4- D, 5- B.

39
3.1.4 Exercícios de avaliação

1. Um domínio no modelo relacional define:


A. Os valores suportados por um determinado atributo.
B. Número de atributos de uma relação.
C. Número de linhas de uma relação.
D. Uma característica da relação.

2. O grau de uma relação define:


A. Os valores suportados por um determinado atributo.
B. Número de atributos de uma relação.
C. Número de linhas de uma relação.
D. Uma característica da relação.

3. A cardinalidade de uma relação define:


A. Os valores suportados por um determinado atributo.
B. Número de atributos de uma relação.
C. Número de linhas de uma relação.
D. Uma característica da relação.

4. As restrições de integridade servem para:


A. Definir um conjunto de regras com objectivo de garantir a
consistências e integridade dos dados no banco de dados.
B. Definir o modelo de construção de bancos de dados.
C. Definir esquemas de armazenamento dos dados.
D. Definir um conjunto de regras para desenvolvimento
de novos modelos de banco de dados.

5. A restrição de integridade da relação impõe que:


A. A chave primária de uma relação não pode conter
valores nulos.
B. Um conjunto de valores aceites num determinado atributo.
C. Um conjunto de condições que são analgizadas durante
a manipulação de dados.
D. Um determinado atributo não pode contem
valores repetidos.

Respostas: 1-A , 2- B , 3- C , 4- A , 5- A.

40
3.2 Álgebra relacional

Ao completar esta unidade, você deverá ser capaz de:

 
Descrever e compreender os conceitos abordados na álgebra relacional.


Conhecer  o saber aplicar as operações deponibilizadas pela álgebra
Objectivos relaciona.
específicos

3.2.1 Introdução.

A álgebra relacional representa um conjunto de operadores utilizados


para manipulação de relações. Os operadores, utilizam uma ou duas
relações como entrada (input) para produzir uma relação como saída.

Segundo (Neeraj Sharma, 2010), Codd definiu 8 operadores devido em


dois grupos de 4 cada:
Conjunto de operadores tradicionais - União, interseção,
diferença e produto cartesiano.
Os operadores relacionais especiais - seleção, projeção, divisão
e junção.

3.2.1.1 União
A união entre duas relações univeis-compativelmente R1 e R2, R1
union R2 , resulta numa nova relação com todas as tuplas de R1 e R2.

univeis-compativelmente significa que as duas relações tem o mesmo


grau e atributos das relações pertencerem o mesmo domínio.

A união goza da propriedade comutativa e associativa, ela é


formalmente representada por ᴗ.

41
Figura 9 - Exemplo de uma união – FONTE: (Neeraj Sharma, 2010)

3.2.1.2 Intercessão
A união entre duas relações uníveis-compativelmente R1 e R2, R1
interception R2, resulta num conjuto de tuplas que pertencem ambos
a R1 e R2. A interceção goza da prorpidade comutativa e associativa.
Formalmente representada por ᴖ.

Figura 10 - Exemplo de intercessão de duas tuplas – FONTE: (Neeraj


Sharma, 2010)

3.2.1.3 Diferença
A diferença entre duas relações uníveis-compativelmente R1 e R2, R1
Minus R2, resulta num conjuto de tuplas que pertencem a R1 e não a
R2. A diferença não goza das prorpidade comutativa e associativa.
Formalmente representada por ̶.

42
Figura 11 - Operação diferença. FONTE: (Neeraj Sharma, 2010).

3.2.1.4 Produto cartesiano


O produto cartezinos entre duas relações R1 e R2, R1 TIMES R2, é um
conjunto de todas as tuplas t, sendo que t, é uma concatenação de te
tupls r pertencentes a R1 e tuplas s pertencentes a R2.

A concatenação de de uma tupla r = (r1, r2, ….., rm) e tuplas s = (Sm+1,


Sm+2, ……, Sm+n) é uma tupla t = (r1, r2, ……, rm, Sm+1, Sm+2, …., Sm+n).

As relações R1 e R2 não precisam ser univeis-compativelmente.

Formalmente o producto cartesino tem a seguinte notação: X.

Se R1, tiver um grau n and cardinalidade N1 e R2 tiver grau m e


cardinalidade N2 então a relação resultante R3 terá um grau (n+m) e
cardinalidade (N1*N2).

43
Figura 12 - representação do produto cartesiano. FONTE: (Neeraj
Sharma, 2010).

3.2.1.5 Seleção
O operador seleção é unário, ela seleciona um subconjunto de tuplas
de uma relação. O subconjunto de tuplas resultantes, deve satisfazer a
condição de seleção ou o predicado.

A notação formal para operação seleção é:

σ <Condição de seleção> ( <relação>)

Onde <condição de seleção> é

<Atributo> <operador de comparação> <valor constante> /


<atributo> [AND/OR/NOT <atributo> <operador de comparação>
<valor constante>/ <atributo>….)

Os operadores de comparação podem ser <, >, <=, >=, =, <>. Contudo,
dependendo do domínio do atributo, certos operadores podem não
ser válidos.

A relação resultante da operação seleção terá um grau igual ao da


relação onde se aplica a seleção. A cardinalidade da relação resultante
será menor ou igual ao da relação onde se aplica a seleção.

A seleção goza da propriedade comutativa.

44
Figura 13 - Aplicação da operação seleção – FONTE: (Neeraj Sharma,
2010)

3.2.1.6 Projeção
O operador projeção é também um operador unário, ela seleciona um
conjunto de atributo de uma determinada relação. Tuplas duplicadas
resultantes da seleção são eliminadas.

A notação formal para a projeção é definida da seguinte forma:

∏ <lista de atributo> (<relação>)

Onde <lista de atributos>, representa um subconjunto de atributos


existente na relação.

O grau da relação resultante igual com o número de atributos


definidos na <lista de atributos> porque somente os atributos
especificados apareceram no resultado. A cardinalidade é menor ou
igual com a cardinalidade da relação inicial.

A projeção não goza da propriedade comutativa.

45
Figura 14 – Demostração da operação projeção. FONTE: (Neeraj
Sharma, 2010)

3.2.1.7 Join
A operação join (junção), concatena duas relações baseando-se na
condição ou predicado da junção. As relações devem possuir no
mínimo um atributo em comum pertencente ao mesmo domínio para
que a junção aconteça.

A notação forma para uma junção é.

Onde <condição de junção> é:

<atributo From R> <operador de comparação><atributo FROM S>

Os operadores de comparação podem ser <, >, <=, >=, =, <>,


dependendo do domínio dos atributos.

Se a relação R tiver os atributos A1, A2,…, An e a relação S tiver os


atributos B1, B2,…, Bm e o atributo Ai e o atributo Bj tiverem o mesmo
domínio, podemos definir uma operação de junção entre a relação R e
a relação S em uma condição de junção entre o atributo Ai e Bj. O
resultado é outra relação T que contém todas as tuplas t tal que t é a
concatenação de uma tupla r pertencente a R e uma tupla s
pertencente a S se a condição de junção for verdadeira. Esse tipo de
operação de junção também é chamado de associação teta.

46
Segue-se da definição que o resultado de uma junção deve incluir dois
atributos idênticos do ponto de vista de seus valores. Se um desses dois
atributos for eliminado, o resultado será chamado de junção natural.

Existem outro tipos de operações de junção. A que mais


frequentemente é usada é a equijoin, que significa que o operador de
comparação é =.

Podem existir situações onde nem todas a tuplas da relação R, possuem


tuplas correspondentes na relação S. Essas tuplas não apareceram no
resultado da junção entre R e S. Contudo, existem situações onde se
deseja que todas a tuplas aparecem no resultado da junção, para tal uma
nova forma de junção foi criada, a chamada de Outer Join (junçã
externa). O outer Join possui três variantes de junção:

Left outer join – onde todas as tuplas de R apareceram no


resultado.
Right outer join – onde todas as tuplas de S apareceram no
resultado
Full outer join – nessa todas as tuplas de R e S apareceram no
resultado.

Se não existir nenhuma tupla correspondente, o sistema considerará


que que existe uma hipotética tupla com todos valores de atributos
definidos como nulo que será usados para a concatenação.

Figura 15 - Exemplo de uma operação de junção. FONTE: (Neeraj


Sharma, 2010).

47
Figura 16 - Exemplo da junção Natural e right outer join. FONTE:
(Neeraj Sharma, 2010)

3.2.1.8 Divisão
O operador divisão divide uma relação R1 de grau (n+m) por uma
relação R2 de grau me produz com resultado uma relação de grau n.
Divisão é uma operação da álgebra relacional utilizada quando se
deseja extrair de uma relação R1 uma determinada parte que possui
as características (valores de atributos) da relação R2.

A notação formal de uma divisão é: ÷.

Figura 17 - representação da operação divisão. FONTE: (Neeraj


Sharma, 2010)

48
3.2.2 Exercícios de auto avaliação
1. No âmbito da álgebra relacional, os símbolos π (Pi) e σ
(Sigma) são utilizados, respectivamente, em operações de:

A. Projeção ou particionamento horizontal; e seleção


ou particionamento vertical.
B. Projeção ou particionamento vertical; e seleção
ou particionamento horizontal.
C. Seleção ou particionamento horizontal; e projeção
ou particionamento vertical.
D. Seleção ou particionamento vertical; e projeção
ou particionamento horizontal.

2. As operações da álgebra relacional Seleção, Projeção e


Produto Cartesiano são implementadas na linguagem SQL,
respectivamente, pelas cláusulas:
A. Select, From e Where.
B. Select, Where e From.
C. Where, From e Select.
D. Select, Select e Join.

3. A operação da álgebra relacional que possibilita escolher


quais colunas ou atributos de uma tabela devem ser
exibidos em uma consulta é o(a)
A. União.
B. Junção.
C. Seleção.
D. Projeção.

4. Quando é necessário efetuar operações de consulta em,


por exemplo, duas tabelas de um banco de dados relacional
que tenham uma chave em comum (chave primária/chave
estrangeira), a operação a ser realizada é a
A- Canalização.
B- Indentação.
C- Junção natural.
D- Materialização.
Respostas: 1-A, 2-D, 3-D, 4-C.

49
3.2.3 Exercícios de avaliação

1. Dentre os diversos tipos de operações disponibilizadas em um


banco de dados relacional está, por exemplo, a realização de
consultas sobre valores armazenados em tabelas. A operação
que consiste em definir quais devem ser as colunas a serem
exibidas em uma consulta é a
A. Divisão.
B. Multiplexação.
C. Projeção.
D. Seleção.

2. Na Álgebra Relacional, o número de tuplas resultante de uma


operação de projeção (projection) sobre uma relação R é
sempre
A. Igual ou menor que o número de tuplas da relação R
B. Igual ao número de tuplas da relação R
C. Maior que o número de tuplas da relação R
D. Metade do número de tuplas da relação R ~

3. No âmbito dos bancos de dados, a álgebra relacional é uma


linguagem de consulta procedural. As operações chamadas
unárias da álgebra relacional são:
A. Projetar, selecionar e renomear
B. Renomear, união e diferença de conjuntos
C. Produto cartesiano, divisão e atribuição
D. Diferença de conjuntos, projetar e atribuição

4. A Álgebra Relacional define várias operações. Algumas delas


operam apenas uma relação (unárias), outras operam com
duas relações (binárias). As operações project (projeção),
union (união) e select (seleção) são, respectivamente,
operações
A. Unária, unária, unária
B. Binária, unária, binária
C. Binária, binária, unária
D. Unária, binária, unária
Respostas : 1 -C , 2 -A , 3 -A , 4 - D.

50
3.2.4 Normalização e dependência funcional

Ao completar esta unidade, você deverá ser capaz de:


 Descrever ecompreender os conceitos normalização e dependências
funcionais.
 
Conhecer o saber aplicar as 3 formas normais.
Objectivos
específicos
3.2.5 Introdução.
Normalização é um processo a partir do qual se aplicam regras a todas
as tabelas do banco de dados com o objetivo de evitar falhas no
projeto, como redundância de dados e mistura de várias informações
numa mesma relação.

Normalização é um procedimento aplicado no processo de desenho de


bancos de dados relacionais com objectivo de converter os esquemas
relacionais em formas mais desejáveis.
Ela é usada para remover as anomalias de redundâncias nas relações e
os problemas que podem advir disso, como:
Anomalia de inserção.
Anomalia de eliminação
Anomalia de actualização.

A tabela abaixo apresenta um exemplo de redundância de dados onde


informação de estudante e faculdade são armazenadas juntos. Neste
exemplo, armazena-se mesma informação de faculdade algumas vezes
para cada estudante de uma determinada faculdade

Id_estudante estudante faculdade Nível_faculdade


0001 João Manuel Ciências 4
0002 Luis Jorge letras 5
0003 Lucas Carlos TICs 1
0004 Jose Marcos TICs 1

Anomalia de inserção
Essa anomalia acontece quando a inserção de registro de dados se
torna impossível a não ser que se tenha que adicionar alguns dados
não relacionados aos registros dos dados. Por exemplo inserir
informação sobre estudante obrigaria que se inserisse informações
sobre a faculdade e nível.

51
Além disso, existirá repetição de informação em diferentes
localizações no banco de dados uma vez que o nível precisará ser
inserido para cada estudante.

Id_estudante estudante faculdade Nível_faculdade


0005 Pedro chico Ciências

Anomalia de eliminação

Está anomalia acontece quando a eliminação de um registro de dados


resulta na perca de algum dado não relacionado que fora adicionado
como parte do registro que foi eliminado da tabela. Como exemplo, a
eliminação de todas as linhas que referem a estudantes de uma dade
faculdade, perde-se a informação mapeada da faculdade e o nível
daquela faculdade.

Id_estudante estudante faculdade Nível_faculdade


0003 Lucas Carlos TICs 1
0004 José Marcos TICs 1

Anomalia de actualização
Está anomalia ocorre quando atualização de dados para uma entidade
num determinado lugar pode criar inconsistência com dados
redundantes num outro lugar na tabela. Por exemplo, se actualizar-se
o nível para ‘1’ do id_estudante 0003, então a faculdade de ciências
passa ter conflito de informação com dois níveis 1 e 4.

Id_estudante estudante faculdade Nível_faculdade


0001 João Manuel Ciências 4
0003 Lucas Carlos Ciências 1

A aplicação de técnicas de normalização visam eliminar os problemas


das anomalias descritas acima. Portanto, projetar um banco de dados,
se temos um modelo de entidades e relacionamentos e a partir dele
construirmos o modelo relacional seguindo as regras de
transformação corretamente, o modelo relacional resultante estará,
provavelmente, normalizado. Mas, nem sempre os modelos que nos
deparamos são implementados dessa forma e, quando isso acontece,
o suporte ao banco de dados é dificultado.

Em ambos os casos, é necessário aplicar as técnicas de normalização,


ou para normalizar (segundo caso citado), ou apenas para validar o
esquema criado (primeiro caso citado). Aplicando as regras descritas a

52
seguir, é possível garantir um banco de dados mais íntegros, sem
redundâncias e inconsistências.
Existem 3 formas normais mais conhecidas:

1FN - 1ª Forma Normal:

Todos os atributos de uma tabela devem ser atômicos, ou seja, a


tabela não deve conter grupos repetidos e nem atributos com mais de
um valor.
Para colocar a relação nesta forma normal, é preciso:
1. Identificar a chave primária da tabela assim como identificar a
coluna que tem dados repetidos e removê-la;
2. De seguida criar-se uma nova tabela com a chave primária para
armazenar o dado repetido e finalmente;
3. Criar-se uma relação entre a tabela principal e a tabela
secundária.

Considere a tabela Pessoas a seguir.

PESSOAS = {ID+ NOME + ENDERECO + TELEFONES}

Ela contém a chave primária ID e o atributo TELEFONES é um


atributo multivalorado e, portanto, a tabela não está na 1FN.
Para deixá-la na 1FN, vamos criar uma nova tabela chamada TELEFONES
que conterá PESSOA_ID como chave estrangeira de PESSOAS e TELEFONE
como o valor multivalorado que será armazenado.

PESSOAS = { ID + NOME + ENDERECO }

TELEFONES = { PESSOA_ID + TELEFONE }

2FN - 2ª Forma Normal:

Para que uma relação esteja na 2FN, ela deve primeiramente estar na
1FN. Além disso, todos os atributos não chaves da tabela devem
depender unicamente da chave primária não podendo depender
apenas de parte dela.
Para deixar na segunda forma normal, é preciso:
1. Identificar as colunas que não são funcionalmente
dependentes da chave primária da tabela.
2. Em seguida, remove-las da tabela principal e criar uma nova
tabela com esses dados.

Por exemplo, considere a tabela ALUNOS_CURSOS a seguir.

ALUNOS_CURSOS={ID_ALUNO+ID_CURSO+NOTA+DESCRICAO_CURSO
}

53
Na tabela acima, o atributo DESCRICAO_CURSO depende apenas da
parte da chave primária (ID_CURSO) uma vez que a chave primária é
ID_ALUNO+ID_CURSO. Dessa forma, a tabela não está na 2FN.
Para deixa-la na 2FN, cria-se uma nova tabela chamada CURSOS que
tem como chave primária ID_CURSO e atributo DESCRICAO retirando,
assim, o atributo DESCRICAO_CURSO da tabela ALUNOS_CURSOS.

ALUNOS_CURSOS = {ID_ALUNO + ID_CURSO + NOTA}

CURSOS = {ID_CURSO + DESCRICAO}

3FN - 3ª Forma Normal

Para que uma relação esteja na 3FN, é necessário que esteja na 2FN.
Adicionado a isso, os atributos não chave de uma relação devem ser
mutuamente independentes e dependentes unicamente e
exclusivamente da chave primária.
Para atingir essa forma normal, é preciso:
1. Identificar as colunas que são funcionalmente dependentes das
outras colunas não chave e extraí-las para outra tabela.
Considere, como exemplo, a tabela FUNCIONARIOS a seguir.

FUNCIONARIOS = { ID + NOME + ID_CARGO + DESCRICAO_CARGO }

O atributo DESCRICAO_CARGO depende exclusivamente de


ID_CARGO (atributo não chave) e, portanto, deve-se criar uma nova
tabela com esses atributos. Dessa forma, fica-se com as seguintes
tabelas:

FUNCIONARIOS = { ID + NOME + ID_CARGO }

CARGOS = {ID_CARGO + DESCRICAO}

3.2.6 Dependência funcional


Dependência funcional, denotada por X→Y, entre dois conjuntos de
atributos X e Y que são subconjuntos de R, especifica uma restrição
sobre as possíveis tuplas que podem existir na relação instância r de R.
A restrição estabelece que para quaisquer tuplas t1 e t2 em r, se
t1[X]=t2[X], então t1[Y]= t2[Y]. Isto quer dizer que os valores da
componente Y das tuplas em r dependem, ou são determinados pelos
valores da componente X ou, alternativamente, os valores da
componente X de uma tupla determinam de maneira única (ou
funcionalmente) os valores da componente Y. Pode-se também dizer

54
que existe uma dependência funcional de X para Y ou que Y é
dependente funcionalmente de X. A abreviatura de dependência
funcional é DF.

É importante notar que Se uma restrição sobre R estabelece que não


pode existir mais que uma tupla com um dado valor de X, em quaisquer
instâncias de relação r(R) - isto é, X é uma chave-candidata de R – o que
implica que X→Y para quaisquer subconjuntos de atributos Y de R. Note-
se também que se X→Y em R, isto não significa que Y→X em R.

Considera-se a relação r mostrada abaixo para verificar quais


dependências funcionais são satisfeitas. Observa-se que A → C é
satisfeita.

Duas tuplas têm valor a1 em A, essas tuplas têm o mesmo valor de C


denominado c1. De modo similar, duas tuplas com valor a2 em A têm
o mesmo valor c2 em C. Não existe outro par de tuplas distintas que
tenha, em A, os mesmos valores. A dependência funcional C → A,
entretanto não é satisfeita. Para confirmar esta afirmação, considere
as tuplas t1 = (a2, b2, c2, d3) e t2 = (a3, b3, c2, d4). Essas tuplas têm
os mesmos valores c2 em C, mas elas possuem valores diferentes em
A, a2 e a3, respectivamente. Assim, encontra-se um par de tuplas t1 e
t2 tal que t1 [C] = t2 [C], mas t1 [A] ≠ t2 [A], não satisfazendo os
requisitos da dependência funcional.

Figura 18 - Relação r. FONTE (Osvaldo Kotaro Takai, 2005)

3.2.7 Exercícios

1. No projeto lógico de um banco de dados relacional, é


importante verificar o nível de normalização das tabelas do
banco de dados. Um dos propósitos da normalização é
A. Evitar redundâncias desnecessárias nas tabelas.
B. Eliminar todas as chaves primárias das tabelas.
C. Criptografar os dados mais relevantes do banco de dados.

55
D. Obter arquivos adequados ao backup do banco de dados.

2. Normalização é um processo que visa reduzir redundâncias


em bancos de dados e anomalias de inserção, atualização e
exclusão. A aplicação da terceira forma normal busca eliminar
A. Dependências funcionais multivaloradas.
B. Dependências funcionais transitivas com respeito à
chave primária.
C. Atributos multivalorados, atributos compostos e
suas combinações.
D. Dependências funcionais parciais com respeito à
chave primária.

3. Para eliminar a condição de existência de valores


não atômicos em uma coluna de tabela relacional,
A. Deve ser aplicada, no mínimo, a primeira Forma Normal.
B. Devem ser aplicadas, no mínimo, as catorze regras
de Codd.
C. Deve ser aplicada, no mínimo, a Forma Normal
Boyce-Codd.
D. Deve ser aplicada, no mínimo, a terceira Forma Normal.

4. Considerando o conceito de normalização existente em


bancos de dados relacionais, uma relação R está na segunda
forma normal se, além de estar na primeira forma normal:

A. Não houver atributos do tipo numérico na chave primária


dessa relação, mas apenas atributos do tipo derivado.
B. Todos atributos que não fizerem parte da chave primária dessa
relação forem completamente dependentes de sua chave
primária, ou seja, dependente de toda a chave e não apenas
de parte dela.
C. Houver um número mínimo de 3 atributos nessa relação, sendo
que todos esses atributos devem ser do tipo composto.
D. Os atributos de R estiverem restritos a uma lista predefinida
de valores, sendo essa lista composta por um número máximo
de valores.
Respostas: 1-A, 2-B, 3-A, 4-B.

56
4 TEMA – IV: MODELAGEM RELACIONAL.

UNIDADE Temática 4.1. Introdução e conceitos.

UNIDADE Temática 4.2. Diagrama entidade relacionamento

4.1 UNIDADE Temática 4.1: Introdução e conceitos.

Ao completar esta unidade, você deverá ser capaz de:

Conhecer e entender os conceitos associados a modelagem entidade


relacionamento como atributos, relacionamentos, chaves, etc.

Objectivos
específicos
4.1.1 Modelo entidade relacionamento.
O modelo entidade relacionamento, geralmente é usada como como uma
ferramenta de desenho de bancos de dados relacionais, ao não como um
modelo de dados como tal. O diagrama entidade relacionamento (DER) é muitas
vezes usada para representar requisitos de dados independentes do tipo de
banco de dados a ser utilizado, ela é a representação a estrutura de dados.

Os conceitos utilizados no modelo entidade relacionamento são:

Conjunto de
entidade; Atributo;
Conjunto de
relacionamentos; Restrições
Domínio
Extensão
Intensão.

Entidade e conjunto de entidades.

Um conjunto de entidade, é um conjunto de entidades do mesmo tipo e que


partilham as mesmas propriedades. Elas são representadas como substantivos.

Uma entidade é uma instância de um conjunto de entidades.

57
Figura 19 - Exemplo de entidades e conjunto de entidades.
FONTE: (Neeraj Sharma, 2010)

Dependendo do contexto, um substantivo pode ser usado como


entidade ou conjunto de entidades. Por exemplo, se precisa-se de
diferentes tipos de pessoas como docente, estudantes, pode-se criar
um conjunto de atributos chamado pessoa com entidades docente e
aluno, neste caso, o docente actua como entidade. No contexto de
universidade por exemplo, o docente pode actuar como conjunto de
entidades como entidades como professor, professor associado,
professor assistente etc.

Atributos.
Um atributo é um dado que descreve uma propriedade ou característica
das entidades. Atributos determinam, explicam ou organizam um
conjunto de entidades. Atributos possuem valores que podem ser de
diferentes tipos como números, caracteres, datas. Cada atributo pode ter
um valor para cada entidade ou instância de conjunto de entidades.

No modelo físico, os atributos são convertidos em colunas das tabelas


e possuem um domínio.

Os atributos podem ser:

Simples (atómico) – esse tipo de atributo possui um único


componente. Ex: género etc.
Composto – atributos compostos consiste em um conjunto
de atributos. Ex: endereço tem componentes como cidade,
bairro, rua, avenida etc.
Mono valorado – atributos que possuem um único valor
na entidade. Ex: o atributo idade tem um único valor para
cada professor.
Multi valorado - possuem muitos valores para cada
entidade. Por exemplo, a entidade pessoa possui muitos
números de telefone. Cada atributo pode possuir somente
um valor para cada entidade, quando se encontra um

58
atributo multi valorado, deve-se transferir o atributo para
outro conjunto de entidade.
Derivado – atributo cujo valor é obtido através do
processamento de outros atributos ou atributo. Por
exemplo a idade pode ser obtido a partir da data do
nascimento e a data actual. Atributos derivados não fazem
parte da tabela no banco de dados mas são mostrados
para clarificar ou incluídos para propósitos de desenho.
Instáveis - atributos cujos valores estão mudando
frequentemente. Ex: ano do estudo do estudante.
Estáveis – atributo que os valores podem em poucas
circunstâncias ou nunca mudam. Ex: ano de inscrição do
estudante.
Mandatários - atributos que devem possuir valores. O
atributo nome do estudante no processo de inscrição é
necessário.
Opcional - atributos que podem ter valores ou podem ser
deixados como nulos.
Identificador único – esses atributos que distinguem uma
entidade das outras. Exemplo numa sala de aula pode-se
distinguir um estudante dos outros através do uso de um
atributo ID.

No modelo lógico usa-se uma abordagem diferente para identificadores


únicos. O conceito equivalente de identificador único no modelo lógico
é chave. Uma chave é u campo ou um conjunto de campos que
possuem um único valor para tupla numa relação. Elas podem ser:

Chave candidatas - é um atributo ou conjunto de atributos que


unicamente identificam uma tupla numa relação.
Chave primária – ela é uma das chaves candidatas de uma
relação. Uma relação deve pelo menos possuir uma chave
primária. Uma chave primária dever no mínimo ser:

Estável – significa que o valor da chave primária não pode

 mudar ou ser nulo durante o tempo de vida de entidade.

Mínimo – a chave primária deve ser composto com um
 mínimo número de campos para garantir que as
ocorrências possam ser únicas.
Chave alternativa – representa um conjunto de chaves
candidatas que foram definidas como chaves primárias. Ela
pode ser definida como chave primária se o campo definido
 como chave primária não for adequado.
Chave substituta – chave substituta actua como uma chave
primária mas não existe no mundo real como uma tributo de
um conjunto de entidade. Exemplo o atributo ID que muitas
vezes se coloca numa tabela, representa uma chave primária.

59
Chave simples – são aquelas que são composta por um único
atributo.
Chaves compostas – aquelas compostas por mais de um
atributo.
Chave estrangeira – essas chaves existem quando existem
mais de uma relação. Atributos de uma relação devem existir
noutra relação. Deve existir relacionamento entre os atributos.
Existem situações especiais em que a chave estrangeira surge
através de relacionamentos unários, isso é, caso em que uma
relação se relaciona com a mesma relação.

Domínio
O domínio representa um conjunto de valores possíveis que um ou vários
atributos podem assumir. Elas permitem definir os tipos de dados que os
atributos podem aceitar. Ex: INT, CHAR, DATE, DOUBLE, etc.

Extensão
Sabe-se que os dados no banco de dados variam com o tempo. Uma
extensão representa dados num banco de dado num determinado
período do tempo. Uma extensão refere o conjunto de tuplas
existentes actualmente em uma relação. É uma instância do conjunto
de registro e a relação existentes entre elas.

Intensão
Intensão ou Schema é o modelo lógico do banco de dados e a
representado pelo conjunto de entidades.

Conjunto de relacionamento
Conjunto de relacionamento é um conjunto de relacionamento entre
dois ou mais conjunto de entidades. Elas são representadas usando
verbos. Já o relacionamento é uma instância de conjunto de
relacionamento que servem para relacionar duas ou mais entidades
relacionadas.
Um relacionamento sempre existem entre dois conjuntos de
entidades ou com um único conjunto de entidade quando possui
relacionamento com ele próprio. O conjunto de relacionamento deve
nos dois sentidos de um para outro conjunto de relacionamento.

Cardinalidade
Definem o número possível de conjunto de relacionamento para cada
conjunto de entidade.
A cardinalidade é um conceito importante para ajudar a definir o
relacionamento, ela define o número de ocorrências em um
relacionamento.
Dado um relacionamento R entre entidades E (esquerda) e F (direita),
diz-se que o relacionamento R é:

60
Um para um (1:1) – é usado quando uma entidade E se
relaciona com uma entidade F e vice-versa.

Figura 20 - Relacionamento 1:1. FONTE : autor, 2018.

Uma para muito (1:N) – O relacionamento um-para-muitos é


usado quando uma entidade E pode se relacionar com uma ou
mais entidades F.

Figura 21- Relacionamento 1:N. FONTE: autor, 2018.

Muitos para muitos (N:M) ou (N:N) - O relacionamento


muitos-para-muitos é usado quando várias entidades A se
relacionam com várias entidades B.

Figura 22-Relacionamento N:N. FONTE: autor, 2018.

Participação
Determina se a existência de uma entidade está condicionada ou não
ao seu relacionamento com outra entidade. Existem dois tipos de
participação:

Total - uma entidade existe somente quando ela se relaciona


com outra entidade via relacionamento.

Parcial - a existência de uma entidade independe do fato dela


estar relacionada com outra. Tem-se uma restrição de
participação entre ambas.

61
4.2 UNIDADE Temática 4.1: Diagrama entidade relacionamento.

Ao completar esta unidade, você deverá ser capaz de:

Conhecer e entender os conceitos associados ao diagrama entidade


relacionamento, fazer a representação de cada conceito (entidade,
atributos e relação) numa DER.
Objectivos
específicos
4.2.1 Diagrama entidade relacionamento (DER).

O diagrama Entidade Relacionamento é utilizada para desenho gráfico


do modelo entidade relacionamento. Ela composta por um conjunto
de objetos gráficos que representam cada objetos do modelo
Entidade-Relacionamento. Os objectos representados podem ser
entidades, atributos, atributos chaves, relacionamentos, etc.

O diagrama ER fornece uma visão lógica do banco de dados, fornecendo


um conceito mais generalizado de como estão estruturados os dados de
um sistema. O desenho dos objectos dentro de um diagrama entidade
relacionamento varia de acordo com a notação a ser utilizada. Na notação
Chen do cientista Peter Chen os componentes do modelo entidade
relacionamento seguem a seguinte estrutura:

Figura 23 - Elementos da notação Chen. FONTE: autor, 2018.

62
Para além da notação Chen, outros tipos de notações utilizados para o
desenho de diagramas entidades relacionamentos como:

Notação Bachman
Notação IDEF1x
Notação Barker
Notação Crow´s Foot/ Martin/ engenharia de informação

4.2.2 Exercícios de auto avaliação

1. No modelo relacional uma Entidade é :

A. Representa cada de linha ou instância de uma tabela no modelo


relacional.

B. Objecto composto por um conjunto de características que


relaciona como outros objectos no esquema do Modelo Relacional.

C. Representa uma determinada característica de uma determinada


entidade no Modelo Relacional.

D. Elemento de permite a comunicação com outros objectos no


esquema do modelo relacional.

2. No modelo recional uma Tupla é:

A. Objecto composto por um conjunto de características que


relaciona como outros objectos no esquema do Modelo Relacional.

B. Representa um determinada característico de uma determinada


entidade no Modelo Relacional.

C. Representa cada de linha ou instância de uma tabela no modelo


relacional.

D. Elemento de permite a comunicação com outros objectos no


esquema do modelo relacional.

3. No modelo relacional um Atributo é:

A. Representa cada de linha ou instância de uma tabela no modelo


relacional.

63
B. Elemento de permite a cominicação com outros objectos no
esquema do modelo recional.

C. Objecto composto por um conjuto de caracteriticas que se


relaciona como outros objectos no esquema do Modelo Relaconal.

D. Representa um determinada caracteristica de uma determida


entidade no Modelo Relacional.

4. No modelo relacional um relacionamento é:

A. Elemento de permite a comunicação com outros objectos no


esquema do modelo relacional.

B. Representa uma determinada característica de uma determinada


entidade no Modelo Relacional.

C. Objecto composto por um conjunto de características que se


relaciona como outros objectos no esquema do Modelo Relacional.

D. Representa cada de linha ou instância de uma tabela no modelo


relacional.

5. Atributo monovalorado
A. São atributos formado por um ou mais sub- atributos.

B. São atributos que assumem um único valor para cada elemento

C. São atributos que podes assumir vários valores ao mesmo tempo.

D. São atributos que identificam cada entidade de um conjunto-


entidade.

Respostas: 1-B, 2-C,3-D, 4-5-B.

4.2.3 Exercícios de avaliação

1. Atributos multivalorados:
A. São atributos que assumem um único valor para cada elemento.

B. São atributos formado por um ou mais sub- atributos.

64
C. São atributos que podes assumir vários valores ao mesmo tempo.

D. São atributos que identificam cada entidade de um conjunto-


entidade.

2. Atributos compostos
A. São atributos que assumem um único valor para cada elemento.

B. São atributos que identificam cada entidade de um conjunto-


entidade.

C. São atributos que podes assumir vários valores ao mesmo tempo.

D. São atributos formado por um ou mais sub- atributos.

3. Atributos determinantes

A. São atributos que identificam cada entidade de um conjunto-


entidade.
B. São atributos formado por um ou mais sub- atributos.

C. São atributos que podes assumir vários valores ao mesmo tempo.

D. São atributos que assumem um único valor para cada elemento.

4. No Diagrama entidade relacionamento as entidades


são representadas por:
A. Losangolo.
B. Rectagundo.
C. Circulo.
D. Esferas.

5. No Diagrama entidade relacionamento os atributos são


representadas por:
A. Losangolo.
B. Rectagundo.
C. Circulo.
D. Exagono.

6. No Diagrama entidade relacionamento os


relacionamentos são representadas por:
A. Circulo.
B. Rectagundo.
C. Esferas.
D. Losangolo.

65
7. Qual das opções não representa um tipo de cardinalidade nos
relacionamentos entre entidades.
A. Nenhum para um.
B. um para um.
C. um para muitos.
D. muitos para muitos.

Respostas: 1-C,2-D, 3-A, 4-A, 5-C, 6-D, 7-A.

5 TEMA – 4: SQL

UNIDADE Temática 4.1. Introdução.

UNIDADE Temática 4.2. DDL.

UNIDADE Temática 4.3 DML.

UNIDADE Temática 4.4 DCL e TCL.

UNIDADE Temática 4.5. EXERCÍCIOS deste tema.

5.1 UNIDADE Temática 4.1: Introdução

Ao completar esta unidade, você deverá ser capaz de:


 
Conhecer as sub-linguagens englobadas dentro do SQL.

Objectivos

66

específicos Conhecer e saber implementar comandos de consulta e
manipulação de dados de dados relacionais usando declarativas
SQL.

5.1.1 Introdução

SQL é uma linguagem de alto nível utilizada para manipulação de dados


relacionais. Ela é dividida em quatro tipos de linguagens internamente:

DDL – Data Definition Languge (Linguagem de definição de


dados), usada para criar, alterar e eliminar objetos.

DML – Data Manipulation Language (Linguagem de


Manipulação de Dados), usada para criar, ler, actualizar e apagar
dados.

DCL – Data control Language (Linguagem de controle de dados),


usada para emitir e remover previlêgios sobre os dados e
objectos.

TCL – transation control language (linguagem de controle de


transação), utilizada para controlo e manipulação de transações.

Figura 24- Linguagens SQL e suas operações. FONTE : autor, 2018.

67
5.1.2 Histórial

A linguagem SQL (Structured Query Language) foi prospota pela IBM no


final dos anos 1970, ela foi usada como padrão no banco de dados
relacional denominado System R. O primeiro banco de dados comercial a
utilizar a linguagem SQL foi apresentado em 1979, pela Oracle.

No início dos anos 80, a ANSI (Instituto Americano de Padronização


,”American National Standards Institute”) iniciou os trabalhos de
desenvolvimento de uma versão padronizada do SQL, a qual foi publicada
nos anos de 1986 e 1987. Posteriormente outras revisões e acréscimos
foram efetuados no SQL que sofreu importantes melhorias.

Outro fator, talvez mais significativo que o anterior e que levou à


adoção do padrão SQL por diversos bancos de dados, foi o fato de que
essa linguagem não é procedural. Isso pode ser traduzido da seguinte
maneira: “não importa como uma tarefa vai ser executada pelo banco
de dados; importa apenas que ela vai ser executada”.

Bancos de dados, como Access, SQL Server, Oracle, DB2 e Paradox,


utilizam o SQL. Embora boa parte do SQL padrão ANSI seja utilizada
por esses bancos, os programadores encontrarão algumas variações e
uma série de acréscimos ao padrão desses bancos de dados.

Uma das grandes vantagens do SQL é que é uma linguagem universal


para os bancos de dados profissionais. Uma boa parte dessa
linguagem está padronizada. Evidentemente existem alguns
acréscimos conforme o banco de dados utilizado (MSSQL Server,
Oracle, DB2, etc). Entretanto, a base é a mesma.

5.1.3 Tipos de dados

Os dados dentro dos bancos de relacionais, pertencem a um certo


domínio. A SQL como qualquer outra linguagem, possui um conjunto
limitado de tipos de dados, esses tipos de dado são utilizados para
definir que tipo de dados uma determinada coluna uma certa tabela
pode receber.

Os tipos de dados elementares incluem, integer, float, decimal, char,


date, time, blob e outros. Existem também tipos de dados definidos
pelos usuário, como, address, country, phone number, social security
number, postal zip code e outros, que geralmente surgem da
combinação e manipulação dos tipos de dados elementares.

68
5.2 UNIDADE Temática 4.2.: DDL

Ao completar esta unidade, você deverá ser capaz de:


 
 Conhecer e entender a função da DDL dentro do SQL.
 
Criar e manipular objetos usando comando DDL.

Objectivos
específicos

5.2.1 DDL
Linguagem de definição de dados DDL, (Data Definition Language) é
um conjunto de comandos dentro da SQL usada para a definição das
estruturas de dados, fornecendo as instruções que permitem a
criação, alteração e remoção das tabelas, índices e views. Durante o
processo de criação as instruções permitem definir a estrutura de uma
base de dados, incluindo as linhas, colunas, tabelas, índices, e outros
meta dados.

Entre os principais comandos DDL, o CREATE, ALTER, DROP


apresentam-se como os principais, sendo que:
CREATE - Usado para criar uma nova tabela, uma visão de uma
tabela, um índice ou outro objeto em um banco de dados.
ALTER - Usado para modificar a estrutura de um objeto
existente de um banco de dados, como uma tabela.
DROP - Usado para apagar toda uma tabela, uma visão de uma
tabela ou outro objeto em um banco de dados

5.2.2 Criação de Tabela


Tabela é uma coleção de dados organizados, que serve para
armazenar colunas e linhas de dados associados. As tabelas
armazenam itens de dados para entidades ou objetos como aluno,
professor, livros, disciplinas e outros.

A sintaxe para criação, segue a seguinte estrutura.

CREATE TABLE nome_table

69
(
Nome_atributo tipo_dado,
…………
);

Ex1: CREATE TABLE minha_tbl ( nome_produto VACHAR(50)).


A declaração acima, cria uma tabela com o nome minha_tabela,
contendo uma coluna com nome nome_produto, que armazena o tipo
de dados caracteres com no máximo de 50. A coluna nome_produto
aceita que valores null sejam inseridos.

Ex2: criar uma tabela aluno, com colunas (nome, apelido,


data_nascimento, contacto, ano_inscricao, curso).

CREATE TABLE aluno


(
Nome VARCHAR (70),
Apelido VACHAR (70),
Data_nascimento DATE,
Contacto INT(14),
Ano_inscricao INT (4),
Curso VARCHAR (50)
)

5.2.2.1 Valores predefinidos


Esse valor padrão é inserido automaticamente nos registros, se
nenhum valor for especificado para a coluna em questão.

Pode por exemplo, se desejar que se coloque o valor 000000000 na


coluna contacto sempre que se insere dados dos alunos e não se
especifique o contacto.

CREATE TABLE aluno (


Nome VARCHAR (70),
Apelido VACHAR (70),
Data_nascimento DATE,
70
Contacto INT(14) default 000000000,
Ano_inscricao INT (4),
Curso VARCHAR (50)
)

5.2.2.2 Valores Nulos –NULL


Valores nulos representam valores desconhecidos. Existem casos que
não pretendente permitir que certos campos sejam passados valores
nulos. Geralmente, quando não especificamos valor de um campo
durante a inserção e o mesmo campo não tenha nenhum valor default
associado, SGBD insere um valor NULL. Para evitar que um campo
aceita um valor null como dado, especifica-se a restrição NOT NULL.
Esse padrão é aplicado em muitos SGBD.

EX:

CREATE TABLE aluno (


Nome VARCHAR (70) NOT NULL,
Apelido VACHAR (70),
Data_nascimento DATE,
Contacto INT(14) default 000000000,
Ano_inscricao INT (4),
Curso VARCHAR (50)
)

No exemplo acima, especificamos a declaração NOT NULL na coluna


nome da tabela aluno. Este camando impõe que não seja aceite o
NULL como dado na coluna nome.

5.2.2.3 Restrições
Em SQL, restrições permitem que se define um conjunto de regras sobre
os dados das tabelas. As restrições são definidas durante o processo de
criação das tabelas, contudo podem ser atualizadas posteriormente em
caso de necessidade. Existem diferentes tipos de restrições:

UNIQUE – utilizado como restrição que previne duplicação de


dados na tabela. Ela é especificada na criação da tabela, usando a
palavra-chave UNIQUE. O NULL, pertence ao domínio de dados do
UNIQUE, quer isso dizer que se um determinado campo

71
possui NULL como dado, nenhum outro pode conter o valor
NULL.

PRIMARY KEY – Este restrição tem as mesmas características


do UNIQUE, isto é, previne a duplicação de dados. Contudo
está restrição não contém NULL como parte do seu domínio,
ou seja, campos especificados com está restrição não podem
contem NULL como dado.

CHECK – Restrição que garante que valores introduzidos dentro


de uma coluna, estejam de acordo com regras definida pela
restrição.

REFERENCIAL – restrição usada para dar suporte a integridade


referencial, o qual permite gerir a relação entre tabelas.

Ex: CREATE TABLE aluno (


Numero_estudante INT (20) NOT NULL PRIMARY KEY,
Nome VARCHAR (70) NOT NULL, Apelido VACHAR
(70),
Data_nascimento DATE,
Contacto INT(14) default 000000000 UNIQUE,
Ano_inscricao INT (4),
Curso VARCHAR (50) CHECK (Curso in (‘redes’,’software’ ))
);

O exemplo acima, define três restrições:


Restrição PRIMARY KEY no numero_estudante.

Está restrição informa que dados duplicados e NULL, não são


permitidos.
Restrição UNIQUE no contacto.
Significa que dados duplicados não são permitidos.

Restrição CHECK no Curso.


Significa que somente “redes e software” são aceite como
dados a serem inseridos nos curso.

72
5.2.2.4 Integridade referencial
Integridade referencial, é uma restrição definida nos bancos de dados
relacionais com objetivo de manter a integridade dos dados nas
tabelas que se relacionam. Através da utilização de chaves primária e
chaves estrangeiras, elas garantem a validades dos dados.

Uma chave estrangeira é uma coluna em uma tabela de banco de


dados que contém valores também encontrados na coluna de uma
tabela em que tal coluna está definida como chave primária - um valor
único que determina uma linha na tabela - em outra tabela.

Tabelas que possuem colunas que dependem de colunas de outras


tabelas, são chamadas dependentes e filhas e as tabelas que possuem
colunas referenciadas em outras tabelas são chamadas de base ou pai.
É importante notar que somente colunas definidas como UNIQUE ou
PRIMARY KEY, podem ser referenciadas noutras tabelas.

A integridade referencial pode ser definido durante a criação da tabela


ou posteriormente.

Como referenciado acima, a integridade referencial permite o


relacionamento entre as tabelas, sendo assim, quando uma ação
(DELETE ou UPDATE) acontece na tabela base ou pai é executada, algo
deve ser feito com nas tabelas filhas ou dependentes. Abaixo ações
possíveis de se executar sobre as tabelas filhas caso uma ação
aconteça na tabela base ou pai:

CASCADE – informa que a ação executada sobre a tabela pai


deve ser executada também nas tabelas filhas.
NO ACTION - informa que a ação executada sobre a tabela pai
não deve criar nenhuma ação nas tabelas filhas.
RESTRICT – informa que não é permitida ações de atualização
ou remoção de dados na tabela pai.
SET NULL - informa que caso haja alguma ação sobre a tabela
pai os valores na tabela filha devem ser definidas como NULL.

Figura 25- Integridade referencial. FONTE: (Kriegel & Trukhnov, 2003).

73
CREATE TABLE product_avail
(
prodID INT(10) PRIMARY KEY NOT NULL,
supplier VARCHAR(20) NOT NULL,
avail_start DATE,
avail_end DAte
);

CREATE TABLE promotion


(
promoID INT(10) PRIMARY KEY NOT NULL,
prodID INT(10),
price INT(10),
promo_start DATE,
promo_end DATE,
FOREIGN KEY (prodID) REFERENCE product_avail(prodID) ON
DELETE CASCADE
)

A figura abaixo mostra o exemplo da aplicação da integridade


referencial entre as tabelas produtos (pai) e a tabela promoção(child).
A coluna que utiliza a restrição é prodID, definida como chave primária
na tabela produto e como chave estrangeira na tabela promoção.

5.2.3 Criação de Schema


Schema são componentes que permitem agrupar um conjunto de
objetos, elas funcionam como pastas, na qual guardamos um conjunto
de arquivos.

Para criação de Schema faz-se:

CREATE SCHEMA nome_schema.

Exemplo:

CREATE SCHEMA escola_db;

Para criação de uma tabela dentro de um SCHEMA, associa-se


explicitamente a tabela ao SCHEMA.
74
CREATE TABLE nome_schema.nome_tabela

Coluna VARCHAR(25) NOT NULL,

……………..

);

5.2.4 Criação de views


Views são tabelas virtuais resultado de uma ou mais tabelas ou
mesmo outras Views. Elas são consideradas virtuais porque não
contém nenhum dado e não ocupam espaço físico no disco mas sim
armazenam definições de tabelas. Essas definições são armazenadas
no SGBD como consultas compiladas que dinamicamente preenchem
dados que posteriormente são usados comos tabelas virtuais que
podem ser requisitados pelos usuários. Por exemplo, para criar uma
view baseada na tabela aluno podemos fazer.

CREATE VIEW aluno_view AS

SELECT nome, apelido, curso FROM aluno.

Depois da criação de uma view, podemos executar consultas sobre


elas.Ex:

SELECT * FROM aluno_view

5.2.5 Índices (indexes)


Indexes, são componentes utilizados para melhorar a performance na
execução de consultas SQL. Indexes são geralmente uma cópia de
pequenas partes das tabelas, como um campo, sendo esses campos
geralmente de um tamanho pequeno. A principal diferença com as
tabelas normais, é que os indexes, são ocultadas dos usuários e não
são mencionadas em nenhuma declaração DML mas ela são
executadas por detrás caso existam.
OS indexes são armazenados em locais diferentes as das tabelas que
elas indexam. O indexes são criados inserindo na sua estrutura as
campos de tabelas que pretendem ser indexadas e armazenados em
locais físicos diferentes donde a
75
tabelas está armazenada. Um aspecto importante a realçar é que os
indexes e tabelas possuem endereços diferentes.
Falou-se que os indexes aumentam as performance do acesso aos
conteúdos na tabela. Este aumento de performance é feito da
seguinte forma:
Quando se pretende acessar uma determinada informação numa
tabela, o SGBD, primeiramente verifica se existem indexes associados
ao campo da tabela, caso sim, ele busca o endereço físico da linha e
acessa a linha buscando a informação, caso não, é feita uma varredura
na tabela tentando localizar a informação.
Um indexe é semelhante a um índice de um livro, onde nós temos um
determinado conteúdo e o local onde o conteúdo está localizado (a
página). Com o índice de um livro, não precisamos ler o livro todo para
localizar o conteúdo desejado, basta localizar a o endereço onde está
localizado o conteúdo e acessa-lós directamente. No caso do indexes,
eles armazenam o endereço físico da linha onde o dados do campo
indexados está armazenado, aumentando assim significativamente a
performance nas consultas.
Indexes podem se criados nos campos que não aceitam repetições
como campos criados como chaves primárias ou com atributo UNIQUE
mas também podem ser criados para campos que aceitam repetição
de dados NOUNIQUE. Por predefinição, são criados indexes para
campos definidos como chave primária e UNIQUE.
Indexe podem ser criados para um ou múltiplos campos. Indexes com
múltiplos campos são criados quando faze-se pesquisa ou consultas de
informações usando múltiplos campos conjuntamente. Ex: quando se
faz frequentemente consultas sobre encomendas de um determinado
usuário nume certa data.

Tipos de indexes
Os sitemas de gerenciamentos de bancos de dados relacionais usuam
os seguintes tipos de indexes:
Btree indexe - também chamado de binary indexes, nele cada nó só
pode conter dois ramos filhos.
Bitmap índex – aquele que contém uma representação binaria de
cada registro, usando 0’ e 1’.
ISAM indexes – indexed sequencial Acces Method em português
método de acesso sequencial indexado, usa uma simples estrutura
com a lista do registros.

76
Hash table (tabela Hash) – tabela hash, é uma copia dados mas
reorganizada de uma forma diferente e com ordem de acesso mais
eficiente, dependendo do algoritmo hash utilizado.
Para além dos tipos de indexes acima referenciado, existem outros
utilizados pelos sistemas de base de dados para, melhorar a eficiência
no acesso aos dados.

5.2.6 Modificando objectos no banco de dados


Depois da criação do banco de dados, pode ser necessário modificar
tabelas devido a novas regras de negócios ou adequação a novas
necessidades. Uma forma que pode ser usada para tal, pode ser
apagando a tabela e fazer sua reconstrução novamente. Contudo, a
eliminação de uma tabela pode ter efeitos externos. Por exemplo se a
tabela estiver associada a outras tabelas através da integridade
referencial.

Uma forma eficaz de modificar as tabelas é usando o a declaração


ALTER do SQL.

Fez-se a criação da tabela aluno nas sessões anteriores, imagine-se que se


pretende alterar a tabela, definido que o campo data_nascimento não
aceite valores null. Usando a declaração ALTER ficaria.

ALTER TABLE aluno ALTER COLUMN data_nascimento SET


NOT NULL;

Para além das alterações (ALTER) das colunas, o comando ALTER, pode
ser usado para adicionar novas colunas (ADD) e Eliminar colunas
(DROP). A baixa a sintaxe para cada uma das ações.

Alterar tabela:

ALTER TABLE nome_tabela ALTER COLUMN nome_coluna SET


<definições a serem alteradas>.

Eliminar coluna:

ALTER TABLE nome_tabela DROP COLUMN nome_coluna

Adicionar coluna:

ALTER TABLE nome_tabela ADD COLUMN <definições a serem


adicionadas>.

O camando ALTER, serve também para modificação de outros objectos


no banco de dados, não se limitando simplesmente nas tabelas.

77
5.2.7 Renomeando objetos no banco de dados.
Os objetos dentro dos bancos de dados podem ser renomeados
sempre que for necessário. Pode acontecer que durante a criação de
uma tabela, por error, não se definiu o nome correto da tabela. A ação
renomear é feita a partir do comando RENAME como ilustra a sintaxe
abaixo.

RENAME TABLE nome_tabela TO novo_nome.

5.2.8 Eliminação de objectos

Por vezes por situações adversas como libertar espaço no disco pode
ser que precisemos eliminar objectos no sistema de arquivo. A SQL
com a declaração DROP, permite que se elimine objectos. A sintaxe
SQL utilizada para eliminação de objectos é apresentada abaixo.

DROP TIPO_OBJECTO nome_objecto;

Exemplo:

DROP TABLE alunos;

Essa instrução elimina de forma irreversível a tabela com nome alunos.

Para além das tabelas os INDEX, VIEWS e SCHEMAS, são outros


objectos que podem ser eliminado através do comando DROP.

Exemplo:

DROP INDEX numero_estudante;

DROP VIEW alunos;

DROP SCHEMA escola_db

As instruções, a primeira elimina um INDEX com nome número


estudante, a segunda elimina uma VIEW como nome alunos e por fim,
a última elimina um SCHEMA como nome escola_db;

5.3 DML

É uma parte da linguagem SQL utilizada para executar instruções como


inclusões, busca, actualização e exclusões de dados armazenados nas
tabelas.
Ao contrário da DDL, o DML é a parte do SQL responsável de
manipulação dos dados da tabela e não
78
das colunas. Por manipulação entende-se Inserir, atualizar, eliminar e
buscar dados nas tabelas e outros objetos.
Antes de entra-se ao fundo como a utilização dos principais comandos
DML, abordara-se assuntos relevantes utilizados pelas declarações
DML do SQL.

5.3.1 Cláusulas

As cláusulas são basicamente utilizadas para adicionar restrições que


permitiram executar uma declaração satisfazendo certas condições
utilizadas para definir os dados que deseja selecionar ou modificar em
uma consulta.

FROM – Utilizada para definir a tabela que se vai buscar os


dados.
WHERE – Utilizada para definir as condições a serem
obedecidas durante a execução de uma declaração.
GROUP BY – Utilizada para agrupar os dados selecionados em
subconjuntos específicos.
HAVING – Utilizada para definir condições que devem
satisfazer cada grupo.
ORDER BY – Utilizada para ordenar os dados selecionados
seguindo uma ordem específica.
DISTINCT – Utilizada para selecionar dados sem repetição.
UNION - combina os resultados de duas consultas SQL em uma
única tabela para todas as linhas correspondentes.

5.3.2 Operadores Lógicos

AND – E lógico. Avalia as condições e retorna um valor


verdadeiro caso ambos sejam corretos.
OR – OU lógico. Avalia as condições e retorna um valor
verdadeiro se algum for correto.
NOT – Negação lógica. Retorna o valor contrário da expressão.

5.3.3 Operadores relacionais

O são usados para realizar comparações entre valores.

Operador Descrição
< Menor
> Maior
<= Menor ou igual
>= Maior ou igual
= Igual
<> Diferente
79
BETWEEN (entre) – usado para definir valores dentro de um
intervalo fechado.
LIKE (como) – Utilizado para buscar todos resultados que
tenham subparte definido no operador LIKE.
IN - Utilizado para verificar se o valor pretendido está dentro
de uma lista consultada.

5.3.4 Funções de Agregação

São usadas dentro de uma declaração SELECT em grupos de dados


para retornar um valor único que se aplica a um grupo de dados.

AVG – Retorna a média dos valores de um determinado campo.


COUNT – Retorna o número de dados retornado na consulta.
SUM – Retorna a soma de todos os valores do campo
determinado.
MAX – Retorna o maior valor do campo especificado.
MIN – Retorna o menor valor do campo especificado.

5.3.5 Inserção de dados


O processo de inserir dados em uma tabela, implica preencher uma
linha seguindo as restrições de domínio com dados correspondentes
aos tipos determinados naquela tabela. Durante o processo de
inserção de dados deve-se seguir as restrições de integridade da
tabela, assim como obedecer as restrições de chave primária.

No SQL, a inserção de dados em uma tabela, usa a declaração


presentada abaixo:

INSERT INTO Nome_Tabela VALUES (valor 1, valor2, valor3, valor4,


valor5);

Os dados valor1, valor2, valor3, etc..., devem seguir a ordem dos


campos na tabela. Utilizado (' ') para campos que não necessitem de
valores.

Para registros do tipo numérico não se usa as aspas simples ou


composta, sendo essa restrição imposta aos valores do tipo caracter
como CHAR e VARCHAR).

Exemplo 1:

INSERT INTO alunos VALUES (25, ‘João’, ‘Francisco’,


03/05/1965, 000000000, 2015, ´redes´);

Exemplo 2:

80
INSERT INTO alunos VALUES (30, ‘Jose’, ‘Albano, 05/11/1993,
000000000, 2015, ´software´);

Os comandos acima, inserem novas linha na tabela alunos com os


dados especificados na palavra chave VALUES.

5.3.6 Atualização de dados


Update é um comando SQL utilizado para alterar os dados de uma ou
mais linhas em uma tabela, seguindo as condições predefinidas no
comando.

Actualizações sem a especificação da cláusula WHERE, actualizam


todas as linhas da tabela e elas devem ser utilizadas com cautelas.

A sintaxe utilizada para actualização de dados numa tabela é descrita


abaixo.

UPDATE nome_tabela SET <operação a ser executada>


WHERE <condição>

Exemplo:

UPDATE alunos SET contacto=8200000000 WHERE


numero_estudante = 25;

O exemplo acima, atualizada o contacto do aluno com


numero_estudante igual a 25 para 82000000000;

5.3.7 Consultas de dados


Após a criação das tabelas através do comando CREATE e subsequente
inserção de dados (INSERT), é natural que se deseje consultar os dados
existentes nas tabelas.

Consulta de dados é um processo busca e leitura de nas tabelas. Ela é


executada através da declaração SELECT. Segue abaixo a sintaxe básica
de uma consulta.

SELECT nome_campo,… FROM nome_tabela WHERE


<condição>.

Exemplo:

SELETC nome apelido FROM alunos;

Este comando busca todos os nomes e apelidos na tabela alunos.

81
Caso se deseje buscar todos os campos de tabela, usas a caractere
especial *. O mesmo equivale a especificar todos os campos na
declaração SELECT.

Exemplo:

SELECT * FROM alunos;

Este comando busca todos os campos da tabela alunos.

Nem sempre se deseja buscar todas a linhas de uma tabela. O


comando WHERE dentro da declaração SQL, serve para colocar
condições de busca de dados.

Exemplo:

SELECT * FROM alunos WHERE numero_estudante=25;

Essa instrução pode ser lida como: buscar todos as colunas (SELECT *),
na tabela alunos (FROM alunos), que tenha como numero_estudante
igual a 25 (WHERE numero_estudante=25).

A declaração SELECT do SQL permite que busque-se informação de


duas tabelas ou mais tabelas. Esse processo é chamado de JOIN.

Exemplo:

SELECT * FROM alunos, cursos WHERE alunos.curso=’rede’;

5.4 DCL

Duma forma simples, o Sistema de gerenciamento de banco de dados


é uma coleção de objectos como tabelas, indexes, schema e views e
uma conjunto de ferramentas para gerir tais objectos. O controlo de
acesso a esses objectos é mecanismo de segurança essencial.

DCL (Data Control Language ), em português Linguagem de Controle


de Dados tem por responsabilidade controlar os aspectos de
privilégios sobre objectos a usuários, permitindo controlar quem deve
fazer determinadas actividades como criar, manipular e eliminar
dentro dos bancos de dados.

Privilegio, representam direitos que um determinando usuário


possuem para cria, manipular e eliminar dados e objectos dentro de
um banco de dados, assim como a execução de actividades
administrativas. Os privilégios podem ser concedidos a usuário (user)
ou para papéis (roles).

82
User – representa uma entidade que faz o uso de serviços do
sistema de gerenciamento de banco de dados.

Role – representam uma coleção de privilégios que podem ser


atribuídos para usuários ou outros Role.

A concessão e revogação de privilégios tanto para usuários assim


como para roles, é feita a partir da declaração GRANT e REVOKE:

GRANT – Atributo um ou vários privilégios a determinado


usuário ou role (papel).

REVOKE - remove ou restringe a capacidade de um usuário ou


relo de executar operações previamente concedidas a ele.

A sintaxe para atribuição e revogação de privilégios varia de SGBD,


contudo sintaxe abaixo é utlizada na maioria de sistemas de
gerenciamento de banco de dados.

Comando GRANT:

GRANT <previlegio1, previlegio1>

On <objecto>

TO <usuário|role>

Exemplo1:

GRANT SELECT

ON alunos

TO ‘joao’

Exemplo2:

GRANT SELECT, INSERT, UPDATE, DELETE

ON alunos

TO ‘professores’

Exemplo3

GRANT professores TO ‘Luis’

83
O exemplo 1 atribui ao usuário joao o privilégio de fazer consultas na
tabela alunos, supondo que exista o usuário João no sistema.

No exemplo2 atribui-se o privilégio ao role(papel) professor para


consultar, inserir, actualizar e eliminar dados, em seguida no exemplo
3 atributos esses privilégios usuário luís.

Comando REVOKE:

REVOKE <previlegio1, previlegio1…>

ON objecto

FROM <usuário | role>

Exemplo:

REVOKE SELECT

ON alunos

FROM ‘joao’

Este comandos retira ao usuário João, o privilegio executar consultas


na tabela aluno.

Em suma, a actividade da linguagem de controlo de dados, é gerir os


privilégios nos sistemas de gerenciamento de banco dados,
concedendo-os (GRANT) e removendo-os (REVOKE) a partir das
declarções SQL.

5.5 Transações e controle de concorrência.

A execução de comandos SQL na realização de tarefas simples


geralmente funcionam sem perfeitamente. Contudo, a medida que o
grau de complexidade das tarefas aumenta, torna-se necessário a
implementação de técnicas avançadas que podem satisfazer situações
complexas. Por exemplo, quando a utilização de banco de dados é
utilizada por mais de um usuário, torna-se necessário a
implementação de mecanismo que controlem o desafio de múltiplos
acessos. Isso é feito a partir de controlo de concorrência.

Por outro lado, a realização de tarefas complexas como por exemplo,


o da transferência de valores de uma conta para outra nos sistemas

84
bancários usando bancos de dados, estas que implicam execução
múltiplas instruções, pressupõem a implementação de técnicas que
permitam tais atividades sejam atómicas, isto é, que somente se sejam
validades caso todas instruções sejam executas e não simplesmente
uma parta evitando inconsistência de informação. Para contornar essa
situação, a SQL fornece o mecanismo chamado de transação. Falar-se-
á neste sessão sobre controlo de concorrência e transações.

5.5.1 Transações

São uns mecanismos providenciado dentro do SQL que tem como


intenção, garantir a integridade e consistência de dados, fornecendo
um conjunto de procedimentos, executados de forma atómica.

Para que se possa garantir a integridade de uma transação quatro


propriedades são definidas e conhecidas como ACID.

1. Atomicidade

Todas as ações que compõem a unidade de trabalho da transação


devem ser concluídas com sucesso, para que seja efetivada. Ou seja,
todas as tarefas dentro do corpo de uma transação devem ser
executadas para que ela possa ser considerada concluída. Portanto, se
durante a execução da transação qualquer instrução que constitui
unidade de trabalho falhar, a transação inteira deve ser desfeita
(ROLLBACK) e quando todas as instruções são executadas com
sucesso, a transação pode ser considerada concluída e inserida no
banco (COMMIT).

2. Consistência

Todas as restrições predefinidas no banco de dados devem ser


respeitadas, para que uma transação possa ser completada com
sucesso.

3. Isolamento

Cada transação deve funcionar completamente isolada de outras


transações. Outras transações não podem ter acesso aos resultados
parciais das outras transação em andamento, respeitando à
propriedade da atomicidade.

4. Durabilidade

Significa que os resultados de uma transação são permanentes e


podem ser desfeitos somente por uma transação subsequente.

85
O COMMIT e ROLLBACK, são as principais comandos usados na
declaração de uma transação, uma responsável por persistir os dados
no banco de dados (COMMIT) em caso de uma execução com sucesso
e outra anula todas atividades executadas (ROLLBACK) no corpo da
transação, geralmente chamada em caso de algum erro na execução
da transação.

COMMIT finaliza uma transação dentro de um sistema de


gerenciamento de banco de dados.

ROLLBACK faz com que as mudanças nos dados existentes


desde o último COMMIT ou ROLLBACK sejam descartadas.

A sintaxe para definição de transações varia muito com o SGBD, sendo


os elementos COMMIT e ROLLBACK padrões uniformes em muitos
sistemas de gerenciamento. Abaixo a sintaxe de definição de uma
transação no MYSQL.

START TRASATION

<corpo da transação>

COMMIT;

ROLLBACK;

5.5.2 Controlo de concorrência.


Concorrência é um especto a se ter em conta em ambientes como
múltiplos usuários. A concorrência surge quando múltiplos usuários
tentam efetuar acesso dos mesmos recursos ao mesmo tempo, o não
controlo desses tipos de situações podem criar anomalias e
inconsistência no banco de dados. Para controlo de concorrência,
SGBD usam um mecanismo chamado de LOCK (bloqueio).

Sistemas de banco de dados equipados com protocolos baseados em


LOCK usam um mecanismo pelo qual uma transação não pode ler ou
gravar dados até que adquira um LOCK apropriado. Existem dois tipos
de LOCK:

Binários – em que um LOCK em um item de dados pode estar em


dois estados: Bloqueado (LOCK) ou Desbloqueado (UNLOCK).

Compartilhado / exclusivo - esse tipo de LOCK, diferencia os LOCK


com base em seus usos.
Se um LOCK é adquirido em um item de dados para executar uma
operação de gravação, é um LOCK exclusivo. O LOCK exclusivo evita
que duas transações que realizam acções de gravação possam ser
executadas ao mesmo tempo porque
86
permitir que mais de uma transação seja gravada no mesmo item de
dados levaria o banco de dados a um estado inconsistente. Isso quer
dizer que toda operação de gravação possui um LOCK exclusivo.

Já transações de executam operações de leitura são chamadas de LOCK


compartilhados porque nenhum valor de dados está sendo alterado. Isto
é, operações que executam operações de leitura possuem um look
compartilhado, podem ser efetuadas muitas leituras ao mesmo tempo.

5.6 Exercícios de auto avaliação

1. Qual dos itens abaixo não faz parte do conjunto


das linguagens SQL.
A. DDL. B. SGBD. C. DML. D. SDL

2. 19. DDL significa?

A. Data design Language. B. Design Data Language. C. Data


definition Language. D. Difinition data language.

3. Em BD um atributo é considerado como sendo:


Selecione uma opção de resposta:

a. Elementos ou propriedades escolhidas para definir/caracterizar


um domínio

b. Elementos ou valores escolhidas para definir/caracterizar um


domínio

c. Elementos ou valores escolhidas para definir/caracterizar uma


entidade

d. Elementos ou propriedades escolhidas para definir/caracterizar


uma entidade

4. As declarações: SELECT, INSERT, UPDATE e DELETE


pertence a que linguagem:

Selecione uma opção de resposta:

a. DDL

b. LCD

c. DML

87
d. SDL

5. As declarações: CREATE, DROP, ALTER pertence a que


linguagem:
Selecione uma opção de resposta:

a. DML

b. LCD

c. SDL

d. DDL

Respostas: 1-B, 2-C, 3-D, 4-C, 5-D.

5.7 Exercícios de avaliação

1. Linguagens de Manipulação de Dados –


DML Selecione uma opção de resposta:

a. permitem definir a estrutura de uma base de dados, incluindo as


linhas, colunas, tabelas, índices, e outros metadados

b. é a forma do banco de dados de recuperar e inserir as


informações no banco de dados, alterar dados existentes no banco
de dados e também se remover esses dados.

c. Utilizada para especificar o esquema interno, os mapeamentos


entre os dois esquemas podem ser estabelecidos em qualquer uma
dessas linguagens.

d. permite a criação de uma nova base de dados, tabela, índice, ou


consulta armazenada, sendo os tipos de objetos que podem ser
criados definidos pelo SGBD que está sendo utilizado.

2. Qual das opções não é verdadeira, SQL (structed query


language) é:
A. SQL é uma linguagem de pesquisa para uso em Banco de
Dados Relacional.
B. SQL é uma linguagem de pesquisa para uso em todos
modelos de Banco de Dados.
C. SQL é usada como linguagem de modificação e acesso a
Banco de Dados.

88
D. SQL é usada como linguagem de construção e acesso a
Banco de Dados.

3. O comando ALTER é utilizado para.


A. Alterar os valores de uma determinada consulta.
B. Alterar os valores de uma determida tupla.
C. Alterar a extrutura de uma tabela.
D. Alterar um determinado campo na tabela.

4. Para alteramos o valor de um determinado campo


pertecente a uma tupla usamos o comando:

A. DROP.
B. ALTER.
C. CHANGE.
D. UPDATE.

5. Para fazermos consulta de dados num banco de dados


usando SQL usamos o comando:
A. SELECT.
B. FETCH.
C. GET.
B. DROP.

6. O comando CREATE TABLE ESTUDANTES, fará com


que:
A. Seja criado um estudante.
B. Seja criado uma tabela estudantes.
C.Seja criada uma tabela estudante.
D. seja criado um estudantes.

Respostas: 1-B, 2-B, 3-C, 4-D, 5-A, 6-B,

6 TEMA – I PL/SQL.

UNIDADE Temática 6.1. Introdução e conceitos.

89
6.1 Introdução e conceitos.

Objectivos
específicos Ao completar esta unidade, você deverá ser capaz de:

Descrever os conceitos que compõem a PL/SQL e PL/SQL em sí.


Compreender e aplicar as várias funcionalidades do PL/SQL
como triggers, store procedure, function etc.

6.2 Introdução

Uma linguagem de programação tem como objectivo cria ou


desenvolver programas. Tais programas são desenvolvidos seguindo as
normas de sintaxe, paradigma definidas pela linguagem etc.

Uma linguagem de programação procedural é aquela que usa o


paradigma procedural para a criação e desenvolvimento de programas.
Um programa desenvolvido por uma linguagem procedural, é uma lista
passo a passo de instruções que definem ao computador oque fazer.

A linguagem SQL, não apresenta características procedurais, ela é sim


uma linguagem declarativa o que significa que definem o os
programas devem fazer, não preocupando com o como fazer.

Por não ser procedural, ela apresenta falta de algumas características


que a linguagens procedurais apresentam como executar declarações
condicionais (if-else), executar interações, habilidade de executar
operações que aceitam retornar valores assim sucessivamente.

6.3 Extensões procedurais usose benefícios

A introdução do PL/SQL, trouxe uma série de recursos e robustos ao


processo de manipulação dos bancos de dados. A Reutilização do
código através da introdução de módulos e outros aspectos
relacionados a segurança, foram alguns dos elementos trazidos pela
PL/SQL. A baixo alguns benefícios e usos da extensão PL/SQL.

90
6.3.1 Reuso de Código
O PL/SQL, permite que instruções possam ser armazenados e
utilizados posteriormente. Procedimentos armazenados e funções
após serem compilados, poderão ser utilizados dentro de outros
módulos e outras aplicações permitindo assim redução de tempo. O
reuso de código aqui, é feito usuo e criação de módulos.

6.3.2 performance de tráfego de rede


Os procedimentos armazenados e funções podem ser utilizados como
forma de reduzir o tráfego na rede isto porque esses componentes são
compilados e armazenados nos SGBD, isto é, no lado do servidor.
Portanto, a sua execução não necessita de envio de instrução a partir
da rede. Para além da redução tráfego de rede, os procedimentos
armazenados e funções, por serem compilados e armazenados nos
SGBD, executam muito mais rápidos que as instruções SQL que são
compilados a cada requisição feita e isso, contribui para o aumento da
performance.

6.3.3 Elementos chaves da linguagem procedural

6.3.4 Variáveis e atribuição

Variáveis são elementos que server para armazenar dados.


Geralmente estão associadas a um tipo de dado como Int, String,
Number, Date ect. Diferente do padrão SQL, o PL/SQL permite que
sejam criadas variáveis para armazenamento de dados.
A sintaxe para declaração de variáveis assim como os tipos de dados
associados a elas, variam de SGDB para SGBD.

A baixa segue, a sintaxe para declaração de variáveis e inicialização no


sistema DB2 e PL/SQL Oracle.
DB2
DECLARE nome-variavel TIPO.
Ex: DECLARE idade INT
No DB2, a variáveis são inicializadas usando a palavra-chave SET.
Ex: SET idade=25;

PL/SQL (Oracle)
Na sintaxe de declaração de variáveis, o PL/SQL, omite a palavra-chave
DECLARE.
Nome-variável TIPO.
91
Ex: idade INT
A inicialização de variáveis é feita a partir do operador:=.
Ex: idade:=25;

6.3.5 Módulos, sub programas e blocos de estruturas.

Módulos são elementos importantes de estruturação do código e


separação de responsabilidades. Eles permitem a reutilização do
código e ocultação de detalhes (abstração). Um módulo pode ser
desenvolvido para realização de uma actividade específica e pode ser
utilizado em outras partes do código apenas com uma chamada do
módulo. A PL/SQL permiti-nos a criação de módulos, funcionalidade
não disponível no padrão SQL. Os módulos criados a partir do PL/SQL
permitem o tratamento de excepções e alguns SGBD permitem a
criação de módulos aninhados.
A definição do módulo é feito a partir de uma sintaxe que varia de
SGDB para outro. Abaixo uma sintaxe que a maioria de SGBD usa para
criação de módulos.

BEGIN - - programa main


<delaração>
BEGIN - - primeiro nível de aninhamento
<declaração>
BEGIN - - segundo nível de aninhamento.
<declarações>
<excepções>
END
<excepções>
END
<excepções>
END;

6.3.6 Passagem de parâmetros

Nas sessões anteriores, vimos como o processo de definição de


variáveis e inicialização das mesmas são feitas. Um outro aspecto que
está relacionado a PL/SQL é a passagem de parâmetros. Um
parâmetro é uma variável que está associado a uma função e
procedimentos armazenados. Elas são utilizadas para fornecer dados
as funções assim como procedimentos armazenados.

O exemplo abaixo ilustra um exemplo de como pode-se criar um


procedimento armazenado com parâmetros usando DB2.

92
CREATE PROCEDURE SP_INSERT_USER
(
Nome VARCHAR (50),
Apelido VARCHAR (40),
Idade INT
)

6.3.7 Bloco condicional

Os blocos de condição, testam a condição e dependo que qual valor é


recebido, uma acção é executada. O PL/SQL tem disponível o bloco
condicional IF, ELSE como elemento integrante da extensão.

A sintaxe de definição do bloco condicional, é semelhante a definida


em muitas linguagens procedurais.

IF (condição) THEN

<Bloco de instrução>

ELSE (condição)

<Bloco de instrução>

END IF

Podemos por exemplo quer definir o aumento salarial dos funcionários


de acordo com o escalão. Trabalhadores com salário abaixo de 7000
tenham um aumento de 10%, trabalhadores com salário acima de 7000
tenham aumento de 7%. Podes usar o IF, ELSE para moldar a lógica desse
problema. Esse é um exemplo que se pode aplicar o bloco condicional.

IF (salario) <= 7000 THEN


UPDATE trabalhador SET salario= salario + salario*0.10
Where salario < 7000
ELSEIF (salario>7000) THEN
UPDATE trabalhador SET salario= salario + salario*0.07 Where
salario > 7000
END IF;

6.3.8 Repetição de execução (LOOP)

Quando desejamos executar uma tarefa repetidamente, fazemos o


uso de Loops ou blocos e repetição. A extensão PL/SQL no seu padrão
disponibiliza três variantes de Loops
93
WHILE, FOR, REPEAT UNTIL. Contudo, alguns SGBD não utilizam todas
as três variantes.

WHILE – executa de forma repetitiva uma instrução e só para se a


condição ter como valor FALSE.

FOR – executa de forma repetitiva uma instrução num número de


vezes já definido.

REPEAT UNTIL – este loop é semelhante ao Loop WHILE, contudo,


garante-se que no mínimo uma execução de instrução será feita. Isto
porque a condição aparece como último elemento do Loop, diferente
do Loop WHILE.

O Loop WHILE, pode emular todos os três tipos de loops. Segue abaixo
a sintaxe de declaração de Loop While.

WHILE <condição>

DO

<declaraçã>

………

………

END WHILE;

6.3.9 Cursores

As declarações SQL, como SELECT, retornam um conjunto de valores


ou nenhum. No caso do retorno de vários valores (Tuplas), elas não
permitem que o resultado seja trabalhado tupla por tupla, ou seja,
obriga-se que se trabalhe como todo resultado retornado. A extensão
PL/SQL denominada de CURSOR cria um mecanismo que permitirá
trabalhar com cada tupla retornada e não necessariamente todas
tuplas retornadas.

Cursores são elementos que servem para armazenar o conjunto de


resultados retornados pela declaração SELECT.

94
Os cursores permitem que se trabalha como cada linha ao invés de todas
as linhas resultantes de uma declaração. Cursores permitem definir uma
variável que receberá o resultado da declaração, permitindo assim que
identifiquemos o cursor para posterior manipulação.

A sintaxe para declarar (DECLARE), OPEN (abrir), buscar (FETCH) e


fechar (CLOSE) um cursor é definida abaixo.

DECLARE <cursor name> CURSOR [WITH RETURN <return


target>]
FOR <SELECT statement>;
OPEN <cursor name>;
FETCH <cursor name> INTO <variables>;
CLOSE <cursor name>;

DECLARE – Este comando é utilizado para fazer a declaração do cursor


e associar a uma declaração SELECT para posterior uso.
OPEN – O camando chama o cursor e alocado a memoria para
armazenar a informação do cursor.
FETCH – Este comando é utilizado para interagir no resultado do
cursor, quando chamado, ele retornar a linha actual a ser manipulada.
O número de colunada definidas na definição INTO, deve ser igual aos
mesmo números de colunas definidos na declaração SELECT do cursor.
CLOSE – Este serve para fechar o cursor e desalocar a memoria
utilizada pelo cursor criado.

Note que por ser uma PL/SQL, a sintaxe de declaração de um cursor


pode variar de SGBD. A sintaxe acima foi definida usando DB2 como
SGBD.

6.3.10 Tratamento de excepções


A implementação do tratamento de excepções varia de SGBD. Uma
excepção é lançada quando um determinado evento anormal de error
acorre. Os sistema de gerenciamentos de banco de dados nomeiam as
suas excepções de formas diferentes.

A sintaxe para definição de excepções no Mysql, é demostrada abaixo.

DECLARE [CONTINUE | EXIT | UNDO] HANDLER

FOR [mysql_error_code | sqlstate_value | SQLWarning |


SQLException | NotFound]

BEGIN
………
END

95
CONTINUE – continua a execução do programa depois de terminar o
handler

EXIT – Termina a execução do programa a partir do BEGIN até o END


onde o handler fora definido.

UNDO - até a data da elaboração do manual, está instrução não tinha


suporte ainda

Mysql_error_code – um valor inteiro identifica um determinado erro


Mysql. Cada valor identica um determinado error. Para a
documentação para mais informação.

Sqlstate-value – uma string de 5 caracteres que identifica um valor


SQLSTATE, essa string identifica um erro Mysql.

SQLWarning – abreviação para uma classe do SQLSTATE que inicia


com '01'.

SQLException – abreviação para uma classe do SQLSTATE que não


começa com '00', '01', '02'.

NotFound – abreviação para uma classe do SQLSTATE que inicia com


'02'.

6.3.11 Procedimentos armazenados (Store procedures)

Procedimentos armazenados, definem uma sequência de instruções


ou programas que serão executados quando chamados. A sua
implementação pode variar de fabricante para fabricante, contudo
existem um conjunto de características semelhantes entre fabricantes.

Procedimentos armazenados, aceitam parâmetros, e declaração de


variáveis locais, contudo não pode retornar valor, sendo essa
característica das funções, como veremos nas próximas sessões.

Outras caracteristicas suportadas pelo procedimentos armazenados, é


que eles permitem que sejam implementados blocos condicionais e de
repetição na sua estrutura.

A baixa a definição genérica dos procedimentos armazenados,


implementado no Mysql.

96
CREATE PROCEDURE nome_procedimento

([IN, OUT, INOUT]<paramentro, tipo_dado>,……)

BEGIN

<corpo do procedimento>

END

Os elementos IN, OUT, INOUT, significam respectivamente:

IN – o parâmetro será enviado para o procedimento;

OUT – valor que será enviado pelo procedimento.

INOUT – valor que será enviado para e pelo procedimento


respectivamente.

O procedimento para armazenar nome o idade de um funcionário


como idade mínima de 20 anos poderia ser:

CREATE PROCEDURE armezenar_funcionario (IN param_nome


VARCHAR (50),IN param_idade INT)

BEGIN

IF(param_idade > 20) THEN

INSERT INTO func (nome, idade) VALUES (param_nome,


param_idade)

END IF

END

6.3.12
Após a criação, os procedimentos são armazenados nos servidores
onde se localizam o SGBD. A chamada para execução de uns
procedimentos armazenado é feito a partir do camando CALL como
demostrado na sintax abaixo.

CALL nome_precedimento (<valores_paramatro>);

97
O exemplo acima definido pode ser chamado da seguinte forma:

CALL armezenar_funcionario (“Jorge”, 26);

Essa chamada fará que seja armazenado um usuário com nome Jorge
e idade 26 anos.
Os procedimentos armazenados, podem ser eliminados apartir do
comando DROP, usando a sintax abaixo definido.

DROP PROCDDURE nome_procedimento.

O código abaixo eliminará o procedimento armazenado.

DROP armezenar_funcionario

6.3.13 Funções (Fuctions)

Funções são blocos de instruções que permitem que um determindo


valor seja retonado no final da execução da função. Pode-se usar uma
função quando se deseje retornar valores no final da execução de uma
determinada instrução.

A maioria de SGBD possuem funções embutidas AVG, SUM e outras


que permitem executar determinadas instruções. A extensão PL/SQL
permite que se crie outras funções, as chamada de funções definidas
pelos usuários.

A sintax para definição de uma função também varia de SGBD, a baixo


segue a sintax simplificada utilizada por MYSQL.

CREATE FUNCTION nome_func (<tipo_dado param>, …..)

RETURNS tipo_dado

BEGIN

RETURN valor

98
END

Suponha que se deseja criar uma função que retorne o valor de


entrega do produto de acordo com a cidade.

CREATE FUNCTION preco_entrega ( cidade VARCHAR (50))


RETURNS INT;
BEGIN
DECLARE valor_entrega;
SET valor_entrega =0;
IF (cidade=”beira”) THEN
SET valor_entrega=100;
ELSEIF(cidade=”Maputo”) THEN
SET valor_entrega=200;
ELSE
SET valor_entrega=150;
END IF;
RETURN valor_entrega;
END;

A chamada da função pode ser feita dentro do comando SELECT ou


para atribuir o valor de retorno a uma variável.

// chamada da função no comando


SELECT SELECT preco_entrega (“beira”);

CREATE PRODEDURE test()


BEGIN
DECLARE resultado.
// chamada da função para atribuição de uma
variável. SET resultado = preco_entrega(“maputo”);

END

Assim como procedimentos armazenados, as funções definidas por


usuários podem ser apagas. Abaixo a sintax Mysql para eliminação de
uma função.

DROP FUCTION nome_funcao

99
6.3.14 Gatilhos (Triggers)
Triggers são componentes conduzidos por eventos. É um tipo especial
de procedimento armazenado, que é executado quando uma
determinada acção é realizada. Por exemplo, pode-se invocar um
gatilho quando insere-se uma determinada linha na tabela ou quando
actualizamos um determinado campo.

Como a maioria dos elementos introduzidos pelo PL/SQL, a sintaxe da


definição de um triggers varia de SGBD. Alguns permitem que os
triggers estejam associados somente a operações DML (data
manipulation language). Já outros SGBD como Oracle PL/SQL,
permitem que operações de DDL (data difinition languange) e
operações sobre o banco de dados como início de sessão de usuários,
reinicialização de banco de dados estejam associados aos gatilhos.

Os gatilhos podem ser executados antes (BEFORE) ou depois (AFTER) da


acção como INSERT, UPDATE ou DELETE ser executada. Caso um erro ou
excepção acontece no gatilho, a acção DML não será executada se o
gatilho for definido como BEFORE ou acontecerá um rooback
(cancelamento) da acção caso o gatilho seja definido como AFTER.

Segue abaixo a sintaxe de definição de um gatilho no SGBD MySql.

CREATE TRIGGER nome_trigger


[BEFORE | AFTER] [INSERT | UPDATE | DELETE]
ON nome_tabela FOR EACH ROW
Corpo_trigger

Ex: criar um gatilho chamado vend_trigger que adiciona o produto e


data de venda na tabela vendas_historico sempre que insere-se um
novo dado na tabela venda. Contudo e gatilho deve ser executado
depois da inserção.

CREATE TRIGGER vend_trigger


AFTER INSERT ON venda
FOR EACH ROW
BEGIN
INSERT INTO vendas_historico
(produto,data);
END

100
7 Exercícios

1. Sistema?
A. Conjunto de elemento trabalhando de forma colaborativa
para atingir determinado objetivo.
B. Uma coleção desorganizada de dados.
C. Uma coleção não organizada de dados ou informação.
D. Conjunto de elemento trabalhando sem objetivos comuns

2. Base de dados?
A. Um coleção de dados.
B. Uma coleção de desorganizada de dados.
C. Uma coleção organizada de dados.
D. Conjunto de elemento trabalhando por objetivo comum.

3. Sistema de base de dados?


A. Um coleção de dados e conjunto de ferramentas.
B. Uma coleção de desorganizada de dados.
C. Uma coleção organizada de dados e conjunto de ferramentas.
D. Conjunto de elemento trabalhando por objetivo individual.

4. 10. Selecione a opção mais correcta: SGBD é:


A. Cunjunto de programas que permite a manipulação dos
dados do banco de dados.
B. Banco de dados e um conjunto de programas que
permitem a manipulação desses dados.
C. Repositório de informação que podem ser utilizados
posteriormente.
D. Conjunto de elementos que trabalham de forma
colaborativa para atingir um objectivo comum, sendo a
informação o objecto a ser manipulado.

5. Os sistemas de armazenamentos informatizados


começaram a surgir nas décadas?
B. 80 B. 60 c. 90 D.70.
6. O modelos relacional foi por proposto por:
A. Cood. B. Peter Chen. C. SYBASE. D. Microsoft.

101
7. O modelo entidade relacionamento foi proposto por:
A. Cood. B. Peter Chen. C. SYBASE. D. Microsoft.

8. A linguagem de consulta que tornou padrão foi?


A. QUEL. B. SEQUEl. C. PL. D. SQL.

9. Qual das opções abaixo não representa um modelo de dados?


A. Relaciona. B. registro. C. Hierárquico. D.objecto-
ralacional.

10. O modelo Hierárquico organiza seus dados usando


A. Tabelas. B. arvore. C. Rede. D. grafos.

11. O modelo em rede organiza seus dados usando


B. Tabelas. B. arvore. C. Rede. D. objetos.

12. O modelo orientado a objeto organiza seus dados usando:


A. Tuplas. B. grafos. C. Rede. D. objetos.

13. Os modelos de dados definem:


A. As Formas de acesso aos dados nos bancos de dados
B. As Formas de manipulação de dados nos bancos de dados
C. As formas como os dados estarão organizados nos bancos
de dados.
D. As formas de restrição de segurança nos bancos de dados.

14. Um relação é composta por:


A. Tabela e corpo.
B. Cabeçalho e corpo.
C. Cabeçalho e atributos.
D. Corpo e tuplas.

15. Cabeçalho de uma relação representa:


A. Um conjunto de relações.
B. Conjunto de tuplas.
C. Conjunto de atributos.
D. Domínios da relação.

16. Atributo de relação representa:


A. Uma instância da relação.
B. Uma característica da relação.
C. O valor de uma tupla.

102
D. Uma linha da relação.

17. Uma tupla de uma relação representa:


A. Um domínio da relação.
B. Uma característica da relação.
C. O valor de uma tupla.
D. Uma linha da relação.

18. O grau de uma relação define:


A. Os valores suportados por um determinado atributo.
B. Número de atributos de uma relação.
C. Número de linhas de uma relação.
D. Uma característica da relação.

19. A cardinalidade de uma relação define:


A. Os valores suportados por um determinado atributo.
B. Número de atributos de uma relação.
C. Número de linhas de uma relação.
D. Uma característica da relação.

20. A operação da álgebra relacional que possibilita escolher


quais colunas ou atributos de uma tabela devem ser
exibidos em uma consulta é o(a)
A. União.
B. Junção.
C. Seleção.
D. Projeção.

21. No âmbito dos bancos de dados, a álgebra relacional é


uma linguagem de consulta procedural. As operações
chamadas unárias da álgebra relacional são:
A. Projetar, selecionar e renomear
B. Renomear, união e diferença de conjuntos
C. Produto cartesiano, divisão e atribuição
D. Diferença de conjuntos, projetar e atribuição

22. No projeto lógico de um banco de dados relacional, é


importante verificar o nível de normalização das tabelas
do banco de dados. Um dos propósitos da normalização é
A. Evitar redundâncias desnecessárias nas tabelas.
B. Eliminar todas as chaves primárias das tabelas.
C. Criptografar os dados mais relevantes do banco de dados.
D. Obter arquivos adequados ao backup do banco de dados.

103
23. No modelo relacional um relacionamento é:
A. Elemento de permite a comunicação com outros objectos no
esquema do modelo relacional.
B. Representa uma determinada característica de uma
determinada entidade no Modelo Relacional.
C. Objecto composto por um conjunto de características que se
relaciona como outros objectos no esquema do Modelo
Relacional.
D. Representa cada de linha ou instância de uma tabela no
modelo relacional.

24. No modelo relacional uma Entidade é:


A. Representa cada de linha ou instância de uma tabela no
modelo relacional.
B. Objecto composto por um conjunto de características que se
relaciona como outros objectos no esquema do Modelo
Relacional.
C. Representa uma determinada característica de uma
determinada entidade no Modelo Relacional.
D. Elemento de permite a comunicação com outros objectos no
esquema do modelo relacional.

25. No modelo relacional uma Tupla é:


A. Objectos composto por um conjunto de características que
relaciona como outros objectos no esquema do Modelo
Relacional.
B. Representa uma determinada característica de uma
determinada entidade no Modelo Relacional.
C. Representa cada de linha ou instância de uma tabela no
modelo relacional.
D. Elemento de permite a comunicação com outros objectos no
esquema do modelo relacional.

26. No modelo relacional um Atributo é:


A. Representa cada de linha ou instância de uma tabela no
modelo relacional.
B. Elemento de permite a comunicação com outros objectos no
esquema do modelo relacional.
C. Objectos composto por um conjunto de características que se
relaciona como outros objectos no esquema do Modelo
Relacional.
D. Representa uma determinada característica de uma
determinada entidade no Modelo Relacional.

104
27. Num banco de dados relacional, restrição de
integridade referencial:
A. Define que os valores dos campos que aparecem em uma
chave estrangeira devem aparecer na chave primária da
tabela referenciada.
B. define que os valores dos campos que aparecem em uma
chave primária devem aparecer na chave primária da
tabela referenciada.
C. Define que os valores dos campos que aparecem em uma
chave estrangeira devem aparecer na chave estrangeira
da tabela referenciada.
D. Define que os valores dos campos que aparecem em uma
chave primária não devem aparecer na chave estrangeira
da tabela referenciada.

28. Num banco de dados relacional, restrição de chave:


A. Os valores da chave primária deve ser únicos e não nulos.
B. Define que os valores dos campos que aparecem em uma
chave estrangeira devem aparecer na chave primária da
tabela referenciada.
C. Os atributos de possuir tipos de dados variáveis.
D. Toda relação deve conter um conjunto de tuplas que
formaram a instância.

29. Num banco de dados relacional, restrição de domínio


define? A. Os valores a serem atribuído aos atributos de uma
determinada tupla, devem ser do tipo definido pelo
atributo. B. Toda relação deve conter atributos.
C. Toda relação deve conter um conjunto de tuplas que formaram
a instância
D. Os atributos de possuir tipos de dados variáveis.

Dado a relação baixo.

Produto

IdProduto nome_produto Preco_produro Quant_produro


10000 Banana 10 120
10001 Manga 5 210
10002 Uva 250 365

105
30. O cabeçalho da relação representa-se por?
A. (idProduto=10, nome_produto=banana,
preco_produto=10, quant_produto=120).
B. (10000, banana, 10. 120).
C. Produto(10000, banana, 10. 120).
D. Producto(idProduto, nome_produto,
preco_produto, quant_produto).

31. A relação producto acima, diz-se que é de


grau? A. 4.
B. 8.
C. 16.
D. Relacional

32. A relação producto acima, o atributo quant_produto pertence


ao domínio de?
A. Números inteiros.
B. Conjunto de caracteres.
C. Números horários.
D. Quantidade.

33. A relação producto acima o atributo nome_produto


pertence ao domínio de?
A. Números inteiros.
B. Conjunto de caracteres.
C. Atributo.
D. Nome.

34. A relação produto acima, o número de instâncias é igual


a? A. 4
B. 8
C. 3
D. 10002

35. A relação produto acima, o número de tuplas é igual a?


A. 4
B. 16
C. 8
D. 3

36. Uma chave primária é?


A. Um ou um conjunto de atributos da relação que identificam
as tuplas.
B. Um ou um conjunto de tuplas da relação que identificam
os atributos.

106
C. Uma da tupla da relação que não repete.
D. Uma tupla da relação.

37. Uma chave estrangeira é?


A. Um ou um conjunto de atributos da relação.
B. Um tupla definida numa relação, sendo que a tupla
existe numa outra relação como chave primária.
C. Uma da tupla da relação que não repete.
D. Um atributo definido numa relação, sendo que o
atributo existe numa outra relação como chave primária.

38. No processo de normalização, a Primeira forma normal


tem por objectivo?
A. Eliminação de campos cujo valor depende de parte da chave e
não da chave na totalidade.
B. Eliminação de grupos repetitivos e tabelas aninhadas.
C. Eliminação de campos cujo valor depende de atributos não chave.
D. Eliminação de cardinalidade.

39. No processo de normalização, a Segunda forma normal


tem por objectivo?
A. Eliminação de grupos repetitivos e tabelas aninhadas.
B. Eliminação de campos cujo valor depende de atributos não
chave. C. Eliminação de campos cujo valor depende de parte da
chave e não da chave na totalidade.
D. Eliminação de cardinalidade.

40. No processo de normalização, a terceira forma normal


tem por objectivo?
A. Eliminação de campos cujo valor depende de parte da chave e
não da chave na totalidade.
B. Eliminação de cardinalidade.
C. Eliminação de grupos repetitivos e tabelas aninhadas.
D. Eliminação de campos cujo valor depende de atributos não
chave.

Resposta:

1-A, 2-C, 3-c, 4-A, 5-B, 6-A, 7-B, 8-D, 9-B,


10-B, 11-C, 12-D, 13-C, 14-B, 15-C, 16-B, 17-
D, 18-B, 19-C, 20-D, 21-A, 22-A, 23-A, 24-B, 25-
C, 26-D, 27-A, 28-A, 29-A, 30-D, 31-A, 32-A, 33-
B, 34-C, 35-D, 36-A, 37-D, 38-B, 39-C, 40-D.

107
8 Referências

Juliano. (2014). devmedia. Obtido de Gerenciamento de Banco de


Dados: Análise Comparativa de SGBD’S:
https://www.devmedia.com.br/gerenciamento-de-banco-de-
dados-analise-comparativa-de-sgbd-s/30788

Kriegel, A., & Trukhnov, B. M. (2003). SQL Bible. Canada: Wiley


Publishing, Inc.

Neeraj Sharma, L. P. (2010). Database Fundamentals. Canada.

Osvaldo Kotaro Takai, I. C. (2005). INTRODUÇÃO A BANCO DE DADOS.


São Paulo.

Powell, G. (2006). Beginning Database Design. Canada: Wiley


Publishing, Inc.

Quickbase. (2018, Julho 20). A Timeline of Database History/ Empresa:


Quickbase. Retrieved from web site de quickbase:
https://www.quickbase.com/articles/timeline-of-database-
history

Turban, E. (2003). Administração de tecnologia da informação.

TURBAN, E. M. (2004). Tecnologia da informação para gestão.


Transformado os negócios da economia digital.

Wikipedia. (12 de Março de 2018). Sistema de informação. Obtido de


Wikipedia:
https://pt.wikipedia.org/wiki/Sistema_de_informa%C3%A7%C
3%A3o

108

Você também pode gostar