2. Modelo relacional
I Modelo simples e intuitivo baseado no conceito matemático
de relação.
I Inventado em 1970 por Edgar Codd.
I Utilizado pela maioria dos SGBDs.
I SQL é baseado no modelo relacional.
2 / 18
3. Modelo relacional
I Modelo simples e intuitivo baseado no conceito matemático
de relação.
I Inventado em 1970 por Edgar Codd.
I Utilizado pela maioria dos SGBDs.
I SQL é baseado no modelo relacional.
2 / 18
4. Modelo relacional
I Modelo simples e intuitivo baseado no conceito matemático
de relação.
I Inventado em 1970 por Edgar Codd.
I Utilizado pela maioria dos SGBDs.
I SQL é baseado no modelo relacional.
2 / 18
5. Modelo relacional
I Modelo simples e intuitivo baseado no conceito matemático
de relação.
I Inventado em 1970 por Edgar Codd.
I Utilizado pela maioria dos SGBDs.
I SQL é baseado no modelo relacional.
2 / 18
6. Modelo relacional
I Modelo simples e intuitivo baseado no conceito matemático
de relação.
I Inventado em 1970 por Edgar Codd.
I Utilizado pela maioria dos SGBDs.
I SQL é baseado no modelo relacional.
2 / 18
7. Modelo relacional
I Uma relação é como se fosse uma tabela com linhas e colunas.
I A diferença é que:
I uma relação não pode ter linhas repetidas.
I Muitas vezes irei usar o termo tabela para me referir a uma
relação (mas devem estar conscientes de que tabela e relação
são coisas distintas).
I BD = conjunto de relações/tabelas.
3 / 18
8. Modelo relacional
I Uma relação é como se fosse uma tabela com linhas e colunas.
I A diferença é que:
I uma relação não pode ter linhas repetidas.
I Muitas vezes irei usar o termo tabela para me referir a uma
relação (mas devem estar conscientes de que tabela e relação
são coisas distintas).
I BD = conjunto de relações/tabelas.
3 / 18
9. Modelo relacional
I Uma relação é como se fosse uma tabela com linhas e colunas.
I A diferença é que:
I uma relação não pode ter linhas repetidas.
I Muitas vezes irei usar o termo tabela para me referir a uma
relação (mas devem estar conscientes de que tabela e relação
são coisas distintas).
I BD = conjunto de relações/tabelas.
3 / 18
10. Modelo relacional
I Uma relação é como se fosse uma tabela com linhas e colunas.
I A diferença é que:
I uma relação não pode ter linhas repetidas.
I Muitas vezes irei usar o termo tabela para me referir a uma
relação (mas devem estar conscientes de que tabela e relação
são coisas distintas).
I BD = conjunto de relações/tabelas.
3 / 18
11. Modelo relacional
I Uma relação é como se fosse uma tabela com linhas e colunas.
I A diferença é que:
I uma relação não pode ter linhas repetidas.
I Muitas vezes irei usar o termo tabela para me referir a uma
relação (mas devem estar conscientes de que tabela e relação
são coisas distintas).
I BD = conjunto de relações/tabelas.
3 / 18
12. Modelo relacional
I Uma relação é como se fosse uma tabela com linhas e colunas.
I A diferença é que:
I uma relação não pode ter linhas repetidas.
I Muitas vezes irei usar o termo tabela para me referir a uma
relação (mas devem estar conscientes de que tabela e relação
são coisas distintas).
I BD = conjunto de relações/tabelas.
3 / 18
13. Definição formal de relação
I Dados n conjuntos C1, C2, . . . , Cn (não necessariamente
distintos), R é uma relação sobre estes n conjuntos, se for um
conjunto de tuplos da forma (v1, v2, . . . , vn) em que:
I v1 ∈ C1
I v2 ∈ C2
I . . .
I vn ∈ Cn
I Por outras palavras, R é subconjunto do Produto Cartesiano
C1 x C2 x . . . x Cn.
4 / 18
14. Definição formal de relação
I Dados n conjuntos C1, C2, . . . , Cn (não necessariamente
distintos), R é uma relação sobre estes n conjuntos, se for um
conjunto de tuplos da forma (v1, v2, . . . , vn) em que:
I v1 ∈ C1
I v2 ∈ C2
I . . .
I vn ∈ Cn
I Por outras palavras, R é subconjunto do Produto Cartesiano
C1 x C2 x . . . x Cn.
4 / 18
15. Definição formal de relação
I Dados n conjuntos C1, C2, . . . , Cn (não necessariamente
distintos), R é uma relação sobre estes n conjuntos, se for um
conjunto de tuplos da forma (v1, v2, . . . , vn) em que:
I v1 ∈ C1
I v2 ∈ C2
I . . .
I vn ∈ Cn
I Por outras palavras, R é subconjunto do Produto Cartesiano
C1 x C2 x . . . x Cn.
4 / 18
16. Definição formal de relação
I Dados n conjuntos C1, C2, . . . , Cn (não necessariamente
distintos), R é uma relação sobre estes n conjuntos, se for um
conjunto de tuplos da forma (v1, v2, . . . , vn) em que:
I v1 ∈ C1
I v2 ∈ C2
I . . .
I vn ∈ Cn
I Por outras palavras, R é subconjunto do Produto Cartesiano
C1 x C2 x . . . x Cn.
4 / 18
27. Dá jeito visualizar a relação como uma tabela
nome ano duração aCores
Star Wars 1977 124 sim
King Kong 1930 120 não
Moulin Rouge 2001 124 sim
I Nome das colunas são atributos.
I tuplo = linha.
10 / 18
28. Dá jeito visualizar a relação como uma tabela
nome ano duração aCores
Star Wars 1977 124 sim
King Kong 1930 120 não
Moulin Rouge 2001 124 sim
I Nome das colunas são atributos.
I tuplo = linha.
10 / 18
29. Dá jeito visualizar a relação como uma tabela
nome ano duração aCores
Star Wars 1977 124 sim
King Kong 1930 120 não
Moulin Rouge 2001 124 sim
I Nome das colunas são atributos.
I tuplo = linha.
10 / 18
30. Estas 2 tabelas representam a mesma relação. Porquê?
nome ano duração aCores
Lion King 1997 108 sim
Star Wars 1977 124 sim
King Kong 1930 120 não
Lion King 1997 108 sim
Lion King 1997 108 sim
ano nome aCores duração
1930 King Kong não 120
1977 Star Wars sim 124
1997 Lion King sim 108
11 / 18
31. Esquema da BD = descrição completa da estrutura da BD
I Nome das relações/tabelas
I Nome dos atributos
I Domı́nio dos atributos (integer, string, . . .)
I Chaves
I . . .
12 / 18
32. Esquema da BD = descrição completa da estrutura da BD
I Nome das relações/tabelas
I Nome dos atributos
I Domı́nio dos atributos (integer, string, . . .)
I Chaves
I . . .
12 / 18
33. Esquema da BD = descrição completa da estrutura da BD
I Nome das relações/tabelas
I Nome dos atributos
I Domı́nio dos atributos (integer, string, . . .)
I Chaves
I . . .
12 / 18
34. Esquema da BD = descrição completa da estrutura da BD
I Nome das relações/tabelas
I Nome dos atributos
I Domı́nio dos atributos (integer, string, . . .)
I Chaves
I . . .
12 / 18
35. Esquema da BD = descrição completa da estrutura da BD
I Nome das relações/tabelas
I Nome dos atributos
I Domı́nio dos atributos (integer, string, . . .)
I Chaves
I . . .
12 / 18
36. Esquema da BD = descrição completa da estrutura da BD
I Nome das relações/tabelas
I Nome dos atributos
I Domı́nio dos atributos (integer, string, . . .)
I Chaves
I . . .
12 / 18
37. Instância da BD
I O conteúdo (os tuplos) de todas as relações de uma BD
constitui uma instância da BD.
I A instância da BD muda com frequência.
I O esquema da BD é feito uma vez (por pessoas como vocês)
e não costuma mudar.
13 / 18
38. Instância da BD
I O conteúdo (os tuplos) de todas as relações de uma BD
constitui uma instância da BD.
I A instância da BD muda com frequência.
I O esquema da BD é feito uma vez (por pessoas como vocês)
e não costuma mudar.
13 / 18
39. Instância da BD
I O conteúdo (os tuplos) de todas as relações de uma BD
constitui uma instância da BD.
I A instância da BD muda com frequência.
I O esquema da BD é feito uma vez (por pessoas como vocês)
e não costuma mudar.
13 / 18
40. Instância da BD
I O conteúdo (os tuplos) de todas as relações de uma BD
constitui uma instância da BD.
I A instância da BD muda com frequência.
I O esquema da BD é feito uma vez (por pessoas como vocês)
e não costuma mudar.
13 / 18
41. Definição de tabelas em SQL
CREATE TABLE <nome> (
<lista de elementos>
);
I cada elemento consiste num atributo e no respectivo tipo de
dados.
I os tipos mais comuns são:
I INT ou INTEGER
I REAL ou FLOAT
I CHAR(n), VARCHAR(n)
I BOOLEAN
I DATE
I TIME
14 / 18
42. Exemplo: Tabela de actores
CREATE TABLE Actores(
nome VARCHAR(50),
morada VARCHAR(70),
sexo CHAR,
dataNascimento DATE
);
15 / 18
43. DATE e TIME
I o formato de DATE é ’yyyy-mm-dd’.
I o formato de TIME é ’hh:mm:ss’.
I poderá ter ainda fracções de segundo.
I Exemplos:
I DATE ’2008-01-05’
(5 de Janeiro de 2008)
I TIME ’15:32:04.5’
(4 segundos e meio depois das 3:32 da tarde)
16 / 18
44. DATE e TIME
I o formato de DATE é ’yyyy-mm-dd’.
I o formato de TIME é ’hh:mm:ss’.
I poderá ter ainda fracções de segundo.
I Exemplos:
I DATE ’2008-01-05’
(5 de Janeiro de 2008)
I TIME ’15:32:04.5’
(4 segundos e meio depois das 3:32 da tarde)
16 / 18
45. DATE e TIME
I o formato de DATE é ’yyyy-mm-dd’.
I o formato de TIME é ’hh:mm:ss’.
I poderá ter ainda fracções de segundo.
I Exemplos:
I DATE ’2008-01-05’
(5 de Janeiro de 2008)
I TIME ’15:32:04.5’
(4 segundos e meio depois das 3:32 da tarde)
16 / 18
46. DATE e TIME
I o formato de DATE é ’yyyy-mm-dd’.
I o formato de TIME é ’hh:mm:ss’.
I poderá ter ainda fracções de segundo.
I Exemplos:
I DATE ’2008-01-05’
(5 de Janeiro de 2008)
I TIME ’15:32:04.5’
(4 segundos e meio depois das 3:32 da tarde)
16 / 18
47. DATE e TIME
I o formato de DATE é ’yyyy-mm-dd’.
I o formato de TIME é ’hh:mm:ss’.
I poderá ter ainda fracções de segundo.
I Exemplos:
I DATE ’2008-01-05’
(5 de Janeiro de 2008)
I TIME ’15:32:04.5’
(4 segundos e meio depois das 3:32 da tarde)
16 / 18
48. DATE e TIME
I o formato de DATE é ’yyyy-mm-dd’.
I o formato de TIME é ’hh:mm:ss’.
I poderá ter ainda fracções de segundo.
I Exemplos:
I DATE ’2008-01-05’
(5 de Janeiro de 2008)
I TIME ’15:32:04.5’
(4 segundos e meio depois das 3:32 da tarde)
16 / 18
49. DATE e TIME
I o formato de DATE é ’yyyy-mm-dd’.
I o formato de TIME é ’hh:mm:ss’.
I poderá ter ainda fracções de segundo.
I Exemplos:
I DATE ’2008-01-05’
(5 de Janeiro de 2008)
I TIME ’15:32:04.5’
(4 segundos e meio depois das 3:32 da tarde)
16 / 18
50. DATE e TIME
I o formato de DATE é ’yyyy-mm-dd’.
I o formato de TIME é ’hh:mm:ss’.
I poderá ter ainda fracções de segundo.
I Exemplos:
I DATE ’2008-01-05’
(5 de Janeiro de 2008)
I TIME ’15:32:04.5’
(4 segundos e meio depois das 3:32 da tarde)
16 / 18
51. DATE e TIME
I o formato de DATE é ’yyyy-mm-dd’.
I o formato de TIME é ’hh:mm:ss’.
I poderá ter ainda fracções de segundo.
I Exemplos:
I DATE ’2008-01-05’
(5 de Janeiro de 2008)
I TIME ’15:32:04.5’
(4 segundos e meio depois das 3:32 da tarde)
16 / 18
52. Declaração da chave
I um atributo ou lista de atributos pode ser declarado como
chave em SQL utilizando PRIMARY KEY.
I Exemplo:
CREATE TABLE Actores(
nome VARCHAR(50) PRIMARY KEY,
morada VARCHAR(70),
sexo CHAR,
dataNascimento DATE
);
17 / 18
53. Declaração da chave (cont.)
I No caso da chave ser composta, temos de especificar um
elemento à parte.
I Exemplo:
CREATE TABLE Filmes(
nome VARCHAR(50),
ano INTEGER,
duracao INTEGER,
aCores BOOLEAN,
PRIMARY KEY (nome,ano)
);
18 / 18