Uc06 Sa1
Uc06 Sa1
Uc06 Sa1
3.1 OBJETIVO_____________________________________________21
5.2.1Relacionamento________________________________________________ 40
6 MODELO ENTIDADE RELACIONAMENTO (MER) II______________49
5.3 ATRIBUTO_____________________________________________41
5.3.1 Valor de um atributo____________________________________________ 41 6.1 OBJETIVOS____________________________________________49
5.3.3 Características dos atributos de uma entidade_______________________ 42 6.3 COMO NOMEAR OS RELACIONAMENTOS___________________51
6.3.2 Verbo________________________________________________________ 51
5.5 PADRÕES DE NOMENCLATURA___________________________44
6.3.3 Nome das Entidades____________________________________________ 52
5.6 TIPOS DE ENTIDADES___________________________________45
5.6.1 Entidade Primária______________________________________________ 45 6.4 GRAU DE UM RELACIONAMENTO_________________________52
6.10 RECAPITULANDO______________________________________57
8 NORMALIZAÇÃO______________________________________________ 77
12.4 OPERAÇÕES LEFT E RIGHT JOIN__________________________133 14 ADMINISTRAÇÃO DE BANCO DE DADOS – PARTE I____________149
Caro(a) aluno(a) seja bem-vindo(a) à Unidade Curricular de Banco Desse modo, para praticar, você criará um Projeto de Banco de
de Dados. Aqui você estudará um assunto muito importante para área Dados Relacional em conjunto com a criação do Modelo Entidade
de Tecnologia da Informação: os Bancos de Dados. Relacionamento e seu mapeamento para o Modelo Relacional. Em
Para iniciar nossos estudos, primeiramente, você compreenderá seguida, este modelo será traduzido para comandos em linguagem
SQL, utilizada para definição da estrutura e manipulação dos Bancos de
a diferença entre dados e informações. Assim, você aprenderá que
Dados.
transformar dados em informações é uma tarefa dos softwares, além de
aprender como os Bancos de Dados auxiliam neste trabalho. Por fim, aprenderemos um pouco sobre a Administração de
Banco de Dados, compreendendo os conceitos de segurança, visão,
Na sequência, estudaremos como as antigas estruturas de arquivos
procedimentos e funções.
evoluíram até o surgimento do Banco de Dados. Será destacado aqui que
Nosso objetivo é que, ao final da unidade curricular, você seja
sua importância está relacionada ao fato de que são estruturas presentes
capaz de entender que esses dados, uma vez processados, são úteis
em praticamente todos os Sistemas de Informação, cumprindo o papel
para os mais variados contextos, desde sistemas comerciais tradicionais
essencial de armazenamento de dados. (comércio e indústria), passando por grandes sistemas, sistemas
Uma vez compreendida a importância dos Bancos de Dados, o bancários e até mesmo sistemas críticos. Para tanto, forneceremos as
próximo passo será conhecer os conceito de Modelo de Dados e como ferramentas para inseri-lo no contexto da Administração de Dados e a
os Sistemas de Gerenciamento de Banco de Dados implementam prática necessária para construção dos Bancos de Dados.
fisicamente esses Modelos. Tenha um ótimo curso!
Vivemos em um mundo repleto de dados e de informações, não é Por fim, você aprenderá, por meio de exemplos, qual o contexto
mesmo? Você talvez nem perceba, mas consultar o saldo bancário, ver a de utilização dos bancos de dados e por que eles são importantes
previsão do tempo e jogar na loteria, entre tantas outras atividades do atualmente, além de entender a motivação de seu surgimento e sua
cotidiano, envolvem dados e informações. Porém, com inúmeros meios evolução.
de produção e de transmissão de dados, armazenar e processar tamanha
Bons estudos!
quantidade de material é um desafio nos dias atuais, concorda?
Quando utilizamos os arquivos, a estrutura de cada um deles Dados financeiros ou médicos, por exemplo, geralmente são de
está embutida no código dos programas de aplicação do software que natureza sigilosa. O acesso a esses dados deve ser restrito e controlado.
realizará o processamento dos dados. Desse modo, quaisquer mudanças A utilização de arquivos não permite esse controle. Além disso, pode
na estrutura dos arquivos exigirá alteração em todos os programas que ser necessária a concessão de diferentes tipos de acessos a um mesmo
acessam esses mesmos arquivos. O ideal é que houvesse isolamento e, arquivo. Enquanto um grupo de usuários tem direito de consulta aos
consequentemente, independência entre as estruturas que armazenam dados de determinado arquivo, outro grupo tem direito a alterar, a
os dados e os códigos que os manipulam. excluir e a incluir registros.
SAIBA MAIS
Elmasri (2002, p. 4), por sua vez, afirma que é “uma coleção de
programas que permitem aos usuários criar e manter um banco de Figura 8 – A estrutura básica de um SGBD
Fonte: ADAPTADA DE ELMASRI, 2002.
dados”.
SAIBA MAIS Agora que você conhece as principais definições e a estrutura
básica de um SGBD, estudaremos as principais funções desse sistema.
Em outras palavras, segundo o mesmo autor, trata-se de um
software, que facilita o processo de construção, manipulação e
Prossiga a leitura!
compartilhamento de banco de dados entre diversos usuários e
aplicações, além de outras funções, como proteção do banco de
dados e sua manutenção.
Bom estudo!
Figura 9 – Arquitetura ANSI/SPARC • Esquema conceitual: descreve a estrutura lógica dos dados;
Fonte: ADAPTADO DE MORAIS, 2014.
• Esquema interno: descreve a estrutura física dos arquivos e os
índices que serão empregados.
SAIBA MAIS
4.5 RECAPITULANDO
Neste tema, você aprendeu que o conceito de projeto de BD está
dentro de um conceito maior, que, por sua vez, envolve a definição
da Arquitetura de um Sistema de Banco de Dados. Também aprendeu
que o padrão ANSI/SPARC de arquitetura é o padrão utilizado hoje
pelo mercado e que o seu principal benefício é prover a propriedade
conhecida como Independência de Dados.
Figura 13 – Exemplo de representação gráfica para relacionamentos Chamamos valor de um atributo o conteúdo que ele pode ter.
Fonte: ADAPTADO DE MORAIS, 2014. Marcos Ferreira, Rosa Cristina, Deusdete da Cunha poderiam ser valores
da entidade ALUNO. Casas Bahia, Carrefour e C&A seriam valores do
5.3 ATRIBUTO atributo Nome da entidade FORNECEDOR.
Ainda, de acordo com Heuser (2001), atributo é o dado que é 5.3.2 DOMÍNIO DE UM ATRIBUTO
associado a cada ocorrência de uma entidade ou de um relacionamento,
É o conjunto de valores que um atributo pode assumir. Exemplo:
ou seja, são partes específicas de determinada entidade.
masculino, feminino são o domínio do atributo Sexo da entidade ALUNO. O
Assim, poderiam ser atributos de uma entidade ALUNO: nome;
atributo Nota da entidade ALUNO tem o domínio: {números reais de 0 a 10}.
número da matrícula; CPF; data de ingresso no curso; endereço; telefone e
data de nascimento. Uma entidade FORNECEDOR, por outro lado, poderia
ter como atributos: CGC; nome; razão social; endereço e capital social.
Figura 17 – Exemplo de atributo derivado É importante ressaltar que existem seis tipos de atributos
Fonte: ADAPTADO DE MORAIS, 2014. identificadores, também chamados de chaves ou índices. Os atributos
componentes dos campos-chave não devem permitir valores nulos.
• Não identificador: quando o identificador não identifica por si • nomedeatributo: inicia com letra maiúscula e o restante
só uma entidade dentro de um tipo determinado. Por exemplo, minúsculo. Não são utilizados caracteres especiais.
o nome do aluno não identifica o aluno dentro da entidade
ALUNO.
Compõem seu identificador os identificadores das entidades que se 5.7 TIPOS DE RELACIONAMENTOS
associaram para lhe dar origem.
5.8 RECAPITULANDO
Neste tema, você aprendeu a criar os principais elementos de um
5.7.2 Relacionamento Tipo Associativo
Diagrama Entidade Relacionamento (DER), que é o principal diagrama
Um relacionamento é do tipo associativo se ele relaciona uma do Modelo Entidade Relacionamento (MER). Mais especificamente,
entidade primária a uma entidade associativa. você conheceu o conceito e a forma de representação dos seguintes
elementos: entidade; relacionamento; atributo; dicionário de dados;
Por exemplo, tanto o relacionamento entre ALUNO e
padrões de nomenclatura; tipos de entidades; tipos de relacionamentos.
APROVEITAMENTO como o relacionamento entre DISCIPLINA e
APROVEITAMENTO são do tipo associativo, pois ambos relacionam
entidades primárias de ALUNO e DISCIPLINA à entidade do tipo
associativa APROVEITAMENTO.
Neste tema, você aprenderá mais conceitos do Modelo Entidade • como nomear os relacionamentos;
Relacionamento (MER). Esses conceitos definem estruturas que também • grau de um relacionamento;
são necessárias para criação do Diagrama Entidade Relacionamento
• subclasses, superclasses e herança;
(DER): cardinalidade dos relacionamentos; como nomear os
• agregação;
relacionamentos; grau de um relacionamento; subclasses, superclasses
e herança; agregação; autorrelacionamento; relacionamento total e • autorrelacionamento;
parcial; cardinalidade mínima e máxima. • cardinalidade mínima e máxima;
• relacionamento total e parcial.
6.1 OBJETIVOS
6.2 CARDINALIDADE
Criar um Diagrama Entidade Relacionamento (DER) a partir de um
modelo descritivo contendo os seguintes elementos: Havendo um relacionamento entre entidades, é necessário identificar
• cardinalidade dos relacionamentos; a cardinalidade, ou seja, quantas linhas (registros ou tuplas) da entidade A
podem estar associadas com uma linha da entidade B e vice-versa.
6.3.1 Substantivo
Para nomear um relacionamento com um substantivo, utilize um
Figura 28 – Relacionamento N:N que represente a forma como as entidades de associam.
Fonte: ADAPTADO DE MORAIS, 2014.
6.3.2 Verbo
Para nomear um relacionamento com um verbo, utilize um que
Figura 29 – Instâncias em Relacionamento N:N indique uma ação em que uma das entidades é o sujeito e a outra é o
Fonte: ADAPTADO DE MORAIS, 2014.
objeto.
Figura 34 – Generalização de entidades Para entender melhor, vamos considerar, por exemplo, a
Fonte: ADAPTADO DE MORAIS, 2014. Superclasse PESSOA, e as Subclasses FÍSICA e JURÍDICA. Neste caso,
todas as pessoas possuem um endereço, independente se físicas ou
jurídicas. Já o CPF é um atributo específico de pessoas físicas, enquanto
o CNPJ existe somente para pessoas jurídicas.
Especialização é o processo de definir um conjunto de Subclasses de um Finalmente, o último conceito que devemos conhecer aqui
tipo de entidade. Este tipo de entidade é chamado então de Superclasse é o de categoria ou tipo de união. Esta categoria indica a forma de
da especialização.
relacionamento entre as Superclasses e Subclasses. Assim, uma instância
da entidade VEÍCULO pode ser um CARRO ou um CAMINHÃO, mas
não os dois ao mesmo tempo. Neste caso, este é um relacionamento
disjunto. Já um ALUNO em uma universidade, por exemplo, pode ser
Assim, o conjunto de Subclasses que forma uma especialização é
de GRADUAÇÃO e ao mesmo tempo de PÓS-GRADUAÇÃO, o que indica
definido com base em alguma característica que distingue uma Subclasse
que, neste caso, é um relacionamento sobreposto.
de outra, como CPF e CNPJ para pessoas físicas e jurídicas, por exemplo.
IMPORTANTE
A leitura da figura anterior é a seguinte: Cardinalidade mínima e máxima são utilizadas em relacionamentos 1:1,
1:N e N:N.
• um FUNCIONÁRIO é chefe de N funcionários;
• um FUNCIONÁRIO é chefiado por um outro funcionário.
6.9 RELACIONAMENTO TOTAL E PARCIAL
6.8 CARDINALIDADE MÍNIMA E MÁXIMA
Podemos classificar os relacionamentos em totais ou parciais.
A cardinalidade mínima e máxima de um relacionamento também Os totais (ou obrigatórios) são aqueles em que participam todas as
pode ser representada no diagrama. linhas de uma entidade. Os parciais (ou opcionais) são aqueles em que
a participação de todas as tuplas da entidade não é obrigatória. Isso é
determinado em função da cardinalidade mínima do relacionamento.
6.10 RECAPITULANDO
Figura 39 – Relacionamento total x parcial
Fonte: ADAPTADO DE MORAIS, 2014. Neste tema, estudamos os conceitos importantes para criação
do Diagrama Entidade Relacionamento (DER): cardinalidade dos
Observando a figura anterior, temos que determinado relacionamentos; como nomear os relacionamentos; grau de um
DEPARTAMENTO pode ter muitas divisões ou pode não ter nenhuma relacionamento; subclasses, superclasses e herança; agregação;
DIVISÃO. Uma DIVISÃO, por sua vez, necessariamente tem de estar autorrelacionamento; relacionamento total e parcial; cardinalidade
ligada a um só DEPARTAMENTO. Neste caso, não podem haver divisões mínima e máxima.
que não pertençam a nenhum departamento.
A partir de agora você é capaz de criar esses diagramas utilizando
todos os recursos de modelagem disponíveis. Vamos praticar então?
Em uma analogia entre o conceito matemático de relação e a O Modelo Entidade Relacionamento (MER) é representado através
noção trivial de tabela, temos que: cada LINHA da tabela representa de Diagrama Entidade Relacionamento (DER) e construí-lo significa:
uma TUPLA da relação; o NÚMERO DE COLUNAS da tabela representa
• coletar e documentar informações relevantes do ambiente
o GRAU da relação; o NÚMERO DE LINHAS da tabela representa a estudado para construção do DER;
CARDINALIDADE da relação; os VALORES PERMITIDOS em cada coluna
• representar as informações, de forma clara e objetiva, em
da tabela representam o DOMÍNIO da relação.
um formato padrão que possa facilitar o entendimento dos
participantes do processo;
• definir, de maneira clara, o escopo do ambiente modelado;
• adquirir o entendimento do ambiente através de refinamentos
sucessivos do modelo;
A seguir, vamos aprender como mapear cada elemento do DER em MR. Figura 41 – DER de uma entidade primária
Fonte: ADAPTADO DE MORAIS, 2014.
Figura 42 – DER de uma entidade primária com atributo composto Figura 43 – DER de uma entidade primária com atributo multivalorado
Fonte: ADAPTADO DE MORAIS, 2014.
Fonte: ADAPTADO DE MORAIS, 2014.
A figura a seguir mostra um exemplo de entidade primária A figura seguinte mostra um exemplo de entidade primária
ALUNO com dois atributos simples, Matrícula e Nome, e dois atributos EMPREGADO com dois atributos simples, Matrícula e Nome, associada
multivalorados, Endereço e Telefone. a uma entidade fraca Dependente, com dois atributos simples, Código
e Data de Nascimento.
chave estrangeira.
A chave primária da entidade DEPENDENTE, por sua vez, é o 7.3.2 Mapeamento de relacionamento
conjunto de atributos Matrícula e Código.
O próximo elemento do DER que mapearemos são os Relacionamentos.
Você aprenderá a mapear relacionamentos 1:1, 1:N e N:N.
7.3.1.5 ENTIDADE ASSOCIATIVA
7.3.2.2 RELACIONAMENTO TIPO 1:N MR: ALUNO (Matrícula, Nome) DISCIPLINA (Código, Nome)
ALUNO DISCIPLINA (Matrícula, Código, Nota, Frequência)
A próxima figura mostra um exemplo de duas entidades primárias,
DEPARTAMENTO e FUNCIONÁRIO, associadas por relacionamento de Figura 48 – DER de Relacionamento tipo N:N
Fonte: ADAPTADO DE MORAIS, 2014.
cardinalidade 1:N.
7.3.3 Generalização/Especialização de Entidades No segundo modelo, algumas tuplas poderão ter os atributos
Titulação, Grau de Instrução e Especialização com valores nulos.
A figura a seguir mostra um exemplo de relacionamento do
tipo Generalização/ Especialização entre as entidades FUNCIONÁRIO,
PROFESSOR, TÉCNICO e ENGENHEIRO.
Ou,
Normalização ajuda a minimizar redundâncias e inconsistências A teoria da normalização foi escrita por Codd em 1972 e consiste
nos BDs, tornando sua manipulação (alteração e recuperação dos em três formas normais, nas quais em cada etapa uma relação passa a
dados) mais simples e, como consequência, facilitando a manutenção satisfazer um conjunto de restrições estabelecidas.
• lista de relações necessárias e seus atributos; CÓD. DO ITEM NOME DO ITEM QUANTIDADE PREÇO UNITÁRIO PREÇO TOTAL
TOTAL DO PEDIDO:
1 11/10 15/10 111 Cli 1 E1 1 Item 1 10 50,00 500,00 660,00 Passo 3: Criar nova relação com a chave da relação original e os demais
1 11/10 15/10 111 Cli 1 E1 2 Item 2 5 10,00 50,00 660,00 atributos do grupo de repetição;
1 11/10 15/10 111 Cli 1 E1 3 Item 3 6 5,00 30,00 660,00
Passo 4: Repetir o passo 3 para cada grupo de repetição.
1 11/10 15/10 111 Cli 1 E1 4 Item 4 8 10,00 80,00 660,00
Passo 1: Determinar a chave da relação original e a chave de cada Tabela 11 – Instâncias do pedido na primeira forma normal
Fonte: ADAPTADO DE MORAIS, 2014.
grupo de repetição;
Siglas:
ATRIBUTOS ID CE OB NAT TAM DEC DOM ATRIBUTOS ID CE OB NAT TAM DEC DOM
Codigo_Curso S S(1) S Código_Curso S S(1) S
Codigo_Disciplina S S(1) S Codigo_Disciplina S S(1) S
TURMA NumeroTurma S S C 3 NúmeroTurma S S(1) S
NumeroSubTurma S S C 1 NúmeroSubTurma S S(1) S
Ano_Semestre S S(2) S AULA Ano_Semestre S S(1) S
Numero_Semestre S S(2) S Número_Semestre S S(1) S
(1) Relacionado com disciplina. Data S S D
(2) Relacionado com semestre. Número S S N 1
Resumo S C 60
ATRIBUTOS ID CE OB NAT TAM DEC DOM CPF_Professor S(2) S
DIAS DE Codigo_Curso S S(1) S
(1) Relacionado com Turma.
AULA Codigo_Disciplina S S(1) S
(2) Relacionado com Professor
NumeroTurma S S(1) S
• (Codigo Text(3) NOT NULL, Nome Text(30) NOT NULL, • Numero INTEGER NOT NULL,
b) Para criar a tabela CURSOS, por sua vez, faríamos da seguinte • Laboratorio Byte NOT NULL,
forma: • Prelecao Byte NOT NULL,
• (Codigo Text(3) NOT NULL, Nome Text(30) NOT NULL, • CONSTRAINT PrkDisciplina PRIMARY KEY (CodigoCurso, Numero),
• (CodigoCurso Text(3) NOT NULL, Uma cláusula CONSTRAINT estabelece várias restrições em um campo
e pode ser utilizada para estabelecer a chave primária.
• NumeroDisciplina INTEGER NOT NULL,
• Numero Text(3) NOT NULL,
8.2 ALTER TABLE
• NumeroSubturma Text (1) NOT NULL,
• AnoSemestre Integer NOT NULL, A instrução ALTER TABLE modifica a estrutura de uma tabela depois
• NumeroSemestre Byte NOT NULL, de ter sido criada com a instrução CREATE TABLE, observe:
• PRIMARY KEY (CodigoCurso, NumeroDisciplina, Numero, ALTER TABLE tabela {ADD {COLUMN campo tipo[(tamanho)] [NOT NULL]
NumeroSubTurma, AnoSemestre,NumeroSemestre), [CONSTRAINT índice] | CONSTRAINT índicedemulticampos} | DROP
• CONSTRAINT FrkDisciplinaTurma {COLUMN campo I CONSTRAINT nomedoíndice} }
DROP INDEX IdxNome ON DEPARTAMENTOS [WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]
a. Para criar um índice único para o campo nome da tabela CREATE INDEX IdxNome
DEPARTAMENTOS, faça da seguinte maneira: ON DEPARTAMENTOS (Nome ASC)
CREATE UNIQUE INDEX IdxNome WITH IGNORE NULL
ON DEPARTAMENTOS (Nome ASC) A cláusula WITH IGNORE NULL proíbe valores nulos no índice.
A cláusula UNIQUE indica que o índice criado não pode ter valores
d. Para proibir valores duplicados no campo ou nos campos
duplicados. indexados de diferentes registros, use a palavra reservada UNIQUE.
b. Para criar um índice para o campo nome da tabela Além disso, na cláusula WITH opcional, você pode impor regras de
DEPARTAMENTOS, proibindo a entrada de dados nulos, por validação de dados, como:
sua vez, faça da seguinte forma:
• proibindo entradas Null no campo ou campos indexados dos
CREATE INDEX IdxNome
novos registros, utilizando a opção DISALLOW NULL;
ON DEPARTAMENTOS (Nome ASC) • impedindo que registros com valores Null no campo ou campos
WITH DISALLOW NULL indexados sejam incluídos no índice utilizando a opção IGNORE
NULL;
A cláusula WITH DISALLOW NULL proíbe a entrada de dados nulos
• designando o campo ou campos indexados como a chave
no campo nome.
primária utilizando a palavra reservada PRIMARY. Isto significa
c. Para criar um índice para o campo nome da tabela que a chave é exclusiva e, portanto, você pode omitir a palavra
DEPARTAMENTOS que não contenha valores nulos, faça da reservada UNIQUE.
Você utiliza a cláusula CONSTRAINT nas instruções ALTER TABLE e NOT NULL (nãonulo1[, nãonulo2 [, ...]]) |
CREATE TABLE para criar ou excluir restrições. Há dois tipos de cláusulas FOREIGN KEY (ref1[, ref2 [, ...]])
CONSTRAINT: um para criar uma restrição em um campo único e outro
REFERENCES tabelaexterna [(campoexterno1 [,
para criar uma restrição em mais de um campo. Confira!
campoexterno2 [, ...]])]}
O nome do campo ou campos que Assim, utilizando CONSTRAINT, você pode designar um campo
nãonulo1, nãonulo2,
estão restritos a valores não NULL
como um dos seguintes tipos de restrições:
O nome do campo ou campos de uma
ref1, ref2 chave externa que fazem referência a • você pode utilizar a palavra reservada UNIQUE para designar um
campos em outra tabela. campo como chave exclusiva. Isto significa que não pode haver
O nome da tabela externa contendo o dois registros em uma tabela que tenha o mesmo valor neste
Tabelaexterna campo ou campos especificados por
campo. Assim, você pode restringir qualquer campo ou lista de
campoexterno.
campos como exclusivo. Contudo, se uma restrição de campos
O nome do campo ou campos na
tabelaexterna especificados por ref1,
múltiplos for designada como uma chave exclusiva, os valores
campoexterno1,campoexterno2 ref2. Você pode omitir esta cláusula combinados de todos os campos no índice devem ser exclusivos,
se o campo referenciado for a chave mesmo que dois ou mais registros tenham o mesmo valor em
primária de tabelaexterna.
apenas um dos campos;
VALUES (valor1[, valor2[, ...]) Você pode usar a instrução INSERT INTO para adicionar um único
A instrução INSERT INTO possui as partes a seguir. registro a uma tabela usando a sintaxe da consulta acréscimo de registro
único, como mostrado anteriormente.
PARTE DESCRIÇÃO Nesse caso, o código especifica o nome e o valor de cada campo
O nome da tabela ou consulta à qual acrescentar os do registro. Além disso, você deve especificar cada um dos campos
Destino - Banco de
registros. O caminho até um banco de dados externo. Para do registro ao qual será atribuído um valor, além de informar, é claro,
dados externo
obter uma descrição do caminho, consulte a cláusula IN.
o valor para aquele campo. Quando você não especifica os campos, o
O nome da tabela ou consulta a partir da qual os registros
0 Origem
vão ser copiados. valor padrão, ou Null, é inserido para colunas ausentes. Os registros são
Nomes dos campos aos quais os dados serão acrescentados, adicionados ao fim da tabela.
se seguirem a um argumento destino, ou os nomes dos
Campo 1 e Campo 2
campos a partir dos quais os dados serão obtidos, se Você também pode usar INSERT INTO para acrescentar um conjunto
seguirem a um argumento de origem.
de registros de outra tabela ou consulta utilizando a cláusula SELECT ...
O nome da tabela ou das tabelas das quais os registros são
Expressão de tabela
inseridos. Este argumento pode ser um nome de tabela FROM, como mostrado anteriormente na sintaxe da consulta acréscimo
simples ou um composto resultante de uma operação INNER
JOIN, LEFT JOIN ou RIGHT JOIN, ou uma consulta salva. de múltiplos registros. Nesse caso, a cláusula SELECT especifica os
campos a acrescentar na tabela destino especificada.
A tabela origem ou destino pode especificar uma tabela ou uma Use a cláusula IN para acrescentar os registros a uma tabela em outro
consulta. Se for especificada uma consulta, o mecanismo de banco de banco de dados.
dados Microsoft Jet acrescenta registros a todas as tabelas especificadas
E, para criar uma nova tabela, use a instrução SELECT... INTO, em lugar de
pela consulta.
criar uma consulta criar tabela.
PARTE DESCRIÇÃO Você pode usar DELETE para remover registros de tabelas que estão em
um relacionamento “um para muitos” com outras tabelas. As operações
O nome opcional da tabela da qual são excluídos
tabela.* de exclusão em cascata fazem com que os registros em tabelas que estão
registros.
no lado “muitos” do relacionamento sejam excluídos quando o registro
tabela O nome da tabela da qual são excluídos registros. correspondente no lado “um” do relacionamento é excluído na consulta.
Uma expressão que determina os registros a serem Por exemplo, nos relacionamentos entre as tabelas Clientes e Pedidos, a
Critérios
excluídos. tabela Clientes está no lado “um” e a tabela Pedidos está no lado “muitos”.
Portanto, a exclusão de um registro de Clientes resulta na exclusão dos
registros Pedidos correspondentes se a opção de exclusão em cascata
estiver especificada.
SET QuantiaDoPedido = QuantiaDoPedido * 1.1, Frete = Frete * 1.03 SELECT [atributo] { * | tabela.* | [tabela.]campo1 [AS alias1] [,
[tabela.]campo2 [AS alias2] [, ...]]}
WHERE PaísDeDestino = ‘UK’;
FROM expressãodetabela [, ...] [IN bancodedadosexterno]
IMPORTANTE [WHERE... ]
[GROUP BY... ]
UPDATE não gera um conjunto de resultados. Além disso, depois de
atualizar os registros usando uma consulta de atualização, você não [HAVING... ]
poderá desfazer a operação. Se quiser saber quais os registros que foram
atualizados, examine antes os resultados de uma consulta seleção que [ORDER BY... ]
usem os mesmos critérios e, depois, execute a consulta de atualização.
[WITH OWNERACCESS OPTION]
Além disso, mantenha sempre cópias de backup dos dados. Se você
atualizar os registros errados, poderá recuperá-los a partir das cópias.
IMPORTANTE
A instrução SELECT INTO cria uma tabela.
Sempre que utilizar funções agregadas ou consultas que retornam nomes
Sintaxe
de objetos Field ambíguos ou duplicados, você deve utilizar a cláusula AS
para fornecer um nome alternativo para o objeto Field. SELECT campo1[, campo2[, ...]] INTO novatabela [IN
bancodedadosexterno] FROM origem
Neste material, você estudará os atributos e as cláusulas para o comando 11.1 OBJETIVO
SELECT da linguagem SQL. Como atributos, temos: ALL, DISTINCT,
DISTINCTROW e TOP. E as cláusulas são: FROM, GROUP BY, HAVING, IN, Na sequência, você vai aprender e implementar o comando SELECT
ORDER BY, WHERE, WITH OWNERACCESS OPTION. com os seguintes atributos e cláusulas:
Você aprenderá que os atributos são responsáveis por especificar os • Atributos ALL, DISTINCT, DISTINCTROW e TOP
dados a serem selecionados em uma consulta, e as cláusulas, por sua • Cláusula FROM
vez, podem agrupar, ordenar e filtrar dados em uma consulta. Vamos lá?
• Cláusula GROUP BY
Bom estudo! • Cláusula HAVING
Premissa: banco de dados criado no exercício do Capítulo 9. • Cláusula IN
• Cláusula ORDER BY
• Cláusula WHERE
• Declaração WITH OWNERACCESS OPTION
PARTE DESCRIÇÃO
ALL Adotada quando você não inclui um dos atributos. O mecanismo de banco de dados Microsoft Jet seleciona todos os registros que atendam às condições na
instrução SQL. Os dois exemplos a seguir são equivalentes e retornam todos os registros da tabela Funcionários:
SELECT ALL *
FROM Funcionários
ORDER BY CódigoDoFuncionário;
SELECT *
FROM Funcionários
ORDER BY CódigoDoFuncionário;
DISTINCT Omite registros que contêm dados duplicados nos campos selecionados. Para serem incluídos nos resultados da consulta, os valores de cada campo listado na
instrução SELECT devem ser exclusivos. Por exemplo, vários funcionários listados em uma tabela Funcionários podem ter o mesmo sobrenome.
Se dois registros contiverem Smith no campo Sobrenome, a instrução SQL a seguir retornará somente um deles:
SELECT DISTINCT Sobrenome
FROM Funcionários;
Se você omitir DISTINCT, esta consulta retornará os dois registros Smith. Se a cláusula SELECT contiver mais de um campo, a combinação de valores de todos os
campos deverão ser exclusivos para que um dado registro seja incluído nos resultados.
SAIBA MAIS
Você também pode utilizar a palavra reservada PERCENT para retornar certa porcentagem de
registros que se situem no topo ou na base de um intervalo especificado pela cláusula ORDER BY.
WHERE AnoDeGraduação = 1994 Uma instrução SELECT contendo uma cláusula FROM possui as
partes a seguir:
ORDER BY MédiaDeNotas ASC;
FROM Funcionários;
PARTE DESCRIÇÃO
A instrução GROUP BY é opcional.
listadecampos O nome do campo ou dos campos a serem recuperados
com qualquer alias de nome de campo, funções agregadas
SQL, atributos de seleção (ALL, DISTINCT, DISTINCTROW ou
TOP) ou outras opções da instrução SELECT.
tabela O nome da tabela a partir da qual os registros são Os valores de resumo são omitidos se não houver uma função
recuperados. Para obter maiores informações, consulte a agregada SQL na instrução SELECT.
cláusula FROM.
critérios Critérios de seleção. Se a instrução incluir uma cláusula Valores Null nos campos GROUP BY são agrupados e não são
WHERE, o mecanismo de banco de dados Microsoft Jet omitidos. Contudo, valores Null não são avaliados em nenhuma função
agrupará valores depois de aplicar as condições WHERE aos
registros. SQL agregada.
listadecamposdegrupo Os nomes de até 10 campos utilizados para agrupar Utilize a cláusula WHERE para excluir linhas que você não deseja
os registros. A ordem dos nomes de campo em
listadecamposdegrupo determina os níveis de que permaneçam agrupadas e utilize a cláusula HAVING para filtrar os
agrupamento do nível mais alto ao mais baixo do registros depois de eles terem sido agrupados.–
agrupamento.
Todos os campos na lista de campos SELECT devem estar incluídos
na cláusula GROUP BY ou serem incluídos como argumentos em uma
função SQL agregada.
SELECT listadecampos
Esta instrução especifica quais registros agrupados são exibidos
na instrução SELECT com uma cláusula GROUP BY. Depois de GROUP FROM tabela
BY combinar os registros, HAVING exibirá qualquer registro agrupado WHERE critériosdeseleção
pela cláusula GROUP BY que satisfaça às condições da cláusula HAVING.
GROUP BY listadecamposdegrupo
Confira!
[HAVING critériosdegrupo]
Uma instrução SELECT contendo uma cláusula GROUP BY possui as partes a seguir:
PARTE DESCRIÇÃO
listadecampos O nome do campo ou dos campos a serem recuperados com qualquer alias de nome de campo, funções agregadas
SQL, atributos de seleção (ALL, DISTINCT, DISTINCTROW ou TOP) ou outras opções da instrução SELECT.
tabela O nome da tabela a partir da qual os registros são recuperados. Para obter maiores informações, consulte a cláusula
FROM.
critériosdeseleção Critérios de seleção. Se a instrução incluir uma cláusula WHERE, o mecanismo de banco de dados Microsoft Jet agrupará
valores depois de aplicar as condições WHERE aos registros.
listadecamposdegrupo Os nomes de até 10 campos utilizados para agrupar registros. A ordem dos nomes de campo em
listadecamposdegrupo determina os níveis de agrupamento do nível mais alto ao mais baixo de agrupamento.
critériosdegrupo Uma expressão que determina quais registros agrupados exibir.
PARTE DESCRIÇÃO Para especificar um banco de dados não Microsoft Jet, anexe
destino O nome da tabela externa à qual os dados são um ponto e vírgula (;) ao nome e coloque-o entre aspas simples (‘ ‘) ou
inseridos.
duplas (“ “). Por exemplo, tanto ‘dBASE IV;’ quanto “dBASE IV;” são aceitos.
expressãodetabela O nome da tabela ou tabelas a partir das quais os
dados são recuperados. Este argumento pode ser um Além disso, você também pode utilizar a palavra reservada
único nome de tabela, uma consulta salva ou uma
DATABASE para especificar o banco de dados externo. Por exemplo, as
composição resultante de um INNER JOIN, LEFT JOIN
ou RIGHT JOIN. linhas a seguir especificam a mesma tabela.
caminho O caminho completo para o diretório ou arquivo
contendo tabela.
tipo O nome do tipo de banco de dados utilizado para ... FROM Table IN “” [dBASE IV; DATABASE=C:\DBASE\DATA\SALES;];
criar tabela se um banco de dados não for o Microsoft
Jet (por exemplo, dBASE III, dBASE IV, Paradox 3.x ou ... FROM Table IN “C:\DBASE\DATA\SALES”“dBASE IV;”
Paradox 4.x).
Você pode utilizar IN para se conectar a um único banco de dados Para um melhor desempenho e facilidade de uso, utilize uma
externo de cada vez. tabela vinculada em lugar de IN.
Em alguns casos, o argumento caminho refere-se ao diretório que
contém os arquivos do banco de dados. Por exemplo, ao trabalhar com
tabelas de banco de dados dBASE, FoxPro ou Paradox, o argumento
[ORDER BY campo1 [ASC | DESC ][, campo2 [ASC | DESC ]][, ...]]]
FROM Funcionários
SELECT listadecampos Assim como as outras instruções, WHERE é opcional, mas quando
incluída se segue ao FROM. Por exemplo, você pode selecionar todos os
FROM expressãodetabela
funcionários no departamento de vendas (WHERE Depto =‘Vendas’) ou todos
WHERE critérios os clientes com idades entre 18 e 30 anos (WHERE Idade Between 18 And 30).
Uma cláusula WHERE pode conter até 40 expressões vinculadas FROM Pedidos
por operadores lógicos, como And e Or. WHERE DataDeEnvio = #5/10/96#;
Por isso, ao digitar um nome de campo que contém um espaço ou
uma pontuação, coloque o nome entre colchetes ([ ]). Por exemplo, uma
tabela de informações sobre o cliente poderia incluir informações sobre
clientes específicos:
Sintaxe
SAIBA MAIS
A Linguagem SQL permite que você realize alguns cálculos 12.1 OBJETIVO
simples dentro das declarações SELECT. Neste material, você aprenderá
os comandos conhecidos como funções agregadas SQL, que são: Avg, Na sequência, você vai aprender e implementar os seguintes
Count e Sum. comandos em linguagem SQL:
Além disso, você estudará as operações INNER JOIN, LEFT JOIN e • funções agregadas SQL: Avg, Count e Sum;
RIGHT JOIN e UNION, que permitem realizar a união dos valores de duas • operação INNER JOIN;
tabelas em um único resultado. Vamos lá?
• operações LEFT JOIN e RIGHT JOIN;
Bom estudo! • operação UNION.
• Premissa: banco de dados criado no exercício do capitulo 9.
As funções agregadas são divididas em: Avg, Count e Sum. A seguir, SAIBA MAIS
iremos estudá-las com maior aprofundamento. Confira!
Você pode utilizar Avg em uma expressão de consulta e na propriedade
SQL de um objeto QueryDef ou ao criar um objeto Recordset baseado
em uma consulta SQL.
12.2.1 Função Avg
Essa função calcula a média aritmética de um conjunto de valores
A seguir, conheceremos a função Count. Acompanhe!
contido em um campo especificado em uma consulta, conforme a
sintaxe a seguir:
Avg(expr)
Essa função pode ser utilizada para contar o número de registros FROM Pedidos;
em uma consulta base. Por exemplo, para contar o número de pedidos Por outro lado, se expr identificar vários campos, a função Count
enviados a determinado país. Contudo, embora expr possa realizar um contará um registro somente se um dos campos não for Null. Se todos os
cálculo em um campo, Count simplesmente computa o número de campos especificados forem Null, o registro não será contado.
registros, independentemente dos valores armazenados nos registros.
IMPORTANTE
ON Categorias.CódigoDaCategoria = Produtos.
CódigoDaCategoria; Você pode também aninhar instruções JOIN usando a seguinte
sintaxe:
SELECT campos
No exemplo anterior, CódigoDaCategoria é o campo associado, mas
não é incluído na saída da consulta, pois não está incluído na instrução FROM tabela
SELECT. Para incluir o campo associado, adicione o nome do campo na
INNER JOIN (tabela2 INNER JOIN [( ]tabela3
instrução SELECT ¾, neste caso, Categorias. CódigoDaCategoria.
[INNER JOIN [( ]tabelax [INNER JOIN ...)]
Além disso, você pode também vincular várias cláusulas ON em
uma instrução JOIN, usando a sintaxe a seguir. ON tabela3.campo3 opercomp tabelax.campox)]
PARTE DESCRIÇÃO
Uma instrução LEFT JOIN ou RIGHT JOIN pode ser aninhada dentro de
tabela1, tabela2 Os nomes das tabelas das quais os registros
uma INNER JOIN, mas uma INNER JOIN não pode ser aninhada dentro de
uma LEFT JOIN ou de uma RIGHT JOIN.
são combinados.
campo1, campo2 Os nomes dos campos que são associados. Os
campos devem ser do mesmo tipo e conter o
No item a seguir abordaremos as operações LEFT e RIGHT JOIN. Confira! mesmo tipo de dados, mas não precisam ter o
mesmo nome.
opercomp Qualquer operador de comparação relacional:
12.4 OPERAÇÕES LEFT E RIGHT JOIN “=,”“<,”“>,”“<=,” “>=,” ou “<>.”
Utilize uma operação LEFT JOIN para criar uma associação externa
Esta operação combina registros da tabela de origem quando esquerda, que inclui todos os registros da primeira (esquerda) de duas
usados em qualquer cláusula FROM. Observe! tabelas, mesmo que não haja valores correspondentes para os registros
na segunda tabela (direita).
Sintaxe
Utilize uma operação RIGHT JOIN, por sua vez, para criar uma
FROM tabela1 [ LEFT | RIGHT ] JOIN tabela2
associação externa direita, que inclui todos os registros da segunda
ON tabela1.campo1 opercomp tabela2.campo2 (direita) de duas tabelas, mesmo que não haja valores correspondentes
para registros na primeira (esquerda) tabela.
SELECT *
Esta operação cria uma consulta união, que combina os resultados
de duas ou mais consultas ou tabelas independentes, conforme a seguir. FROM Clientes
Sintaxe
[TABLE] consulta1 UNION [ALL] [TABLE] consulta2 [UNION [ALL] [TABLE] Como padrão, nenhum registro duplicado é retornado quando
consultan [ ... ]] você usa uma operação UNION. Entretanto, você pode incluir o atributo
ALL para assegurar que todos os registros sejam retornados. Isso faz
A operação UNION possui as partes a seguir:
com que a execução da consulta seja mais rápida.
PARTE DESCRIÇÃO Além disso, todas as consultas em uma operação UNION devem
consulta1-n Uma instrução SELECT, o nome de uma consulta solicitar o mesmo número de campos. Mas é importante destacar que os
armazenada ou o nome de uma tabela armazenada campos não deverão ter o mesmo tamanho ou tipo de dados.
precedida da palavra- chave TABLE.
Use aliases somente na primeira instrução SELECT, pois eles são
ignorados em qualquer outra. Na cláusula ORDER BY, refira-se aos
Você pode mesclar os resultados de duas ou mais consultas,
campos pelo que são chamados na primeira instrução SELECT.
tabelas e instruções SELECT, em qualquer combinação, em uma única
operação UNION. O exemplo a seguir mescla uma tabela denominada Você pode usar uma cláusula GROUP BY ou HAVING em cada
Novas Contas com uma instrução SELECT. argumento consulta para agrupar os dados retornados.
12.6 RECAPITULANDO
Neste tema, você aprendeu a sintaxe dos comandos da Linguagem
SQL, conhecidas como funções agregadas SQL, como: Avg, Count e
Sum. Além disso, estudou também as operações INNER JOIN, LEFT JOIN
e RIGHT JOIN e UNION.
Você pode usar nome, mas não tipodedados, em uma cláusula WHERE
ou HAVING.
13.5.1 Operador Between...And
O exemplo a seguir espera que dois parâmetros sejam fornecidos
Este operador determina se o valor de uma expressão se situa
e, então, aplica os critérios aos registros na tabela Pedidos:
dentro de um intervalo especificado de valores. Você pode utilizar este
PARAMETERS [Preço baixo] Currency, [Data inicial] DateTime; operador em instruções SQL.
SELECT NúmeroDoPedido, QuantiaDoPedido Sintaxe
FROM Pedidos expr [Not] Between valor1 And valor2
WHERE QuantiaDoPedido > [Preço baixo] AND DataDoPedido
>= [Data inicial];
SELECT *
Este operador determina se o valor de uma expressão é igual a
algum dos vários valores em uma lista especificada. FROM Pedidos
PARTE DESCRIÇÃO A tabela a seguir mostra como você pode utilizar Like para testar
expressão Expressão SQL utilizada em uma cláusula WHERE. expressões para diferentes padrões.
padrão Sequência ou literal de sequência de caracteres em TIPO DE CORRESPONDÊNCIA
relação à qual expressão é comparada. Coincidente Não coincidente (retorna
Padrão
(retorna True) False)
Você pode utilizar o operador Like para localizar valores em um
aa, aBa, aBBBa aBC *ab* abc,
campo que correspondam ao padrão especificado. Para padrão, você Vários caracteres a*a
AABB, Xab aZb, bac
pode especificar o valor completo (por exemplo, Like “Smith”) ou pode
Caractere especial a[*]a a*a aaa
utilizar caracteres curinga para encontrar um intervalo de valores (por
Vários caracteres ab* abcdefg, abc cab, aab
exemplo, Like “Sm*”).
Um único caractere a?a aaa, a3a, aBa aBBBa
Em uma expressão, você pode utilizar o operador Like para Um único dígito a#a a0a, a1a, a2a aaa, a10a
comparar um valor de campo a uma expressão de sequência. Por Intervalo de
[a-z] f, p, j 2, &
exemplo, se você digitar Like “C*” em uma consulta SQL, a consulta caracteres
retornará todos os valores de campo que começam com a letra C. Em Fora de um intervalo [!a-z] 9, &, % b, a
uma consulta parâmetro, você pode solicitar ao usuário que forneça um Nenhum dígito [!0-9] A, a, &, ~ 0, 1, 9
padrão pelo qual procurar. Combinado a[!b-m]# An9, az0, a99 abc, aj0
O exemplo a seguir retorna dados que começam com a letra P, Agora que você já conhece os operadores, estudaremos os
seguida por qualquer letra entre A e F e três dígitos, confira: Caracteres Curinga. Vamos lá?
* Zero ou mais caracteres Além de uma simples lista de caracteres entre colchetes,
listadecaract pode especificar um intervalo de caracteres através da
# Qualquer dígito isolado (0 — 9)
utilização de um hífen (-) para separar os limites superior e inferior do
[listadecaract] Qualquer caractere isolado em listadecaract intervalo. Por exemplo, a utilização de [A-Z] em padrão resultará em
[!listadecaract] Qualquer caractere isolado não presente em listadecaract uma correspondência se a posição do caractere correspondente em
Você pode utilizar um grupo de um ou mais caracteres expressão contiver qualquer uma das letras maiúsculas no intervalo de
(listadecaract) entre colchetes ([ ]) para coincidir com qualquer caractere A a Z. Assim, você pode incluir vários intervalos entre os colchetes sem
isolado em expressão, podendo incluir praticamente qualquer caractere delimitar os intervalos. Por exemplo, [a-zA-Z0-9] corresponde a qualquer
do conjunto de caracteres ANSI, inclusive dígitos. caractere alfanumérico.
IMPORTANTE
Em Grupo de Desenvolvimento Global do PostgreSQL (PostgreSQL CREATE USER nome_do_usuário PASSWORD ‘senha’;
2007, p. 306 e 307) são definidos alguns atributos importantes para
criação de usuários.
Uma vez criados os usuários, o próximo passo é a definição
a. Superusuário: não está sujeito a autorizações ou verificações dos níveis de permissão de acesso aos objetos de banco de dados.
de permissão. Somente ele pode criar novos usuários. A sintaxe
Basicamente, os seguintes privilégios podem ser concedidos: SELECT
para criação de um superusuário é:
(seleção), INSERT (inserção), UPDATE (atualização) e DELETE (exclusão).
CREATE USER nome_do_usuário CREATEUSER.
A sintaxe básica para o comando de permissão de acesso é a
seguinte:
b. Criação de banco de dados: deve ser dada uma permissão
GRANT privilegio ON objeto TO usuário;
explícita para que um usuário possa criar bancos de dados
(exceto para os superusuários que já possuem esta autorização). O “privilegio” é o parâmetro que indica o nível de acesso que o
Por fim, você aprendeu a criar uma Visão na prática e como isso pode
ser útil para seus usuários, para tratar os resultados de uma consulta e
Veja que a partir de agora você dará acesso à Visão para seus
também para transformar as consultas complexas em consultas simples.
usuários, tornando seu trabalho mais simples, uma vez que eles não
precisam gerar um comando complexo, evitando que tenham acesso
direto às tabelas físicas.
definição do programa, já que podemos tratar partes do problema de Pode-se destacar que o PostgreSQL (POSTGRESQL, 2014), por exemplo,
permite que os procedimentos e as funções, definidos pelos usuários,
forma isolada.
sejam escritos em diferentes linguagens de programação. E essas
linguagens são chamadas genericamente de linguagens procedurais
IMPORTANTE
(PLs, do inglês Procedural Language).
SAIBA MAIS
Agora sabemos como definir os blocos de execução. Entretanto, Aprenda mais sobre funções e procedimentos na documentação do
qual a diferença entre procedimentos e funções? Podemos dizer que um PostgreSQL (POSTGRESQL, 2014), que é um dos SBGDs mais utilizados
procedimento não retorna valor nenhum, diferentemente da função, na atualidade.
que obrigatoriamente retorna um valor a determinada variável.
GLOSSÁRIO
15.3 RECAPITULANDO
Gatilho, do inglês trigger, conforme o Manual PostgreSQL (2014), é um
Neste tema, você estudou os conceitos de procedimento (procedure)
recurso de programação executado sempre que o evento associado
ocorrer. É um tipo especial de procedimento armazenado, que é executado
e função (Function), aprendendo que ambos são instruções que executam
sempre que há uma tentativa de modificar os dados de uma tabela que é uma tarefa determinada, sendo de suma importância para o SBGDs.
protegida por ele. É muito utilizada para ajudar a manter a consistência dos Assim, a partir de agora você será capaz de aplicar o seu conhecimento
dados ou para propagar alterações em determinado dado de uma tabela sobre essas estruturas, uma vez que você já conhece os conceitos. Para
para outras. Um bom exemplo é um gatilho criado para controle de quem praticar, utilize o Manual do PostgreSQL (POSTGRESSQL, 2007, p. 571), que
alterou a tabela. Nesse caso, quando a alteração for efetuada, o gatilho é
disponibiliza exemplos de criação de procedimentos.
“disparado” e grava em uma tabela de histórico de alteração, o usuário e a
data/hora da alteração, por exemplo.
Ao concluir esta disciplina, esperamos que você tenha formas normais, além de transformar este DER em Modelo Relacional (MR)
compreendido que Banco de Dados é um dos assuntos mais e implementar este MR em Modelo Físico, utilizando linguagem SQL.
importantes da área de Tecnologia da Informação (TI), uma vez que
Em relação à linguagem SQL, estudamos dois tipos: Linguagem de
esses bancos estão presentes em praticamente todos os softwares,
Definição de Dados (DDL) e Linguagem de Manipulação de Dados (DML).
sendo responsável pelo armazenamento dos dados processados.
Assim, com a linguagem SQL-DDL, você é capaz criar a estrutura de um
Além do conceito de Banco de Dados, durante seus estudos Banco de Dados. E, com a linguagem SQL-DML, você pode manipular
você também aprendeu a diferença entre dados e informações, como as bases de dados criadas, especialmente através do comando SELECT.
os dados são transformados em informações através dos softwares e
Agora que você já conhece as principais questões desta disciplina, você
como os Bancos de Dados são importantes neste contexto.
se tornou apto a administrar algumas partes de um Banco de Dados, mais
Após estudar os principais pontos desta disciplina, você se tornou especificamente na parte de segurança, visão, procedimentos e funções.
capaz de projetar um Banco de Dados Relacional, criando o Diagrama
Entidade Relacionamento (DER), na primeira, segunda, terceira e quarta
DATE, C. J. Introdução a sistemas de bancos de dados. Rio de Janeiro: LAUREANO, M. Estrutura de dados com algoritmos e C. Rio de Janeiro:
Campus, 2003. Brasport, 2008.
DOTTI, F. L. Linguagem Pascal: funções e procedimentos. Disponível MICROSOFT. Crate trigger (Transact-SQL). Disponível em: <http://msdn.
em: <http://www.inf.pucrs.br/~fldotti/lapro1/prfun.htm>. Acesso em: microsoft.com/pt-br/library/ms189799.aspx>. Acesso em: 23 out. 2014.
23 out. 2014.
MICROSOFT. Create view. Disponível em: <http://msdn.microsoft.com/
ELMASRI, R., & NAVATE, S. Sistemas de banco de dados: fundamentos e pt-br/library/>. Acesso em: 23 out. 2014.
aplicações. 6. ed. Rio de Janeiro: Pearson, 2011.
MORAIS, E. Banco de Dados 1. Disponível em: <http://www.edison.eti.
HEUSER, C. A. Projeto de banco de dados. Porto Alegre: Bookman, 2009. br/bd1_ufg> Acesso em: 16 abr. 2015.
JAMSA, K., & KANDLER, L. Programando em C/C++ o melhor guia para POSTGRESQL GLOBAL DEVELOPMENT GROUP. Documentação do
programação em C/C++. São Paulo: Makron Books, 1999. PostgreSQL 8.0.0. Disponível em: <http://ftp.unicamp.br/pub/apoio/
postgresql/pgdocptbr800->. Acesso em: 23 out. 2014.
KORTH, H. F. Sistema de banco de dados. 6. ed. Rio de Janeiro:
Elisevier, 2012.
José Antônio Fares Erica Luz de Souza Ricardo Luiz Freire de Menezes Junior
Diretor Regional Orientação Pedagógica Projeto Gráfico
Giovana Chimentao Punhagui Karem Morigi Ricardo Luiz Freire de Menezes Junior
Gerente Executiva de Educação Revisão Ortográfica e Gramatical Ana Célia Souza França
Diagramação, Revisão de Arte e Fechamento de Arquivo
Vanessa Sorda Frason Daniel Gustavo Hella
Gerente de Educação Profissional Estela Pereira
Raphael Hardy Fioravanti
Jacielle Feltrin Vila Verde Ribeiro Coordenação de Projeto
Sandra Cristina Brasil Toloto
Coordenação Pedagógica Ricardo Luiz Freire de Menezes Junior
Projeto Gráfico
Alexandre Luis Kloch
Iris Jerusa D Amico Burger André Dias
Coordenação Técnica , Organização e revisão técnica Aline Sentone
Ilustrações e Tratamento de Imagens