Vous êtes sur la page 1sur 58

BD TEMP Componentes

Componentes de um sistema de Banco de Dados Dados Hardware Software Usurios Sistema de Banco de Dados: Definio: Sistema de manuteno de registros por computador - ou seja, um sistema cujo objetivo global manter as informaes e torn-las disponveis quando solicitadas. Num sistema grande, dados dos bancos de dados so integrados e compartilhados. Integrao: o Por integrado, pode-se dizer que os Bancos de Dados podem ser imaginados como a unificao de diversos arquivos de dados que, de outra forma, seriam distintos, eliminando-se total ou parcialmente qualquer redundncia entre os mesmos. o Exemplo: Quando um funcionrio contratado pela Universidade, criado um cadastro com todos os seus dados. Se ele for aluno tambm, e tiver um cadastro parte, teremos uma redundncia de informaes. Compartilhamento: o Por compartilhado, pode-se dizer que parcelas de dados podem ser compartilhadas por diversos usurios num BD, no sentido de que todos os usurios podem ter acesso a mesma parcela de dados (e podem us-los com finalidades diferentes) e isto pode ser feito concorrentemente o Exemplo: No exemplo acima, os mesmos dados de um funcionrio poderia ser ao mesmo tempo, requisitado por vrios setores ao mesmo tempo: Pessoal, Financeiro e Acadmico. Imagine o impacto que pode ter se um deles estiver alterando os dados.

1. 2. 3. 4.

Dados

O que um dado? o Representao da informao que pode estar registrada em papel, quadro de aviso ou num HD. o Fatos fornecidos que descrevem uma caracterstica de um objeto ou evento do mundo real. o Elemento que mantm a sua forma bruta (texto, imagens, sons, vdeos, etc.), ou seja, sozinho no leva a compreender determinada situao. o Exemplos: Nome de um empregado

Nmero de horas trabalhadas Nmero peas em estoque Pedidos de venda Cor e peso da fruta Autonomia e carga da bateria Nmero de cmodos e rea do apartamento Etc.

Informao: o Informao este mesmo dado, porm, trabalhado, lapidado, contextualizado, ou seja, informao o dado, cuja forma e contedo so apropriados para um uso especfico. o Exemplos: Total de vendas mensais Lista de clientes ordenada por total comprado Mdia de alunos por turma Turmas com menos 10 alunos Peso total da grade de frutas Tempo de vida da bateria Preo final do apartamento Etc. Processo: o Srie de tarefas logicamente relacionadas, executadas para atingir um resultado definido. o Exemplos: Ordenao dos alunos pelo nmero de matricula Restaurao das tabelas Verificao de integridade dos dados Disparo de uma ao de alarme Etc. Conhecimento: o Regras, diretrizes e procedimentos usados para selecionar, organizar e manipular dados, para torn-los mais teis para determinado fim. o Exemplos: Backup dirio numa janela de 0 a 3 horas da manh Seleo dos registros de duas tabelas filtrando dados especficos Disparo de uma ao quando o saldo ficar negativo Etc.

Hardware

Composto de toda infraestrutura necessria para manter as unidades de armazenamento. Envolve principalmente unidades de disco de cabea mvel com algumas caractersticas especficas: o Tempo de posicionamento - seek time o Retardo rotacional o Cilindro, trilha

o Cabea de leitura/gravao Complementado com dispositivos de backup como robs Expandido no conceito de cluster e nuvem o Cluster: Sistema que compreende dois ou mais computadores ou sistemas que trabalham em conjunto para executar aplicaes ou realizar outras tarefas. Tem como caractersticas bsicas confiana, distribuio de carga e desempenho. o Nuvem: A ideia central dessa arquitetura prover uma ampla replicao de dados, distribuindo-os entre milhares e milhares de servidores, minimizando assim os aspectos de desempenho, e principalmente, de disponibilidade. Essa proposta quebra parte paradigma tradicional de centralizao de dados, transaes e de storage. Assim, foi desenhado um novo modelo de sistemas de armazenamento que atende ao objetivo de estender a disponibilidade. O conceito fundamental de ACID (atomicidade, consistncia, isolamento e durabilidade) teve que ser revisto de forma a ajustar a esse novo cenrio. Um dos grandes desafios do hardware do sistema de banco de dados minimizar o nmero de acessos a disco (entradas/sadas de disco) Outro ponto que onera o hardware de um sistema de banco de dados a necessidade de: o Segurana: Preservao do acesso fsico e virtual o Backup: Frequentes rotinas de cpias de dados o Redundncia: Duplicao das estruturas de armazenamento.

Software

Entre o banco de dados fsico (dados armazenados) e os usurios do sistema encontra-se o software Gerenciador de Banco de Dados, SGBD ou DBMS. Todas as solicitaes dos usurios de acesso ao banco de dados so manipuladas pelo SGBD Recursos providos pelo SGBD: o Criao de tabelas o Insero de dados o Recuperao de dados o Etc. Funo relevante: isolar os usurios do Bancos de Dados dos detalhes a nvel de hardware fazendo com que os usurios do SGBD tenham uma viso acima do nvel mais elevado que no exija conhecimentos tcnicos aprofundados.

Profissionais

Projetistas de BD Lgico: Profissionais com habilidade suficiente para interpretar as necessidades de armazenamento de dados e criar os modelos de bancos de dados utilizados pelo projetista para sua criao Projetistas de BD Fsico: Especialistas na tcnica de criar estruturas fsicas envolvendo hardware, software e processos que permita armazenar grandes bases de dados e oper-las por meio de mecanismos eficientes como discos, robs, rotinas, fitas e demais aparelhos componentes do sistema como um todo.

Implementadores de BD: Responsveis por receber o modelo (projeto) do Banco de Dados e torn-lo real com a utilizao de uma ferramenta (software) Programadores de aplicaes: responsvel pela definio dos programas de aplicao que usam o banco de dados usando linguagens como Java, DotNet, PHP, etc. Estes programas podem ser executados de forma online ou ainda processamento em batch Usurios finais: Interage com o sistema a partir de um equipamento acessando instantaneamente o BD por meio de uma das aplicaes desenvolvidas para esse fim ou alguma interface integrante do sistema, por exemplo, o padro SQL. Administradores de BD ou DBAs: Profissional com alto nvel de capacitao tcnica que tem a responsabilidade central sobre os dados operacionais.

Banco de Dados

Modelo Arcaico: o Kardex, Arquivo: Um conjunto de fichas que registravam os dados de objetos ou eventos. o Normalmente em papel e dispostos segundo uma tabela com linhas e colunas numeradas com uma etiqueta na parte superior visvel o Ordenao: Alfabtica ou numrica, na parte externa do armrio e internamente por pastas com etiquetas. o Infraestrutura: Armrio de ferro ou de madeira, com gavetas que mantinham as pastas suspensas por meio de guias. Modelo antigo: o Rotinas de tratamento de arquivos no prprio cdigo o Fatores inconvenientes [Alves, William Pereira]: Ausncia de controle de acesso concorrente de vrios usurios Impossibilidade de se executar mais de um processo ao mesmo tempo num arquivo de dados A definio da estrutura de do arquivo armazenada no prprio cdigo do aplicativo Inconsistncia, redundncia, dificuldade de acesso e isolamento dos dados. Segurana dos dados Duplicidade de informaes entre os vrios arquivos Aplicao dependente dos dados Incompatibilidade dos formatos de arquivos. Modelo Atual: o SGBDs mantidos em discos com enorme capacidade o Formato eletrnico organizados em tabelas com associaes entre elas de alto desempenho o Ordenao: Baseada em chaves para fcil localizao e recuperao no padro SQL o Infraestrutura: Centralizada e mantida normalmente em estruturas cliente-servidor ou na nuvem

Caractersticas: Aplicativos no tem nenhum conhecimento dos detalhes relativos aos mtodos de gravao e leitura fsica dos dados nas tabelas Diversos programas podem acessar um mesmo BD SGBD oferece alta produtividade no desenvolvimento e manuteno dos softwares aplicativos Qualidade dos Softwares se tornou maior Informaes extradas se tornaram mais confiveis e com maior credibilidade

Modelos em expanso: o Distribudo o NoSQL o Semnticos o ... Banco de Dados: Conjunto de dados relacionados entre si armazenados segundo uma determinada lgica de forma que possam ser recuperados quando necessrio. Possui trs caractersticas bsicas [Alves, William]:

1. Um BD representa uma poro do mundo real (minimundo) => interao com o mundo real 2. Um BD um conjunto lgico e ordenado de dados que possuem algum significado => fonte de informao 3. UM BD construdo e povoado com dados que tm um determinado objetivo, com usurios e aplicaes desenvolvidas para manipul-los=> pblico que demonstra interesse nos dados.

Porte de um BD: o Pode ser pequeno, mdio ou grande. o Independente do tamanho deve ser confivel, eficiente e acessvel. o Exemplos de porte de banco de dados: Banco: com abrangncia nacional => grande porte Biblioteca de uma escola => mdio porte Base de conhecimento local => pequeno porte Vdeos no youtube => grande porte Etc.

SGBD

Um Sistema Gerenciador de Banco de Dados uma coleo de programas que permite aos usurios criar e manter um banco de dados um sistema de software de uso geral que facilita o processo de definio, construo, manipulao e compartilhamento de bancos de dados entre diversos usurios e aplicaes. o Definir um banco de dados envolve especificar os tipos, estruturas e restries dos dados a serem armazenados cuja informao descritiva pode ser mantida em dicionrios ou catlogos chamados de metadados.

o o

A construo do banco de dados o processo de armazenar os dados em algum meio controlado pelo SGBD A manipulao de um banco de dados inclui funes como consulta ao banco de dados para recuperar dados especficos, atualizao de dados e gerao de relatrios ou consultas. O compartilhamento de um banco de dados permite que diversos usurios e programas acessem-no simultaneamente

Alm dessas funes, um SGBD permite: o Criao de consultas com base em padres pr-definidos o Controle e gerao de transaes fazendo com que dados sejam lidos ou gravados no banco de dados o Proteo do sistema contra defeitos (ou falhas) de hardware ou software o Controle e proteo de segurana contra acesso no autorizado ou malicioso o Escalabilidade, ou seja, capacidade de evoluir e crescer de acordo com as demandas. o Controle de redundncia evitando replicaes de dados e estruturas o Garantia de restries de integridade o Backup e recuperao de dados. Passos para a criao de um BD o Especificao o Anlise de requisitos o Projeto Conceitual o Projeto Lgico o Projeto Fsico Arquiteturas: o Cliente-Servidor o Distribuda o Mvel o ... Solues disponveis: o Interbase o MySQL o Access o Oracle o PostgreSQL o Firebird o Informix o HSQLDB o IBM DB2 o mSQL o SQL Server o TinySQL o JADE o ZODB o Sybase

o o

Visual Foxpro Etc.

O que se espera de um BD?

1. Permitir aos usurios a criao de novas bases de dados e especificao de seus esquemas (estrutura lgica de dados) usando uma DDL (data-definition language) 2. Dar aos usurios a habilidade para consulta aos dados e modific-los usando uma linguagem apropriada normalmente chamada de DML (data-manipulation language) 3. Suportar o armazenamento de grandes quantidades de dados (terabytes ou mais) por um longo perodo de tempo com acesso eficiente 4. Habilitar a durabilidade, a recuperao do banco de dados face a falhas, erros de vrios tipos ou mal uso intencional 5. Controlar o acesso de muitos usurios simultneos sem permitir interaes inesperadas (isolamento) e sem aes sobre os dados que sejam executadas parcialmente mas no completamente (atomicidade)

Classificao de Bancos de Dados

Quanto ao Modelos de dados


Hierrquico

Primeiro tipo de banco de dados Conceito fundamental: registro e relacionamento pai-filho Nesse modelo de dados, os dados so estruturados em hierarquias. Os registros possuem sub-registros e assim sucessivamente, formando uma ramificao semelhante a uma rvore. Dois registros so unidos por um elo, um ascendente e outro descendente. Um ascendente pode ter vrios descendentes, mas cada descendente tem apenas um ascendente direto. As razes so os nicos registros que no possuem PAI e nenhum nvel de ascendente pode faltar Registro: o Coleo de valores que representam informaes sobre uma dada entidade de um relacionamento Relacionamento Pai-Filho: o Um tipo de registro do lado Pai pode se corresponder com vrios (ou nenhum) tipos de registros do lado Filho Uma ligao uma associao entre dois registros O relacionamento entre um registro-pai e vrios registros-filhos possui cardinalidade 1:N

Os dados organizados segundo este modelo podem ser acessados segundo uma sequencia hierrquica com uma navegao do topo para as folhas e da esquerda para direita Um registro pode estar associado a vrios registros diferentes, desde que seja replicado. A replicao possui duas grandes desvantagens: o Pode causar inconsistncia de dados quando houver atualizao o O desperdcio de espao inevitvel. Exemplos: Um banco de Dados hierrquico representando cliente... o Nome, Rua e Cidade. o Nmero da Conta e Saldo Onde cada cliente tem uma conta

Propriedades:

1. Um tipo de registro que no possui um tipo de registro pai denominado raiz 2. Com exceo do tipo de registro raiz, todos os demais correspondem a tipos de registros filho dentro de um nico tipo de relacionamento. 3. Um tipo de registro pai pode aparecer em qualquer nmero de relacionamentos 4. Um tipo de registro filho, que no possui descendentes denominado folha.

IMS - Information Management System: 1o. Banco de dados hierrquico conhecido. Desenvolvido pela IBM e Rockwell International. Consideraes sobre BD hierrquico: o Pode ser mapeado partir de um diagrama Entidade Relacionamento o Consultas complexas o O modelo impe restries descrio do mundo real atual o Requer boas noes para a estruturao dos dados o O modelo hierrquico fortemente dependente da implementao. Problemas: o Complexidade dos diagramas de estrutura de rvore o No pode haver ciclos no grfico bsico de um diagrama de estrutura de rvore o Restries cardinalidade dos links (de muitos para muitos (N:M) e de muitos para um (N:1)) o No diferencia objeto de associao com atributo o Ausncia de facilidades de consultas declarativas o Necessidade de navegao por ponteiros para acesso a informaes o Pode gerar dados incoerentes e ainda redundncia

Relacional

Organiza os dados em tabelas formadas por linhas e colunas

Como na Matemtica, podemos efetuar operaes entre dois ou mais conjuntos, ou entre duas ou mais tabelas. Permitem criar ligaes entre duas ou mais tabelas usando campos comuns Uma operao de consulta gera uma tabela virtual

As 12 regras de Codd:

1. Regra de informaes: base em tabelas e campos em comum 2. Regra de acesso garantido: referncia a parmetros especficos 3. Tratamento de valores nulos: valores nulos devem ter tratamento diferente de valores em branco 4. Catlogo relacional ativo: Mantm a estrutura do banco 5. Insero, excluso e alterao em bloco: capacidade de permitir manipulao de registros em grupo. 6. Linguagem de manipulao de dados abrangentes: permite manipulao de dados por meio de aplicativos 7. Independncia fsica dos dados: Transparncia - Separa as aplicaes de usurios da base de dados fsica 8. Independncia lgica dos dados: Transparncia do esquema lgico do banco de dados, exemplo: vises. 9. Regra de atualizao de vises: aplicativos devem ser capazes de alterar vises; 10. Independncia de integridade: devem estar desvinculadas dos aplicativos 11. Independncia de distribuio: a diversificao dos sistemas no pode afetar a funcionalidade dos aplicativos 12. Regra no subversiva: sistema deve ser capaz de impedir transgresses nos mecanismos de segurana Em bancos de dados relacionais pode ser necessrio um campo comum em diversas tabelas para que seja possvel definir relacionamentos entre elas.
Orientado a objetos

Utilizam conceitos tais como Entidades, Atributos e Relacionamentos. Uma entidade um objeto que representado na base de dados. Um atributo uma propriedade que descreve algum aspecto de um objeto Relacionamentos entre objetos so facilmente representados em modelos de dados de alto-nvel Representao de baixo nvel: o Descreve como os dados so armazenados no computador, representando informaes em formato de registros, ordem dos registros e caminho de acesso. Um caminho de acesso uma estrutura que facilita a busca de um registro particular na base de dados Esquema: o Descrio das estruturas e das operaes de um banco de dados especfico, utilizando um modelo de dados.

o o o

Especificado durante o projeto da base de dados, sendo que a expectativa de mudanas normalmente no grande A forma de visualizao de um esquema chamada diagrama do esquema Muitos modelos de dados tm convenes para criar diagramas (mostrar o modelo atravs de um desenho)

Instncia: So os dados da base de dados num momento especfico. Pois os dados existentes podem ser modificados A necessidade de armazenar dados mais complexos levou criao dessa modalidade de Banco de Dados Exemplos: o SIG o CAD o CAM o Imagens o ... Baseado na definio por meio de objetos com suas propriedades e operaes O registro mais parecido com uma classe Padro de estrutura: ODMG - Object Data Manager Group

Rede

Utilizado principalmente no final da dcada de 60 e durante a dcada de 70, o modelo em rede surgiu como uma extenso ao modelo hierrquico, eliminando o conceito de hierarquia e permitindo que um mesmo registro estivesse envolvido em vrias associaes. Organiza os dados em uma estrutura formada por vrias listas, que definia uma confusa rede de ligaes, estrutura similar a um grafo direcionado. Cada registro filho pode ser ligado a mais de um registro pai, possibilitando a formao de ligaes mais complexas, porque no h a restrio a um s tipo de relacionamento que vigora. Conhecidos como DBTG (Data Base Task Group) ou CODASYL Largamente utilizados em computadores de grande porte Mesmo registro pode participar de vrios relacionamentos Possibilidade de acesso direto a determinado registro/n da rede Linguagens comuns: COBOL, PASCAL e FORTRAN

Estruturas fundamentais: Registros (Records) e Conjuntos (Sets) Permite que vrias tabelas sejam usadas simultaneamente atravs do uso de ponteiros

Algumas colunas contm ponteiros para outras tabelas ao invs de dados, assim, as tabelas so ligadas por referncias. O modelo de banco de dados em rede amplia o modelo de registros permitindo a adio de mltiplos registros Uma coluna do registro pode ser definida como, uma referncia a uma ou mais entradas de um registro diferente. Assim os registros so relacionados, por meio de referncias o que pode ser visualizado como uma estrutura em rede. Tambm utilizam ponteiros para fazer referncia aos registros propriamente ditos Os dados so representados por uma coleo de registros e os relacionamentos entre dados so representados por meio de links Um link uma associao entre exatamente dois valores Acesso a qualquer n da rede sem passar pelo n raiz Exemplos: Adabas e IDMS o Adabas: Considerado por alguns como um dos primeiros SGDBs produzidos comercialmente. Inicialmente foi lanado para mainframes da IBM, porm atualmente o Adabas suportado em diversas plataformas, incluindo o OpenVMS, Unix, Linux e Windows. Adabas tem mantido a posio como um dos mais rpidos banco de dados OLTP oferecendo a funcionalidade 24x7 Baseado em Listas Invertidas o IDMS: Integrated Data Management System ou Sistema de Gerenciamento de Dados Integrado um banco de dados em rede da Computer Associates e foi desenvolvido h cinco dcadas So executados em minicomputadores at poderosos mainframes. Problemas: o O modelo de rede fortemente dependente da implementao o Registros artificiais precisam ser criados para implementar relacionamentos muitos para muitos o As consultas so complicadas: o programador forado a pensar em termos de links e, em como percorr-los para obter as informaes de que necessita. o Essa manipulao de dados chamada navegacional o Manteve-se, durante anos, frente do modelo relacional porque, inicialmente, as implementaes do modelo relacional eram ineficientes. E hoje, por que desenvolvedores escolhem Graph Database ao invs de um banco de dados tradicional? o Jonathan Allen o "Ao contrrio dos bancos de dados que armazenam seus dados em linhas, colunas ou pares de chave-valor, um banco de dados de grafos armazena toda informao em uma rede de ns e arestas. As arestas representam o relacionamento entre os ns que representa os objetos. Devido aos ns e

arestas serem representados como objetos (os quais os desenvolvedores esto acostumados) possvel definir atributos (tambm chamado de propriedades) a eles. Adicionando uma direo para uma aresta cria o conhecido grafo de propriedades que representa a explcita estrutura de dados dentro de um banco de dados de grafo. Portanto, diferente de outras abordagens de banco de dados onde apenas implicitamente possvel formar uma estrutura de grafos, um banco de dados de grafo explicitamente representa um grafo. Enquanto outros bancos de dados precisam usar ndices e algumas estruturas auxiliares (como tabelas de relacionamento para fazer JOINs) um banco de dados de grafo pode percorrer de um objeto aos seus objetos relacionados, pois esses objetos so organizados para possuir adjacncias sem ndices. Existem diversos casos de uso onde banco de dados de grafos a opo mais natural. Por exemplo, em redes sociais mais fcil utilizar uma estrutura de grafos para representar relaes entre amigos e percorrer e realizar pesquisas como "busque todos os amigos dos amigos de meus amigos". Alm disso, algoritmos comuns baseados em grafos, como pesquisas atravs de um caminho, so fceis de implementar percorrendo o grafo."

Vantagens no uso do SGBD: o Responsabilidade de manter a integridade dos dados do sistema o Checagem fica a cargo do SGBD e no do programador (ex.: como acontecia com a linguagem Clipper) o Facilita a manuteno no armazenamento dos dados, nos quais so modificados atravs de procedimentos do prprio sistema. o Balanceamento de carga o Responsabilidades do SGBD (ficam com o SGBD) e responsabilidades da aplicao (ficam com a aplicao) o Rotinas de backup o Procedimentos de concorrncia ao sistema o Ambientes distintos entre Desenvolvimento (ou Testes), Homologao (ou Qualidade) e Produo. o Ambientes em servidores fsicos diferentes

Quanto ao Nmero de Usurios Suportados

Monousurio: apenas um usurio por vez. Dbase III, Dbase IV, FoxBase, FoxPro. Multiusurio: Acesso de vrios usurios ao mesmo tempo. Fator concorrncia.

Quanto Localizao

Centralizado: Sistema de gerenciamento e banco de dados esto localizados na mesma mquina, o servidor de banco de dados Distribudo: Sistema gerenciador e banco de dados armazenados em diferentes mquinas.

Caractersticas dos Bancos de Dados

Os sistemas de gerenciamento de banco de dados tem por incumbncia bsica manter os dados estveis, ou seja, devem cuidar de toda a manuteno e atualizao dos registros A construo de rotinas, criao de interface ou desenvolvimento de aplicativos completos deve ficar a cargo de uma ferramenta destinada a essa tarefa, como linguagem de programao que se comunica com o gerenciador utilizando um mecanismo oferecido por ele, como drives de comunicao. o Exemplos: ODBC, ADO (ActiveX) e JDBC

Abstrao de dados

Um SGBD oferece aos usurios uma representao conceitual dos dados que no inclui muitos dos detalhes de como os dados so armazenados ou como as operaes so implementadas Este isolamento entre programas e dados se resume na capacidade de se alterar a estrutura do BD sem que seja necessria a modificao nos aplicativos Como a definio da estrutura do banco est gravada no catlogo e no dentro do cdigo-fonte do programa, tudo o que a aplicao precisa consultar esta estrutura. A isso denominamos independncia de dados referenciada como abstrao de dados. Exemplo: o Um registro de cliente estruturado internamente por meio de um nome, a posio inicial do registro e o tamanho em bytes. o o que o sistema precisa para organizar os dados no BD o Acontece que quem pretende pesquisar, filtrar, operar ou descartar estes dados nada se importa com tamanho e posio. o Porm so informaes obrigatrias para o SGBD que ficam transparentes para o usurio final.

Metadados

Num sistema de BD, no h somente os dados em si gravados, mas tambm toda a definio da estrutura das tabelas que o compem. Essa estrutura denominamos de catlogo do sistema: o Nomes das tabelas o Definies dos seus campos o Formato de armazenamento o ndices que foram criados o Restries relativas aos dados So os metadados.

Compartilhamento

Um BD preparado para o acesso de inmeros usurios, portanto requer um controle de concorrncia que na situao onde vrios usurios tentam atualizar um dado, que o faam de forma controlada de maneira que os resultados das operaes sejam corretos. Consiste na reutilizao dos dados do BD pelo maior nmero possvel de aplicaes dentro da empresa. Nesse sentido, os dados do BD devem ser muito bem planejados e estruturados. Portanto, este objetivo de banco de dados esta mais ligada atividade de anlise e projeto de BD. O compartilhamento de dados visa diminuir a redundncia de dados, considerando-o como um recurso da empresa e no propriedade de setores isolados da organizao. Para implementar o compartilhamento de dados necessrio que a empresa disponha de recursos de rede, que permitam colocar o BD ao alcance dos diversos usurios. Alm disso, necessrio que o SGBD possua um competente sistema de segurana, para que se estabelea a privacidade de dados, atravs de mecanismos de restrio de acesso. D exemplos de situaes onde existe redundncia de dados? D exemplos de situaes onde o compartilhamento de dados necessrio?

Suporte a mltiplas vises

Sendo o banco de dados multiusurio, imprescindvel que ele permita a cada um ter sua prpria viso dos dados. Esta viso na verdade um subconjunto do banco de dados como um todo, que pode ser representado como tabela de dados virtuais gerados a partir de consultas. Exemplos: o Num sistema acadmico, podemos ter as seguintes vises: o Aluno acessa relatrio de notas com suas notas e a situao final (A ou R) o Professor consulta dados obtendo dados de todos os alunos da turma detalhando cada nota e situao o Pai acessa sistema buscando situao final do filho Novas queries?

Processamento de transaes

Os SGBDs, em geral, so Multiusurios e processam simultaneamente operaes disparadas por vrios usurios, concorrentemente.

Deseja-se alta disponibilidade e tempo de resposta pequeno e execuo intercalada por conjuntos de operaes Operaes so chamadas transaes O uso concorrente possvel devido ao conceito de Multiprogramao Uma transao uma unidade da execuo de programa que acessa e possivelmente atualiza vrios itens de dados. Korth (2006) Devido caracterstica de suporte a vrios usurios simultneos, preciso que o sistema de gerenciamento possua capacidade de controlar o acesso concorrente para assegurar que as atualizaes efetuadas pelos diversos usurios sejam executadas de maneira controlada para no ocorrerem erros nos dados. Qualquer pessoa que costuma frequentar fruns de discusso deve, em algum momento, ter se deparado com uma pergunta recorrente, feita, especialmente, por aqueles que esto iniciando ou migrando de BD para algum tipo de servidor de banco de dados como o Interbase, SQL Server, Oracle ou outro: como fazer para travar um registro e impedir que dois usurios tentem alter-lo ao mesmo tempo? Seria uma pergunta fcil de responder se fechssemos os olhos para as implicaes que essa mudana pode trazer para o desenvolvimento da aplicao e at mesmo para o profissional que lanou a pergunta. A questo real seria: o realmente necessrio travar um registro para impedir que dois usurios eventualmente tentem modific-lo ao mesmo tempo? E, para respond-la, necessrio pensar em outra questo: o Quais as implicaes de travar um registro de forma a impedir seu acesso concorrente? Exemplo de transferncia de fundos: o Transao para transferir R$50,00 da conta A para a conta B: read(A) A = A - 50 write(A) read(B) B = B + 50 write(B) Requisito de atomicidade: Se a transao falhar aps a etapa 3 e antes da etapa 6, o sistema deve garantir que suas atualizaes no sejam refletidas no banco de dados, ou uma inconsistncia ir resultar Requisito de consistncia: A soma de A e B inalterada pela execuo da transao Requisito de isolamento: Se entre as etapas 3 e 6, outra transao receber permisso de acessar o banco de dados parcialmente atualizado, ele ver um

1. 2. 3. 4. 5. 6.

banco de dados inconsistente (a soma A + B ser menor do que deveria ser). Isso pode ser trivialmente assegurado executando transaes serialmente

Novos cases?

Enfoque dos Bancos de Dados

Incumbncia bsica do Banco de Dados: o manter os dados estveis, ou seja, cuidar de toda a manuteno e atualizao dos registros Funes bsicas: o Mtodos de acesso: DDL (Data Definition Language): especificao do esquema do BD (dados e seus tipos de dados, ndices, ...) DML (Data Manipulation Language): manipulao de dados Processamento eficaz de consultas: Exemplo, buscar professores que lecionam em turmas lotadas em salas do quarto andar o Integridade Semntica: Garantia de dados sempre corretos com relao ao domnio de aplicao Exemplos: estados vlidos para os dados (sexo; Estado Civil), relacionamentos vlidos entre os dados o Segurana: Evitar violao de consistncia dos dados Segurana de acesso (usurios e aplicaes) - matrizes de autorizao, vises Segurana contra falhas: monitorao de transaes, transaes, categorias de falhas Concorrncia: evitar conflitos de acesso simultneo a dados por transaes. Principais tcnicas: bloqueio (lock) e timestamp o Independncia: transparncia da organizao dos dados, nveis de independncia, fsica e logica A construo de rotinas, criao de interface ou desenvolvimento de aplicativos completos devem ficar a cargo de uma ferramenta destinada a essa tarefa Linguagem de programao que se comunica com o gerenciados utilizando um mecanismo oferecido por ele como drives de comunicao: o ODBC: Open Data Base Connectivity. Conexo criada para definir uma conexo entre um computador e um banco de dados em outro sistema. Esta conexo contm as informaes necessrias para permitir a um usurio de computador o acesso s informaes armazenadas que no esto disponveis localmente. necessrio definir o tipo de SGBD e o driver apropriado para a conexo. o ADO: ActiveX Data Objects. Teve a inteno de forneceder um mtodo de acesso aos dados independente para um amplo nmero de bases de dados. Isto significa que pode-se isar a mesma funo para qualquer um, Access, Microsoft SQL Server, Sybase, Oracle, etc. Pode-se usar o ADO

com Python, Delphi, VB, ASP, Visual C++, any .NET language, Borland C++ Builder, etc. JDBC: Java database connectivity. API Java API que permite acessar qualquer tipo de dado tabular, especialmente os armazenados num banco de dados relacional. Ajuda a escrever aplicaes que gerenciar principalmente 3 atividades. Conexo fonte dos dados como um banco de dados Envio de declaraes de consulta e atualizao para o banco de dados Recuperao e processamento de resultados recebidos do banco em resposta consulta

Banco de Dados Relacionais

Tabelas e Relaes

Idealizado por Ted Codd, da IBM Research, atualmente, o modelo de dados mais utilizado pela indstria Baseado na teoria dos conjuntos utilizando conceitos de relaes matemticas Definio mais formal do termo relao (C. J. Date):

"Dada uma coleo de n tipos ou domnios Ti (i= 1, 2, 3, ..., n), no necessariamente todos distintos, r ser uma relao sobre esses tipos, se existir em duas partes, um cabealho e um corpo, onde: a. O cabealho um conjunto de n atributos da forma AiTi: onde Ai (que devem ser todos distintos) so os nomes dos atributos de r e Ti so os nomes de tipos correspondentes (i= 1, 2, 3,..., n) b. O corpo um conjunto de m tuplas t, onde t por sua vez um conjunto de componentes da forma Ai:vi, no qual vi um valor do tipo Ti - o valor do atributo correspondente ao atributo Ai da tupla t(i = 1, 2, 3, ..., n) Os valores de m e n so chamados respectivamente de cardinalidade e grau da relao r."

O BD Relacional representado por colees de relaes, que no mundo real assumem a forma de tabelas de registros considerada a unidade bsica As tabelas so compostas por linhas que representam uma instncia de uma entidade do mundo real

As colunas (atributos) de uma tabela representam campos e as linhas (tuplas) representam registros A tabela pode ser considerada como uma relao e ento vista como um arquivo de dados onde os registros so gravados fisicamente no banco de dados seguindo uma certa ordem: de acordo com a entrada ou segundo uma chave primria Uma tabela somente pode ser considerada uma relao quando as seguintes condies forem satisfeitas: o A interseo de uma linha com uma coluna deve necessariamente conter um valor atmico o Todos os valores de uma coluna devem ser do mesmo tipo de dado o Cada coluna deve ter um nome nico o No h duas ou mais linhas idnticas, ou seja, com os mesmos valores em suas colunas.

Exemplo

Exemplo: Membros de um clube de colecionadores de moedas o Tabela 1: membros telefone email 3212Srgio Bernardes advogado sbernardo@coin.com 3219 3243Nivaldo Duarte bancario nivaldo.duarte@coin.com 8539 3232Andre Ferreira garcom andref@coin.com 4398 3212Janete Lourenco advogado janetelourenco@coin.com 4397 3234Margarete Pires comerciaria mpires@coin.com 3482 nome sobrenome profissao

idmembro 1221 9375 9439 3420 6439

Nesta tabela, o primeiro campo de cada registro contm o mesmo tipo de dado: um cdigo de identificao do membro chamado idmembro O segundo campo de cada registro contm o nome do membro O terceiro campo contm o sobrenome e assim por diante No h nada especial na ordem dos campos, pode-se reagrupar, adicionar ou remover campos sem afetar a funcionalidade da tabela

Porm, dentro da mesma tabela, no se pode fazer com que o campo idmembro seja o primeiro campo em um registro e o segundo campo em outro registro Nem se pode fazer com que um registro contenha um campo a mais ou a menos que outro registro

Todo SGBD relacional precisa propiciar trs funes para acessar os dados:

1. Select: Apresenta uma tabela mostrando somente aqueles registros que tenham valores especificados em campos determinados. Ao: "Recupere todos os registros da tabela membros cuja profisso seja igual a advogado" 2. Project: Apresenta uma tabela que no inclui todos os seus campos. Ao: "Obtenha somente os campos nome e sobrenome da tabela membros" 3. Join: Apresenta uma combinao de duas tabelas como se elas fossem apenas uma. O resultado uma tabela temporria que o SGBD monta combinando os valores dos registros de uma tabela com os valores dos registros de outra tabela e ento combinando os campos dos dois registros juntos.

Para mostrar o exemplo de uma combinao destas, precisamos de uma segunda tabela. Tabela 2: venda Moeda 2o reis 20 gold Nickel Penny Penny Penny ano quantidade idmembro preco 1889 6 1221 32.00 1890 2 9439 100.00 1899 100 9375 0.06 1850 1 6439 1.05 1850 4 1221 1.00 1850 5 3420 0.95

pais Brasil EUA EUA EUA EUA EUA

A Tabela acima mantem as moedas a venda com seus preos e respectivos proprietrios Observa-se um campo comum s duas tabelas chamado idmembro

Dessa forma, podemos ordenar ao SGBD: o "Combine as tabelas com base em idmembro que mostre": venda.pais venda.moeda venda.ano

venda.quantidade venda.preco membros.idmembro membros.email

O resultado deve ser o seguinte: Tabela 3: Moeda 20 reis 20 gold Nickel Penny Penny Penny ano quantidade idmembro preco email 1889 6 1221 32.00 sbernardo@coin.com 1890 2 9439 100.00 andref@coin.com 1899 100 9375 0.06 nivaldo.duarte@coin.com 1850 1 6439 1.05 mpires@coin.com 1850 4 1221 1.00 sbernardo@coin.com 1850 5 3420 0.95 janetelourenco@coin.com

pais Brasil EUA EUA EUA EUA EUA

Domnios

Designa o tipo de dado que cada coluna de uma tupla pode conter Normalmente d-se o nome aos domnios como forma de identific-los e tambm auxiliar na interpretao do valores que eles representam Tambm devem ser declarados num domnio, o tipo de dado que deve ser aceito e o tamanho da informao Exemplos: o CNPJ: 14 dgitos divididos em trs blocos: 1o. o nmero da inscrio propriamente dito 2o. localizado aps a barra, representa um cdigo nico para a matriz ou filial 3o. representados pelos dois ltimos valores chamados de dgitos verificadores (DV) Os dgitos verificadores (DV) so criados a partir dos doze primeiros. O clculo feito em duas etapas utilizando o mdulo de diviso 11. Processo: Calcular os dgitos verificadores de um CNPJ hipottico, por exemplo, 11.444.777/0001-XX. o CPF: 11 dgitos: 9 + 2 o Titulo de Eleitor: 8 + 2 o http://ghiorzi.org/cgcancpf.htm

Um domnio tambm pode ser til para restringir os dados que devem ser gravados em um atributo/campo Exemplos: o Data Nascimento: A partir de 01/01/1900 o Estado Civil: Casado, Solteiro, Vivo, Separado, Divorciado, ... o Situao Aluno: Regular, Trancado, Jubilado, Abandono, ... Assim como na Matemtica, todos os elementos pertencentes a um conjunto devem ser distintos, uma tabela de bancos de dados deve conter registros, que tambm so nicos, ou seja, os valores de todos os seus campos no podem se repetir. Da mesma forma, no se pode ter registros cujo campo que seja chave primria esteja sem valor, normalmente definido como nulo ou branco. Em SQL, isso pode ser resolvido, acrescentando a clusula NOT NULL linha que o atributo definido (Restrio de Integridade da Entidade) Outro tipo de restrio muito importante a Restrio de Integridade Referencial que existe entre duas tabelas e cuja funo prevenir a inconsistncia de dados. Exemplo: Controle de Estoque Descreva um conjunto de tabelas que controlem dados de produtos com suas categorias o Tabela Categorias possua um relacionamento com a tabela Produtos o Cada produto se enquadra em uma categoria o Suponha que um registro de Categoria seja excluido da tabela Categorias o A tabela Produtos contm registros que fazem referncia categoria excluda o Teramos ento os registros rfos Soluo: Chave Estrangeira

Chaves

Chave um componente de uma relao que pode ser formada por um ou mais atributos, cuja funo permitir identificar uma linha na relao, ou registro numa tabela. Superchave: o Representa uma restrio capaz de prevenir a existncia dos mesmos valores em atributos de duas ou mais entidades diferentes, o que em sntese torna possvel identificar uma entidade unicamente. o um conjunto de um ou mais atributos que, tomados coletivamente, nos permitem identificar de maneira unvoca uma entidade em um conjunto de entidades. Em outras palavras, no podem existir duas ou mais linhas da tabela com o(s) mesmo(s) valores de uma Super-Chave o Exemplo:

O atributo CPF do conjunto de entidades CLIENTE suficiente para distinguir uma entidade CLIENTE de outra. Assim, o CPF uma superchave Do mesmo modo, a combinao de NOME_CLIENTE e CPF superchave para o conjunto de entidades CLIENTE J o NOME_CLIENTE no superchave de CLIENTE.

Chave Candidata: o Representa um conjunto mnimo de atributos que podem identificar uma tupla dentro de uma relao, da mesma forma que faria uma chave primria o So chamadas de candidatas porque podem perfeitamente ser chaves primrias da relao o Exemplo: Veculo com os atributos chapa, chassis e renavam o Suponha uma combinao de nome_cliente e rua_cliente seja suficiente para distinguir todos os membros do conjunto de entidades cliente, assim como o atributo cpf, sozinho. Ento (cpf) e (nome_cliente, rua_cliente) so chaves candidatas. Embora os atributos (cpf, nome_cliente), juntos, possam, distinguir as entidades cliente, sua combinao no forma uma chave candidata, uma vez que cpf, sozinho, uma chave candidata. Chave Primria: o Chave candidata escolhida para identificar unicamente uma tupla e definir uma ordem fsica das tuplas dentro de uma relao o Chaves cujos atributos so usados para identificar as tuplas em uma relao. Geralmente, escolhida a chave candidata de menor tamanho. Chave Estrangeira: o Atributos de uma relao que fazem referncia chave primria de outra relao, ou at mesmo prpria Exerccio: o Identifique as chaves primrias: Uma escola necessita de um sistema de controle acadmico Esse sistema dever possibilitar que sejam persistidos os alunos, professores, disciplinas e cursos Dever prover a efetivao de matrculas dos alunos em um determinado curso O enquadramento de professores em uma determinada disciplina A composio desses cursos pelas disciplinas

Modelo Entidade-Relacionamento

Uma base de dados modelada como o conjunto de entidades o associaes entre entidades

Entidade: um conceito com existncia independente com objetos distintos de outros objetos o com existncia fsica ou no o com um conjunto de atributos especficos o e um valor para cada um desses atributos Exemplo: empregados

Exemplo

Entidades cliente e emprestimo o cada uma com seus atributos o ligadas pelo relacionamento beneficiario

Tipos de atributos

Atributo: propriedade da entidade o Exemplo: nome, endereco, sexo, datanascimento Atributos podem ser o simples ou compostos exemplo: nome, sexo, estadocivil, endereo o de valor nico ou valor mltiplo exemplo: telefone o derivados exemplos: Idade, se j existir a data de nascimento Digito Verificador Status Atributos compostos, multi-valor e derivados o Associaes tambm podem ter atributos

Cardinalidade de uma associao

Uma associao pode ser entendida como um relacionamento entre instncias de Entidades devido a regras de negcio Normalmente ocorre entre instncias de duas ou mais Entidades, podendo ocorrer entre instncias da mesma Entidade (auto-relacionamento). Por que a associao necessria? o Quando existem vrias possibilidades de relacionamento entre o par das entidades e se deseja representar apenas um o Quando ocorrer mais de um relacionamento entre o par de entidades

Para evitar ambiguidade Quando houver auto-relacionamento Para definir o nmero de ocorrncias de uma entidade usamos o conceito de Cardinalidade. A Cardinalidade indica quantas ocorrncias de uma Entidade participam no mnimo e no mximo do relacionamento. nro-conta a1 a1 a2 data-acesso 20/09/2012 19/09/2012 01/06/2012

o o

id-cliente c1 c2 c3

Exemplos:

Em alguns exemplos, podemos ter uma Seta indica entidade um em associaes

Papis (roles)

Associaes entre a mesma entidade o papis ajudam a clarificar o Exemplo: Professor ministra disciplina Disciplina ministrada pelo professor Alunos pertence a turma Turma contm alunos Atendente aprova emprstimos Aluno solicita emprstimos Gerente autoriza emprstimo

Chaves de associaes

A chave da associao depende da cardinalidade o se a associao for muitos para muitos um para muitos

muitos para um um-para-um Exemplo: Veculo (placa, chassis,motor) Exerccio: o Desenvolver a avaliao das chaves para a seguinte situao: Nota fiscal e Itens da Nota Fiscal Definir tabelas, associaes e chaves Avaliar o seguinte problema: Um sistema de lotao de pessoas onde ... o empregado pode fazer apenas uma tarefa em cada agncia o empregados possuem diferentes tarefas em diferentes agncias Seta pode definir a cardinalidade

Chaves

A chave pode ser o super-chave qualquer conjunto de atributos que identificam univocamente o chave candidata conjunto mnimo de atributos o chave primria a chave candidata escolhida normalmente prefere-se um atributo separado por si s, mas h chaves compostas por vrios atributos

Entidade fraca e Entidade forte

Pode haver algum tipo de entidade que no possui nenhum atributo-chave, o que significa que ficamos impossibilitados de distinguir uma entidade especfica dentro de todo o conjunto, j que possvel haver entidades duplicadas A esse tipo de entidade chamados Entidade Fraca Por outro lado, entidades que possuem atributos-chave so denominadas de Entidades Fortes As entidades fracas tem como caracterstica o fato de serem identificadas por meio de sua associao com outra entidade especfica, denominada de entidade identificadora Exemplo 1: Entidades Fracas

Exercio: Emprstimos e Devolues o emprstimo (aluno, livro, data, ...) o devoluo (aluno, livro, data, ...) o nmero sequencial para cada emprstimo? o Este nmero fica sendo a chave da devoluo?

Especializao / Generalizao

Especializao o vista de cima para baixo (top-down) o a partir da super-classe encontram-se sub-classes Generalizao o vista de baixo para cima (bottom-up) o a partir das sub-classes identifica-se a super-classe

Condies de especializao

Disjunta o quando s pode pertencer a uma das sub-classes Exemplo: Conta pode ser ou conta vista ou conta a prazo Sobreposta o Quando pode estar presente em vrias sub-classes Exemplo: Empregado que tambm Cliente do banco

Agregao

Cardinalidade em associaes

Exemplo anterior: o empregados com diferentes cargos em diferentes agncias E se houver um Gestor para cada tarefa desempenhada por um empregado numa agncia? Soluo: agregao! o uma associao passa a ser uma entidade

Exemplo de Modelo E-A

Converso de entidades

Entidade forte converte-se numa tabela o atributos simples mantm-se o chave da tabela a mesma da entidade Emprestimo (nro-emprestimo, valor)

Converso de associaes

Associao muitos-para-muitos converte-se numa tabela com as chaves primrias das entidades o (professor, disciplina) Associao um-para-um o possvel mas no obrigatrio, criar tabela Ex: Veculo - Motor o Qualquer um dos lados pode ter uma chave estrangeira Se a participao for parcial, aparecem nulls Atributos compostos o cliente (id-cliente, primeiro-nome, nome-do-meio, ltimo-nome, ...)

Integridade

Integridade dos Bancos de Dados

Uma das maiores preocupaes de qualquer desenvolvedor ou projetista de BD encontrar uma forma de garantir a integridade dos dados que se encontram armazenados

Isso se deve ao fato de que se houver algum dado crucial armazenado de forma incorreta, o resultado pode ser catastrfico, pois o BD pode apresentar informaes imprecisas ou mesmo totalmente errneas Imagine a situao: o Uma aplicao de contas a receber tem em seu BD, vinte e dois registros de pagamento em aberto, referentes a um determinado cliente o A ligao entre essas informaes (o cadastro do cliente e o pagamento em aberto) feita pelo pagamento de cdigo do cliente e por isso o valor desse campo no pode ser alterado de forma nenhuma o Digamos que um usurio ou o prprio administrador do BD tenha aberto o BD fora da aplicao e alterado o valor do campo do cdigo do cliente na tabela de cadastro de clientes o Logicamente o vnculo ser quebrado pois os campos utilizados no relacionamento agora possuem valores distintos Exemplos: Arquivo:BDA-Integridade1.pdf Se o prprio sistema de BD oferecer formas de restringir ou mesmo impossibilitar a quebra dessa integridade, o desenvolvedor ter menos trabalho. Acessando os dados fora da aplicao, as informaes ficaram vulnerveis Como soluo para este problema, a maioria dos sistemas hoje existentes possui recursos capazes de gerenciar esta integridade de dados. Ser que todos os considerados SGBDs possuem esta funcionalidade?

Integridade de Entidades

Define que as chaves primrias de uma tabela no podem ser nulas, ou seja, sempre devero conter um valor mesmo que sejam compostas. Valor nulo => diferente de zero ou espao em branco. E para nmeros? Alguns sistemas: Campo requerido Motivo: o A chave primria um atributo (ou mais de um) que identifica um registro nico o Determina a ordem fsica dos registros o utilizada no relacionamento com outras tabelas

Integridade Referencial

Estabelece restries ou bloqueios de algumas operaes (excluso ou alterao) nos dados de campos das chaves primrias utilizadas no relacionamento de uma tabela com outra Exemplo: Tabelas de Produtos e Categorias

o o o

A categoria H222 se relaciona com um ou mais produtos,[1001, 1005, 1008] Se o usurio acidentalmente excluir a categoria H222, os produtos que pertencem a esta categoria ficaro rfos na tabela de produtos Teramos tambm registros sem nenhum vnculo na tabela de categorias

Integridade referencial: o Proibe este tipo de inconsistncia impedindo que a relao entre a chave primria e a chave estrangeira seja quebrada o Isto facilita para o desenvolvedor evitando que ele implemente tarefas de vigilncia na aplicao Formas de tratamento o Proibio: No permite que o usurio altere ou exclua dados de uma chave primria que chave estrangeira em outras tabelas A menos que ... o Execuo em cascata: A excluso ou alterao refletida automaticamente nas tabelas relacionadas Exemplo: Os produtos que pertencem categoria H222 sero excludos junto com a prpria categoria Caso real: Ajuda dos universitrios SQL:
o

Suporte Integridade Referencial permitindo que sejam criadas chaves estrangeiras (CONSTRAINT) para especificar as aes a serem desempenhadas para operaes de excluso e atualizao de dados Access: integridade parcial

Integridade de Domnios

Estabelece restries e regras na definio dos domnios em si, em vez de diretamente nos campos Ajuda a economizar tempo e trabalho Vrios campos so formatados a partir de domnios Com a regra de integridade definida neles, esses campos automaticamente herdam essas restries Exemplo: o Definir Dominio "Salario" com tipo decimal e valor maior que 1 SM

Integridade de Campos

Eventualmente, mesmo o desenvolvedor tendo definido integridade de domnio, necessrio adicionar restries extras aos campos Exemplo: o Salrio: restringir o intervalo aceito entre 622 (valor minimo) e 2700 (valor mximo). A integridade de campos no deve conflitar com a de domnio

Validao de dados: o Possibilita que o prprio SGBD faa uma verificao quanto aos valores inseridos pelo usurio se so vlidos ou no o Exemplo: Cadastro de funcionrios Cada funcionrio tem um cargo e seu salrio definido pelo cargo que ocupa Neste caso, mesmo que o valor para essa informao esteja dentro da regra definida para o campo deve ser efetuada uma validao para certificar-se de que o valor fornecido est dentro do padro para o cargo do funcionrio Formato dos dados: o CNPJ - formato 99.999.999/9999-99 o Algumas solues provem as "mscaras de entrada" para cada campo do BD

Regras de Codd
Informaes em tabelas

Toda informao deve ser representada de uma nica forma, como dados em uma tabela Os nomes das tabelas, colunas e domnios so representados por sries de caracteres que, por sua vez, devem tambm ser guardadas em tabelas, as quais formam o catlogo do sistema, o dicionrio de dados O princpio de que a informao deve estar sob a forma de tabela extensiva ao dicionrio de dados As tabelas so bidimensionais, o que equivale a dizer que no h colunas repetitivas (Clusula Occurs, por exemplo, no existe).

Acesso garantido

Todo dado pode ser acessado logicamente (e unicamente) usando padres especficos A ordem das linhas, assim como a das colunas, irrelevante Para obter o valor de uma coluna em uma linha de uma tabela, basta informar: o o nome da tabela o o valor de uma chave primria (no caso, da linha a ser recuperada) o o nome da coluna da tabela em questo Para saber quais ocorrncias de uma tabela tm um determinado valor em uma coluna, basta informar o nome da tabela e o nome da coluna, que o contedo poder ser comparado Concluso: a regra especifica que, em um banco de dados efetivamente relacional, no existe informao inacessvel.

Tratamento de valores nulos

Os valores nulos (diferente do zero, da string vazia, da string de caracteres em brancos e outros valores no nulos) existem para representar dados no existentes de forma sistemtica e independente do tipo de dado Valores nulos so suportados em um SGBD relacional nulo para representar exatamente a informao perdida ou inexistente, inaplicvel Ateno: o No confundir zero(s) ou espao(s) em branco com strings vazios Comparao: Imagine um pacote de supermercado de papel, desdobrado. Sem toc-lo ou olhar em seu interior, voc no pode saber se est vazio ou contm algum produto. Portanto, nesse instante, para voc, o contedo do pacote NULO. uma informao desconhecida, inexistente Para suportar a integridade de identidade preciso especificar no so permitidos valores nulos em cada coluna da chave primria e em qualquer outra coluna que se considerar como uma restrio de integridade Se levarmos em conta que um atributo tem de, obrigatoriamente, possuir contedo, estaremos especificando que seu valor no pode ser nulo. Assim, o SGBD precisa reconhecer a informao nula para poder restringi-la ou aceit-la, se necessrio.

Catlogo relacional ativo

A descrio do banco de dados representada no nvel lgico como dados ordinrios (isso , em tabelas), permitindo que usurios autorizados apliquem as mesmas formas de manipular dados aplicada aos dados comuns ao consult-las

Esta regra exige que um SGBD relacional tenha uma mesma linguagem para acesso e definio dos dados no dicionrio e para a manipulao dos dados do banco e do dicionrio Exemplo: o um comando para adicionar informaes em uma tabela da aplicao deve ser o mesmo para acrescentar informaes no dicionrio de dados.

Atualizao de alto nvel

A capacidade de manipular a relao base ou relaes derivadas como um operador nico no se aplica apenas a recuperao de dados, mas tambm a insero, alterao e eliminao de dados Operaes realizadas sobre a base de dados tratam conjuntos de informaes (tabelas), no registro por registro A linguagem de alto nvel no procedural, uma caracterstica das linguagens denominadas de quarta gerao.

Sublinguagem de dados abrangentes

Um sistema relacional pode suportar vrias linguagens e formas de uso, porm deve possuir ao menos uma linguagem com sintaxe bem definida e expressa por cadeia de caracteres e com habilidade de apoiar: o a definio de dados: criar ou adicionar tabelas no dicionrio de dados

o o o

o o

a definio de vises: fazer operaes relacionais de juno, criar vises de partes do modelo de dados a manipulao de dados: permitir criar, alterar, consultar e deletar conjuntos de dados as restries de integridade: possibilitar que sua sublinguagem controle as restries especficas de uma tabela ou de valores aceitveis para uma determinada coluna a autorizao: definir limites de acesso a tabelas por usurio, inclusive em nvel de coluna limites de transao: tornar vivel a delimitao de uma transao lgica de modificao do banco de dados, o que fornece um alto nvel de segurana da integridade de informaes no banco de dados.

Independncia fsica

Programas de aplicao ou atividades de terminal permanecem logicamente inalteradas quaisquer que sejam as modificaes na representao de armazenagem ou mtodos de acesso internos Essa regra nos d uma diretriz essencial quanto aos programas de aplicao: esses programas lidam somente com dados lgicos. Se houver qualquer modificao quanto ao local de armazenamento fsico dos dados ou, ainda, uma mudana qualquer de ndices de acesso, o programa de aplicao, logicamente estvel, no sofrer nenhuma paralisao nem precisar de alteraes Exemplo: o Se desenvolvermos uma aplicao em um diretrio de dados e, posteriormente, em consequncia de uma migrao ou expanso de hardware, essa base de dados for transferida para um outro diretrio de dados, as aplicaes desenvolvidas originalmente para tal base no sero afetadas, j que a definio de localizao dos dados deve ser externa linguagem de manipulao de dados.

Independncia lgica

Os programas de aplicao tambm permanecem inalterados quando so feitos nas tabelas, mudanas de qualquer tipo para preservar a informao A regra implica, por exemplo, que a juno de duas tabelas no afeta os programas, assim como a criao de novos campos e as operaes de seleo que dividem uma tabela por linhas ou colunas, desde que se preservem as chaves primrias Exemplo: o Se criarmos um novo relacionamento entre duas entidades ou modificarmos a condio de relacionamento entre elas, em hiptese nenhuma isso afetar as aplicaes existentes.

Atualizao de vises

Toda viso que for teoricamente atualizvel ser tambm atualizvel pelo sistema Atualizar significa mais do que simplesmente modificar a informao; abrange tambm a incluso e/ou excluso de dados Se definimos uma viso de dados como um subconjunto horizontal de uma tabela, deve ser possvel adicionar dados a essa viso Exemplo 1: o Consideremos uma tabela de funcionrios e que haja vises de funcionrios tcnicos, funcionrias secretrias e funcionrios administrativos o Atualizar uma dessas vises quer dizer, entre outras possibilidades, adicionar dados para a incluso de uma secretria ou de um tcnico Exemplo 2: o Criar uma viso de uma tabela de mdicos por especialidade, digamos cem mdicos em uma tabela, dos quais trinta so especializados em pediatria o Ao criarmos a viso Pediatras, uma seleo de linhas, que conter somente os mdicos com esta especialidade, cria-se no dicionrio de dados um sinnimo de mdico, denominado Pediatra, que tem como condio para esse role (literalmente, papel) o valor da coluna especialidade ser igual a pediatria o Esta viso deve ter a possibilidade de ser deletada. Se comandarmos DELETAR PEDIATRIA ou ALTERAR um pediatra especfico, tais atualizaes devem ser realizadas diretamente na tabela originria da viso.

Independncia de integridade

As relaes de integridade especficas de um banco de dados relacional devem ser definidas em uma sublinguagem de dados e armazenadas no catlogo (e no em programas de aplicao) Restries de domnio e regras para validao de alguns ou todos os atributos tambm devem ser armazenveis no dicionrio de dados Exemplo: o Definies do tipo de caractere de um campo se numrico, se inteiro ou de tamanho varivel devem estar especificadas nele o J para o controle de sua validade (consistncia), deve haver a possibilidade de ser realizado pela sublinguagem do SGBD, sem que, para isso, haja necessidade de que o programa de aplicao o controle o Da mesma forma, a exigncia da existncia de um campo deve ser informada no dicionrio e tambm deve ser administrada por este, ficando os programas de aplicao desobrigados de tais controles.

Independncia de distribuio

A linguagem de manipulao de dados deve possibilitar que as aplicaes permaneam inalteradas estejam os dados centralizados ou distribudos fisicamente Um SGBD relacional tem independncia de distribuio quando sua sublinguagem permite que os programas de aplicao permaneam inalterados enquanto os dados so distribudos, tanto na inicializao de um sistema quanto na ocorrncia de uma redistribuio Se um sistema, por sua implementao, tiver arquivos redistribudos em meios ou mquinas diferentes, a sublinguagem do SGBD far o controle e a ligao com os programas de aplicao, sem que seja necessrio realizar nenhuma modificao neles.

No subversiva

Se o sistema relacional possui uma linguagem de baixo nvel, no deve ser possvel subverter ou ignorar as regras de integridade e restries definidas no alto nvel Isso quer dizer que, se processarmos registro a registro, isso no poder implicar a burla de restries especficas dos objetos do banco de dados Tal regra pode ser considerada extensiva utilizao de outras linguagens capazes de interagir com o banco de dados Exemplo: o a utilizao de uma linguagem de baixo nvel no poder adicionar um registro sem os atributos definidos, no dicionrio, como obrigatrios para uma determinada tabela.

Normalizao
Dependncia Funcional

Consiste numa restrio entre dois conjuntos de atributos de uma mesma entidade/relao Uma dependncia funcional representada pela relao X -> Y, em que X e Y so subconjuntos de atributos de uma relao qualquer Isso impe uma restrio na qual um componente Y de uma tupla (registro) dependente de um valor do componente X (ou determinado por ele) Do mesmo modo, o valores do componente X determinam de forma unvoca os valores do componente Y Resumindo, Y dependente funcionalmente de X

Supondo o esquema de uma relao abaixo, onde os trs primeiros atributos, cujos nomes se encontram destacados, representam a chave primria da relao

MatriculaAl CodigoCu CodigoDiscip NomeAlu DataMatric NomeCu NomeDiscip NotaPr uno rso lina no ula rso lina ova -

Podemos estabelecer 4 dependncias funcionais neste exemplo: o 1. MatriculaAluno -> {NomeAluno, DataMatricula) => O valor do atributo MatriculaAluno determina o valor dos atributos NomeAluno e DataMatricula o 2. CodigoCurso -> NomeCurso => O valor do atributo CodigoCurso determina o valor do atributo NomeCurso o 3. CodigoDisciplina -> NomeDisciplina => O valor do atributo CodigoDisciplina determina o valor do atributo NomeDisciplina o 4. {MatriculaAluno, CodigoCurso, CodigoDisciplina} -> NotaProva => A combinao de valores dos atributos MatriculaAluno, CodigoCurso e CodigoDisciplina determina o valor do atributo NotaProva.

Categorias

Total ou Completa: o Podemos ter situaes em que no se utilizam atributos simples para determinar os valores de outros atributos Neste caso, teremos um atributo que dependente funcional da combinao de dois ou mais atributos o Quando um atributo que no faz parte da chave primria depende funcionalmente de todos os atributos que fazem parte da chave, tem-se uma dependncia funcional total. o considerado o 1o. tipo, onde a dependncia s existe se a chave primria composta por vrios atributos determinar univocamente um atributo ou um conjunto de atributos o No nosso exemplo, o atributo NotaProva dependente total da chave primria formada pelos atributos MatriculaAluno/ CodigoCurso/CodigoDisciplina. o Exemplo: Entidade DEPENDENTE (CodigoPaciente, DataNascimento} -> {NomeDependente} (?) No caso, os valores dos atributos CodigoPaciente e DataNascimento determinam o valor para o atributo NomeDependente O nome do dependente s pode ser determinado em funo de dois atributos Parcial: o Temos uma situao em que um atributo/conjunto de atributos depende de outro(s) atributo(s) que no fazem parte de uma chave primria

o o

Quando um atributo que no faz parte da chave primria depende funcionalmente de apenas alguns dos atributos que fazem parte da chave primria o 2o. tipo, ento, ocorre quando o atributo/conjunto de atributos depende apenas de parte dos valores da chave primria Exemplo: Banco de Dados com as entidades MEDICO e PACIENTE CRM -> NomeMedico CodigoPaciente -> {NomePaciente, CPF, RG } A 1a, dependncia especifica que o valor atributo CRM da entidade MEDICO determina de forma unvoca o valor do atributo NomeMedico dessa mesma entidade O valor do atributo CodigoPaciente (entidade PACIENTE) determina o nome, o CPF e o RG do paciente importante notar que apenas o valor dos atributos CRM e CodigoPaciente necessrio para que seja possvel determinar o nome do mdico ou o CPF e RG do paciente, ou seja, uma dependncia parcial

Transitiva ou Indireta: o Esta dependncia ocorre quando a dependncia funcional se realiza entre atributos que no fazem parte da chave primria o Exemplo: Numa tabela de Vendas, temos o atributo PreoTotal. Este campo o resultado do valor unitrio do produto multiplicado pela quantidade, isto , para um preo total existir ele DEPENDE de valor unitrio e quantidade O ValorUnitrio deve estar numa tabela Produtos, relacionada venda e Quantidade est na prpria tabela Vendas. PreoTotal depende destes dois campos e eles no so campos-chave.

Normalizao

Aps a construo do modelo conceitual dos dados (Modelo Entidade/Relacionamento) feita a transformao para o modelo lgico (Esquema de Tabelas) O desenho de tabelas obtido representa a estrutura da informao de um modo natural e completo. Normalizao um processo baseado nas chamadas formais normais o Uma forma normal uma regra que deve ser aplicada na construo das tabelas do banco de dados para que estas fiquem bem estruturadas A normalizao pode ser entendida como um processo submetido a estas vrias formas normais o Objetivo principal: eliminar a redundncia nos dados armazenados em tabelas, resultando na diminuio do espao e dos riscos de inconsistncias em atualizaes de dados

Quando um atributo alterado em uma tabela que no est totalmente normalizada, necessrio alter-lo em todas as linhas em que ele ocorre, haja visto a sua repetio Tal operao poderia ser executada apenas uma vez, caso este atributo estivesse normalizado As formas tm uma ordem e so dependentes, isto , para se aplicar a segunda norma, deve-se obrigatoriamente ter aplicado a primeira e assim por diante. Efetivamente, a Normalizao tem como objetivo avaliar a qualidade do Modelo de Tabelas e transform-lo (em caso de necessidade) num Modelo (Conjunto de Tabelas) equivalente, menos redundante e mais estvel.

1FN

Verificao de Tabelas Aninhadas Uma relao est na 1a. Forma Normal se e somente se cada linha contiver exatamente um valor para cada atributo o Dado que as Relaes(Tabelas) so estruturas bidimensionais, ento no cruzamento de uma linha com uma coluna (atributo) s possvel armazenar valores atmicos. Para isso, no deve conter tabelas aninhadas Um jeito fcil de verificar esta norma fazer uma leitura dos campos das tabelas fazendo a pergunta: o Este campo depende de algum outro? Se sim, ento devemos arrumar um mtodo para corrigir o problema. Mtodo: o Remover o grupo de repetio o Expandir a chave primria Seguindo a definio devemos normalizar a tabela decompondo-a em duas Uma relao R est na 1FN se: o Todo valor em R for atmico o Ou seja, R no contm grupos de repetio. Consideraes: o Geralmente considerada parte da definio formal de uma relao o No permite atributos multivalorados, compostos ou suas combinaes

Caso 1

cliente (NroCliente, Nome, {End-Cliente}) Corrigindo o problema: o Soluo: cliente (NroCliente, Nome, End-Cliente, CidCliente, UFCliente)

Caso 2

Exemplificando com a tabela Venda Esquema relacional da tabela: o Venda Codvenda (Int) Cliente (Str) Endereco (Str) Cep (Int) Cidade (Str) Estado (Str) Telefone (Int) Produto (Str) Quantidade (Float) ValorUnitrio (Float) PreoTotal (Float) Anlise:
o o

A tabela Venda, deve armazenar informaes da venda O campo Cliente dependente de CodVenda, afinal para cada Venda h um cliente Campo Endereo: no depende de Codvenda, e sim de Cliente, pois uma informao particular ao cliente No existe um endereo de venda, existe sim um endereo do cliente para qual se fez a venda Nisso podemos ver uma tabela aninhada. Os campos entre colchetes, so referentes ao cliente e no venda Venda (Codvenda, [Cliente, Endereo, Cep, Cidade, Estado, Telefone], Produto, Quantidade, ValorUnitrio, PreoTotal)

Soluo: o Extrair estes campos para uma nova tabela o Adicionar uma chave-primria nova tabela o Relacion-la com a tabela Venda criando uma chave-estrangeira Resultado: o Cliente (Codcliente, Nome, Endereo, Cep, Cidade, Estado, Telefone). o Venda (Codvenda, Codcliente, Produto, Quantidade, ValorUnitrio, PreoTotal). Aplicando novamente a 1a. forma normal s 2 tabelas geradas Uma situao comum em tabelas de cadastro o caso Cidade-Estado Analisando friamente pela forma normal, o Estado na tabela Cliente, depende de Cidade No entanto Cidade, tambm depende de Estado, pois no caso de a cidade ser Curitiba o estado sempre dever ser Paran, porm se o Estado for Paran, a cidade tambm poder ser Londrina

Isso o que chamamos de Dependncia funcional: o aparentemente, uma informao depende da outra No caso Cidade-Estado a soluo simples: o Extramos Cidade e Estado, de Cliente e geramos uma nova tabela o Em seguida, o mesmo processo feito anteriormente: Adicionar uma chave-primria nova tabela e relacion-la criando uma chave-estrangeira na antiga tabela Cidade (Codcidade, Nome, Estado). Cliente (Codcliente, Codcidade, Nome, Endereo, Cep, Telefone) Venda (Codvenda, Codcliente, Codcidade, Produto, Quantidade, ValorUnitrio, PreoTotal) Seguindo com o exemplo, a tabela Cliente encontra-se na 1a. forma normal, pois no h mais tabelas aninhadas Verificando Venda, identificamos mais uma tabela aninhada Os campos entre colchetes so referente mesma coisa: Produto de Venda Venda (Codvenda, Codcliente, Codcidade, [Produto, Quantidade, Valorunitario, Valorfinal]) Na maioria das situaes, produtos tm um valor previamente especificado O ValorUnitrio depende de Produto J a Quantidade no depende do Produto e sim da Venda Cidade (Codcidade, Nome, Estado) Cliente (Codcliente, Codcidade, Nome, Endereo, Cep, Telefone) Produto (Codproduto, Nome, ValorUnitrio) Venda (Codvenda, Codcliente, Codcidade, Codproduto, Quantidade, PreoTotal) Utilizando a 1a. Forma Normal na tabela Venda, obtivemos 3 tabelas

2FN

A 2a. Forma Normal exige um pouco mais de conhecimento sobre as dependncias funcionais, prioritariamente para a dependncia funcional total Uma relao est na 2a. Forma Normal se estiver na 1a. e se todos os atributos descritores (no pertencentes a nenhuma chave candidata) dependerem da totalidade da chave (e no apenas de parte dela)

Isso quer dizer que uma tabela encontra-se na 2FN, quando, alm de estar na 1FN, no contem dependncias parciais Dependncia parcial = uma dependncia parcial ocorre quando uma coluna depende apenas de parte de uma chave primria composta Resumindo, a entidade se encontra na 2FN se, alm de estar na 1a., todos os seus atributos so totalmente dependentes da chave primria composta Significa que atributos que so parcialmente dependentes devem ser removidos. Se observarmos as tabelas e identificarmos repetio dos dados nas tuplas requer-se a 2FN Relendo cada campo e questionando: o Este campo depende de toda a chave? o Se no, temos uma dependncia parcial

Caso 3

Uma entidade Item possui chave primria composta que constituda pelos atributos NumPedido e CodProduto Os atributos Descricao e PrecoUnit no dependem totalmente dessa chave, ao contrrio de Quantidade e ValorTotal Nova entidade: Produto

Caso 4

Reavaliando o caso Cidade-Estado que gerava uma dependncia funcional o Aps a normalizao da tabela Venda, obtivemos uma chave composta de 4 campos: o Venda (Codvenda, Codcliente, Codcidade, Codproduto, Quantidade, PreoTotal) A questo agora verificar se cada campo no-chave depende destas 4 chaves Procedimento:

1. O 1o. campo no-chave Quantidade 2. Quantidade depende de Codvenda => Para cada venda h uma quantidade especfica de itens 3. Quantidade depende de Codvenda e Codcliente => Para um cliente podem ser feitas vrias vendas, com quantidades diferentes 4. Quantidade no depende de Cidade e quem depende de Cidade Cliente 5. Temos uma dependncia parcial pois Quantidade depende de Codproduto, pois para cada produto da Venda h uma quantidade certa

Quantidade depende de 3 campos, dos 4 que compe a chave de Venda o Quem sobra nessa histria Codcidade o A tabela Cidade j est ligada com Cliente, que j est ligada com Venda

A chave Codcidade em Venda redundante, portanto podemos elimin-la Venda (Codvenda, Codcliente, Codproduto, Quantidade, PrecoTotal)

Problema: o Existe alguma necessidade de manter CodCidade como campo no-chave? O prximo campo no-chave PreoTotal Avaliando PreoTotal da mesma forma que Quantidade o Chega-se concluso de que ele depende de toda a chave de Venda.

3FN

Uma relao encontra-se na 3a. Forma Normal se est na 2a. Forma Normal e se no existirem atributos descritores (no pertencentes a nenhuma Chave Candidata) a dependerem funcionalmente de outros atributos descritores (no-chaves) Aps a aplicao das regras da 2FN se ainda restarem dados redundantes na tabela avaliada pode-se empregar a 3FN Terceira Forma Normal (3FN): o Efetivamente, uma tabela encontra-se na terceira forma normal, quando, alm de estar na 2FN, no contm dependncias transitivas o Dependncia transitiva: Uma dependncia funcional transitiva ocorre quando uma coluna, alm de depender da chave primria da tabela, depende de outra coluna ou conjunto de colunas da tabela. o Assim sendo, cada atributo deve depender apenas das Chaves Candidatas da relao.

Caso 5

Em Pedidos, existem atributos que identificam: o um cliente (nome do cliente e endereo completo) o um vendedor (nome do vendedor) Os dados dos atributos: o NomeCliente o EndCliente o CidCliente o UFCliente so dependentes de CodCliente o Podemos criar outra entidade => Cliente Da mesma forma, NomeVendedor dependente de CodVendedor

FNBC

Uma relao est na forma normal de Boyce-Codd se e somente se, para todas as dependncias funcionais X -> Y existentes na relao, X chave ou super-chave da relao A 2FN e a 3FN s tratam dos casos de dependncia parcial e transitiva de atributos fora de qualquer chave (primria ou candidata). Aplica-se a FNBC quando: o Encontramos duas ou mais chaves candidatas o As chaves candidatas so compostas (apresentam mais de um atributo) o Todas as chaves candidatas tm um atributo em comum Uma tabela est na FNBC se e somente se toda DF (dependncia funcional) no trivial e irredutvel esquerda tem uma chave candidata como determinante

A Forma Normal de Boyce/Codd foi criada com a inteno de resolver algumas situaes que no eram inicialmente cobertas pelas trs primeiras formas normais o Foco especial para quando haviam vrias chaves na entidade formadas por mais de um atributo o E que compartilhavam ao menos um atributo Isso porque as formas normais tratam atributos dependentes das chaves primrias Para estar na FNBC, uma entidade precisa possuir somente atributos que so chaves candidatas

Caso 6

Assumindo que um professor possa estar associado a mais de uma escola e uma sala. Aluno (NomeAluno, EnderecoAluno, NomeEscola, NumeroSala, NomeProfessor) Chaves candidatas: o NomeAluno+EnderecoAluno o NomeAluno+NumeroSala o NomeAluno+NomeProfessor Encontramos trs chaves candidatas o Todas apresentam mais de um atributo (concatenados) o Todas compartilham um mesmo atributo: NomeAluno Ao aplicar-se a FNBC, a tabela Aluno deve ser dividida em duas tabelas o uma que contm todos os atributos que descrevem o aluno o outra que contm os atributos que designam um professor em uma determinada escola e nmero de sala Aluno (NomeAluno, EnderecoAluno, NomeEscola, NumeroSala) Sala (NomeEscola, NumeroSala, NomeProfessor)

Resumo

1FN
o o

1. Cria-se uma tabela na 1FN referente tabela N e que contm apenas colunas com valores atmicos, isto , sem as tabelas aninhadas; 2. Para cada tabela aninhada, cria-se uma tabela na 1FN compostas pelas seguintes colunas: A chave primria de uma das tabelas na qual a tabela em questo est aninhada As colunas da prpria tabela 3. So definidas as chaves primrias das tabelas na 1FN que correspondem a tabelas aninhadas

2FN
o o

1. Copiar para a 2FN cada tabela que tenha chave primria simples ou que no tenha colunas alm da chave 2. Para cada tabela com chave primria composta e com pelo menos uma coluna no chave Criar na 2FN uma tabela com as chaves primrias da tabela na 1FN Para cada coluna no chave fazer a seguinte pergunta: a coluna depende de toda a chave ou de apenas parte dela Caso a coluna dependa de toda a chave Criar a coluna correspondente na tabela com a chave completa na 2FN Caso a coluna no dependa apenas de parte da chave Criar, caso ainda no existir, uma tabela na 2FN que tenha como chave primria a parte da chave que determinante da coluna em questo Criar a coluna dependente dentro da tabela na 2FN

3FN
o

o o o

Copiar para o esquema da 3FN cada tabela que tenha menos de duas colunas no chave, pois neste caso no h como haver dependncias transitivas Para tabelas com duas ou mais colunas no chaves, fazer a seguinte pergunta: a coluna depende de alguma outra coluna no chave? Caso dependa apenas da chave Copiar a coluna para a tabela na 3FN Caso a coluna depender de outra coluna Criar, caso ainda no exista, uma tabela no esquema na 3FN que tenha como chave primria a coluna na qual h a dependncia indireta Copiar a coluna dependente para a tabela criada A coluna determinante deve permanecer tambm na tabela original

4FN

Em geral uma relao na BCNF j est na 4FN e 5FN, que surgem para resolver problemas muito raros Uma relao encontra-se na 4FN, se est na BCFN e no existem dependncias multivalor Uma relao R est na 5FN se no puder ser mais decomposta sem perda de informao. A normalizao na 4a. Forma Normal requer que no exista nenhuma dependncia multi-valorada no-trivial de conjuntos de atributos em algo mais de que um superconjunto de uma chave candidata Mesmo tendo chegado na 3FN, pode ser que a uma entidade contenha um ou mais fatos multivalorados Exemplos:

5FN

A 5a. Forma Normal requisita a no existncia de dependncias de joins no triviais que no venham de restries chave. A 5a. Forma Normal lida com relacionamentos mltiplos (ternrio, quaternrio, etc) Uma entidade estar na 5FN, se estando na 4FN, no for possvel reconstruir as informaes originais a partir do contedo dos outros registros menores O processo de Normalizao ajuda imensamente o projetista do Banco de Dados, porm, em alguns casos, algumas formas normais eventualmente, podem ser ignoradas, visando o aprimoramento da performance do sistema

Caso 9

Sistema de uma loja de materiais eltricos: o Venda de materiais como fios, fusveis, lmpadas, etc o Padres de entrada do cliente: postes de concreto, caixa de medidor, etc o Na venda de um padro, o sistema deve baixar o estoque de cada um dos seus componentes o Cada um desses componentes pode ser comprado pela loja individualmente, ou sejam podem constar de vrios pedidos de compra

Caso 10

Se realizarmos uma juno dessas trs entidades, utilizando o atributo NumeroPedido como o determinante, teremos como resultado o seguinte: Repare que o penltimo registro abaixo (destaque) no havia na relao original

Se a juno for efetuada tomando o atributo Fornecedor, o resultado ser: Entidade:

Novamente, um registro que no existia na relao original gerado Durante o processo de normalizao de dados, descobre-se duas situaes, diametralmente opostas: o o nmero de campos das tabelas diminui enquanto o nmero de tabelas aumenta O SGBD gerencia tranquilamente e eficientemente, as associaes que vo aumentando em funo de anlise do profissional

Exemplo

1a. Forma Normal

Uma Tabela est na 1a. FN quando seus atributos no contm grupos de repetio (tabelas aninhadas): o Projeto (CodProjeto, Descricao, (CodFunc, Nome, Salario, DataInicio)) => No est na 1FN o Projeto (CodProjeto, Descricao) => Est na 1FN o ProjFunc (CodProjeto, CodFunc, Nome, Salario, DataInicio) => Est na 1FN

2a. Forma Normal


Ocorre quando a chave primria composta por mais de uma coluna Neste caso, deve-se observar se todas as colunas que no fazem parte da chave dependem de todos as colunas que compem a chave Se alguma coluna depender somente de parte da chave composta (dependncia funcional parcial), ento esta coluna deve pertencer a outra tabela o ProjFunc (CodProj, CodFunc, Nome, Cargo, Salario, DataInicio) => No est na 2FN o ProjFunc (CodProj, CodFunc, DataInicio) => Est na 2FN o Func (CodFunc, Nome, Cargo, Salario) => Est na 2FN

3a. Forma Normal

Uma tabela est na 3a. Forma Normal quando cada coluna no chave depende diretamente da chave primria, isto , quando no h dependncias funcionais transitivas ou indiretas Uma dependncia funcional transitiva acontece quando uma coluna no chave primria depende funcionalmente de outra coluna ou combinao de colunas no chave primria o Func (CodFunc, Nome, Cargo, Salario) => No est na 3FN o Func (CodFunc, Nome, CodCargo) => Est na 3FN o Cargo (CodCargo,Salario) => Est na 3FN

Forma Normal de Boyce-Codd


A 2FN e a 3FN s tratam dos casos de dependncia parcial e transitiva de atributos fora de qualquer chave (primria ou candidata) Aplica-se a FNBC quando: o Encontramos duas ou mais chaves candidatas o As chaves candidatas so compostas (apresentam mais de um atributo) o Todas as chaves candidatas tm um atributo em comum Uma tabela est na FNBC se e somente se toda DF (dependncia funcional) no trivial e irredutvel esquerda tem uma chave candidata como determinante Exemplo: o Assumindo que um professor possa estar associado a mais de uma escola e uma sala. o Aluno (NomeAluno, EnderecoAluno, NomeEscola, NroSala, NomeProfessor) Chaves candidatas: o NomeAluno + EnderecoAluno o Nomeluno + NroSala o NomeAluno + NomeProfessor Encontramos trs chaves candidatas o Todas apresentam mais de um atributo (concatenados) o Todas compartilham um mesmo atributo: NomeAluno Ao aplicar-se a FNBC, a tabela Aluno deve ser dividida em duas tabelas o uma que contm todos os atributos que descrevem o aluno o outra que contm os atributos que designam um professor em uma determinada escola e nmero de sala Aluno (NomeAluno, EnderecoAluno, NomeEscola, NroSala) Sala (NomeEscola, NroSala, NomeProfessor)

4a. Forma Normal

Uma tabela est na 4a. Forma Normal caso no possua mais de uma dependncia funcional multivalorada Uma situao onde temos um controle de projetos ligados a funcionrios e a equipamentos.

CodProj multidetermina de forma independente CodFunc e CodEquip.

5a. Forma Normal


Aplicada em casos de relacionamentos mltiplos Trata do conceito de dependncia de juno

Primeiro decompe-se a tabela atravs de uma operao de projeo e em seguida faz-se a reconstruo da mesma atravs de uma juno A tabela est na 5a. Forma Normal quando seu contedo no puder ser reconstrudo atravs da juno destas tabelas secundrias

Reconstruindo o contedo da tabela original atravs da juno natural das tabelas secundrias

ndices

Depois de evoluir no: o projeto ER o refinamento do esquema o definio de vises podemos ter os esquemas conceitual e externo para o BD Prximo passo: o escolher ndices o fazer decises de agrupamento o e (se necessrio) refinar os esquemas conceitual e externo para atingir metas de desempenho. Funo do indice: o No contexto do livro, serve para procurar um determinado assunto identificando o volume ou pgina. o No contexto da estrutura de dados, o ndice uma referncia associada a uma chave, que utilizada para fins de otimizao, permitindo uma localizao mais rpida de um registro quando efetuada uma consulta. o No contexto de banco de dados, um ndice tem a funo de permitir que os registros com dados sejam encontrados com rapidez o Tambm oferecem um acesso alternativo aos registros sem que a posio fsica seja alterada Exemplo: Se precisarmos de uma lista dos alunos por ordem de CEP, possvel indexar e listar dessa maneira. O processo pode ser iniciado pela compreenso do ambiente (negcio) onde ser implantando e definir: o As consultas mais importantes e a frequncia com que aparecem o As atualizaes mais relevantes a frequncia com que podem ser feitas o O desempenho desejado para estas consultas e atualizaes. Um ndice pode ser: o simples: quando formado por apenas uma coluna o composto: referenciado por mais de uma coluna o interno: a chave est contida dentro da tabela o externo: quando existe uma tabela de chaves separada que associa ponteiros registros de uma tabela Que ndices deve-se criar? o Quais relaes devem ter ndices? o Qual(is) campo(s) devem estar na chave de pesquisa?

Deve-se construir vrios ndices?

Devemos fazer mudanas no esquema conceitual? o Considerar esquemas normalizados alternativos? o H vrias escolhas na decomposio em formas normais, etc o Devemos desfazer alguns passos da decomposio e ficarcom uma forma normal mais baixa? o Desnormalizao? Consideraes para Seleo de ndice: o necessria a criao do ndice? o Escolha da chave de busca o Utilizar mltiplos atributos na chave de busca o necessrio o agrupamento? o Devo usar hash ou rvore? Hash:Permite insero de novos elementos mas ocupa maior quantidade de espao rvore: No caso de rvore binria, da busca muito eficiente mas a tabela deve estar em ordem crescente

ou decrescente.
o

Balanceamento do custo de manuteno do ndice.

Os campos utilizados na definio dos ndices denominam-se campos de indexao Os ndices no contm dados propriamente ditos e sim valor de campo de indexao e ponteiros que direcionam para o registro adequado dentro da tabela o Inserindo ou excluindo o registro, fora tambm uma alterao nos ndices Em alguns sistemas, os ndices encontram-se separados do arquivo de dados

Exemplos
Como o MySQL Utiliza ndices Os ndices so utilizados para encontrar registros com um valor especfico de uma coluna rapidamente. Sem um ndice o MySQL tem de iniciar com o primeiro registro e depois ler atravs de toda a tabela at que ele encontre os registros relevantes. Quanto maior a tabela, maior ser o custo. Se a tabela possui um ndice para as colunas em questo, o MySQL pode rapidamente obter uma posio para procurar no meio do arquivo de dados sem ter que varrer todos os registros. Se uma tabela possui 1000 registros, isto pelo menos 100 vezes mais rpido do que ler todos os registros sequencialmente. Note que se voc precisar acessar quase todos os 1000 registros, seria mais rpido acess-los sequencialmente porque evitaria acessos ao disco. Todos os ndices do MySQL (PRIMARY, UNIQUE e INDEX) so armazenados em rvores B. Strings so automaticamente compactadas nos espaos finais e prefixados.

Indexao no Microsoft Office Acces

Na medida em que consultas de certos dados vo sendo realizadas, registros sendo classificados por um campo especfico,

que com frequncia utilizado como referncia, torna-se necessrio utiliz-lo como ndice em uma tabela. O Microsoft Office Acces procura o local dos dados atravs do ndice e em alguns casos como em chaves primrias esta indexao feita de maneira automtica visando melhorar o desempenho do banco de dados. No entanto, alguns casos provvel que a definio do ndice dever ser feita manualmente.

O ndice auxilia o MS Office Access a localizar e classicar os registros com mais rapidez. Tal ndice armazena o local dos registros com base no(s) campo(s) escolhido(s) para ser(em) indexado(s). Aps obter a localizao do ndice, os dados podero ser recuperados. A criao de ndices pode ser baseada em um nico campo ou em vrios. Os campos mais propensos indexao so aqueles citados em vrias pesquisas, campos associados a campos de outras tabelas. Se de uma forma os ndices agilizam as pesquisas e consultas, de outra pode comprometer o desempenho na medida em que dados vo sendo criados ou atualizados. Quando os dados so inseridos em uma tabela que contm um ou mais campos indexados, o Access atualiza os ndices cada vez que um registro adicionado ou modificado. A adio de registros atravs de uma consulta acrscimo ou do acrscimo de registros importados provavelmente tambm ser mais lenta se a tabela de destino contiver ndices. Para a indexao de um campo, alguns critrios devero ser levados em considerao e as condies abaixo devem aplicveis:

1) O tipo de dado do campo Texto, Memorando, Nmero, Data/Hora, Auto numerao, Moeda, Sim/No ou Hiperlink. 2) Voc espera procura por valores armazenados no campo. 3) Voc espera classificar por valores no campo. 4) Voc espera armazenar diversos valores diferentes no campo. Se muitos dos valores no campo forem guais,provavelmente o ndice no poder acelerar significativamente as consultas.

Oracle

Oferece vrios tipos de ndices disponibilizando boas alternativas para todos os tipos de sistemas e processamentos no banco de dados ndices B-Trees: ndice padro que o Oracle tem usado desde as primeiras verses. A fim de gerenciar corretamente os blocos, o Oracle controla o alocamento dos ponteiros dentro de cada bloco dos dados o Uma rvore de blocos (analogia forma com a qual o Oracle aloca os blocos de dados) cresce atravs da insero de linhas na tabela. Quando um bloco preenchido, o mesmo racha, a fim de criar novos galhos, ou se preferir, blocos de dados. ai que entra o ndice do tipo B-Tree, controlando ponteiros dentro dos blocos de dados. o Um bloco de ndice do Oracle pode conter dois tipos de ponteiros: Ponteiro para um outro n de blocos de dados de ndices

Ponteiros para linhas especficas da tabelas ou ROWID (endereo fsico do registro , informando em qual arquivo e setor o dado se encontra).

ndice Bitmapped:

Lista dos valores distintos da coluna chave, onde cada um desses valores recebe um bitmap contendo um bit para cada linha da tabela O bit ligado indica que a linha especfica contm o valor da coluna chave Sua estrutura, ento, apropriada para colunas chaves com pequena cardinalidade e com grande quantidade de linhas porm, a modificao dos valores da coluna chave revela o ponto fraco desse ndice, uma vez que essa operao leva ao reajuste de grandes pores do bitmap e ao conseqente bloqueio lock de uma grande quantidade de linhas da tabela, comprometendo a concorrncia do ambiente

ndice Baseado em Funo:

O algoritmo do otimizador dos SGBD comerciais desconsidera, na montagem do plano de acesso, o ndice associado a uma coluna chave referenciada em uma funo como, por exemplo, TO_CHAR ou TO_NUMBER Para suplantar essa limitao, os ndices B-tree ou Bitmapped podem ser criados com a incluso de uma funo padro SQL ou construda pelo desenvolvedor ou mesmo uma expresso aritmtica, conforme a sentena de criao do ndice necessrio.

PostgreSQL: o B-Tree: ndices baseados em rvores B pois este padro facilita consultas utilizando a igualdade de valores ou intervalos de valores (>= > = < <=). o Hash: ndices que organizam um BD baseando-se em funes. Funciona em comparaes de igualdade (=) Apresenta resultados melhores que as B-tree mas possuem a limitao acima. Demandam a reorganizao manual de ndices aps falhas no BD e muitos desencorajam seu uso o GiST - ndices GiST (Generalized Search Tree) oferecem uma infraestrutura sobre a qual podem ser implementadas consultas Geram uma rvore de pesquisa balanceada verstil similar a uma rvore B que pode ser utilizada com estruturas de dados definidas pelo usurio e em implementaes diversas como em busca em texto Internamente composta por ns que apresentam pares (Valor, ponteiro para dado indexado ou para outro n). o GIN - ndices GIN(Generalized Inverted Index) so estruturas invertidas que permitem acesso a dados com mais de uma chave, como arrays

Composto por uma lista de registros tipo (chave, lista de linhas que contm o valor da chave). Internamente cada ndice GIN contm uma rvore B com base no valor da chave indexada, cujas folhas apontam para os valores das linhas relacionadas chave.

Como se configura/organiza ndices no PostGreSQL?


B-tree

Os ndices B-tree podem ser utilizados quando a coluna indexada est envolvida em uma comparao utilizando algum destes operadotes:

< <= = >= >

O comando CREAT INDEX cria um ndice B-tree, que adequado para a maioria das situaes

R-tree

O ndice R-tree sempre utilizado quando a coluna indexada est envolvida em uma comparao utilizando um dos seguintes operadores:

<< &< &> >> @ ~= &&

Para criar um ndice R-tree, podemos utilizar o seguinte cdigo:

CREATE INDEX nome ON tabela USING RTREE (coluna);

Hash

O ndice Hash sempre utilizado quando a coluna indexada est envolvida em uma comparao utilizando o operador =. Cdigo para criar um ndice Hash:

CREATE INDEX nome ON tabela USING HASH (coluna);

Os ndices Hash no possuem desempenho superior aos ndices B-tree. Por este motivo desaconselhado o uso de ndices Hash no PostgreSQL

GiST

Os ndices GiST no so um nico tipo de ndice, mas em vez disto uma infraestrutura dentro da qual podem sem implementadas muitas estratgias de indexao diferentes. Assim sendo, os operadores em particular com os quais o ndice GiST pode ser utilizado variam dependendo da estratgia de indexao

Estruturas de Dados

Listas Lineares o Coleo ou agrupamento de dados, tendo cada elementos da lista uma referncia de acordo com sua posio o Dependendo de como so tratados podemos ter: filas: parece-se com uma fila na vida real. Operao bsica: FIFO. Uso: Impresso, ... pilhas: tipo de lista linear onde os elementos so inseridos e removidos a partir da extremidade final. Semelhana com uma pilha de pratos. Operao bsica: LIFO. Uso: rotinas internas de avaliao de expresses matemticas, controle de chamadas e retorno de funes.

rvores
o o o o o

Itens organizados de forma hierrquica se parecendo com uma rvore na vida real Possuem um n principal chamado raiz, ns secundrios chamados ns interiores e ns terminais chamados folhas Cada n possui uma chave para organizar as informaes e os dados propriamente ditos O n superior chamado de pai e o inferior de filho Muito comum o uso da rvore binria pois a chave de pesquisa permite iniciar a busca a partir da raiz que representa a posio central dentro do BD

Ordenao de Dados

Exerccio V: Daniel o Mtodo Bubble: Descrio do mtido e Exemplo

Descrio:

O Mtodo de bubble , ou ordenao por flutuao (literalmente "por bolha"), um algoritmo de ordenao dos mais simples. A ideia percorrer o vetor diversas vezes, a cada passagem fazendo flutuar para o topo o maior elemento da sequncia. Essa movimentao lembra a forma como as bolhas em um tanque de gua procuram seu prprio nvel, e disso vem o nome do algoritmo.

No melhor caso, o algoritmo executa operaes relevantes, onde 'n' representa o nmero de elementos do vetor. No pior caso, so feitas operaes. A complexidade desse algoritmo de Ordem quadrtica. Por isso, ele no recomendado para programas que precisem de velocidade e operem com quantidade elevada de dados.

Exemplo de como feita a ordenao no mtodo:

Mtodo QuickSort: Descrio do mtido e Exemplo

Descrio:

Quicksort um mtodo de ordenao muito rpido e eficiente, inventado por C.A.R. Hoare em 1960.

Este mtodo adota a estratgia de diviso e conquista. A estratgia consiste em rearranjar as chaves de modo que as chaves "menores" precedam as chaves "maiores". Em seguida o Quicksort ordena as duas sublistas de chaves menores e maiores recursivamente at que a lista completa se encontre ordenada. Os passos so: Escolha um elemento da lista, denominado piv; Rearranje a lista de forma que todos os elementos anteriores ao piv sejam menores que ele, e todos os elementos posteriores ao piv sejam maiores que ele. Ao fim do processo o piv estar em sua posio final e haver duas sublistas no ordenadas. Essa operao denominada partio; Recursivamente ordene a sublista dos elementos menores e a sublista dos elementos maiores; A base da recurso so as listas de tamanho zero ou um, que esto sempre ordenadas. O processo finito, pois a cada iterao pelo menos um elemento posto em sua posio final e no ser mais manipulado na iterao seguinte.
o

Mtodo Direct Insertion: Descrio do mtido e Exemplo

O Mtodo de insero direta(Direct Insertion), um simples algoritmo de ordenao, eficiente quando aplicado a um pequeno nmero de elementos. Em termos gerais, ele percorre um vetor de elementos da esquerda para a direita e medida que avana vai deixando os elementos mais esquerda ordenados. O algoritmo de insero funciona da mesma maneira com que muitas pessoas ordenam cartas em um jogo de baralho como o pquer.

Caractersticas: - Menor nmero de trocas e comparaes entre os algoritmos de ordenao O(n) quando o vetor est ordenado. - Pior caso O(n)
o

Mtodo Shell: Descrio do mtido e Exemplo

Descrio:

Criado por Donald Shell em 1959, publicado pela Universidade de Cincinnati, Shell sort o mais eficiente algoritmo de classificao dentre os de complexidade quadrtica. um refinamento do mtodo de insero direta. O algoritmo difere do mtodo de insero direta pelo fato de no lugar de considerar o array a ser ordenado como um nico segmento, ele considera vrios segmentos sendo aplicado o mtodo de insero direta em cada um deles.[3] Basicamente o algoritmo passa vrias vezes pela lista dividindo o grupo maior em menores. Nos grupos menores aplicado o mtodo da ordenao por insero.

A ordenao Shell utiliza a quebra sucessiva da sequncia a ser ordenada e implementa a ordenao por insero na sequncia obtida. Por ser um mtodo de complexidade O(n^2 ) no aconselhvel a sua implementao para sequncias grandes, mas possui uma boa eficincia para as pequenas e medianas.

RAID

ndices:
o o

ndice Primrio: definido pela PRIMARY KEY e ordenam fisicamente os registros ndice Secundrio: Otimizam as consultas feitas pelo comando SELECT do SQL. No ordenam fisicamente os registros gravados nas tabelas mas so utilizados na localizao de registros ndice Denso: O arquivo de ndice possui uma entrada para cada registro armazenado no arquivo de dados, sendo assim, quando procuramos um registro utilizando o ndice, ele nos remete diretamente para uma posio especfica no arquivo ou tabela ndice Esparso: Armazenam apenas uma entrada para cada blocode dados armazenado no disco. O arquivo de dados dividido em diversos blocos endereveis a partir de um tamanho padro (1024 bytes por exemplo). Com um pesquisa binria podemos ter um melhoria na performance de at 10 vezes

RAID Redundant Array Inexpensive/Independent Disk (Conjunto Redundante de Discos Econmicos/Independentes) o Agrupamento de discos rgidos que funcionam de forma concomitante ou paralela, com o objetivo de reduzir os riscos de danos causados a arquivos e aumentar a performance no acesso aos dados o Os discos podem trabalhar independentemente ou de forma sincronizada, com os dados espalhados entre eles o O RAID pode ser implementado via software ou hardware

Configurao

RAID 0
o o o o

So necessrios ao menos 2 discos Os dados so fragmentados em segmentos consecutivos gravados sequencialmente em diferentes discos do conjunto O segmento possui um tamanho fixo, definido por bloco. Utiliza o mximo do espao portanto sem garantia de redundncia A idia espelhar as informaes em um segundo disco de forma que o sistema grave os dados ao mesmo tempo nos dois discos

Protege os dados, pois caso um dos discos falhe, o sistema continua funcionando normalmente porm tem a desvantagem do custo, pois com dois Discos utiliza-se a rea til de apenas 1.

RAID 0 + 1

Exige pelo menos 4 discos na implementao com espelhamento de cada par de disco e os pares representando o RAID nivel 0 Ao mesmo tempo obtm-se ganho de desempenho e redundncia O problema de usar RAID 0 + 1, o custo alto que se tem com os discos, pois no mnimo se obrigado a possuir 4 discos.

RAID I

Distribui os dados entre os discos mas alm do espelhamento como faz o RAID 0, possui duplicidade de discos Para sua implementao so necessrios pelo menos 2 discos.

RAID 2

Possui semelhana com o RAID 4 mas exige um disco extra onde so gravadas informaes de controle de erros (ECC - Error Correcting Code) Ficou obsoleto depois que os novos drives de disco rgidos foram fabricados possuindo este controle no prprio circuito.

RAID 3

Possui como caracterstica principal a gravao paralela com paridade O controle dos discos bastante complexo uma vez que utiliza-se o menor tamanho possvel para o segmentos de dados Desta forma, necessrio que todos os discos tenham seis eixos perfeitamente sincronizados, a fim de evitar o atraso na transferncia dos dados.

RAID 4

Exige um conjunto de discos iguais, com um mnimo de 3 unidades. Um dos discos reservado para gravao das informaes de paridade dos dados, como no RAID 3 Os discos de gravao de dados so configurados para armazenar segmentos grandes o suficiente para conter um registro inteiro, o que permite a leitura independente dos dados.

RAID 5

Tem funcionamento similar ao RAID 4, mas em vez de gravar as informaes de paridade num disco extra, elas so distribudas pelos discos do conjunto, gravando-se um ou mais bits em cada disco RAID5 conhecido como data guarding ou strip set com paridade

A implementao possvel devido criao de informaes a partir de clculos booleanos feitos com o dado til (a informao a ser gravada no disco), gravando essa paridade em um dos discos e de forma distribuda.

RAID 6

Novo tipo de relacionamento que trabalha de forma similar ao RAID 5 Utiliza o dobro de bits de paridade, o que permite que no caso de dois discos apresentarem falha, os dados permanecero ntegros.

Vous aimerez peut-être aussi