Banco de Dados Relacionais


Tabelas e Relações


  • Idealizado por Ted Codd, da IBM Research, atualmente, é o modelo de dados mais utilizado pela indústria
  • Baseado na teoria dos conjuntos utilizando conceitos de relações matemáticas
  • Definição mais formal do termo relação (C. J. Date):

"Dada uma coleção de n tipos ou domínios Ti (i= 1, 2, 3, ..., n), não necessariamente todos distintos, r será uma relação

sobre esses tipos, se existir em duas partes, um cabeçalho e um corpo, onde:

a. O cabeçalho é um conjunto de n atributos da forma AiTi: onde Ai (que devem ser todos distintos) são os nomes

dos atributos de r e Ti são os nomes de tipos correspondentes (i= 1, 2, 3,..., n)

b. O corpo é um conjunto de m tuplas t, onde t é por sua vez um conjunto de componentes da forma Ai:vi, no qual

vi é um valor do tipo Ti - o valor do atributo correspondente ao atributo Ai da tupla t(i = 1, 2, 3, ..., n)

Os valores de m e n são chamados respectivamente de cardinalidade e grau da relação r."

  • O BD Relacional é representado por coleções de relações, que no mundo real assumem a forma de tabelas de registros considerada a unidade básica
  • As tabelas são compostas por linhas que representam uma instância de uma entidade do mundo real
  • As colunas (atributos) de uma tabela representam campos e as linhas (tuplas) representam registros


  • A tabela pode ser considerada como uma relação e é então vista como um arquivo de dados onde os registros são gravados fisicamente no banco de dados seguindo uma certa ordem: de acordo com a entrada ou segundo uma chave primária


  • Uma tabela somente pode ser considerada uma relação quando as seguintes condições forem satisfeitas:
    • A interseção de uma linha com uma coluna deve necessariamente conter um valor atomico
    • Todos os valores de uma coluna devem ser do mesmo tipo de dado
    • Cada coluna deve ter um nome único
    • Não há duas ou mais linhas idênticas, ou seja, com os mesmos valores em suas colunas.


Exemplo


  • Exemplo: Membros de um clube de colecionadores de moedas
    • Tabela 1: membros
idmembro nome sobrenome profissao telefone email
1221 Sérgio Bernardes advogado 3212-3219 sbernardo@coin.com
9375 Nivaldo Duarte bancario 3243-8539 nivaldo.duarte@coin.com
9439 Andre Ferreira garcom 3232-4398 andref@coin.com
3420 Janete Lourenco advogado 3212-4397 janetelourenco@coin.com
6439 Margarete Pires comerciaria 3234-3482 mpires@coin.com


  • Nesta tabela, o primeiro campo de cada registro contém o mesmo tipo de dado: um código de identificação do membro chamado idmembro
  • O segundo campo de cada registro contém o nome do membro
  • O terceiro campo contém o sobrenome e assim por diante
  • Não há nada especial na ordem dos campos, pode-se reagrupar, adicionar ou remover campos sem afetar a funcionalidade da tabela


  • Porém, dentro da mesma tabela, não se pode fazer com que o campo idmembro seja o primeiro campo em um registro e o segundo campo em outro registro
  • Nem se pode fazer com que um registro contenha um campo a mais ou a menos que outro registro


  • Todo SGBD relacional precisa propiciar três funções para acessar os dados:
  1. Select: Apresenta uma tabela mostrando somente aqueles registros que tenham valores especificados em campos determinados. Ação: "Recupere todos os registros da tabela membros cuja profissão seja igual a advogado"
  2. Project: Apresenta uma tabela que não inclui todos os seus campos. Ação: "Obtenha somente os campos nome e sobrenome da tabela membros"
  3. Join: Apresenta uma combinação de duas tabelas como se elas fossem apenas uma. O resultado é uma tabela temporária que o SGBD monta combinando os valores dos registros de uma tabela com os valores dos registros de outra tabela e então combinando os campos dos dois registros juntos.


  • Para mostrar o exemplo de uma combinação destas, precisamos de uma segunda tabela.
  • Tabela 2: venda
pais moeda ano quantidade idmembro preco
Brasil 2o reis 1889 6 1221 32.00
EUA 20 gold 1890 2 9439 100.00
EUA Nickel 1899 100 9375 0.06
EUA Penny 1850 1 6439 1.05
EUA Penny 1850 4 1221 1.00
EUA Penny 1850 5 3420 0.95


  • A Tabela acima mantem as moedas a venda com seus preços e respectivos proprietários
  • Observa-se um campo comum às duas tabelas chamado idmembro


  • Dessa forma, podemos ordenar ao SGBD:
    • "Combine as tabelas com base em idmembro que mostre":
      • venda.pais
      • venda.moeda
      • venda.ano
      • venda.quantidade
      • venda.preco
      • membros.idmembro
      • membros.email
  • O resultado deve ser o seguinte:
  • Tabela 3:
pais moeda ano quantidade idmembro preco email
Brasil 20 reis 1889 6 1221 32.00 sbernardo@coin.com
EUA 20 gold 1890 2 9439 100.00 andref@coin.com
EUA Nickel 1899 100 9375 0.06 nivaldo.duarte@coin.com
EUA Penny 1850 1 6439 1.05 mpires@coin.com
EUA Penny 1850 4 1221 1.00 sbernardo@coin.com
EUA Penny 1850 5 3420 0.95 janetelourenco@coin.com


Domínios


  • Designa o tipo de dado que cada coluna de uma tupla pode conter
  • Normalmente dá-se o nome aos domínios como forma de identificá-los e também auxiliar na interpretação do valores que eles representam
  • Também devem ser declarados num domínio, o tipo de dado que deve ser aceito e o tamanho da informação


  • Exemplos:
    • CNPJ: 14 dígitos divididos em três blocos:
      • 1o. o número da inscrição propriamente dito
      • 2o. localizado após a barra, representa um código único para a matriz ou filial
      • 3o. representados pelos dois últimos valores chamados de dígitos verificadores (DV)
      • Os dígitos verificadores (DV) são criados a partir dos doze primeiros. O cálculo é feito em duas etapas utilizando o módulo de divisão 11.
      • Processo: Calcular os dígitos verificadores de um CNPJ hipotético, por exemplo, 11.444.777/0001-XX.
    • CPF: 11 dígitos: 9 + 2
    • Titulo de Eleitor: 8 + 2
    • http://ghiorzi.org/cgcancpf.htm


  • Um domínio também pode ser útil para restringir os dados que devem ser gravados em um atributo/campo
  • Exemplos:
    • Data Nascimento: A partir de 01/01/1900
    • Estado Civil: Casado, Solteiro, Viúvo, Separado, Divorciado, ...
    • Situação Aluno: Regular, Trancado, Jubilado, Abandono, ...


  • Assim como na Matemática, todos os elementos pertencentes a um conjunto devem ser distintos, uma tabela de bancos de dados deve conter registros, que também são únicos, ou seja, os valores de todos os seus campos não podem se repetir.
  • Da mesma forma, não se pode ter registros cujo campo que seja chave primária esteja sem valor, normalmente definido como nulo ou branco. Em SQL, isso pode ser resolvido, acrescentando a cláusula NOT NULL à linha que o atributo é definido (Restrição de Integridade da Entidade)
  • Outro tipo de restrição muito importante é a Restrição de Integridade Referencial que existe entre duas tabelas e cuja função é prevenir a inconsistência de dados.


  • Exemplo: Controle de Estoque
  • Descreva um conjunto de tabelas que controlem dados de produtos com suas categorias
    • Tabela Categorias possua um relacionamento com a tabela Produtos
    • Cada produto se enquadra em uma categoria
    • Suponha que um registro de Categoria seja excluido da tabela Categorias
    • A tabela Produtos contém registros que fazem referência à categoria excluída
    • Teríamos então os registros órfãos
  • Solução: Chave Estrangeira


Chaves


  • Chave é um componente de uma relação que pode ser formada por um ou mais atributos, cuja função é permitir identificar uma linha na relação, ou registro numa tabela


  • Superchave:
    • Representa uma restrição capaz de prevenir a existência dos mesmos valores em atributos de duas ou mais entidades diferentes, o que em síntese torna possível identificar uma entidade unicamente
    • É um conjunto de um ou mais atributos que, tomados coletivamente, nos permitem identificar de maneira unívoca uma entidade em um conjunto de entidades. Em outras palavras, não podem existir duas ou mais linhas da tabela com o(s) mesmo(s) valores de uma Super-Chave
    • Exemplo:
      • O atributo CPF do conjunto de entidades CLIENTE é suficiente para distinguir uma entidade CLIENTE de outra. Assim, o CPF é uma superchave
      • Do mesmo modo, a combinação de NOME_CLIENTE e CPF é superchave para o conjunto de entidades CLIENTE
      • Já o NOME_CLIENTE não é superchave de CLIENTE.


  • Chave Candidata:
    • Representa um conjunto mínimo de atributos que podem identificar uma tupla dentro de uma relação, da mesma forma que faria uma chave primária
    • São chamadas de candidatas porque podem perfeitamente ser chaves primárias da relação
    • Exemplo: Veículo com os atributos chapa, chassis e renavam
    • Suponha uma combinação de nome_cliente e rua_cliente seja suficiente para distinguir todos os membros do conjunto de entidades cliente, assim como o atributo cpf, sozinho. Então (cpf) e (nome_cliente, rua_cliente) são chaves candidatas. Embora os atributos (cpf, nome_cliente), juntos, possam, distinguir as entidades cliente, sua combinação não forma uma chave candidata, uma vez que cpf, sozinho, é uma chave candidata.


  • Chave Primária:
    • Chave candidata escolhida para identificar unicamente uma tupla e definir uma ordem física das tuplas dentro de uma relação
    • Chaves cujos atributos são usados para identificar as tuplas em uma relação. Geralmente, é escolhida a chave candidata de menor tamanho.


  • Chave Estrangeira:
    • Atributos de uma relação que fazem referência à chave primária de outra relação, ou até mesmo à própria


  • Exercício:
    • Identifique as chaves primárias:
      • Uma escola necessita de um sistema de controle acadêmico
      • Esse sistema deverá possibilitar que sejam persistidos os alunos, professores, disciplinas e cursos
      • Deverá prover a efetivação de matrículas dos alunos em um determinado curso
      • O enquadramento de professores em uma determinada disciplina
      • A composição desses cursos pelas disciplinas


Modelo Entidade-Relacionamento

  • Uma base de dados é modelada como
    • conjunto de entidades
    • associações entre entidades


  • Entidade: um conceito com existência independente com objetos distintos de outros objetos
    • com existência física ou não
    • com um conjunto de atributos específicos
    • e um valor para cada um desses atributos
  • Exemplo: empregados


Exemplo

  • Entidades cliente e emprestimo
    • cada uma com seus atributos
    • ligadas pelo relacionamento beneficiario


Tipos de atributos


  • Atributo: propriedade da entidade
    • Exemplo: nome, endereco, sexo, datanascimento
  • Atributos podem ser
    • simples ou compostos
      • exemplo: nome, sexo, estadocivil, endereço
    • de valor único ou valor múltiplo
      • exemplo: telefone
    • derivados
      • exemplos:
        • Idade, se já existir a data de nascimento
        • Digito Verificador
        • Status


  • Atributos compostos, multi-valor e derivados
    • Associações também podem ter atributos


Cardinalidade de uma associação


  • Uma associação pode ser entendida como um relacionamento entre instâncias de Entidades devido a regras de negócio
  • Normalmente ocorre entre instâncias de duas ou mais Entidades, podendo ocorrer entre instâncias da mesma Entidade (auto-relacionamento).


  • Por que a associação é necessária?
    • Quando existem várias possibilidades de relacionamento entre o par das entidades e se deseja representar apenas um
    • Quando ocorrer mais de um relacionamento entre o par de entidades
    • Para evitar ambiguidade
    • Quando houver auto-relacionamento
  • Para definir o número de ocorrências de uma entidade usamos o conceito de Cardinalidade.


  • A Cardinalidade indica quantas ocorrências de uma Entidade participam no mínimo e no máximo do relacionamento.


id-cliente nro-conta data-acesso
c1 a1 20/09/2012
c2 a1 19/09/2012
c3 a2 01/06/2012



Papéis (roles)

  • Associações entre a mesma entidade
    • papéis ajudam a clarificar
    • Exemplo:
      • Professor ministra disciplina
      • Disciplina é ministrada pelo professor
      • Alunos pertence a turma
      • Turma contém alunos
      • Atendente aprova empréstimos
      • Aluno solicita empréstimos
      • Gerente autoriza empréstimo


Chaves de associações


  • A chave da associação depende da cardinalidade
    • se a associação for
      • muitos para muitos
      • um para muitos
      • muitos para um
      • um-para-um
  • Exemplo: Veículo (placa, chassis,motor)


  • Exercício:
    • Desenvolver a avaliação das chaves para a seguinte situação:
      • Nota fiscal e Itens da Nota Fiscal
      • Definir tabelas, associações e chaves


  • Avaliar o seguinte problema: Um sistema de lotação de pessoas onde ...
    • empregado pode fazer apenas uma tarefa em cada agência
    • empregados possuem diferentes tarefas em diferentes agências
      • Seta pode definir a cardinalidade


Chaves


  • A chave pode ser
    • super-chave
      • qualquer conjunto de atributos que identificam univocamente
    • chave candidata
      • conjunto mínimo de atributos
    • chave primária
      • a chave candidata escolhida
      • normalmente prefere-se um atributo separado por si só, mas há chaves compostas por vários atributos


Entidade fraca e Entidade forte


  • Pode haver algum tipo de entidade que não possui nenhum atributo-chave, o que significa que ficamos impossibilitados de distinguir uma entidade específica dentro de todo o conjunto, já que é possível haver entidades duplicadas
  • A esse tipo de entidade chamados Entidade Fraca
  • Por outro lado, entidades que possuem atributos-chave são denominadas de Entidades Fortes
  • As entidades fracas tem como característica o fato de serem identificadas por meio de sua associação com outra entidade específica, denominada de entidade identificadora


  • Exemplo 1: Entidades Fracas


  • Exerício: Empréstimos e Devoluções
    • empréstimo (aluno, livro, data, ...)
    • devolução (aluno, livro, data, ...)
    • número sequencial para cada empréstimo?
    • Este número fica sendo a chave da devolução?


Especialização / Generalização

  • Especialização
    • vista de cima para baixo (top-down)
    • a partir da super-classe encontram-se sub-classes


  • Generalização
    • vista de baixo para cima (bottom-up)
    • a partir das sub-classes identifica-se a super-classe


Condições de especialização

  • Disjunta
    • quando só pode pertencer a uma das sub-classes
      • Exemplo: Conta pode ser ou “conta à vista” ou “conta a prazo”


  • Sobreposta
    • Quando pode estar presente em várias sub-classes
      • Exemplo: Empregado que é também Cliente do banco


Agregação

Cardinalidade em associações


  • Exemplo anterior:
    • empregados com diferentes cargos em diferentes agências


Arquivo:BDA-Cardinalidade.pdf


  • E se houver um Gestor para cada tarefa desempenhada por um empregado numa agência?


  • Solução: agregação!
    • uma associação passa a ser uma entidade


Exemplo de Modelo E-A


Conversão de entidades


  • Entidade forte converte-se numa tabela
    • atributos simples mantêm-se
    • chave da tabela é a mesma da entidade
  • Emprestimo (nro-emprestimo, valor)


Conversão de associações


  • Associação “muitos-para-muitos” converte-se numa tabela com as chaves primárias das entidades
    • (professor, disciplina)


  • Associação “um-para-um”
    • É possível mas não obrigatório, criar tabela
      • Ex: Veículo - Motor
    • Qualquer um dos lados pode ter uma chave estrangeira
      • Se a participação for parcial, aparecem nulls


  • Atributos compostos
    • cliente (id-cliente, primeiro-nome, nome-do-meio, último-nome, ...)