O documento descreve a extensão de uma base de dados sobre uma biblioteca pessoal. Propõe-se adicionar funcionalidades para notas de leitores associadas a livros e empréstimos de livros, indicando quem os empresta e as datas. São apresentados modelos de entidade-relacionamento e esquemas relacionais para suportar estas novas funcionalidades, bem como instruções SQL para implementá-las no banco de dados SQLite.
1. Bases
de
dados
Desafio
2
Alargar
as
funcionalidades
de
uma
base
de
dados
Luis
Borges
Gouveia
Maio
de
2013
2. Considere
o
seguinte
contexto
• Considere
a
necessidade
de
registo
de
uma
pequena
coleção
de
livros
associada
a
uma
biblioteca
pessoal
– Pretende-‐se
o
registo
de
livros,
indicando
o
respeGvo
Htulo,
isbn
e
língua
em
que
está
escrito
– É
necessário
associar
os
respeGvos
autores,
considerando
o
seu
nome
e
nacionalidade
– Deve
ser
igualmente
registada
a
editora
(nome)
– Deve
ser
considerado
o
registo
de
compra,
indicando
o
livro,
o
valor
e
a
data
de
aquisição
– Adicionalmente,
as
relações
de
quem
escreveu
o
livro
(associando
o
livro
e
o
autor),
quem
publicou
(associando
o
livro
e
a
editora)
3. Um
modelo
E-‐R
do
contexto
proposto
• Consideram-‐se:
– quatro
enGdades:
editora,
livro,
autor
e
compra
– Três
relações
binárias:
publicado,
escrito
e
pago
• Publicado:
uma
editora
publica
vários
livros
e
um
livro
é
publicado
por
várias
editoras
• Escrito:
um
livro
é
escrito
por
vários
autores
e
um
autor
escreve
vários
livros
• Pago:
um
livro
é
pago
numa
compra
e
uma
compra
paga
um
livro
5. Desafio
2
• Considere
o
modelo
e-‐r
anterior
e
estenda
a
sua
funcionalidade
de
modo
a
suportar:
– Notas
de
leitor
associadas
com
determinado
livro
e
que
registe
também
um
conjunto
de
termos
indeterminado
a
cada
nota
realizada
(deve
incluir
informação
de
contexto
da
produção
da
nota,
tal
como
data,
etc...)
– EmprésGmos
de
livros:
deve
implementar
a
solução
para
que
consiga
realizar
o
emprésGmo
de
um
determinado
livro,
registanto
a
data
e
os
tempos
de
emprésGmo
de
modo
a
permiGr
um
serviço
de
alertas
(não
esquecer
os
dados
de
idenGficação
a
quem
se
empresta
os
livros)
6. Modelo
E-‐R
para
extensão
NOTAS
• Consideram-‐se:
– Duas
novas
enGdades:
termo
e
nota
(nota
integra
com
a
enGdade
livro)
– duas
relações
binárias:
associa
e
colocada
• colocada:
uma
nota
é
colocada
em
vários
livros
e
num
livro
são
colocadas
várias
notas
• associa:
um
termo
associa
várias
notas
e
uma
nota
associa
vários
termos
8. Modelo
E-‐R
para
extensão
EMPRÉSTIMOS
• Consideram-‐se:
– Duas
novas
enGdades:
emprésGmo
e
leitor
(emprésGmo
integra
com
a
enGdade
livro)
– duas
relações
binárias:
associa
e
feito
• associa:
um
livro
está
associado
a
vários
emprésGmo
(a
tempos
diferentes)
e
um
emprésGmo
está
associado
a
vários
livros
(a
tempos
diferentes)
• feito:
um
leitor
faz
vários
emprésGmos
e
um
emprésGmo
é
feito
por
um
leitor
13. Considere
a
seguinte
nota
• Para
a
nota,
carregue
os
dados
correspondentes
na
base
de
dados
– Realizada
uma
nota
para
o
livro
“Negócio
Electrónico
-‐
conceitos
e
perspecGvas
de
desenvolvimento”
designada
por
posição
com
o
texto:
trata-‐se
de
um
livro
introdutório
sobre
o
tema
do
e-‐business
escrito
em
português
que,
em
160
páginas
apresenta
os
conceitos
básicos
do
uso
do
digital
para
a
condução
de
negócios
e
o
que
tal
implica”.
Com
esta
nota
foram
associados
três
termos:
e-‐business,
negócio
eletrónico
e
e-‐commerce
14. Mapear
o
texto
com
os
atributos
• Realizada
uma
nota
para
o
livro
“Negócio
Electrónico
-‐
conceitos
e
perspecGvas
de
desenvolvimento”
[nlivro=1],
[id_n=1]
e
[idl=
8]
designada
por
posição
[Gtulo=‘Posição’]
com
o
texto:
trata-‐se
de
um
livro
introdutório
sobre
o
tema
do
e-‐business
escrito
em
português
que,
em
160
páginas
apresenta
os
conceitos
básicos
do
uso
do
digital
para
a
condução
de
negócios
e
o
que
tal
implica”
[descre=‘…’]
e
incluir
[id_n]
e
[data].
• Com
esta
nota
foram
associados
três
termos[3
entradas
na
tabela
NOTA_TERMO]:
e-‐business
[id_t=1]
e
[nome=‘e-‐
business’],
negócio
eletrónico
[id_t=2]
e
[nome=‘negócio
eletrónico’]
e
e-‐commerce
[id_t=3]
e
[nome=‘e-‐commerce’]
15. Carregar
as
tabelas
• NOTA(id_n,
Gtulo,
descre,
data)
– Insert
into
nota
values(1,
´Posição’,
‘trata-‐se
de
um
livro
introdutório
sobre
o
tema
do
e-‐business
escrito
em
português
que,
em
160
páginas
apresenta
os
conceitos
básicos
do
uso
do
digital
para
a
condução
de
negócios
e
o
que
tal
implica’,
‘2013-‐05-‐22’);
• TERMO(id_t,
nome,
desc)
– Insert
into
termo
values(1,
‘e-‐business’,’’);
– Insert
into
termo
values(2,
‘negócio
eletrónico’,’’);
– Insert
into
termo
values(3,
‘e-‐commerce’,’’);
• NOTA_TERMO(intermo,
id_n,
id_t)
– Insert
into
nota_termo
values(1,
1,
1);
– Insert
into
nota_termo
values(2,
1,
2);
– Insert
into
nota_termo
values(3,
1,
3);
• NOTA_LIVRO(nlivro,
id_n,
idl)
– Insert
into
nota_livro
values(1,
1,
8);
16. Considere
os
seguintes
emprésGmos
• Carregue
esta
informação
na
base
de
dados
– Os
livros
2
e
3
foram
emprestados
ao
leitor
Manuel
António
(PT,
aluno)
a
15
de
Fevereiro
de
2013,
tendo
o
livro
2,
sido
entregue
a
22
de
Fevereiro
e
o
livro
3,
a
12
de
Março
de
2013
– Os
livros
10
e
12
foram
emprestados
à
Diana
Alves
(PT,
professora)
a
6
de
Abril
de
2013,
tendo
o
livro
12
sido
entregue
a
4
de
Maio
e
o
10,
ainda
não
foi
entregue.
Na
data
do
emprésGmo
foi
registado
que
o
livro
12
apresentava
anotações
diversas
17. Mapear
o
texto
com
os
atributos
• Os
livros
2
e
3
[2
entradas
na
tabela
DATAS_EMP]
foram
emprestados
[1
entrada
na
tabela
EMPRESTIMO]
ao
leitor
Manuel
António
(PT,
aluno)
[nlei=1]
e
[nome=‘Manuel
António’]
e
[nac=‘PT’]
e
[Gpo=‘aluno’]
a
15
de
Fevereiro
de
2013
[d_ini=‘2013-‐02-‐15’],
tendo
o
livro
2,
sido
entregue
a
22
de
Fevereiro
[d_fim]
e
o
livro
3,
a
12
de
Março
de
2013
[d_fim]
• Os
livros
10
e
12
[2
entradas
na
tabela
DATAS_EMP]
foram
emprestados
à
Diana
Alves
(PT,
professora)
[nlei=2]
e
[nome=‘Diana
Alves’]
e
[nac=‘PT’]
e
[Gpo=‘professor’]
a
6
de
Abril
de
2013
[d_ini=‘2013-‐04-‐06’],
tendo
o
livro
12
[d_fim]
sido
entregue
a
4
de
Maio
e
o
10,
ainda
não
foi
entregue
[d_fim].
Na
data
do
emprésGmo
foi
registado
que
o
livro
12
apresentava
anotações
diversas
[notas]
18. Carregar
as
tabelas
• DATAS_EMP
(nreg,
idl,
n_em,
d_ini;
d_fim)
– Insert
into
datas_emp
values(1,
2,
1,’2013-‐02-‐15’,
’2013-‐02-‐22’);
– Insert
into
datas_emp
values(2,
3,
1,’2013-‐02-‐15’,
‘2013-‐03-‐12’);
– Insert
into
datas_emp
values(3,
10,
2,’2013-‐04-‐06’,
‘2013-‐05-‐04’);
– Insert
into
datas_emp
values(4,
12,
2,’2013-‐04-‐06’,
‘’);
• EMPRESTIMO(n_em,
nlei,
notas)
– Insert
into
empresGmo
values(1,
1,
‘’);
– Insert
into
empresGmo
values(2,
2,
‘o
livro
12
apresenta
notações
diversas’);
• LEITOR(nlei,
nome,
nac,
Gpo)
– Insert
into
leitor
values(1,
‘Manuel
António’,
‘PT’,
‘aluno’);
– Insert
into
leitor
values(2,
‘Diana
Alves’,
‘PT’,
‘professor’);
19. Algumas
das
consultas
possíveis
• Listar
os
emprésGmos
• Listar
os
leitores
• Listar
as
notas
• Listar
os
termos
• Listar
a
frequência
de
uGlização
dos
termos
• Listar
o
tempo
médio
de
emprésGmo,
por
livro
• Listar
o
número
de
vezes
que
cada
livro
foi
emprestado
• Listar
o
número
de
emprésGmos
realizados
por
cada
uGlizador