Skip to content

Latest commit

 

History

History
125 lines (92 loc) · 7.99 KB

topico-08.md

File metadata and controls

125 lines (92 loc) · 7.99 KB

[Tópico T08] - Modelo Relacional (MR) - Restrições de Integridade

by Prof. Plinio Sa Leitao-Junior (INF/UFG)

Sejam as duas figuras abaixo, ambas se referem ao BD Empresa [1]:

Como o esquema conceitual (esq.) resultou no esquema lógico usado na ilustração do BD (dir.)?
- Há diretrizes para transição do esquema conceitual para o esquema lógico ?
+ Sim, é preciso estar atento ao significado de cada elemento no esquema conceitual ..
! Mas o mapemento entre esquema conceitual e esquema lógico será tratado em tópico futuro-próximo ..

Em um banco de dados relacional, usualmente há muitas relações (várias, ou até muitas, tabelas).
As tuplas presentes nas relações em geral estão relacionadas entre si de várias maneiras.
Comumente, há restrições para os valores presentes nas tuplas ..., conforme introduzido a seguir.

Restrição de domínio

Sejam:
R(A1 , A2, ..., An) , o esquema de relação R ;
r(R) , uma relação r segundo o esquema R ;
tj , uma tupla tal que tj ∊ r(R) ; e
tj[Ai] (ou tj.Ai) , o valor na tupla tj para atributo Ai de R .

Então:

  • ∀ tj ∊ r(R)∀ Ai de R :
    • t[Ai] ∊ dom(Ai).

Ou seja, a restrição de domínio determina que, em cada tupla, o valor do atributo Ai deve ser:
∎ um valor atômico; e
∎ um valor pertencente ao domínio de Ai (ou seja, dom(Ai)).

Domínios de atributos são implementados pelo uso de:
∎ tipos de dados (exemplos: números inteiros, números reais, data e hora, etc.), faixa de valores, lista de valores, valores enumerados, etc., além de valores impostos por outras restrições, tal como restrição de integridade referencial.

Restrição de chave

Por definição, uma relação é um conjunto de tuplas:

  • Formalmente, um conjunto não possui elementos repetidos:
    • cada tupla é um elemento da relação (conjunto de tuplas);
    • então, não há tuplas repetidas em uma relação.
  • Noutras palavras, duas ou mais tuplas, de qualquer relação r(R), não podem ter a mesma combinação de valores para todos os atributos de R:
    • ou seja, há a restrição de exclusividade para os valores das tuplas de qualquer relação.

Há subconjuntos de atributos de R - pelo menos um subconjunto - tal que duas ou mais tuplas, de qualquer relação r(R), não podem ter a mesma combinação de valores para os atributos de cada subconjunto:

  • Cada subconjunto SKi é uma superchave de R:
    • ou seja, há a restrição de exclusividade para os valores das superchaves de qualquer relação.

Contudo, superchaves podem ter atributos supérfluos com respeito à restrição de exclusividade.

Uma superchave SKi em R é uma chave em R se não tiver atributos supérfluos com respeito à restrição de exclusividade:

  • por exemplo, suponha que no esquema de MUNICIPIO há superchaves {Cidade, Estado, Área} e {Cidade, Estado}:
    • contudo, somente {Cidade, Estado} é uma chave em MUNICIPIO.

Não é raro que um esquema R tenha mais de uma chave em R:

  • Cada uma das chaves em R é usualmente chamada de chave candidata.
  • Dentre as chaves candidatas, uma delas é designada chave primária da relação:
    • do inglês, Primary Key (PK).
Conforme o modelo relacional, os seguintes aspectos estão ligados à restrição de chave:
Cada esquema de relação R possui uma chave candidada escolhida como chave primária.
A chave primária possui a restrição de exclusividade para as tuplas de qualquer r(R).

Restrição de integridade de entidade

A chave primária identifica as tuplas individuais de toda relação.
A restrição de integridade de entidade determina que qualquer atributo da chave primária não pode assumir valor nulo.

Restrição de integridade referencial

A restrição de integridade referencial ocorre entre duas tuplas, as quais pertencem a relações não necessariamente distintas.
Na prática, a restrição é aplicada quando um tupla faz referência a outra tupla.

A integridade referencial busca garantir que a referência entre tuplas é consistente.

A restrição de integridade referencial é implementada por meio do conceito de chave estrangeira:

  • Do inglês, Foreign Key (FK).
  • Por exemplo, sejam os esquemas PRODUTO(CodProduto, Descrição, Preço) e CATEGORIA(CodCateg, Nome), cujas chaves primárias são CodProduto e CodCateg, respectivamente:
    • para implementar a associação produto possui categoria, é incluída uma chave estrangeira em PRODUTO:
      • em PRODUTO(CodProduto, Descrição, Preço, Categ), foi inserido o atributo Categ;
      • o atributo Categ em PRODUTO é uma chave estrangeira, pois referencia o atributo CodCateg, que é a chave primária de CATEGORIA.
    • para ilustar, sejam as tuplas:
      • o produto <1234, "caneta", R$2,00, "Papel"> e a categoria <"Papel", "Papelaria e escritório">;
      • o valor da chave estrangeira em PRODUTO é "Papel" e o valor da chave primária em CATEGORIA é "Papel".

Os atributos da FK no esquema R é uma chave estrangeira que faz referência à relação S, se:

  1. Os atributos da FK (chave estrangeira) em R têm o mesmo domínio que os atributos da PK (chave primária) de S; e
  2. Qualquer valor de FK em uma tupla t1 da relação r(R):
    • é um valor de PK para alguma tupla t2 na relação s(S); ou
    • é NULL.

Em suma, a restrição de integridade referencial busca garantir que t1[FK] = t2[PK], para qualquer FK no esquema de banco de dados.

Atividade (data limite: 22/08/2021 23h59min59s)

Considere o banco de dados de um software de vendas online, com as seguintes definições em nível lógico:
∎ os esquemas PRODUTO(CodProduto, Descrição, Preço, Categ) e CATEGORIA(CodCateg, Nome);
∎ as chaves primárias CodProduto e CodCateg para PRODUTO e CATEGORIA, respectivamente;
∎ o atributo Categ em PRODUTO que referencia CATEGORIA.

Pergunta: Quais as chaves estrangeiras no esquema lógico do BD Vendas Online?
Resposta: PRODUTO(Categ) REFERENCIA CATEGORIA(CodCateg)
Obs.: observe a notação para responder a pergunta:
RELAÇÃO(FK) REFERENCIA RELAÇÃO(PK)

Criar uma issue no projeto https://github.com/plinioleitao/bd-2021-1-bia, com o título "Tópico 08", para responder:

  1. Sobre a figura (acima) referente à ilustração para o BD Empresa, para um esquema lógico segundo o Modelo Relacional (MR):
    Pergunta: Quais as chaves estrangeiras no esquema lógico do BD Empresa?
    Resposta: <responda segundo a notação RELAÇÃO(FK) REFERENCIA RELAÇÃO(PK), para cada chave estrangeira>

Artefatos

  1. Issue criada no projeto https://github.com/plinioleitao/bd-2021-1-bia, cujo título é "Tópico 08", para indicar suas reflexões iniciais sobre chave estrangeira.

Bibliografia

[1] ELMASRI, R.; NAVATHE, S. B. Sistemas de Banco de Dados. 6. ed. Pearson, 2011.