Buscar

Banco de Dados ok

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Banco de Dados
Aula 1 – 62,5
Dados representam fatos em sua forma primária. Por exemplo, o nome de um empregado, a quantidade de horas trabalhadas, por cada empregado, em uma semana, os números das peças mantidas em estoque ou dos seus pedidos de compras. 
Quando estes fatos são organizados ou arranjados de modo significativo, eles se tornam uma informação. Informação, portanto, é um conjunto de fatos organizados de tal forma que adquirem um valor adicional, além do valor do fato em si. Por exemplo, o total de vendas mensais pode ser mais adequado ao seu propósito, ou seja, pode conter mais valor, do que as vendas de cada vendedor individualmente. 
A transformação de dados em informação é um processo. Por exemplo, com os dados de peças mantidas em estoque, pedidos e vendedores podemos obter informações tão diferentes quanto: lista de peças que estão em falta no estoque, a média de venda por peça, os melhores e piores vendedores da companhia e, ainda, relacionar os piores e melhores vendedores com as horas trabalhadas por cada um deles. 
 De forma simples, podemos entender um sistema de informação como um conjunto de processos que transforma dados em informação.
Os dados relevantes para um determinado negócio se mantêm estáveis mesmo que o negócio em questão modifique radicalmente sua forma de operação, ou seja, os seus processos.  
 Sendo assim, podemos afirmar que dados são mais estáveis do que processos e, portanto, representam a uma das partes mais valiosas e importantes de um sistema de informação.
Banco de dados
De acordo com (Navathe, 2005), podemos definir um banco de dados como um conjunto de dados que se relacionam. Porém, o significado do termo é mais restrito do que esta definição. Um banco de dados, necessariamente, possui as seguintes propriedades:
Sistemas Gerenciadores de Bancos de Dados e Sistemas de Banco de Dados
Um banco de dados é criado e mantido por um conjunto de aplicações desenvolvidas especialmente para esta tarefa denominado “Sistema Gerenciador de Banco de Dados” (SGBD).
Um SGBD é uma coleção de programas que permite aos seus usuários criarem e manipularem bancos de dados. O conjunto formado por um banco de dados e estes programas que o manipulam é chamado de Sistema de Banco de Dados. 
Uma característica importante da abordagem de Banco de Dados é que o SGBD não mantém somente os dados, mas, também, a forma como os mesmos são armazenados, através de uma descrição completa dos dados armazenados. Estas informações são armazenadas no catálogo ou dicionário de dados do SGBD, que contém informações como a estrutura de cada arquivo, o tipo e o formato de armazenamento de cada tipo de dado, restrições, etc. As informações armazenadas neste catálogo são chamadas meta-dados.
SGBD X Sistemas de Gerenciamento de Arquivos
A melhor maneira de entender a natureza geral e as características dos bancos de dados de hoje é olhar para as características dos sistemas que antecederam o uso da tecnologia de banco de dados: os Sistemas de Gerenciamento de Arquivos.  Tais características são:
Evolução dos Bancos de Dados
Nos primeiros sistemas de informação, dados e processos eram mantidos juntos em um mesmo arquivo, como no esquema a seguir.
A partir da observação de que os dados são muito mais estáveis que os processos, em um sistema de informação, iniciaram-se a época de investimentos massivos no desenvolvimento de ferramentas voltados para seu tratamento eficiente. Gradativamente, dados e processos foram separados. Em um primeiro momento, estas ferramentas mantinham as funções básicas de criação e manipulação dos dados independentes das aplicações.
Neste ambiente, dados, SGBD e os programas que o acessam ficam restritos a uma única máquina. O acesso se dá por meio de terminais burros, ou seja, terminais com funcionalidades restritas.
Devido ao surgimento das redes de computadores e a possibilidade de conexão entre diversas máquinas com alto poder de processamento, o banco de dados pode ser deslocado para uma máquina específica, o servidor de arquivos. Programas e SGBD podem funcionar em uma ou várias das outras máquinas da rede.
Bancos de dados Distribuídos 
Os bancos de dados crescem em volume de dados e as redes se tornam quase ilimitadas em tamanho. Para garantir a eficiência nestes ambientes, surge a necessidade de distribuição da própria base de dados. Surgem, então, os bancos de dados distribuídos. Estes bancos de dados representam, de forma bastante simplificada, a divisão do banco de dados por vários servidores de bancos de dados.
Os bancos de dados saem do nível operacional da empresa e são agora preparados para atender níveis mais altos da pirâmide empresarial. Os datawarehouses, ou armazéns de dados, representam esta promoção dos bancos de dados. Eles contêm dados como nos bancos convencionais, só que preparados para atender as necessidades de informação dos níveis estratégicos da organização. Eles agora são empregados na tomada de decisão dentro das empresas, e não apenas na viabilização do funcionamento destas no dia a dia
Novas arquiteturas de BD - Via WEB
Finalmente, com o surgimento da Internet, a possibilidade de conexão entre estas bases de dados se torna praticamente ilimitada.
Usuários de Bancos de Dados - Em um ambiente de bancos de dados, existem várias categorias de usuários. São elas:
Os SGBDS E Suas Funcionalidades - Um SGBD é conjunto complexo de software que deve prover um conjunto básico de funcionalidades:
+..
Benefícios do Uso de SGBDs
Os ambientes de bancos de dados fornecem uma série de vantagens na sua adoção
Potencial para o estabelecimento e cumprimento de padrões
Flexibilidade de mudanças 
Redução no tempo de desenvolvimento de novas aplicações 
Disponibilidade de informação atualizada
Economia de escala
Bancos de dados NÃO são sempre a solução!!!
Apesar das vantagens de utilização, a escolha por um ambiente de banco de dados tem um alto custo atrelado. A sua adoção deve, então, compensar ou ser compatível com este custo.
Por que não usar banco de dados
. Volume de dados pequeno, aplicações simples, bem definidas.   
. Mudanças não são esperadas.
. Ambientes de sistemas que exijam resposta em tempo real.
. Acessos múltiplos e concorrentes não são necessários.
Aula 2 – 87,5
O projeto de um banco de dados envolve a produção de 3 modelos que definem uma arquitetura de 3 esquemas (conceitual, lógico e físico).
Na fase inicial do processo, o mundo real ou mini-mundo deve ser entendido e seus objetos conceituais identificados. A este entendimento e identificação chamamos abstração de dados e o modelo produzido após esta fase chamamos modelo conceitual. Após a sua confecção e pela a aplicação de regras específicas, um modelo lógico é produzido. Este modelo está vinculado ao modelo de dados adotado pelo SGBD. Na etapa final, o modelo lógico dá origem ao modelo físico, efetivamente armazenado no banco de dados.
Percepção do Mundo Real
Toda realidade é, em princípio, bastante nebulosa e informal. Através da observação podemos extrair desta realidade fatos que nos levam a conhecê-la de uma forma mais organizada.
Em um negócio, existem fatos que, observados e modelados, dizem algo a respeito do funcionamento deste negócio. Estes fatos estão ligados diretamente ao funcionamento da realidade, a qual temos interesse em compreender e manter. 
Para que possamos retratar estes fatos e que os mesmos possam nos levar a futuras decisões e ações, se faz necessário então registrá-los. Este registro é feito através da criação de um MODELO, isto é, algo que nos mostre como as informações estão relacionadas.
Ao coletar e relacionar os fatos relevantes, devemos identificar os elementos geradores de informação, as leis que regem esta realidade, bem como as operações que incidemsobre os elementos básicos (dados).
O que se quer criar é uma ABSTRAÇÃO da realidade, que seja capaz de registrar os acontecimentos da mesma, de modo que se possa implementar um sistema automatizado que atenda às reais necessidades de informação.
Elementos da abstração
Minimundo – Porção específica da realidade, captada pelo analista, objeto de observação detalhada. Caso a análise do minimundo torne-se muito complexa, o analista pode subdividi-lo em pontos menores, chamados de “visões”.
Banco de Dados – Coleção de fatos registrados que refletem certos aspectos de interesse do mundo real. Cada mudança, em algum item do banco de dados, reflete uma mudança ocorrida na realidade.
Modelo conceitual – Representa e/ou descreve a realidade do ambiente, constituindo uma visão global dos principais dados e relacionamentos (estruturas de informação), independente das restrições de implementação. Descreve as informações contidas em uma realidade, as quais irão estar armazenadas em um banco de dados
Modelo Lógico – Descreve as estruturas que estarão contidas no banco de dados, sem considerar nenhuma característica específica de um sistema Gerenciador de Banco de Dados (SGBD), resultando em um esquema lógico de dados. Tem seu início a partir do modelo conceitual.
Modelo físico – Descreve as estruturas físicas de armazenamento de dados, tais como: tamanho dos campos, índices, tipo de preenchimento destes campos, etc... Tem origem no modelo Lógico e detalha o estudo dos métodos de acesso ao SGBD.
Modelagem Conceitual
ENTIDADES
Define-se Entidade como aquele objeto que existe no mundo real, com identificação distinta e com um significado próprio.
São as “coisas” que existem no negócio, ou ainda, descrevem o negócio em si.
A representação de uma entidade no MER é feita através de um retângulo, com o nome da entidade em seu interior.
ATRIBUTOS
Todo objeto para ser uma entidade possui propriedades que são descritas por atributos e valores. Estes atributos e valores, juntos, descrevem as instâncias de uma entidade.
O que descreve CLIENTE?  Cliente é descrito por um código de identificação, nome, endereço, telefone de contato, CGC ou CPF etc.
A representação de uma entidade no MER é feita através de um losango com o nome do atributo em seu interior.
Relacionamentos
Um relacionamento é uma associação entre duas entidades cujo significado seja de interesse para a realidade analisada.
Os relacionamentos estão intimamente ligados às ações realizadas pelos processos sobre os dados e representam os caminhos de navegação ou rotas de acesso do Modelo de Dados.
Existem várias formas de se representar graficamente um relacionamento, por exemplo, Peter Chen utiliza um retângulo para desenhar uma associação entre entidades, outros autores a representam através de um traço unindo as entidades.
Modelagem Conceitual - Modelo Entidade Relacionamento
Agora que já conhecemos os objetos conceituais que compõem o modelo entidade relacionamento, podemos detalhá-los um pouco mais.
Entidades podem ser tangíveis: Pessoas, Edifícios; Intangíveis, Setor, reserva de um voo; Entidade Fraca, não existe, se não estiver relacionada a outra, isto é, ela é logicamente dependente da outra.  Por exemplo, um apartamento dentro de um edifício, um dependente em relação a um funcionário em uma empresa.
Mais Sobre Atributos ...
Exemplos 
Em um primeiro contato com o negócio de uma empresa, podemos não possuir o conhecimento necessário sobre o mesmo. Portanto, é fundamental que procuremos conhecer seus objetos principais.
Ao descrevermos textualmente a realidade analisada, as entidades podem ser identificadas por similaridade com a análise sintática das linguagens naturais. Nesse caso, algumas regras podem ser aplicadas: o sujeito e o objeto da sentença são, provavelmente, entidades; os verbos podem sugerir relacionamentos, por exemplo:
“Um país participa das Olimpíadas” - A frase sugere de imediato a garimpagem de PAÍS e OLIMPÍADAS como entidades e o verbo “PARTICIPA” como o relacionamento entre elas. Nos relacionamentos entre objetos de diferentes tipos, associamos instâncias de um objeto de um tipo a outras de outro tipo.
O relacionamento entre PESSOA e VEÍCULO com a finalidade de expressar o conceito de propriedade.
 Assim, se desejamos ter, conceitualmente, representado um ambiente observado onde “João é proprietário de um jipe amarelo”, poderemos nos valer da seguinte estratégia:
Identificar os objetos envolvidos – PESSOA, com a instância “João”. Veículo, com a instância “JIPE”
Caracterizar os objetos PESSOA – Caracterizado por: nome, data de nascimento, sexo, CPF; VEÍCULO – Caracterizado por: marca, cor, ano de fabricação, número do chassi.
Representar os objetos – PESSOA, VEÍCULO
Identificar o relacionamento entre os objetos: PESSOA é proprietária de VEÍCULO 
Caracterizar o relacionamento entre os objetos:
Nem toda PESSOA é proprietária de um VEÍCULO
Um VEÍCULO pode pertencer a uma PESSOA ou não
Algumas PESSOAS possuem mais de um VEÍCULO
Se um VEÍCULO pertence a uma PESSOA, ele não pertence a mais ninguém
PESSOA é proprietária de VEÍCULO 
Este processo pode ser utilizado para mapear qualquer relacionamento entre dois, ou mais tipos de objetos e, também, entre os mesmos objetos.
 Assim, se necessitamos expandir nosso modelo representando também as observações:
Um VEÍCULO é de propriedade de uma PESSOA, mas pode ser utilizado por diversas PESSOAS para locomoção;
Uma PESSOA utiliza um IMÓVEL para morar.
Teríamos que repetir os passos de 1 a 6 para cada nova observação.
Aula 3 – 50.0
Uma relação entre duas entidades pode ser descrita em termos da sua cardinalidade.
Um para um = 1:1 - Um empregado pode ser atribuído a um carro. Um carro pertence a um empregado.
Um para um = 1:N - Um cliente pode tomar emprestado vários DVDs de vídeo. Cada DVD só pode ser emprestado a um cliente (por vez).
Um para um = N=N - Um estudante pode fazer várias disciplinas. Uma disciplina pode ser cursada por vários estudantes.
A cardinalidade é determinada pelas “regras de negócio” criadas pela organização. São os usuários e a documentação da organização que determinam a cardinalidade existente entre entidades e seus atributos.
CARDINALIDADE 1:1 - Cada instância de uma das entidades se relaciona com uma única instância da outra entidade do relacionamento.
CARDINALIDADE 1:N - Cada instância da entidade que representa o lado 1 do relacionamento pode se relacionar com N instâncias da entidade que representa o lado N. Por outro lado, cada instância da entidade representante do lado N, relaciona com apenas 1 instância da entidade representante do lado 1.
CARDINALIDADE N:M - Cada instância da entidade que representa o lado N do relacionamento pode se relacionar com M instâncias da entidade que representa o lado M. O mesmo acontece quando o relacionamento é analisado no sentido oposto.
Escolhendo Nomes Para Os Relacionamentos
Relações podem ser nomeadas por verbos ou palavras agregadas, como nos exemplos abaixo:
AS RELAÇÕES PODEM TER LIMITES MÍNIMOS E MÁXIMOS
Além do grau de cardinalidade máxima, já mencionado anteriormente, podemos identificar limites mínimos para as cardinalidades. Por exemplo: 
 Um professor pode ensinar de 0 a 4 disciplinas (limite inferior é 0 e limite superior é 4); e um uma disciplina pode ser ministrada por 0 a 1 professor (limite inferior é 0 e o limite superior é 1)
Relações Podem Ser Recursivas
Ocorre quando uma entidade possui um relacionamento com ela mesma os relacionamentos recursivos podem também ter limites inferiores e superiores
Exemplo: Uma organização possui uma entidade "Empregado"e que guardar a informação sobre quais empregados são casados entre si. Esse é um relacionamento recusrivo 1:1 onde a entidade "Empregado"se relaciona consigo mesmo
Relacionamentos Recursivos 1:1
Pode ser visto como uma entidade que se relaciona com ela mesmo.
Limites inferiores e superiores 
em um relacionamento 1:1 recursivo
Atributos Em Relacionamentos
Os atributos de relacionamento são possíveis quando o grau do relacionamento for N : M ( muitos para muitos).
Modelagem Conceitual – Mer Estendido
Os conceitos básicos do Modelo Entidade Relacionamento são suficientes para modelar grande parte dos bancos de dados. Entretanto, algumas extensões, introduzidas posteriormente ao seu surgimento, permitiram refinamentos bastante significativos.
Estrutura de Generalização-Especialização “É-um”
Entidades podem ter subtipos ou subclasses e pupertipos ou superclasses.
Uma entidade supertipo é uma generalização de uma entidade subtipo especializada".
Cada entidade subtipo herda os atributos de sua entidade supertipo.
Cada entidade supertipo tem seus próprios atributos únicos.
A relação entre um subtipo de entidades e seu par é referenciada por uma relação “É-um”
Num diagrama ER um relacionamento “É-um” conecta uma entidade mais especializada a uma entidade generalizada [sem sentido] pode ser escrita como um triângulo invertido ou um losango com o label “É-um”
Estrutura de Agregação “Faz_parte_de”
Outra Representação ...
Aula 4 – 50,0
Modelagem Lógica De Dados
O Modelo Lógico de Dados Lógico descreve os componentes do Modelo Conceitual de Dados, aproximando-o do ambiente computacional, onde este será trabalhado. Existem vários modelos de dados:
O Modelo Relacional
No modelo relacional
Relação – tabela bidimensional, composta de linhas e colunas de dados.
Relação Recursiva – Relaciona o objeto a si mesmo
Atributo – Coluna
Grau de uma relação – Número de atributos
Tupla – Cada linha da relação
Domínio de um atributo - Conjunto ao qual pertence os valores de um atributo
Valor nulo de um atributo de uma tupla – Atributo inaplicável ou com valor desconhecido
Esquema de banco de dados relacional – Nome das relações seguidos pelos nomes dos atributos, com os atributos chaves sublinhadas e com as chaves estrangeiras identificadas.
Modelagem Lógica - O Modelo Relacional
Regras de Integridade
Aula 5 –
Normalização
O processo de normalização de dados representa uma série de passos que se seguem no projeto de um banco de dados, que permitem um armazenamento consistente e o eficiente acesso aos dados de um banco de dados relacional. Esses passos reduzem a redundância de dados e, consequentemente, as chances de ocorrerem inconsistências.
Características de um mau projeto
Formas normais
Uma relação está na primeira forma normal se todos os seus atributos são monovalorados e atômicos.
 
Quando encontrarmos um atributo multivalorado, devemos criar um novo atributo que individualize a informação que está multivalorada:
HISTÓRICO = {matricula-aluno, código-disciplina, notas}
No caso acima, cada nota seria individualizada identificando a prova a qual aquela nota se refere:
HISTÓRICO = {matricula-aluno, código-disciplina, número-prova, nota}
Quando encontrarmos um atributo não atômico, devemos dividi-lo em outros atributos que sejam atômicos:
PESSOA = {CPF, nome-completo}
Vamos supor que, para a aplicação que utilizará esta relação, o atributo nome-completo não é atômico, a solução então será:
PESSOA = {CPF, nome, sobrenome}
Uma relação está na segunda forma normal quando duas condições são satisfeitas:
A relação estiver na primeira forma normal;
Todos os atributos primos dependerem funcionalmente de toda a chave primária.
 
Observe a relação abaixo:
HISTÓRICO = {matrícula-aluno, código-matéria, número-prova, nota, data-da-prova, nome-aluno, endereço-aluno, nome-matéria}
Fazendo a análise da dependência funcional de cada atributo primo, chegamos às seguintes dependências funcionais:
Matrícula-aluno, código-matéria, número-prova -> nota 
código-matéria, número-prova -> data-da-prova 
matrícula-aluno -> nome-aluno, endereço-aluno 
código-matéria -> nome-matéria 
Concluímos, então, que apenas o atributo primo nota depende totalmente de toda chave primária. 
Para que toda a relação seja passada para a segunda forma normal, devem-se criar novas relações, 
agrupando os atributos de acordo com suas dependências funcionais:
HISTÓRICO = { matrícula-aluno, código-matéria, número-prova, nota}
PROVA = { código-matéria, número-prova, data-da-prova}
ALUNO = { matrícula-aluno, nome-aluno, endereço-aluno}
MATERIA = { código-matéria, nome-matéria}
O nome das novas relações deve ser escolhido de acordo com a chave.
Uma relação está na terceira forma normal, quando duas condições forem satisfeitas:
1. A relação estiver na segunda forma normal. 
2. Todos os atributos primos dependerem não transitivamente de toda a chave primária. 
 
Observe a relação abaixo:
PEDIDO = {número-pedido, código-cliente, data-pedido, nome-cliente, codigo-cidade-cliente, nome-cidade-cliente}
Fazendo a análise da dependência funcional de cada atributo primo, chegamos às seguintes dependências funcionais:
. número-pedido -> código-cliente 
. número-pedido -> data-pedido 
. código-cliente -> nome-cliente 
. Código-cliente -> código -cidade-cliente 
. Código-cidade-cliente -> nome-cidade-cliente 
Concluímos então que apenas os atributos primos código-cliente e data-pedido dependem não transitivamente totalmente de toda chave primária.
Observe que:
. Número-pedido -> código-cliente -> nome-cliente 
. número-pedido -> código-cliente -> código -cidade-cliente 
. número-pedido -> código-cliente -> código -cidade-cliente -> nome-cidade-cliente 
Isto é dependência transitiva; devemos resolver inicialmente as dependências mais simples, criando uma nova relação onde código-cliente é a chave, o código-cliente continuará na relação PEDIDO como atributo primo, porém, os atributos que dependem dele devem ser transferidos para a nova relação:
PEDIDO = {número-pedido, código-cliente, data-pedido}
CLIENTE = {código-cliente, nome-cliente, código-cidade-cliente, nome-cidade-cliente}
As dependências transitivas da relação PEDIDO foram eliminadas, porém ainda devemos analisar a nova relação CLIENTE:
código-cliente -> código-cidade-cliente -> nome-cidade-cliente
Observe que o nome-cidade-cliente continua com uma dependência transitiva, vamos resolvê-la da mesma maneira :
PEDIDO = {número-pedido, código-cliente, data-pedido}
CLIENTE = {código-cliente, nome-cliente, código-cidade-cliente}
CIDADE = {código-cidade-cliente, nome-cidade-cliente}
O nome das novas relações deve ser escolhido de acordo com a chave.
Uma relação está na FNBC  quando duas condições forem satisfeitas:
1. A relação estiver na terceira forma normal; 
2. Todo atributo não chave depende  funcionalmente diretamente da chave primária, ou seja, não há dependências entre atributos não chave
 
AGÊNCIA = {ag_num, ativos, cidade}
CLIENTE = {cpf-cli, nome_cli, rua, cidade }
DEPÓSITO = {ag_nome, conta_num, cpf_cli, saldo}
EMPRÉSTIMO = { ag_nome, emp_num, cpf_cli, quantia}
 
Fazendo a análise da dependência funcional de cada atributo primo, chegamos às seguintes dependências funcionais:
ag_num ->  ativos, cidade
cpf_cli ->  nome_cli, rua, cidade
conta_num  -> saldo, ag_num
emp_num ->  quantia, ag_nome
Assim, concluímos que cpf, cli não dependem de conta-num e emp-num.
 
Solução:
 
INFO_EMPRÉSTIMO = {ag_num, emp_num, quantia}
CLIENTE_EMPRÉSTIMO = { cpf_cli, nome_cli, emp_num}
INFO_CONTA = {ag_num, conta_num, saldo}
CLIENTE_CONTA = { cpf_cli, conta_num}
Regrageral da normalização
Aula 6 – 50,0
Linguagens de definição de dados
Existem diferentes meios pelos quais a estrutura do banco de dados é descrita para o SGBD, dependendo do SGBD que está sendo usado.
A linguagem usada para descrever tal estrutura é chamada de DDL (Data Definition Language).
A linguagem de definição de dados é usada pelo DBA na implementação do banco de dados. O arquivo de texto DDL fornece o nome das tabelas no banco de dados, nomeia e descreve as colunas destas tabelas, define índices e descreve outras estruturas, tais como restrições de segurança e outras limitações.
Linguagens de manipulação de dados
A DML é utilizada para se recuperar informações armazenadas no banco de dados. Possui quatro categorias:
Álgebra Relacional - As relações podem ser manipuladas através de operadores relacionais. Embora não seja utilizada, frequentemente, devido à sua complexidade, ela ajuda a esclarecer a manipulação relacional e estabelece os fundamentos para o aprendizado da SQL.
  A Álgebra Relacional é um conjunto de operações usadas para manipular relações e é oriunda da Teoria dos Conjuntos da matemática.
  A Álgebra Relacional é fechada, o que significa que os resultados de uma ou mais operações relacionais são sempre uma relação.
Cálculo Relacional - Derivado do ramo da matemática chamado “Cálculo de Predicados”.
Linguagens orientadas à transformações - Constituem uma classe de linguagens que transformam dados de entrada expressos como relações, em resultados expressos, como uma única relação (SQUARE, SEQUEL e SQL).
Consultas através de exemplos / formulários - Através de interface gráfica, o usuário é apresentado a uma materiazalização de uma ou mais entradas. O SGBD mapeia a materialização para a relação fundamental e constrói as consultas (provavelmente em SQL). Ex: Approach (Lotus), Access e SALSA for Desktop.  
Álgebra Relacional
Adotaremos as tabelas a seguir para exemplificar cada um dos conceitos introduzidos a seguir:
Operações da álgebra relacional
Seleção
Projeção
União
Interseção 
Diferença
Produto ou produto cartesiano 
Junção
Seleção
Em sistemas gasosos temos dois tipos de trabalho:
União, Interseção e Diferença
Produto ou produto cartesiano
Junção
Aula 7 – 37,5
A primeira versão da linguagem SQL, chamada  SEQUEL, surgiu na década de 70, os  laboratórios  da  IBM   (Califórnia), como uma interface para um sistema experimental de uma banco de dados relacional, chamado SISTEMA R.  Entre   1976  e  1977,   ela foi  revisada  e  ampliada,  tendo    então  o  seu  nome alterado para SQL.
Um esforço conjunto da ANSI e da ISO chegou a versão padrão da SQL (ANSI, 1986) chamada SQL-86 ou SQL1. Uma versão revisada e expandida, chamada SQL2 ou SQL-92 foi desenvolvida em seguida. A próxima versão do padrão foi, originalmente, chamada SQL3, mas atualmente é conhecida por SQL-99. Neste curso, iremos tratar da última versão da SQL.   
Devido ao sucesso da nova forma de consulta e manipulação de dados dentro de um ambiente de banco de dados, sua utilização tornou-se cada vez maior. Atualmente, é a linguagem padrão dos SGBDs relacionais comerciais.
Entre eles podemos citar:
A linguagem SQL tem vários enfoques 
Linguagem interativa de consulta (query AdHoc): Através de comandos SQL os usuários podem montar consultas poderosas, sem a necessidade da criação de um programa, podendo utilizar ferramentas front-end para a montagem de relatórios.
Linguagem de programação para acesso às bases de dados: Comandos SQL embutidos em programas de aplicação (escritos em C, C++, Java, Visual Basic etc.)  Acessam os dados armazenados em uma base de dados relacional.
Linguagem de administração de banco de dados: O responsável pela administração do banco de dados (DBA) pode utilizar comandos     SQL   para   realizar tarefas relacionadas   com    a manutenção dos schemas do banco de dados.
Linguagem de consulta em ambiente cliente/servidor: Os programas, sendo processados nos computadores dos clientes (front ends), usam comandos SQL para se comunicarem através de uma rede, com um SGBD sendo processado em uma máquina servidora (back end).
Linguagem para bancos de dados distribuídos: A linguagem SQL é também a linguagem padrão para a manipulação de dados em uma base de dados distribuída.
Linguagem de definição de dados (DDL): Permite ao usuário a definição da estrutura e organização dos dados armazenados e das relações existentes entre eles.
Linguagem de manipulação de dados (DML): Permite a um usuário, ou a um programa de aplicação, a execução    de operações de inclusão, remoção, seleção ou atualização de dados previamente armazenados na base de dados.
Controle de acesso: Protege os dados de manipulações não autorizadas.
Integridade dos dados: Auxilia no processo de definição da integridade dos dados, protegendo contra corrupções e inconsistências geradas por falhas do sistema de computação ou por erros nos programas de aplicação.
Vantagens da Linguagem SQL
Definição de Dados e Tipos de Dados
A linguagem SQL utiliza os termos tabela, linha e coluna, em vez dos termos relação, tupla e atributo, respectivamente, para o modelo relacional formal. 
 O principal comando SQL para a definição de dados é o CREATE, que pode ser usado para criar esquemas, tabelas (relações) e domínios. Assim como pode ser usado para a criação de outros construtores, como visões, asserções e gatilhos.
As primeiras versões do SQL não incluíram os conceitos de um esquema de um banco de dados relacional; todas as tabelas eram consideradas parte do mesmo esquema. O conceito de esquema foi incorporado a partir da SQL2, de modo a agrupar as tabelas e outros construtores que pertencem à mesma aplicação de um banco de dados. Um esquema SQL é identificado por um nome de esquema e inclui uma identificação de autorização, que indica o usuário ou a conta ao qual o esquema pertence, bem como os descritores de cada elemento do esquema.
Os elementos de esquema incluem tabela, restrições, visões, domínios e outros construtores (como concessão de autoridade) que descrevem o esquema. Um esquema é criado via comando CREATE SCHEMA, que pode incluir todos os elementos de definição do esquema. Alternativamente, o esquema pode ser definido por um nome e um identificador de autorização, e os elementos podem ser definidos depois. Por exemplo, o comando a seguir cria um esquema chamado EMPRESA, pertencente a um usuário cuja identificação é SILVA.
 
CREATE SCHEMA EMPRESA AUTHORIZATHION SILVA
Introdução
Em geral, nem todos os usuários estão autorizados a criar esquemas e elementos de esquemas. O privilégio deve ser, explicitamente concedido (granted) para as contas de usuários relevantes, para o administrador do sistema ou para o DBA. 
Além do conceito de esquema, a SQL2 usa o conceito de catálogo, que é uma coleção de esquemas em um ambiente SQL que recebe um nome. Um ambiente SQL é uma instalação de um SGBD-Relacional padrão em um sistema de computador.
Um catálogo sempre contém um esquema especial chamado INFORMATION_SCHEMA, que proporciona as informações sobre todos os esquemas do catálogo e todos os descritores de seus elementos. 
Introduziremos os comandos da linguagem a partir da construção de exemplos. As tabelas, a seguir, serão usadas nestes exemplos:
Criação e Destruição de Tabelas
O comando CREATE TABLE é usado para criar uma tabela. A sua forma geral é: 
     CREATE TABLE <nome_tabela> 
  (<descrição das colunas>, 
        <descrição das chaves>);
Aula 8 – 50,0
Mais operadores
A cláusula WHERE pode filtrar as linhas de uma tabela através de outros operadores,além dos operadores relacionais e lógicos.
Para a apresentação dos novos operadores e comandos, continuaremos a utilizar as tabelas descritas a seguir:
Ordenando os Dados Selecionados
SELECT <lista_de_colunas> 
       FROM <nome_tabela> 
       WHERE <condição_de_seleção> 
       ORDER BY {<nome_coluna>|<num_col> [ASC|DESC]}
Onde <nome_coluna> se refere  coluna,   segundo   a  qual  as  linhas  serão ordenadas,   e  <num_col>     se refere   à  posição   relativa   da   coluna   na <lista_de_colunas>  projetadas,  contada  da  esquerda  para  a  direita,  e  não  à posição na tabela original. 
 
As cláusulas ASC    e DESC    denotam    ordenação   ascendente e descendente, respectivamente. A forma ascendente de ordenação é assumida, caso nenhuma opção seja informada explicitamente.
Agrupando a Informação Selecionada (GROUP BY)
Consulta - mostrar em ordem alfabética a lista de vendedores e seus respectivos salários fixos. 
  
select nome_vendedor,sal_fixo
from vendedor
order by nome_vendedor;
Ordenando os Dados Selecionados
Resposta
NOME_VENDEDOR                        SAL_FIXO 
---------------------------------------- ---------- 
Ana Cristina                                 2100 
Armando Pinto                             2500 
Cassia Andrade                            900 
Paulo Alberto                              1500
Consulta - Listar os nomes, as cidades e os estados de todos os clientes, ordenados por estado e cidade de forma descendente. 
 
select nome_cliente, cidade, uf 
   from cliente 
   order by uf desc,cidade desc;
Resposta 
 NOME_CLIENTE                                   CIDADE                   UF 
------------------------------------------------------------------- 
Ind. Químicas Paulistas                        São Paulo               SP 
Ford Caminhoes                                  São Paulo                SP 
Riocel Celulose                                    Guaiba                   RS 
Elevadores Sur                                    Guaiba                    RS 
CSN                                                    Volta Redonda         RJ 
Supermercado Carrefour                      Rio De Janeiro        RJ 
Supermercado Baratao                         Rio De Janeiro        RJ 
Pegeout                                              Resende                  RJ 
Supermercado Arariboia                       Niteroi                    RJ 
UFF         
Consulta -Mostrar a descrição   e o valor unitário de todos os produtos que tenham unidade 'kg' em ordem ascendente de valor unitário. Resposta
 
DESC_PRODUTO                 VAL_UNITARIO 
------------------------------------------------- 
Parafuso 3.0X10.5 mm                2 
Chapa de Aço                              2,5 
Cimento  
 
select desc_produto,val_unitario 
  from produto 
  where unid_produto = 'kg' 
  order by 2; 
Realizando cálculos sobre a informação selecionada
Podemos criar, dinamicamente, um campo que não pertença à tabela original através de operações executadas sobre os campos projetados.
Consulta
Exibir o novo salário fixo dos vendedores da faixa de comissão ‘C’, calculado com base no reajuste de 75% sobre o salário atual, acrescido de R$ 120,00 de bonificação. Ordene a relação resultante, pelo nome do vendedor. 
  Resposta
 
NOME_VENDEDOR                     NOVO_SALARIO 
----------------------------------------------------- 
Cassia Andrade                         1695 
Maria Paula                               1695
select nome_vendedor,((sal_fixo*1.75)+120) as novo_salario
  from vendedor 
  where faixa_comissao='c' 
  order by nome_vendedor;               
Máximos (MAX) e Mínimos (MIN)
Totalizando Colunas (SUM)Resposta:
 SUM(QTD_PEDIDA)
--------------------
         900
Consulta: 
Mostrar a quantidade total pedida para o produto cimento, de código 200.
 
select SUM(qtd_pedida) 
  from item_pedido 
  where cd_produto=200;
Calculando Médias (AVG)
Resposta:
 
AVG(SAL_FIXO)
----------------- 
      1580
Consulta
Qual é a média dos salários fixos dos vendedores? 
 
select AVG(sal_fixo) 
   from vendedor;
Contando as Linhas (COUNT)
Resposta:
 COUNT(*) 
---------- 
           2
Consulta: Quantos vendedores ganham acima de R$ 2.000,00 de salário fixo? 
select COUNT(*) 
  from vendedor 
  where sal_fixo>2000;
A Palavra-Chave DISTINCT
Várias linhas de uma tabela podem conter os mesmos valores para as suas colunas (duplicidade), com exceção da chave primária.  Quando desejarmos eliminar a duplicidade, podemos inserir a palavra-chave DISTINCT após a palavra-chave SELECT
select DISTINCT cidade 
  from cliente;
Problema: Em que cidades, 
a nossa empresa possui clientes?
Resposta:
 CIDADE 
-------------------- 
guaiba 
niteroi 
resende 
rio de janeiro 
sao paulo 
volta redonda
Agrupando a Informação Selecionada (GROUP BY)
Existem ocasiões em que desejamos aplicar uma função de agregação, não somente a um conjunto de tuplas mas, também, organizar a informação em determinadas categorias. Isso é possível, através do uso da cláusula GROUP BY.
Problema: Listar o número de itens existente, em cada pedido. 
 
select no_pedido, count(*) as total_itens 
  from item_pedido 
  group by no_pedido;
Inicialmente, as linhas são agrupadas através do (s) atributo (s) fornecido (s) na cláusula GROUP BY; neste caso, no_ped. Em um segundo passo, é aplicada a operação COUNT (*) para cada grupo de linhas que tenha o mesmo número de pedido. Após a operação de contagem de cada grupo, o resultado da consulta é apresentado. Normalmente, a cláusula GROUP BY é utilizada em conjunto com as operações COUNT e AVG. 
A Cláusula HAVING
Às vezes, temos que definir condições e aplicá-las aos grupos, ao invés de fazê-lo cada linha, separadamente.  Por exemplo, suponha que desejemos listar todos os pedidos que possuam mais de um item. Essa condição não se aplica a uma única linha   separadamente, mas a cada grupo definido pela cláusula GROUP BY.  Para   exprimir   tal consulta, usamos a cláusula HAVING.  A condição da cláusula HAVING é aplicada após a formação dos grupos; logo, podemos usar funções de agregação na construção das condições da cláusula HAVING.
Aula 9 – 75,0
Recuperando Dados de Várias Tabelas (JOINS)
Sinônimos
Consulta: 
Exiba a relação dos  clientes  localizados   no   Rio   de  Janeiro   (ordenados alfabeticamente)  que têm pedidos do produto Chapa de Aço com prazos de entrega superiores a 15 dias. 
Utilizando Consultas Aninhadas (Subqueries)
Chamamos de consulta aninhada à consulta cujo o resultado é utilizado por outra consulta, de forma encadeada e contida no mesmo comando SQL.
Aula 10 – 37,5
Inserir Registros usando um select
Inserindo registro em uma tabela
Modificando um Registro
Excluindo Registros 
Transações
A execução de um programa, que inclui operações de acesso a um banco de dados, é chamada de transação. Se essas operações não alteram os dados do banco de dados, a transação é chamada de read-only transaction. 
A partir de agora, trataremos das transações que executam operações de atualização no banco de dados.  Logo, a palavra transação será usada para fazer referência a um programa que realiza operações que alteram registros de um banco de dados
Visões
Considerações sobre     segurança podem     exigir que determinados dados não estejam disponíveis para alguns usuários. Logo, não é desejável que o modelo lógico possa ser acessado indiscriminadamente.  Com base em questões de segurança, podemos      criar uma    coleção   de relações personalizadas    que   se ajustem   melhor    às necessidades    dos usuários   e que   levem   em   conta   asquestões de segurança. Tais relações são chamadas de visões.  
Uma visão, na terminologia SQL, é uma tabela que é derivada de outras tabelas.  Essas outras tabelas   podem    ser tabelas-base (criadas   através do comando CREATE TABLE) ou outras visões previamente definidas. Uma visão não está, necessariamente, fisicamente armazenada no banco de dados; ela pode existir apenas virtualmente, em contraste com as tabelas-base, cujas as tuplas se encontram fisicamente armazenadas no banco de dados.
Índices
Os   SGBD’s  utilizam     índices  para  tornar  mais  eficiente  a  recuperação  dos dados de um banco de dados. Um    índice  é  uma    estrutura  de  dados,   onde   são  armazenados     valores   e ponteiros, organizados de forma ascendente ou descendente, que torna possível localizar rapidamente as linhas de uma tabela, nas quais o valor desejado está armazenado. Os   índices   são  utilizados,   internamente,    pelo   SGBD,    ficando   totalmente transparente ao usuário a sua utilização.
Criando Índices
Um    índice  é construído   sobre  uma    ou  mais  colunas  de  uma  determinada tabela. Em SQL, um índice é criado através do comando create index, cuja forma geral é: 
CREATE [UNIQUE] INDEX <nome_índice>
ON <nome_tabela> (<lista_de_colunas>);
 
A cláusula UNIQUE é opcional, e a sua inclusão assegura a não existência de valores duplicados no índice a ser criado.
Eliminando Índices
Podemos eliminar um índice através do comando drop index, cuja forma geral é:  DROP INDEX <nome_índice>;
Segurança
A informação é vital para o sucesso de um negócio, mas quando ela é tratada de forma incorreta ou quando cai em mãos erradas, pode tornar-se um sério obstáculo para se atingir o sucesso. 
Visando garantir a segurança dos dados, os SGBD’s disponíveis no mercado fornecem uma série de facilidades para salvaguardar as informações por eles mantidas.  Tais facilidades são implementadas, concedendo-se e retirando-se privilégios dos usuários sobre os dados mantidos por um SGBD.

Continue navegando

Outros materiais