Curso Superior de Tecnologia em BD Modelagem de Dados Aula 01 Revisão Modelos de Dados Existem modelos para diferentes níveis de abstração de representação de dados – modelos conceituais – modelos lógicos – modelos físicos 2 Modelos de Dados Conceituais Representação com alto nível de abstração – modelam de forma mais natural os fatos do mundo real, suas propriedades e seus relacionamentos – são independentes de BD – preocupam-se apenas com a semântica da aplicação – exemplo: • modelo entidade-relacionamento 3 Modelos de Dados Lógicos Representa os dados em alguma estrutura (lógica) de armazenamento de dados – também chamados de modelos de BD – dependente de BD – exemplos • modelo relacional (tabelas) • modelos hierárquico 4 Modelos de BD (Lógicos) Apóiam: – na especificação dos dados do modelo (DDL) • dados, seus domínios e restrições – na especificação de como manipular os dados (DML) 5 Modelos de BD (Físico) Possuem foco na: – – – – – – Indexação e estrutura de arquivos Transações e controle de concorrência Otimização Recuperação em casos de falhas Mecanismos de proteção (segurança) Partição e agrupamento de dados 6 Síntese dos conceitos Banco de dados (BD): – conjunto de dados integrados que por objetivo atender a uma comunidade de usuários. Modelo de dados: – descrição formal das estruturas de dados para representação de um BD; com suas respectivas restrições e linguagem para criação e manipulação de dados. Sistema Gerenciador de banco de dados (SGBD): – software que incorpora as funções de definição, recuperação e alteração de dados em um BD. 7 Síntese dos conceitos Modelagem de dados: – é a ação de representar/abstrair dados do minimundo com o objetivo de criar projetos conceituais e lógicos de um BD. – alguns autores incluem os projetos físicos como parte da modelagem de dados, pelo fato de que as otimizações são oriundas de análises do comportamento dinâmico do BD. 8 Síntese dos conceitos Projeto conceitual BD: – ação que produz o esquema de dados abstratos que descreve a estrutura de um BD de forma independente de um SGBD (esquema conceitual). Projeto lógico BD: – ação que produz o esquema lógico de dados que representa a estrutura de dados de um BD em acordo com o modelo de dados subjacente a um SGBD. 9 Síntese dos conceitos Projeto físico BD: – ação que produz o esquema físico de dados a partir do esquema de lógico de dados com a adição das estratégias de otimização para manipulação das estruturas de dados. As estratégias de otimização são dependentes dos fabricantes dos SGBDs e de suas versões. 10 Modelo ER O Modelo Entidade-Relacionamento (MER): – é um modelo de dados de alto-nível criado com o objetivo de representar a semântica associada aos dados do minimundo. – utilizado na fase de projeto conceitual, onde o esquema conceitual do banco de dados da aplicação é concebido. – Seus conceitos são intuitivos, permitindo que projetistas de banco de dado capturem os conceitos associados aos dados da aplicação, sem a interferência da tecnologia específica de implementação do banco de dados. 11 Modelo ER O esquema conceitual criado usando-se o MER é chamado Diagrama Entidade-Relacionamento (DER). MER: Conjunto de conceitos e elementos de modelagem que o projetista de banco de dados precisa conhecer. DER: Resultado do processo de modelagem executado pelo projetista de dados que conhece o MER. 12 Notação do DER Tipo de Entidade Tipo de Entidade-Fraca Tipo de Relacionamento Tipo de Relacionamento de Identificação Atributo Atributo-Chave Atributo-Parcial Atributo Multivalorado .... Atributo Composto Atributo Derivado R E1 E1 1 R R N (min, max) E2 Participação Total de E2 em R E2 Razão de Cardinalidade 1:N para E1 R E2 E Restrição Estrutural (min, max) na participação de E em R 13 O DER do Sistema Companhia Pnome Mnome Snome Nome Endereço Número Sexo Nss 1 N TRABALHA-PARA Nome Localização Salário EMPREGADO DataInício NúmeroDeEmpregados DEPARTAMENTO DataNasc 1 1 1 GERENCIA supervisor supervisionado 1 SUPERVISIONA CONTROLA Horas N N M N 1 TRABALHA-EM DEPENDENTE-DE PROJETO Nome Número Localização N DEPENDENTE Nome Sexo DataNasc TipoRelação 14 Ferramentas disponíveis DBDesigner Ferramenta de modelagem de banco de dados. Multiplataforma. MySQL Workbench Ferramenta sucessora do DBDesigner. Somente para Windows, por enquanto. SQL Power Architect Ferramenta multi-plataforma, em Java. ERWin Data Modeler Ferramenta comercial de modelagem de dados. 15 Ferramentas disponíveis PowerDesigner Ferramenta comercial de modelagem de banco de dados. WinRDBI Ferramenta educacional para validação de consultas. 16 DBDesigner 17 DBDesigner É um software livre, licenciado sob a GPL; É multi-plataforma (sim, ele também roda no Windows); Além de ser imbatível no uso com o MySQL, também oferece suporte a outros bancos, como Oracle, MS SQL Server, SQLite, e outros que suportem acesso via ODBC; Permite engenharia reversa, gerando o modelo a partir das tabelas do BD; Faz a sincronia no BD das alterações realizadas no DER; 18 DBDesigner A interface com o usuário é muito bem elaborada, tornando o seu uso bastante simples; Salva os arquivos em XML; Importa modelos gerados no ERWin (XML); Gera relatórios em HTML; Pode ser expandido através do uso de plugins; É muito bem documentado; O suporte realizado através do fórum do site do DBDesigner é excelente. 19 DBDesigner Para saber mais sobre o DBDesigner visite http://www.fabforce.net/dbdesigner4/ 20 MySQL Workbench 21 SQL Power Architect 22 ERWin Data Modeler 23 Sybase PowerDesigner 24 Transformação entre modelos modelo ER (nível conceitual) Engenharia reversa de BD relacional Projeto lógico de BD relacional modelo relacional (nível lógico) 25 Modelo Conceitual vs. Lógico Modelo Conceitual: Relacionamento “um-para-um” Contexto: Um produto tem estoque. Produto 1:1 tem 1:1 Estoque 26 Modelo Conceitual vs. Lógico Modelo lógico: Relacionamento “um-para-um” Produto 1:1 tem PRODUTOS Nome da tabela codigo nome estoque Chave primária 1:1 Estoque Atributos Como não nos interessa manter dados do estoque senão sua quantidade, estoque não é uma entidade e por isso seus atributos (quantidade) são incorporadas pela entidade produto. 27 Modelo Conceitual vs. Lógico Modelo Conceitual: Relacionamento “um-paramuitos” Contexto: Um departamento tem nenhum ou vários funcionários, mas um funcionário pode pertencer a somente um departamento. Departamento 1:1 tem 0:N Funcionário 28 Modelo Conceitual vs. Lógico Modelo Lógico: Relacionamento “um-para-muitos” Departamento 1:1 DEPARTAMENTO codigo nome descrição tem 0:N Funcionário FUNCIONÁRIOS matrícula nome cod_departamento (FK) Quanto há um relacionamento "um-para-muitos", a entidade do lado "N" recebe como atributo a chave primária da entidade do lado "um". 29 Modelo Conceitual vs. Lógico Modelo Conceitual: Relacionamento “muitos-paramuitos” Contexto: Um aluno tem aulas de nenhuma ou várias disciplinas e uma disciplina é cursada por nenhum ou vários alunos. Aluno 0:N cursa 0:N Disciplina 30 Modelo Conceitual vs. Lógico Modelo Lógico: Relacionamento “muitos-paramuitos” Aluno ALUNO matr_aluno nome descrição 0:N cursa ALUNO DISCIPLINA matr_aluno (FK) cod_disc (FK) Descrição 0:N Disciplina DISCIPLINA cod_disc nome cod_ (FK) Num relacionamento "muitos-para-muitos", é preciso criar uma tabela intermediária que terá como chave primária composta as chaves primárias das outras duas tabelas. 31 Modelo Conceitual vs. Lógico Modelo Conceitual: Auto-relacionamento “um-paramuitos” Contexto: Um funcionário supervisiona nenhum ou vários funcionários e um funcionário tem somente um supervisor. 1:1 Funcionário supervisiona 0:N 32 Modelo Conceitual vs. Lógico Modelo Lógico: Auto-relacionamento “um-paramuitos” FUNCIONÁRIO 1:1 Funcionário 0:N supervisiona matr_func nome_func chefe_func (FK) Descrição A própria entidade recebe como atributo a sua própria chave primária. 33 Modelo Conceitual vs. Lógico Modelo Conceitual: Auto-relacionamento “muitospara-muitos” Contexto: Um aluno só poderá cursar a disciplina X se tiver sido aprovado nas disciplinas A e B. E só poderá cursar a disciplina Y se tiver sido aprovado na disciplina A. 0:N disciplina Pré-requisito 0:N 34 Modelo Conceitual vs. Lógico Modelo Lógico: Auto-relacionamento “muitos-paramuitos” DISCIPLINA cod_disc nome_disc 0:N disciplina Pré-requisito PRE-REQUISITO 0:N cod_disc_pre (FK) cod_disc_pos (FK) Descrição No contexto, podemos ver que a disciplina A é pré-requisito de X e Y. E a disciplina B é pré-requisito para X. Nesse caso, criamos uma tabela que armazenará os relacionamentos entre as disciplinas. E essa tabela terá como chave primária composta a chave primária da 35 outra tabela (duas vezes). Modelo Conceitual vs. Lógico Modelo Conceitual: Relacionamento “Generalização/Especialização” Contexto: Precisamos armazenar o código de identificação, cor e capacidade de passageiros dos veículos que possuímos.Para os veículos terrestres, é interessante armazenarmos a quantidade de rodas. Para os aquáticos, o tamanho em pés. Para os aéreos, a forma de propulsão (turbina, hélice, etc). veículo terrestre aquático aéreo 36 Modelo Conceitual vs. Lógico Modelo Lógico: Relacionamento “Generalização/Especialização” VEÍCULO codigo cor qtde_passageiros veículo terrestre aquático aéreo TERRESTRE codigo (FK) qtde_rodas AÉREO codigo (FK) tipo _turbina AQUÁTICO codigo (FK) tamanho Nesse caso, temos que os atributos código de identificação, cor e capacidade de passageiros é comum para todos os tipos de veículos, mas que temos diferenças significativas de um tipo para o outro. Se fizéssemos somente 3 tabelas (uma para cada tipo), teríamos que repetir os campos em comum. Em princípio, isso é errado! O correto é colocarmos os atributos comuns numa tabela abstrata e nas tabelas mais concretas somente os atributos inerentes a ela. Existem outros tipos de relacionamento, como agregação e ternário, mas não são muito comuns e por isso não tratarei. 37 Conclusão Modelagem de banco de dados não é uma ciência exata, assim como outros tipos de modelagem. Portanto, não há verdade absoluta. Essas regras podem mudar de caso para caso. Mas é preciso que tenhamos atenção para "quando" quebrar essas regras. Precisamos ser muito criteriosos e fazer testes. 38 Exercício De acordo com a aula de hoje, traduza o seguinte exercício: Relação de Funcionário: MATRÍCULA DO FUNCIONÁRIO NOME DO FUNCIONÁRIO DATA DO NASCIMENTO DEPENDENTE CÓDIGO DO DEPENDENTE NOME DO DEPENDENTE CURSO CÓDIGO DO CURSO NOME DO CURSO ANO DO CURSO Regras do negócio : Um funcionário pode ter mais de um dependente Um funcionário pode fazer mais de um curso 39 Exercício - Resposta 40 Curso Superior de Tecnologia em BD Obrigado! Prof. Gustavo Santade [email protected]