Modelo de Dados Disciplina de Sistemas de Banco de Dados Prof. Marcos Antonio Schreiner 30/09/2015 Motivação • Por que utilizar Banco de Dados: – Abstração dos dados; – Separar aplicações dos detalhes do arquivo; – Separar a aplicação dos detalhes de persistência dos dados. • Logo é preciso utilizar os modelo de dados – Ferramentas conceituais para a descrição dos dados – dos relacionamentos existentes entre os dados e – da semântica e das restrições que atuam sobre estes. Modelo de Dados • Modelo para organização dos dados de um BD – São conceitos para a representação de dados • exemplos: entidade, tabela, atributo, … – Há diferentes níveis de abstração de dados • modelos conceituais • modelos lógicos • modelos físicos Projeto de Banco de Dados Minimundo Independe do SGBD Conjunto de necessidades Análise de requisitos Esquema conceitual Modelo conceitual Depende do SGBD Esquema em linguagem de implementação Modelo Lógico Modelo físico Projeto de Banco de Dados • Análise de requisitos – entrevistas a usuários de BD – documentação do sistema • Modelo conceitual – descreve conceitos sobre as necessidades dos usuários Modelo Conceitual ● Representação com alto nível de abstração – Representação mais natural dos fatos do mundo real: • Propriedades • Relacionamentos ● ● Representação independente de BD. Preocupação com a semântica da aplicação. Por exemplo alunos de muitos cursos de uma universidade. Matrícula (1,N) Alunos Nome (N,1) Lotação Ano Ingresso Cursos Código Nome Modelo Entidade-Relacionamento • Um dos modelos conceituais mais utilizados. • Características: – Desenvolvido para facilitar o projeto lógico do BD; – Representa estruturas lógicas globais do BD; – Modelos de dados com considerável capacidade semântica; – Representa problemas por meio de entidades e relacionamentos entre estas entidades. Entidade • Qualquer objeto distinguível que deva ser representado no banco de dados (Date, 2003). • Algo do mundo real com uma existência independente (Elmasri e Navathe, 2012). • Pode ser: – existência física: uma pessoa, um carro. – existência conceitual: uma companhia, um emprego, um curso. • Composta por propriedades particulares: Atributos Atributo • Propriedades Específicas que descrevem a Entidade (Elmasri e Navathe, 2012) ou um relacionamento. • Por exemplo: – Pessoa (nome, data_nasc, cpf) • Domínio de um atributo – conjunto de valores possíveis para o atributo – pode assumir valor nulo (NULL) – exemplos: – nome: varchar(50) – data_nasc: date Atributo - Classificação • Os atributos podem ser: – Simples ou atômico ● Não pode ser decomposto em atributos. ● Exemplo: idade – Composto ● Pode ser decomposto em outros atributos. ● Possui elemento de concatenação dos atributos que o compõe ● Exemplo: endereço é composto de nome_rua, nro_casa, complemento, nome_bairro, ... Atributo - Classificação • Os atributos podem ser: – – Monovalorado ● possui um único valor para cada entidade ● exemplo: idade Multivalorado: ● Possui múltiplos valores para cada entidade ● Exemplo: atributo telefone valores: 222-0000, 222-0001, ... ● ● pode possuir limites inferior/superior com relação à multiplicidade dos valores assumidos exemplo: nro_min = 0, nro_max = 3 Atributo - Classificação • Os atributos podem ser: – Armazenado ● – Está realmente armazenado no BD Derivado ● Pode ser determinado através de outros atributos ● Exemplos: – idade = data_atual – data_nascimento – nro_empregados = soma de todos os empregados Atributo Chave • Chave primária – conjunto mínimo de atributos que identificam de maneira única uma entidade. – escolhida pelo projetista do Banco de Dados como meio de identificação de uma entidade. • Exemplo: COD_empregado EMPREGADO nome_empregado endereço_empregado Atributo Chave Primária • A chave primária pode ser: – Simples: Formada por apenas um atributo; – Composta: Formada por dois ou mais atributos. • Exemplo: Matrícula Matrícula Código_curso (1,N) Alunos (N,1) Lotação Cursos Código Nome Ano Ingresso Nome Atributo Chave Candidata • São atributos candidatos a chave primária, mas que podem não ser chave primária. • Exemplo: • CPF; • RG; • CODIGO DE BARRAS. Como escolher a chave primária? Escolha da Chave Primária • A chave primária deve atender as seguintes restrições: – Identificar somente uma entidade; – Não pode ter valores nulos; OBS1: É adequado escolher chaves naturais ao invés de criar chaves artificiais. OBS2: Devido a integridade dos dados é ideal que a chave primária seja um atributo que não será alterado. Entretanto existem operações do SGBD que garantem a integridade caso a chave primária seja alterada ou removida. O que fazer? Por enquanto cada um faça sua escolha. Vamos aprender com os nosso próprios erros. Tipo de Entidade • É uma coleção de entidades que têm os mesmos atributos (Elmasri e Navathe, 2011). • Ou seja, entidades de um tipo de entidade – compartilham os mesmos atributos – possuem seus próprios valores para cada atributo • Por exemplo: – Todos os funcionários de um departamento são do tipo de entidade FUNCIONARIO. Exemplo e Representação COD_empregado EMPREGADO nome_empregado endereço_empregado Tipo entidade: EMPREGADO Entidades COD_empregado: 01199945652 COD_empregado: 1401601900 nome_empregado: Roberta nome_empregado: João endereço_empregado: Rua XV endereço_empregado: Rua Dallas Relacionamento • Relacionamento – Interligam as Entidades (Date, 2003). – Atributo do tipo Entidade em outra Entidade (Elmasri e Navathe, 2012). • Tipo relacionamento – conjunto de relacionamentos do mesmo tipo • Exemplo: pessoa trabalha para empresa pessoa trabalha empresa Relacionamento • Derivadas do minimundo sendo analisado • Restrições estruturais: – Cardinalidade: Determina número de entidades em um relacionamento. – Participação: Determina se a entidade existe por causa do relacionamento. Restrição de cardinalidade • “Especifica o número MÁXIMO de instâncias de relacionamento em que uma entidade pode participar”(Elmasri e Navathe, 2011). • Cardinalidades: – – – – ● um-para-um ( 1 : 1 ) um-para-muitos ( 1 : n ) muitos-para-um ( n : 1) muitos-para-muitos ( m : n ) OBS: ( m:n ) gera dois relacionamentos: ( 1:n ) e ( n:1 ) Exemplo - Cardinalidade Restrição de Participação • “Especifica se a exitência de uma entidade depende dela estar relacionada a outra entidade por meio do relacionamento”(Elmasri e Navathe, 2011). • Tipos de participação: • Total • Parcial Restrição de Participação • Participação Total EMPREGADO n 1 DEPARTAMENTO trabalha • Participação Parcial EMPREGADO m desenvolve n PROJETO Resumo de Notações tipo entidade ... atributo composto tipo relacionamento E1 E2 R Participação Total de E2 em R atributo E1 atributo derivado 1 R n E2 cardinalidade 1:n Exercícios 1) O que é um Modelo Conceitual de Dados? 2) Descreva o Modelo Entidade-Relacionamento e cada um de seus elementos. 3) Elabore graficamente o Projeto Conceitual do problema do exercício 6 do conteúdo anterior (Projeto de Banco de Dados de uma Livraria). 4) Refaça o exercício 3 utilizando o DBDesigner. Modelo Lógico • Representam os dados em alguma estrutura lógica de armazenamento. – Também denominado modelos de BD. – Dependente de BD. Por exemplo: • • • • Modelo relacional (tabelas) Modelos hierárquico (árvore) Modelo orientado a objetos (classes e objetos) Modelo objeto-relacional Alunos COD COD NOME NOME Cursos COD COD ANO_ING ANO_ING CODIGO_ CODIGO_ RESSO CURSO RESSO CURSO CODIGO CODIGO NOME NOME Modelo Lógico • Suporte a métodos de acesso – Linguagem de Definição de Dados (DDL - Data Definition Language) • Especificação dos conceitos. • dados, domínios dos dados, relacionamentos e restrições. – Linguagem de manipulação de Dados (DML - Data Manipulation Language) • Manipulação dos conceitos. Modelo Lógico A história dos modelos de BD é dividida em 3 gerações: • 1a geração: Modelos pré-relacionais – modelos hierárquico e de rede • 2a geração: Modelo relacional • 3a geração: Modelos pós-relacionais – modelos orientado a objetos, objeto-relacional, etc. Modelo Hierárquico • Árvores; • Os nós das árvores uma ocorrência de registros, onde cada registro é uma coleção de campos (atributos). • Os registros no nó Pai precede os registros no nó filho; • As arestas da árvore são os relacionamentos. • O acesso aos dados ocorre da raiz para as folhas e da esquerda para a direita. Modelo Hierárquico - Exemplo Modelo em Rede • Eliminou a hierarquia; • Permitiu que o mesmo registro se relacione com mais registros (1:N). • Dados os relacionamentos 1:N entre os registros A e C e entre os registros D e C é possível construir um relacionamento M:N entre A e D. • O modelo em rede possibilita acesso a qualquer nó da rede sem passar pela raiz. Modelo em Rede - Exemplo Problemas - Rede e Hierárquico • Modelos com várias limitações – Representação de relacionamentos insuficiente; • Modelo Hierárquico (1-1 ou 1-N) – Problemas de performance • Varredura em estruturas em grafo ou árvore. • Cria código de manipulação de dados acoplado ao sistema. Qual o problema disso? – Falta de uma linguagem declarativa para consultas • linguagem declarativa X linguagem procedural? • consultas exigem programação pela aplicação • manipulam um registro por vez. – Baixa performance de acesso Modelo Relacional • Definido em 1970 (E. Codd – IBM). • Modelo com uma sólida base formal – Teoria dos conjuntos e álgebra relacional. • Modelo simples – Tabelas e relações entre tabelas. • Linguagens declarativas para manipulação de dados – Álgebra relacional (formais). – Linguagem de Consulta Estruturada (SQL Structured Query Language) (comercial). Modelo Relacional • Apresenta cinco conceitos: – Domínio – Atributo – Tupla – Relação – Chave Modelo Relacional - Domínio • Conjunto de valores permitidos para um dado. Por exemplo: – inteiro, string (domínios básicos) – data, hora (domínios compostos) – [0, 120], (‘M’, ‘F’) (domínios definidos) • Operações válidas para os domínios – inteiro (somar, dividir, i1 maior que i2, ...) – data (extrair dia, extrair mês, d1 anterior a d2, ...) • Definição de domínios é por meio da DDL. Modelo Relacional - Atributos • Um item de dado do BD • Possui um nome e um domínio • Exemplos: – nome: string – idade: [0,120] Modelo Relacional - Tupla • Um conjunto de pares (atributo, valor) – É a ocorrência de um fato do mundo real. • Valor – definido no momento da criação de uma tupla – deve ser: • compatível com o domínio OU NULL (valor inexistente). • atômico (indivisível,não-estruturado e monovalorado). • Exemplo: – tupla de aluno: {(nome, ‘João’), (idade, 34), (matrícula, 03167034), ...} Modelo Relacional - Relação • Uma relação é uma tabela composta por uma coleção de Tuplas. • Uma relação é composta por um cabeçalho e um corpo. • Cabeçalho – Número fixo de atributos (grau da relação). – Atributos não-ambíguos. • Corpo – Conjunto de tuplas (cardinalidade da relação) Relação – Definição Formal • Um esquema relacional R, indicado por R(A1, A2, …, An) é composto por um nome de R e uma lista de atributos A1, A2, …, An. Cada atributo Ai é o nome de um papel desempenhado por algum domínio D em R e descrito por dom(Ai). (Elmasri e Navathe, 2011) Relação – Definição Formal • Uma relação r(R), de um esquema relacional R(A1, A2, …, An) é um conjunto de n tuplas r = {t1, t2, …, tn}. Cada tupla ti é uma lista ordenada de n valores t = <v1, v2, …, vn>, em que cada valor ti, é um elemento de dom(Ai). (Elmasri e Navathe, 2011) Modelo Relacional - Chave • Conjunto de um ou mais atributos de uma relação que identifica uma única tupla. • Tipos de chaves: – chave primária: • atributo(s) cujo (conjunto de) valor(es) identifica(m) unicamente uma tupla em uma relação. • Exemplos: – alunos: matrícula – cidades: nome, estado Modelo Relacional - Chave • Tipos de chaves: – chave estrangeira em um relação R1: • Identifica uma tupla em uma relação R2. • Uma chave estrangeira em uma tupla t1, tem um valor que ocorre como chave primária de alguma tupla em R2 ou tem o valor null. • Os atributos da chave estrangeira em R1 têm o mesmo domínio dos atributos da chave primária em R2. • Exemplos. – alunos: id_curso (referência a um curso) – curso: id_universidade (referência a uma universidade) Modelo Relacional - Integridade • Segundo Date (2003), “O problema de integridade é o problema de assegurar que os dados do banco de dados estão corretos”. • No modelo relacional as regras básicas são: • Garantir a identificação para os dados sem ambiguidade. • Regra de Integridade de Entidade (RIE). • Garantir apenas relacionamentos válidos. • Regra de Integridade Referencial (RIR) Modelo Relacional - RIE • Dada uma tupla tk de uma relação R – Chave primaria não nula: – Chave primaria identifica somente uma tupla: Modelo Relacional - RIE • Dadas duas relações R e R2, uma chave estrangeira cei (R1) --> cp(R2) e uma tupla tk Є R1, então: 1 – Chave estrangeira é NULL – Chave estrangeira é diferente de NULL Modelo Físico • Modelo de armazenamento dos dados: – formato de registros – localização – ordem dos registros e – caminho de acesso. • Caminho de Acesso: é uma estrutura de que facilita a busca de um registro. • Por exemplo? Modelo Físico - Característica • Independência física dos dados – Capacidade de alterar a representação interna dos dados sem alterar o esquema lógico. – Por exemplo: Reorganizar a estrutura de índices. Exercícios 4) Diferencia DDL de DML. 5) Descreva o Modelo Relacional e o diferencie do Modelo Hierárquico e em Rede. 6) Defina RIE e RIR. 7) Implemente o Projeto Conceitual do exercício 3, utilizando o banco de dados Mysql e sua interface phpmyadmin.