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 20 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



  • Um domínio também pode ser útil para restringir os dados que devem ser gravados em um atributo/campo





  • 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 DATA_NASCIMENTO é superchave para o conjunto de entidades CLIENTE (?)
      • Já apenas 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ícios


  • 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


Exercicio I

  • Ligia

Arquivo:ChavePrimaria.pdf

Exercício II

  • Pablo


Correção


  • Esse sistema deverá possibilitar que sejam persistidos os alunos, professores, disciplinas e cursos
    • Muito bom, temos bases que permitem manter dados sobre todas as entidades propostas. As chaves criadas definem que existe um campo específico para referência de cada um.


  • Deverá prover a efetivação de matrículas dos alunos em um determinado curso
    • Matrícula é uma atividade obrigatória e comum para um sistema acadêmico. No ato de matricular, uma série de ações podem ser necessárias o que implica ser necessário criarmos ma ase específica para esta entidade. Avalie as seguintes situações:
      • Uma pessoa foi matriculada num curso e posteriormente se transferiu para outro
      • O aluno se matriculou em dois cursos
      • Gerar um relatório de alunos por bairro
      • Gerar um relatório de alunos por cidade
      • Gerar um relatório de alunos por estado
      • Gerar um relatório de alunos por rua
      • Identificar os alunos do CEP 38xxx


  • O enquadramento de professores em uma determinada disciplina
    • Embora não se tenha pré-definido é muito comum uma disciplina ser ministrada por mais de um professor.Avalie as seguintes situações:
      • Uma disciplina tem dois professores
      • Um professor ministra duas disciplinas
      • Relatório mostrando quais professores atuaram nas disciplinas em 2013


  • A composição desses cursos pelas disciplinas
    • Quais disciplinas fazer parte do Curso A
    • Em quais cursos é ministrada a Disciplina X


Exercício III


  • Premissas:
    • Um professor para uma disciplina



Exercício IV


  • Premissas:
    • Vários professores para uma disciplina
    • Várias disciplinas em vários anos