Sei sulla pagina 1di 6

GUILHERME DUARTE

Banco de Dados 2
Exerccios Unidade 2
Documento apresentado como composio de nota de
prevista no plano da ensino da disciplina de Interface Banco
de Dados 2, no Curso de Tecnologias da Informao e
Comunicao, na Universidade Federal de Santa Catarina.
Prof. Dr. Alexandre Leopoldo Gonsalves.

Ararangu, 2016

1) Em duas pginas (uma para cada banco de dados Oracle e Postgre) faa um resumo sobre o
dicionrio de dados (catlogo do sistema) e sobre a organizao fsica desses bancos.
Banco de Dados Postgre:
Todos os dados necessrios para um agrupamento de bancos de dados so armazenados dentro
do diretrio de dados do agrupamento, geralmente referenciado como PGDATA. Um local comum para
PGDATA /var/lib/pgsql/data. Podem existir na mesma mquina vrios agrupamentos, gerenciados por
diferentes postmaster. O diretrio PGDATA contm vrios subdiretrios e arquivos de controle. Alm
destes itens requeridos, os arquivos de configurao do agrupamento postgresql.conf, pg_hba.conf e
pg_ident.conf so tradicionalmente armazenados em PGDATA.
J os catlogos do sistema so o lugar onde o sistema de gerenciamento de banco de dados
armazena informaes sobre tabelas e colunas e informaes da contabilidade interna. O catlogo do
PostgreSQL so tabelas normais. Normalmente, no se deve alterar os catlogos do sistema mo, h
sempre os comandos SQL para fazer isso.

Banco de Dados Oracle


Uma caracterstica a independncia das estruturas de dados lgicos, tais como tabelas,
visualizaes, e ndices de estruturas de armazenamento fsico. Porque as estruturas fsicas e lgicas so
separados, voc pode gerenciar o armazenamento fsico dos dados sem afetar o acesso a estruturas
lgicas. Por exemplo, renomear um arquivo de banco de dados no renomeia as tabelas armazenadas
nele. Um banco de dados Oracle um conjunto de arquivos que armazenam dados Oracle em
armazenamento em disco persistente.
Oracle Database cria um arquivo de dados para um espao de tabela, alocando a quantidade
especificada de espao em disco mais a sobrecarga para o cabealho do arquivo de dados . O sistema
operacional em que o Oracle Database executado responsvel por apagar informaes antigas e as
autorizaes de um arquivo antes de atribuir-lo para o banco de dados. O cabealho do arquivo de dados
contm metadados sobre o arquivo de dados, tais como o seu tamanho e checkpoint SCN . Cada
cabealho contm um arquivo numbe absoluta R e um nmero de arquivo relativo . O nmero de arquivo
absoluto identifica o arquivo de dados no banco de dados. O nmero relativo de arquivo identifica de
forma nica um arquivo de dados dentro de um espao de tabela.
Quando Oracle Database primeiro cria um arquivo de dados, o espao em disco alocado
formatado, mas no contm dados do usurio. No entanto, o banco de dados reserva-se o espao para
armazenar os dados para futuras segmentos da tabela associada. Como os dados cresce em um espao
de tabela, banco de dados Oracle usa o espao livre nos arquivos de dados para alocar extenses para o
segmento.
Outra caracterstica que este banco apresenta um conjunto de tabelas e views somente leitura.
As informaes armazenadas no dicionrio de dados incluem os nomes dos usurios do servidor Oracle,
os privilgios concedidos aos usurios, os nomes dos objetos do banco de dados, as constraints de tabelas
e as informaes de auditoria. H quatro categorias de views de dicionrio de dados.
Prefixo
USER_
ALL_

DBA_

Significado
Contm detalhes dos objetos pertencentes ao
usurio.
Contm detalhes dos objetos para os quais o
usurio ganhou direitos de acesso e dos
objetos pertencentes ao usurio.
Contm detalhes dos usurios com
privilgios de DBA para acessar qualquer
objeto do banco de dados.

Armazena
Armazenainformaes
informaessobre
sobreoodesempenho
desempenho
ou
oubloqueio
bloqueiodo
doservidor
servidordo
dobanco
bancodededados;
dados;
disponvel
disponvelpara
paraososadministradores
administradoresdo
dobanco.
banco.

V$_

2) Considerando a sequncia de chaves (3, 10, 11, 37, 21, 4, 28, 15, 17; 51, 68, 33, 23, 39, 2; 13, 19,
20, 6, 8) implemente uma rvore B de ordem m=2 (em cada ; deve ser apresentada a rvore
parcial).
1 Representao
15

21

10

11

37

17

2 Representao
15, 37

2,3

51

21

10

17

11

39

33

68

Fim das Representao


15, 37

3,10

51

19,21

11

17

20

33

39

68

3) Considerando a sequncia de chaves (3, 10, 11, 37, 21, 4, 28, 15, 17; 51, 68, 33, 23, 39, 2; 13, 19,
20, 6, 8) implemente uma rvore B de ordem m=3 (em cada ; deve ser apresentada a rvore
parcial).
1 Representao
11

3.4.10

15.17.21.28.37

2 Representao
11.28

15.17.21.23

2.3.4.10

33.37.39.51.68

3 Representao
11.19.28

2.3.4.6.8.10

13.15.17

20.21.23

33.37.39.51.68

4) Realize uma pesquisa sobre ndice BITMAP em que deve constar a definio, exemplos, e uma
discusso das vantagens e desvantagens dessa estratgia
O ndice bitmap um tipo de ndice que foi introduzido no Oracle Database 7 e que pode ser
utilizado para otimizar consultas que utilizam como filtro de dados, colunas que possuem baixa
cardinalidade, ou seja, colunas que possuem pouca variao de valores nas linhas de uma tabela. Ao
criar um ndice bitmap em uma coluna, o Oracle monta um mapa de bits para todas as linhas da tabela,
contendo todos os valores possveis para a coluna. No podem ser usados em chaves primrias pois, o
Oracle no permite. Sero utilizados com maior eficincia, quando as colunas indexadas possuem baixa
cardinalidade quanto menor a cardinalidade, melhor o benefcio de utiliz-lo, por exemplo se usado em
uma coluna (gnero, estado civil). Contudo com colunas de alta cardinalidade eles no so recomendados
e se forem utilizados, devem ser criados com muito cuidado, pois h um custo de processamento alto
para atualizaes linha-a-linha. Isso ir degradar demasiadamente a performance das atualizaes,
podendo gerar locks e erros nas aplicaes.
Exemplos:

SELECT * FROM VEICULO V WHERE V.COR = AZUL AND PRETO; SELECT * FROM
PESSOA
P
WHERE
P.PAIS='BRASIL'
AND
(C.CIDADE='ARARANGUA'
OR
C.CIDADE='TURVO');
Vantagens:
Tempos de respostas reduzidos para uma larga gama de consultas ad hoc.
Espao de armazenamento pequeno, quando comparado com outros tipos de ndice.
Desvantagens:
A atualizao de ndices bitmap no to eficiente quanto a de ndices rvores-B, o que faz
com que ndices bitmap sejam indicados para BDs read-only.
Para que haja ganho de espao, preciso que o nmero de valores da chave do ndice seja
pequeno.
5) Crie um modelo lgico composto de trs tabelas (mdico, paciente, consulta), gere o script, crie
as tabelas no banco de dados e carregue as mesmas com dados. Elabore algumas consultas
(individuais por tabela, utilizando junes e com filtros especficos na clusula where) e analise o
comportamento dessas consultas (tempo de execuo) com e sem os ndices (chave primria e os
demais campos utilizados na clusula where);

CREATE TABLE medico ( cod_ medico integer, nome varchar(50) );


CREATE TABLE paciente ( cod_ paciente integer, nome varchar(50), cidade varchar(50), uf
varchar(2), endereco varchar(50) );
CREATE TABLE consulta ( cod_ consulta integer, cod_ medico integer, cod_ paciente integer,
data date, hora_consulta varchar(8) );
insert into paciente values (1, Paciente 1', 'Ararangu', 'SC', 'Endereco 1');
insert into paciente values (2, Paciente 2', 'Ararangu', 'SC', 'Endereco 2');
insert into paciente values (3, Paciente 3', 'Ararangu', 'SC', 'Endereco 3');
insert into paciente values (4, Paciente 4', 'Ararangu', 'SC', 'Endereco 4');
insert into paciente values (5, Paciente 5', 'Ararangu', 'SC', 'Endereco 5');
insert into paciente values (6, Paciente 6', 'Ararangu', 'SC', 'Endereco 6');
insert into medico values (1, Mdico 1');
insert into medico values (2, Mdico 2');
insert into medico values (3, Mdico 3');
insert into medico values (4, Mdico 4');
insert into medico values (5, Mdico 5');
insert into medico values (6, Mdico 6');
insert into consulta values (1, 6, 1, 2013-04-11, 13:30);
insert into consulta values (2, 5, 2, 2013-04-11, 12:30);
insert into consulta values (3, 4, 3, 2014-04-11, 13:30);
insert into consulta values (4, 3, 4, 2014-04-11, 12:30);
insert into consulta values (5, 2, 5, 2015-04-11, 12:30);
insert into consulta values (6, 1, 6, 2015-04-11, 13:30);
select * from medico
select nome from medico
select * from medico where nome = Mdico 1

select * from medico where cod_ medico = 5


select * from paciente
select nome from paciente
select * from paciente where nome = Mdico 1
select * from paciente where cod_ paciente = 5
select * from consulta
select * from paciente where cod_ paciente = 5
select * from paciente where cod_ medico = 2
select * from consulta where data = 2015-04-11
select * from consulta where data between 2013-04-11 and 2015-04-11

Potrebbero piacerti anche