Modelo Relacional
Esquema da Relação
Descreve as colunas da tabela
uma colecção de uma ou mais relações com nomes
distintos
Uma relação é
o nome da relação
o nome de cada campo (coluna ou atributo)
uma tabela com linhas e colunas
o domínio de de cada campo
o nome
conjunto de valores associados
Ex: aluno( id: integer, nome: string, idade: integer, login: string)
IMD, 1
Teresa Gonçalves, 2004
Especifica
Uma base de dados é
IMD, 2
Teresa Gonçalves, 2004
Instância da Relação
Exemplo
É um conjunto de tuplos ou registos
campos (atributos ou colunas)
cada tuplo tem os mesmo número de campos que o
esquema da relação
id
Pode ser vista como uma tabela onde,
cada tuplo é uma linha e
todas as linhas têm o mesmo número de campos
Relação = Instância da Relação
Teresa Gonçalves, 2004
IMD, 3
nome idade
login
10000 João
18
joao@di
10050 Maria
22
maria@de
9999 Manuel 19
manuel@de
8999 Joana
joana@di
Teresa Gonçalves, 2004
19
nomes dos campos
tuplos
IMD, 4
Características
SQL - Structured Query Language
Uma relação é um conjunto de tuplos únicos
Tabela = Relação
Restrições de domínio
os valores que aparecem em cada coluna devem
respeitar o domínio definido no esquema
Sub-conjunto do SQL que suporta a criação, remoção e
modificação de tabelas
Domínio dos atributos
integer
real
char(n)
date
Definições
Grau ou aridade = número de atributos
Cardinalidade = número de tuplos
Teresa Gonçalves, 2004
DDL – Data Definition Language
IMD, 5
não existem duas linhas iguais
a ordem de apresentação das linhas não é importante
DDL – Tabelas
DDL – Tuplos (1)
Definição de uma tabela
Inserção
INSERT
Ex:
CREATE TABLE aluno (
id: integer,
nome: char(60),
idade: integer,
login: char(40)
CREATE TABLE
Ex:
INSERT INTO
aluno (id,nome,idade,login)
VALUES (5667,'João',18,'joao@di')
Pode-se omitir a lista de nomes de colunas, listando os valores
pela ordem apropriada(aquela definida aquando da criação
da tabela), mas é bom estilo explicitar os nomes
)
Teresa Gonçalves, 2004
IMD, 6
Teresa Gonçalves, 2004
IMD, 7
Teresa Gonçalves, 2004
IMD, 8
DDL – Tuplos (2)
Restrições de integridade
Remoção
São condições (especificadas no esquema da base de dados)
que restringem os dados a guardar
DELETE
DELETE FROM aluno
Tipo de restrições
WHERE aluno.nome = 'João'
UPDATE
UPDATE aluno A
SET A.idade = A.idade+1
WHERE A.nome = 'Maria'
IMD, 9
Teresa Gonçalves, 2004
Restrição de chave
IMD, 10
Teresa Gonçalves, 2004
DDL – Chaves candidatas
Chave candidata
Indica um sub-conjunto mínimo de atributos de uma
relação que constituem um identificador único de
cada tuplo
domínio do atributo
chave
chave estrangeira
outras
Modificação
Chave primária
É uma das chaves candidatas
é escolhida como principal meio de identificação /
referenciação do tuplo
CREATE TABLE aluno (
id: integer,
nome: char(60),
idade: integer,
login: char(40),
UNIQUE (nome,idade),
PRIMARY KEY (id)
chave candidata
)
chave primária
o SGBD gera mecanismos que, dada a sua chave primária,
tornam a devolução do tuplo eficiente
Teresa Gonçalves, 2004
IMD, 11
Teresa Gonçalves, 2004
IMD, 12
Restrição de chave estrangeira
Exemplo
chave
estrangeira
Chave estrangeira
a informação contida numa relação está ligada com
informação contida noutra
Ex:
aluno( id: integer, nome: string, idade: integer, login: string)
inscrição( nomeD:string, data:date, id:integer )
se campo id na tabela inscrição refere os dados dum estudante
id é uma chave estrangeira e refere estudante
deve ter o mesmo número de colunas e o mesmo domínio
Teresa Gonçalves, 2004
DDL – Chaves estrangeiras
CREATE TABLE inscricao (
cnome: char(60),
data: date,
id: integer,
PRIMARY KEY (cnome,id),
FOREIGN KEY (id) REFERENCES aluno;
)
cnome
data
id
IFN
12-10-04
10000
10000 João
18
IMD
10-10-04
10050
10050 Maria
22
maria@de
IMD
10-10-04
10000
9999 Manuel 19
manuel@de
IMD
30-09-04
9999
8999 Joana
joana@di
IFN
30-09-04
9999
inscrição
(relação que referencia)
IMD, 13
id
nome idade
19
login
joao@di
estudante
(relação referenciada)
Podem existir alunos sem inscrição;
Qualquer inscrição, deve referir um aluno existente
A chave estrangeira na relação que referencia tem de ser
igual à chave primária na relação referenciada
chave
primária
Teresa Gonçalves, 2004
IMD, 14
Do modelo EA para Relacional
Uma base de dados desenhada no modelo
Entidade-Associação pode ser representada no
modelo Relacional
Modelo Entidade-Associação
Conjuntos-Entidade
Conjuntos-Associação
Restrições de cardinalidade e participação
Modelo Relacional
Tabelas
Teresa Gonçalves, 2004
IMD, 15
Teresa Gonçalves, 2004
IMD, 16
Conjuntos-entidade (CE)
Conjuntos-associação (CA)
Um CE é transformado numa tabela:
Um CA é transformado numa relação:
idade
aluno(id, nome, idade, login)
id
CREATE TABLE aluno (
id: integer,
nome: char(60),
idade: integer,
login: char(40),
PRIMARY KEY (id)
aluno
nome
login
)
os atributos da chave primária de cada CE que
participa na associação tornam-se chave estrangeira da
relação
os atributos descritivos são atributos da relação
o conjunto de atributos não descritivos são uma chave
candidata
cada atributo do CE torna-se um atributo da tabela
a chave do CE torna-se a chave da tabela
IMD, 17
Teresa Gonçalves, 2004
Exemplo
id
aluno
login
idade
inscrição
data
numero
disciplina
Combinar tabelas
inscricao(id, cnome, data)
CREATE TABLE inscricao (
data: date,
cnome: char(60),
id: integer,
PRIMARY KEY (cnome,id),
FOREIGN KEY (id)
REFERENCES aluno;
FOREIGN KEY (cnome)
REFERENCES disciplina;
)
cnome
Teresa Gonçalves, 2004
Numa associação AB vários-para-1, da entidade
A para B, se existir uma participação total de A é
possível combinar as tabelas AB e A numa única
tabela:
inclui-se a informação da tabela correspondente à
associação AB na tabela correspondente à entidade A
nome
IMD, 18
Teresa Gonçalves, 2004
IMD, 19
Teresa Gonçalves, 2004
IMD, 20
Exemplo
dnome
orçamento
docente(nome, gabinete, dnome)
B
departamento
CREATE TABLE docente (
gabinete: char(60),
nome: char(60),
dnome: char(60),
PRIMARY KEY (nome),
FOREIGN KEY (dnome)
REFERENCES departamento;
)
tem
A
docente
gabinete
Teresa Gonçalves, 2004
nome
IMD, 21
Download

Modelo Relacional Esquema da Relação Instância da Relação