Você está na página 1de 48

Disciplina

Laboratrio de Banco de Dados

Modelagem de Dados e Linguagem SQL

Currculo do Professor

Eduardo Arruda
Formao Acadmica

Mestre em Cincia da Computao Bacharel em Cincia da Computao


Experincia Profissional

Consultor/Desenvolvedor: 6 anos Gerente de Projetos: 3 anos


Atividades Atuais

Diretor de Informtica do TJRS: 8 anos Professor Universitrio: 14 anos Presidente da SUCESU-RS: 2008/2009

Aula 1

Modelagem de Dados

Habilidades ao final da aula Compreender os conceitos de Modelos de Dados Relaes Atributos Domnios Restries

Bancos de Dados
Banco de dados
coleo armazenada de elementos de dados inter-relacionados que podem ser compartilhados e acessados de forma concorrente por um nmero qualquer de aplicaes ou usurios

Exemplos:
Banco de dados de uma livraria Banco de dados de recursos humanos de uma empresa

Caractersticas de Bancos de Dados


Integrao Permite uma viso e gerncia integrada dos dados Reduz a redundncia e as inconsistncias Permite a definio de regras de restrio de integridade Compartilhamento Alta disponibilidade Segurana Adoo de um modelo de dados para representao, manipulao e armazenamento dos dados

Sistema de Gerncia de Bancos de Dados


Sistema de Gerncia de Bancos de Dados (SGBD):
conjunto de elementos de software responsveis por suportar e prover acesso a um conjunto de bancos de dados

Uma instncia (execuo) de um SGBD pode suportar diversos bancos de dados Oracle, Microsoft SQL Server, IBM DB2, CA-Ingres, MySQL, PostGres

Usurios de SGBDs
Cliente
Fornece subsdios para a construo do banco de dados (dados) e das aplicaes (processos), atravs da definio de Regras de Negcio Regras de Negcio definem a realidade a ser modelada, especificando as objetos, seus atributos, os relacionamentos entre estes, regras de validao, etc., alm do comportamento, a ser modelado atravs de mtodos
Deseja-se armazenar o ttulo e o preo de cada produto Um pedido inclui diversos produtos e um produto pode ser includo em diversos pedidos. Para cada item de um pedido definida a quantidade do produto e seu preo de venda

Usurios de SGBDs
Analista de Sistemas
O Analista de Sistemas deve representar as regras de negcio atravs de um Modelo Conceitual, gerando, assim, o esquema conceitual do banco de dados O esquema conceitual deve ser independente de qualquer Modelo Lgico ou SGBD especfico O Projetista de Banco de Dados deve definir o esquema lgico do banco de dados, baseado no esquema conceitual Adicionalmente, o Projetista deve definir as estruturas fsicas de armazenamento e de acesso aos dados, bem como especificar as regras de validao e outros objetos relevantes do banco de dados

Projetista de Banco de Dados


Usurios de SGBDs
Administrador de Banco de Dados
O Administrador de Banco de Dados deve fornecer suporte anlise, projeto e desenvolvimento tarefa do DBA (DataBase Administrator) projetar, controlar e coordenar as informaes armazenadas no banco de dados, garantindo sua segurana e o desempenho no acesso O Administrador de Dados responsvel por manter a coerncia dos esquemas de dados corporativos, ou seja, manter as estruturas de dados comuns a diferentes bancos de dados de uma corporao O Desenvolvedor codifica as consultas necessrias para recuperar e atualizar as informaes dos bancos de dados Estas consultas sero utilizadas dentro das aplicaes-cliente

Administrador de Dados

Desenvolvedor

Usurios de SGBDs
Usurio Avanado
Tem acesso ao banco de dados, podendo construir suas prprias consultas Utiliza utilitrios de construo interativa de consultas Seus acessos so limitados pelo privilgios de acesso concedidos pelo DBA

Usurio Singelo
Utiliza as aplicaes codificadas pelo Desenvolvedor Todas as suas consultas so pr-codificadas Seus acessos so limitados pelo privilgios de acesso concedidos pelo DBA para a sua conexo ou, indiretamente, para os sistemas que utiliza

Usurios de SGBDs
Usurio de Nvel Gerencial
Assim como os demais, tem acesso ao banco de dados, no entanto seu interesse est focado em obter informaes de cunho gerencial Utiliza ferramentas de minerao de dados (Data Mining)

Arquitetura ANSI de SGBDs


O padro ANSI define uma arquitetura em nveis para os bancos de dados
Nvel Externo
Independncia Lgica de Dados Viso dos Usurios/Desenvolvedores, derivada do Esquema Conceitual

Nvel Define a estrutura do Conceitual banco de dados Nvel Estruturas de Interno Armazenamento

Independncia Fsica de Dados

Arquitetura Funcional de SGBDs


Sistema de Recuperao Aps Falha Sistema de Gerncia de Registros Sistema de Gerncia de Buffers Sistema de Controle de Concorrncia Utilitrios

Sistema de Resoluo/ Otimizao Sistema de Indexao

Sistema de Gerncia de Arquivos Sistema de Gerncia de Disco Meios Fsicos de Armazenamento

Sub-sistemas dos SGBDs


Meios Fsicos de Armazenamento: discos, fitas, etc. Sistema de Gerncia de Disco e Sistema de Gerncia de Arquivos: componentes do Sistema Operacional responsveis por prover acesso aos meios fsicos de armazenamento (File System) Sistema de Gerncia de Buffers: implementa algoritmos para reduzir o nmero de leituras fsicas, mantendo parcelas de dados em memria Sistema de Indexao: implementa algoritmos de otimizao do acesso aos arquivos e memria

Sub-sistemas dos SGBDs


Sistema de Gerncia de Registros: otimiza a ocupao das estruturas de armazenamento do banco de dados Sistema de Resoluo/Otimizao de Consultas: recebe, resolve e otimiza as consultas ao banco de dados Sistema de Recuperao Aps Falha: mantm estruturas redundantes que garantem a recuperao dos dados aps a ocorrncia de falhas de transao, de sistema ou de disco Sistema de Controle de Concorrncia: implementa algoritmos de isolamento de transaes (em diferentes nveis), garantindo a independncia de suas execues

Modelos de Dados
Modelos so utilizados para construir uma representao abstrata da realidade A modelagem de dados est baseada na adoo de diferentes nveis de abstrao, desde a realidade a ser modelada at sua implementao fsica como estruturas de dados em um SGBD

Modelos de Dados
Modelos de dados mais conhecidos:
Entidade-Relacionamento: ??? Relacional: Microsoft SQL Server, Oracle, IBM DB2, CA-Ingres, MySQL, PostGreSQL Orientado a Objetos: O2, Jasmine, Versant Objeto-Relacional: Oracle 8i,9i e 10g, PostGreSQL Hierrquico: IMS, SYS2005, DL/1 Em rede: IDMS, DMS-1100, IDS

Modelagem de Dados
Viso do Usurio Anlise Modelo Conceitual Projeto Lgico Modelo Lgico Projeto Fsico Modelo Fsico

Mapeamentos entre Modelos


Usualmente deve ser realizado um mapeamento:
Esquema Conceitual Esquema Lgico Esquema Fsico Esquema Lgico

A necessidade de efetuar mapeamentos reduz a expressividade e clareza da modelagem Soluo: adotar um nico modelo em todas as etapas

Modelagem Baseada em Objetos


Utilizao dos conceitos de orientao a objetos na modelagem da parcela esttica dos sistemas realizada pelo emprego de ferramentas diagramticas Padro: Unified Modeling Language (UML) Reduz a necessidade de mapeamentos

Modelagem de Dados em Objetos


Utilizando orientao a objetos, possvel tratar de forma praticamente transparente as equivalncias entre os esquemas conceitual e lgico Mas e a gerao do esquema no SGBD? A gerao do esquema fsico depende do SGBD escolhido, que normalmente estar baseado no modelo relacional

Modelagem de Dados em Objetos


Assim, embora a modelagem orientada a objetos tenha inmeras vantagens, a pequena disponibilidade de SGBDs Orientados a Objetos (SGBDOOs) nos obriga a realizar o mapeamento
Esquema Conceitual Esquema Lgico Esquema Orientado a Objetos Esquema Relacional

Modelo Relacional
Modelo Lgico de Dados, originalmente proposto por E. F. Codd, caracterizado por
Independncia de Dados: mudanas no esquema interno no afetam o esquema conceitual e mudanas no esquema conceitual no afetam as aplicaes Linguagem Estruturada de Consulta (SQL) Reduo da Redundncia Simplicidade na representao dos dados Simplicidade na representao dos resultados das consultas sobre os dados

Modelo Relacional
Conceitos Formais
Domnio: dado uma caracterstica de um objeto da realidade, por exemplo, o nmero de matrcula de um aluno, o domnio deste elemento de dado o conjunto de todos os nmeros de matrcula possveis Relao: um objeto da realidade pode ser representado, de forma abstrata, por um conjunto de elementos de dados definidos, cada um, sobre um domnio

Exemplo de Relao
O objeto da realidade Produto, pode ser representado pela RELAO PRODUTOS, composta pelos seguintes elementos de dados ou ATRIBUTOS, definidos por domnios especficos:
cod_produto NUMBER ( 5 ) NOT NULL nome VARCHAR ( 200 ) NOT NULL descrio TEXT ano_lancamento DATE NOT NULL importado BIT NOT NULL preco SMALLMONEY NOT NULL prazo_entrega SMALLINT NOT NULL cod_categoria NUMBER ( 3 ) NOT NULL

Elementos das Relaes


Cada relao possui:
Cabealho: composto pelo conjunto de ATRIBUTOS que a compe Corpo: composto por um conjunto de TUPLAS, cada qual correspondendo representao abstrata de um objeto da realidade. Exemplo:
7 ALEX FLEMMING 01/01/2001 1 24 43 15 8 ALKALINE MAGMATISM... 01/01/1997 0 143 45 20 9 ALMANHAQUE PARA 1955... 01/01/1998 1 179 27 3

Caractersticas das Relaes


No h tuplas duplicadas pressupe a existncia de uma CHAVE PRIMRIA PK (conjunto de atributos garantidamente nico para todas as tuplas) As tuplas no seguem uma ordem Os atributos no seguem uma ordem Todos os atributos possuem domnios simples pressupe que as relaes esto na 1 FN

Relaes Normalizadas
Considere a relao pedidos que segue:
pedidos = num_pedido + cod_cliente + data_emissao + valor_total + {cod_produto + quantidade + valor_unitario + nome_produto + descricao + ano_lancamento + importado + preco + prazo_entrega + cod_categoria + nome_categoria + cod_categoria_pai}

A relao possui um conjunto de atributos multi-valorados (um domnio composto) Soluo: 1 Forma Normal
pedidos = num_pedido + cod_cliente + data_emissao + valor_total pedidos_produtos = num_pedido + cod_produto + quantidade + valor_unitario + nome_produto + descricao + ano_lancamento + importado + preco + prazo_entrega + cod_categoria + nome_categoria + cod_categoria_pai

Relaes Normalizadas
Considere a relao pedidos_produtos que segue:
pedidos_produtos = num_pedido + cod_produto + quantidade + valor_unitario + nome_produto + descricao + ano_lancamento + importado + preco + prazo_entrega + cod_categoria + nome_categoria + cod_categoria_pai

A relao possui um conjunto de atributos que no dependem integralmente da chave primria Soluo: 2 Forma Normal
pedidos_produtos = num_pedido + cod_produto + quantidade + valor_unitario produtos = cod_produto + nome_produto + descricao + ano_lancamento + importado + preco + prazo_entrega + cod_categoria + nome_categoria + cod_categoria_pai

Relaes Normalizadas
Considere a relao produtos que segue:
produtos = cod_produto + nome_produto + descricao + ano_lancamento + importado + preco + prazo_entrega + cod_categoria + nome_categoria + cod_categoria_pai

A relao possui um conjunto de atributos que dependem transitivamente da chave primria Soluo: 3 Forma Normal
produtos = cod_produto + nome_produto + descricao + ano_lancamento + importado + preco + prazo_entrega + cod_categoria categorias = cod_categoria + nome_categoria + cod_categoria_pai

Banco de Dados Relacional


Banco de dados que o usurio percebe como uma coleo de relaes normalizadas, cujo conjunto de tuplas varia no tempo Bancos de dados relacionais implementam um alto nvel de abstrao, afastando os usurios dos detalhes de implementao

Modelo Relacional
Conceitos Prticos
Uma TABELA armazena os objetos de uma classe da realidade Uma tabela composta por COLUNAS, as quais armazenam determinado atributo dos objetos da classe Cada instncia de uma classe (objeto) armazenada como uma LINHA da tabela

Restries de Integridade
Integridade de Entidade
Chave primria (PK) Toda a tabela deve possuir, obrigatoriamente, uma coluna (ou uma composio de colunas) cujo valor nico para todas as instncias Chave alternativa (AK) Eventualmente, outras colunas alm da chave primria podem ser nicas

Restries de Integridade
Integridade de Domnio
Tipos de dados Definem o domnio de uma coluna
cod_cliente nome cpf NUMBER ( 6 ) VARCHAR ( 100 ) T_CPF

Restries a valores nulos Definem se as colunas podero aceitar valores nulos


cod_cliente nome cpf NUMBER ( 6 ) NOT NULL VARCHAR ( 100 ) NOT NULL T_CPF NOT NULL

Restries de Integridade
Integridade de Domnio
Valores padro Define um valor padro a ser associado a uma coluna se no for fornecido valor (ou for explicitamente fornecido um valor NULL) para esta durante a insero
importado char(1) DEFAULT 'N' NOT NULL

A definio de valores padres particularmente importante para colunas NOT NULL

Restries de Integridade
Integridade de Domnio
Restries de validao Restrigem os valores que podem ser atribudos a uma coluna
CONSTRAINT CHK_CLI_DATA CHECK (data_nascimento < data_cadastro)

Restries de Integridade
Integridade Referencial
Integridade referencial Garantem a consistncia dos relacionamentos entre as tabelas
cidades cod_cidade : NUMERIC(4, 0) nome : VARCHAR(60) uf : CHAR(2) <<PK>> PK_CIDADES() <<FK>> FK_EST_CID() <<Index>> IDX_FK_EST_CID() 0..* 1

estados uf : CHAR(2) nome : VARCHAR(40) regiao : CHAR(2) <<PK>> PK_ESTADOS()

Restries de Integridade
Integridade Referencial
No exemplo, a definio da restrio de integridade referencial seria criada como segue
ALTER TABLE cidades ADD CONSTRAINT FK_EST_CID FOREIGN KEY (uf) REFERENCES estados (uf)

Esta restrio estabelece uma relao entre o atributo uf da tabela CIDADES e a chave primria da tabela ESTADOS

Restries de Integridade
Integridade Referencial
O SGBD deve prover mecanismos para assegurar que a restrio de integridade seja respeitada, ou seja, uma linha violando a restrio de integridade referencial no poder existir Estes mecanismos prevm a execuo de uma ao em resposta a uma atualizao, a fim de manter a integridade referencial

Restries de Integridade
Integridade Referencial
Existem diferentes aes possveis para evitar que uma operao de atualizao viole as restries de integridade referencial
RESTRICT: impede a execuo da operao Inserir uma Cidade em um Estado inexistente CASCADE: propaga a operao para respeitar as restries de integridade referencial Ao excluir um Estado, exclui todas as suas Cidades Ao atualizar a uf, atualiza a uf em todas as suas cidades

Restries de Integridade
Integridade Referencial
SET NULL: assegura as restries de integridade referencial associando um valor NULL chave estrangeira que poderia viol-las Ao remover um estado, faz com que a uf de todas as suas cidades fique NULL NULL no considerado um valor, portanto, no fere as restries de integridade referencial SET DEFAULT: semelhante ao de SET NULL, mas associa um valor padro chave estrangeira

Restries de Integridade

Integridade Definida pelo Usurio


O Projetista do Banco de Dados pode definir restries de integridade complexas, utilizando, por exemplo, o conceito de triggers Triggers so pores de cdigo ativadas aps certos eventos (insero, atualizao ou excluso de linhas da tabela)

Exemplo
Realizar a modelagem lgica relacional para a realidade descrita a seguir. Utilize o roteiro do Add-In Data Modeler do Rational Rose. Uma escola primria deseja informatizar a lista de alunos de suas turmas: 1. Existem diversas turmas, cada qual com um nmero nico, uma srie e opcionalmente uma sala. 2. Cada turma possuir um professor, que tem um nome e identificado por uma matrcula. 3. Cada turma tem diversos alunos, identificados por

Exerccio 1
Realizar a modelagem lgica relacional para a seguinte realidade: Um profissional altamente organizado deseja informatizar sua agenda de compromissos, para isso, identificou os seguintes requisitos: 1. Na sua agenda so registrados as pessoas com quem tem relaes (seus contatos). Cada contato possui um nome, um endereo formado por rua, nmero, complemento, cidade, estado e CEP, e diversos telefones, cada qual com DDD, nmero e uma descrio de tipo (celular, residencial, comercial, contato, etc.). 2. Cada compromisso pode envolver um ou mais contatos, tendo uma descrio e sendo realizado determinado dia e hora.

Exerccio 2
Realizar a modelagem lgica relacional para a seguinte realidade: A CBDA precisa manter um cadastro de todos os campeonatos de natao realizados. Para isto, utiliza atualmente uma ficha em papel para cada campeonato. Nesta ficha consta o ano em que o campeonato ser realizado, um nmero seqencial do campeonato neste ano, uma data de incio, uma data de trmino e o local em que ser realizado.

Exerccio 2
A CBDA tambm mantm um cadastro de todas as pessoas inscritas na Confederao, cada qual com um nmero nico de matrcula, sejam elas treinadores, sejam nadadores.
Para os nadadores mantida a data de inscrio, o nome, o e-mail, diversos telefones, diversos endereos, cada qual com a indicao da rua, nmero e complemento, sua data de nascimento, o nmero de medalhas de ouro, prata e bronze que obteve, o nmero de campeonatos de que j participou e seu sexo. Para os treinadores mantida a data de inscrio, o nome, seu e-mail, diversos telefones, diversos endereos, cada qual com a indicao da rua, nmero e complemento, sua formao e o nmero de ttulos que obteve.

Exerccio 2
Todo o inscrito est associado a uma equipe, identificada por um cdigo e possuindo um nome, uma data de fundao, um nmero de ttulos e um nmero de campeonados disputados. Todas as provas possveis em um campeonato de natao sero previamente cadastradas (por exemplo: 200m nado de peito masculino).
Para isto, necessrio cadastrar os estilos (borboleta, costas, peito, livre, medley e revezamento), que recebero um cdigo nico e um nome. Cada prova de um estilo e possui uma distncia e o sexo dos nadadores, alm de um cdigo nico. Para cada prova so mantidos diversos recordes, identificados por um cdigo seqencial na prova e possuindo uma data, uma descrio e um tempo.

Exerccio 2
Cada campeonato inclui diversas das provas que so previamente cadastradas e, obviamente, a mesma prova pode ser disputada em diversos campeonatos. Cada nadador disputa diversas provas do campeonato e uma prova do campeonato, obviamente, pode reunir diversos nadadores.
Cada prova do campeonato disputada em uma determinada data, em uma bateria classificatria e uma final. Logo, cada nadador poder nadar duas vezes a mesma prova, uma para classificar-se (pela manh classificam-se os 8 primeiros para a final a tarde mas isto irrelevante em nosso contexto ) e outra valendo medalhas. Para cada uma das vezes em que nada uma prova do campeonato (classificatria e final), o nadador recebe um tempo e uma classificao.

Você também pode gostar