Escolar Documentos
Profissional Documentos
Cultura Documentos
Currculo do Professor
Eduardo Arruda
Formao Acadmica
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
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
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)
Nvel Define a estrutura do Conceitual banco de dados Nvel Estruturas de Interno Armazenamento
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
A necessidade de efetuar mapeamentos reduz a expressividade e clareza da modelagem Soluo: adotar um nico modelo em todas as etapas
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
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
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 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
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
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
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.