Académique Documents
Professionnel Documents
Culture Documents
PAULISTA
Ps-Graduao Administrao de Banco de Dados Oracle
So Paulo
2010
Dr.
Regina
Aprovada em
de
de 2010.
BANCA EXAMINADORA
Componente da Banca
Componente da Banca
ii
iii
AGRADECIMENTOS
assuntos
discutidos,
eles
tentaram
RESUMO
Este Trabalho de Concluso de Curso consiste em explanar caractersticas
conceituais, lgicas, fsicas, semelhanas e diferenas entre dois grandes sistemas
gerenciadores de banco de dados lideres no mercado nacional e internacional
Oracle e DB2.
Ao longo do processo do trabalho foi utilizado um modelo de dados baseado em um
estudo de caso de um pronto atendimento em um servio de sade, que possibilitou
a aplicao de conceitos essenciais, baseados no levantamento bibliogrfico
expondo de maneira clara e objetiva os pontos necessrios para trazer subsdios
aos profissionais de banco de dados.
ABSTRACT
This final paper try to explain conceptual and logical features, physical similarities
and differences between two important data base systems managers, that are
leaders in worldwide market : Oracle and DB2.
Throughout the work process we used a data model based on a case study of an
emergency health care service, which facilitated the application of key concepts,
based on literature stating clearly and objectively the points needed to bring benefits
to professionals database.
ii
LISTA DE ILUSTRAES
FIGURAS
Figura 1 Arquitetura Oracle e seus componentes ....................................................... 17
Figura 2 Estrutura de armazenamento fsico .............................................................. 18
Figura 3 - Arquitetura DB2 mostrando uma nica instncia ......................................... 31
Figura 4 Instancia DB2 e arquivos ............................................................................... 32
Figura 5 - Fluxo atendimento ........................................................................................... 46
QUADROS
Quadro 1 vises de dicionrio de dados Oracle.....................................................28
Quadro 2 Vises de desempenho dinmico Oracle ...............................................29
Quadro 3 Vises do catalogo de sistema DB2 .......................................................42
LISTA DE SIGLAS
ii
SUMRIO
INTRODUO .................................................................................................................. 13
1.
1.1.
Arquitetura SGBD................................................................................................ 17
1.1.1.
ORACLE............................................................................................................. 17
1.1.2.
1.1.2.1.
1.1.2.2.
1.1.2.3.
1.1.2.4.
1.1.2.5.
1.1.2.5.1.
1.1.2.5.2.
1.1.2.5.3.
1.1.2.5.4.
1.1.2.6.
iii
1.1.2.6.1.
Instance level processes ......................................................................................35
1.1.2.6.2.
Database level processes.....................................................................................36
1.1.2.6.3.
Application level processes .................................................................................37
1.1.2.7. Estruturas de armazenamento lgico .....................................................................37
1.1.2.7.1.
Tablespaces ............................................................................................................37
1.1.2.7.2.
Pagina.......................................................................................................................38
1.1.2.7.3.
Extent .......................................................................................................................38
1.1.2.7.4.
Esquema ..................................................................................................................39
1.1.2.7.5.
Tabelas.....................................................................................................................39
1.1.2.7.5.1. Regular Tables .......................................................................................................39
1.1.2.7.5.2. Append mode tables.............................................................................................40
1.1.2.7.5.3. Multidimensional Clustering Tables ..................................................................40
1.1.2.7.5.4. Materialized query tables .....................................................................................40
1.1.2.7.5.5. Range-clusterd tables...........................................................................................40
1.1.2.7.5.6. Partitioned tables ..................................................................................................41
1.1.2.7.6.
Views ........................................................................................................................41
1.1.2.7.7.
Vises do Catalogo do Sistema...........................................................................41
1.1.2.7.8.
Alias ..........................................................................................................................42
1.1.2.7.8.1. Alias do Banco de Dados.....................................................................................42
1.1.2.7.8.2. Alias Relacionado a Tabelas ...............................................................................43
1.1.2.7.9.
Sequences ...............................................................................................................43
1.1.2.7.10. ndices......................................................................................................................43
1.1.2.7.11. Autenticao e Autorizao .................................................................................44
1.1.2.7.12. Privilgios no DB2..................................................................................................44
2.
2.1.
2.2.
Pronto Atendimento............................................................................................ 45
2.3.
2.4.
Fluxo de Triagem................................................................................................. 47
2.5.
2.5.1.
2.5.2.
Solicitao de Medicao......................................................................................48
2.6.
2.7.
3.
METODOLOGIA........................................................................................................ 49
3.1.
3.2.
3.3.
Modelo Lgico...................................................................................................... 50
3.4.
3.5.
3.5.1.
3.6.
3.7.
3.8.
3.9.
iv
CONCLUSO.................................................................................................................... 52
REFERNCIAS................................................................................................................. 53
APNDICE ........................................................................................................................ 56
A Modelo Conceitual ................................................................................................... 56
B Modelo Lgico .......................................................................................................... 57
C Modelo Fsico............................................................................................................ 58
D Modelo Proposto...................................................................................................... 59
E Dicionrio de dados................................................................................................. 65
F Implementao no Oracle....................................................................................... 72
G Implementao no DB2........................................................................................... 95
H Mapa de Terminologia........................................................................................... 110
13
INTRODUO
14
que o mesmo tenha possibilidades de administrar duas plataformas onde cada uma
tem suas prprias particularidades e semelhanas entre si.
Este trabalho dividiu-se em quatro partes.
A primeira parte destina-se a reviso bibliogrfica que trar toda explicao
necessria para o entendimento do estudo.
A segunda parte apresenta o ambiente onde o estudo de caso foi desenvolvido e
explana detalhes sobre o mesmo.
A terceira parte enfatiza a metodologia usada, o modelo proposto e suas aplicaes.
A quarta parte completa o trabalho apresentando a concluso, anexos, apndices e
referencias bibliogrficas.
15
16
modelo tem por base a teoria dos conjuntos e lgebra relacional, e foi motivada
devido s necessidades de aumentar a independncia e melhorar o armazenamento
e a recuperao dos dados. (FERRARI, 2008)
Em 1974, outros dois funcionrios da IBM, Dom Chamberlin e Ray Boyce publicaram
o trabalho SEQUEL: A Structured English Query Language sobre como acessar os
dados de um banco de dados relacional, que era uma linguagem que se aproximava
de frases em ingls solicitando ao banco os dados desejados, simplificando assim o
acesso aos dados. (FERRARI, 2008)
Em 1986 o American National Standard Institute (ANSI), publicou um padro SQL,
estabelecendo-se, assim, como linguagem padro de banco de dados relacional.
(KORTH, 2001) (ABBEY, 2002)
Em 1977 Bob Miner, Ed Oates e Bruce Scott fundaram a Oracle inicialmente
chamada de Software Development Labs (SDL). Larry Ellison trabalhava na empresa
para a qual a SDL prestava consultoria. Nessa poca Larry estava acompanhado o
que a IBM estava fazendo e descobriu um trabalho sobre o SYSTEM/R baseado no
trabalho de 1970 do Dr. Codd sobre banco de dados relacionais, eles descreviam a
linguagem SQL que na poca era chamada SEQUEL/2. Larry levou esse trabalho a
Bob e Scott e perguntou se eles poderiam montar isso, e eles acharam que seria
muito fcil e assim comearam. (ABBEY, 2002) (SCHERER, 2000)
O primeiro banco de dados relacional DB2 foi lanado em 1978 com o nome System
R, mas a IBM no acreditava no potencial desse projeto e s em 1983 lanou a
primeira verso do DB2 para os seus mainframes.
O primeiro banco de dados relacional Oracle foi lanado em 1979, era a verso 2 e
foi a primeira verso comercial do software vendida base da fora area
americana. Esse o primeiro sistema gerenciador de banco de dados comercial no
mercado. (ABBEY, 2002)
O modelo relacional o modelo mais utilizado no momento. Grandes empresas e
instituies utilizam gigantes bases relacionais para gerenciar e manter seus dados.
(RAMALHO, 1999) (SCHERER et al., 2000)
17
O v e r v ie w o f P r im a r y C o m p o n e n t s
Us er
p ro c e s s
S hared P oo l
L ib r a r y
C ach e
S e rv e r
p ro c e s s
D a ta D ic t io n a r y
C ach e
In s ta n c e
SGA
D a ta b a s e
B u ffe r C a c h e
Redo Log
B u ffe r
J ava Po o l
L a rg e P o o l
PGA
PMON
P ara m e te r
f il e
SM O N
D a ta
fil e s
DBW R
LGW R
C o n tr o l
fil e s
CKPT
Redo Log
fi le s
O th e rs
A r c h iv e d
L o g f ile s
P a ss w o rd
fil e
D a ta b a s e
1 -3
C o p y ri g h t O r a c le C o rp o ra tio n , 2 0 0 2 . A l l ri g h ts re s e r ve d .
18
19
Dentre
os
principais itens que constituem a SGA, destacam-se: database buffer cache, shared
pool, large pool, Java pool, redo log buffer e strams pool. Os prximos pargrafos
explicam resumidamente o papel de cada um destes componentes. Para mais
detalhes consultar COUCHMAN, 2003, p. 5.
20
21
22
1.1.1.10.
Escreve todas as entradas de redo log para o disco. Os dados de redo log so
armazenados em memria no redo log buffer cache, na SGA. No momento em que
uma transao for efetivada com o comando COMMIT e o redo log buffer estiver
preenchido, o LGWR escreve as entradas de redo log nos arquivos redo log
apropriados.
A um tempo especfico, todos os dados do database buffer cache modificados so
escritos em disco pelo processo DBWR; este evento chamado de checkpoint. O
processo checkpoint responsvel para informar ao processo DBWR o momento de
gravar os dados em disco. O DBWR tambm atualiza os arquivos de controle do
banco de dados para indicar o mais recente checkpoint. O processo CKPT
opcional; se ele no estiver presente, o LGWR assume sua responsabilidade;
1.1.1.11.
System Monitor
23
1.1.1.12.
Process Monitor
1.1.1.13.
Arcn
O processo archiver (ARCH) copia os arquivos redo log para fita ou mesmo outro
disco, no momento em que um deles torna-se completo. Esse processo geralmente
est presente quando o banco de dados est sendo utilizado no modo
ARCHIVELOG.
1.1.1.14.
RECO
1.1.1.15.
24
1.1.1.15.1.
Tablespaces
1.1.1.15.2.
Blocos
1.1.1.15.3.
Extenses
1.1.1.15.4.
Segmentos
os
dados.
Um
segmento
um
conjunto
de
extenses
alocadas para certo tipo de estrutura lgica que fica guardado em uma tablespace,
existindo assim diferentes tipos de segmentos (segmentos de dados, ndices,
rollback);
25
1.1.1.15.5.
Schema Objects
1.1.1.15.6.
Objects
1.1.1.15.7.
Tabelas
1.1.1.15.8.
Tabelas relacionais
A tabela relacional a mais comum. Suas linhas contm uma ou mais colunas de
tipos e comprimentos diversos. As linhas no so organizadas em ordem, a
ordenao feita por heap;
26
1.1.1.15.9.
Nas tabelas organizadas por ndice o que ocorre que as linhas da tabela so
armazenadas em um ndice de rvore B de forma que cada n do ndice contenha a
coluna chaveada. A vantagem na utilizao desse tipo de tabela est no fato da
busca por uma linha em particular da tabela ocorrer de modo mais eficiente. A
desvantagem na utilizao nesse tipo de estrutura que ela no aplicvel para as
tabela que no possuam chave primria, como tabelas que armazenam registros de
log, por exemplo. Outro inconveniente reside no fato desse tipo de tabela no poder
ser membro de um cluster;
1.1.1.15.10.
Tabelas de objeto
1.1.1.15.11.
Tabelas clusterizadas
juntas.
Tome-se
como
exemplo
duas
tabelas:
empregados
Reduo de E/S;
27
1.1.1.15.12.
Tabelas particionadas
1.1.1.16.
Views
28
Para Korth (1995), qualquer tabela que no faa parte do modelo conceitual, mas
seja visvel para um usurio como uma tabela virtual pode ser considerada como
uma view. J para Date (1990, p. 181) uma view uma tabela com nome, derivada,
o equivalente em SQL de uma viso externa, em geral uma coletnea de tabelas.
O Oracle armazena em tabelas do sistema dados sobre a prpria base de dados.
Exemplos dessas informaes incluem os nomes de todas as tabelas na base de
dados, as colunas, os nomes, os tipos dessas tabelas, nmero de linhas que a
tabela contm informaes relacionadas segurana, que informam, por exemplo,
que usurios tm acesso a que elementos da tabela.
Esses dados relacionados prpria base de dados so chamados de
metadados.Com intuito de facilitar o acesso a esses metadados, o Oracle forma
vises dessas tabelas. Uma base de dados do Oracle 10g contm dois tipos de
vises que com esses metadados:
1.1.1.16.1.
Essas vises possuem nomes que comeam com DBA_, ALL_ e USER_. As
diferenas entre elas podem ser ilustradas utilizando a viso do dicionrio de dados
da DBA_TABLES (Quadro 2.1). Ela mostra informaes de todas as tabelas da base
de dados. A ALL_TABLES mostra apenas as tabelas que um usurio em particular
do banco possui ou tem acesso. A USER_TABLES mostra somente os objetos que
o usurio possui.
Vises de dicionrios de dados
Viso
DBA_TABLES
Descrio
29
1.1.1.16.2.
Essas vises possuem nomes que comeam com V$. Elas possuem um contedo
mais dinmico e fornecem dados atualizados sobre o banco de dados. Um exemplo
dessas vises pode ser visto na tabela abaixo.
Vises de dicionrios de dados
Viso
Descrio
V$DATABASE
V$OPTION
V$SQL
1.1.1.17.
Sequences
1.1.1.18.
Sinonimos
1.1.1.19.
ndices
30
1.1.1.20.
Usurios/Esquemas
31
32
33
34
Lock list
35
36
DB2 log writer (db2loggw) - Este o processo de escrita que libera o log de
transaes do buffer de log para os arquivos de log de transao no disco.
equivalente ao processo LGWR no Oracle.
37
38
System temporary:
So
utilizadas
pelo
DB2
para
Managed
Storage
(DMS).
Neste
caso,
DB2
gerenciar
armazenamento.
Gerenciadas pelo armazenamento automtico: Este tipo de tablespace,
gerenciada pelo armazenamento automtico, tem o mesmo beneficio de fcil
utilizao, similar as tablespaces SMS, porm apresenta melhor performance e
flexibilidade do que as tablespaces DMS. O crescimento de repositrios existentes e
a criao de novos so completamente gerenciados pelo DB2. (CHONG, 2008)
1.1.2.7.2. Pagina
A pagina a unidade mnima de armazenamento no DB2. Os tamanhos de pgina
permitidos so: 4K, 8K, 16K e 32K. (IBM, 2002)
1.1.2.7.3. Extent
O extent um agrupamento de pginas. Se o DB2 trabalhasse com uma pgina por
vez o custo de performance seria muito alto, portanto, o DB2 trabalha com extents.
39
1.1.2.7.4. Esquema
Esquemas so name spaces para uma coleo de objetos da base de dados. Eles
so usados para:
1.1.2.7.5. Tabelas
Uma tabela uma coleo de dados relacionados, organizados logicamente em
colunas e linhas. As linhas de uma tabela relacional no tm ordem fixa. A ordem
das colunas, no entanto, sempre a ordem em que foi especificada quando definiu a
tabela. (IBM, 2006)
O DB2 suporta diferences tipos de tabelas:
40
os
dados. Tabelas
significativamente
de
desempenho
a MQT realmente
consultas,
especialmente
consultas
41
1.1.2.7.6. Views
Uma view fornece uma maneira diferente de olhar para os dados em uma ou mais
tabelas, uma especificao chamada de uma tabela de resultados. A especificao
uma instruo SELECT que executada sempre que a view referenciada em
uma instruo SQL. A exibio tem linhas e colunas como uma tabela.
Views so usadas para controlar o acesso a dados porque permite que vrios
usurios vejam apresentaes diferentes dos mesmos dados. Por exemplo, vrios
usurios podem acessar uma tabela de dados sobre os funcionrios. Um gerente v
dados sobre os seus funcionrios, mas no empregados em outro departamento.
Um oficial de recrutamento v as datas de contratao de todos os empregados,
mas no seus salrios; um gestor financeiro v os vencimentos, mas no as datas
de contratao.
42
SYSCAT.COLUMNS
SYSCAT.TABLESPACES
SYSCAT.INDEXES
SYSCAT.TABAUTH
SYSCAT.TRIGGERS
SYSCAT.VIEWS
SYSCAT.SEQUENCES
SYSCAT.ROUTINES
1.1.2.7.8. Alias
Um alias um nome alternativo para um banco de dados, tabela, exibio ou at
mesmo outro alias. (IBM, 2002)
43
1.1.2.7.9. Sequences
A seqncia um objeto de banco de dados que permite a gerao automtica de
valores. As seqncias so ideais para a tarefa de gerar valores de chave nica. Os
aplicativos podem usar as seqncias para evitar a possvel simultaneidade e
problemas de desempenho. (IBM, 2006)
1.1.2.7.10.
ndices
Vrias colunas podem ser utilizadas para um ndice (tambm conhecido como
ndice composto)
44
1.1.2.7.11.
Autenticao e Autorizao
Autenticao
Este o processo onde o usurio validado. A autenticao executada por
um recurso de segurana externo ao DB2 (tipicamente pelo sistema
operacional, algum mtodo de autenticao da rede ou algum plug-in de
autenticao). A autenticao pelo Sistema Operacional a opo default. Ao
utilizar a autenticao pelo sistema operacional, a identificao do usurio e a
senha so enviadas ao servidor (parte da instruo de conexo). O servidor
de base de dados ento invoca a autenticao do sistema operacional para
validar a identificao do usurio e a senha. (CHONG, 2008)
Autorizao
Nesta etapa, o DB2 verifica se o usurio autenticado pode executar a
operao solicitada. A informao de autorizao armazenada no catlogo
do DB2 e no arquivo de configurao DBM. (CHONG, 2008)
1.1.2.7.12.
Privilgios no DB2
45
2. ESTUDO DE CASO
2.1. Local de Estudo
O pronto atendimento esta localizado na cidade KYZ de capo bonito, sua
populao estimada aproximadamente de 110.000 habitantes e sua rea de
abrangncia de aproximadamente de 19.800 habitantes distribudos em 5 bairros.
46
47
48
49
3. METODOLOGIA
A metodologia de analise que utilizaremos ser a criao de caso de estudo de um
Pronto atendimento, a metodologia adotada ser de criar uma situao hipottica de
acompanhamento de um Pronto Atendimento, ento ser criado um modelo de
dados lgico e fsico independente do SGBD, aps a criao deste modelo o mesmo
ser implementado nos SGBD Oracle e DB2, ento ser analisado itens que sejam
importantes para que o profissional de Banco de Dados no encontre dificuldade
para administrar qualquer um dos dois SGBD, a metodologia adotada diferenciar
todos os pontos importantes dos SGBD, e o resultado ser uma tabela de pontos
importantes diferentes entre os dois SGBD.
50
51
52
CONCLUSO
A partir da necessidade de extrair conhecimento atravs da analogia realizada entre
os SGBD Oracle e DB2 focando um modelo de dados baseado em um sistema de
pronto atendimento, foram estudadas suas funcionalidades e suas tcnicas com o
objetivo de criar subsdios para os profissionais de banco de dados terem uma base
de como trabalhar com as duas plataformas.
Neste trabalho foi enfatizada a criao e implantao de um modelo de dados que
requeria alta disponibilidade e que possua uma grande carga de dados. Tendo isso
como base, verificou-se que a utilizao de qualquer um dos SGBD bastante
eficiente e sua administrao poderia ser realizada pelo mesmo profissional sem
muitos problemas, pois identificamos inmeras semelhanas entre si.
Durante a construo do modelo, foram utilizadas as etapas/fases da modelagem de
dados, as quais nos auxiliaram em muito do no projeto de banco de dados. A
ferramenta ERWIN ajudou bastante pela facilidade no acesso as dados e no
aprendizado que a mesma proporciona.
Considera-se que o objetivo principal deste trabalho, que a criao de subsdios
para os profissionais de banco de dados Oracle e DB2 foi atingido atravs da
criao de tabelas demonstrativo-comparativas que exibem uma gama de comandos
aplicados em ambos SGBD.
Quando tiveres provado a sensao de voar, andars na terra com os olhos voltados para o
cu, onde esteve e para onde desejars voltar
Leonardo da Vinci
53
REFERNCIAS
54
55
GLOSSRIO
56
APNDICE
A Modelo Conceitual
57
B Modelo Lgico
58
C Modelo Fsico
59
D Modelo Proposto
NAME
DEFINITION
ATENDIMENTO_CONVENIO Esta entidade armazenar dados do convenio do paciente
CAD_ENFERMEIRO
Esta entidade armazenar dados do enfermeiro numero do
registro no rgo cadastrado
CAD_EXAME
Esta entidade armazenar dados do cadastro de exames
possveis de ser feitos
CAD_FUNCIONARIO
Esta entidade armazenar dados do funcionrio do PS que
atender o paciente
CAD_MEDICACAO
Esta entidade armazenar dados de cadastro de medicao
CAD_MEDICO
Esta entidade armazenar dados do medico plantonista
CAD_PATOLOGIA
Esta entidade armazenar dados do cadastro de patologia
existentes
CAD_TIPO_DOC
Esta entidade armazenar o tipo do documento informado pelo
paciente no cadastro de atendimento
CAD_TIPO_TEL
Esta entidade armazenar o tipo de telefone informado pelo
paciente no cadastro de atendimento
CONSULTA
Esta entidade armazenar dados obtidos pelo medico na consulta
feita pelo medico
DOCUMENTO
Esta entidade armazenar dados de documentao do paciente
ENDERECO
Esta entidade armazenar dados pessoais de endereo do
paciente
EXAME_CONSULTA
Esta entidade armazenar dados de exames solicitados pelo
medico no momento da consulta
EXAME_INTERNACAO
Esta entidade armazenar dados de exames solicitados pelo
medico no momento de internao
EXAMES
Esta entidade armazenar dados do exames solicitado pelo
medico
INTERNACAO
Esta entidade armazenar dados de exames, leito, data e hora de
entrada em internao e todo o acompanhamento do paciente
MEDICACAO
Esta entidade armazenar dados da medicao solicitado pelo
medico, tanto no momento consulta quando internao
MEDICACAO_CONSULTA
Esta entidade armazenar dados da medicao solicitado pelo
medico, tanto no momento consulta
MEDICACAO_INTERNACAO Esta entidade armazenar dados da medicao solicitado pelo
medico, tanto no momento internao
PACIENTE
Esta entidade armazenar dados de senha e nome do paciente
PAT_CONSULTA
Esta entidade armazenar dados da consulta e resultado da
patologia do paciente, indicando ainda procedimento
PAT_INTERNACAO
Esta entidade armazenar dados de internao do paciente caso
haja necessidade, a pulseira do paciente o seguir durante a
estadia do mesmo no hospital
PATOLOGIA
Esta entidade armazenar a patologia indicada pelo medico no
momento da consulta
PLAN_CONSULTA
Esta entidade armazenar dados da consulta e do plantonista
PLAN_INTERNACAO
Esta entidade armazenar dados de internao do paciente caso
haja necessidade de internao
PLANTONISTA
Esta entidade receber o cadastro do plantonista
SENHA
Esta entidade armazenar as senhas que o paciente obter ao
entrar no PS, e ser zerada toda a virada de dia.
TELEFONE
Esta entidade armazenar dados de telefones do paciente
TRIAGEM
Esta entidade armazenar dados do paciente que passar pela
triagem, tais como, consultrio a ser atendido, medicamentos
administrados.
60
Datatype
NUMBER(8)
VARCHAR(24)
VARCHAR(8)
Required
Yes
No
No
Note
Cdigo interno do paciente
Numero do associado no convenio
Numero de identificao padro
conforme ANS de direito a exames,
tipo de acomodaes, etc.
Datatype
NUMBER(8)
VARCHAR(15)
Required Note
Yes
Cdigo do plantonista
No
Cdigo de registro enfermagem
Datatype
NUMBER(8)
VARCHAR(100)
Required Note
Yes
Cdigo interno do exame
No
Anotaes sobre o exame,
resultados,etc.
Datatype
NUMBER(8)
VARCHAR(40)
Required Note
Yes
Cdigo do plantonista
No
Nome do plantonista
Datatype
NUMBER(8)
VARCHAR(100)
Required Note
Yes
Cdigo interno de medicao
No
Descrio da medicao
Datatype
NUMBER(8)
VARCHAR(15)
Required Note
Yes
Cdigo do plantonista
No
Cdigo de registro medico
Datatype
CHAR(18)
CHAR(18)
Required Note
Yes
Cdigo da patologia
No
Descrio da patologia
Nome
id_tipo_doc
Datatype
NUMBER(9)
descricao
VARCHAR(15)
Required Note
Yes
Cdigo interno do tipo de
documento
No
Descrio do tipo de documento.
CAD_ENFERMEIRO
Nome
Id_Funcionario
CRE
CAD_EXAME
Nome
id_exame
descricao
CAD_FUNCIONARIO
Nome
Id_Funcionario
Nome
CAD_MEDICACAO
Nome
id_medicacao
descricao
CAD_MEDICO
Nome
Id_Funcionario
CRM
CAD_PATOLOGIA
Nome
id_patologia
descricao
CAD_TIPO_DOC
61
CAD_TIPO_TEL
Nome
id_tipo_tel
descricao
Datatype
NUMBER(8)
VARCHAR(15)
Required Note
Yes
Cdigo interno do tipo do telefone
No
Descrio do tipo de
telefone,celular, residencial, etc
Datatype
CHAR(18)
NUMBER(8)
Required Note
Yes
Cdigo interno da consulta
No
Cdigo interno do paciente
Nome
id_paciente
id_tipo_doc
Datatype
NUMBER(8)
NUMBER(8)
numero
VARCHAR(15)
Required Note
Yes
Cdigo interno do paciente
Yes
Cdigo interno do tipo de
documento
No
Numero do documento
Nome
id_paciente
ID_ENDERECO
logradouro
numero
compl_numero
Datatype
NUMBER(8)
NUMBER(8)
VARCHAR(60)
VARCHAR(10)
VARCHAR(30)
Required
Yes
Yes
No
No
No
bairro
cidade
estado
cep
VARCHAR(30)
VARCHAR(30)
VARCHAR(2)
VARCHAR(8)
No
No
No
No
Datatype
NUMBER(8)
NUMBER(8)
Required Note
Yes
Cdigo interno do exame
No
Cdigo interno da consulta medica
Datatype
NUMBER(8)
VARCHAR(20)
Required Note
Yes
Cdigo interno do exame
No
Cdigo de barras de internao do
paciente, este cdigo acompanhar
o paciente at o final do
atendimento
CONSULTA
Nome
id_consulta
id_paciente
DOCUMENTO
ENDERECO
Note
Cdigo interno do paciente
Cdigo primrio do endereo
Nome do endereo
Numero do endereo
Complemento do numero do
endereo
Bairro do endereo
Cidade do endereo
Estado do endereo
CEP do endereo
EXAME_CONSULTA
Nome
id_exame
id_consulta
EXAME_INTERNACAO
Nome
id_exame
num_cod_barra_pulseira
62
EXAMES
Nome
id_exame
material_colhido
Datatype
NUMBER(8)
VARCHAR(60)
resultado
DATA_PEDIDO
DATA_CHEGADA
VARCHAR(60)
DATE
DATE
Required Note
Yes
Cdigo interno do exame
No
Anotaes do material colhido do
paciente
No
Resultados do exame
No
Data do pedido do exame
No
Data de entrega do exame
INTERNACAO
Nome
num_cod_barra_pulseira
Datatype
VARCHAR(20)
num_leito
VARCHAR(8)
data_entrada
DATE
hora_entrada
TIME
data_saida
DATE
hora_saida
TIME
id_consulta
NUMBER(8)
Required Note
Yes
Cdigo de barras de internao do
paciente, este cdigo acompanhar
o paciente at o final do
atendimento
No
Numero do leito de internao do
paciente
No
Data de entrada do paciente na
internao
No
Hora da entrada do paciente na
internao
No
Data de sada do paciente da
internao
No
Hora da sada do paciente da
internao
No
Cdigo interno da consulta
MEDICACAO
Nome
ID
Datatype
NUMBER(9)
id_medicacao
DATA
HORA
number(8)
DATE
TIME
Required Note
Yes
Cdigo da medicao com o
cdigo do paciente
No
Cdigo interno de medicao
No
Data da aplicao da medicao
No
Hora da aplicao da medicao
MEDICACAO_CONSULTA
Nome
id_medicacao_consulta
id_consulta
Datatype
NUMBER(8)
NUMBER(8)
Required Note
Yes
Cdigo interno da medicao
No
cdigo interno da consulta
MEDICACAO_INTERNACAO
Nome
id_medicacao_consulta
num_cod_barra_pulseira
Datatype
NUMBER(8)
VARCHAR(20)
Required Note
Yes
Cdigo interno da medicao
No
cdigo de barras de internao do
paciente, este cdigo acompanhar
o paciente at o final do
atendimento
63
PACIENTE
Nome
id_paciente
nome
Datatype
NUMBER(8)
VARCHAR(40)
Required Note
Yes
Cdigo interno do paciente
No
Nome do paciente
Datatype
CHAR(18)
CHAR(18)
Required Note
Yes
Cdigo interno da patologia
No
Cdigo interno da consulta
Datatype
CHAR(18)
VARCHAR(20)
Required Note
Yes
Cdigo interno da patologia.
No
Cdigo de barras de internao do
paciente, este cdigo acompanhar
o paciente at o final do
atendimento
Datatype
CHAR(18)
CHAR(18)
Required Note
Yes
No
Datatype
NUMBER(8)
NUMBER(8)
Required Note
Yes
Cdigo interno do plantonista
No
Cdigo interno do prontuario do
paciente
Datatype
NUMBER(8)
VARCHAR(20)
Required Note
Yes
Cdigo interno do plantonista
No
Cdigo de barras de internao do
paciente, este Cdigo acompanhar
o paciente at o final do
atendimento
Datatype
NUMBER(8)
NUMBER(8)
Required Note
Yes
Cdigo interno do plantonista
No
Cdigo do plantonista
PAT_CONSULTA
Nome
ID_PATOLOGIA
id_consulta
PAT_INTERNACAO
Nome
ID_PATOLOGIA
num_cod_barra_pulseira
PATOLOGIA
Nome
ID_PATOLOGIA
id_patologia
PLAN_CONSULTA
Nome
Id_plantonista
id_consulta
PLAN_INTERNACAO
Nome
id_plantonista
num_cod_barra_pulseira
PLANTONISTA
Nome
id_plantonista
Id_Funcionario
64
SENHA
Nome
id_senha
Datatype
NUMBER(8)
data
DATE
hora
TIME
Required Note
Yes
senha de entrada do paciente ao
PS
No
Data que registra a entrada do
paciente ao PS
No
Hora que registra a entrada do
paciente ao PS
TELEFONE
Nome
id_paciente
id_tipo_tel
ID_TEL
ddd
numero
tipo_tel
Datatype
NUMBER(8)
NUMBER(8)
NUMBER(8)
VARCHAR(4)
VARCHAR(10)
VARCHAR(10)
Required
Yes
Yes
Yes
No
No
No
Note
Cdigo interno do paciente
Cdigo interno do tipo do telefone
Cdigo de identificao do telefone
Cdigo do telefone
numero do telefone
identifica se o numero do telefone
celular, residencial ou comercial
Nome
id_paciente
pre_patologia
Datatype
NUMBER(8)
VARCHAR(100)
id_plantonista
id_senha
NUMBER(8)
NUMBER(8)
Required Note
Yes
Cdigo interno do paciente
No
anotaes de seleco de triagem,
ou seja, seleo para qual
especialidade medica o paciente
ser encaminhado
No
Cdigo interno do plantonista
No
senha de entrada do paciente ao
PS
TRIAGEM
65
E Dicionrio de dados
Definio de Tablespaces
Name
Definition
tbs_paciente
tbs_cadastros
tbs_ate_triagem_12010
Definio de Sequences
Name
Definition
seq_paciente
seq_atendimento
seq_funcionario
seq_patologia
seq_exame
seq_medicacao
Definio de tabelas
Name
ATENDIMENTO
CAD_EXAME
Comment
DESCRIO A entidade "ATENDIMENTO" define os principais dados
referentes aos vrios tipos de atendimentos como TRIAGEM,CONSULTA e a
INTERNACAO diferenciando pelo tipo e grupo do atendimento.
VOLUME ESPERADO 300000 registros para um ano.
TEMPO DE RETENO 5 anos.
ROTINA DE LIMPEZA Aps cinco anos, a alta administrao definir os
parmetros para limpeza
DESCRIO A entidade "CAD_EXAME" define os dados referentes ao
cadastro dos tipos de exames.
VOLUME ESPERADO 2000 registros para um ano.
66
67
PLANTONISTA
TELEFONE
TIPO
TRIAGEM
DATATYPE
NUMBER(8)
COD_TIPO
COD_GRUPO
CHAR(3)
NUMBER(3)
COD_PACIENTE
NUMBER(8)
DATA_INICIO
DATA_TERMINO
STATUS
DATE
DATE
CHAR(1)
DATA_UPD
DATE
CAD_EXAME
NOME
COD_EXAME
DATATYPE
NUMBER(8)
DESCRICAO
DATA_UPD
NULOS DESCRICAO
Yes
Cdigo de identificao do atendimento.
Referenciado por Seq_atendimento
No
Cdigo de identificao do Tipo de atendimento
No
Cdigo de identificao do grupo de
atendimento
No
Cdigo interno do paciente. Referenciado por
Seq_paciente
No
Data/hora de inicio do atendimento
No
Data/hora de termino do atendimento
No
Status que indica se o atendimento est aberto
/fechado
No
Data e Hora da ultima alterao no registro
NULOS DESCRICAO
Yes
Cdigo interno do exame. Referenciado por
Seq_exame
VARCHAR(100) No
anotaes sobre o exame, resultados, etc.
DATE
No
Data e Hora da ultima alterao no registro
68
CAD_FUNCIONARIO
NOME
COD_FUNCIONARIO
DATATYPE
NUMBER(8)
COD_TIPO
CHAR(3)
COD_GRUPO
NUMBER(3)
NOME
REGISTRO
DATA_UPD
VARCHAR(40)
NUMBER(15)
DATE
CAD_MEDICACAO
NOME
COD_MEDICACAO
DATATYPE
NUMBER(8)
DESCRICAO
DATA_UPD
VARCHAR(100)
DATE
CAD_PATOLOGIA
NOME
COD_PATOLOGIA
DATATYPE
CHAR(18)
DESCRICAO
DATA_UPD
CHAR(18)
DATE
DOCUMENTO
NOME
ID_DOCUMENTO
DATATYPE
NUMBER(8)
COD_PACIENTE
NUMBER(8)
NUMERO
DATA_UPD
VARCHAR(15)
DATE
NULOS DESCRICAO
Yes
Cdigo do plantonista. Referenciado por
Seq_Funcionario
Yes
Cdigo de identificacao do tipo que ira se
relacionar com os grupos.
FUN => Funcionrio
ATE => Atendimento
Yes
Cdigo de identificao do grupo.
Tipo: FUN
Grupo 100 Mdico
200 Enfermeiro
300- Aux. Enfermagem
Tipo: ATE
Grupo 100 - Triagem
200 - Consulta
300 - Internao
No
Nome do funcionrio
No
Registro do profissional
No
Data e Hora da ultima alterao no registro
NULOS DESCRICAO
Yes
Cdigo interno de medicao.Referenciado
por Seq_medicacao
No
Descrio da medicao
No
Data e Hora da ultima alterao no registro
NULOS DESCRICAO
Yes
Cdigo identificador da patologia.
Referenciado por Seq_patologia
No
Descrio da patologia
No
Data e Hora da ultima alterao no registro
NULOS DESCRICAO
Yes
Cdigo de identificador do documento.Gerado
pela trigger DOC_INS
Yes
Cdigo interno do paciente.Referenciado por
Seq_paciente
No
Numero do documento
No
Data e Hora da ultima alterao no registro
69
ENDERECO
NOME
ID_ENDERECO
DATATYPE
NUMBER(8)
COD_PACIENTE
NUMBER(8)
LOGRADOURO
NUMERO
COMPLEMENTO
BAIRRO
CIDADE
ESTADO
CEP
DATA_UPD
VARCHAR(60)
VARCHAR(10)
VARCHAR(30)
VARCHAR(30)
VARCHAR(30)
VARCHAR(2)
VARCHAR(8)
DATE
EXAMES
NOME
ID_EXAME
DATATYPE
NUMBER(8)
COD_ATENDIMENTO
NUMBER(8)
COD_EXAME
NUMBER(8)
MATERIAL_COLHIDO
DATA_PEDIDO
DATA_CHEGADA
RESULTADO
STATUS
DATA_UPD
VARCHAR(60)
DATE
DATE
VARCHAR(60)
CHAR(18)
DATE
GRUPO
NOME
COD_TIPO
DATATYPE
CHAR(3)
COD_GRUPO
NUMBER(3)
DESCRICAO
DATA_UPD
VARCHAR(30)
DATE
NULOS DESCRICAO
Yes
Cdigo primario do endereo. Gerado pela
trigger END_INS
Yes
Cdigo interno do paciente. Referenciado por
Seq_paciente
No
Nome do endereo
No
Numero do endereo
No
Complemento do numero do endereo
No
Bairro do endereo
No
Cidade do endereo
No
Estado do endereo
No
CEP do endereo
No
Data e Hora da ultima alterao no registro
NULOS DESCRICAO
Yes
Identificador do exame. Gerado pela trigger
EXA_INS
No
Cdigo de identificao do atendimento.
Referenciado por Seq_atendimento
No
Cdigo interno do exame. Referenciado por
Seq_exame
No
Anotaes do material colhido do paciente
No
Data do pedido do exame
No
Data de chegada do exame
No
resultados do exame
No
Status do exame Fechado/Aberto
No
Data e Hora da ultima alterao no registro
NULOS DESCRICAO
Yes
Cdigo de identificao do tipo que ira se
relacionar com os grupos. FUN => Funcionrio
ATE => Atendimento
Yes
Cdigo de identificao do grupo
Tipo: FUN
Grupo 100 Mdico
200 Enfermeiro
300- Aux. Enfermagem
Tipo: ATE
Grupo 100 Triagem
200 Consulta
300 - Internao
No
Descrio do grupo
No
Data e Hora da ultima alterao no registro
70
INTERNACAO
NOME
COD_INTERNACAO
DATATYPE
NUMBER(8)
COD_CONSULTA
NUMBER(8)
NUM_LEITO
DATA_ENTRADA
DATA_SAIDA
DATA_UPD
VARCHAR(8)
DATE
DATE
DATE
MEDICACAO
NOME
ID_MEDICACAO
DATATYPE
NUMBER(9)
COD_ATENDIMENTO
NUMBER(8)
COD_MEDICACAO
NUMBER(8)
DATA
HORA
DATA_UPD
DATE
TIME
DATE
PACIENTE
NOME
COD_PACIENTE
NULOS DESCRICAO
Yes
Cdigo de identificao do atendimento.
Referenciado por Seq_atendimento
No
Cdigo de identificao do atendimento que
referencia a consulta inicial
No
Nmero do leito
No
Data/hora de entrada na internao
No
Data/hora da saida da internao
No
Data e Hora da ultima alterao no registro
NULOS DESCRICAO
Yes
Identificador da medicao. Gerado pela
trigger MED_INS
No
Cdigo de identificao do atendimento.
Referenciado por Seq_atendimento
No
Cdigo interno de medicao. Referenciado
por Seq_medicacao
No
Data da aplicao
No
Hora da aplicao
No
Data e Hora da ultima alterao no registro
DATATYPE
NUMBER(8)
NULOS
Yes
NOME
VARCHAR(40)
NUM_CARTAO_CONVENIO
VARCHAR(24)
DIREITO_PLANO_CONVENIO VARCHAR(8)
No
No
No
DATA_UPD
No
DATE
PATOLOGIA
NOME
ID_PATOLOGIA
DATATYPE
CHAR(18)
COD_ATENDIMENTO
NUMBER(8)
COD_PATOLOGIA
CHAR(18)
OBSERVACAO
DATA_UPD
VARCHAR(30)
DATE
DESCRICAO
Cdigo interno do paciente.
Referenciado por Seq_paciente
Nome do paciente
numero do associado no convenio
numero de identificao padro
conforme ANS de direito a exames,
tipo de acomodaes, etc
Data e Hora da ultima alterao no
registro
NULOS DESCRICAO
Yes
Cdigo identificador da patologia do paciente,
Gerado pela trigger PAT_INS
No
Cdigo de identificao do atendimento
Referenciado por Seq_atendimento
No
Cdigo identificador da patologia Referenciado
por Seq_patologia
No
Observao da patologia
No
Data e Hora da ultima alterao no registro
71
PLANTONISTA
NOME
ID_PLANTONISTA
DATATYPE
NUMBER(8)
COD_FUNCIONARIO
NUMBER(8)
COD_TIPO
CHAR(3)
COD_GRUPO
NUMBER(3)
COD_ATENDIMENTO
NUMBER(8)
DATA_UPD
DATE
TELEFONE
NOME
ID_TEL
DATATYPE
NUMBER(8)
COD_PACIENTE
NUMBER(8)
TIPO_TEL
VARCHAR(10)
DDD
NUMERO
DATA_UPD
VARCHAR(4)
VARCHAR(10)
DATE
TIPO
NOME
COD_TIPO
DATATYPE
CHAR(3)
DESCRICAO
DATA_UPD
VARCHAR(30)
DATE
NULOS DESCRICAO
Yes
Cdigo interno do plantonista
Gerado pela trigger PLA_INS
No
Cdigo do plantonista
Referenciado por Seq_Funcionario
No
Cdigo de identificacao do tipo que ira se
relacionar com os grupos
FUN => Funcionario
ATE => Atendimento
No
Cdigo de identificao do grupo
Tipo: FUN
Grupo 100 - Mdico
200 - Enfermeiro
300- Aux. Enfermagem
Tipo: ATE
Grupo 100 - Triagem
200 - Consulta
300 - Internao
No
Cdigo de identificao do atendimento
Referenciado por Seq_atendimento
No
Data e Hora da ultima alterao no registro
NULOS DESCRICAO
Yes
Cdigo de identificao do telefone
Gerado pela trigger TEL_INS
Yes
Cdigo interno do paciente
Referenciado por Seq_paciente
No
identifica se o numero do telefone celular,
residencial ou comercial
No
Cdigo do telefone
No
numero do telefone
No
Data e Hora da ultima alterao no registro
NULOS DESCRICAO
Yes
Cdigo de identificacao do tipo que ira se
relacionar com os grupos
FUN => Funcionario
ATE => Atendimento
No
Descricao do tipo
No
Data e Hora da ultima alterao no registro
72
TRIAGEM
NOME
COD_ATENDIMENTO
DATATYPE
NUMBER(8)
PRE_PATOLOGIA
VARCHAR(100)
ID_PLANTONISTA
NUMBER(8)
DATA_UPD
DATE
NULOS DESCRICAO
Yes
Cdigo de identificao do atendimento.
Referenciado por Seq_atendimento
No
anotaes de seleco de triagem, ou seja,
seleo para qual especialidade medica o
paciente ser encaminhado
No
Cdigo interno do plantonista. Gerado pela
trigger PLA_INS
No
Data e Hora da ultima alterao no registro
F Implementao no Oracle
create database db_pa
controlfile reuse
logfile
group 1 ('c:\pa\db\db_pa\log\redo1.log') size 5M,
group 2 ('c:\pa\db\db_pa\log\redo2.log') size 5M,
group 3 ('c:\pa\db\db_pa\log\redo3.log') size 5M
character set
WE8ISO8859P1
national character set utf8
datafile 'c:\pa\db\db_pa\dat\system.dbf'
size 50M
autoextend on
next 10M maxsize unlimited
extent management local
sysaux datafile 'c:\pa\db\db_pa\dat\sysaux.dbf'
size 10M
autoextend on
next 10M
maxsize unlimited
undo tablespace undo
datafile 'c:\pa\db\db_pa\dat\undo.dbf'
size 5M
default temporary tablespace temp
tempfile 'c:\pa\db\db_pa\tmp\temp.dbf'
size 5M;
73
START WITH 1;
AUTOALLOCATE;
74
75
76
de inicio do
77
ADD CONSTRAINT
78
NOT NULL ,
NULL ,
79
ADD CONSTRAINT
ADD CONSTRAINT
80
81
ADD CONSTRAINT
82
83
ADD CONSTRAINT
84
85
86
ADD CONSTRAINT
87
88
ADD CONSTRAINT
89
90
91
BEGIN
SELECT SYSDATE INTO :new.DATA_UPD FROM DUAL;
END CEX_TRI;
/
CREATE OR REPLACE TRIGGER "EXA_INS"
BEFORE INSERT ON EXAME
FOR EACH ROW
declare
cursor nova_linha is
SELECT * FROM EXAME where COD_ATENDIMENTO = :new.COD_ATENDIMENTO ;
achou boolean;
reg_nova_linha nova_linha%ROWTYPE;
BEGIN
SELECT SYSDATE INTO :new.DATA_UPD FROM DUAL;
FOR reg_nova_linha in nova_linha loop
IF (reg_nova_linha.COD_ATENDIMENTO = :new.COD_ATENDIMENTO) THEN
achou :=true;
else
achou :=false;
END IF;
end loop;
IF ACHOU = TRUE THEN
SELECT MAX(ID_EXAME)+1 INTO :new.ID_EXAME FROM EXAME
WHERE COD_ATENDIMENTO= :new.COD_ATENDIMENTO;
ELSE
SELECT 1 INTO :new.ID_EXAME FROM DUAL;
END IF;
END EXA_INS;
/
CREATE OR REPLACE TRIGGER EXA_TRI
BEFORE INSERT OR UPDATE ON EXAMES
FOR EACH ROW
BEGIN
SELECT SYSDATE INTO :new.DATA_UPD FROM DUAL;
END EXA_TRI;
/
92
achou :=true;
else
achou :=false;
END IF;
end loop;
IF ACHOU = TRUE THEN
SELECT MAX(ID_MEDICACAO)+1 INTO :new.ID_MEDICACAO FROM MEDICACAO
WHERE COD_ATENDIMENTO= :new.COD_ATENDIMENTO;
ELSE
SELECT 1 INTO :new.ID_MEDICACAO FROM DUAL;
END IF;
END MED_INS;
/
CREATE OR REPLACE TRIGGER MED_TRI
BEFORE INSERT OR UPDATE ON MEDICACAO
FOR EACH ROW
BEGIN
SELECT SYSDATE INTO :new.DATA_UPD FROM DUAL;
END MED_TRI;
/
CREATE OR REPLACE TRIGGER "INT_INS"
BEFORE INSERT ON INTERNACAO
FOR EACH ROW
declare
cursor nova_linha is
SELECT * FROM INTERNACAO where ID_CONSULTA = :new.ID_CONSULTA ;
achou boolean;
reg_nova_linha nova_linha%ROWTYPE;
BEGIN
SELECT SYSDATE INTO :new.DATA_UPD FROM DUAL;
FOR reg_nova_linha in nova_linha loop
IF (reg_nova_linha.ID_CONSULTA = :new.ID_CONSULTA) THEN
achou :=true;
else
achou :=false;
END IF;
end loop;
IF ACHOU = TRUE THEN
SELECT MAX(ID_INTERNACAO)+1 INTO :new.ID_INTERNACAO FROM
INTERNACAO
WHERE ID_CONSULTA= :new.ID_CONSULTA;
ELSE
SELECT 1 INTO :new.ID_INTERNACAO FROM DUAL;
END IF;
END INT_INS;
/
CREATE OR REPLACE TRIGGER INT_TRI
BEFORE INSERT OR UPDATE ON INTERNACAO
FOR EACH ROW
BEGIN
SELECT SYSDATE INTO :new.DATA_UPD FROM DUAL;
END INT_TRI;
/
CREATE OR REPLACE TRIGGER FUN_TRI
BEFORE INSERT OR UPDATE ON FUNCIONARIO
FOR EACH ROW
BEGIN
93
94
else
achou :=false;
END IF;
end loop;
IF ACHOU = TRUE THEN
SELECT MAX(ID_DOCUMENTO)+1 INTO :new.ID_DOCUMENTO FROM DOCUMENTO
WHERE COD_PACIENTE= :new.COD_PACIENTE;
ELSE
SELECT 1 INTO :new.ID_DOCUMENTO FROM DUAL;
END IF;
END DOC_INS;
/
CREATE OR REPLACE TRIGGER DOC_TRI
BEFORE INSERT OR UPDATE ON DOCUMENTO
FOR EACH ROW
BEGIN
SELECT SYSDATE INTO :new.DATA_UPD FROM DUAL;
END DOC_TRI;
/
CREATE OR REPLACE TRIGGER "TEL_INS"
BEFORE INSERT ON TELEFONE
FOR EACH ROW
declare
cursor nova_linha is
SELECT * FROM TELEFONE where COD_PACIENTE = :new.COD_PACIENTE ;
achou boolean;
reg_nova_linha nova_linha%ROWTYPE;
BEGIN
SELECT SYSDATE INTO :new.DATA_UPD FROM DUAL;
FOR reg_nova_linha in nova_linha loop
IF (reg_nova_linha.COD_PACIENTE = :new.COD_PACIENTE) THEN
achou :=true;
else
achou :=false;
END IF;
end loop;
IF ACHOU = TRUE THEN
SELECT MAX(ID_TEL)+1 INTO :new.ID_TEL FROM TELEFONE
WHERE COD_PACIENTE= :new.COD_PACIENTE;
ELSE
SELECT 1 INTO :new.ID_TEL FROM DUAL;
END IF;
END TEL_INS;
/
CREATE OR REPLACE TRIGGER TEL_TRI
BEFORE INSERT OR UPDATE ON TELEFONE
FOR EACH ROW
BEGIN
SELECT SYSDATE INTO :new.DATA_UPD FROM DUAL;
END TEL_TRI;
/
CREATE OR REPLACE TRIGGER "END_INS"
BEFORE INSERT ON ENDERECO
FOR EACH ROW
declare
cursor nova_linha is
SELECT * FROM ENDERECO where COD_PACIENTE = :new.COD_PACIENTE ;
95
achou boolean;
reg_nova_linha nova_linha%ROWTYPE;
BEGIN
SELECT SYSDATE INTO :new.DATA_UPD FROM DUAL;
FOR reg_nova_linha in nova_linha loop
IF (reg_nova_linha.COD_PACIENTE = :new.COD_PACIENTE) THEN
achou :=true;
else
achou :=false;
END IF;
end loop;
IF ACHOU = TRUE THEN
SELECT MAX(ID_ENDERECO)+1 INTO :new.ID_ENDERECO FROM ENDERECO
WHERE COD_PACIENTE= :new.COD_PACIENTE;
ELSE
SELECT 1 INTO :new.ID_ENDERECO FROM DUAL;
END IF;
END END_INS;
/
CREATE OR REPLACE TRIGGER END_TRI
BEFORE INSERT OR UPDATE ON ENDERECO
FOR EACH ROW
BEGIN
SELECT SYSDATE INTO :new.DATA_UPD FROM DUAL;
END END_TRI;
/
G Implementao no DB2
CREATE DATABASE PATEND AUTOMATIC STORAGE YES ON 'C:\' DBPATH ON 'C:\'
USING CODESET IBM-1252 TERRITORY BR COLLATE USING SYSTEM PAGESIZE 16384
WITH 'Pronto Atendimento';
CONNECT TO PATEND;
CREATE BUFFERPOOL BPPG32K IMMEDIATE
CONNECT RESET;
CONNECT TO PATEND;
CREATE LARGE TABLESPACE TBS_PACIENTE PAGESIZE 32 K MANAGED BY DATABASE
USING ( FILE 'C:\DB2\tbs_paciente' 640 ) EXTENTSIZE 32 OVERHEAD 10.5
PREFETCHSIZE 32 TRANSFERRATE 0.14 BUFFERPOOL BPPG32K ;
COMMENT ON TABLESPACE TBS_PACIENTE IS 'Contm todas as informaes
referentes aos pacientes';
CREATE LARGE TABLESPACE TBS_CADASTROS PAGESIZE 32 K MANAGED BY DATABASE
USING ( FILE 'C:\DB2\tbs_cadastros' 640 ) EXTENTSIZE 32 OVERHEAD 10.5
PREFETCHSIZE 32 TRANSFERRATE 0.14 BUFFERPOOL BPPG32K ;
COMMENT ON TABLESPACE TBS_CADASTROS IS 'Contm as informaes de
cadastros';
CREATE LARGE TABLESPACE TBS_TRIAGEM_12010 PAGESIZE 32 K MANAGED BY
DATABASE USING ( FILE 'C:\DB2\tbs_triagem_12010' 640 ) EXTENTSIZE 64
OVERHEAD 10.5 PREFETCHSIZE 64 TRANSFERRATE 0.14 BUFFERPOOL BPPG32K ;
96
97
98
NOT NULL ,
99
100
101
102
103
104
LOGRADOURO VARCHAR(60)
,
NUMERO VARCHAR(10)
,
BAIRRO VARCHAR(30)
,
CIDADE VARCHAR(30)
,
CEP VARCHAR(8)
,
ESTADO VARCHAR(2)
,
COMPLEMENTO VARCHAR(30)
,
DATA_UPD TIMESTAMP
,
CONSTRAINT PK_ENDERECO PRIMARY KEY (ID_ENDERECO,COD_PACIENTE),
CONSTRAINT R_2 FOREIGN KEY (COD_PACIENTE) REFERENCES
PATD.PACIENTE(COD_PACIENTE))
IN TBS_PACIENTE INDEX IN TBS_INDEX COMPRESS YES ;
COMMENT ON TABLE PATD.ENDERECO IS 'Define os dados dos endereos dos
paciententes.';
COMMENT ON PATD.ENDERECO
(COD_PACIENTE IS 'Cdigo interno do paciente Referenciado por
Seq_paciente',
LOGRADOURO IS 'Nome do endereo',
NUMERO IS 'numero do endereo',
BAIRRO IS 'bairro do endereo',
CIDADE IS 'cidade do endereo',
CEP IS 'cep do endereo',
ESTADO IS 'estado do endereo',
COMPLEMENTO IS 'complemento do numero do endereo',
ID_ENDERECO IS 'Cdigo primario do endereo Gerado pela trigger END_INS',
DATA_UPD IS 'Data e Hora da ultima alterao no registro');
105
106
107
108
109
110
H Mapa de Terminologia
Arquitetura
ORACLE
DB2
Instance
Instance
Database
Database
Initialization File
Table spaces
Table spaces
Data blocks
Pages
Extents
Extents
Datafiles
DMS containers
PL/SQL
SQL/PL
Memria
ORACLE
Data Buffers
SGA
Data Dictionary
Library Cache
Large Pool
Data Dictionary cache
Library cach
DB2
Buffer Pool
Database Manager and Database shared memory
Catalog
Package Cache
Utility heap
Catalog cach
Package cach
111
Processos
ORACLE
Archiver log (ARCn)
PMON
LGWR
DBWR
Oracle Server process
DB2
db2fmtlg
db2loggr
db2loggw
db2pclnr
db2agent / db2pfchr
Views Dinmicas
ORACLE
DB2
V$INSTANCE
V$DATABASE
V$DATAFILE
V$SESSION
V$SQLTEXT
V$LOCK
V$SYSSTAT
V$SESSION_LONGOPS
V$TABLESPACE
DB2
DBA_TABLESPACES
SYSCAT.TABLESPACES
DBA_DATA_FILES
SYSIBMADM.CONTAINER_UTILIZATION
DBA_TABLES
SYSCAT.TABLES
DBA_TAB_COLUMNS
SYSCAT.COLUMNS
DBA_TAB_PRIVS
SYSCAT.TABAUTH
DBA_INDEXES
SYSCAT.INDEXES
DBA_IND_COLUMNS
SYSCAT.INDEXCOLUSE
DBA_TRIGGERS
SYSCAT.TRIGGERS
DBA_VIEWS
SYSCAT.VIEWS
DBA_SEQUENCES
SYSCAT.SEQUENCES
DBA_PROCEDURES
SYSCAT.ROUTINES
DBA_CONSTRAINTS
SYSCAT.TABCONST
DBA_CONS_COLUMNS
SYSCAT.COLCHECKS
DBA_TAB_PRIVS
SYSIBMADM.PRIVILEGES
112
DB2
CREATE DATABASE DB2_EMP
CATALOG TABLESPACE
MANAGED BY DATABASE
USING (FILE /disk1/syscatspace.dbf 25600);
UPDATE DB CFG FOR DB2_EMP USING
LOGPRIMARY 2;
UPDATE DB CFG FOR DB2_EMP USING
NEWLOGPATH /disk1;
UPDATE DB CFG FOR DB2_EMP USING
MIRRORLOGPATH /disk2;
UPDATE DB CFG FOR DB2_EMP USING
LOGFILSIZ 256;
CREATE REGULAR TABLESPACE
USER_DATA_TBS
MANAGED BY DATABASE
USING (FILE /disk1/user_data_tbs_01.dbf 12800)
EXTENTSIZE 1M
CREATE TABLESPACE
USER_TEMP_TBS
DATAFILE '/disk1/user_temp_tbs_01.dbf'
SIZE 50M
MINIMUM EXTENT 1M TEMPORARY
INSPECT database
RUNSTATS ON TABLE
113
Statements condicionais
ORACLE PL/SQL
IF - THEN - END IF;
IF - THEN - ELSE - END IF;
IF - THEN - ELSIF - END IF;
LOOP
statements;
END LOOP;
WHILE condition LOOP
statements;
END LOOP;
LOOP
statements;
EXIT WHEN condition;
END LOOP;
OPEN cursor_variable FOR
select_statement;
FOR l_count IN
lower_bound ..upper_bound
LOOP
statements;
END LOOP;
CASE expression
WHEN condition_1 THEN result_1
WHEN condition_2 THEN result_2
... WHEN condition_n THEN result_n
ELSE result END
DB2 SQL PL
IF - THEN - END IF;
IF - THEN - ELSE - END IF;
IF - THEN - ELSEIF - END IF;
[L1:] LOOP
statements;
LEAVE L1;
END LOOP [L1];
WHILE condition DO
statements;
END WHILE;
REPEAT
statements;
UNTIL condition;
END REPEAT;
FOR variable AS cursor_name
CURSOR FOR select_statement DO
statements;
END FOR;
Note: If cursor_variable is a REF cursor, DB2 would
define the cursor and open it with RETURN TO
CLIENT/CALLER.
No tem statements correspondente, mas pode ser
feito dessa maneira:
SET l_count = lower_bound;
WHILE l_count <= upper_bound DO
statements;
SET l_count = l_count + 1;
END WHILE ;
CASE expression
WHEN cond_1 THEN statement1
WHEN cond_2 THEN statement2 ...
WHEN cond_n THEN statementN
ELSE statement END
Cursor
OPERATION
Declaring a cursor
Opening a cursor
Fetching from cursor
ORACLE
CURSOR cursor_name
[(cursor_parameter(s))]
IS select_statement;
OPEN cursor_name
[(cursor_parameter(s))];
FETCH cursor_name INTO
variable(s)
UPDATE table_name
SET statement(s)...
WHERE CURRENT OF
cursor_name;
DELETE FROM table_name
WHERE CURRENT OF
cursor_name;
DB2
DECLARE cursor_name
CURSOR [WITH HOLD] [WITH
RETURN] [TO CALLER | TO
CLIENT] FOR
select-statement
OPEN cursor_name
[USING host-variable]
FETCH [from] cursor_name INTO
variable(s)
UPDATE table_name
SET statement(s)...
WHERE CURRENT OF
cursor_name
DELETE FROM table_name
WHERE CURRENT OF
cursor_name
CLOSE cursor_name;
CLOSE cursor_name
114
Cursor attributes
ORACLE
%ISOPEN
%NOTFOUND
%FOUND
%ROWCOUNT
DB2
Ao abrir um cursor, o erro SQLCODE -502 devolvido se o cursor j est
aberto. No FETCH, o erro SQLCODE -501 devolvido se o cursor no est
aberto ainda.
No entanto, em procedures no DB2, voc no ser capaz de testar
qualquer sqlcodes negativo (excees) a menos que estejam dentro de um
manipulador de exceo porque o controle ser retornado ao aplicativo ou
procedure.
Se IsOpen% usado para testar se o cursor est aberto antes de fechar,
ele no ser necessrio pois o DB2 ir fechar o cursor para voc. O
SQLSTATE associados SQLCODE -501 24501. O SQLSTATE
associados SQLCODE -502 24502
if (SQLCODE = 100) or
if SQLSTATE = 02000
if (SQLCODE = 0) or
if SQLSTATE = 00000
Use uma varivel de contador para recuperar o nmero de linhas trazidas
pelo cursor.
Condition handling
ORACLE
EXCEPTION WHEN NO_DATA_FOUND
THEN v_status :=0;
WHEN OTHER THEN v_err_flag :=1;
raise_application_error(error_number,
message[, {TRUE | FALSE}]);
DB2
DECLARE CONTINUE HANDLER FOR NOT
FOUND SET v_status = 0;
DECLARE CONTINUE HANDLER FOR
SQLEXCEPTION SET v_err_flag = 1;
DECLARE EXIT HANDLER FOR SQLEXCEPTION
GET DIAGNOSTICS EXCEPTION 1 out_err_msg =
MESSAGE_TEXT;
Outer join
ORACLE
SELECT A.last_name, A.id,B.name
FROM emp A, Customer B
WHERE A.id (+) = B.sales_rep_id;
SELECT A.last_name, A.id,B.name
FROM emp A, Customer B
WHERE A.id = B.sales_rep_id (+);
SELECT A.last_name, A.id,B.name
FROM emp A, Customer B
WHERE A.id (+) = B.sales_rep_id (+);
DB2
SELECT A.last_name,A.id,B.name
FROM emp A
RIGHT OUTER JOIN customer B
ON A.id = B.sales_rep_id;
SELECT A.last_name,A.id,B.name
FROM emp A
LEFT OUTER JOIN customer B
ON A.id = B.sales_rep_id;
SELECT A.last_name,A.id,B.name
FROM emp A
FULL OUTER JOIN customer B
ON A.id = B.sales_rep_id;
Decode
ORACLE
DECODE (condition, case1, assign1, case2,
assign 2....,default)
DB2
CASE condition WHEN case1 THEN assign 1
WHEN case2 THEN assign 2 ....
ELSE default END
115
Rownum
ORACLE
DB2
DB2
VALUES(CURRENT TIMESTAMP) INTO <variable>
or
select CURRENT TIMESTAMP
from SYSIBM.SYSDUMMY1
DB2
SELECT current timestamp FROM sysibm.sysdummy1;
SELECT current date FROM sysibm.sysdummy1;
SELECT current time FROM sysibm.sysdummy1;
to_char(sysdate,'YYYY-MM-DD')
to_char(sysdate,'MM/DD/YYYY')
add_months(sysdate,16)
Set operations
ORACLE
DB2
UNION
UNION
UNION ALL
UNION ALL
MINUS
EXCEPT
INTERSECT
INTERSECT
116
Table partitioning
ORACLE
CREATE TABLE sales
(
year int,
month int
)
PARTITION BY RANGE (year, month)
(PARTITION p1 VALUES LESS THAN
(2002,4) tablespace tbsp1,
PARTITION p2 VALUES LESS THAN
(2002,7) tablespace tbsp2,
PARTITION p3 VALUES LESS THAN
(2002,10) tablespace tbsp3,
PARTITION p4 VALUES LESS THAN
(2002,13) tablespace tbsp4,
PARTITION p5 VALUES LESS THAN
(2003,4) tablespace tbsp5,
PARTITION p6 VALUES LESS THAN
(2003,7) tablespace tbsp6,
PARTITION p7 VALUES LESS THAN
(2003,10) tablespace tbsp7,
PARTITION p8 VALUES LESS THAN
(MAXVALUE) tablespace tbsp8 );
CREATE TABLE hash_table
(
hash_part date,
hash_data varchar2(20)
)
PARTITION BY HASH(hash_part)
(partition p1 tablespace tbsp1,
partition p2 tablespace tbsp2
);
DB2
CREATE TABLE sales
(
year INT,
month INT
)
IN tbsp1, tbsp2, tbsp3, tbsp4, tbsp5, tbsp6, tbsp7,
tbsp8
PARTITION BY RANGE (year, month)
(STARTING FROM (2001, 1)
ENDING (2001,3) IN tbsp1,
ENDING (2001,6) IN tbsp2,
ENDING (2001,9) IN tbsp3,
ENDING (2001,12) IN tbsp4,
ENDING (2002,3) IN tbsp5,
ENDING (2002,6) IN tbsp6,
ENDING (2002,9) IN tbsp7,
ENDING AT MAXVALUE );
Partitioning methods
Oracle
partitioning
No equivalent
Round robin
None
PARTITION BY
RANGE
Hash partitioning
PARTITION BY HASH
DISTRIBUTE BY HASH
PARTITION BY LIST
PARTITION BY
RANGE,
SUBPARTITION BY
HASH
SUBPARTITION BY
LIST
PARTITION BY RANGE
List partitioning
Composite
partitioning:
hash-range
hash-list
No equivalent
Database partitioning
Table partitioning with
generated column
Combination of:
database partitioning,
table partitioning,
multidimensional
clustering
Multidimensional
clustering
None
DISTRIBUTE BY HASH
PARTITION BY RANGE
ORGANIZE BY
DIMENSIONS
ORGANIZE BY
DIMENSIONS
117
MERGE
Oracle
DB2
MERGE INTO products pd
USING (SELECT prod_no, description, quantity
FROM stage_table) st
ON (pd.prod_no = st.prod_no)
MERGE INTO products pd
WHEN MATCHED THEN
USING (SELECT prod_no, description,
UPDATE SET
quantity
pd.quantity = pd.quantity + st.quantity
FROM stage_table) st
WHEN NOT MATCHED THEN
INSERT (prod_no, description, quantity)
ON (pd.prod_no = st.prod_no)
VALUES (st.prod_no, st.description, st.quantity)
WHEN MATCHED THEN
UPDATE SET pd.quantity = pd.quantity + DELETE FROM products pr WHERE pr.prod_no IN
(SELECT pd.prod_no FROM
st.quantity
DELETE WHERE pd.quantity > 15
products pd INNER JOIN stage_table st ON
WHEN NOT MATCHED THEN
(pd.prod_no = s
t.prod_no) WHERE (pd.quantity + st.quantity) > 15 AND
INSERT (prod_no, description, quantity)
pd.quantity <>
VALUES (st.prod_no, st.description,
st.quantity )
st.quantity);
DB2
Lock mode
Isolation level
Backup
Oracle
DB2
Offline
Online
Incremental
Delta