Estrutura do Banco de Dados Relacional

Autor

Douglas Braga

O modelo relacional representa os dados como uma coleção de relações — o termo formal para o que chamamos informalmente de tabela.

Relação, Tupla e Atributo

Uma relação é uma tabela composta por linhas e colunas. Cada linha é chamada de tupla e cada coluna é chamada de atributo.

  • Tupla: uma linha da tabela; representa um registro individual (por exemplo, os dados de um professor)
  • Atributo: uma coluna da tabela; representa uma propriedade das entidades armazenadas (por exemplo, nome ou ch_semanal)
  • Aridade (arity): o número de atributos de uma relação

A tabela professor da UnDF é um exemplo de relação:

id_prof nome id_escola ch_semanal salario
21200001 Eduarda Souza 21 20 3200
21400002 Felipe Araujo 21 40 6400
31200001 Gustavo Costa 31 20 3300
31400002 Helena Carvalho 31 40 6700
31200003 Igor Melo 31 20 3100
11400001 Bruno Teixeira 11 40 6500
11400002 Carla Pinto 11 40 6600

Aqui a relação professor tem aridade 5 (cinco atributos) e sete tuplas.

Domínio dos Atributos

Cada atributo tem um domínio — o conjunto de valores permitidos para aquele atributo.

O domínio de um atributo é o conjunto de todos os valores possíveis que esse atributo pode assumir. Exige-se que os valores de cada atributo sejam atômicos, ou seja, indivisíveis.

Exemplos de domínios nos dados da UnDF:

Atributo Domínio
id_prof números inteiros positivos
nome cadeias de texto
id_escola {11, 21, 31}
ch_semanal números inteiros positivos
salario números decimais positivos

A exigência de atomicidade significa que não é permitido armazenar valores compostos ou multivalorados diretamente em um atributo. Por exemplo, não se deve armazenar uma lista de disciplinas em um único campo — isso violaria o modelo relacional.

O Valor Nulo (null)

O valor especial null pertence a todo domínio e indica que o valor de um atributo é desconhecido ou não aplicável.

Por exemplo, se o salário de um professor ainda não foi definido, o atributo salario recebe null. Embora necessário na prática, o null causa complicações em muitas operações (comparações, agregações) e deve ser usado com critério.

Tuplas Não Ordenadas

Uma propriedade fundamental do modelo relacional é que a ordem das tuplas é irrelevante. Uma relação é formalmente um conjunto de tuplas, e conjuntos não têm ordem definida.

A tabela professor apresentada acima poderia igualmente ser exibida com as tuplas em qualquer outra ordem — por nome, por id_escola ou em qualquer sequência aleatória — sem que o conteúdo da relação fosse alterado. Duas apresentações que diferem apenas na ordem das linhas representam a mesma relação.

Da mesma forma, a ordem dos atributos (colunas) também não tem significado formal, embora por convenção sempre usemos uma ordem consistente.


Para Praticar

1. Atomicidade violada. Considere a seguinte proposta de tabela:

matricula nome disciplinas_cursadas
2023311001 Matheus Silva 3110201, 3110202

Por que esse design viola o modelo relacional? Como corrigi-lo?

O atributo disciplinas_cursadas armazena uma lista de valores — não é atômico. O modelo relacional exige atomicidade: cada célula deve conter um único valor indivisível. A solução correta é usar a tabela matricula_disciplina, onde cada par (aluno, disciplina) ocupa uma tupla separada.


2. Duas instâncias, mesma relação? As duas tabelas abaixo representam a mesma relação?

Tabela A:

id_prof nome id_escola
31200001 Gustavo Costa 31
11400001 Bruno Teixeira 11

Tabela B:

id_escola nome id_prof
11 Bruno Teixeira 11400001
31 Gustavo Costa 31200001

Sim. As duas tabelas representam a mesma relação. No modelo relacional, nem a ordem das tuplas nem a ordem dos atributos têm significado formal — uma relação é um conjunto de tuplas, e conjuntos não têm sequência.


3. Aridade do banco. Consulte o schema da UnDF e preencha:

Tabela Aridade Nº de tuplas na amostra
centro ? ?
professor ? ?
prereq ? ?
ministra ? ?
Tabela Aridade Nº de tuplas
centro 3 3
professor 5 7
prereq 2 16
ministra 7 36