title |
---|
Modelo Relacional |
- Modelo Relacional
O modelo de dados Relacional se baseia no conceito de relação, originário dos conjuntos da matemática. Uma relação se assemelha a uma tabela de valores, tal que cada linha representa uma entidade do mundo real e as colunas são seus atributos. Por exemplo:
Aluno
Nome | CPF | Idade | Endereço |
---|---|---|---|
Maria | 123.345.678-92 | 23 | R. José de Franco, 12 |
José | 921.432.432-22 | 22 | R. Maria de Franco, 14 |
Mario | 131.432.987-44 | 14 | R. Maria de José, 91 |
Na tabela acima, Aluno é o nome da relação, as linhas representam cada aluno existente e as colunas representam os atributos desses alunos.
Um valor que identifica unicamente cada linha (entidade). Nota-se que na relação Aluno, uma possível chave é o CPF dos alunos, já que seu valor é sempre único.
Termo Formal | Termo Informal |
---|---|
Relação | Tabela |
Tupla | Linha |
Atributo | Cabeçalho da coluna |
Domínio | Todos os valores possiveis da coluna |
Esquema | Definição da tabela |
Estado da relação | Povoamento de uma tabela |
A seguir, estão algumas definições formais que podem diferir do contexto prático.
As relações são descritas através de esquemas. Em R(A1, A2, A3..., An)
, R é o nome da relação e An são os atributos dessa relação. Por exemplo, ALUNO(Nome, CPF, Idade, Endereço)
.
Também é possível definir um domínio para cada atributo, ou seja, o conjunto de valores permitidos para um dado. Como exemplo, tem-se dom(Nome) = varchar(25)
.
Na matemática, uma tupla é um conjunto ordenado de valores representado por <...>
. Formalmente, as linhas de uma relação são um conjunto de tuplas. Como exemplo, tem-se: <"Maria", "123.345.678-92", 23 , "R. José de Franco, 12">
.
É uma "fotografia" atual do banco de dados, ou seja, o conjunto de dados que se tem no instante atual. Inicialmente tem-se um estado vazio. Após popular o banco de dados, tem-se um outro estado. Consequentemente, a cada atualização há um novo estado da relação, que é representado como um conjunto de tuplas na forma r(R) ⊂ dom(A1) X dom(A2) X .... X dom(An)
.
r(R) = {t1, t2, ..., tn}
onde ti é uma n-tupla.
ti = <v1, v2, ..., vn>
onde cada vj ∈ dom(Aj).
As restrições (constraints) são utilizadas para determinar quais valores serão (ou não) permitidos no banco de dados. Entre os principais tipos de constraints estão:
- Restrições inerentes ou implícitas: Impostas pela própria natureza do modelo de dados. Por exemplo, tuplas iguais não são permitidas em um estado de uma relação.
- Restrições baseadas no esquema ou explícitas: Definidas no esquema. Por exemplo, a cardinalidade máxima de uma relação entre entidades, como "o aluno só pode ter um curso".
- Restrições baseadas na aplicação ou semânticas: Normalmente são especificadas no nível mais alto (na aplicação).
Existem quatro tipos principais de restrições baseadas no esquema e que devem ser verificadas em todos os estados válidos de uma relação.
Por definição, todas as tuplas (linhas) são distintas, ou seja, não podem existir tuplas na relação cujos os valores são todos iguais aos de outra tupla. Usualmente, existe um conjunto de valores com a propriedade de que não serão repetidos entre diferentes tuplas. Suponha que esses atributos sejam listados e que o conjunto resultante seja chamado de super-chave (superkey ou SK), tem-se então a propriedade t1[SK] != t2[SK]
para quaisquer tuplas t1
e t2
da relação.
Qualquer conjunto de atributos que seja capaz de identificar unicamente todas as tuplas da relação é chamado de super key. Toda relação tem pelo menos uma SK. Note que a SK pode incluir atributos redudantes ou inúteis para identificar unicamente cada tupla.
A key é a superkey mínima, ou seja, se removido qualquer um de seus atributos, perde-se a capacidade de identificar unicamente as tuplas.
Uma key é uma superkey, mas não necessariamente o contrário.
Perceba que, em uma relação, pode-se escolher mais de uma key. Esse conjunto é chamado de chaves candidatas (candidate keys). A key escolhida para identificar cada tupla da relação é chamada de chave primária (primary key ou PK).
Os atributos que formam a primary key não podem ser NULL para qualquer tupla em r(R)
. Enquanto isso, outros valores podem conter essa mesma restrição sem serem primary key.
Para as restrições que envolvem duas relações, devem existir atributos que formem a chave estrangeira (foreign key ou FK). Tendo uma relação que referencia e uma referenciada, uma terá um atributo FK que será o valor PK da outra.
Cada valor de uma tupla deve ser do domínio do seu atributo ou NULL, se permitido.
Um conjunto S de esquemas de relação que pertencem ao banco. Por exemplo, S = {R1, R2,...., Rn} + IC
onde S é o nome do banco de dados, R são os esquemas individuais e IC são o conjunto de restrições de integridade.
Um estado de um banco de dados relacional pode ser visto como uma instância ou fotografia do banco de dados inteiro, considerando todas suas relações e restrições. Por exemplo, BD = {r1, r2,...., rm}
tal que cada ri é um estado de Ri. Um estado que não satisfaz as restrições é dito inválido.