Banco de dados

Desenvolvimento de Aplicativos Web - COLTEC/MG

Banco de dados

João Eduardo Montandon

Desenvolvimento de Aplicativos Web - COLTEC/MG

Introdução

Imagine um sistema com três módulos principais: Produção, Vendas e Compras.

Qual o problema desse modelo??

Redundância

Os dados do produto estão replicados em vários lugares

Redundância

A redundância nem sempre é ruim!!

Redundância

A solução para evitar a redundância não controlada está em fazer o compartilhamento de dados. Desta forma, a informação é armazenada apenas uma vez, e acessada de vários sistemas.

Banco de Dados

Ao conjunto de arquivos integrados que atendem vários módulos dá-se o nome de Banco de Dados.

Banco de Dados: Conjunto de dados integrados que tem por objetivo atender a uma comunidade de usuários.

Banco de Dados

Para dar suporte ao compartilhamento de dados, os sistemas -- e consequentemente sua estrutura -- se tornaram mais complexos, pois passaram a oferecer suporte a mecanismos de multiacesso, concorrência, etc.

Para auxiliar na manipulação dos dados em uma aplicação multiusuário, utilizamos um sistema específico, denominado Sistema de Gerência de Banco de Dados (SGBD).

SGBDs

Sistemas Gerenciadores de Banco de Dados: software que incorpora funções de definição, recuperação e alteração de dados em um banco de dados.

Permite a clara separação de manipulação dos dados e processamento do programa.

Aumenta produtividade, escalabilidade, modularização, etc.

SGBDs

Existem vários tipos de SGBDs:

Modelos de Dados

Ao definir um banco de dados, precisamos descrever como os dados serão representados.

Geralmente os dados são descritos por meio de modelos, denominado modelo de dados.

Os modelos podem ser mais ou menos detalhistas, gráficos ou textuais, a depender do nível de abstração do modelo.

Modelos de Dados

Existem vários modelos definidos na literatura. Dois modelos são mais utilizados:

  1. Modelo conceitual
  2. Modelo lógico
  3. Modelo Físico

Modelo Conceitual

Modelo que descreve a estrutura de dados de forma independente do SGBD.

Registra os dados que serão armazenados e a relação entre si.

Técnica mais utilizada: Diagramas Entidade-Relacionamento (DER)

Modelo Conceitual: Diagramas ER

Modelo Lógico

Modelo de dados visualizado pelo usuário do SGBD.

Os dados são organizados de acordo com o SGBD que está sendo utilizado. Logo a modelagem e dependente do SGBD.

Modelo Lógico

Em nosso caso, iremos trabalhar com SGBDs relacionais. Em um SGBD relacional, os dados são visualizado na forma de registros/tabelas.

Logo, os dados serão modelados em um formato de tabela.

Modelo Lógico: Exemplo

          TipoDeProduto(CodTipoProd,DescrTipoProd)
          
        
CodTipoProdDescrTipoProd
1Computador
2Impressora

Modelo Lógico: Exemplo

          Produto(CodProd,DescrProd,PrecoProd,CodTipoProd)
  CodTipoProd referencia TipoDeProduto
          
        
CodProdDescrProdPrecoProdCodTipoProd
1PC notebook Dell2.5001
2Macbook 20101.8001
3Impressora HP6502

Modelo Físico

Contém detalhes de armazenamento interno de informações, relacionados principalmente ao desempenho de aplicações de banco de dados.

Modelo utilizados por profissionais que fazem tuning de banco de dados.

Projeto de Banco de Dados

Como obter as informações necessárias para modelar o banco de dados da aplicação?

Projeto de Banco de Dados

Em outras palavras...

Através da identificação das entidades, é possível representar os dados que irão compor o Banco de Dados.

Projeto de Banco de Dados

Um projeto de banco de dados geralmente ocorre em duas fases:

  1. Modelagem conceitual: Elaboração de um modelo conceitual das entidades necessárias a organização do sistema.
  2. Projeto lógico: Transformar o modelo conceitual obtido anteriormente em um modelo lógico para o banco de dados que irá gerenciar a aplicação.

Projeto de Banco de Dados

Caso deseja migrar um banco de dados antigo, devemos aplicar engenharia reversa de forma a obter o modelo conceitual da estrutura antiga, e então gerar o novo modelo lógico com base nessa estrutura.

Modelos Entidade-Relacionamento

Desenvolvimento de Aplicativos Web - COLTEC/MG

Modelos Entidade-Relacionamento

João Eduardo Montandon

Desenvolvimento de Aplicativos Web - COLTEC/MG

Introdução

A primeira etapa em um projeto de BD é a construção do modelo conceitual.

Objetivo: Obter uma descrição independente de plataforma dos dados que serão armazenados.

Introdução

Técnica mais utilizada: Abordagem Entidade-Relacionamento.

Composta por um modelo de dados, denominado modelo entidade-relacionamento (MER). Todo MER pode ser representado graficamente e textualmente.

Um MER é representado graficamente por meio de um diagrama entidade-relacionamento (DER).

Abordagem ER

Conceitos centrais do modelo ER:

Entidade

Conjunto de objetos sobre os quais deseja-se manter informações no banco de dados.

Entidade

Podem representar objetos abstratos ou reais.

Uma entidade representa a especificação de um objeto

Um objeto específico da entidade pode ser referido como instância ou ocorrência.

Entidade - Exemplo

São representadas por meio de um retângulo.

Entidade - Propriedades

Entidades por si só representam pouco para o sistema

É necessário atribuir algumas propriedades às entidades:

Relacionamento

Conjunto de relações entre as entidades

Relacionamento

Representado por meio de um losango

Relacionamento

Assim como acontece com as entidades, os relacionamentos também podem ter ocorrências.

Neste caso, cada ocorrência mostra uma relação entre as entidades da relação.

Auto-relacionamento

Nem sempre um relacionamento se refere a entidades diferentes. Quando um relacionamento se refere a mesma entidade, o denominamos como auto-relacionamento

Quando houver um auto-relacionamento entre as entidades, devemos declarar o papel que a entidade exerce sobre o relacionamento.

Relacionamento - Cardinalidade

Saber da grandeza de relação entre as entidades é extremamente importante. O MER permite definir o número de ocorrências associadas ao relacionamento.

Essa propriedade é denominada cardinalidade.

Há dois tipos de cardinalidades: Máxima e mínima.

Relacionamento - Card. Máxima

Define o número máximo de ocorrências associadas entre si por meio de um relacionamento.

Há dois valores para cardinalidade máxima:

Relacionamento - Card. Máxima

Relacionamento - Card. Máxima

A cardinalidade máxima pode ser usada para classificar relacionamentos binários.

Relacionamentos clássicos:

Relacionamentos 1:1

Relacionamentos 1:N


Relacionamentos N:N


Relacionamento - Card. Mínima

Define o número mínimo de ocorrências associadas entre si por meio de um relacionamento.

Consideradas duas cardinalidades:

Relacionamento - Card. Mínima

Atributo

Dado ou informação que é associado a cada ocorrência de uma entidade ou relacionamento.

Atributo: Cardinalidade

Atributos também possuem cardinalidade. Por padrão os atributos possuem cardinalidade (1,1).

  • Mínima:
    • 1 Obrigatório
    • 0 Opcional
  • Máxima:
    • 1 mono-valorado
    • N multi-valorado

Atributo em relacionamentos

Relacionamentos também podem possuir atributos próprios.

Atributos: Identificador

Cada entidade deve possuir um código que identifique unicamente suas ocorrências.

Identificador: Conjunto de propridades de uma entidade cujo valores tornam única suas ocorrências.

Atributos: Identificador



Identificador em Relacionamento

Há casos onde o identificador de uma entidade é composto também por relacionamentos dos quais a entidade participa. Neste caso, denominamos como relacionamento identificador.

Neste caso, nos referimos a entidade dependente como entidade fraca.

Generalização/Especialização

Conceito que permite atribuir propriedades particulares a um subconjunto de ocorrências especializadas de uma entidade genérica.

Representada no diagrama por um triângulo isóceles.

Generalização/Especialização

Generalização/Especialização

A entidade especializada herda todos os atributos da entidade genérica, inclusive o identificador.

Permite herança múltipla, porém desde que os pais da entidade pertençam a mesma entidade genérica.

Generalização/Especialização

As generações/especializações podem ser classificadas em dois tipos: total parcial

Entidade Associativa

Existem situações onde é necessário criar uma relação entre entidade e seu relacionamento.

Suponha que desejamos modificar o diagrama abaixo para adicionar informação de quais medicamentos foram prescritos em cada consulta.

Entidade Associativa

"Com qual entidade a entidade MEDICAMENTO deve se relacionar?"

Se MEDICAMENTO se relacionar a MEDICO, perdemos a informação do paciente.

Se MEDICAMENTO se relacionar a PACIENTE, perde-se a informação do médico.

Resumão

Abordagem Relacional

Desenvolvimento de Aplicativos Web - COLTEC/MG

Abordagem Relacional

João Eduardo Montandon

Desenvolvimento de Aplicativos Web - COLTEC/MG

Introdução

Abordagem relacional: Modelagem de dados utilizada nos SGBDs do tipo relacional.

Modelagem em nível lógico (específica por SGBD).

Proposta em 1970. Desde então, padrão de modelagem de dados da indústria de TI.

Introdução

A abordagem relacional gira em torno de quatro conceitos fundamentais:

Introdução

Um banco de dados relacional é composto por uma coleção de entidades, representadas por tabelas.

Cada tabela possui uma ou mais tuplas (linhas), que representam "instâncias" daquela tabela.

Uma tabela é formada por um conjunto de colunas denominadas atributos.

Cada coluna possui um tipo associado, denominado domínio.

Abordagem Relacional: Exemplo

Tabela

Representa as entidades do seu sistema. Possui papel central na modelagem relacional.

Composta por um conjunto não ordenado de linhas, que por sua vez é composta por vários campos.

Cada campo pertence necessáriamente a uma coluna, que define as propriedades daquele campo.

Tabela

Tabelas: Propriedades

De acordo com o modelo relacional, as tabelas possuem as seguintes propriedades:

Chaves

Conceito usado para especificar restrições de integridade básicas de um SGBD relacional.

Possui três tipos:

Chave Primária

Chave Primária: Coluna ou uma combinação de colunas cujos valores distinguem uma linha das demais dentro de uma tabela.

Pode ser simples ou composta (uma ou mais colunas).

Deve ser mínima.

Chave Primária: Exemplo

Chave Estrangeira

Chave Estrangeira: Coluna ou uma combinação de colunas, cujos valores aparecem necessariamente na chave primária de uma tabela

Permite a relação entre tabelas em um banco de dados relacional.

Chave Estrangeira: Exemplo

Chave Estrangeira: Restrições

A utilização de chaves estrangeiras impõe diversas restrições que são verificadas automaticamente pelo banco de dados quando seus dados sofrem alterações.

Tais restrições ajudam a manter a integridade dos dados armazenados pelo banco de dados.

Chave Estrangeira: Restrições

Chave Estrangeira: Auto-referenciamento

Apesar do termo "estrangeiro", uma chave estrangeira pode referenciar a chave primária da própria tabela.

Chave Alternativa

Mais de uma coluna ou combinações de colunas podem servir para distinguir uma linha das demais.

Uma das colunas (ou combinação de colunas) é escolhida como chave primária.

As demais colunas ou combinações são denominada chaves alternativas.

Chave Alternativa: Exemplo

Domínio da Coluna

Conjunto de valores que podem aparecer em uma coluna. Em outras palavras, define o tipo de dados das colunas.

O próprio banco de dados possui uma série de tipos que são utilizados para definir o domínio da coluna, tais como inteiros, strings, reais, binários, booleanos, etc.

Domínio da Coluna: NULL

Um valor de campo pode admitir um valor vazio. Nesse caso ele é representado por NULL.

Quais colunas de uma tabela devem ser obrigatórias??

Restrições de Integridade

O objetivo primordial de um SGBD é garantir a integridade de seus dados.

Para isso, os SGBDs oferecem uma série de mecanismos que preveêm a especificação de restrições de integridade de dados.

Restrição de integridade: Regra de consistência de dados que é garantidade pelo próprio SGBD.

Restrições Básicas

São garantidas pelo próprio SGBD por padrão, através de uma especificação declarativa.

O desenvolvedor não precisa implementar procedimentos para garantir tais restrições

Restrições Básicas

  1. Integridade de Domínio: O valor de um campo deve obedecer ao seu tipo
  2. Integridade de Vazio: Especifica se os campos podem ou não ter valores vazios
  3. Integridade de Chave: Verifica a unicidade dos valores das chaves primárias
  4. Integridade Referencial: Verifica os valores das chaves estrangeiras

Restrições Semânticas

Restrições que são específicas do sistema que está sendo implementado.

Exemplo: Um empregado não pode ter um salário maior que seu superior imediato.

Essas regras podem ser implementadas a nível do banco de dados, porém NÃO são recomendadas.

Especificando um Banco de Dados relacional

Um esquema de banco de dados relacional deve conter no mínimo:

Esquema Relacional: Exemplo

Esquema Relacional: Exemplo

          
jogador (jog_cod, jog_nome, jog_data_nascimento, jog_salario)
tecnico (tec_cod, tec_nome, jog_cod)
   jog_cod referencia jogador
escalacao (esc_cod, jog_cod, esc_data)
   jog_cod referencia jogador
clube (clud_cod, clu_nome, tec_cod)
   tec_cod referencia tecnico
          
        

Esquema Relacional: Exemplo

          
contrato (jog_cod, clu_cod)
   jog_cod referencia jogador
   clube_cod referencia clube
partida (par_cod, clu_cod_casa, clu_cod_visitante, est_cod, par_data)
   clu_cod_casa referencia clube
   clu_cod_visitante referencia clube
   est_cod referencia estadio
estadio (est_cod, est_nome, est_capacidade)
          
        

Referências

HEUSER, Carlos A.; Projeto de Banco de Dados; 6a Edição; Porto Alegre, 2008.

w3schools: SQL.

Fork me on Github