Você está na página 1de 37

Opet Banco de dados

Referencias bibliogrficas
Date, C.J.; Introduo a Sistemas de Bancos de Dados, traduo da 8a. edio americana, Editora Campus, 2004. Toby Teorey, Sam Lightstone, Tom Nadeau; Projeto e modelagem de banco de dados, traduo da 4a. edio americana, Editora Elsevier, 2007.

Objetivo da Matria
Apresentar os conceitos bsicos de Banco de dados desde a anlise de requisitos at sua implementao fsica.

Introduo
Com o advento dos sistemas computacionais, a integrao e quebra de barreiras atravs da internet, observa-se um crescimento na quantidade de informaes acessveis. Com isso surge a necessidade de uma organizao e sinterizao de determinados dados. No ambiente corporativo essa necessidade evidenciada pela necessidade de tomadas de decises rpidas. Isso tem impulsionado o desenvolvimento de tecnologias para processamento destas informaes. Exemplos: Processadores de texto; Planilhas eletrnicas; Sistema de gerenciamento de banco de Dados (SGBD).

Importncia do BD
a importncia da informao estabelece o valor do BD para o DBA para o analista/desenvolvedor para o gerente/diretor

O que um sistema de banco de dados?


De forma simplificada banco de dados um sistema computadorizado de manuteno de registros. O banco de dados puramente pode ser comparado a um repositrio de arquivos onde um usurio pode solicitar ao sistema intervenes neste arquivo como: Incluir arquivos ao banco; Incluir registros (dados) em um banco existente;

Prof. Hlvio Junior - 2009

Opet Banco de dados Busca de dados; Alterao dos dados; e Remoo de dados/arquivos. Exemplos: Lista telefnica; Controle de estoque de uma autopeas; Controle do acero de uma biblioteca.

Gerenciador de arquivos
Redundncia e inconsistncia de dados Dificuldade no acesso aos dados Anomalias de acesso concorrente Problemas de segurana Problemas de integridade

Sistema de gerenciamento de banco de Dados (SGBD)


um aplicativo com recursos especficos capaz de gerenciar e manipular os dados facilitando o acesso a estes dados no desenvolvimento de aplicativos, isolando o usurio do banco de dados dos detalhes no nvel de hardware. O SGBD uma camada de software entre os dados fsicos e o usurio. Toda requisio vinda do usurio acontece ao SGBD e este efetua o tratamento necessrio. o componente mais importante: Efetua todo o controle de transaes DBMS - Database Management System SGBD - Sistema gerenciador de BD Funo: proporcionar um ambiente to conveniente quanto eficiente para a recuperao e armazenamento dos dados. So projetados para gerir grandes volumes de dados/transaes. Permite ao usurio definir, construir e manipular dados. SGBD = coleo de dados inter-relacionados + conjunto de programas para acess-los Tipos de SGBD: Hierrquico - Adabas Relacional - Oracle / SqlServer / Sybase / DB2 Orientado a Objetos - Jasmine Hbridos - Oracle 8i Vantagens: rapidez na manipulao e no acesso informao,

Prof. Hlvio Junior - 2009

Opet Banco de dados reduo do esforo humano (desenvolvimento e utilizao), disponibilizao da informao no tempo necessrio, controle integrado de informaes distribudas fisicamente, reduo de redundncia e de inconsistncia de informaes, compartilhamento de dados, aplicao automtica de restries de segurana, reduo de problemas de integridade.

SGBD - Propriedades
ACID Atomicidade: Todas as aes que compem a unidade de trabalho da transao devem ser concludas com sucesso, para que seja efetivada. Qualquer ao que constitui falha na unidade de trabalho e a transao deve ser desfeita (rollback). Quando todas as aes so efetuadas com sucesso, a transao pode ser efetivada (commit). Consistncia: Nenhuma operao do banco de dados de uma transao pode ser parcial. O status de uma transao deve ser implementado na ntegra. Por exemplo, um pagamento de conta no pode ser efetivado se o processo que debita o valor da conta corrente do usurio no for efetivado antes, nem vice-versa. Isolamento: Cada transao funciona completamente parte de outras estaes. Todas as operaes so parte de uma transao nica. O principio que nenhuma outra transao, operando no mesmo sistema, pode interferir no funcionamento da transao corrente ( um mecanismo de controle). Outras transaes no podem visualizar os resultados parciais das operaes de uma transao em andamento. Durabilidade: Significa que os resultados de uma transao so permanentes e podem ser desfeitos somente por uma transao subseqente. Por exemplo: todos os dados e status relativos a uma transao devem ser armazenados num repositrio permanente, no sendo passveis de falha por uma falha de hardware.

Integridade - satisfazer restries para manter consistncia (ex. nome de cidade escrito de diversas formas) Segurana de acesso (nveis de acesso) Desempenho (resposta em menor tempo) Redundncias Padres Dicionrio de dados (evita redundncia. Mostra detalhes dos dados do banco).

Prof. Hlvio Junior - 2009

Opet Banco de dados

Funes que surgiram a partir dos SGBD


AD - Administrador de Dados Pessoa que conhece as necessidades da empresa em relao aos dados, em um nvel elevado de administrao. Decide quais dados devem ser armazenados e estabelece normas para manter e tratar estes dados. DBA - Database Administrator Conhece o ambiente fsico e plataformas operacionais de TI Garante o desempenho do BD Funes: Gerenciamento da disponibilidade do BD Modelagem de dados Planejamento e criao do BD Definir a estrutura de armazenamento e estratgia de acesso Gerenciamento da segurana de acesso Gerenciamento de Backup/Recovery Usurio Analista/desenvolvedor do Aplicativo

O que um Banco de Dados?


uma coleo (repositrio) de dados usada por aplicaes podendo ser consultado e alterado. Exemplos: Uma fbrica; Site de comrcio eletrnico; Locadora de filmes

Ciclo de vida do desenvolvimento de sistemas


Anlise e estratgia Projeto (BD) Construo e documentao Implantao Produo

Prof. Hlvio Junior - 2009

Opet Banco de dados

Desenvolvimento com BD
Modelagem Conceitual - Projeto de BD - Construo do BD Modelagem Funcional - Projeto da Aplicao - Construo da Aplicao desenvolvimento em 2 ou 3 camadas. Camada de persistncia - BD. Modelo de Dados Idia do Cliente - Modelo de Entidades - Modelo Fsico - Tabelas no disco Dado <> informao Dado - representa algo, mas no tem sentido sem contexto Informao - dado contextualizado Cuidar para na modelagem no usar a informao ao invs de dados

RDBMS - Relational Database Management System O BD relacional apresenta tcnicas especficas de manipulao de dados. Foi criado baseado na teoria de conjuntos Coleo de tabelas bidimensionais que se relacionam entre si 5 conceitos bsicos: - Tabelas - Colunas - Linhas - Campos - Registro Exemplos de BD relacional: Oracle, Sybase, SQLServer, DB2 Linguagem de manipulao de dados - segue padro ANSI92 que ir atender qualquer banco relacional.

Prof. Hlvio Junior - 2009

Opet Banco de dados

RDSMS - Relational Database Management System


Banco de Dados Relacional um conceito abstrato que define maneiras de armazenar, manipular e recuperar dados estruturados unicamente na forma de tabelas, construindo um banco de dados.

Objetivo
O banco de dados relacional tem o objetivo de facilitar a manipulao dos dados

Modelo Relacional
Pode ser descrita da maneira informal ou formal. Informal: Preocupao com aspectos prticos da utilizao. Termos (tabela, linha e coluna) Formal: Preocupao com a semntica formal do modelo. Termos (relao(tabela), tupla(linha) e atributo(coluna).

Tabela (ou relaes, ou entidade) Estrutura de linhas e colunas. Cada linha de uma tabela contm o mesmo conjunto de colunas. As tabelas se relacionam atravs de regras de relacionamento, estas regras consistem em associar um ou mais atributos (colunas) de uma tabela com um ou mais atributos de outra tabela. Exemplo: Tabela funcionrio relacionado com a tabela cargos.

Registros (ou tuplas) Cada linha formada por uma lista ordenada de colunas representa um registro, ou tupla. Os registros no precisam conter informaes em todas as colunas, podendo assumir valores nulos quando assim se fizer necessrio. Resumidamente, um registro uma instncia de uma tabela, ou entidade. Exemplo: O empregado Pedro uma instncia (registro) da tabela funcionrio, e a funo Analista Comercial a instncia (registro) da tabela cargo. Uma associao entre estas duas tabelas criaria a seguinte instncia de relacionamento: Pedro Analista Comercial, onde o verbo ser representa uma ligao entre os registros distintos.

Prof. Hlvio Junior - 2009

Opet Banco de dados Colunas (ou atributos) As colunas de uma tabela so tambm chamadas de Atributos. Ao conjunto de valores que um atributo pode assumir chama-se domnio. Por exemplo: em um campo do tipo numrico, sero somente armazenados nmeros. O conceito mais similar a domnio o de Tipo Abstrato de Dados em linguagens de programao, ou seja so meta-dados (dados acerca de dados).

Chave um conjunto de um ou mais atributos que permite-nos identificar unicamente cada registro. Quando um registro inserido em uma tabela o banco verificar se este registro j existe com base na chave. Exemplo: Turma, Aluno, Ano, Semestre, Matria. Tipos de chaves Chave Primria: (PK Primary key): a chave que identifica cada registro da tabela dando a unicidade necessria. Esta nunca se repetir. Chave Estrangeira (FK Foreign Key): a chave formada de um relacionamento com a chave primria de outra tabela. Caso a chave primaria seja composta na origem a chave estrangeira tambm ser.

Relacionamentos Por meio dos relacionamentos, com o uso de chaves estrangeiras, possvel implementar restries. Tipos de relacionamento 1:1 (um para um): Indica que as tabelas relacionadas tem relao nica entre si.

Prof. Hlvio Junior - 2009

Opet Banco de dados 1:N (um para N): A Chave primaria da tabela que tem o lado 1 vai para a tabela do lado N. No lado N ela chamada de chave estrangeira.

N:N (N para N): quando tabelas tm entre si relao n..n, necessrio criar uma nova tabela com as chaves primrias das tabelas envolvidas, ficando assim uma chave composta, ou seja, formada por diversos campos-chave de outras tabelas. A relao ento se reduz para uma relao 1..n, sendo que o lado n ficar com a nova tabela criada.

Prof. Hlvio Junior - 2009

Opet Banco de dados Auto relacionamento: Relaciona elementos de um conjunto-entidade E a elementos desse mesmo conjunto-entidade.

Os relacionamento 1 para 1 e 1 para N podem ser mapeados diretamente em chaves estrangeiras nas tabelas originais. J o relacionamento N para N exige o uso de uma tabela auxiliar.

Exemplo: Tabela Cliente (dados): cd-cliente, nome, rua, cidade Tabela Conta (dados): nro-conta, saldo Tabela Cliente-Conta (relacionamento): cd-cliente, nro-conta

Prof. Hlvio Junior - 2009

Opet Banco de dados

Linguagens de Banco de Dados


Structured Query Language (SQL) a linguagem padro dos bancos de dados relacionais, criado pela IBM em 1970, foi padronizada em 1992 e depois em 1999. Nenhum dos bancos de dados relacionais atualmente implementam os 2 padres em sua totalidade. A SQL uma linguagem enorme, de forma alguma pretende-se abortar sua totalidade desta matria.

DDL Data Definition Language (Linguagem de definio de dados)


Uma ddl permite ao usurio definir e excluir alguns objetos no banco de dados como: tabela, ndice, visualizaes e outros. Alguns SGDB permitem alterar estes objetos. Exemplo: CREATE nome_do_objeto ALTER nome_do_objeto DROP nome_do_objeto CREATE Cria um objeto no DB; Ex.: Cria uma tabela no banco de dados. ALTER Utilizado para alterar um objeto. Conforme comentado anteriormente nem todos os SGDB implementam este comando. Ex.: Altera um campo dentro da tabela no banco de dados.

DCL Data Control Language (Linguagem de controle de dados)


A instruo DCL utilizada para controlar os aspectos de autorizao de usurios em relao aos diversos objetos do banco. Exemplo: GRANT REVOKE DENY

DML Data Manipulation Language ( Linguagem de manipulao de dados)


a parte mais utilizado dentro de uma banco de dados. Atravs de um comando DML pode-se incluir, excluir, modificar e selecionar dados contidos dentro de um banco de dados. Exemplo: SELECT

Prof. Hlvio Junior - 2009

Opet Banco de dados INSERT UPDATE DELETE

Nveis de Abstrao

Nvel fsico: nvel mais baixo de abstrao. Descreve como os dados esto realmente armazenados, englobando estruturas complexas de baixo nvel. Nvel conceitual: descreve quais dados esto armazenados e seus relacionamentos. Neste nvel, o banco de dados descrito atravs de estruturas relativamente simples, que podem envolver estruturas complexas no nvel fsico. Modelagem. Nvel de vises do usurio: descreve partes do banco de dados, de acordo com as necessidades de cada usurio, individualmente. DDL e DML. O Nveis Conceitual e Externo so nveis de modelo, ou seja, so definidos em termo de construes voltadas ao usurio, como registros e campos, enquanto o nvel interno definido em termos de construes voltadas para a maquina, como bits e bytes.

Prof. Hlvio Junior - 2009

Opet Banco de dados

Exemplo modelo conceitual (modelo ER):

Prof. Hlvio Junior - 2009

Opet Banco de dados

Ciclo de vida do banco de Dados


1. Anlise de requisitos; 2. Projeto lgico; a. Modelagem de dados conceitual; b. Integrao da viso; c. Transformao do modelo conceitual em modelo lgico (tabelas SQL); d. Normalizao; 3. Projeto fsico; 4. Implementao, monitorao e modificao de banco de dados.

Modelo Conceitual e Lgico


Modelo conceitual
Na modelagem de dados conceitual, a nfase dominante esta na simplicidade e ma legibilidade. O Objetivo do projeto do esquema conceitual capturar os requisitos de dados do mundo real de uma maneira simples e significativa, que seja inteligvel pelo projetista de banco de dados e pelo usurio final. O Usurio final a pessoa responsvel por acessar o banco de dados e executar consultas e atualizaes por meio do software do SGBD. A tcnica que utilizaremos entidade-relacionamento (ER) para a modelagem de dados conceitual foi apresentada inicialmente em 1976 por Peter Chen. O formato Chen do modelo ER emprega retngulos para especificar entidades, que de certa forma so semelhantes a registros. Ele tambm usa objetos em forma de losango para representar os vrios tipos de relacionamentos, que so diferenciados por nmeros ou letras colocadas nas linhas que conectam os losangos aos retngulos. Ex.:

Prof. Hlvio Junior - 2009

Opet Banco de dados

Modelo Lgico
A modelagem de dados lgica leva em considerao os limites impostos por algum tipo de tecnologia de banco de dados e deriva do modelo conceitual. Este modelo est mais prximo com a forma de implementao no SGBD. Ex.:

Para a transformao do modelo conceitual para o modelo lgico algumas regras devem ser observadas: Adequao de nomenclatura; Normalizao; Tabelas com o mesmo contedo de informao da entidade original da qual derivada; Tabela com a incluso da chave estrangeira da entidade pai; Tabela derivada de um relacionamento, contendo as chaves estrangeiras de todas as entidades no relacionamento; Em um relacionamento muitos-para-muitos exige uma nova tabela contendo as chaves primrias das duas entidades.

O modelo Entidade-Relacionamento
Este modelo consiste em 3 classes de objetos: entidades, relacionamentos e atributos.

Entidades
Entidades so os principais objetos de dados sobre os quais informaes devem ser coletadas; elas normalmente representam uma pessoa, lugar, coisa ou evento. Exemplo: Clientes, Fornecedores, Alunos, Funcionrios, Departamentos, etc. Uma ocorrncia especfica de uma entidade chamada de instancia da entidade, ou, s vezes, ocorrncia da entidade. Exemplo: Cliente 10, Funcionrio Joo, Aluno Pedro, etc.

Entidades possuem identificadores internos que determinam com exclusividade a existncia de instancias de entidade, mas entidades fracas derivam sua identidade dos atributos de identificao de uma ou mais entidades pai.

Prof. Hlvio Junior - 2009

Opet Banco de dados Exemplo: A entidade fraca Histrico-cargo-func ast relacionada entidade Funcionrio e depende de Funcionrio para a sua prpria existncia.

Atributos
Caractersticas de entidades, detalhes descritivos sobre ela. Existem dois tipos de atributos: Identificadores: Usado para determinar exclusivamente uma instncia de uma entidade (chave primria); Descritores: Atrubuto no chave, usado para especificar uma caracterstica no exclusiva de determinada instncia da entidade. Exemplo: Nome do aluno, Nmero da turma, Endereo do fornecedor, Sexo do funcionrio, etc. Domnio do atributo o universo de valores que um atributo pode armazenar. Exemplo: Conjunto de valores do atributo Sexo do funcionrio: M ou F; Conjunto de valores do atributo Nome do aluno: 40 caracteres alfanumrico. Conjunto de valores do atributo salrio: inteiro maior que 5000

Prof. Hlvio Junior - 2009

Opet Banco de dados

Relacionamento
Uma associao entre duas ou mais entidades

Grau de um relacionamento
Nmero de entidades associadas no relacionamento (binrio, ternrio, outro nrio)

Conectividade de um relacionamento
um-para-um, um-para-muitos, muitos-para-muitos Quando utilizado para uma contagem real de elementos associados conectividade chamada de cardinalidade da conectividade.

Prof. Hlvio Junior - 2009

Opet Banco de dados Exerccio 1. Vdeo locadora Uma video-locadora trabalha com o aluguel de VHS, DVD e Blue-Ray. Todos os 3 tem um cdigo, o titulo que o descreve e a categoria. A locadora empresta apenas para os clientes cadastrados. O seu nome, endereo, data de nascimento e telefone ficam anotados em uma ficha junto com um cdigo numrico seqencial atribudo ao cliente no momento do cadastro. Cada cliente pode alugar um ou mais objetos de locao (VHS, DVD e Blue-Ray). interesse da locadora, manter um histrico dos aluguis j realizados, a fim de gerenciar o perfil dos seus clientes. 2. Concerto Esto agendados vrios concertos para a temporada de msica deste ano no Teatro Municipal. Cada concerto, identificado por uma data, vai apresentar vrias obras de compositores diversos. Num s concerto podem ser interpretadas mais do que uma obra do mesmo compositor. Cada compositor identificado por um nmero de entrada na tabela, conhecendo-se ainda seu nome e nacionalidade, e as respectivas obras so numeradas por ordem de cadastramento e tm ainda seu tempo de durao, e o nome. Pretende-se que sejam facilmente conhecidos os programas dos concertos agendados. 3. Hospital Um hospital com um conjunto de pacientes e um corpo mdico. Associe a cada paciente um pronturio registrando os diversos exames e avaliaes realizados. Considere que cada mdico trabalha em um determinado departamento, que tem um chefe. O paciente pode ser interno, consulta, emergncia. Sendo que todos devem ter o cadastro de dados pessoais, e tambm, a ala e o motivo de internamento (internos), horrio e mdico da consulta (consulta), e estado (coma, consciente, etc) para emergncia.

Prof. Hlvio Junior - 2009

Opet Banco de dados

Chave primria
Regras: Valores de chave primria no podem ser nulos (NN Not Null): Um valor nulo uma lacuna em uma coluna de uma tabela. Valores de chaves primarias no podem ser nulos porque uma linha sem chave primaria no se distingue de outras linhas da mesma tabela; Colunas com chaves primarias no podem ter valores duplicados (ND No Duplicate): Um valor duplicado um valor exatamente igual a outro de uma ou mais linhas da mesma coluna na mesma tabela; Se a coluna possui valores duplicados esta no pode servir de identificador da linha; Chaves primarias no podem ser alteradas (NC No Change): O contedo de uma chave primaria no pode sofrer alteraes. Recomendaes Selecione chaves primarias absolutamente disciplinadas e que permaneam nicas; Selecione chaves primarias que no tenham qualquer tendncia a alteraes; Se possvel seleciona chaves primarias simples; De preferncia a colunas numricas para chaves primarias; Selecione chaves primarias que sejam familiares; Se no houver nenhuma coluna com chave primaria candidata, utilize chaves primarias atribudas pelo sistema.

Chave Estrangeira
Uma chave estrangeira uma coluna ou grupo de colunas que pode ou no ser chave primria da tabela em questo, mas, com certeza chave primria de outra tabela; Uma chave estrangeira formada por mais de uma coluna chamada de chave estrangeira composta. Chaves estrangeiras so indicadas pela sigla FK (Foreign Key) abaixo do cabealho da coluna apropriada.

Restries de Integridade
Um dos principais objetivos de um SGBD a integridade dos dados. Um banco de dados ntrego um banco que reflete corretamente a realidade representada pelo banco de dados. Para garantir a integridade de um banco de dados os SGBD oferecem o mecanismo de restrio de integridade. Na abordagem relacional, costuma-se classificar as restries em quatro categorias:

Prof. Hlvio Junior - 2009

Opet Banco de dados

Integridade de domnio:
Especificam qual valor um atributo pode admitir; Ex.: numero inteiro, valores alfanumricos, data.... O atributo nome_cliente e nome_empregado podem ter o mesmo domnio: o conjunto de todos os nomes de pessoas, campo alfanumrico tamanho 40.

Integridade de vazio:
Especificam se os atributos podem ou no serem vazios, isto , se podem conter valores nulos.

Integridade de Chave:
Valores da chave primaria (PK) devem ser nicos.

Integridade Referencial:
Os valores que aparecem nos atributos em uma chave estrangeira devem aparecer na chave primaria da tabela referenciada. Garantindo a no corrupo dos dados, de modo a no haver como existir um registro "filho" sem um registro "pai". Exemplo: Com uma tabela de pases e a tabela de cidades, esto na tabela de pases os pases A e B cadastrados, e na tabela de cidades as cidades de AA (no pas A) e BB (no pas B). Se tentarmos excluir o pas A, essa operao no deve ser permitida, pois h cidades relacionadas o pas A e que tm essa referncia como chave estrangeira.

Todas essas restries so garantidas automaticamente pelo SGBD. As restries que no se encaixam em nenhuma das categorias acima so chamadas de restries semnticas, isto , restries criadas pelo programador. Ex.: Um empregado do departamento Finanas no pode ter a categoria funcional Engenheiro... Um empregado no pode ter salrio maior que seu superior imediato. NOT NULL A restrio NOT NULL impede a introduo de valores nulos na coluna. Nome nvarchar(30) NOT NULL CHECK() A restrio CHECK() permite realizar a validao dos dados introduzidos na coluna, atravs da especificao de uma condio. DepNum int NOT NULL CHECK (DepNum >= 1)

Prof. Hlvio Junior - 2009

Opet Banco de dados UNIQUE() A restrio UNIQUE() permite indicar que os valores dessa coluna no se podem repetir. Nome nvarchar(30) NOT NULL UNIQUE (Nome) PRIMARY KEY A restrio PRIMARY KEY equivalente s clusulas NOT NULL + UNIQUE juntas, isto , o contedo coluna ou das colunas no pode ser nulo e no pode admitir repeties. DepNum int PRIMARY KEY REFERENCES A restrio REFERENCES permite fazer a validao das chaves estrangeiras. DepNum as Int REFERENCES Departamento Se a chave estrangeira for formada por dois ou mais campos, ter que se utilizar a clusula Foreign Key. Exemplo: comando para criar a tabela empregado.
CREATE TABLE Empregado ( EmpNum int NOT NULL CONSTRAINT PK_Empregado_EmpNum PRIMARY KEY (EmpNum) CONSTRAINT CK_Empregado_EmpNum CHECK (EmpNum >= 1), Nome nvarchar (50) NOT NULL, Categoria nvarchar (30) NULL , Salario decimal(10,2) NOT NULL DEFAULT 0.0 CHECK (Salario >= 0.0), DepNum int CONSTRAINT FK_Empregado_DepNum FOREIGN KEY (DepNum) REFERENCES Departamento(DepNum) ON UPDATE CASCADE ON DELETE NO ACTION );

Prof. Hlvio Junior - 2009

Opet Banco de dados

Normalizao
Normalizar um banco de dados a cincia de reduzir qualquer duplicao de dados em tabelas. Voc pode ento criar vrias tabelas relacionadas umas s outras por meio de chaves ou de ndices. A remoo da duplicao dos dados levar a bancos de dados menores e mais compactos. A utilizao de tabelas desnormalizadas tem a desvantagem de que as informaes so armazenadas de forma duplicadas e desnecessrias que poderiam ser normalizadas em outras tabelas e ento agrupadas durante uma consulta. Isso portanto causar problemas de desempenho assim como ser utilizado um grande espao de armazenamento de dados.

Formas de normalizao
H vrias formas normais, porm algumas raramente so utilizadas fora do ambiente acadmico. As formas normais mais utilizadas so: Primeira forma Normal (1FN) Segunda forma Normal (2FN) Terceira forma Normal (3FN)

Tabela inicial (desnomalizada) Tabela de Notas Fiscais (Num. NF, Srie, Data emisso, Cod. do Cliente, Nome do cliente, Endereo do cliente, CNPJ do cliente, Relao das mercadorias vendidas (onde para cada mercadoria temos: Cdigo da Mercadoria, Descrio da Mercadoria, Quantidade vendida, Preo de venda e Total da venda desta mercadoria) e Total Geral da Nota)

Primeira forma Normal (1FN)


Para alcanarmos a primeira forma normal em um banco de dados, precisamos eliminar os grupos repetidos de informao. Quaisquer grupos de dados repetidos encontrados sero movidos para outra tabela. Tabela de Notas Fiscais (Num. NF, Srie, Data emisso, Cdigo do Cliente, Nome Cliente, Endereo do cliente, CNPJ do cliente e Total Geral da Nota) Tabela de Vendas (Num. NF, Cdigo da Mercadoria, Descrio da Mercadoria, Quantidade vendida, Preo de venda e Total da venda desta mercadoria) Obs. Os campos sublinhados identificam as chaves das estruturas. Como resultado desta etapa ocorre um desdobramento dos dados em duas estruturas, a saber:

Prof. Hlvio Junior - 2009

Opet Banco de dados Primeira estrutura (Tabela de Notas Fiscais): Dados que compem a estrutura original, excluindo os elementos repetitivos. Segundo estrutura (Tabela de Vendas): Dados que compem os elementos repetitivos da estrutura original, tendo como chave o campo chave da estrutura original (Num. NF) e o campo chave da estrutura de repetio (Cdigo da Mercadoria).

Segunda forma Normal (2FN)


Uma tabela est na segunda forma normal (2FN) se, e somente se, ela estiver na 1FN e os atributos no-chave foram totalmente dependentes da chave primria. Em outras palavras, para alcanarmos a segunda forma normal, cada coluna da tabela deve depender da chave primria completa. Um atributo (coluna) ser totalmente dependente da chave primria se para obter essa informao s possvel usando a chave completa. Se apenas uma parte da chave for necessria ento necessrio revisar a diviso das tabelas. Estrutura na segunda forma normal (2FN): Tabela de Notas Fiscais (Num. NF, Srie, Data emisso, Cdigo do Cliente, Nome do cliente, Endereo do cliente, CNPJ do cliente e Total Geral da Nota) Tabela de Vendas (Num. NF, Cdigo da Mercadoria, Quantidade vendida e Total da venda desta mercadoria) Tabela de Mercadorias (Cdigo da Mercadoria, Descrio da Mercadoria, Preo de venda) Como resultado desta etapa, houve um desdobramento da tabela de Vendas (a tabela de Notas Fiscais, no foi alterada, por no possuir chave composta) em duas estruturas a saber: Primeira estrutura (Tabela de Vendas): Contm os elementos originais, sendo excludos os dados que so dependentes apenas do campo Cdigo da Mercadoria. Segunda estrutura (Tabela de Mercadorias): Contm os elementos que so identificados apenas pelo Cdigo da Mercadoria, ou seja, independentemente da Nota Fiscal, a descrio e o preo de venda sero constantes.

Terceira forma Normal (3FN)


Uma tabela est na terceira forma normal (3FN) se, e somente se, nenhuma coluna seja dependente de outra na tabela. Alm disso, no pode haver uma derivada de outra na tabela. Tabela de Notas Fiscais (Num. NF, Srie, Data emisso, Cdigo do Cliente e Total Geral da Nota) Tabela de Vendas (Num. NF, Cdigo da Mercadoria, Quantidade vendida e Total da venda desta mercadoria) Tabela de Mercadorias (Cdigo da Mercadoria, Descrio da Mercadoria, Preo de venda) Tabela de Clientes (Cdigo do Cliente, Nome do cliente, Endereo do cliente e CNPJ do cliente)

Prof. Hlvio Junior - 2009

Opet Banco de dados Como resultado desta etapa, houve um desdobramento da tabela de Notas Fiscais, por ser a nica que possua campos que no eram dependentes da chave principal (Num. NF), uma vez que independente da Nota Fiscal, o Nome, Endereo e CNPJ do cliente so inalterados. Este procedimento permite evitar inconsistncia nos dados dos arquivos e economizar espao por eliminar o armazenamento freqente e repetidas vezes destes dados. A cada nota fiscal comprada pelo cliente, haver o armazenamento destes dados e poder ocorrer divergncia entre eles. As estruturas alteradas foram pelos motivos, a saber: Primeira estrutura (Tabela de Notas Fiscais): Contm os elementos originais, sendo excludo os dados que so dependentes apenas do campo Cdigo do Cliente (informaes referentes ao cliente). Segundo estrutura (Tabela de Clientes): Contm os elementos que so identificados apenas pelo Cdigo do Cliente, ou seja, independente da Nota Fiscal, o Nome, Endereo e CNPJ dos clientes sero constantes. Aps a normalizao, as estruturas dos dados esto projetadas para eliminar as inconsistncias e redundncias dos dados, eliminando desta forma qualquer problema de atualizao e operacionalizao do sistema. A verso final dos dados poder sofrer alguma alterao, para atender as necessidades especficas do sistema, a critrio do analista de desenvolvimento durante o projeto fsico do sistema.

Desnomalizao
A desnormalizao o oposto completo da normalizao, neste processo introduzido a redundncia dos dados em uma tabela para reduzir o nmero de ligaes de tabelas e potencialmente aumenta a velocidade do acesso aos dados. Nem sempre a normalizao total do sistema o ideal.

Prof. Hlvio Junior - 2009

Opet Banco de dados

Arquitetura Cliente/Servidor
Cliente-servidor um modelo computacional que separa clientes e servidores. Cada instncia de um cliente pode enviar requisies de dado para algum dos servidores conectados e esperar pela resposta. Por sua vez, algum dos servidores disponveis pode aceitar tais requisies, process-las e retornar o resultado para o cliente. Apesar do conceito ser aplicado em diversos usos e aplicaes, a arquitetura praticamente a mesma.

ODBC
ODBC (acrnimo para Open Data Base Connectivity) um padro para acesso a sistemas gerenciadores de bancos de dados. Este padro define um conjunto de interfaces que permitem o uso de linguagens de programao como Visual Basic, Delphi, Visual C++, entre outras capazes de utilizar estas interfaces, para ter acesso a uma vasta gama de bases de dados distintas sem a necessidade de codificar mtodos de acesso especializados. Usando o ODBC, atravs da sua (a do ODBC) implementao especfica da linguagem SQL, a aplicao pode comunicar-se com a base de dados de forma transparente, permitindo, por exemplo, que um mesmo programa possa utilizar simultaneamente o MySQL, o Access e o SQL Server sem a necessidade de mudanas na sua camada de dados. Obviamente, o uso destas interfaces est condicionado existncia de drivers ODBC especficos para as bases de dados que se deseja acessar. Com o surgimento e ascenso dos bancos de dados relacionais, cada empresa passou a adotar seu prprio padro de banco de dados. Neste contexto, um programa desenvolvido para acessar uma base de dados X precisaria ter sua camada de dados parcialmente ou totalmente reescrita para poder acessar uma base de dados diferente. Em meados da dcada de 90, o SQL Access Group criou um padro denominado Open Data Base Connectivity (ODBC), com o objetivo definir um mtodo de acesso universal que pudesse ser usado por qualquer software com qualquer base de dados, atravs de uma API padronizada, que poderia ser implementada pelos respectivos fabricantes.

SQL Plus
Iniciando servio Oracle Conectando com o servidor connect system/ezdrowas

Prof. Hlvio Junior - 2009

Opet Banco de dados

DDL Data Definition Language (Linguagem de definio de dados)


Uma ddl permite ao usurio definir e excluir alguns objetos no banco de dados como: tabela, ndice, visualizaes e outros. Alguns SGDB permitem alterar estes objetos. Exemplo: CREATE nome_do_objeto ALTER nome_do_objeto DROP nome_do_objeto CREATE Cria um objeto no DB; Ex.: Cria uma tabela no banco de dados. ALTER Utilizado para alterar um objeto. Conforme comentado anteriormente nem todos os SGDB implementam este comando. Ex.: Altera um campo dentro da tabela no banco de dados.

CREATE TABLE ALTER TABLE DROP TABLE RENAME TRUNCATE COMMENT

Cria uma tabela Modifica a estrutura da tabela Exclui as linhas e a estrutura da tabela Muda o nome Exclui todas as linhas da tabela Adiciona um comentrio para a tabela

Create/drop table
Os nomes das tabelas devem: Comear por uma letra; Ter de 1 a 30 caracteres; Deve conter apenas A Z, a-z, 0-9, _, $ e # No pode existir 2 objetos com o mesmo nome para o mesmo usurio; Para criar a tabela, o usurio deve ter o privilgio de CREATE TABLE . Como fazer: CREATE TABLE nome_da_tabela ( nome_da_coluna1 [DEFAULT expr] tipo_de_dado(n) [Null/Not Null],[<Constraint>], nome_da_coluna2 [DEFAULT expr] tipo_de_dado(n) [Null/Not Null],[<Constraint>], [<constraint da tabela>] ); Para saber quais tabelas pertencem ao usurio:

Prof. Hlvio Junior - 2009

Opet Banco de dados SELECT table_name FROM user_tables;

Ex.:
create table t ( a number, b varchar2(10) ); create table orders ( order_id number primary key order_dt date, cust_id references customers ); Drop table name

Alterao de tabela Incluso de novas colunas ALTER TABLE nome_da_tabela ADD (nome_da_coluna tipo_de_dado(n) [Null/Not Null],[<Constraint>]);

Modificao de colunas j existentes ALTER TABLE nome_da_tabela MODIFY (nome_da_coluna tipo_de_dado(n) [Null/Not Null]); Excluso de uma coluna ALTER TABLE nome_da_tabela DROP (nome_da_coluna);

Excluso da Tabela Todos os dados da tabela sero excludos, bem como a estrutura da mesma e todos os ndices pertencentes ela. DROP TABLE nome_da_tabela;

Renomeando o objeto Pode-se renomear tabelas, vises e sequncias. RENAME nome_da_tabela TO novo_nome; ALTER TABLE nome_da_tabela RENAME COLUMN nome_coluna TO nome_novo;

Prof. Hlvio Junior - 2009

Opet Banco de dados Limpeza da Tabela Exclui todas as linhas da tabela, deixando livre o espao de armazenamento antes usado por ela. No exclui a estrutura (esta a diferena do DROP TABLE). TRUNCATE TABLE nome_da_tabela;

Comentrios na Tabela e/ou nas Colunas Na tabela: COMMENT ON TABLE nome_da_tabela IS comentrio; Na coluna: COMMENT ON COLUMN nome_da_tabela.nome_da_coluna IS comentrio; Para saber quais os comentrios da tabela, basta executar o comando abaixo: Para comentrios na tabela: select comments from user_tab_comments where table_name = 'DEPTO'; Para comentrios nas colunas: select comments from user_col_comments where table_name = 'DEPTO';

Constraints
Garantem que as regras estabelecidas para a tabela sejam cumpridas. garantem a integridade relacional. Tipos de Constraints NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK Especifica que a coluna no pode conter nulos Especifica uma ou vrias colunas que devem ser nicas para todas as linhas da tabela Identifica unicamente uma linha Estabelece e fora um relacionamento de chave estrangeira entre a coluna e a outra coluna de uma tabela referenciada Especifica a condio que deve ser verdadeira

A definio da Constraint pode ser no nvel de tabela ou de coluna. Quando no nvel de coluna, deve ser definida logo aps a coluna; e no nvel de tabela definido ao final de todas as colunas, como o exemplo a seguir: CREATE TABLE nome_da_tabela (nome_da_coluna tipo_do_dado(n) [NULL/NOT NULL], [ CONSTRAINT nome_da_constraint tipo_da_constraint], [ CONSTRAINT nome_da_constraint tipo_da_constraint(nome_da_constraint)]

Prof. Hlvio Junior - 2009

Opet Banco de dados

CREATE TABLE DEPTO (DEPTO NUMBER(4) NOT NULL, NOME VARCHAR2(40) NOT NULL, FILIAL NUMBER(4), CONSTRAINT filial_fk FOREIGN KEY (filial) REFERENCES filial(codigofilial), CONSTRAINT depto_pk PRIMARY KEY (depto));

Busca todas as constraints criadas em uma tabela especfica select constraint_name, decode(constraint_type, 'P','Primary Key', 'R','Foreign Key', 'U','Unique', 'C','Check', 'D','Default') as TYPE, search_condition, table_name, r_owner, r_constraint_name, delete_rule from user_constraints where table_name = NOME order by owner;

Constraint FOREIGN KEY Palavras Chaves


FOREIGN KEY REFERENCES ON DELETE CASCADE ON DELETE SET NULL Define a coluna na tabela filha Identifica a tabela e a coluna na tabela pai Exclui as linhas dependentes na tabela filha quando uma linha excluda na tabela pai Converte a chave estrangeira em nulo quando apagada na tabela pai

Constraint CHECK Define uma condio que cada linha deve satisfazer. Ex.: CREATE TABLE PEA (..., cor char(10) CONSTRAINT cor_ck CHECK (cor in (VERMELHO, PRETO, AZUL, BRANCO)) )

Prof. Hlvio Junior - 2009

Opet Banco de dados

Create/drop sequences
CREATE SEQUENCE nome_da_sequence [INCREMENT BY n] [START WITH m] NOCACHE; onde: n o incremento m o incio da sequence Depois de criar uma sequence, ela gera nmeros que podem ser usado nas tabelas. Para referenci-los, use o NEXTVAL e o CURRVAL. NEXTVAL retorna o prximo nmero da sequence. CURRVAL obtm o valor corrente da sequence. Pode ser usado em comandos SELECT, INSERT, UPDATE.

Ex.: CREATE SEQUENCE cod_consumidor INCREMENT BY 1 START WITH 120 NOCACHE; SELECT cod_consumidor.NEXTVAL from dual; SELECT cod_consumidor.CURRVAL from dual; drop sequence pubs1;

Utilizando a sequence
Select pubs1.nextval from dual; Insert into nome values(pubs1.nextval);

Create/drop view
Create view nome as Select * from t Drop view nome;

Prof. Hlvio Junior - 2009

Opet Banco de dados

Dicionrio de Dados
O dicionrio um conjunto de tabelas especiais, criadas no usurio SYS, que tm como funo registrar todas as informaes de todos os objetos criados no banco de dados. Para termos acesso s informaes, podemos acessar as views internas do Oracle, que so separadas por trs grandes grupos, so: User_, All_ e DBA_. SQL> SELECT * FROM SYS.User_Objects Para cada grupo, logicamente, existe um funo diferente:

User_
Este grupo tem como finalidade exibir todos os objetos do usurio, criadas no schema do usurio.

All_
Este grupo lista todos os objetos associados ao seu schema e aos outros schemas que voc tem autorizao.

DBA_
Este grupo, tem a funo de exibir todos os objetos do banco de dados. Assim como temos os grupos, como dito inicialmente, temos as views internas, ou melhor dizendo, as tabelas especiais onde o Oracle armazena as informaes do software, que ser nossa fonte de consulta. As views esto listadas abaixo: Objects; Tables; Tab_Columns; Tab_Partitions; Indexes; Ind_Columns; Ind_Partitions; Constraints; Cons_Columns; Sequences; Synonyms; Users; Views; Updatable_Columns; Types; Type_Attrs; Type_Methods; Nested_Tables;

Prof. Hlvio Junior - 2009

Opet Banco de dados Object_Tables; Lobs; Method_Params; Method_Results.

Visualizando as tabelas criadas


SELECT table_name FROM user_tables; Ou SELECT table_name FROM all_tables;

Prof. Hlvio Junior - 2009

Opet Banco de dados

Atividade 1 (DDL e DML)

Considerando o modelo acima: 1. Crie os comanso DDL para a criao de todas as tabelas com suas respectivas constraints; 2. Crie 5 comandos DML de insert para cada uma das tabelas; 3. Crie 3 comandos DML de update para cada uma das tabelas; 4. Crie 2 comandos DML de detele para cada uma das tabelas.

Respostas
Questo 1
CREATE TABLE USUARIO( cod_usuario int not null, nome varchar2(255) not null, login varchar2(255) not null, senha varchar2(255) not null, email varchar2(255) null, nivel integer null, constraint PK_USUARIO PRIMARY KEY (cod_usuario) ); CREATE SEQUENCE USUARIO_SQ INCREMENTE BY 1 START WITH 1; CREATE TABLE EDITORA( cod_editora int not null, nome vatchar2(255) not null, CONSTRAINT PK_EDITORA PRIMARY KEY (cod_editora) ); CREATE SEQUENCE EDITORA_SQ INCREMENTE BY 1 START WITH 1; CREATE TABLE LIVRO( cod_livro int not null, editora int not null,

Prof. Hlvio Junior - 2009

Opet Banco de dados


titulo varchar2(255) not null, autor varchar2(255) not null, ano int not null, paginas int not null, edicao int not null, imagem varchar2(255) not null, CONSTRAINT PK_LIVRO PRIMARY KEY (cod_livro), CONSTRAINT PK_LIVRO_EDITORA FOREIGN KEY (editora) REFERENCES EDITORA(cod_editora) );

CREATE SEQUENCE LIVRO_SQ INCREMENT BY 1 START WITH 1;

Questo 2 Inserts da tabela usuario


insert into usuario values(usuario_sq.nextval, 'Joo', 'joao', '123456', 'joao@dominio.com.br', 1); insert into usuario values(usuario_sq.nextval, 'Maria', 'maria', '123456', 'maria@dominio.com.br', 1); insert into usuario values(usuario_sq.nextval, 'Tico', 'tico', '123456', 'tico@dominio.com.br', 5); insert into usuario values(usuario_sq.nextval, 'Teco', 'teco', '123456', 'teco@dominio.com.br', 3); insert into usuario values(usuario_sq.nextval, 'Paulo', 'paulo', '123456', 'paulo@dominio.com.br', 2);

Resultado do select na tabela editora


Cod_usuario 1 2 3 4 5 Nome Joo Maria Tico Teco Paulo login joao maria tico teco paulo senha 123456 123456 123456 132456 132456 email

joao@dominio.com.br maria@dominio.com.br tico@dominio.com.br teco@dominio.com.br paulo@dominio.com.br

nivel 1 1 5 3 2

Inserts da tabela editora


insert into editora values(editora_sq.nextval, 'Erica'); insert into editora values(editora_sq.nextval, 'Artmed'); insert into editora values(editora_sq.nextval, 'Intrinseca'); insert into editora values(editora_sq.nextval, 'Cancao Nova'); insert into editora values(editora_sq.nextval, 'Nova Fronteira');

Prof. Hlvio Junior - 2009

Opet Banco de dados Resultado do select na tabela editora


Cod_editora 1 2 3 4 5 Nome Erica Artmed Intrinseca Cancao Nova Nova Fronteira

Inserts na tabela livro


insert into livro values(livro_sq.nextval, 4, 'Quem me Roubou de mim', 'Fabio de Melo', 2008, 152, 1, '9788576770985.jpg'); insert into livro values(livro_sq.nextval, 2, 'Microsoft Office Access 2007', 'Steve Lambert, Joan Preppernau', 2008, 3369, '9788577802036.jpg'); insert into livro values(livro_sq.nextval, 3, 'lua Nova', 'Stephenie Meyer', 2008, 480, 1, '9788598078359.jpg'); insert into livro values(livro_sq.nextval, 1, 'Ajax - Guia Pratico Para Windows', 'Walace Soares ', 2006, 240, 1, '9788536501109.jpg'); insert into livro values(livro_sq.nextval, 5, 'O Cacador de Pipas', 'Khaled Hosseini ', 2005, 368, 1, '9788520917671.jpg');

Resultado do select na tabela livro


Cod_livro 1 editora titulo autor ano paginas edicao imagem

3 4

3 1

Quem me Roubou de mim Microso ft Office Access 2007 lua Nova Ajax Guia Pratico Para Window s O Cacador de Pipas

Fabio de Melo

2008

152

9788576770 985.jpg

Steve Lambert

2008

3369

9788577802 036.jpg

Stephenie Meyer Walace Soares

2008 2006

480 240

1 1

9788598078 359.jpg 9788536501 109.jpg

Khaled Hosseini

2005

368

9788520917 671.jpg

Prof. Hlvio Junior - 2009

Opet Banco de dados Questo 3 Comandos de update na tabela usurio


update usuario set nome = 'Joo Paulo', senha = '654321' where cod_usuario = 1; update usuario set email = 'maria@opet.com.br' where cod_usuario = 2; update usuario set senha = '147258' where cod_usuario = 5; update usuario set nivel = '1' where cod_usuario = 3; update usuario set nivel = '3' where cod_usuario in (5, 1, 2);

Comandos de update na tabela editora


update editora set nome = 'Cano Nova' where cod_editora = 4; update editora set nome = 'Erica lv' where cod_editora = 1; update editora set nome = 'Artmed Editora' where cod_editora = 2;

Comandos de update na tabela livro


update livro set editora = 2 where cod_livro in (4, 3, 2); update livro set editora = 5 where cod_livro = 4; update livro set titulo = 'Lua nova' where cod_livro = 3;

Questo 4 Comandos de delete na tabela usurio


delete from usuario where cod_usuario = 5; delete from usuario where cod_usuario = 3;

Prof. Hlvio Junior - 2009

Opet Banco de dados Comandos de delete na tabela editora


delete from editora where cod_editora = 3; delete from editora where cod_editora = 1;

Comandos de delete na tabela livro


delete from livro where cod_livro = 3; delete from livro where titulo = 'Lua nova';

Prof. Hlvio Junior - 2009

Opet Banco de dados

Atividade 2 (DDL e DML)

Considerando o modelo acima: 1. Crie os comanso DDL para a criao de todas as tabelas com suas respectivas constraints; 2. Crie 5 comandos DML de insert para cada uma das tabelas; 3. Crie 3 comandos DML de update para cada uma das tabelas; 4. Crie 2 comandos DML de detele para cada uma das tabelas.

Prof. Hlvio Junior - 2009

Você também pode gostar