Buscar

Resumo Banco de dados

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

B A N CO D E D A D O S ( CCT 0 1 6 9 / 2 0 3 8 4 3 1 ) 9 0 0 1 
 
A u l a 1 : I n t r o d u ç ã o a o s S i s t e m a s d e B a n c o d e D a d o s
B A N CO D E D A D O S ( CCT 0 1 6 9 / 2 0 3 8 4 3 1 ) 9 0 0 1
Aula 1: Introdução a Banco de dados 
Dados X Informação: Dados representam fatos em sua forma primária. Por exemplo, o nome de um empregado, a quantidade de horas trabalhadas, por cada empregado, etc. Quando este s fatos são organizados ou arranjados de modo significativo, eles se tornam uma informação. Informação, portanto, é um conjunto de fatos organizados de tal forma que adquirem um valor adicional, além do valor do fato em si. Por exemplo, o total de vendas mensais pode ser mais adequado ao seu propósito, ou seja, pode conter mais valor, do que as vendas de cada vendedor individualmente.
- Dado: Dados são fatos brutos, ou seja, que não foram submetidos a nenhum processamento de modo a mostrar seu real significado. Algo que possa ser representado por um valor.
- Informação: é todo o conjunto de dados devidamente ordenados e organizados de forma a terem significado. Informação = (dado + significado).
A transformação de dados em informação é um processo. De forma simples, podemos entender um sistema de informação como um conjunto de processos que transforma dados em informação. Podemos afirmar que dados são mais estáveis do que processos e, portanto, representam a uma das partes mais valiosas e importantes de um sistema de informação.
Banco de Dados: De acordo com (Navathe, 2005), podemos definir um banco de dados como um conjunto de dados que se relacionam. Um banco de dados nada mais é que uma coleção de dados persistentes. Um banco de dados é criado e mantido por um conjunto de aplicações desenvolvidas especialmente para esta tarefa denominado “Sistema Gerenciador de Banco de Dados” (SGBD). Um SGBD é uma coleção de programas que permite aos seus usuários criarem e manipularem bancos de dados. O conjunto formado por um banco de dados e estes programas que o manipulam é chamado de Sistema de Banco de Dados.
Uma característica importante da abordagem de Banco de Dados é que o SGBD não mantém somente os dados, mas, também, a forma como os mesmos são armazenados, através de uma descrição completa dos dados armazenados. Estas informações são armazenadas no catálogo ou dicionário de dados do SGBD, que contém informações como a estrutura de cada arquivo, o tipo e o formato de armazenamento de cada tipo de dado, restrições, etc. As informações armazenadas neste catálogo são chamadas meta-dados.
Benefícios do Uso de SGBDs: Potencial para o estabelecimento e o comprimento de padrões; Flexibilidade de mudanças; Redução no tempo de desenvolvimento de novas aplicações; Disponibilidade de informação atualizada; Economia de escala. 
Apesar das vantagens de utilização, a escolha por um ambiente de banco de dados tem um alto custo atrelado. A sua adoção deve, então, compensar ou ser compatível com este custo. Quando NÃO usar bancos de dados: Volume de dados pequeno, aplicações simples, bem definidas; Mudanças não são esperadas; Ambientes de sistemas que exijam resposta em tempo real; Acessos múltiplos e concorrentes não são necessários. 
 
OBS: Qual das atribuições a seguir NÃO é de um Administrador de Banco de Dados? Programar tudo para quem for acessar o banco, em termos de linguagem. 
- Não é função de um Administrador de Banco de Dados? Criação e manutenção de um modelo de dados corporativo. 
Aula 2: Projeto de Banco de Dados 
O projeto de um banco de dados envolve a produção de 3 modelos que definem uma arquitetura de 3 esquemas (conceitual, lógico e físico). Na fase inicial do processo, o mundo real ou minimundo deve ser entendido e seus objetos conceituais identificados. A este entendimento e identificação chamamos abstração de dados e o modelo produzido após esta fase chamamos modelo conceitual. Após a sua confecção e pela a aplicação de regras específicas, um modelo lógico é produzido. Este modelo está vinculado ao modelo de dados adotado pelo SGBD. Na etapa final, o modelo lógico dá origem ao modelo físico, efetivamente armazenado no banco de dados. O que se quer criar é uma ABSTRAÇÃO (Não tem muito detalhes) da realidade, que seja capaz de registrar os acontecimentos da mesma, de modo que se possa implementar um sistema automatizado que atenda às reais necessidades de informação. 
 
 - Modelos de Dados: - Modelos de representativos ou de implementação: 
Legados: hierárquico e de rede
Atual: modelo relacional. Nova geração: modelos de dados de objetos.
 - Modelos conceituais: Entidades: objetos ou conceitos do mundo real. Atributos: características ou propriedades de uma entidade.
 
Relacionamentos: interações entre entidades. 
Elementos de Abstração 
- Minimundo: Porção especifica da realidade, captada pelo analista, objeto de observação detalhada. Caso a análise do minimundo torne-se muito complexa, o analista pode subdividi-lo em pontos menores chamados de “visões”.
 
- Banco de Dados: Coleção de fatos registrados que refletem certos aspectos de interesse do mundo real. Cada mudança, em algum item do banco de dados, reflete uma mudança ocorrida na realidade. 
- Modelo Conceitual: Representa e/ou descreve a realidade do ambiente, constituindo uma visão global dos principais dados e relacionamentos (estrutura de informação), independente das restrições de implementação.
 
- Modelo Lógico: Descreve as estruturas que estarão contidas no banco de dados, sem considerar nenhuma característica especifica de um Sistema Gerenciador de Banco de Dados (SGBD), resultando em um esquema lógico de dados. Tem seu início a partir do Modelo Conceitual. 
- Modelo Físico: Descreve as estruturas físicas de armazenamento de dados, tais como: tamanho dos campos, índices, tipo de preenchimento destes campos, etc. Tem origem no Modelo Lógico e detalha o estudo dos métodos de acesso ao SGBD. 
 
- Modelagem Conceitual: A modelagem de um sistema, através da abordagem Entidades-Relacionamentos (ER), representa o ponto central no projeto conceitual de um sistema. O objetivo é transmitir e apresentar uma representação única, não redundante e resumida, dos dados de uma aplicação. Em projetos conceituais de aplicação em banco de dados, o Modelo Entidades-Relacionamentos (MER) é o mais largamente utilizado para representação e entendimento dos dados que compõe um sistema. O MER é o sinônimo da técnica de Modelagem de Dados. 
- Entidades: (Retângulos) Define-se Entidade como aquele objeto que existe no mundo real, com identificação distinta e com um significado próprio. São as “coisas” que existem no negócio, ou ainda, descrevem o negócio em si. A representação de uma entidade no MER é feita através de um retângulo, com o nome da entidade em seu interior. Pode ser tangível: Pessoas, Edifícios – Intangíveis: Setor, Reserva de Voo – Fraca. 
- Atributos: (Elipses). Todo objeto para ser uma entidade possui propriedades que são descritas por atributos e valores. Estes atributos e valores, juntos, descrevem as instâncias de uma entidade. O que descreve CLIENTE? Cliente é descrito por um código de identificação, nome, endereço, telefone de contato, CGC ou CPF etc. A representação de uma entidade no MER é feita através de um losango com o nome do atributo em seu interior. 
- Relacionamentos: (Losangos). É uma associação entre duas entidades cujo significado seja de interesse para a realidade analisada. Os relacionamentos estão intimamente ligados às ações realizadas pelos processos sobre os dados e representam os caminhos de navegação ou rotas de acesso do Modelo de Dados. Existem várias formas de se representar graficamente um relacionamento, por exemplo, Peter Chen utiliza um retângulo para desenhar uma associação entre entidades, outros autores a representam através de um traço unindo as entidades. 
 
Saiba mais 
Conheça um pouco mais sobre o Dr. Peter Chen em 
https://pt.wikipedia.org/wiki/Peter_ChenOBS: Em um Modelo de Entidade e Relacionamento, o ATRIBUTO tem a seguinte função? R: É um a propriedade que descreve uma entidade ou um relacionamento. 
- Em um Modelo de Entidade e Relacionamento, podemos afirmar que? R: O modelo ER possui uma notação gráfica muito simples e poderosa e que, por isso mesmo, tem sido largamente utilizada.
Aula 3: Modelagem Conceitual – mais sobre Relacionamentos
A u l a 3 : M o d e l a g e m Co n c e i t u a l - M a i s S o b r e R e l a c i o n a m e n t o s 
 
Modelo Entidade Relacionamento (MER): representar de forma conceitual o banco de dados; auxiliar na especificação geral do banco de dados. O Diagrama Entidade Relacionamento (DER) é utilizado para representar graficamente o modelo de dados. 
- Entidade: Segundo Heuser (1998, p.23), uma entidade é “um conjunto de objetos da realidade modelada sobre os quais deseja-se manter informações no banco de dados”. Retângulo. 
- Relacionamento: Relacionamento é uma associação entre entidades. As entidades que participam de um relacionamento são também conhecidas como participantes. Triângulo Invertido ou Losango. 
Uma relação entre duas entidades pode ser descrita em termos da sua cardinalidade.
Um para Um 1:1: Um empregado pode ser atribuído a um carro. Um carro pertence a um empregado. 
Um para Muitos 1:N: Um cliente pode tomar emprestado vários DVDs de vídeo. Cada DVD só pode ser emprestado a um cliente (por vez). 
Muitos para Muitos M:N ou N:N: Um estudante pode fazer várias disciplinas. Uma disciplina pode ser cursada por vários estudantes. 
A cardinalidade é determinada pelas “regras de negócio” criadas pela organização. São os usuários e a documentação da organização que determinam a cardinalidade existente entre entidades e seus atributos. 
- Cardinalidade 1:1: Cada instância de uma das entidades se relaciona com uma única instância da outra entidade do relacionamento. 
- Cardinalidade 1:N: Cada instância da entidade que representa o lado 1 do relacionamento pode se relacionar com N instâncias da entidade que representa o lado N. Por outro lado, cada instância da entidade representante do lado N, relaciona com apenas 1 instância da entidade representante do lado 1. 
- Cardinalidade M:N ou N:N: Cada instância da entidade que representa o lado N do relacionamento pode se relacionar com M instâncias da entidade que representa o lado M. O mesmo acontece quando o relacionamento é analisado no sentido oposto. 
 
As relações podem ter limites mínimos e máximos: Além do grau de cardinalidade máxima, já mencionado anteriormente, podemos identificar limites mínimos para as cardinalidades. Por exemplo: Um professor pode ensinar de 0 a 4 disciplinas (limite inferior é 0 e limite superior é 4); e um uma disciplina pode ser ministrada por 0 a 1 professor (limite inferior é 0 e o limite superior é 1) 1. Quando o limite inferior da cardinalidade for 0, o relacionamento é definido como “opcional” Entidade Fraca. 2. Quando o limite inferior da cardinalidade for 1, o relacionamento é definido como “obrigatório” Entidade Forte. 
 
Relações podem ser Recursivas: Ocorre quando uma entidade possui um relacionamento com ela mesma. Os relacionamentos recursivos podem também ter limites inferiores e superiores. Exemplo: Uma organização possui uma entidade "Empregado" e que guardar a informação sobre quais empregados são casados entre si. Esse é um relacionamento recursivo 1:1 onde a entidade "Empregado" se relaciona consigo mesmo. Relacionamentos Recursivos 1:1: Pode ser visto como uma entidade que se relaciona com ela mesmo. Atributos em Relacionamentos: Os atributos de relacionamento são possíveis quando o grau do relacionamento for N:M (muitos para muitos). PROFESSOR: Matrícula, Nome - DISCIPLINA: Código, Nome - MINISTRA: Data de Início. 
 
Identificador de entidade: Nome_tablea (Atributo_chave1, Atributo_1, Atributo_n...) ou Aluno (Código Aluno, Nome, Data de Nascimento, CIC, RG)
A l u n o , Nome, Data de nascimento, CIC, RG)
A l u n o , Nome, Data de nascimento, CIC, RG) 
Modelagem Conceitual - MER Estendido: Os conceitos básicos do Modelo Entidade Relacionamento são suficientes para modelar grande parte dos bancos de dados. Entretanto, algumas extensões, introduzidas posteriormente ao seu surgimento, permitiram refinamentos bastante significativos. 
- Estrutura de Generalização-Especialização “ É-um”: Entidades podem ter subtipos ou subclasses e supertipos ou superclasses. Uma entidade supertipo é uma generalização de uma entidade subtipo especializada". Cada entidade subtipo herda os atributos de sua entidade supertipo. Cada entidade supertipo tem seus próprios atributos únicos. A relação entre um subtipo de entidades e seu par é referenciada por uma relação “É-um” Num diagrama ER um relacionamento “É-um” conecta uma entidade mais especializada a uma entidade generalizada [sem sentido] pode ser escrita como um triângulo invertido ou um losango o com o label “É-um”. 
- Estrutura de Agregação (Associativa) “Faz_parte_de”: O Modelo Entidade Relacionamento não é capaz de representar relacionamentos entre relacionamentos. Uma agregação é uma abstração da qual os relacionamentos são tratados como entidades 
de mais alto nível. 
- Especialização: é um processo de definir um conjunto de subclasses de um determinado tipo de entidade, isto é, superclasse da especialização. (Superclasse (Supertipo); Subclasse (Subtipo))
 - Especialização Total: Quando cada entidade do conjunto de entidades genérico tiver obrigatoriamente que aparecer como uma entidade em um dos conjuntos de entidades especializados.
 - Especialização Parcial: Quando uma entidade do conjunto de entidades genérico não tiver a obrigatoriedade de aparecer como uma entidade de um dos conjuntos de entidades especializados.
 - Especialização Exclusiva: Quando cada entidade do conjunto de entidades genérico tiver obrigatoriamente que aparecer no máximo em uma entidade em um dos conjuntos de entidades especializados.
 - Especialização Compartilhada: Quando uma entidade do conjunto de entidades genérico puder aparecer como uma entidade em mais de um dos conjuntos de entidades especializados.
 - Generalização: nada mais é que um processo reverso (de baixo para cima) da abstração em que eliminamos as diferenças existentes entre diversos tipos de entidade, ora identificando suas características comuns, e generalizando em uma única superclasse.
A u l a 4 : M o d e l a g e m L ó g i ca - O M o d e l o R e l a c i o n a l 
 
Aula 4 : Modelagem lógica – Modelo Relacional 
Modelo Lógico de Dados Lógico: descreve os componentes do Modelo Conceitual de Dados, aproximando-o do ambiente computacional, onde este será trabalhado. Existem vários modelos de dados: 
- Modelo de Rede: Os dados são representados por uma coleção de registros e os relacionamentos entre os dados são representados por meio de links. 
- Modelo Hierárquico: Apresenta a mesma estrutura do modelo de rede, diferindo apenas na organização dos registros. Tais registros são organizados com coleções de arvores em vez de grafos aleatórios. 
- Modelo Relacional: Os dados são representados através de tabelas. É o modelo mais usual. Desenvolvido por Edgard Frank CODD na década de 70. Fundamentado na teoria de conjuntos. 
- Modelo Orientado a Objetos: Surgiu em virtude da necessidade de se acompanhar o aumento na complexidade dos dados. Quando o modelo relacional foi sugerido, dados como imagens ou som não foram considerados na sua estrutura. Atualmente, dados deste tipo são bastante comuns, até mesmo nas aplicações mais simples e o modelo relacional não é suficiente para este tipo de modelagem. De modelo geral, no modelo orientado a objeto as entidades
do modelo conceitual são objetos que encapsulam tanto dados quanto o código associado a este objeto. 
- Modelo Relacional Objeto: Uma extensão do modelo relacional, que inclui orientação a objeto e permite o tratamentode dados complexos. 
No modelo Relacional tem os: 
- Relação: Tabela bidimensional, composta de linhas e colunas de dados; 
- Relação recursiva: Relaciona o objeto a si mesmo; - Atributo: Coluna;
 - Grau de uma relação: Número de atributos;
 - Tupla: Cada linha da relação; - Domínio de um atributo: Conjunto ao qual pertence os valores de um atributo;
Valor nulo de um atributo de uma tupla: Atributo inaplicável ou com valor desconhecido; 
- Esquema de Banco de Dados Relacional: Nomes das ralações seguidos pelos nomes dos atributos chaves sublinhados e com as chaves estrange iras identificadas. 
 
Modelagem Lógica - O Modelo Relacional: Uma chave pode ser utilizada como índice, mas um índice não é, necessariamente, uma chave. 
- Chave: Designa o conceito de item de busca, isto é, um atributo ou conjunto de atributos que será utilizado nas consultas à base de dados. É um conceito lógico da aplicação; 
- Índice: Apresenta a mesma estrutura do modelo de rede, diferindo apenas na organização dos registros. Tais registros são organizados com coleções de árvores em vez de grafos aleatórios; 
- Atributo Identificador: A atributo ou conjunto de atributos que será utilizado para identificar instâncias de uma entidade. Faz parte do modelo conceitual. 
 
Tipos de chaves: - Chave Candidata: Deve ser única, ou seja, nenhuma tupla de uma mesma relação, pode ter o mesmo valor para o atributo escolhido como chave candidata. Deve ser irredutível, nenhum subconjunto da chave candidata, pode ter sozinho a propriedade de ser único. 
Pode ser:
 - Simples: composta por apenas um atributo;
 - Composta: quando possui mais de um atributo para formar a chave. 
- Chave Estrangeira: É quando um atributo de uma relação é chave primaria em outra. Constitui um conceito de vital importância no modelo relacional, é o elo de ligação lógica entre as tabelas (relacionamentos). Através das operações com as chaves estrangeiras que se garante a integridade referencial do banco de dados.
 
- Chave Primária: É um caso especial da chave candidata. É a escolhida entre as candidatas para identificar única ente uma tupla. Identificar unívoca ente uma linha em uma tabela. 
 
Regras de Integridade: Em cada entidade onde o limite inferior para a cardinalidade é 0 e o limite superior é 1, temporariamente classifique o limite superior como N.
 - Para cardinalidade 1:1: Inclui todos os atributos numa tabela simples. O nome da tabela relacional pode ser o nome de uma das entidades que participam do relacionamento, um nome composto formado pela combinação dos nomes das duas entidades ou um novo nome que represente o significado dos dados na tabela. 
- Para cardinalidade 1:N: Incluir o “identificador” do lado “um” como um atributo no lado “muitos”. O identificador colocado do lado “muitos” é chamado de chave estrangeira.
 – Para cardinalidade N:M: Criar uma nova tabela e colocar as chaves primárias de cada uma das entidades como atributos na nova tabela. A nova tabela é chamada de tabela associativa. O identificador da tabela é uma chave composta formada pelas chaves primárias das duas tabelas participam. 
- Integridade da Chave Primária: A chave primária tem que ser única. Não nula. Não redundante. 
- Integridade da Entidade: O valor da chave não pode ser vazio. A chave primária serve como representante na base de dados de uma entidade, se a chave primária for vazia, a linha não pode corresponde a nenhuma entidade. 
- Integridade Referencial: As chaves estrangeiras têm que ser respeitadas, ou seja, se existe um determinado valor para o atributo na tabela onde ele é chave estrangeira, este valor deve existir na tabela onde ele é chave primária. 
- Restrições de Integridade Semânticas: Todas as demais regras devem ser obedecidas por todos os estados válidos da base de dados. 
OBS: Uma chave primária em um modelo relacional é quando? R: Um atributo ou combinação de atributos que possuem a propriedade de identificar de forma única uma linha da tabela. 
- Em uma tabela de um banco de dados relacional uma linha da tabela é denominada_____ e a coluna é denominada _____.
Aula 5: Normalização
O processo de normalização de dados representa uma série de passos que se seguem no projeto de um banco de dados, que permitem um armazenamento consistente e o eficiente acesso aos dados de um banco de dados relacional. Esses passos reduzem a redundância de dados e, consequentemente, as chances de ocorrerem inconsistências. 
- Vantagens da Normalização: Minimizar redundâncias e inconsistências. Facilidade de manipulações do 
Banco de Dados. Facilidade de manutenção do Sistema de Informações. 
- Dependência Funcional: É um relacionamento entre dois ou mais atributos de maneira que o valor de um determinado atributo identifique o valor para cada um dos demais atributos. Ex.: O atributo B é funciona independentemente do atributo A se c ada valor da coluna A determina um e som ente um valor da coluna B. 
- Dependência Funcional Parcial: É determinada quando os atributos não chave, por sua vez, não dependem funcionalmente de toda a chave primária, obviamente, quando essa for composta. 
- Dependência Funcional Transitiva: Acontece quando um campo não é dependente da chave primária ou de parte dela, mas sim, dependente de outro campo que não é, e nem faz parte da chave primária. 
 
Formas Normais: O Conceito de normalização foi introduzido por E. F. Codd em 1972. Inicialmente, Codd criou as três primeiras formas de normalização, chamando-as: primeira forma normal (1NF), segunda forma normal (2NF) e terceira forma normal (3NF). Uma definição mais forte da 3NF foi proposta depois por Boyve-Codd, e é conhecida como forma normal de Boyce-Codd (FNBC). 
Além destas temos a quarta forma normal (4NF) e quinta forma normal (5NF). Normalmente o processo de normalização se encerra na 3NF. As demais formas acabam lidando com exceções contidas nos dados. 
Através do processo de normalização, pode-se gradativamente, substituir um conjunto de entidades e relacionamentos por outro, o qual se apresenta “purificado” em relação às anomalias de atualização (Inclusão, alteração e exclusão), tais como: 
Grupos repetitivos (atributos multivalorados) de dados; Variação temporal de certos atributos, dependências funcionais totais ou parciais em relação a uma chave concatenada; Redundância de dados desnecessárias; Perdas acidentais de informação; Dificuldade na representação de fatos da realidade observada; Dependência transitivas entre atributos. 
Normalização de relações é uma técnica que permite depurar um projeto de banco de dados, através da identificação de inconsistências (informações em duplicidade, dependência funcionais mal resolvidas, etc.). O objetivo da normalização não é eliminar todos as inconsistências, e sim controla-las. 
1º - Uma relação está na primeira forma normal (1F N), se todos os seus atributos são monovalorados e atômicos, suas linhas são unívocas. Quando encontrarmos um atributo multivalorado, devemos criar um novo atributo que individualize a informação que esta multivalorada: HISTÓRICO = {matricula-aluno, código-disciplina, notas}
No caso acima, cada nota seria individualizada identificando a prova a qual aquela nota se refere: HISTÓRICO = {matricula-aluno, código-disciplina, número-prova, nota}Quando encontrarmos um atributo não atômico, devemos dividi-lo em outros atributos que sejam atômicos: PESSOA = {CPF, nome-completo} Vamos supor que, para a aplicação que utilizará esta relação, o atributo nome-completo não é atômico, a solução então se rá: PESSOA = {CPF, nome, sobrenome} 
2º - Uma relação está na segunda forma normal (2F N), quando duas condições são satisfeitas: a relação estiver na primeira forma normal; todos os atributos primos dependerem funcionalmente de toda a chave primária. HISTÓR ICO = {matrícula -aluno, código-matéria, número-prova, nota, data-da-prova, nome-aluno, endereço-aluno, nome-matéria} 
Fazendo a análise da dependência funcionalde cada atributo primo, chegamos às seguintes dependências funcionais: matrícula-aluno, código-matéria, número-prova -> nota, código-matéria, número-prova -> data-da-prova, matrícula-aluno -> nome-aluno, endereço-aluno, código-matéria -> nome-matéria. Concluímos, então, que apenas o atributo primo nota depende totalmente de toda chave primária. Para que toda a relação seja passada para a segunda forma normal, devem-se criar novas relações, agrupando os atributos de acordo com suas dependências funcionais: 
HISTÓRICO = {matrícula-aluno, código-matéria, número-prova, nota} PROVA = {código-matéria, número-prova, data-da-prova} ALUNO = {matrícula-aluno, nome-aluno, endereço-aluno} MATERIA = {código-matéria, nome-matéria} O nome das novas relações deve ser escolhido de acordo com a chave.
 
3º - Uma relação está na terceira forma normal (3FN), quando duas condições forem satisfeitas: A relação estiver na segunda forma normal. Todos os atributos primos dependerem não transitivamente de toda a chave primária. PEDIDO = {número-pedido, codigo-cliente, data-pedido, nome-cliente, codigo-cidade-cliente, nome-cidade-cliente} 
Fazendo a análise da dependência funcional de cada atributo primo, chegamos às seguintes dependências funcionais: número-pedido -> código-client e, número-pedido -> data-pedido; código-cliente -> nome-cliente; código-cliente - > código-cidade-cliente; codigo-cidade-cliente -> nome -cidade-cliente. Concluímos então que apenas os atributos primos codigo-cliente e data-pedido dependem não transitivamente totalmente de toda chave primária. Observe que: número-pedido -> código-cliente -> nome-cliente; número-pedido -> código-cliente -> código -cidade-cliente; número-pedido -> código-cliente -> código -cidade-cliente -> nome-cidade-cliente. Isto é dependência transitiva; devemos resolver inicialmente as dependências mais simples, criando um a nova relação onde codigo-cliente é a chave, o código-cliente continuará na relação PEDIDO como atributo primo, porém, os atributos que dependem dele devem ser transferidos para a nova relação: 
PEDIDO = {número-pedido, código-cliente, data-pedido} 
CLIENTE = {código-cliente, nome-cliente, código-cidade-cliente, nome-cidade-cliente}
As dependências transitivas da relação PEDIDO foram eliminadas, porém ainda devemos analisar a nova relação CLIENTE: código-cliente -> código-cidade-cliente -> nome-cidade-cliente 
Observe que o nome-cidade-cliente continua com uma dependência transitiva, vamos resolvê-la da mesma maneira: PEDIDO = {número-pedido, código-cliente, data-pedido} CLIENTE = {código-cliente, nome-cliente, código-cidade-cliente} CID ADE = {código-cidade -cliente, nome-cidade-cliente} O nome das novas relações deve ser escolhido de acordo com a chave. 
4º - Uma relação está na FNBC quando duas condições forem satisfeitas: A relação estiver na terceira forma normal;
Todo atributo não chave de pende funcionalmente diretamente da chave primária, ou seja, não há dependências entre atributos não chave. 
AGÊNCIA = {ag_num, ativos, cidade} CLIENTE = {cpf-cli, nome_cli, rua, cidade} 
DEPÓSITO = {ag_nome, conta_num, cpf_cli, saldo} E MPRÉSTIMO = {ag_nome, emp_num, cpf_cli, quantia} Fazendo a análise da dependência funcional de cada atributo primo, chegamos às seguintes dependências funcionais: ag_num -> ativos, cidade; cpf_cli -> nome_cli, rua, cidade; conta_num -> saldo, ag_num; emp_num -> quantia, ag_nome. Assim, concluímos que cpf_cli não dependem de conta-num e emp-num.
 Solução: INFO_EMPRÉSTIMO = {ag_num, emp_num, quantia} CLIENTE_EMPRÉSTIMO = {cpf_cli, nome_cli, emp_num} INFO_CONTA = {ag_num, conta_num, saldo} CLIENTE_CONTA = { cpf_cli, conta_num}. 
 
- 4FN Uma relação está na quarta forma normal quando se e somente se, estiver na 3FN e não existirem dependências multivaloradas. Na 3FN, a base de dados ainda apresenta os seguintes problemas:
Redundância para representar todas as informações; Representação não-uniforme (repete alguns elementos ou posições nulas).
Passagem à 4FN: Geração de novas tabelas, eliminando dependências multivaloradas; Análise de dependências multivaloradas entre atributos: autor, assunto -> Dependência multivalorada de nrol. 
- 5FN Uma relação está na quinta forma normal quando estando na quarta forma, uma entidade estará na quinta se não for possível reconstruir as informações originais a partir de registros menores, resultado da decomposição de um registro principal. Isso ocorre quando temos um relacionamento múltiplo (ternário, quartanário, etc.) num sistema. 
Apesar de existir raramente é utilizada. Está ligada à noção de dependência de junção. Se uma relação é decomposta em várias relações e a reconstrução não é possível pela junção das outras relações, dizemos que existe uma dependência de junção. Existem tabelas na 4FN que não podem ser divididas em duas relações sem que se altere os dados originais. 
 
- Superchave: conjunto de um ou mais atributos que, tomados coletivamente, nos permitem identificar de maneira unívoca uma entidade em um conjunto de entidades
.
- Superchave mínima: uma superchave da qual não podemos remover quaisquer atributos e ainda manter a restrição de unicidade. 
- Chave Candidata: são superchaves de tamanho mínimo, candidatas a serem chaves primárias da relação. 
- Chave Primária: atributo ou conjunto de atributos que identifica cada linha em uma tabela de forma única. Ideal numérica. 
- Chave Estrangeira: É quando um atributo de uma relação é chave primaria em outra. É o elo de ligação lógica entre as tabelas (relacionamentos). Através das operações com as chaves estrangeiras que se garante a integridade referencial do banco de dados. Vem de outra tabela. 
 
OBS: Pode-se afirmar sobre a Primeira Forma Normal (1FN): R: Estará na Primeira Forma Normal se, e somente se, cada coluna só puder ter um valor para cada linha na tabela.
Revisão das aulas 1 à 5
- Problemas de Gerenciamento de Dados do Sistema de Arquivos: Redundância e Inconsistência de Dados. Dificuldade de Acesso a Dados. Anomalias de Acesso Concorrente. Problemas de segurança. 
Problemas de Integridade. Problemas de Atomicidade. Anomalias de Acesso Concorrente. Problemas de segurança. 
- Principais arquiteturas dos SGBDs: Plataformas centralizadas. Banco de dados cliente-servidor. 
Sistemas de Computador Pessoal - PC. Bancos de dados Distribuídos. Datawarehouse. Banco web. 
- Principais Modelos de Dados: - Modelos de representativos ou de implementação: Legados: hierárquico e de rede. Atual: modelo relacional. Nova geração: modelos de dados de objetos. 
- Modelos conceituais: Entidades: objetos ou conceitos do mundo real. Atributos: Características ou propriedades de uma entidade. Relacionamentos: interações entre entidades. 
- Modelos Conceituais: O modelo conceitual mais utilizado é o Entidade-Relacionamento (ER). Modelo logico. Modelo Físico.
 
- Entidade: Segundo Heuser (1998), uma entidade é um conjunto de objetos da realidade modelada sobre os quais deseja-se manter informações no banco de dados. 
Atributos: Os atributos são as características da entidade.
 
Relacionamento: É uma associação entre entidades. As entidades que participa m de um relacionamento são também conhecidas como participantes. 
 
- Primeira Forma Normal (ou 1FN) requer que todos os valores de colunas em uma tabela sejam atômicos (dados simples e indivisíveis) e os dados vinculados a cada campo também devem ser um valor simples (exemplo: um número é um átomo, enquanto uma lista ou um conjunto não o são). 
Campo Composto: o seu conteúdo é formado por vários itens menores. Ex.: endereço. Atributo Multivalorado: o seu conteúdo é formado por mais de um valor. Ex.: telefone. A normalização para a prime ira forma normal elimina grupos repetidos, pondo-os cada um em uma tabela separada, conectando-os com uma chave primária ou estrangeira; 
- Segunda Forma Normal (ou 2FN) requer que não haja dependência funcional Parcial de um atributo que não seja a chave,em parte da chave candidata. Passo 1: tem algum campo composto ou multivalorado? 
R.: se não, então está na 1FN. Passo 2: existe dependência FUNCIONAL PARCIAL? R.: se sim, então não está na 2FN.; 
- Terceira Forma Normal (ou 3FN) requer não haver dependências funcionais Transitiva de atributos que não sejam chave, em qualquer coisa exceto um superconjunto de uma chave candidata. 
Passo 1: tem algum campo composto ou multivalorado? 
1FN. existe dependência funcional parcial? 
2FN. Passo 2: existe dependência funcional transitiva? R.: se sim, então não está na 3FN. Codigo_Cargo - Descrição_Cargo, Salario; 
- Forma Normal de Boyce -Codd (ou BCNF) requer que não exista nenhuma dependência funcional não -trivial de atributos em algo mais do que um superconjunto de uma chave candidata.
 Neste estágio, todos os atributos são dependentes de uma chave, de uma chave inteira e de nada mais que uma chave 
(Excluindo dependências triviais, c omo A -> A); 
- Quarta Forma Normal (ou 4FN) requer que não exista nenhuma dependência mult ivalorada não-trivial de conjuntos de atributo em algo mais de que um superconjunto de uma chave candidata; 
- Quinta Forma Normal (ou 5FN ou PJ/NF) requer que não exista dependências de joins (associações) não triviais que não venham de restrições chave;
Aula 6: Fundamentos da implementação Relacional
Existem diferentes meios pelos quais a estrutura do banco de dados é descrita para o SGBD dependendo do SGBD que est a sendo usado. A linguagem usada para descrever tal estrutura é chamada de DDL (Data Definition Language). A linguagem de definição de dados é usada pelo DBA na implementação do banco de dados. O arquivo de texto DDL fornece o nome das tabelas no banco de dados, nomeia e descreve as colunas destas tabelas, define índices e descreve outras estruturas, como restrições de segurança e outras limitações.
Linguagens de manipulação de dados: A DML (Data Manipulation Language) é utilizada para se recuperar informações armazenadas no banco de dados. Possui quatro categorias: - Álgebra Relacional: As relações podem ser manipuladas através de operadores relacionais. Embora não seja utilizada, frequentemente, devido à sua complexidade, ela ajuda a esclarecer a manipulação relacional e estabelece os fundamentos para o aprendizado da SQL. É um conjunto de operações usadas para manipular relações e é oriunda da Teoria dos Conjuntos da matemática. É fechada, o que significa que os resultados de uma ou mais operações relacionais são sempre uma relação; - Cálculo Relacional: Derivado do ramo da matemática chamado “Cálculo de Predicados”; - Linguagens orientadas à transformações: Constituem uma classe de linguagens que transformam dados de entrada expressos como relações, em resultados expressos, como uma única relação (SQUARE, SEQUEL e SQL); - Consultas através de exemplos/formulários: Através de interface gráfica, o usuário é apresentado a uma materialização de uma ou mais entradas. O SGBD mapeia a materialização para a relação fundamental e constrói as consultas (provavelmente em SQL). Ex.: Approach (Lotus), Access e SALSA for Desktop.
Operações da Álgebra Relacional: É a linguagem de consulta formal e procedimental, ou seja, aquela em que o usuário fornece instruções para o sistema para que este realize uma sequência de operações na base de dados para calcular o resultado desejado, pode ser: Seleção, Projeção, União, Interseção, Diferença, Produto ou produto cartesiano, Junção.
- Seleção (Restrição): A operação de seleção (Sele ct): é usada para selecionar um subconjunto das tuplas de uma relação que satisfaçam uma condição d e seleção. Recupera linhas em uma tabela.
A forma geral de uma operação é dada por: O <condição de seleção> (<nome da relação>) onde o símbolo (sigma) denota o operador de seleção e a <condição de seleção> é uma expressão booleana especificada sobre os atributos da relação sobre a qual se está operando. O operador de seleção é unário, isto é, ele é aplicado sobre uma única relação. Logo, a seleção não pode ser usada para selecionar tuplas oriundas de mais de uma relação.
A operação de seleção é aplicada sobre cada tupla individualmente. O grau da relação resultante da operação de seleção é igual ao grau da relação sobre a qual se operou, já ambas têm os mesmos atributos. O número de tuplas da relação resultante é sempre menor ou igual ao número de tuplas da relação original. A fração das tuplas, selecionadas por uma condição de seleção é dita ser a seletividade da condição. A operação de seleção é comutativa.
 - Projeção: A operação de projeção (Project) seleciona certas colunas de uma tabela e descarta as demais. O resultado da projeção é uma nova relação com os atributos selecionados. Ex.: para listarmos o primeiro nome, o último nome e o salário de cada um dos empregados devemos usar a operação de projeção da seguinte maneira:
A forma geral de uma operação de projeção é dada por:
Onde o símbolo ∏ (pi) de nota o operador de projeção e <lista de atributos> é a lista de atributos da relação especificada em <nome da relação>. A relação resultante possui apenas os atributos listados na operação, organizados na m esma ordem em que aparecem na lista de atributos. Logo o grau da relação resultante é igual ao número de atributos existentes na <lista de atributos>.
Se uma lista de atributos não incluir atributo-chave, tuplas duplicadas poderiam aparecer na ralação resultante. Logo, para que isso seja evitado, a operação de projeção remove implicitamente qualquer duplicidade de uma tupla.
- União(Union): A união de duas relações é formada pela adição das tuplas de uma relação ás tuplas de uma segunda relação, para produzir uma terceira. O resultado dessa operação, denotada por R U S é uma relação que inclui todas as tuplas que estão em R, em S, ou em ambas. As tuplas duplicadas são eliminadas. As tabelas devem apresentar as mesmas características de atributos (as colunas e os domínios devem ser idênticos) para serem utilizadas no operador Union.
- Interseção (Intersect): A interseção de duas relações é uma terceira relação contendo as tuplas que aparecem na primeira e na segunda relação. O resultado d essa operação, denotada por R ∩ S, é uma relação que inclui todas as tuplas que estão em R e estão em S. O operador Intersect resulta apenas nas linhas que aparecem em ambas as tabelas
- Diferença (Difference): A diferença de duas relações é uma terceira relação contendo tuplas que ocorrem na primeira relação, m as não na segunda. O resultado dessa operação, denotada por R – S, é uma relação que inclui todas as tuplas que estão em R, porém não estão em S. 
OBS: Para que as operações de União, Interseção e Diferença sejam possíveis, as relações devem ser compatíveis com a união, isto é, cada relação deve ter o mesmo número de atributos e os atributos na s colunas correspondentes devem vir do mesmo domínio.
- Produto ou Produto Cartesiano: O produto de duas relações é a concatenação de todas as tuplas de uma relação com todas as tuplas de uma segunda relação. O produto da relação A (com m tuplas) com a relação B (com n tuplas) tem m vezes n tuplas. 
A relação RESULT1 tem o CPF de todos os empregados que trabalham no departamento 4, enquanto RESULT2 tem o CPF de todos os empregados que chefiam diretamente um empregado do departamento 5.
 A relação EMP_DEPEND é o resultado da aplicação do produto cartesiano sobre as relações NOME_EMPS e DEPENDENTES. Em EMP_EPENDENTES, cada tupla de NOME_EMPS é combinada com cada tupla de DEPENDEN TES, gerando um resultado sem significado. 
- Junção: A operação de junção m ais comum envolve condições de junção com o operador de igualdade (=). Tal operação é chamada de Equijunção.
OBS: A operação que produz uma combinação entre as linhas de uma tabela com as linhas correspondentes de outra tabela, trata-se de? R: Junção.
 - A aplicação de um a operação de produto cartesiano seguida de uma operação de seleção resulta em uma operação de: Junção
Aula7: Linguagem SQL ( Parte 1 )
A linguagem SQL (Structured Query Language): é uma linguagem cuja finalidade é facilitar o acesso às informações por meio de consultas, atua lizações e manipulações de dados, estes armazenados em bancos de dados relacionais. A primeira versão da linguagem SQL, chamada SEQUEL, surgiu na década de 70, nos laboratórios da IBM (Califórnia), como uma interface para um sistema experim ental de um banco de dados relacional, chamado SISTEMA R. Entre 1976 e 1977, ela foi revisada e ampliada, tendo então o seu nome alterado para SQL. Um esforço conjunto da ANSI e da ISO chegou a versão padrão da SQL (ANSI, 1986) chamada SQL-86 ou SQL1. Uma versão revisada e expandida, chamada SQL2 ou SQL-92 foi desenvolvida em seguida. A próxima versão do padrão foi, origi nalmente, chamada SQL3, mas atualmente é conhecida por SQL-99. Devido ao sucesso da nova forma de c onsult a e manipul ação de dados dentro de um ambiente de banco de dados, sua utilização tornou-se cada vez maior. Atualmente, é a linguagem padrão dos SGBDs relacionais comerciais. Entre eles podemos citar: DB2, Firebird, Interbase, Mocrosoft SQL Server, My SQL, Oracle, Caché, PotgreSQL.
A linguagem SQL pode ter vários enfoques:
- Linguagem interativa de consulta (query AdHoc): Através de comandos SQL os usuários podem montar consultas poderosas, sem a necessidade da criação de um programa, podendo utilizar ferramentas front-end para a montagem de relatórios.
- Linguagem de programação para acesso às bases de dados: Comandos SQL embutidos em programas de aplicação (escritos em C, C++, Java, Visual Basic etc.) acessam os dados armazenados em uma base de dados relacional. 
- Linguagem de administração de banco de dados: O responsável pela administração do banco de dados (DBA) pode utilizar comandos SQL para realizar tarefas relacionadas com a manutenção dos schemas do banco de dados.
- Linguagem de consulta em ambiente cliente/servidor: Os programas, sendo processados nos computadores dos clientes (front ends), usam comandos SQL para se comunicarem através de uma rede, com um SGBD sendo processado em uma máquina servidora (back end).
- Linguagem para bancos de dados distribuídos: A linguagem SQL é também a linguagem padrão para a manipulaçã o de dados em uma ba se de dados distribuída.
- Linguagem de definição de dados (DDL - Data Definition Language): Permite ao usuário definição da estrutura, organização de dados armazenados e as relações existentes entre eles. CREATE, ALTER, DROP.
- Linguagem de manipulação de dados (DML - Data Manipulation Language): Permite a um usuário, ou a um programa de aplicação, a execução de operações de inclusão, remoção, seleção ou atualização de dados previamente armazenados na base de dados. SELECT, INSERT, UPDATE, DELETE. 
- Controle de acesso: Protege os dados de manipulações não autorizadas.
- Integridade dos dados: Auxilia no processo de definição da integridade dos dados, protegendo contra corrupções e inconsistências geradas por falhas do sistema de computação ou por erros nos programas de aplicação.
- Linguagem de Controle de Dados (DCL - Data Control Language): GRANT, REVOKE.
- Linguagem de Recuperação de Dados (DQL - Data Query Language): SELECT
Vantagens da Linguagem SQ L: Independência de fabricante: A linguagem SQL é adotada por praticamente todos os SGBDs relacionais existentes no mercado, além de ser uma linguagem padronizada (ANSI). Com isso posso mudar de SGBD sem me preocupar em alterar os programas de aplicação; Portabilidade entre plataformas de hardware e software: Pode ser utilizada tanto em máquinas Intel, rodando Windows, passando por workstations RISC, rodando UNIX, até mainframes, rodando sistemas operacionais proprietários; Redução dos custos com treinamento: As aplicações podem se movimentar de um ambiente para o outro sem que seja necessária uma reciclagem de equipe de desenvolvimento; Usa inglês estruturado de alto nível: O SQL é formado por um conjunto bem simples de sentenças em inglês, oferecendo um rápido e fácil entendimento; Permite consultas interativas: Permite aos usuários acesso fácil e rápido aos dados, a partir de um front end que permita a edição e a submissão de comandos SQL; Múltiplas visões dos dados: Permite, ao criador do banco de dados, levar diferentes visões dos dados aos diferentes usuários; Definição dinâmica dos dados: Através da linguagem SQL, pode-se alterar, expandir ou incluir, dinamicamente, as estruturas dos dados armazenados, com máxima flexibilidade. 
Definição de dados e Tipos de Dados: A linguagem SQL utiliza os termos tabela, linha e coluna, em vez dos termos relação, tupla e atributo, respectivamente, para o modelo relacional formal. O principal comando SQL para a definição de dados é o CREATE, que pode ser usado para criar esquemas, tabelas (relações) e domínios. Assim como pode ser usado para a criação de outros construtores, como visões (Views), asserções (Assertions) e gatilhos (Triggers); O conceito de esquema foi incorporado a partir da SQL2, de modo a agrupar as tabelas e outros construtores que pertencem à mesma aplicação de um banco de dados. Um esquema SQL é identificado por um nome de esquema e inclui uma identificação de autorização, que indica o usuário ou a conta ao qual o esquema pertence, bem como os descritores de cada elemento do esquema; Os elementos de esquema incluem tabela, restrições, visões, domínios e outros construtores (como concessão de autoridade) que descrevem o esquema. Um esquema é criado via comando CREATE SCHEMA, que pode incluir todos os elementos de definição do esquema. Alternativamente, o esquema pode ser definido por um nome e um identificador de autorização, e os elementos podem ser definidos depois. Ex.: o comando a seguir cria um esquema chamado EMPRESA, pertencente a um usuário cuja identificação é SILVA. CREATE SCHEMA EMPRESA AUTHORIZATHION SILVA.
Em geral, nem todos os usuários estão autorizados a criar esquemas e elementos de esquemas. O privilégio deve ser, explicitamente concedido (granted) para as contas de usuários relevantes, para o administrador do sistema ou para o DBA. Além do conceito de esquema, a SQL2 usa o conceito de catálogo, que é uma coleção de esquemas em um ambiente SQL que recebe um nome. Um ambiente SQL é uma instalação de um SGBD-Relacional padrão em um sistema de computador. Um catálogo sempre contém um esquema especial chamado INFORMATION_SCHEMA, que proporciona as informações sobre todos os esquemas do catálogo e todos os descritores de seus elementos. O comando CREATE TABLE é usado para criar uma tabela. A sua forma geral é: CREATE TABLE <nome_tabela> (<de scrição das colunas>, <descrição das chaves>); Selecionando Colunas Específicas de uma Tabela SELECT <lista_de_colunas> FROM <nome_tabela>; Selecionando Apenas Alguns Registros da Tabela SELECT <lista_de_colunas> FROM <nome_tabela>; WHERE <condição_de_seleção>; Onde a cláusula WHER E tem a seguinte forma: WHERE <nome_da_coluna> <operador> <valor> 
OBS: CREATE PROCEDURE: Use esta instrução para criar um procedimento permanente no banco de dados atual ou um procedimento temporário no banco de dados tempdb.
Aula 8: Linguagem SQL ( Parte 2 )
Integer ou int: representa valores inteiros. 
Numeric: determina a precisão do valor de casas decimais.
Date: data de calendário no formato AAAA-MM-DD. Char (tamanho): são sequências de caracteres de tamanho fixo limitados a 255 caracteres.
Varchar (tamanho): são sequências de caracteres com comprimento variável. 
Mais operadores: A cláusula WHERE pode filtrar as linhas de uma tabela através de outros operadores, além dos operadores relacionais e lógicos. Para a apresentação dos novos operadores e comandos, continuaremos a utilizar as tabelas descritas a seguir: CLIENTE (cod_cliente, nome_cliente, endereco, cidade, cep, uf); VENDEDOR (cod_vendedor, nome_vendedor, salario_fixo, faixa_comissao); PEDIDO ( num_pedido, prazo_entrega, cd_cliente, cd_vendedor); ITEM_PEDIDO (num_pedido, cd_produto, qtd_ped);PRODUTO (cod_produto, unid_produto, desc_produto, val_unitario);
- Ordenando os Dados Selecionados: SELECT <lista_de_colunas> FROM <nome_tabela> WHERE <condição_de_seleção> ORDER BY {<nome_coluna>|<num_col> [ASC|DESC]} onde <nome_coluna> se refere à coluna, segundo a qual as linhas serão ordenadas, e <num_col> se refere à posição relativa da coluna na <lista_de_colunas> projetadas, contada da esquerda para a direita, e não à posição na tabela original. As cláusulas ASC e DESC denotam ordenação ascendente e descendente, respectivamente. A forma ascendente de ordenação é assumida, caso nenhuma opção seja informada explicitamente.
- Agrupando a Informação Selecionada (GROUP BY): Consulta Mostrar em ordem alfabética a lista de vendedores e seus respectivos salários fixos. select nome_vendedor,sal_fixo from vendedor order by nome_vendedor; Consulta Listar os nomes, as cidades e os estados de todos os clientes, ordenados por estado e cidade de forma descendente. select nome_cliente, cidade, uf from cliente order by uf desc,cidade desc; Consulta Mostrar a descrição e o v alor unitá rio de todos os produtos que tenham unidade 'kg' em ordem ascendente de valor unitário. select desc_produto,val_unitario from produto where unid_produto = 'kg' order by 2;
 - Realizando cálculos sobre a informação selecionada: Podemos criar, dinamicamente, um campo que não pertença à tabela original através de operações executadas sobre os campos projetados. Consulta Exibir o novo salário fixo dos vendedores da faixa de comissão ‘C’, calculado com base no reajuste de 75% sobre o salário atual, acrescido de R$ 120,00 de bonificação. Ordene a relação resultante, pelo nome do vendedor. select nome_vendedor,((sal_fixo*1.75)+120) as novo_salario from vendedor where faixa_comissao='c' order by nome_vendedor; 
- Máximos (MAX) e Mínimos (MIN): Consulta Mostrar o menor e o maior salário entre os vendedores. Select MIN(sal_fixo), MAX (sal_fixo) from vendedor;
 - Totalizando Colunas (SUM): Consulta Mostrar a quantidade total pedida para o produto cimento, de código 200. select SUM(qtd_pedida) from item_pedido where cd_produto=200;
- Calculando Médias (A VG): Consulta Qual é a média dos salários fixos dos vendedores? Select AVG(sal_fixo) from vendedor; 
- Contando as Linhas (COUNT): Consulta Quantos vendedores ganham acima de R$ 2.000,00 de salário fixo? sele ct COU NT(*) f rom vendedor where sal_fixo>2000;
- A Palavra-Chave DISTINCT: Várias linhas de uma tabela podem conter os mesmos valores para as suas colunas (duplicidade), com exceção da chave primária. Quando desejarmos eliminar a duplicidade, podemos inserir a palavra-chave DISTINCT após a palavra-chave SE LECT. Problema Em que cidades, a nossa empresa possui clientes? select DISTINCT cidade from cliente; Existem ocasiões em que desejamos aplicar uma função de agregação, não somente a um conjunto de tuplas mas, também, organizar a informação em determinadas categorias, isto é possível, através do uso da cláusula GROUP BY. 
Problema: Listar o número de itens existente, em cada pedido. Select no_pedido, count(*) as total_itens from item_pedido group by no_pedido; 
 - A Cláusula HAVING: Às vezes, temos que definir condições e aplicá-las aos grupos, ao invés de fazê-lo a cada linha, separadamente. Por exemplo, suponha que desejemos listar todos os pedidos que possuam mais de um item. Essa condição não se aplica a uma única linha separadamente, mas a cada grupo definido pela cláusula GROUP BY. Para exprimir tal consulta, usamos a cláusula H AVING. A condição da cláusula HAVING é aplicada após a formação dos grupos; logo, podemos usar funções de agregação na construção das condições da cláusula HAVING. Consulta Listar os pedidos que possuem mais de um item. select no_ped,count(*) as total_itens from item_pedido group by no_pedido having count(*)>1; 
 OBS: Sobre o elemento ORDER BY é correto afirmar que? É usado junto com o SELECT em al guns casos.
Aula 9: Linguagem SQL ( Parte 3 )
Recuperando Dados de Várias Tabelas (JOINS): Algumas consultas necessitam acessar os dados de várias tabelas, simultaneamente. Para que isto seja possível, é necessária a realização de operações de junção (JOIN) entre as tabelas.
Qualificadores de Nomes: Um qualificador de nome consiste do nome da tabela, seguido de um ponto, seguido por um nome de uma coluna da tabela. Por exemplo, o qualificador da coluna DESC_PRODUTO da tabela PRODUTO será PRODUTO.DESC_PRODUTO. Os qualificadores de nom e são utilizados em uma consulta para efetivar a junção (JOIN) entre as tabelas. Consulta: Faça uma ju nção da tabela de clie ntes com a de pedidos, exibindo o nome do cliente, o código do cliente e o número do pedido. select cod_cliente,nome_cliente,pedido.num_pedido from cliente,pedido;
Sinônimos: Para que não seja necessário escrever o nome da tabela nas qualificações de nomes, podemos utilizar ALIASES definidos na própria consulta. A definição dos ALIASES é feita na cláusula FROM, sendo então utilizada nas outras cláusulas (WHERE, ORDER BY, GROUP BY, HAVING e SELECT) de uma consulta. Consulta: Exibir os vendedores (ordenados por nome) que emitiram pedidos com prazos de entrega superiores a 20 dias e que tenham salários fixos iguais ou superiores a R$ 5.000,00. select distinct nome_vendedor,prazo_entrega from vendedor V, pedido P where V.cod_vendedor=P.cd_vendedor and V.salario_fixo>5000 and prazo_entrega>20 order by nome_vendedor;
Utilizando Consultas Aninhadas (Subqueries): Chamamos de consulta aninhada à consulta cujo o resultado é utilizado por outra consulta, de forma encadeada e contida no mesmo comando SQL. Consulta: Que produtos estão incluídos em um pedido qualquer com a quantidade pedida igual a 100? select desc_produto from produto where cod_produto IN (select cd_produto from item_pedido where qtd_pedida=100);
SELECT <lista de atributos> FROM <Lista de tabelas> WHERE <Lista de condições>
Like: - Sublinhado (_): corresponde a um caractere em uma posição específica. - Porcentagem (%): corresponde a qualquer número de caracteres a partir da posição especificada.
Chave Estrangeira: FOREIGN KEY (CAMPO_TABELA_ATUAL) REFERENCES TABELA_DESTINO (CAMPO_TABELA_DESTINO);
Inserindo registros (INSERT): A instrução INSERT é responsável por incluir novas linhas (registros) nas tabelas existentes no banco de dados. INSERT INTO <Tabela> (Campos1, Campo2, …, Campon) VALUES (Valor1, Va lor2, …, Valorn);
Ex.: Inserindo registro na tabela "tb_cargo" INSERT INTO tb_cargo(id_cargo, ds_cargo, valor, fg_ativo) VALUES (1, 'Analista de Sistema', 2000.00, 1), (2 'Administrador de BD', 7900.00, 1), (3, 'Desenvolvedor C#', 5740.00, 1);
Aula 10: Linguagem SQL ( Parte 10 )
Modelagem Conceitual 
- Inserindo Registros em uma tabela: INSERT INTO <nome_tabela> ( <lista_de_colunas>) VALUES (<lista_de_valores>); Atividade: Inserir o produto Tinta de PVC na tabela de produtos. INSERT INTO produto VALUES (600, ‘l’, ’Tinta PVC’, 15.80);
- Inserindo Registros usando um Select: INSERT INTO <nome_tabela> (<lista_de_colunas>) SELECT <lista_de_colunas> FROM <nome_tabela> WHERE <con dição_de_valores>; Atividade s: Cadastra r, como clientes, os vendedores que emitiram mais de 3 pedidos. Usar o código de cliente o mesmo código do vendedor. O restante das colunas deve ser preenchido com um espaço em branco. INSERT INTO cliente (cod_cliente, nome_cliente, endereço, cidade, cep, uf) SELECT cod_vendedor, nome_vendedor, ‘ ‘, ‘ ‘, ‘ ‘, ‘ ‘ FROM vendedor V WHERE 3 < (SELECT COUNT (*) FROM pedido P WHERE V.cond_vendedor=P.cd_vendedor);
- Modificando um Registro: UPDATE <nome_tabela> SET {<nome_colunas> = <expressão>} WHERE <condição_de_seleção>; Problema1: Alterar o preço unitário do Cimento para R$ 5,00. UPDATE produto SET val_unit=5.00 WHERE desc_produto=’Cimento’; Problema2: Atualizar o salário fixo de todos os vendedores em 27%, mais uma bonificação de R$ 100,00. UPDATE vendedor SET sal_fixo=(sal_fixo * 1.27 + 100.00); Problema3: Acrescentar2,5% ao preço unitário dos produtos que e stejam abaixo da média dos preços dos produtos comprados a quilo. UPDATE produto SET val_unit=val_unit * 1.025 WHERE unid_prod=’kg’);
- Excluindo Registros: DELETE FROM <lista_coluna> WHERE <condição_de_seleção>; Problem a1: Excluir todos os itens de pedido que tenham quantidade pedida inferior a 200. DELETE FROM item_pedido WHERE qtd_pedida < 200; Prob lema2: Excluir todos os vendedores que não realizaram nenhum pedido. DELETE FROM vendedor V WHERE ()=(SELECT COUNT(*) FROM vendedor, pedido WHERE V.cod_ve ndedor=cd_ vendedor );
- Transações: A execução de um programa, que inclui operações de acesso a um banco de dados, é chamada de transação. Se essas operações não alteram os dados do banco de dados, a transação é chamada de read-only transaction. Uma transação deve possuir as seguintes propriedades (conhecidas por propriedades ACID):
 1. Atomic idade: Uma transação é uma unidade atômica de processamento; ou ela é executada na sua totalidade ou, então, nada é executado. 
2. Consistência: A execução de uma transação deve mante r a consistência de um banco de dados. 
3. Isolamento: Uma transação não deve tornar visível para o utras transações as modificações feitas em um banco de dados, até que ela seja encerrada com sucesso.
 4. Durabilidade: Uma vez executadas com sucesso, as alterações feitas por uma transação devem persistir, mesmo se houver falhas subsequentes no sistema.
 O padrão SQL especifica que uma transação deve começar de modo subentendido. As transações são terminadas por um dos seguintes comandos SQL: 
1. Commit: efetiva a transação corrente e inicia uma nova. 
2. Rollback: aborta a transação corrente. Ex.: UPDATE vendedor SET sa l_fixo=1000.00; ROLLBACK; No exemplo, as alterações feitas nos salários fixos dos vendedores não serão efetivadas, pois, o comando rollback é executado antes que a transação seja terminada com sucesso. Logo, os salários fixos dos vendedores permanecerão com os mesmos valores que possuíam imediatamente antes do início da transação.
- Visões: Com base em questões de segurança, podemos criar uma coleção de relações personalizadas que se ajustem melhor às necessidades dos usuários e que levem em conta as questões de segurança. Tais relações são chamadas de visões. Uma visão, na terminologia SQL, é uma tabela que é derivada de outras tabelas. Essas outras tabelas podem ser tabelas-base (criadas através do comando CREATE TAB LE) ou outras visões previamente definidas. Uma visão não está, necessariamente, fisicamente armazenada no banco de dados; ela pode existir apenas virtualmente, em contraste com as tabelas-base, cujas as tuplas se encontram fisicamente armazenadas no banco de dados.
Podemos eliminar uma visão através do comando DROP VIEW, cuja forma geral é: DROP VIEW <nome_visão>; Atividade: Eliminar a visão salário_anual. DROP VIEW salario_anual; - Índices: Os SGBD’s utilizam índices para tornar mais eficiente a recuperação dos dados de um banco de dados. Um índice é uma estrutura de dados, onde são armazenados valores e ponteiros, organizados de forma ascendente ou descendente, que torna possível localizar rapidamente as linhas de uma tabela, nas quais o valor desejado está armazenado. Os índices são utilizados, internamente, pelo SGBD, ficando totalmente transparente ao usuário a sua utilização. Um índice é construído sobre uma ou mais colunas de uma determinada tabela. Em SQL, um índice é criado através do comando CREATE INDEX, cuja forma geral é: CREATE [UNIQUE] INDEX <nome_índice> ON <nome_tabela> (<lista_de_colunas>); A cláusula UNIQUE é opcional, e a sua inclusão assegura a não exist ência de val ores dupl icados no ín dice a ser criado. Atividade1: Criar um índice chamado produto_desc_prod_idx sobre a coluna desc_produto da tabela produto. CREATE INDEX produto_desc_prod_idx ON produto (desc_prod);
Podemos eliminar um índice através do comando DROP INDEX, cuja forma geral é: DROP INDEX <nome_índic e>; Ativid ade: Elimin ar o índice criado. DROP INDEX produto_desc_prod_idx; 
- Segurança: O Comando GRANT: Quando uma tabela ou uma visão é criada, o nome do usuário que a criou é anexado, implicitamente, ao nome da tabela ou da visão. Ex.: Se a tabela produto foi criada pelo usuário Pedro; então, internamente, ela será conhecida como pedro.produto. O criador de uma tabela ou de uma visão tem todos os privilégios sobre o objeto criado, podendo inclusive conceder tais privilégios para outros usuários. 
Em SQL, os privilégios são concedidos através do comando grant, cuja a forma ge ral é: GRANT <lista_de_privilégios> ON <nome_objeto> TO <lista_de_usuários>; 
Os privilégios concedidos são os seguintes:
SELECT permite executar consultas. 
INSERT permite inserir registros. 
DELETE permite excluir registros. 
UPDATE permite modificar registros. 
ALL permite executar qualquer operação. 
O Comando REVOKE: Da mesma forma que podemos conceder privilégios de acesso a outros usuários, podemos também retirá-los, através do comando REVOKE, cuja forma geral é: REVO KE <lista_de_privilégios> ON <nome_objeto> FROM <lista_de_usuários>;
Ex.: Retirar o privilégio de seleção sobre a tabela pedido do usuário Ana. REVOKE SELECT ON pedido FROM ana;

Outros materiais