Banco de Dados 
Superior em Tecnologia de Jogos Digitais 
Daniel Paz de Araújo 
professor@danielpaz.net
Introdução e 
conceitos gerais
O que é um banco de dados 
Em essência, um sistema de bancos de dados é apenas um sistema computadorizado de armazenamento de registros. 
O banco de dados pode, ele próprio, ser visto como o equivalente eletrônico de um armário de arquivamento. 
Em outras palavras, é um repositório ou recipiente para uma coleção de arquivos de dados computadorizados.
Operações 
Os usuários do sistema poderão executar diversas operações sobre tais arquivos —por exemplo: 
●Acrescentar novos arquivos, vazios, ao banco de dados. 
●Inserir novos dados em arquivos existentes. 
●Buscar dados de arquivos existentes. 
●Alterar dados em arquivos existentes. 
●Eliminar dados de arquivos existentes. 
●Remover arquivos existentes do banco de dados.
Sistemas de Banco de Dados 
Os sistemas de bancos de dados estão disponíveis em máquinas que vão desde micros (portáteis) até computadores de grande porte. Sistemas em grandes equipamentos (“sistemas grandes”) tendem a ser multiusuários (de usuários múltiplos), ao passo que os sistemas de máquinas menores (“sistemas pequenos”) tendem a ser de usuário único (monousuário).
Sistemas de Banco de Dados 
Um sistema de monousuário é um sistema em que no máximo um usuário pode ter acesso ao banco de dados em qualquer instante determinado; um sistema multiusuário é um sistema em que muitos usuários podem obter acesso ao banco de dados ao mesmo tempo.
SGBD 
Entre o banco de dados físico —isto é, os dados de fato armazenados —e os usuários do sistema há uma camada de software, conhecida como o gerenciador do banco de dados ou servidor de banco de dados ou ainda, com maior frequência, sistema de gerenciamento de bancos de dados (SGBD).
SGBD 
O SGBD é de longe o componente de software mais importante de todo o sistema, mas não é o único. 
Outros componentes incluem utilitários, ferramentas para desenvolvimento de aplicações, auxílio em projetos, geradores de relatórios e o gerenciador de transações ou monitor de TP (transaction processing - processamento de transações). 
O termo SGBD também costuma se referir genericamente a algum produto particular de algum fornecedor particular.
Usuáriosprogramadoresde aplicações 
Responsáveis pela elaboração de programas aplicativos de bancos de dados. Tais programas obtêm acesso ao banco de dados emitindo a solicitação apropriada —em geral, uma instrução de SQL —ao SGBD.
Usuários finais 
Interagem com o sistema a partir de terminais ou estações de trabalho on-line. Pode obter acesso ao banco de dados por meio de aplicações, ou pode usar uma interface fornecida como parte integrante do software do sistema de bancos de dados.
UsuáriosAdministradoresde BD 
Responsável pela organização do sistema de modo a obter o desempenho que seja “o melhor para a empresa”.
Bibliografia 
DATE, C J. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. 
KORTH, H F e SILBERSCHATZ, A. Sistema de Bando de Dados. Rio de Janeiro: McGraw Hill, 1999.
Arquitetura de 
Banco de Dados
Níveis 
Nível interno(também conhecido como nível físico) é o mais próximo do meio de armazenamento físico —ou seja, é aquele que se ocupa do modo como os dados são fisicamente armazenados.
Níveis 
Nível externo(também conhecido como nível lógico do usuário) é o mais próximo dos usuários —ou seja, é aquele que se ocupa do modo como os dados são vistos por usuários individuais.
Níveis 
Nível conceitual(também conhecido como nível lógico comunitário, ou às vezes apenas nível indireto, sem qualificação) é um nível de “simulação” entre os outros dois.
Níveis 
O nível externo se preocupa com as percepções dos usuários individuais, enquanto o nível conceitualestá preocupado com uma percepção da comunidadede usuários. 
A maioria dos usuários não estará interessada em todo o banco de dados, mas somente em alguma porção restrita do banco de dados. 
●Nível externo:visões de usuários individuais 
●Nível conceitual:visão da comunidade de usuários 
●Nível interno:visão do meio de armazenamento
Mapeamento 
Além dos três níveis básicos, a arquitetura envolve, em geral, certos mapeamentos —um mapeamento conceitual interno e vários mapeamentos externos/conceituais. 
O mapeamento conceitual internodefine a correspondência entre a visão conceituale o banco de dados armazenado; ele especifica o modo como os registros e campos conceituais são representados no nível interno.
SGBD 
O sistemade gerenciamentode bancosde dados (SGBD) é o software quetratade todoo acessoaobanco de dados: 
1.Um usuáriofazum pedidode acessousandoumadeterminadasublinguagemde dados (emgeral,SQL). 
2.O SGBD interceptao pedidoe o analisa. 
3.O SGBD inspeciona, porsuavez, o esquemaexterno(ouas versõesobjetodesseesquema) para esseusuário, o mapeamentoexterno/conceitualcorrespondente, o esquemaconceitual, o mapeamentoconceitual/internoe a definiçãoda estruturade armazenamento. 
4.O SGBD executaas operaçõesnecessáriassobreo banco de dados armazenado.
SGBD 
O SGBD devesercapazde lidarcom solicitaçõesdo usuáriopara buscar, atualizarouexcluirdados existentesno banco de dados, oupara acrescentarnovosdados aobanco de dados. 
Em outraspalavras, o SGBD deveincluirum componenteprocessadorde DML oucompiladorde DML para lidarcom a linguagemde manipulaçãode dados (DML —data manipulation language).
Comunicação de Dados 
As requisições a bancos de dados de um usuário final são, na verdade, transmitidas do usuário —que pode estar fisicamente afastado do próprio sistema de banco de dados, e daí até o SGBD, sob a forma de mensagens de comunicação. 
De modo semelhante, as respostas do SGBD e da aplicação on-line para o usuário também são transmitidas sob a forma de mensagens.
Comunicação de Dados 
Todas essas transmissões de mensagens têm lugar sob o controle de outro componente de software, o gerenciador de comunicações de dados (gerenciador DC —Data Communications).
Comunicação de Dados 
O gerenciador DC não faz parte do SGBD, mas é um sistema autônomo. Porém, como o gerenciador DC e o SGBD são claramente obrigados a trabalhar em harmonia, às vezes os dois são considerados parceiros de igual nível em um empreendimento cooperativo de nível mais alto, denominado sistema de banco de dados / comunicações de dados (sistema DB/DC), no qual o SGBD toma conta do banco de dados e o gerenciador DC manipula todas as mensagens de e para o SGBD ou, mais precisamente, de e para aplicações que utilizam o SGBD.
Arquitetura Cliente/Servidor 
Osclientessão as diversas aplicações executadas sobre o SGBD —tanto aplicações escritas por usuários quanto aplicações internas, ou seja, aplicações fornecidas pelo fabricante do SGBD ou por produtores independentes. 
O servidor é o próprio SGBD. Ele admite todas as funções básicas de SGBDs: definição de dados, manipulação de dados, segurança e integridade de dados, e assim por diante. Em particular, ele oferece todo o suporte de nível externo, conceitual e interno. Assim, o termo “servidor” neste contexto é tão- somente um outro nome para o SGBD.
Ferramentas fornecidas pelo fabricante 
●Processadores de linguagem de consulta. 
●Geradores de relatórios. 
●Subsistemas gráficos de negócios. 
●Planilhas eletrônicas. 
●Processadores de linguagem natural. 
●Pacotes estatísticos.
Ferramentas fornecidas pelo fabricante 
●Ferramentas para gerenciamento de cópias ou “extração de dados”. 
●Geradores de aplicações. 
●Outras ferramentas para desenvolvimento de aplicações, inclusive produtos de engenharia de software auxiliada pelo computador (CASE — computer-aided software engineering).
Dicionário de Dados 
Muitas organizações usam sistemas de dicionário de dados ou repositórios de informação, mini SGBDs que administram metadados —isto é, dados que descrevem a estrutura dos dados, suas restrições, suas aplicações, suas autorizações, e assim por diante. 
Eles são usados frequentemente como ferramenta integrante para administração dos recursos de informação.
Dicionário de Dados 
Um sistema de dicionário de dados útil devearmazenar e administrar os seguintes tipos de informação: 
●Descrição dos esquemas do sistema de banco de dados. 
●Informação detalhada do projeto de banco de dados físico, como estruturas de armazenamento, caminhos deacesso e tamanhos de arquivo e registro. 
●Descrições dos usuários do banco de dados, suas responsabilidades e autoridade de acesso.
Dicionário de Dados 
●Descrições em alto nível das transações do banco de dados, das aplicações e dos relacionamentos entre usuários etransações. 
●Relacionamento entre as transações do banco de dados e os itens de dados referenciados por elas. É útil para determinar quais transações são afetadas quando definições de dados forem alteradas. 
●Estatísticas de uso, como freqüências de consultas e transações, bem como volume de acesso a uma dada porçãode dados.
Bibliografia 
DATE, C J. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. 
KORTH, H F e SILBERSCHATZ, A. Sistema de Bando de Dados. Rio de Janeiro: McGraw Hill, 1999. 
ELMASRI R., NAVATHE S.: Sistemas de Banco de Dados. São Paulo: Person, 2005
Modelos e Linguagens 
de Banco de Dados
Modelos de Dados 
Coleção de ferramentas conceituais para descrever dados, relações de dados, semântica de dados e restrições de consistência. 
Oferece uma maneira de descrever o projeto de um banco de dados no nivel físico, lógico e conceitual.
Modelo Relacional 
●Usa uma coleção de tabelas para representar os dados e as relações entre eles. 
●Cada tabela possui diversas colunas, e cada coluna possui um nome único. 
●Cada tabela contém registros de um tipo específico. 
●Cada tipo de registro define um número fixo de campos, ou atributos.
Modelo de Entidade / Relacionamento 
●As colunas da tabela correspondem aos atributos do tipo de registro. 
●É baseado em uma percepção de um mundo real que consiste em uma coleção de objetos básicos, chamadosentidades, e asrelaçõesentre esses objetos. 
●Uma entidade é uma "coisa" ou "objeto" no mundo real que é distinguível dos outros objetos.
Modelo de Dados Baseado em Objeto 
●Pode ser visto como uma extensão do modelo Entidade Relacionamento com noções de encapsulamento, métodos (funções) e identidade de objeto. 
●Combina recursos do modelo de dados orientado a objeto e do modelo de dados relacional.
Modelo de Dados Semi-Estruturado 
●Permite a especificação dos dados em que itens de dados individuais do mesmo tipo possam ser diferentes conjuntos de atributos. 
●É o oposto dos modelos de dados mencionados anteriormente, em que todos os itens de dados de um determinado tipo precisam ter o mesmo conjunto de atributos. 
●A Extensible Markup Language (XML) é amplamente usada para representar dados semi-estruturados.
Linguagens de Banco de Dados 
●Um sistema de banco de dados fornece uma linguagem de definição de dadosparaespecificar o esquema de banco de dados e umalinguagem de manipulação de dadospara expressar as consultas e atualizações de banco de dados. 
●As linguagens de definição de dados e de manipulação de dados não são duas linguagens separadas, mas simplesmente formam partes de uma única linguagem de banco de dados, como a amplamente usada linguagem SQL.
Linguagem de Manipulação de Dados 
Umalinguagem de manipulação de dados (DML) permite aos usuáriso acessar ou manipular dados conforme são organizados pelo modelo de dados apropriados. Os tipos de acesso são: 
●Recuperação de informações armazenadas no banco de dados 
●Inserção de novas informações no banco de dados 
●Exclusão de informações do banco de dados 
●Modificação de informações armazenadas no banco de dados
Linguagem de Definição de Dados 
Especificamos a estrutura de armazenamento e métodos de acesso usados pelo sistema de banco de dados por um conjunto de instruções em um tipo especial delinguagem de definição de dados -DDL. 
●Restrições de domínio: possíveis valores que podem ser associados com cada atributo 
●Integridade referencial: garantir que um valor que aparece em uma relação também apareça para um certo conjunto de atributos em outra relação
Linguagem de Definição de Dados 
●Assertivas: qualquer condição que o banco de dados sempre precisa satisfazer 
●Autorização: diferenciar entre usuários e tipos de acesso que podem realizar
Bibliografia 
DATE, C J. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. 
KORTH, H F e SILBERSCHATZ, A. Sistema de Bando de Dados. Rio de Janeiro: McGraw Hill, 1999.
MER: Modelo de 
Entidade / Relacionamento
MER 
O modelo de dados de entidade/relacionamento (E-R ou MER) é baseado em uma percepção de um mundo real que consiste em uma coleção de objetos básicos, chamadosentidades,e derelaçõesentre esses objetos.
MER 
Uma entidade é uma "coisa" ou "objeto" no mundo real que é distinguível de outros objetos. 
As entidades são descritas em um banco de dados por um conjunto deatributosque as caracterizam e/ou identificam. 
Uma relação é uma associação entre várias entidades.
MER 
A estrutura lógica geral (esquema) de um banco de dados pode ser expressa graficamente por um diagrama E-R, constituído dos seguintes componentes: 
●Retângulos,que representam conjuntos de entidade 
●Elipses, que representam atributos. 
●Losangos, que representam conjuntos de relações entre um membro de cada um dos vários conjuntos de entidade. 
●Linhas, que ligam atributos a conjuntos de entidade e conjuntos de entidade e relações.
MER -Exemplo 
cliente 
conta 
depositante 
saldo 
n. conta 
id cliente 
nome cliente 
rua cliente 
cidade cliente
Bibliografia 
DATE, C J. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. 
KORTH, H F e SILBERSCHATZ, A. Sistema de Bando de Dados. Rio de Janeiro: McGraw Hill, 1999.
Cardinalidade
Cardinalidade 
As cardinalidades de mapeamento, ou fatores de cadinalidade, expressam o número de entidades ao qual outra entidade pode ser associada por um conjunto de relacionamento. 
As cardinalidades de mapeamento são uteis principalmente em descrever conjuntos de relacionamento binários, embora possam contribuir para a descrição dos conjuntos de relacionamento que envolvem mais de dois conjuntos de entidades.
Um-para-um 
Para um conjunto de relacionamento binário R entre conjuntos de entidades A e B, a cardinalidade de mapeamento precisa ser uma das seguintes: 
●Um-para-um: uma entidade em A é associada a no máximo uma entidade em B, e uma entidade em B é associada a no máximo uma entidade em A. 
a1 
a2 
a3 
a4 
A 
b2 
b3 
b4 
B 
b1
Um-para-um 
Notação 
R 
1 
1 
ou 
R
Um-para-muitos 
●Um-para-muitos: Uma entidade em A é associada a qualquer número de entidades (zero ou mais) em B.Entretanto, uma entidade em B pode ser associada a no máximo uma entidade em A. 
a1 
a2 
a3 
A 
b2 
b3 
b4 
B 
b1 
b5
Um-para-muitos 
Notação 
R 
1 
* 
ou 
R
Muitos-para-um 
●Muitos-para-um: uma entidade em A é associada a no máximo uma entidade em B. Entretando, uma entidade em B pode ser associada a qualquer número de entidades (zero ou mais) em A. 
a1 
a2 
a3 
a4 
A 
b2 
b3 
b4 
B 
b1
Muitos-para-um 
Notação 
R 
1 
* 
ou 
R
Muitos-para-muitos 
●Muitos-para-muitos: Uma entidade em A é associada a qualquer número de entidades (zero ou mais) em B, e uma entidade em B pode ser associada a qualquer número de entidades (zero ou mais) em A. 
a1 
a2 
a3 
A 
b2 
b3 
b4 
B 
b1 
b5
Muitos-para-muitos 
Notação 
R 
* 
* 
ou 
R
Bibliografia 
DATE, C J. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. 
KORTH, H F e SILBERSCHATZ, A. Sistema de Bando de Dados. Rio de Janeiro: McGraw Hill, 1999.
Chaves
Chaves 
É preciso ter uma maneira de especificar como os registros dentro de uma determinada relação são distinguidas. Isso é expresso em termos de seus atributos. 
Os valores de atributos de um registro precisam ser tais que possamidentificar unicamenteo registro. 
Nenhum par de registros em uma relação pode ter exatamente o mesmo valor para todos os atributos.
Superchave 
Umasuperchaveé um conjunto de um ou mais atributos que, tomados coletivamente, nos permite identificar unicamente um registro na relação. 
Por exemplo, o atributo id_cliente da relação clienteé suficiente para dintinguir um registro cliente de outro. Portanto, id_cliente é uma superchave. Da mesma forma, a combinação nome_cliente e id_cliente é uma superchave para a relação cliente. O atributo nome_cliente de cliente não é uma superchave porque várias pessoas poderiam ter o mesmo nome.
Exemplo 
id_cliente 
nome_cliente 
1 
José da Silva 
2 
Maria Antônia 
3 
João Pereira 
4 
José da Silva
Chaves candidatas 
Normalmente, o que nos interessa são superchaves para as quais nenhum subconjunto apropriado é uma superchave. 
Essas superchaves mínimas são chamadas chaves canditadas. 
É possível que vários conjuntos diferentes de atributos sirvam como uma chave candidata.
Chaves candidatas 
Embora os atributos id_cliente e nome_cliente juntos possam distinguir registros cliente, sua combinação não forma uma chave candidata, já que o atributo id_clientesozinho é uma chave candidata.
Chave Primária 
O termochave primáriadenota uma chave candidata que é escolhida pelo projetista de banco de dados como o principal meio de identificar registros dentro de uma relação. 
Uma chave (seja primária, candidata ou superchave) é uma propriedade da relação inteira, e não dos registros individuais.
Chave Primária 
Nenhum par de registros na relação pode ter o mesmo valor nos atributos de chave ao mesmo tempo. 
A chave primária deve ser escolhida de modo que seus valores de atributo nunca, ou muito raramente, sejam modificados.
Chave Estrangeira 
Um esquema de relação, digamos, R1, pode incluir entre sues atributos a chave primária de outro esquema de relação, digamos R2. 
Esse atributo é chamado dechave estrangeiradeR1 referenciando R2. 
A relação R1 é chamada derelação referenciadorada dependência da chave estrangeira, e R2 é chamada derelação referenciadade chave estrangeira.
Bibliografia 
DATE, C J. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. 
KORTH, H F e SILBERSCHATZ, A. Sistema de Bando de Dados. Rio de Janeiro: McGraw Hill, 1999.
Especialização 
e Generalização
Especialização 
Um conjunto de entidades pode incluir subagrupamentos de entidades que sejam, de algum modo, distintas de outras entidades do conjunto. 
Por exemplo, um conjunto de entidades dentro de um conjunto de entidades pode ter atributos que não são compartilhados por todas as entidades do conjunto de entidades.
Exemplo 
Como exemplo, considere um conjunto de entidades pessoa, com atributosid_pessoa, nome, rua e cidade. Uma pessoa pode ser subclassificada como: 
●cliente 
●funcionário
Exemplo 
Cada um desses tipos de pessoa é descrito por um conjunto de atributos que inclui todos os atributos do conjunto de entidadespessoa,além, possivelmente, de atributos adicionais. 
Por exemplo, as entidadesclientepodem ser descritas adicionalmente por um atributoavaliação_crédito, enquanto entidadesfuncionáriopodem ser descritas adicionalmente pelo atributo salário.
Representação 
Em termos de um diagrama Entidade Relacionamento, a especialização é representada por um componente triângulo rotulado ISA, que significa "is a" -é um(a). 
ISA 
pessoa 
id_pessoa 
nome 
rua 
cidade 
funcionário 
cliente 
avaliação_crédito 
salário
Generalização 
O refinamento de um conjunto de entidades inicial em sucessivos níveis de subagrupamentos de entidades representa um processo de projeto de cimapara baixo(topdown), em quemúltiplosconjuntos de entidade são sintetizados em um conjunto de entidades de nível superior na base dos recursos comuns. 
Conjuntos de entidades de nível superior e inferior também podem ser designados pelos termos superclasseesubclasse, respectivamente. 
Para todos os fins práticos, a generalização é uma simples inversão da especialização.
Especialização e Generalização 
ISA 
pessoa 
id_pessoa 
nome 
rua 
cidade 
funcionário 
cliente 
avaliação_ 
crédito 
salário 
ISA 
caixa 
secretária 
diretor 
numero_ 
diretor 
numero_ 
caixa 
horas_ semanais 
horas_ semanais
Bibliografia 
DATE, C J. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. 
KORTH, H F e SILBERSCHATZ, A. Sistema de Bando de Dados. Rio de Janeiro: McGraw Hill, 1999.
Normatização
Normatização 
O conceito de normalização foi introduzido por E. F. Codd em 1970 (primeira forma normal). Esta técnica é um processo matemático formal, que tem seus fundamentos na teoria dos conjuntos. Através deste processo pode-se, gradativamente, substituir um conjunto de entidades e relacionamentos por um outro, o qual se apresenta "purificado" em relação às anomalias de atualização (inclusão, alteração e exclusão) as quais podem causar certos problemas, tais como:
Normatização 
●grupos repetitivos de dados, 
●dependências parciais em relação a uma chave concatenada, 
●redundâncias de dados desnecessárias, 
●perdas acidentais de informação, 
●dificuldade na representação de fatos da realidade observada e 
●dependências transitivas entre atributos.
Primeira Forma Normal -1FN 
Cada ocorrência da chave primária deve corresponder a uma e somente uma informação de cada atributo, ou seja, a entidade não deve conter grupos repetitivos (multivalorados). 
Para se obter entidades na 1FN, é necessário decompor cada entidade não normalizada em tantas entidades quanto for o número de conjuntos de atributos repetitivos.
Primeira Forma Normal -1FN 
Nas novas entidades criadas, a chave primária é a concatenação da chave primária da entidade original mais o(s) atributo(s) do grupo repetitivo visualizado(s) como chave primária deste grupo.
Variação Temporal e Histórico 
Observamos que normalmente, ao se definir um ambiente de armazenamento de dados, seja ele um banco de dados ou não, geralmente mantém a última informação cadastrada, que às vezes, por sua própria natureza, possui um histórico de ocorrências. 
Mas como a atualização sempre feita sobre esta última informação, perdem-se totalmente os dados passados.
Variação Temporal e Histórico 
Toda vez que a decisão de armazenar o histórico de algum atributo tomada, cria-se explicitamente um relacionamento de um para muitos entre a entidade que contém o atributo e a entidade criada para contei histórico deste atributo. 
Passa a existir então uma entidade depender contendo (no mínimo) toda data em que houve alguma alteração do atributo bem como o respectivo valor do atributo para cada alteração. 
A chave de entidade de histórico será concatenada, e um de seus atributos será a data referência.
Dependência Funcional 
Dada uma entidade qualquer, dizemos que um atributo ou conjunto de atributos A é dependente funcional de um outro atributo B contido na mesma entidade, se a cada valor de B existir nas linhas da entidade em que aparece, um único valor de A. Em outras palavras, A depende funcionalmente de B. Exemplo: Na entidade PEDIDO, o atributo PRAZO-DE- ENTREGA depende funcionalmente de NUMERO-DO- PEDIDO.
Dependência Funcional Total e Parcial 
Na ocorrência de uma chave primária concatenada, dizemos que um atributo ou conjunto de atributos depende de forma completa ou total desta chave primária concatenada, se e somente se, a cada valor da chave (e não parte dela), está associado um valor para cada atributo, ou seja, um atributo não (dependência parcial) se apresenta com dependência completa ou total quando só dependente de parte da chave primária concatenada e não dela como um todo.
Dependência Funcional Total e Parcial 
A dependência total ou completa só ocorre quando a chave primária for composta por vários (concatenados) atributos, ou seja, em uma entidade de chave primária composta de um único atributo não ocorre este tipo de dependência.
Dependência Funcional Transitiva 
Quando um atributo ou conjunto de atributos A depende de outro atributo B que não pertence à chave primária, mas é dependente funcional desta, dizemos que A é dependente transitivo de B. Exemplo: dependência transitiva -Na entidade PEDIDO, os atributos ENDEREÇO, CIDADE, UF, CGC e INSCRIÇÃO- ESTADUAL são dependentes transitivos do atributo CLIENTE. Nesta mesma entidade, o atributo NOME-DO-VENDEDOR é dependente transitivo do atributo CODIGO-DO-VENDEDOR.
Segunda Forma Normal -2FN 
Devemos observar se alguma entidade possui chave primária concatenada, epara aquelas que satisfizerem esta condição, analisar se existe algum atributo ou 
conjunto de atributos com dependência parcial em relação a algum elemento da chaveprimária concatenada.
Segunda Forma Normal -2FN 
Com a finalidade de tornar ainda mais estável o modelo de dados, a aplicação da 2FN sobre as entidades em observação geram novas entidades, que herdarão a chave parcial e todos os atributos que dependem desta chave parcial, ou seja, uma entidade para estar na 2FN não pode ter atributos com dependência parcial em relação à chave primária.
Segunda Forma Normal -2FN 
Exemplo: A entidade ITEM-DO-PEDIDO apresenta uma chave primáriaconcatenada e por observação, notamos que os atributos UNIDADE-DO-PRODUTO, DESCRIÇÃO- DO-PRODUTO e VALOR-UNITARIO dependem de forma parcial do atributo CODIGO-DO-PRODUTO, que faz parte da chave Primária. 
Logo devemos aplicar a 2FN sobre esta entidade.
Segunda Forma Normal -2FN 
Quando aplicamos a 2FN sobre ITEM-DO-PEDIDO, será criada a entidade PRODUTO que herdará os atributos UNIDADE-DO-PRODUTO, DESCRIÇÃO-DO-PRODUTO e VALOR-UNITÁRIO e terá comochave primária o CODIGO-DO-PRODUTO
Terceira Forma Normal -3FN 
Uma entidade está na 3FN se nenhum de seus atributos possuí dependência transitiva em relação a outro atributo da entidade que não participe da chave primária, ou seja, não exista nenhum atributo intermediário entre a chave primária e o próprio atributo observado. 
Ao retirarmos a dependência transitiva, devemos criar uma nova entidade que contenha os atributos que dependem transitivamente de outro e a sua chave primária é o atributo que causou esta dependência.
Terceira Forma Normal -3FN 
Exemplo: Na entidade PEDIDO, podemos observar que o atributo NOME-DO-VENDEDOR depende transitivamente do atributo CODIGO-DO-VENDEDOR quenão pertence à chave primária. 
Para eliminarmos esta anomalia devemos criar aentidade VENDEDOR, com o atributo NOME-DO- VENDEDOR e tendo como chaveprimária o atributo CODIGO-DO VENDEDOR.
Forma Normal de Boyce Codd -FNBC 
As definições da 2FN e 3FN, desenvolvidas por Codd, não cobriam certos casos,quando três condições aparecem juntas: 
●a entidade tenha várias chaves candidatas; 
●estas chaves candidatas sejam concatenadas (mais de umatributo); 
●as chaves concatenadas compartilham pelo menos um atributo comum.
Forma Normal de Boyce Codd -FNBC 
FNBC é uma extensão da 3FN, que não resolvia certas 
anomalias presentes na informação contida em uma entidade. 
O problema foi observado porque a 2FN e a 3FN só tratavam dos casos de dependência parcial e transitiva de atributos fora de qualquer chave, porém quando oatributo observado estiver contido em uma chave (primária ou candidata), ele não écaptado pela verificação da 2FN e 3FN.
Forma Normal de Boyce Codd -FNBC 
A definição da FNBC é a seguinte: uma entidade está na FNBC se e somentese todos os determinantes forem chaves candidatas. 
Note que esta definição é emtermos de chaves candidatas e não sobre chaves primárias.
Quarta Forma Normal -4FN 
Às vezes podem surgir problemas com relação a algum atributo não chave, que recebe valores múltiplos para um mesmo valor de chave. 
Esta nova dependência recebe o nome de dependência multivalorada que existe somente se a entidade contiver no mínimo três atributos.
Quarta Forma Normal -4FN 
Uma entidade que esteja na 3FN também está na 4FN, se ela não contiver mais do que um fato multivalorado a respeito da entidade descrita. 
Esta dependência não é o mesmo que uma associação M:N entre atributos, geralmente descrita desta forma em algumas literaturas.
Quinta Forma Normal -5FN 
A 5FN trata de casos bastante particulares, que ocorrem na modelagem de dados, que são os relacionamentos múltiplos (ternários, quaternários n-ários). 
Ela fala que um registro está na sua 5FN, quando o conteúdo deste mesmo registro não puder ser reconstruído (junção) a partir de outros registros menores, extraídos deste registro principal. 
Ou seja, se ao particionar um registro, e sua junção posterior não conseguir recuperar as informações contidas no registro original, então este registro está na 5FN.
Roteiro de Aplicação da Normalização 
Aplicação da 1FN 
●Decompor a entidade em uma ou mais entidades, sem grupos repetitivos; 
●Destacar um ou mais atributos como chave primária da(s) nova(s) entidade(s), e este será concatenado com a chave primária da entidade original; 
●Estabelecer o relacionamento e a cardinalidade entre a(s) nova(s) entidade(s) gerada(s) e a entidade geradora; 
●Verificar a questão da variação temporal de certos atributos e criar relacionamentos 1:N entre a entidade original e a entidade criada por questões de histórico.
Roteiro de Aplicação da Normalização 
Aplicação da 2FN 
●Para entidades que contenham chaves primárias concatenadas, destacar os atributos que tenham dependência parcial em relaçãoà chave primária concatenada; 
●Criar uma nova entidade que conterá estes atributos, e que terá comochave primária o(s) atributo(s) do(s) qual(quais) se tenha dependênciaparcial; 
●Serão criadas tantas entidades quanto forem os atributos da chaveprimária concatenada, que gerem dependência parcial; 
●Estabelecer o relacionamento e a cardinalidade entre a(s) novasentidade(s) gerada(s) e a entidade geradora.
Roteiro de Aplicação da Normalização 
Aplicação da 3FN 
●Verificar se existem atributos que sejam dependentes transitivos de outros que não pertencem à chave primária, sendo ela concatenada ounão, bem como atributos que sejam dependentes de cálculo realizado apartir de outros atributos; 
●Destacar os atributos com dependência transitiva, gerando uma novaentidade com este atributo e cuja chave primária é o atributo queoriginou a dependência; 
●Eliminar os atributos obtidos através de cálculos realizados a partir deoutros atributos.
Roteiro de Aplicação da Normalização 
Aplicação da FNBC 
●Só aplicável em entidades que possuam chaves primárias e candidatasconcatenadas; 
●Verificar se alguma chave candidata concatenada é um determinante, eem caso afirmativo, criar uma entidade com os que dependamfuncionalmente deste determinante e cuja chave primária é o própriodeterminante.
Roteiro de Aplicação da Normalização 
Aplicação da 4FN 
●Para se normalizar em 4FN, a entidade tem que estar (obrigatoriamente)na 3FN; 
●Verificar se a entidade possui atributos que não sejam participantes dachave primária e que sejam multivalorados e independentes em relaçãoa um mesmo valor da chave primária; 
●Retirar estes atributos não chaves e multivalorados, criandonovas entidades individuais para cada um deles, herdando achave primária da entidade desmembrada.
Roteiro de Aplicação da Normalização 
Aplicação da 5FN 
●Aplicada em elementos que estejam na 4FN; 
●A ocorrência deste tipo de forma normal está vinculada aosrelacionamentos múltiplos (ternários, etc.) ou entidades que possuamchave primária concatenada com três ou mais atributos; 
●Verificar se é possível reconstruir o conteúdo do elemento original apartir de elementos decompostos desta; 
●Se não for possível, o elemento observado não está na 5FN, casocontrário os elementos decompostos representam um elemento na 5FN.
Desnormalização 
Os novos elementos criados durante a normalização podem trazer prejuízos na hora de serem implementados em um SGDB. 
Devido as características de construção física de certos bancos de dados, algumas entidades e relacionamentos devem ser desnormalizados para que o SGBD tenha um melhor desempenho. 
Ao se optar pela desnormalização, deve-se levar em conta o custo daredundância de dados e as anomalias de atualização decorrentes.
Bibliografia 
DATE, C J. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. 
KORTH, H F e SILBERSCHATZ, A. Sistema de Bando de Dados. Rio de Janeiro: McGraw Hill, 1999. 
MACHADO, F. N. R. e ABREU, M. P.Projeto de Banco de Dados. São Paulo: Érica, 2004.
SQL
SQL 
O nome "SQL" significa "Structured Query Language" - LinguagemEstruturada de Pesquisa. 
Sua primeira versão recebeu o nome deSEQUEL ("Structured English Query Language"), sendo definida por D. D.CHAMBERLIN, entre outros, em 1974, nos laboratórios de pesquisa da IBM(Califórnia). 
Em 1975, foi implementado um protótipo de aplicação dessa novalinguagem.Entre 1976 e 1977, o SEQUEL foi revisado e ampliado, e teve seu nomealterado para "SQL" por razões jurídicas.
SQL e SGBD 
Atualmente, a linguagem SQL assume um papel muito importante nos sistemas de gerenciamento de banco de dados, podendo ter muitos enfoques: 
●Linguagem interativa de consulta(query AdHoc): por meio decomandos SQL, os usuários podem montar consultas poderosas sem anecessidade da criação de um programa, podendo utilizar Forms ouferramentas de montagem de relatório;
SQL e SGBD 
●Linguagem de programação para acesso a banco de dados:comandos SQL embutidos em programas de aplicação que acessam osdados armazenados; 
●Linguagem de administração de banco de dados: o responsávelpela administração do banco de dados (DBA) pode utilizarcomandos SQL para realizar suas tarefas; 
●Linguagem cliente/servidor: os programas (cliente) dos computadorespessoais usam comandos SQL para se comunicarem por meio de uma redelocal, compartilhando os dados armazenados em um único local (servidor).
SQL e SGBD 
●Linguagem para banco de dados distribuído: auxilia nadistribuição dos dados por meio de vários nós conectados ao sistema decomputação. Auxilia também na comunicação de dados com outrossistemas; 
●Caminho de acesso a outros bancos de dados em diferentesmáquinas: auxilia na conversão entre diferentes produtosde banco de dados colocados em diferentes máquinas (de micro atémainframe).
SQL e SGBD 
Por ser uma linguagem de numerosas aplicações, a SQL pode manipular objetos de diferentes classes entre as funções de um SGBD: 
●Definição de dados (DDL): permite ao usuário a definição da estrutura e organização dos dados armazenados, e as relações que existem entre eles; 
●Manipulação de dados (DML): permite ao usuário ou a um programa deaplicação, a inclusão, remoção, seleção ou atualização de dadospreviamente armazenados no banco;
SQL e SGBD 
●Controle de acesso: protege os dados de manipulações não autorizadas; 
●Compartilhamento de dados: coordena o compartilhamento dos dadospor usuários concorrentes, sem contudo interferir na ação de cada umdeles; 
●Integridade dos dados: auxilia no processo de definição da integridadedos dados, protegendo contra corrupções, inconsistências e falhas dosistema de computação.
Vantagens da SQL 
●Independência de fabricante-A SQL é oferecida em praticamente todos os SGBD's, e os que ainda não têm estão se encaminhando para lá. Com isso posso mudar de SGBD sem me preocupar com o novo que vai chegar; 
●Portabilidade entre computadores-A SQL pode ser utilizada desde um computador pessoal, passando por uma estação de trabalho, até um computador de grande porte; 
●Redução dos custos com treinamento-Baseado no item anterior, as aplicações podem se movimentar de um ambiente para o outro sem que seja necessária uma reciclagem da equipe de
Vantagens da SQL 
●Inglês estruturado de alto nível-A SQL é formada por um conjunto bem simples de sentenças em inglês, oferecendo um rápido e fácil entendimento; 
●Consulta interativa-A SQL prove um acesso rápido aos dadosfornecendo respostas ao usuário, a questões complexas, em minutos ousegundos; 
●Múltiplas visões dos dados-A SQL permite ao criador do banco de dadoslevar diferentes visões dos dados a diferentes usuários; 
●Definição dinâmica dos dados-Por meio da SQL, podem-se alterar,expandir ou incluir, dinamicamente, as estruturas dos dado armazenadoscom a máxima flexibilidade;
Desvantagens da SQL 
●A padronização leva a uma, natural, inibição da criatividade, pois quemdesenvolve aplicações fica preso a soluções padronizadas não podendosofrer melhorias ou alterações; 
●A SQL está longe de ser uma linguagem relacional ideal: 
○Falta de ortogonalidade nas expressões, funções embutidas,variáveis indicadoras, referência a dados correntes, constanteNULL, conjuntos vazios, etc;
Desvantagens da SQL 
○Definição formal da linguagem após sua criação; 
○Discordância com as linguagens hospedeiras; 
○Falta de algumas funções; 
○Erros (valores nulos, índices únicos, cláusula FROM, etc); 
○Não dá suporte a alguns aspectos do modelo relacionai (atribuiçãode relação, join explícito, domínios, etc):
Exemplo 
Para a exemplificação do uso de SQL, utilizaremos o seguinte modelo:
Criação de Banco de Dados 
Para podermos criar e inserir as tabelas de uma aplicação em Banco de Dados, dependendo do ambiente de SGBD que estivermos utilizando, criar o DATABASE, ou seja criar um banco de dados no qual estarão residentes as tabelas de nosso sistema. 
Sintaxe 
CREATE DATABASE <database> 
Exemplo 
CREATE DATABASE vendas
Criação de Tabelas 
Sintaxe 
CREATE TABLE <tabela> 
(<descrição das colunas>); 
(<descrição das chaves>);
Criação de Tabelas 
Exemplo 
CREATE TABLE CLIENTE 
( 
Código_clientesmallint not null unique, 
nome_cliente char(20), 
endereço char(30), 
cidade char(15), 
CEP char(8), 
UF char(2), 
CGC char(20), 
IEchar(20) 
);
Criação de Tabelas 
Exemplo 
CREATE TABLE VENDEDOR 
( 
código_vendedor smallint not null, 
nome_vendedor char(20), 
salário_fixo money, 
faixa_comissão char(l) 
PRIMARY KEY (codigo_vendedor) 
);
Criação de Tabelas 
Exemplo 
CREATE TABLE PRODUTO 
( 
código_produto smallint not null unique, 
unidade char(3), 
descrição_ produto char(30), 
val_unit money 
);
Criação de Tabelas 
Exemplo 
CREATE TABLE PEDIDO 
( 
num_pedidoint not null unique, 
prazo_entrega smallint not null, 
código_cliente smallint not null, 
código_vendedor smallint not null, 
FOREIGN KEY (código_cliente) 
REFERENCES CLIENTE, 
FOREIGN KEY (código_vendedor) 
REFERENCES VENDEDOR 
);
Criação de Tabelas 
Exemplo 
CREATE TABLE ITEM_DO_PEDIDO 
( 
num_pedido int not null unique, 
código_produto smallint not null unique, 
quantidade decimal, 
FOREIGN KEY (num_pedido) 
REFERENCES PEDIDO, 
FOREIGN KEY (código_produto) 
REFERENCES PRODUTO 
);
Apagar Tabelas 
Para eliminar uma tabela criada, é utilizado o comando DROP. 
Sintaxe: 
DROP TABLE <tabela>; 
Exemplo 
DROP TABLEPEDIDO; 
elimina a tabela de pedidos que foi previamente criada, seus dados e suas referências a outras tabelas.
Selecionando dados de Tabelas 
Uma das operações mais comuns, realizadas sobre um banco de dados, é examinar (selecionar) as informações armazenadas. 
Essas operações são realizadas por meio do comandoSELECT 
1.SELECT: Especifica as colunas da tabela que queremos selecionar; 
2.FROM: Especifica as tabelas; 
3.WHERE: Especifica as linhas.
Selecionando dados de Tabelas 
Sintaxe 
select <nome(s) da(s) coluna( s )> 
from<tabela>; 
Exemplo 
SELECT CGC, nome_cliente, endereço 
FROM cliente;
Selecionando dados de Tabelas 
A cláusula WHEREem um comando SELECT especifica quais linhas queremos obter, baseada em condições de seleção. 
Sintaxe 
SELECT <nome(s) da(s) coluna(s)> FROM <tabela> WHERE<nome da coluna> <operador> <valor>; 
Exemplo 
SELECT nome_cliente 
FROM cliente 
WHERE cidade = 'Niterói';
Selecionando dados de Tabelas 
Operadores de Comparação 
●= Igual 
●<> ou != diferente 
●< menor do que 
●> maior do que 
●>= maior ou igual do que 
●!> não maior 
●!< não menor 
●<= menor ou igual do que 
Quando a coluna é do tipo caractere, o <valor> deve estar entre aspas ('). Exemplo: 'PARAFUSO'
Selecionando dados de Tabelas 
Operadores Lógicos 
●AND: “e” lógico 
●OR: “ou” lógico 
●NOT: negação 
Exemplo 
SELECT descrição_produto 
FROM produto 
WHERE unidade = 'M' 
AND val_unit = 1.05;
Selecionando dados de Tabelas 
Operadores baseados em string de caracteres LIKE eNOT LIKE 
Sintaxe 
WHERE <nome da coluna> LIKE <valor>; WHERE <nome da coluna> NOT LIKE <valor>; 
Simbolos 
%substitui uma palavra 
_substitui um caractere
Selecionando dados de Tabelas 
Exemplo 
LIKE 'LÁPIS %'pode retornar: 
•'LÁPIS PRETO', 
•'LÁPIS CERA', 
•'LÁPIS BORRACHA' 
LIKE 'BROCA N_'pode retornar: 
•'BROCA NI', 
•'BROCA N9', 
•'BROCA N3'
Selecionando dados de Tabelas 
Exemplo 
SELECT Código_vendedor, nome_vendedor 
FROM vendedor 
WHERE nome_vendedor NOT LIKE 'Jo%';
Selecionando dados de Tabelas 
Operadores baseados em listas IN eNOT IN 
●WHERE <nome da coluna> IN <valores>; 
●WHERE <nome da coluna> NOT IN <valores>; 
Esses operadores pesquisam registros que estão ou não contidos no conjuntode<valores>fornecido. 
Estes operadores minimizam o uso dos operadores 
=, <>,AND e OR.
Selecionando dados de Tabelas 
Exemplo 
●SELECT nome_vendedor 
●FROM vendedor 
●WHERE faixa_comissão IN ('A','B');
Selecionando dados de Tabelas 
Operadores baseados em valores desconhecidos IS NULLeIS NOT NULL 
●WHERE <nome da coluna> IS NULL; 
●WHERE <nome da coluna> IS NOT NULL; 
A utilização do valor nulo (NULL)é muito problemática, pois cadaimplementação da linguagem pode adotar qualquer representação para o valor nulo. 
O resultado da aplicação destes operadores permite o tratamento de valoresnulos em colunas de uma tabela, selecionando as linhas correspondentes.
Selecionando dados de Tabelas 
Exemplo 
SELECT * 
FROM cliente 
WHERE IE IS NULL;
Ordenando Dados Selecionados 
A SQL prevê a cláusula ORDER BYpara realizar uma ordenação dos dadosselecionados. 
Sintaxe 
SELECT <nome da(s) coluna(s)> 
FROM <tabela> 
WHERE <condição(ões)> > 
ORDER BY <nome da coluna> ASC <ou> DESC 
<ou> 
ORDER BY <número da coluna>ASC <ou> DESC
Ordenando Dados Selecionados 
Exemplo 
SELECT nome_cliente, cidade, UF 
FROM cliente 
ORDER BY UF DESC, cidade DESC;
Adicionando registros 
Sintaxe 
INSERT INTO <nome da tabela> 
<nome da(s) coluna(s)>) 
VALUES (<valores>); 
Exemplo 
INSERT into produto 
VALUES (108,'Parafuso','Kg',1.25); 
Se não especificados os nomes de colunas, essa lista de valores deverá estar naordem das colunas definidas no comando CREATE TABLE.
Adicionando registros usando SELECT 
Sintaxe 
INSERT INTO <nome da tabela> 
(<nome da(s) coluna(s)>) 
SELECT <nome da(s) coluna(s)> 
FROM <nome da tabela> WHERE<condição>; 
Exemplo 
INSERT into cliente (cod_cliente,nome_cliente) 
SELECT cod_vendedor,nome_vendedor/COUNT(*) 
FROM vendedor, pedido 
WHERE Vendedor.cod_vendedor =Pedido.cod_vendedor 
HAVING COUNT(*) > 50;
Atualizando um registro 
Sintaxe 
UPDATE <nome da tabela> 
SET <nome da(s) coluna(s)> = valor 
WHERE <condição>; 
Exemplo 
UPDATE produto 
SET val_unit = 1.62 
WHERE descrição = 'Parafuso';
Atualizando um registro 
Exemplo 
UPDATE Produto 
SET Vendas_acumuladas = 0 
UPDATE Produto 
SET Vendas_acumuladas = 
(SELECTSUM (quantidade) 
FROM Item_de_pedido);
Apagando registros 
Sintaxe 
DELETE FROM <nome da tabela> 
WHERE <condição>; 
Exemplo 
DELETE FROM vendedor 
WHERE faixa_comissão IS NULL;
Agregação sobre Conjuntos 
Valor máximo (MAX) e mínimo (MIN) 
SELECT MIN(salário_fixo), 
MAX(salário_fixo) 
FROM vendedor; 
Totalizador (SUM) 
SELECT SUM(quantidade), 
FROM item_pedido 
WHERE código_produto = '78';
Agregação sobre Conjuntos 
Valor médio (AVG) 
SELECT AVG(salário_fixo), 
FROM vendedor; 
Quantidade de Registros (COUNT) 
SELECT COUNT(*), 
FROM vendedor 
WHERE salário_fixo > 2500;
Agregação sobre Conjuntos 
Valores distintos (DISTINCT) 
SELECT DISTINCT unidade, 
FROM produto;
Agrupamentos 
Agrupar (GROUP BY) 
SELECT num_pedido, 
total_produtos = COUNT(*) 
FROM item_de_pedido 
GROUP 
BY num_pedido; 
●Geralmente, a cláusula GROUP BYé utilizada em conjunto com asoperações COUNT eAVG.
Dados de Várias Tabelas -JOINS 
Para que possamos recuperar informações de um banco de dados, temos,muitas vezes, a necessidade de acessar simultaneamente várias tabelasrelacionadas entre si. 
Algumas dessas consultas necessitam realizar uma junção(JOIN) entre tabelas, para poder extrair dessa junção as informações necessáriaspara a consulta formulada.
Sintaxe 
SELECT <nome_da_tabela.nome_da_coluna 
[nome_da_tabela.nome_da_coluna .... ]> 
FROM {nome_da_tabela [tipo de join] 
nome_da_tabela ON condição de pesquisa 
WHERE [condição de pesquisa .. ] 
Dados de Várias Tabelas -JOINS
Tipos de JOIN 
●INNER JOIN: serão incluídas somente aslinhas que satisfazem a condição do join. 
●CROSS JOIN: incluímos cada uma da combinações de todasas linhas entre as tabelas. 
●OUTER JOIN: incluímos as linhas quesatisfazem a condição de JOIN e as linhas restantes de uma das tabelas do JOIN. 
Dados de Várias Tabelas -JOINS
Exemplo INNER JOIN 
SELECT Cliente.nome_cliente, 
pedido.cod_cliente, 
pedido.num_pedido 
FROM cliente INNER JOIN pedido ON 
cliente.codigo_do_cliente = pedido.codigo_do_cliente 
Exemplo CROSS JOIN 
SELECT nome_cliente, 
pedido.cod_cliente,num_pedido 
FROM cliente CROSS JOIN pedido 
Dados de Várias Tabelas -JOINS
OUTER JOIN 
É a seleção em que são restritas as linhas que interessam em uma tabela, massão consideradas todas as linhas de outra tabela. 
É de muita utilidade quando queremos verificar se existem membros órfãosem um banco de dados, ou seja, chave primária e chave estrangeira sem sincronia ousimetria. 
Um OUTER JOINsomente pode ser realizado entre duas tabelas, não maisque duas tabelas. 
Dados de Várias Tabelas -JOINS
A sintaxe SQL possui três tipos de qualificadores para o OUTER JOIN: 
●LEFT OUTER JOIN: São incluídas todas as linhas da tabela do primeironome de tabela ( a tabela mais à esquerda da expressão). 
●RIGHT OUTER JOIN: São incluídas todas as linhas da tabela do segundonome de tabela da expressão (tabelas mais à direita da expressão). 
●FULL OUTER JOIN: São incluídas as linhas que não satisfazem a expressãotanto da primeira tabela quanto da segunda tabela. 
Dados de Várias Tabelas -JOINS
Exemplo 
SELECT nome_cliente, 
pedido.cod_cliente, 
num_pedido 
FROM cliente LEFT OUTER JOIN pedido ON 
cliente.codigo_do_cliente = 
Pedido.codigo_do_cliente 
Dados de Várias Tabelas -JOINS
Subquerys 
É quando o resultado de uma consulta é utilizado por outra consulta, de forma encadeada e contida no mesmo comando SQL. 
Exemplo 
SELECT descrição 
FROM produto WHERE 
cod_produto IN (SELECT 
cod_produto FROM 
item_pedido WHERE 
quantidade = 10)
Utilizando VIEWS 
Uma VIEW é um caminho alternativo para visualizarmos dados derivados deuma ou mais tabelas em um banco de dados. 
Um usuário pode necessitar ver partesselecionadas de dados com nome, departamento e supervisor, porém não visualizarsalário. 
VIEWS também podem ser utilizadas para informação calculada ou derivada,como preço total de um item de pedido que é calculado por meio da multiplicação de 
quantidade e preço unitário.
Utilizando VIEWS 
Sintaxe 
CREATE VIEW <nome da VIEW> 
(<nome da(s) coluna(s)>) AS<nome da view> 
SELECT <nome da(s) coluna(s)> 
FROM <nome da tabela> 
WHERE<condição>; 
Exemplo 
CREATE VIEW PR_metro 
(cod_PR_metro,descrição, unidade) AS SELECT 
cod_produto, descrição, unidade 
FROMproduto 
WHERE unidade = 'M';
Privilégios de acesso 
Muitos sistemas de banco de dados relacionais podem ser acessados pordiversos usuários. Cada usuário tem uma determinada necessidade em relação aosdados armazenados. 
De acordo com o projeto do banco de dados, alguns usuários sópodem consultar alguns dados, outros podem atualizar, outros podem inserir, etc. 
Paraque o dado fique protegido do uso indevido de qualquer usuário, a linguagem SQLpermite a definição dos privilégios que cada um pode ter em relação às tabelas criadasno banco de dados.
GRANT -Garantir 
Quando uma tabela/view é criada, o nome do usuário que a criou é anexado,internamente, ao nome da tabela. 
O criador da tabela/view tem total privilégio sobre a tabela criada podendo disponibilizar qualquer privilégio para outros usuários pelo comando GRANT: 
Sintaxe 
GRANT {ALL [Lista de privilégios]} 
ON {nome databela/view [lista de colunas]} 
TO {PUBLIB [listade usuários]} 
[WITH GRANT OPTION]
GRANT -Garantir 
Lista de opções de privilégios: 
●SELECT: pode executar uma consulta sobre atabela 
●INSERT: pode executar uma inserção sobre atabela 
●DELETE: pode apagar registros da tabela 
●UPDATE: pode modificar registros na tabela 
●ALL PRIVILEGES/ALL: pode executar qualquer operação sobrea tabela 
●<usuário>: nome do usuário que vai receber osprivilégios. 
●PUBLIC: concede os privilégios especificados a todos os usuários do ambiente.
GRANT -Garantir 
Exemplos 
●GRANT SELECT ON Produto TO Maurício; permite só consultas ao usuárioMaurício sobre a tabela produto; 
●GRANT Select, insert, update on pedido to tele_mark; concede ao usuáriotele_mark (entrada de pedidos), os privilégios de seleção, inserção e alteração sobre atabela PEDIDO; 
●GRANT All privileges on cliente to public;permite todos os privilégios atodos os usuários sobre a tabela cliente; 
●GRANT Select on cliente to Felipe, Maurício;concede aos usuáriosMaurício e Felipe, o privilégio de seleção sobre a tabela CLIENTE.
REVOKE -Revogar 
Da mesma forma que o criador da tabela pode garantir (GRANT) osprivilégios de acesso aos outros usuários, ele pode revogar esses privilégios por meiodo comando REVOKE. 
Sintaxe 
REVOKE [ lista de privilégios ]ON [nome da tabela/view] 
FROMlista de usuários]; 
Exemplo 
REVOKE selectON produto FROM Mauricio;
Índices 
Índice é uma estrutura que permite rápido acesso às linhas de uma tabela, combase nos valores de uma ou mais colunas. 
O índice é simplesmente uma outra tabela nobanco de dados, na qual estão armazenados valores e ponteiros, arrumados de formaascendente ou descendente. 
O SGBD utiliza os índices para pesquisar rapidamente um 
determinado valor dentro do banco de dados.
Check List para Criação de Índices 
✓Criar índice sobre coisas que vamos pesquisar com frequência. 
✓Indexe suas chaves estrangeiras quando precisar de "joins" mais eficientes eperformantes. 
✓As colunas que são regularmente utilizadas em joins devem ser indexadasporque o sistema pode performar esses joins de forma muito mais rápida. 
✓Crie índice sempre em colunas que são pesquisas por um intervalo de valores. 
✓E por fim, crie índice sempre em colunas que são utilizadas em cláusulas WHERE.
Quando não criar índices 
Se a expectativa de retorno de linhas de uma consulta for muito alta índices não devem ser utilizados. Por exemplo: se uma coluna tem somente dois valores: Masculino e Feminino, uma consulta a essa coluna sempre vai retornar uma alta quantidade de linhas. Como é um índice não agrupado, poderá ocupar muito espaço e pode não ser utilizado para consultas.
Criando Índices 
Cada índice é aplicado a uma tabela, especificando uma ou mais colunas dessatabela. 
Sintaxe 
CREATE [UNIQUE] INDEX <nome do índice> 
ON<nome da tabela> (<coluna(s)>); 
Exemplo 
CREATE INDEX nome_pro 
ONproduto (descrição);
Criando Índices 
A cláusula UNIQUE é opcional e define que para aquela coluna não existirãovalores duplicados, ou seja, todos os dados armazenados na coluna serão únicos. 
A junção do índice unique e da especificação NOT NULL para uma colunadefine a chave primária da tabela quanto ao aspecto lógico, pois uma chave primária,como vimos neste livro, não pode ser NULA.
Eliminando Índices 
Da mesma forma que um índice é criado, ele pode ser eliminado, dependendodas necessidades do projeto do banco de dados. 
Sintaxe 
DROP index <nome do índice>; 
Exemplos 
DROP index nome_pro; 
DROP index ped_pro;
Bibliografia 
DATE, C J. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. 
MACHADO, F. N. R. e ABREU, M. P.Projeto de Banco de Dados. São Paulo: Érica, 2004.

Banco de Dados

  • 1.
    Banco de Dados Superior em Tecnologia de Jogos Digitais Daniel Paz de Araújo [email protected]
  • 2.
  • 3.
    O que éum banco de dados Em essência, um sistema de bancos de dados é apenas um sistema computadorizado de armazenamento de registros. O banco de dados pode, ele próprio, ser visto como o equivalente eletrônico de um armário de arquivamento. Em outras palavras, é um repositório ou recipiente para uma coleção de arquivos de dados computadorizados.
  • 4.
    Operações Os usuáriosdo sistema poderão executar diversas operações sobre tais arquivos —por exemplo: ●Acrescentar novos arquivos, vazios, ao banco de dados. ●Inserir novos dados em arquivos existentes. ●Buscar dados de arquivos existentes. ●Alterar dados em arquivos existentes. ●Eliminar dados de arquivos existentes. ●Remover arquivos existentes do banco de dados.
  • 5.
    Sistemas de Bancode Dados Os sistemas de bancos de dados estão disponíveis em máquinas que vão desde micros (portáteis) até computadores de grande porte. Sistemas em grandes equipamentos (“sistemas grandes”) tendem a ser multiusuários (de usuários múltiplos), ao passo que os sistemas de máquinas menores (“sistemas pequenos”) tendem a ser de usuário único (monousuário).
  • 6.
    Sistemas de Bancode Dados Um sistema de monousuário é um sistema em que no máximo um usuário pode ter acesso ao banco de dados em qualquer instante determinado; um sistema multiusuário é um sistema em que muitos usuários podem obter acesso ao banco de dados ao mesmo tempo.
  • 7.
    SGBD Entre obanco de dados físico —isto é, os dados de fato armazenados —e os usuários do sistema há uma camada de software, conhecida como o gerenciador do banco de dados ou servidor de banco de dados ou ainda, com maior frequência, sistema de gerenciamento de bancos de dados (SGBD).
  • 8.
    SGBD O SGBDé de longe o componente de software mais importante de todo o sistema, mas não é o único. Outros componentes incluem utilitários, ferramentas para desenvolvimento de aplicações, auxílio em projetos, geradores de relatórios e o gerenciador de transações ou monitor de TP (transaction processing - processamento de transações). O termo SGBD também costuma se referir genericamente a algum produto particular de algum fornecedor particular.
  • 9.
    Usuáriosprogramadoresde aplicações Responsáveispela elaboração de programas aplicativos de bancos de dados. Tais programas obtêm acesso ao banco de dados emitindo a solicitação apropriada —em geral, uma instrução de SQL —ao SGBD.
  • 10.
    Usuários finais Interagemcom o sistema a partir de terminais ou estações de trabalho on-line. Pode obter acesso ao banco de dados por meio de aplicações, ou pode usar uma interface fornecida como parte integrante do software do sistema de bancos de dados.
  • 11.
    UsuáriosAdministradoresde BD Responsávelpela organização do sistema de modo a obter o desempenho que seja “o melhor para a empresa”.
  • 12.
    Bibliografia DATE, CJ. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. KORTH, H F e SILBERSCHATZ, A. Sistema de Bando de Dados. Rio de Janeiro: McGraw Hill, 1999.
  • 13.
  • 14.
    Níveis Nível interno(tambémconhecido como nível físico) é o mais próximo do meio de armazenamento físico —ou seja, é aquele que se ocupa do modo como os dados são fisicamente armazenados.
  • 15.
    Níveis Nível externo(tambémconhecido como nível lógico do usuário) é o mais próximo dos usuários —ou seja, é aquele que se ocupa do modo como os dados são vistos por usuários individuais.
  • 16.
    Níveis Nível conceitual(tambémconhecido como nível lógico comunitário, ou às vezes apenas nível indireto, sem qualificação) é um nível de “simulação” entre os outros dois.
  • 17.
    Níveis O nívelexterno se preocupa com as percepções dos usuários individuais, enquanto o nível conceitualestá preocupado com uma percepção da comunidadede usuários. A maioria dos usuários não estará interessada em todo o banco de dados, mas somente em alguma porção restrita do banco de dados. ●Nível externo:visões de usuários individuais ●Nível conceitual:visão da comunidade de usuários ●Nível interno:visão do meio de armazenamento
  • 18.
    Mapeamento Além dostrês níveis básicos, a arquitetura envolve, em geral, certos mapeamentos —um mapeamento conceitual interno e vários mapeamentos externos/conceituais. O mapeamento conceitual internodefine a correspondência entre a visão conceituale o banco de dados armazenado; ele especifica o modo como os registros e campos conceituais são representados no nível interno.
  • 19.
    SGBD O sistemadegerenciamentode bancosde dados (SGBD) é o software quetratade todoo acessoaobanco de dados: 1.Um usuáriofazum pedidode acessousandoumadeterminadasublinguagemde dados (emgeral,SQL). 2.O SGBD interceptao pedidoe o analisa. 3.O SGBD inspeciona, porsuavez, o esquemaexterno(ouas versõesobjetodesseesquema) para esseusuário, o mapeamentoexterno/conceitualcorrespondente, o esquemaconceitual, o mapeamentoconceitual/internoe a definiçãoda estruturade armazenamento. 4.O SGBD executaas operaçõesnecessáriassobreo banco de dados armazenado.
  • 20.
    SGBD O SGBDdevesercapazde lidarcom solicitaçõesdo usuáriopara buscar, atualizarouexcluirdados existentesno banco de dados, oupara acrescentarnovosdados aobanco de dados. Em outraspalavras, o SGBD deveincluirum componenteprocessadorde DML oucompiladorde DML para lidarcom a linguagemde manipulaçãode dados (DML —data manipulation language).
  • 21.
    Comunicação de Dados As requisições a bancos de dados de um usuário final são, na verdade, transmitidas do usuário —que pode estar fisicamente afastado do próprio sistema de banco de dados, e daí até o SGBD, sob a forma de mensagens de comunicação. De modo semelhante, as respostas do SGBD e da aplicação on-line para o usuário também são transmitidas sob a forma de mensagens.
  • 22.
    Comunicação de Dados Todas essas transmissões de mensagens têm lugar sob o controle de outro componente de software, o gerenciador de comunicações de dados (gerenciador DC —Data Communications).
  • 23.
    Comunicação de Dados O gerenciador DC não faz parte do SGBD, mas é um sistema autônomo. Porém, como o gerenciador DC e o SGBD são claramente obrigados a trabalhar em harmonia, às vezes os dois são considerados parceiros de igual nível em um empreendimento cooperativo de nível mais alto, denominado sistema de banco de dados / comunicações de dados (sistema DB/DC), no qual o SGBD toma conta do banco de dados e o gerenciador DC manipula todas as mensagens de e para o SGBD ou, mais precisamente, de e para aplicações que utilizam o SGBD.
  • 24.
    Arquitetura Cliente/Servidor Osclientessãoas diversas aplicações executadas sobre o SGBD —tanto aplicações escritas por usuários quanto aplicações internas, ou seja, aplicações fornecidas pelo fabricante do SGBD ou por produtores independentes. O servidor é o próprio SGBD. Ele admite todas as funções básicas de SGBDs: definição de dados, manipulação de dados, segurança e integridade de dados, e assim por diante. Em particular, ele oferece todo o suporte de nível externo, conceitual e interno. Assim, o termo “servidor” neste contexto é tão- somente um outro nome para o SGBD.
  • 25.
    Ferramentas fornecidas pelofabricante ●Processadores de linguagem de consulta. ●Geradores de relatórios. ●Subsistemas gráficos de negócios. ●Planilhas eletrônicas. ●Processadores de linguagem natural. ●Pacotes estatísticos.
  • 26.
    Ferramentas fornecidas pelofabricante ●Ferramentas para gerenciamento de cópias ou “extração de dados”. ●Geradores de aplicações. ●Outras ferramentas para desenvolvimento de aplicações, inclusive produtos de engenharia de software auxiliada pelo computador (CASE — computer-aided software engineering).
  • 27.
    Dicionário de Dados Muitas organizações usam sistemas de dicionário de dados ou repositórios de informação, mini SGBDs que administram metadados —isto é, dados que descrevem a estrutura dos dados, suas restrições, suas aplicações, suas autorizações, e assim por diante. Eles são usados frequentemente como ferramenta integrante para administração dos recursos de informação.
  • 28.
    Dicionário de Dados Um sistema de dicionário de dados útil devearmazenar e administrar os seguintes tipos de informação: ●Descrição dos esquemas do sistema de banco de dados. ●Informação detalhada do projeto de banco de dados físico, como estruturas de armazenamento, caminhos deacesso e tamanhos de arquivo e registro. ●Descrições dos usuários do banco de dados, suas responsabilidades e autoridade de acesso.
  • 29.
    Dicionário de Dados ●Descrições em alto nível das transações do banco de dados, das aplicações e dos relacionamentos entre usuários etransações. ●Relacionamento entre as transações do banco de dados e os itens de dados referenciados por elas. É útil para determinar quais transações são afetadas quando definições de dados forem alteradas. ●Estatísticas de uso, como freqüências de consultas e transações, bem como volume de acesso a uma dada porçãode dados.
  • 30.
    Bibliografia DATE, CJ. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. KORTH, H F e SILBERSCHATZ, A. Sistema de Bando de Dados. Rio de Janeiro: McGraw Hill, 1999. ELMASRI R., NAVATHE S.: Sistemas de Banco de Dados. São Paulo: Person, 2005
  • 31.
    Modelos e Linguagens de Banco de Dados
  • 32.
    Modelos de Dados Coleção de ferramentas conceituais para descrever dados, relações de dados, semântica de dados e restrições de consistência. Oferece uma maneira de descrever o projeto de um banco de dados no nivel físico, lógico e conceitual.
  • 33.
    Modelo Relacional ●Usauma coleção de tabelas para representar os dados e as relações entre eles. ●Cada tabela possui diversas colunas, e cada coluna possui um nome único. ●Cada tabela contém registros de um tipo específico. ●Cada tipo de registro define um número fixo de campos, ou atributos.
  • 34.
    Modelo de Entidade/ Relacionamento ●As colunas da tabela correspondem aos atributos do tipo de registro. ●É baseado em uma percepção de um mundo real que consiste em uma coleção de objetos básicos, chamadosentidades, e asrelaçõesentre esses objetos. ●Uma entidade é uma "coisa" ou "objeto" no mundo real que é distinguível dos outros objetos.
  • 35.
    Modelo de DadosBaseado em Objeto ●Pode ser visto como uma extensão do modelo Entidade Relacionamento com noções de encapsulamento, métodos (funções) e identidade de objeto. ●Combina recursos do modelo de dados orientado a objeto e do modelo de dados relacional.
  • 36.
    Modelo de DadosSemi-Estruturado ●Permite a especificação dos dados em que itens de dados individuais do mesmo tipo possam ser diferentes conjuntos de atributos. ●É o oposto dos modelos de dados mencionados anteriormente, em que todos os itens de dados de um determinado tipo precisam ter o mesmo conjunto de atributos. ●A Extensible Markup Language (XML) é amplamente usada para representar dados semi-estruturados.
  • 37.
    Linguagens de Bancode Dados ●Um sistema de banco de dados fornece uma linguagem de definição de dadosparaespecificar o esquema de banco de dados e umalinguagem de manipulação de dadospara expressar as consultas e atualizações de banco de dados. ●As linguagens de definição de dados e de manipulação de dados não são duas linguagens separadas, mas simplesmente formam partes de uma única linguagem de banco de dados, como a amplamente usada linguagem SQL.
  • 38.
    Linguagem de Manipulaçãode Dados Umalinguagem de manipulação de dados (DML) permite aos usuáriso acessar ou manipular dados conforme são organizados pelo modelo de dados apropriados. Os tipos de acesso são: ●Recuperação de informações armazenadas no banco de dados ●Inserção de novas informações no banco de dados ●Exclusão de informações do banco de dados ●Modificação de informações armazenadas no banco de dados
  • 39.
    Linguagem de Definiçãode Dados Especificamos a estrutura de armazenamento e métodos de acesso usados pelo sistema de banco de dados por um conjunto de instruções em um tipo especial delinguagem de definição de dados -DDL. ●Restrições de domínio: possíveis valores que podem ser associados com cada atributo ●Integridade referencial: garantir que um valor que aparece em uma relação também apareça para um certo conjunto de atributos em outra relação
  • 40.
    Linguagem de Definiçãode Dados ●Assertivas: qualquer condição que o banco de dados sempre precisa satisfazer ●Autorização: diferenciar entre usuários e tipos de acesso que podem realizar
  • 41.
    Bibliografia DATE, CJ. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. KORTH, H F e SILBERSCHATZ, A. Sistema de Bando de Dados. Rio de Janeiro: McGraw Hill, 1999.
  • 42.
    MER: Modelo de Entidade / Relacionamento
  • 43.
    MER O modelode dados de entidade/relacionamento (E-R ou MER) é baseado em uma percepção de um mundo real que consiste em uma coleção de objetos básicos, chamadosentidades,e derelaçõesentre esses objetos.
  • 44.
    MER Uma entidadeé uma "coisa" ou "objeto" no mundo real que é distinguível de outros objetos. As entidades são descritas em um banco de dados por um conjunto deatributosque as caracterizam e/ou identificam. Uma relação é uma associação entre várias entidades.
  • 45.
    MER A estruturalógica geral (esquema) de um banco de dados pode ser expressa graficamente por um diagrama E-R, constituído dos seguintes componentes: ●Retângulos,que representam conjuntos de entidade ●Elipses, que representam atributos. ●Losangos, que representam conjuntos de relações entre um membro de cada um dos vários conjuntos de entidade. ●Linhas, que ligam atributos a conjuntos de entidade e conjuntos de entidade e relações.
  • 46.
    MER -Exemplo cliente conta depositante saldo n. conta id cliente nome cliente rua cliente cidade cliente
  • 47.
    Bibliografia DATE, CJ. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. KORTH, H F e SILBERSCHATZ, A. Sistema de Bando de Dados. Rio de Janeiro: McGraw Hill, 1999.
  • 48.
  • 49.
    Cardinalidade As cardinalidadesde mapeamento, ou fatores de cadinalidade, expressam o número de entidades ao qual outra entidade pode ser associada por um conjunto de relacionamento. As cardinalidades de mapeamento são uteis principalmente em descrever conjuntos de relacionamento binários, embora possam contribuir para a descrição dos conjuntos de relacionamento que envolvem mais de dois conjuntos de entidades.
  • 50.
    Um-para-um Para umconjunto de relacionamento binário R entre conjuntos de entidades A e B, a cardinalidade de mapeamento precisa ser uma das seguintes: ●Um-para-um: uma entidade em A é associada a no máximo uma entidade em B, e uma entidade em B é associada a no máximo uma entidade em A. a1 a2 a3 a4 A b2 b3 b4 B b1
  • 51.
  • 52.
    Um-para-muitos ●Um-para-muitos: Umaentidade em A é associada a qualquer número de entidades (zero ou mais) em B.Entretanto, uma entidade em B pode ser associada a no máximo uma entidade em A. a1 a2 a3 A b2 b3 b4 B b1 b5
  • 53.
  • 54.
    Muitos-para-um ●Muitos-para-um: umaentidade em A é associada a no máximo uma entidade em B. Entretando, uma entidade em B pode ser associada a qualquer número de entidades (zero ou mais) em A. a1 a2 a3 a4 A b2 b3 b4 B b1
  • 55.
  • 56.
    Muitos-para-muitos ●Muitos-para-muitos: Umaentidade em A é associada a qualquer número de entidades (zero ou mais) em B, e uma entidade em B pode ser associada a qualquer número de entidades (zero ou mais) em A. a1 a2 a3 A b2 b3 b4 B b1 b5
  • 57.
  • 58.
    Bibliografia DATE, CJ. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. KORTH, H F e SILBERSCHATZ, A. Sistema de Bando de Dados. Rio de Janeiro: McGraw Hill, 1999.
  • 59.
  • 60.
    Chaves É precisoter uma maneira de especificar como os registros dentro de uma determinada relação são distinguidas. Isso é expresso em termos de seus atributos. Os valores de atributos de um registro precisam ser tais que possamidentificar unicamenteo registro. Nenhum par de registros em uma relação pode ter exatamente o mesmo valor para todos os atributos.
  • 61.
    Superchave Umasuperchaveé umconjunto de um ou mais atributos que, tomados coletivamente, nos permite identificar unicamente um registro na relação. Por exemplo, o atributo id_cliente da relação clienteé suficiente para dintinguir um registro cliente de outro. Portanto, id_cliente é uma superchave. Da mesma forma, a combinação nome_cliente e id_cliente é uma superchave para a relação cliente. O atributo nome_cliente de cliente não é uma superchave porque várias pessoas poderiam ter o mesmo nome.
  • 62.
    Exemplo id_cliente nome_cliente 1 José da Silva 2 Maria Antônia 3 João Pereira 4 José da Silva
  • 63.
    Chaves candidatas Normalmente,o que nos interessa são superchaves para as quais nenhum subconjunto apropriado é uma superchave. Essas superchaves mínimas são chamadas chaves canditadas. É possível que vários conjuntos diferentes de atributos sirvam como uma chave candidata.
  • 64.
    Chaves candidatas Emboraos atributos id_cliente e nome_cliente juntos possam distinguir registros cliente, sua combinação não forma uma chave candidata, já que o atributo id_clientesozinho é uma chave candidata.
  • 65.
    Chave Primária Otermochave primáriadenota uma chave candidata que é escolhida pelo projetista de banco de dados como o principal meio de identificar registros dentro de uma relação. Uma chave (seja primária, candidata ou superchave) é uma propriedade da relação inteira, e não dos registros individuais.
  • 66.
    Chave Primária Nenhumpar de registros na relação pode ter o mesmo valor nos atributos de chave ao mesmo tempo. A chave primária deve ser escolhida de modo que seus valores de atributo nunca, ou muito raramente, sejam modificados.
  • 67.
    Chave Estrangeira Umesquema de relação, digamos, R1, pode incluir entre sues atributos a chave primária de outro esquema de relação, digamos R2. Esse atributo é chamado dechave estrangeiradeR1 referenciando R2. A relação R1 é chamada derelação referenciadorada dependência da chave estrangeira, e R2 é chamada derelação referenciadade chave estrangeira.
  • 68.
    Bibliografia DATE, CJ. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. KORTH, H F e SILBERSCHATZ, A. Sistema de Bando de Dados. Rio de Janeiro: McGraw Hill, 1999.
  • 69.
  • 70.
    Especialização Um conjuntode entidades pode incluir subagrupamentos de entidades que sejam, de algum modo, distintas de outras entidades do conjunto. Por exemplo, um conjunto de entidades dentro de um conjunto de entidades pode ter atributos que não são compartilhados por todas as entidades do conjunto de entidades.
  • 71.
    Exemplo Como exemplo,considere um conjunto de entidades pessoa, com atributosid_pessoa, nome, rua e cidade. Uma pessoa pode ser subclassificada como: ●cliente ●funcionário
  • 72.
    Exemplo Cada umdesses tipos de pessoa é descrito por um conjunto de atributos que inclui todos os atributos do conjunto de entidadespessoa,além, possivelmente, de atributos adicionais. Por exemplo, as entidadesclientepodem ser descritas adicionalmente por um atributoavaliação_crédito, enquanto entidadesfuncionáriopodem ser descritas adicionalmente pelo atributo salário.
  • 73.
    Representação Em termosde um diagrama Entidade Relacionamento, a especialização é representada por um componente triângulo rotulado ISA, que significa "is a" -é um(a). ISA pessoa id_pessoa nome rua cidade funcionário cliente avaliação_crédito salário
  • 74.
    Generalização O refinamentode um conjunto de entidades inicial em sucessivos níveis de subagrupamentos de entidades representa um processo de projeto de cimapara baixo(topdown), em quemúltiplosconjuntos de entidade são sintetizados em um conjunto de entidades de nível superior na base dos recursos comuns. Conjuntos de entidades de nível superior e inferior também podem ser designados pelos termos superclasseesubclasse, respectivamente. Para todos os fins práticos, a generalização é uma simples inversão da especialização.
  • 75.
    Especialização e Generalização ISA pessoa id_pessoa nome rua cidade funcionário cliente avaliação_ crédito salário ISA caixa secretária diretor numero_ diretor numero_ caixa horas_ semanais horas_ semanais
  • 76.
    Bibliografia DATE, CJ. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. KORTH, H F e SILBERSCHATZ, A. Sistema de Bando de Dados. Rio de Janeiro: McGraw Hill, 1999.
  • 77.
  • 78.
    Normatização O conceitode normalização foi introduzido por E. F. Codd em 1970 (primeira forma normal). Esta técnica é um processo matemático formal, que tem seus fundamentos na teoria dos conjuntos. Através deste processo pode-se, gradativamente, substituir um conjunto de entidades e relacionamentos por um outro, o qual se apresenta "purificado" em relação às anomalias de atualização (inclusão, alteração e exclusão) as quais podem causar certos problemas, tais como:
  • 79.
    Normatização ●grupos repetitivosde dados, ●dependências parciais em relação a uma chave concatenada, ●redundâncias de dados desnecessárias, ●perdas acidentais de informação, ●dificuldade na representação de fatos da realidade observada e ●dependências transitivas entre atributos.
  • 80.
    Primeira Forma Normal-1FN Cada ocorrência da chave primária deve corresponder a uma e somente uma informação de cada atributo, ou seja, a entidade não deve conter grupos repetitivos (multivalorados). Para se obter entidades na 1FN, é necessário decompor cada entidade não normalizada em tantas entidades quanto for o número de conjuntos de atributos repetitivos.
  • 81.
    Primeira Forma Normal-1FN Nas novas entidades criadas, a chave primária é a concatenação da chave primária da entidade original mais o(s) atributo(s) do grupo repetitivo visualizado(s) como chave primária deste grupo.
  • 82.
    Variação Temporal eHistórico Observamos que normalmente, ao se definir um ambiente de armazenamento de dados, seja ele um banco de dados ou não, geralmente mantém a última informação cadastrada, que às vezes, por sua própria natureza, possui um histórico de ocorrências. Mas como a atualização sempre feita sobre esta última informação, perdem-se totalmente os dados passados.
  • 83.
    Variação Temporal eHistórico Toda vez que a decisão de armazenar o histórico de algum atributo tomada, cria-se explicitamente um relacionamento de um para muitos entre a entidade que contém o atributo e a entidade criada para contei histórico deste atributo. Passa a existir então uma entidade depender contendo (no mínimo) toda data em que houve alguma alteração do atributo bem como o respectivo valor do atributo para cada alteração. A chave de entidade de histórico será concatenada, e um de seus atributos será a data referência.
  • 84.
    Dependência Funcional Dadauma entidade qualquer, dizemos que um atributo ou conjunto de atributos A é dependente funcional de um outro atributo B contido na mesma entidade, se a cada valor de B existir nas linhas da entidade em que aparece, um único valor de A. Em outras palavras, A depende funcionalmente de B. Exemplo: Na entidade PEDIDO, o atributo PRAZO-DE- ENTREGA depende funcionalmente de NUMERO-DO- PEDIDO.
  • 85.
    Dependência Funcional Totale Parcial Na ocorrência de uma chave primária concatenada, dizemos que um atributo ou conjunto de atributos depende de forma completa ou total desta chave primária concatenada, se e somente se, a cada valor da chave (e não parte dela), está associado um valor para cada atributo, ou seja, um atributo não (dependência parcial) se apresenta com dependência completa ou total quando só dependente de parte da chave primária concatenada e não dela como um todo.
  • 86.
    Dependência Funcional Totale Parcial A dependência total ou completa só ocorre quando a chave primária for composta por vários (concatenados) atributos, ou seja, em uma entidade de chave primária composta de um único atributo não ocorre este tipo de dependência.
  • 87.
    Dependência Funcional Transitiva Quando um atributo ou conjunto de atributos A depende de outro atributo B que não pertence à chave primária, mas é dependente funcional desta, dizemos que A é dependente transitivo de B. Exemplo: dependência transitiva -Na entidade PEDIDO, os atributos ENDEREÇO, CIDADE, UF, CGC e INSCRIÇÃO- ESTADUAL são dependentes transitivos do atributo CLIENTE. Nesta mesma entidade, o atributo NOME-DO-VENDEDOR é dependente transitivo do atributo CODIGO-DO-VENDEDOR.
  • 88.
    Segunda Forma Normal-2FN Devemos observar se alguma entidade possui chave primária concatenada, epara aquelas que satisfizerem esta condição, analisar se existe algum atributo ou conjunto de atributos com dependência parcial em relação a algum elemento da chaveprimária concatenada.
  • 89.
    Segunda Forma Normal-2FN Com a finalidade de tornar ainda mais estável o modelo de dados, a aplicação da 2FN sobre as entidades em observação geram novas entidades, que herdarão a chave parcial e todos os atributos que dependem desta chave parcial, ou seja, uma entidade para estar na 2FN não pode ter atributos com dependência parcial em relação à chave primária.
  • 90.
    Segunda Forma Normal-2FN Exemplo: A entidade ITEM-DO-PEDIDO apresenta uma chave primáriaconcatenada e por observação, notamos que os atributos UNIDADE-DO-PRODUTO, DESCRIÇÃO- DO-PRODUTO e VALOR-UNITARIO dependem de forma parcial do atributo CODIGO-DO-PRODUTO, que faz parte da chave Primária. Logo devemos aplicar a 2FN sobre esta entidade.
  • 91.
    Segunda Forma Normal-2FN Quando aplicamos a 2FN sobre ITEM-DO-PEDIDO, será criada a entidade PRODUTO que herdará os atributos UNIDADE-DO-PRODUTO, DESCRIÇÃO-DO-PRODUTO e VALOR-UNITÁRIO e terá comochave primária o CODIGO-DO-PRODUTO
  • 92.
    Terceira Forma Normal-3FN Uma entidade está na 3FN se nenhum de seus atributos possuí dependência transitiva em relação a outro atributo da entidade que não participe da chave primária, ou seja, não exista nenhum atributo intermediário entre a chave primária e o próprio atributo observado. Ao retirarmos a dependência transitiva, devemos criar uma nova entidade que contenha os atributos que dependem transitivamente de outro e a sua chave primária é o atributo que causou esta dependência.
  • 93.
    Terceira Forma Normal-3FN Exemplo: Na entidade PEDIDO, podemos observar que o atributo NOME-DO-VENDEDOR depende transitivamente do atributo CODIGO-DO-VENDEDOR quenão pertence à chave primária. Para eliminarmos esta anomalia devemos criar aentidade VENDEDOR, com o atributo NOME-DO- VENDEDOR e tendo como chaveprimária o atributo CODIGO-DO VENDEDOR.
  • 94.
    Forma Normal deBoyce Codd -FNBC As definições da 2FN e 3FN, desenvolvidas por Codd, não cobriam certos casos,quando três condições aparecem juntas: ●a entidade tenha várias chaves candidatas; ●estas chaves candidatas sejam concatenadas (mais de umatributo); ●as chaves concatenadas compartilham pelo menos um atributo comum.
  • 95.
    Forma Normal deBoyce Codd -FNBC FNBC é uma extensão da 3FN, que não resolvia certas anomalias presentes na informação contida em uma entidade. O problema foi observado porque a 2FN e a 3FN só tratavam dos casos de dependência parcial e transitiva de atributos fora de qualquer chave, porém quando oatributo observado estiver contido em uma chave (primária ou candidata), ele não écaptado pela verificação da 2FN e 3FN.
  • 96.
    Forma Normal deBoyce Codd -FNBC A definição da FNBC é a seguinte: uma entidade está na FNBC se e somentese todos os determinantes forem chaves candidatas. Note que esta definição é emtermos de chaves candidatas e não sobre chaves primárias.
  • 97.
    Quarta Forma Normal-4FN Às vezes podem surgir problemas com relação a algum atributo não chave, que recebe valores múltiplos para um mesmo valor de chave. Esta nova dependência recebe o nome de dependência multivalorada que existe somente se a entidade contiver no mínimo três atributos.
  • 98.
    Quarta Forma Normal-4FN Uma entidade que esteja na 3FN também está na 4FN, se ela não contiver mais do que um fato multivalorado a respeito da entidade descrita. Esta dependência não é o mesmo que uma associação M:N entre atributos, geralmente descrita desta forma em algumas literaturas.
  • 99.
    Quinta Forma Normal-5FN A 5FN trata de casos bastante particulares, que ocorrem na modelagem de dados, que são os relacionamentos múltiplos (ternários, quaternários n-ários). Ela fala que um registro está na sua 5FN, quando o conteúdo deste mesmo registro não puder ser reconstruído (junção) a partir de outros registros menores, extraídos deste registro principal. Ou seja, se ao particionar um registro, e sua junção posterior não conseguir recuperar as informações contidas no registro original, então este registro está na 5FN.
  • 100.
    Roteiro de Aplicaçãoda Normalização Aplicação da 1FN ●Decompor a entidade em uma ou mais entidades, sem grupos repetitivos; ●Destacar um ou mais atributos como chave primária da(s) nova(s) entidade(s), e este será concatenado com a chave primária da entidade original; ●Estabelecer o relacionamento e a cardinalidade entre a(s) nova(s) entidade(s) gerada(s) e a entidade geradora; ●Verificar a questão da variação temporal de certos atributos e criar relacionamentos 1:N entre a entidade original e a entidade criada por questões de histórico.
  • 101.
    Roteiro de Aplicaçãoda Normalização Aplicação da 2FN ●Para entidades que contenham chaves primárias concatenadas, destacar os atributos que tenham dependência parcial em relaçãoà chave primária concatenada; ●Criar uma nova entidade que conterá estes atributos, e que terá comochave primária o(s) atributo(s) do(s) qual(quais) se tenha dependênciaparcial; ●Serão criadas tantas entidades quanto forem os atributos da chaveprimária concatenada, que gerem dependência parcial; ●Estabelecer o relacionamento e a cardinalidade entre a(s) novasentidade(s) gerada(s) e a entidade geradora.
  • 102.
    Roteiro de Aplicaçãoda Normalização Aplicação da 3FN ●Verificar se existem atributos que sejam dependentes transitivos de outros que não pertencem à chave primária, sendo ela concatenada ounão, bem como atributos que sejam dependentes de cálculo realizado apartir de outros atributos; ●Destacar os atributos com dependência transitiva, gerando uma novaentidade com este atributo e cuja chave primária é o atributo queoriginou a dependência; ●Eliminar os atributos obtidos através de cálculos realizados a partir deoutros atributos.
  • 103.
    Roteiro de Aplicaçãoda Normalização Aplicação da FNBC ●Só aplicável em entidades que possuam chaves primárias e candidatasconcatenadas; ●Verificar se alguma chave candidata concatenada é um determinante, eem caso afirmativo, criar uma entidade com os que dependamfuncionalmente deste determinante e cuja chave primária é o própriodeterminante.
  • 104.
    Roteiro de Aplicaçãoda Normalização Aplicação da 4FN ●Para se normalizar em 4FN, a entidade tem que estar (obrigatoriamente)na 3FN; ●Verificar se a entidade possui atributos que não sejam participantes dachave primária e que sejam multivalorados e independentes em relaçãoa um mesmo valor da chave primária; ●Retirar estes atributos não chaves e multivalorados, criandonovas entidades individuais para cada um deles, herdando achave primária da entidade desmembrada.
  • 105.
    Roteiro de Aplicaçãoda Normalização Aplicação da 5FN ●Aplicada em elementos que estejam na 4FN; ●A ocorrência deste tipo de forma normal está vinculada aosrelacionamentos múltiplos (ternários, etc.) ou entidades que possuamchave primária concatenada com três ou mais atributos; ●Verificar se é possível reconstruir o conteúdo do elemento original apartir de elementos decompostos desta; ●Se não for possível, o elemento observado não está na 5FN, casocontrário os elementos decompostos representam um elemento na 5FN.
  • 106.
    Desnormalização Os novoselementos criados durante a normalização podem trazer prejuízos na hora de serem implementados em um SGDB. Devido as características de construção física de certos bancos de dados, algumas entidades e relacionamentos devem ser desnormalizados para que o SGBD tenha um melhor desempenho. Ao se optar pela desnormalização, deve-se levar em conta o custo daredundância de dados e as anomalias de atualização decorrentes.
  • 107.
    Bibliografia DATE, CJ. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. KORTH, H F e SILBERSCHATZ, A. Sistema de Bando de Dados. Rio de Janeiro: McGraw Hill, 1999. MACHADO, F. N. R. e ABREU, M. P.Projeto de Banco de Dados. São Paulo: Érica, 2004.
  • 108.
  • 109.
    SQL O nome"SQL" significa "Structured Query Language" - LinguagemEstruturada de Pesquisa. Sua primeira versão recebeu o nome deSEQUEL ("Structured English Query Language"), sendo definida por D. D.CHAMBERLIN, entre outros, em 1974, nos laboratórios de pesquisa da IBM(Califórnia). Em 1975, foi implementado um protótipo de aplicação dessa novalinguagem.Entre 1976 e 1977, o SEQUEL foi revisado e ampliado, e teve seu nomealterado para "SQL" por razões jurídicas.
  • 110.
    SQL e SGBD Atualmente, a linguagem SQL assume um papel muito importante nos sistemas de gerenciamento de banco de dados, podendo ter muitos enfoques: ●Linguagem interativa de consulta(query AdHoc): por meio decomandos SQL, os usuários podem montar consultas poderosas sem anecessidade da criação de um programa, podendo utilizar Forms ouferramentas de montagem de relatório;
  • 111.
    SQL e SGBD ●Linguagem de programação para acesso a banco de dados:comandos SQL embutidos em programas de aplicação que acessam osdados armazenados; ●Linguagem de administração de banco de dados: o responsávelpela administração do banco de dados (DBA) pode utilizarcomandos SQL para realizar suas tarefas; ●Linguagem cliente/servidor: os programas (cliente) dos computadorespessoais usam comandos SQL para se comunicarem por meio de uma redelocal, compartilhando os dados armazenados em um único local (servidor).
  • 112.
    SQL e SGBD ●Linguagem para banco de dados distribuído: auxilia nadistribuição dos dados por meio de vários nós conectados ao sistema decomputação. Auxilia também na comunicação de dados com outrossistemas; ●Caminho de acesso a outros bancos de dados em diferentesmáquinas: auxilia na conversão entre diferentes produtosde banco de dados colocados em diferentes máquinas (de micro atémainframe).
  • 113.
    SQL e SGBD Por ser uma linguagem de numerosas aplicações, a SQL pode manipular objetos de diferentes classes entre as funções de um SGBD: ●Definição de dados (DDL): permite ao usuário a definição da estrutura e organização dos dados armazenados, e as relações que existem entre eles; ●Manipulação de dados (DML): permite ao usuário ou a um programa deaplicação, a inclusão, remoção, seleção ou atualização de dadospreviamente armazenados no banco;
  • 114.
    SQL e SGBD ●Controle de acesso: protege os dados de manipulações não autorizadas; ●Compartilhamento de dados: coordena o compartilhamento dos dadospor usuários concorrentes, sem contudo interferir na ação de cada umdeles; ●Integridade dos dados: auxilia no processo de definição da integridadedos dados, protegendo contra corrupções, inconsistências e falhas dosistema de computação.
  • 115.
    Vantagens da SQL ●Independência de fabricante-A SQL é oferecida em praticamente todos os SGBD's, e os que ainda não têm estão se encaminhando para lá. Com isso posso mudar de SGBD sem me preocupar com o novo que vai chegar; ●Portabilidade entre computadores-A SQL pode ser utilizada desde um computador pessoal, passando por uma estação de trabalho, até um computador de grande porte; ●Redução dos custos com treinamento-Baseado no item anterior, as aplicações podem se movimentar de um ambiente para o outro sem que seja necessária uma reciclagem da equipe de
  • 116.
    Vantagens da SQL ●Inglês estruturado de alto nível-A SQL é formada por um conjunto bem simples de sentenças em inglês, oferecendo um rápido e fácil entendimento; ●Consulta interativa-A SQL prove um acesso rápido aos dadosfornecendo respostas ao usuário, a questões complexas, em minutos ousegundos; ●Múltiplas visões dos dados-A SQL permite ao criador do banco de dadoslevar diferentes visões dos dados a diferentes usuários; ●Definição dinâmica dos dados-Por meio da SQL, podem-se alterar,expandir ou incluir, dinamicamente, as estruturas dos dado armazenadoscom a máxima flexibilidade;
  • 117.
    Desvantagens da SQL ●A padronização leva a uma, natural, inibição da criatividade, pois quemdesenvolve aplicações fica preso a soluções padronizadas não podendosofrer melhorias ou alterações; ●A SQL está longe de ser uma linguagem relacional ideal: ○Falta de ortogonalidade nas expressões, funções embutidas,variáveis indicadoras, referência a dados correntes, constanteNULL, conjuntos vazios, etc;
  • 118.
    Desvantagens da SQL ○Definição formal da linguagem após sua criação; ○Discordância com as linguagens hospedeiras; ○Falta de algumas funções; ○Erros (valores nulos, índices únicos, cláusula FROM, etc); ○Não dá suporte a alguns aspectos do modelo relacionai (atribuiçãode relação, join explícito, domínios, etc):
  • 119.
    Exemplo Para aexemplificação do uso de SQL, utilizaremos o seguinte modelo:
  • 120.
    Criação de Bancode Dados Para podermos criar e inserir as tabelas de uma aplicação em Banco de Dados, dependendo do ambiente de SGBD que estivermos utilizando, criar o DATABASE, ou seja criar um banco de dados no qual estarão residentes as tabelas de nosso sistema. Sintaxe CREATE DATABASE <database> Exemplo CREATE DATABASE vendas
  • 121.
    Criação de Tabelas Sintaxe CREATE TABLE <tabela> (<descrição das colunas>); (<descrição das chaves>);
  • 122.
    Criação de Tabelas Exemplo CREATE TABLE CLIENTE ( Código_clientesmallint not null unique, nome_cliente char(20), endereço char(30), cidade char(15), CEP char(8), UF char(2), CGC char(20), IEchar(20) );
  • 123.
    Criação de Tabelas Exemplo CREATE TABLE VENDEDOR ( código_vendedor smallint not null, nome_vendedor char(20), salário_fixo money, faixa_comissão char(l) PRIMARY KEY (codigo_vendedor) );
  • 124.
    Criação de Tabelas Exemplo CREATE TABLE PRODUTO ( código_produto smallint not null unique, unidade char(3), descrição_ produto char(30), val_unit money );
  • 125.
    Criação de Tabelas Exemplo CREATE TABLE PEDIDO ( num_pedidoint not null unique, prazo_entrega smallint not null, código_cliente smallint not null, código_vendedor smallint not null, FOREIGN KEY (código_cliente) REFERENCES CLIENTE, FOREIGN KEY (código_vendedor) REFERENCES VENDEDOR );
  • 126.
    Criação de Tabelas Exemplo CREATE TABLE ITEM_DO_PEDIDO ( num_pedido int not null unique, código_produto smallint not null unique, quantidade decimal, FOREIGN KEY (num_pedido) REFERENCES PEDIDO, FOREIGN KEY (código_produto) REFERENCES PRODUTO );
  • 127.
    Apagar Tabelas Paraeliminar uma tabela criada, é utilizado o comando DROP. Sintaxe: DROP TABLE <tabela>; Exemplo DROP TABLEPEDIDO; elimina a tabela de pedidos que foi previamente criada, seus dados e suas referências a outras tabelas.
  • 128.
    Selecionando dados deTabelas Uma das operações mais comuns, realizadas sobre um banco de dados, é examinar (selecionar) as informações armazenadas. Essas operações são realizadas por meio do comandoSELECT 1.SELECT: Especifica as colunas da tabela que queremos selecionar; 2.FROM: Especifica as tabelas; 3.WHERE: Especifica as linhas.
  • 129.
    Selecionando dados deTabelas Sintaxe select <nome(s) da(s) coluna( s )> from<tabela>; Exemplo SELECT CGC, nome_cliente, endereço FROM cliente;
  • 130.
    Selecionando dados deTabelas A cláusula WHEREem um comando SELECT especifica quais linhas queremos obter, baseada em condições de seleção. Sintaxe SELECT <nome(s) da(s) coluna(s)> FROM <tabela> WHERE<nome da coluna> <operador> <valor>; Exemplo SELECT nome_cliente FROM cliente WHERE cidade = 'Niterói';
  • 131.
    Selecionando dados deTabelas Operadores de Comparação ●= Igual ●<> ou != diferente ●< menor do que ●> maior do que ●>= maior ou igual do que ●!> não maior ●!< não menor ●<= menor ou igual do que Quando a coluna é do tipo caractere, o <valor> deve estar entre aspas ('). Exemplo: 'PARAFUSO'
  • 132.
    Selecionando dados deTabelas Operadores Lógicos ●AND: “e” lógico ●OR: “ou” lógico ●NOT: negação Exemplo SELECT descrição_produto FROM produto WHERE unidade = 'M' AND val_unit = 1.05;
  • 133.
    Selecionando dados deTabelas Operadores baseados em string de caracteres LIKE eNOT LIKE Sintaxe WHERE <nome da coluna> LIKE <valor>; WHERE <nome da coluna> NOT LIKE <valor>; Simbolos %substitui uma palavra _substitui um caractere
  • 134.
    Selecionando dados deTabelas Exemplo LIKE 'LÁPIS %'pode retornar: •'LÁPIS PRETO', •'LÁPIS CERA', •'LÁPIS BORRACHA' LIKE 'BROCA N_'pode retornar: •'BROCA NI', •'BROCA N9', •'BROCA N3'
  • 135.
    Selecionando dados deTabelas Exemplo SELECT Código_vendedor, nome_vendedor FROM vendedor WHERE nome_vendedor NOT LIKE 'Jo%';
  • 136.
    Selecionando dados deTabelas Operadores baseados em listas IN eNOT IN ●WHERE <nome da coluna> IN <valores>; ●WHERE <nome da coluna> NOT IN <valores>; Esses operadores pesquisam registros que estão ou não contidos no conjuntode<valores>fornecido. Estes operadores minimizam o uso dos operadores =, <>,AND e OR.
  • 137.
    Selecionando dados deTabelas Exemplo ●SELECT nome_vendedor ●FROM vendedor ●WHERE faixa_comissão IN ('A','B');
  • 138.
    Selecionando dados deTabelas Operadores baseados em valores desconhecidos IS NULLeIS NOT NULL ●WHERE <nome da coluna> IS NULL; ●WHERE <nome da coluna> IS NOT NULL; A utilização do valor nulo (NULL)é muito problemática, pois cadaimplementação da linguagem pode adotar qualquer representação para o valor nulo. O resultado da aplicação destes operadores permite o tratamento de valoresnulos em colunas de uma tabela, selecionando as linhas correspondentes.
  • 139.
    Selecionando dados deTabelas Exemplo SELECT * FROM cliente WHERE IE IS NULL;
  • 140.
    Ordenando Dados Selecionados A SQL prevê a cláusula ORDER BYpara realizar uma ordenação dos dadosselecionados. Sintaxe SELECT <nome da(s) coluna(s)> FROM <tabela> WHERE <condição(ões)> > ORDER BY <nome da coluna> ASC <ou> DESC <ou> ORDER BY <número da coluna>ASC <ou> DESC
  • 141.
    Ordenando Dados Selecionados Exemplo SELECT nome_cliente, cidade, UF FROM cliente ORDER BY UF DESC, cidade DESC;
  • 142.
    Adicionando registros Sintaxe INSERT INTO <nome da tabela> <nome da(s) coluna(s)>) VALUES (<valores>); Exemplo INSERT into produto VALUES (108,'Parafuso','Kg',1.25); Se não especificados os nomes de colunas, essa lista de valores deverá estar naordem das colunas definidas no comando CREATE TABLE.
  • 143.
    Adicionando registros usandoSELECT Sintaxe INSERT INTO <nome da tabela> (<nome da(s) coluna(s)>) SELECT <nome da(s) coluna(s)> FROM <nome da tabela> WHERE<condição>; Exemplo INSERT into cliente (cod_cliente,nome_cliente) SELECT cod_vendedor,nome_vendedor/COUNT(*) FROM vendedor, pedido WHERE Vendedor.cod_vendedor =Pedido.cod_vendedor HAVING COUNT(*) > 50;
  • 144.
    Atualizando um registro Sintaxe UPDATE <nome da tabela> SET <nome da(s) coluna(s)> = valor WHERE <condição>; Exemplo UPDATE produto SET val_unit = 1.62 WHERE descrição = 'Parafuso';
  • 145.
    Atualizando um registro Exemplo UPDATE Produto SET Vendas_acumuladas = 0 UPDATE Produto SET Vendas_acumuladas = (SELECTSUM (quantidade) FROM Item_de_pedido);
  • 146.
    Apagando registros Sintaxe DELETE FROM <nome da tabela> WHERE <condição>; Exemplo DELETE FROM vendedor WHERE faixa_comissão IS NULL;
  • 147.
    Agregação sobre Conjuntos Valor máximo (MAX) e mínimo (MIN) SELECT MIN(salário_fixo), MAX(salário_fixo) FROM vendedor; Totalizador (SUM) SELECT SUM(quantidade), FROM item_pedido WHERE código_produto = '78';
  • 148.
    Agregação sobre Conjuntos Valor médio (AVG) SELECT AVG(salário_fixo), FROM vendedor; Quantidade de Registros (COUNT) SELECT COUNT(*), FROM vendedor WHERE salário_fixo > 2500;
  • 149.
    Agregação sobre Conjuntos Valores distintos (DISTINCT) SELECT DISTINCT unidade, FROM produto;
  • 150.
    Agrupamentos Agrupar (GROUPBY) SELECT num_pedido, total_produtos = COUNT(*) FROM item_de_pedido GROUP BY num_pedido; ●Geralmente, a cláusula GROUP BYé utilizada em conjunto com asoperações COUNT eAVG.
  • 151.
    Dados de VáriasTabelas -JOINS Para que possamos recuperar informações de um banco de dados, temos,muitas vezes, a necessidade de acessar simultaneamente várias tabelasrelacionadas entre si. Algumas dessas consultas necessitam realizar uma junção(JOIN) entre tabelas, para poder extrair dessa junção as informações necessáriaspara a consulta formulada.
  • 152.
    Sintaxe SELECT <nome_da_tabela.nome_da_coluna [nome_da_tabela.nome_da_coluna .... ]> FROM {nome_da_tabela [tipo de join] nome_da_tabela ON condição de pesquisa WHERE [condição de pesquisa .. ] Dados de Várias Tabelas -JOINS
  • 153.
    Tipos de JOIN ●INNER JOIN: serão incluídas somente aslinhas que satisfazem a condição do join. ●CROSS JOIN: incluímos cada uma da combinações de todasas linhas entre as tabelas. ●OUTER JOIN: incluímos as linhas quesatisfazem a condição de JOIN e as linhas restantes de uma das tabelas do JOIN. Dados de Várias Tabelas -JOINS
  • 154.
    Exemplo INNER JOIN SELECT Cliente.nome_cliente, pedido.cod_cliente, pedido.num_pedido FROM cliente INNER JOIN pedido ON cliente.codigo_do_cliente = pedido.codigo_do_cliente Exemplo CROSS JOIN SELECT nome_cliente, pedido.cod_cliente,num_pedido FROM cliente CROSS JOIN pedido Dados de Várias Tabelas -JOINS
  • 155.
    OUTER JOIN Éa seleção em que são restritas as linhas que interessam em uma tabela, massão consideradas todas as linhas de outra tabela. É de muita utilidade quando queremos verificar se existem membros órfãosem um banco de dados, ou seja, chave primária e chave estrangeira sem sincronia ousimetria. Um OUTER JOINsomente pode ser realizado entre duas tabelas, não maisque duas tabelas. Dados de Várias Tabelas -JOINS
  • 156.
    A sintaxe SQLpossui três tipos de qualificadores para o OUTER JOIN: ●LEFT OUTER JOIN: São incluídas todas as linhas da tabela do primeironome de tabela ( a tabela mais à esquerda da expressão). ●RIGHT OUTER JOIN: São incluídas todas as linhas da tabela do segundonome de tabela da expressão (tabelas mais à direita da expressão). ●FULL OUTER JOIN: São incluídas as linhas que não satisfazem a expressãotanto da primeira tabela quanto da segunda tabela. Dados de Várias Tabelas -JOINS
  • 157.
    Exemplo SELECT nome_cliente, pedido.cod_cliente, num_pedido FROM cliente LEFT OUTER JOIN pedido ON cliente.codigo_do_cliente = Pedido.codigo_do_cliente Dados de Várias Tabelas -JOINS
  • 158.
    Subquerys É quandoo resultado de uma consulta é utilizado por outra consulta, de forma encadeada e contida no mesmo comando SQL. Exemplo SELECT descrição FROM produto WHERE cod_produto IN (SELECT cod_produto FROM item_pedido WHERE quantidade = 10)
  • 159.
    Utilizando VIEWS UmaVIEW é um caminho alternativo para visualizarmos dados derivados deuma ou mais tabelas em um banco de dados. Um usuário pode necessitar ver partesselecionadas de dados com nome, departamento e supervisor, porém não visualizarsalário. VIEWS também podem ser utilizadas para informação calculada ou derivada,como preço total de um item de pedido que é calculado por meio da multiplicação de quantidade e preço unitário.
  • 160.
    Utilizando VIEWS Sintaxe CREATE VIEW <nome da VIEW> (<nome da(s) coluna(s)>) AS<nome da view> SELECT <nome da(s) coluna(s)> FROM <nome da tabela> WHERE<condição>; Exemplo CREATE VIEW PR_metro (cod_PR_metro,descrição, unidade) AS SELECT cod_produto, descrição, unidade FROMproduto WHERE unidade = 'M';
  • 161.
    Privilégios de acesso Muitos sistemas de banco de dados relacionais podem ser acessados pordiversos usuários. Cada usuário tem uma determinada necessidade em relação aosdados armazenados. De acordo com o projeto do banco de dados, alguns usuários sópodem consultar alguns dados, outros podem atualizar, outros podem inserir, etc. Paraque o dado fique protegido do uso indevido de qualquer usuário, a linguagem SQLpermite a definição dos privilégios que cada um pode ter em relação às tabelas criadasno banco de dados.
  • 162.
    GRANT -Garantir Quandouma tabela/view é criada, o nome do usuário que a criou é anexado,internamente, ao nome da tabela. O criador da tabela/view tem total privilégio sobre a tabela criada podendo disponibilizar qualquer privilégio para outros usuários pelo comando GRANT: Sintaxe GRANT {ALL [Lista de privilégios]} ON {nome databela/view [lista de colunas]} TO {PUBLIB [listade usuários]} [WITH GRANT OPTION]
  • 163.
    GRANT -Garantir Listade opções de privilégios: ●SELECT: pode executar uma consulta sobre atabela ●INSERT: pode executar uma inserção sobre atabela ●DELETE: pode apagar registros da tabela ●UPDATE: pode modificar registros na tabela ●ALL PRIVILEGES/ALL: pode executar qualquer operação sobrea tabela ●<usuário>: nome do usuário que vai receber osprivilégios. ●PUBLIC: concede os privilégios especificados a todos os usuários do ambiente.
  • 164.
    GRANT -Garantir Exemplos ●GRANT SELECT ON Produto TO Maurício; permite só consultas ao usuárioMaurício sobre a tabela produto; ●GRANT Select, insert, update on pedido to tele_mark; concede ao usuáriotele_mark (entrada de pedidos), os privilégios de seleção, inserção e alteração sobre atabela PEDIDO; ●GRANT All privileges on cliente to public;permite todos os privilégios atodos os usuários sobre a tabela cliente; ●GRANT Select on cliente to Felipe, Maurício;concede aos usuáriosMaurício e Felipe, o privilégio de seleção sobre a tabela CLIENTE.
  • 165.
    REVOKE -Revogar Damesma forma que o criador da tabela pode garantir (GRANT) osprivilégios de acesso aos outros usuários, ele pode revogar esses privilégios por meiodo comando REVOKE. Sintaxe REVOKE [ lista de privilégios ]ON [nome da tabela/view] FROMlista de usuários]; Exemplo REVOKE selectON produto FROM Mauricio;
  • 166.
    Índices Índice éuma estrutura que permite rápido acesso às linhas de uma tabela, combase nos valores de uma ou mais colunas. O índice é simplesmente uma outra tabela nobanco de dados, na qual estão armazenados valores e ponteiros, arrumados de formaascendente ou descendente. O SGBD utiliza os índices para pesquisar rapidamente um determinado valor dentro do banco de dados.
  • 167.
    Check List paraCriação de Índices ✓Criar índice sobre coisas que vamos pesquisar com frequência. ✓Indexe suas chaves estrangeiras quando precisar de "joins" mais eficientes eperformantes. ✓As colunas que são regularmente utilizadas em joins devem ser indexadasporque o sistema pode performar esses joins de forma muito mais rápida. ✓Crie índice sempre em colunas que são pesquisas por um intervalo de valores. ✓E por fim, crie índice sempre em colunas que são utilizadas em cláusulas WHERE.
  • 168.
    Quando não criaríndices Se a expectativa de retorno de linhas de uma consulta for muito alta índices não devem ser utilizados. Por exemplo: se uma coluna tem somente dois valores: Masculino e Feminino, uma consulta a essa coluna sempre vai retornar uma alta quantidade de linhas. Como é um índice não agrupado, poderá ocupar muito espaço e pode não ser utilizado para consultas.
  • 169.
    Criando Índices Cadaíndice é aplicado a uma tabela, especificando uma ou mais colunas dessatabela. Sintaxe CREATE [UNIQUE] INDEX <nome do índice> ON<nome da tabela> (<coluna(s)>); Exemplo CREATE INDEX nome_pro ONproduto (descrição);
  • 170.
    Criando Índices Acláusula UNIQUE é opcional e define que para aquela coluna não existirãovalores duplicados, ou seja, todos os dados armazenados na coluna serão únicos. A junção do índice unique e da especificação NOT NULL para uma colunadefine a chave primária da tabela quanto ao aspecto lógico, pois uma chave primária,como vimos neste livro, não pode ser NULA.
  • 171.
    Eliminando Índices Damesma forma que um índice é criado, ele pode ser eliminado, dependendodas necessidades do projeto do banco de dados. Sintaxe DROP index <nome do índice>; Exemplos DROP index nome_pro; DROP index ped_pro;
  • 172.
    Bibliografia DATE, CJ. Introdução a Sistemas de Bancos de Dados. São Paulo: Campus, 2004. MACHADO, F. N. R. e ABREU, M. P.Projeto de Banco de Dados. São Paulo: Érica, 2004.