Vous êtes sur la page 1sur 117

FACULDADE DE INFORMTICA E ADMINISTRAO

PAULISTA
Ps-Graduao Administrao de Banco de Dados Oracle

PATRICIA CRISTINA BERNINI


RITA DE CASSIA DA SILVA
WILLIAM JOSE PEIXOTO

Diferenas e Semelhanas entre os Bancos de dados


relacionais Oracle e DB2 em um estudo de caso: Recepo
de um paciente em um Pronto Atendimento.

So Paulo
2010

PATRICIA CRISTINA BERNINI


RITA DE CASSIA DA SILVA
WILLIAM JOSE PEIXOTO

Diferenas e Semelhanas entre os Bancos de dados


relacionais Oracle e DB2 em um estudo de caso: Recepo
de um paciente em um Pronto Atendimento.

Trabalho de Concluso de Curso


apresentado Faculdade de
Informtica
e
Administrao
Paulista, como um dos requisitos
para a concluso do Curso de PsGraduao em Administrao de
banco de dados Oracle.
Orientador: Prof.().
Claudia Cantele
So Paulo
2010

Dr.

Regina

PATRICIA CRISTINA BERNINI


RITA DE CASSIA DA SILVA
WILLIAM JOSE PEIXOTO
Diferenas e semelhanas entre os bancos de dados
relacionais Oracle e DB2 em um estudo de caso: Recepo
de um paciente em um pronto atendimento.
Trabalho de Concluso de Curso
apresentado Faculdade de
Informtica
e
Administrao
Paulista, como um dos requisitos
para a concluso do Curso de PsGraduao em Administrao de
Banco de Dados Oracle.

Aprovada em

de

de 2010.

BANCA EXAMINADORA

Prof(). Dr. Regina Claudia Cantele


Orientador

Componente da Banca

Componente da Banca

ii

Dedicatria: Dedicamos a Deus que nos deu a


oportunidade de estudar sobre um assunto que
podemos contribuir para a humanidade.

iii

AGRADECIMENTOS

Agradecemos aos nossos mestres que de


todas as formas nos motivou e nos ensinou
tudo o que eles sabem, e que nas horas em
que tivemos mais dificuldades em entender
sobre

assuntos

discutidos,

eles

tentaram

passar toda a sabedoria e conhecimento


profundo sobre o assunto da melhor forma
possvel, e com certeza eles conseguiram com
que ns absorvssemos um pouco da sua
sabedoria.

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.

Palavras-chave: Banco de dados, Oracle, DB2

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.

Keywords: Database, Oracle. DB2.

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

DCL Linguagem de controle de dados do ingls Data Control Language.


DML - Linguagem de manipulao de dados - do ingls Data Manipulation.
SGBD - Sistema Gestor de Base de Dados.
SGA System global area

ii

SUMRIO
INTRODUO .................................................................................................................. 13
1.

SISTEMA GERENCIADOR DE BANCO DE DADOS........................................... 15

1.1.

Arquitetura SGBD................................................................................................ 17

1.1.1.

ORACLE............................................................................................................. 17

1.1.1.1. Estruturas de armazenamento fsico...........................................................................18


1.1.1.2. Arquivos de parmetro de inicializao......................................................................18
1.1.1.3. Arquivo de controle ........................................................................................................19
1.1.1.4. Arquivos de redo log ......................................................................................................19
1.1.1.5. Arquivos de dados..........................................................................................................19
1.1.1.6. Estruturas de memria - SGA .......................................................................................19
1.1.1.6.1.
Database Buffer Cache ..............................................................................................20
1.1.1.6.2.
Shared Pool.............................................................................................................20
1.1.1.6.3.
Redo Log Buffer .....................................................................................................20
1.1.1.6.4.
Stream Pool.............................................................................................................20
1.1.1.7. Program Global Area..................................................................................................21
1.1.1.8. Processos em segundo plano..................................................................................21
1.1.1.9. Database Writer (DBWR) ...........................................................................................21
1.1.1.10.
Log Writer (LGWR).................................................................................................22
1.1.1.11.
System Monitor.......................................................................................................22
1.1.1.12.
Process Monitor .....................................................................................................23
1.1.1.13.
Arcn ..........................................................................................................................23
1.1.1.14.
RECO ........................................................................................................................23
1.1.1.15.
Estruturas de armazenamento lgico ................................................................23
1.1.1.15.1. Tablespaces ............................................................................................................24
1.1.1.15.2. Blocos ......................................................................................................................24
1.1.1.15.3. Extenses ................................................................................................................24
1.1.1.15.4. Segmentos...............................................................................................................24
1.1.1.15.5. Schema Objects......................................................................................................25
1.1.1.15.6. Objects .....................................................................................................................25
1.1.1.15.7. Tabelas.....................................................................................................................25
1.1.1.15.8. Tabelas relacionais ................................................................................................25
1.1.1.15.9. Tabelas organizadas por ndice...........................................................................26
1.1.1.15.10. Tabelas de objeto .................................................................................................26
1.1.1.15.11. Tabelas clusterizadas ..........................................................................................26
1.1.1.15.12. Tabelas particionadas .........................................................................................27
1.1.1.16.
Views ........................................................................................................................27
1.1.1.16.1. Vises de dicionrio de dados ............................................................................28
1.1.1.16.2. Vises de desempenho dinmico .......................................................................29
1.1.1.17.
Sequences ...............................................................................................................29
1.1.1.18.
Sinonimos................................................................................................................29
1.1.1.19.
ndices......................................................................................................................29
1.1.1.20.
Usurios/Esquemas...............................................................................................30

1.1.2.

DB2 UDB ...................................................................................................................30

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.

Estruturas de armazenamento fsico ......................................................................31


Arquivos de parmetro de inicializao .................................................................32
Arquivos de log transacional....................................................................................33
Arquivos de dados .....................................................................................................33
Estruturas de memria ..............................................................................................33
Instance shared memory ......................................................................................33
Database shared memory.....................................................................................34
Application shared memory .................................................................................34
Buffer Pool...............................................................................................................35
Processos em segundo plano..................................................................................35

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.

ESTUDO DE CASO .................................................................................................. 45

2.1.

Local de Estudo ................................................................................................... 45

2.2.

Pronto Atendimento............................................................................................ 45

2.3.

Fluxo de Atendimento ........................................................................................ 46

2.4.

Fluxo de Triagem................................................................................................. 47

2.5.

Fluxo de Consulta ............................................................................................... 47

2.5.1.

Solicitao de Exames ...........................................................................................47

2.5.2.

Solicitao de Medicao......................................................................................48

2.6.

Fluxo de Internao ............................................................................................ 48

2.7.

Estudo de Caso Aplicado .................................................................................. 48

3.

METODOLOGIA........................................................................................................ 49

3.1.

Modelagem de Dados ......................................................................................... 49

3.2.

Modelo conceitual ............................................................................................... 49

3.3.

Modelo Lgico...................................................................................................... 50

3.4.

Modelo Fsico ....................................................................................................... 50

3.5.

Modelo Proposto ................................................................................................. 50

3.5.1.

Dicionrio de dados ........................................................................................ 50

3.6.

Objetos utilizados no desenvolvimento ......................................................... 51

3.7.

Implementao no Oracle .................................................................................. 51

3.8.

Implementao no DB2 ...................................................................................... 51

3.9.

Mapa de terminologia ......................................................................................... 51

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

Imagine-se fazendo um agradvel passeio de avio a uma altura de 12.000 ps


3.700 metros de repente a porta do avio se abre e voc obrigado a saltar,
durante interminveis 45 segundos e a uma velocidade de 200km/h a queda livre,
nada te segura, e ento como em um passe de mgica seu pra-quedas se abrem e
voc chega ao solo em segurana.
Quando nos deparamos com situaes inesperadas em nosso ambiente de trabalho
temos essa mesma sensao, de estarmos caindo em queda livre, mas sempre
temos que se lembrar do pra-quedas que nos levam ao solo em segurana.
Fica ento a pergunta, um profissional de banco de dados Oracle se adapta
facilmente ao banco de dados IBM DB2?
Para que as primeiras costuras desse pra-quedas fiquem bem feitas vamos
analisar um estudo de caso informatizando a recepo de um pronto atendimento,
criando desde a modelagem at a implantao efetiva das bases Oracle e DB2,
iremos tambm fazer analogia sobre algumas estruturas como a criao de
tablespaces, tabelas, views mostrando o que h de diferente e de semelhante
nesses dois grandes gerenciadores de banco de dados.
A tecnologia utilizada nos bancos de dados relacionais foi introduzida por Codd e
hoje usada em larga escala. Este estudo dedica-se a estudar dois dos precursores
na implementao desta teoria que o Oracle e o DB2 ambos possuem uma
arquitetura lgica bastante semelhante que formada por uma instncia que
consiste em uma estrutura de memria juntamente com processos de segundo plano
que so usados para gerenciar o banco de dados e a arquitetura fsica formada
por arquivos de dados.
O objetivo principal deste trabalho elaborar uma analogia entre os RDBMS DB2 e
Oracle, atravs de um modelo de dados que est baseado em um sistema de pronto
atendimento, a fim de criar subsdios para que um profissional de bancos sinta-se
embasado para realizar as tarefas relacionadas aos comandos DCL, DDL e DML e

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

1. SISTEMA GERENCIADOR DE BANCO DE DADOS


Um sistema gerenciador de banco de dados SGBD um sistema que permite o
armazenamento, manuteno, manipulao e apresentao de dados, preservando
sua integridade e assegurando sua segurana. (RODRIGEZ; FERRANTE, 2000)
O conceito de banco de dados relacional relativamente novo no mercado, at 1970
havia somente o modelo hierrquico e o modelo em redes.
Os modelos de dados que precedem o modelo relacional compreendem os modelos
hierrquicos e de rede. (ELMASRI; NAVATHE, 2005)
O modelo hierrquico foi o primeiro a ser reconhecido como um modelo de dados e
tem como caracterstica os dados estruturados em hierarquias ou arvores.
O Modelo Hierrquico surgiu na dcada de sessenta. Organizava dados em uma
estrutura hierrquica - uma estrutura em rvore - com sentido de acesso
unidirecional, do pai para o filho sempre comeando pela "Raiz". Ou seja, este tipo
de banco de dados constitui-se de uma coleo de registros conectados uns aos
outros por links. (KORTH; SILBERSCHATZ, 2001)
O modelo em redes surgiu como uma extenso ao modelo hierrquico, eliminando o
conceito de hierarquia e permitindo que um mesmo registro estivesse envolvido em
vrias associaes.
No modelo em rede os dados so representados por colees de registros, e os
relacionamentos entre os dados so representados por elos, que podem ser vistos
como ponteiros. Os registros no banco de dados so organizados como colees de
grficos arbitrrios. (OLIVEIRA; FERNANDES; TAVEIRA, 2000)
Um banco de dados relacional um conjunto de dados armazenados em tabelas
relacionadas entre si. (FERRARI, 2008)
O modelo relacional surgiu em 1970 com uma pesquisa de um funcionrio da IBM,
Dr. Edgar Frank Codd, A Relational Model of Data for Shared Data Banks, este

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

1.1. Arquitetura SGBD


1.1.1. ORACLE
O servidor Oracle consiste em uma Instncia Oracle (Oracle Instance) e Arquivos do
Banco de Dados (Database Files).
Uma instncia um grande bloco de memria alocado, a SGA (System Global
Area), juntamente com processos em background que interagem entre a SGA e o
banco de dados.
Um banco de dados uma coleo de dados em disco. No Oracle, esses dados
podem estar em um ou mais arquivos de dados no servidor de banco de dados.
Alm dos arquivos de dados, o banco de dados composto de outros dois tipos de
arquivos: o arquivo de controle e o arquivo de redo log. O arquivo de controle
essencial para o funcionamento da base de dados, ele continuamente escrito e
contm metadados sobre a base e seu status atual. Os arquivos de redo log so
indispensveis para a recuperao da base em caso de falha, pois neles so
guardados os histricos das operaes na base de dados.

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 .

Figura 1 Arquitetura Oracle e seus componentes

18

1.1.1.1. Estruturas de armazenamento fsico


O banco de dados Oracle formado por algumas estruturas de armazenamento
fsico no disco. Esta estrutura de arquivos pode ser dividida em dois grupos, o
primeiro grupo armazena arquivos com informaes do prprio banco de dados
como o caso do Control File e o segundo grupo armazena os arquivos com
informaes dos usurios que so os arquivos de Redo Log e os arquivos de banco
de dados.

Figura 2 Estrutura de armazenamento fsico

1.1.1.2. Arquivos de parmetro de inicializao


O processo de inicializao do servidor Oracle acontece a partir da leitura do arquivo
de parmetro, existem dois tipos de arquivos de parmetro um chamado de PFILE
que um arquivo de editado facilmente por qualquer editor de texto podendo alterar
os parmetros manualmente e o outro arquivo chamado de SPFILE este arquivo
foi introduzido verso Oracle9i. este um arquivo binrio e no deve ser alterado por
qualquer editor de texto e toda mudana nos parmetros feita por comandos do
prprio Oracle.

19

1.1.1.3. Arquivo de controle


O arquivo de controle, como dito, onde so mantidos os metadados para manter e
verificar a integridade do banco de dados. Por exemplo, o arquivo de controle
utilizado para identificar os arquivos de dados e os arquivos de redolog. Um banco
de dados Oracle deve possuir no mnimo um arquivo de controle

1.1.1.4. Arquivos de redo log


Os arquivos de log de redo so utilizados para armazenar um histrico de
transaes que modificam a base de dados. Todas as modificaes que ocorrem na
base primeiramente so registradas no buffer de redo log e posteriormente nos
arquivos de log de redo.
Cada banco de dados gerenciados pelo Oracle deve possuir pelo menos dois
arquivos de log de redo pelo fato do Oracle utiliz-los de maneira circular.

1.1.1.5. Arquivos de dados


So nos arquivos de dados onde ficam armazenadas as tabelas, ndices, dados
temporrios, dicionrio de dados, entre outros. Cada base de dados deve possuir
pelo menos um arquivo de dados, cada arquivo de dados corresponde a somente
um tablespace. Porm, um espao de tabela pode conter mais de um arquivo de
dados.

1.1.1.6. Estruturas de memria - SGA


A SGA constitui o componente principal de memria do Oracle.

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

1.1.1.6.1. Database Buffer Cache


nessa parte da memria que ficam armazenados os blocos dos dados recm lidos
do disco que foram solicitados por uma instruo de select ou os dados que foram
recm modificados pelo usurio.
O tamanho dessa rea de memria pode ser alterado no arquivo de inicializao
atravs do parmetro DB_CACHE_SIZE;

1.1.1.6.2. Shared Pool


O shared pool constitudo de vrias partes, as principais so o library cache e o
dictionary cache. O library cache utilizado para armazenar os cdigos
recentemente executados. O dictionary cache guarda informaes dos objetos
recentemente utilizados.
O tamanho desta rea de memria dimensionado pelo parmetro de inicializao
SHARED_POOL_SIZE.

1.1.1.6.3. Redo Log Buffer


Este buffer a rea de armazenamento do histrico. Qualquer operao de
modificao na base registrada. Esses registros das operaes so mantidos em
memria at que eles sejam escritos nos arquivos de log;

1.1.1.6.4. Stream Pool


Contm estruturas de dados e controle que do suporte ao recurso Oracle Streams.
Esse recurso gerencia, em um ambiente distribudo, o compartilhamento de dados; e

21

1.1.1.7. Program Global Area


A PGA uma rea de memria alocada e privada para um processo. a rea de
memria dos usurios do banco de dados Oracle. Faz parte da PGA, tambm, a
rea de classificao. A rea de classificao utilizada sempre que uma solicitao
de usurio exigir uma operao de ordenao, mesclagem de mapa de bits, ou
juno de hash.

1.1.1.8. Processos em segundo plano


Quando uma instncia colocada no ar, vrios processos que rodam em
background so iniciados. So eles:

1.1.1.9. Database Writer (DBWR)


Escreve os blocos modificados do cache database buffer para os arquivos de dados
fsicos. O DBWR no precisa escrever os dados a cada comando COMMIT, pois
otimizado para minimizar o E/S.
Geralmente o DBWR escreve os dados para o disco se muitos dados so lidos para
o cache do database buffer na SGA e no existe espao livre para esses novos
dados. Os dados menos recentemente usados so escritos para os arquivos de
dados em primeiro lugar;

22

1.1.1.10.

Log Writer (LGWR)

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

Este processo efetua a recuperao da instncia em caso de falhas, durante a sua


inicializao. Em um sistema com mltiplas instncias (como na configurao Oracle
Parallel Server [OPS], por exemplo), o processo SMON de uma instncia tambm
pode executar a recuperao de outras instncias que podem ter falhado. Ele
tambm limpa os segmentos temporrios que no esto sendo usados, liberando
memria, e recupera qualquer transao pendente no caso de uma falha em
arquivos fsicos ou mesmo no disco. O processo de recuperao dessas transaes
executado pelo processo SMON quando a tablespace afetada volta a ficar
disponvel;

23

1.1.1.12.

Process Monitor

O process monitor (PMON) executa a recuperao do processo de um usurio


quando esse processo falha. Ele limpa a rea de memria e libera os recursos que o
processo do usurio estava usando. O PMON tambm verifica o processo
despachante (dispatcher) e os processos servidores (server processes) e os
reinicializa se tiver acontecido qualquer falha;

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

O processo recoverer (RECO) usado para resolver transaes distribudas


pendentes causadas por uma falha na rede em um sistema de bancos de dados
distribudos. A certos intervalos de tempo, o processo RECO do banco de dados
local tenta conectar-se ao banco de dados remoto para automaticamente completar
e efetivar a transao (COMMIT) ou descartar (ROLLBACK) a poro local de uma
transao pendente em um sistema distribudo.

1.1.1.15.

Estruturas de armazenamento lgico

Segundo [MOR95], seguem as principais estruturas lgicas de um banco de dados


ORACLE:

24

1.1.1.15.1.

Tablespaces

So unidades lgicas de armazenamento dos dados usadas para agrupar outras


estruturas lgicas relacionadas entre si. Um ou mais arquivos de dados so criados
explicitamente para cada tablespace, isto , cada tablespace formada por um ou
mais arquivos no sistema operacional, chamados de data files, armazenados em
disco. As tablespaces so utilizadas para controlar a alocao do espao em disco
para os dados de um banco de dados, assinalar quotas especficas de espao para
os usurios, controlar a disponibilidade dos dados, executar operaes parciais de
cpia e recuperao de um banco de dados, e alocar o armazenamento dos dados
entre diferentes dispositivos para melhorar a performance de um banco de dados;

1.1.1.15.2.

Blocos

Os blocos so as menores unidades de armazenamento de um banco de dados no


Oracle 10g. O tamanho medido em bytes e especificado no parmetro de
inicializao DB_BLOCK_SIZE. O tamanho do bloco deve ser um mltiplo do
tamanho de bloco do sistema operacional para que as operaes de E/S ocorram de
modo eficiente.

1.1.1.15.3.

Extenses

A extenso est um nvel acima na hierarquia dos agrupamentos lgicos no banco


de dados no Oracle10g. A extenso consiste de um ou mais blocos alocados a um
tipo de objeto especfico (tabela ou ndice).

1.1.1.15.4.

Segmentos

Os segmentos so o nvel imediatamente superior s extenses, usados para


armazenar

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

Um esquema uma coleo de objetos ligados identificao nica de um usurio


em um banco de dados, ou seja, o local onde so armazenados os objetos de um
determinado usurio;

1.1.1.15.6.

Objects

Os objetos so todos os tipos de estruturas lgicas que referenciam diretamente os


dados de um banco de dados, tais como, tabelas, vises, seqncias, sinnimos,
ndices, clusters entre outros;

1.1.1.15.7.

Tabelas

A tabela a unidade mais bsica de armazenamento. Independentemente de seu


tipo, seus dados sero armazenados em linhas e colunas.
Abaixo so listados alguns tipos de tabelas encontrados no Oracle:

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.

Tabelas organizadas por ndice

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

As tabelas de objeto so uma estratgia OO (object-oriented orientada a objeto)


para banco de dados. As suas linhas contm objetos ou instanciaes de tipos
definidos pelo usurio. As linhas de uma tabela de objetos podem ser recuperadas
pelo seu OID (object id identificador do objeto);

1.1.1.15.11.

Tabelas clusterizadas

As tabelas clusterizadas podem ser uma estratgia para maximizar o desempenho


de consultas que fazem referncia a duas ou mais tabelas que freqentemente so
acessadas

juntas.

Tome-se

como

exemplo

duas

tabelas:

empregados

departamentos que possuem a coluna id_departamento em comum, ao criar as


tabelas, o Oracle armazenar seus blocos de forma separada. Clusterizando, o
Oracle rene os dados nos mesmos blocos tendo como chave de juno uma coluna
em comum denominada CLUSTER KEY.
Os benefcios so listados abaixo:


Reduo de E/S;

Diminuio do tempo de acesso s tabelas clusterizadas; e

Menor custo e plano de execuo de SQL.

27

Na clusterizao, o valor de cluster key (coluna de juno das tabelas clusterizadas)


armazenado apenas uma vez independentemente do nmero de linhas que
contenham o mesmo valor de juno. Com isso necessrio menor armazenamento
de dados relacionados de uma tabela e ndice, o que no acontece em tabelas no
clusterizadas.

1.1.1.15.12.

Tabelas particionadas

A melhor prtica a ser adotada em tabelas grandes (maiores que 2GB) o


particionamento. Uma tabela pode ser particionada ou subparticionada em n partes
menores. Particionar uma tabela traz uma melhoria no desempenho das consultas
sobre essa tabela, alm de tornar o seu gerenciamento mais fcil. Isso traz um
grande benefcio ao DBA. Se uma partio de uma tabela estiver em um volume de
disco corrompido, as outras parties ainda estaro disponveis para consulta
enquanto esse volume reparado. Cada linha em uma tabela particionada existe em
somente uma partio. O que determina em que partio essa linha ser encontrada
ou adicionada o que se chama de chave de partio. As parties dividem-se em
trs tipos: parties por intervalo, nas quais ocorre uma diviso em intervalos para
os possveis valores das chaves, por lista na qual os valores das chaves so
distribudos em grupos de valores distintos. e por hash na qual as linhas so
distribudas equilibradamente entres as parties com base em uma funo de
hashing.

1.1.1.16.

Views

As vises so uma forma de se apresentar os dados de uma tabela ou de uma


juno delas. As consultas subjacentes, necessrias para a apresentao dos dados
so transparentes para os usurios dessa viso.
Em uma viso regular, onde no ocorre o armazenamento de dados, essa consulta
subjacente executada toda vez que a viso acessada. Uma extenso viso
regular a viso materializada, na qual ocorre o armazenamento dos dados. Esse
tipo de viso traz o benefcio de um menor tempo de resposta para consulta sobre
os seus dados, j que a consulta subjacente no executada durante o acesso a
viso.

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.

Vises de dicionrio de dados

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

Mostra os nomes e informaes de


armazenamento fsico sobre todas as tabelas do
banco de dados
DBA_USERS
Mostra informaes sobre todos os usurios do
banco de dados
DBA_VIEWS
Mostra informaes sobre todas as vises do
banco de dados
DBA_TAB_COLUMNS
Mostra todos os nome e tipos das colunas das
tabelas do banco de dados
Quadro 1 vises de dicionrio de dados Oracle

29

1.1.1.16.2.

Vises de desempenho dinmico

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.

Contm informaes sobre o prprio banco de dados.


Mostra quais componentes opcionais esto instalados
no banco de dados.
Mostra informaes sobre as instrues SQL dos
usurios.
Quadro 2 Vises de desempenho dinmico Oracle

Sequences

As seqncias so objetos do banco de dados que fornecem nmeros seqenciais.


Elas so teis para gerar valores de chave exclusiva para entrada de colunas do tipo
numrico, onde a entrada deve ser nica ou uma seqncia numrica;

1.1.1.18.

Sinonimos

Um sinnimo um apelido para um objeto do banco de dados. Os sinnimos podem


ser pblicos quando acessados por todos os usurios de um banco de dados, ou
privados quando criado por um usurio e somente est disponvel a este usurio;

1.1.1.19.

ndices

Os ndices so estruturas que possibilitam o acesso mais rpido a uma informao,


melhorando a performance de acesso aos dados e podendo tambm garantir a
unicidade dos valores armazenados nas colunas que os compem . So criados a
partir de uma ou mais colunas de uma tabela.

30

1.1.1.20.

Usurios/Esquemas

O usurio a pessoa que tem acesso ao SGBD Oracle. Quando um usurio


criado, ele no possui nenhum objeto. Entretanto, assim que os usurios criem os
objetos eles faro parte de um esquema que ter o mesmo nome do usurio.
Um esquema pode possuir qualquer tipo de objeto no banco de dados. O
proprietrio do esquema ou o DBA poder conceder acessos a esses objetos a
outros usurios no banco de dados.
O acesso ao banco de dados por parte do usurio somente garantido se esse for
autenticado. Existem trs mtodos de autenticao disponvel no Oracle 10g:
autenticao de banco de dados, autenticao de sistema operacional e
autenticao de rede. Essa ltima baseada em um soluo conhecida como Public
Key Infrastructure e, para que esse servio esteja disponvel, o Oracle Advanced
Security [OSECURITY] deve estar instalado.

1.1.2. DB2 UDB


O DB2 Universal Database um sistema de gerenciamento de banco de dados
relacional que utiliza instrues SQL em sua administrao e na manipulao de
dados. O sistema o objeto de mais alto nvel que pode conter uma ou mais
instancias e um ou mais bancos de dados. Uma instancia um ambiente
independente, onde os objetos de um banco de dados so criados, e mais de uma
instancia pode ser criada no mesmo servidor.(IBM, 2002)(Ferrari, 2008)
O banco de dados contm, alm de dados, uma descrio de sua prpria estrutura.
Ele inclui um conjunto de tabelas de catlogos do sistema, que descrevem a
estrutura lgica e fsica dos dados; um arquivo de configurao que contm os
valores de parmetros associados ao banco de dados e um log de recuperao, que
registra transaes contnuas e transaes que podem ser arquivadas. (IBM, 2002)

31

Figura 3 - Arquitetura DB2 mostrando uma nica instncia

1.1.2.1. Estruturas de armazenamento fsico


A estrutura fsica do banco de dados do DB2 UDB inclui os containers DMS, os
containers SMS, os arquivo de configurao DBM CFG, os arquivos de configurao
DB CFG, os arquivos dos logs de transaes, e o arquivo de log db2diag.log, que
como o arquivo de log do Oracle Alert. (Chen, 2007)

32

Figura 4 Instancia DB2 e arquivos

1.1.2.2. Arquivos de parmetro de inicializao


H dois arquivos de controle e ajuste de configurao do servidor de banco de
dados DB2. O primeiro arquivo usado para configurar e ajustar o servidor DB2 no
nvel de instncia chamado de Database Manager Configuration DBM CFG, e
pode ser comparado ao pfile do Oracle. O segundo um arquivo de configurao
chamado Database Configuration - DB CFG - usado para controlar parmetros de
nvel de banco de dados. (Chen, 2007)

33

1.1.2.3. Arquivos de log transacional


Os arquivos de log transacional contm todas as modificaes que ocorreram no
banco de dados. um parte importante na recuperao e performance do banco de
dados. (IBM, 2001)

1.1.2.4. Arquivos de dados


O espao fsico dentro de um banco de dados organizado em uma coleo de
espaos de tabelas. Cada espao de tabela consiste em um conjunto de containers,
cada um dos quais ou um diretrio no sistema de arquivos, um arquivo fsico, ou
um raw device. Quando uma tabela criada, atribuda a um espao de tabelas.
(Chen, 2005)

1.1.2.5. Estruturas de memria


O DB2 UDB trabalha com trs estruturas principais de memria: Instance Shared
Memory, Database Shared Memory e Application Shared Memory. (Chen,2007)

1.1.2.5.1. Instance shared memory


A Instance Shared Memory alocada quando a instncia iniciada. Todas as outras
memrias so anexadas ou atribudas a partir desta, controlada pelo parmetro
INSTANCE_MEMORY do DBM CFG. (Chen, 2007)

34

1.1.2.5.2. Database shared memory


A Database Shared Memory alocada quando o banco ativado ou na primeira
conexo. Esta memria compartilhada por todas as aplicaes que se conectam
no banco, controlada pelo parmetro DATABASE_MEMORY do DB CFG. (Chen,
2007)
A memria alocada para o processo de banco de dados inclui:

Buffer pools - equivalente ao Data Buffers no Oracle

Lock list

Database heap (inclui log buffer)

Utility heap - equivalente ao Large Pool no Oracle

Package cache equivalente ao library cache no Oracle

Catalog cache - equivalente ao data dictionary cache no Oracle

1.1.2.5.3. Application shared memory


A Application Shared Memory alocada quando as aplicaes conectam no banco
de dados. Esta memria usada pelos agentes de conexo para executar os
trabalhos requisitados pelos clients. O parmetro MAX_CONNECTIONS do arquivo
de configurao DBM CFG limita o numero mximo de conexes com o banco de
dados (Chen, 2007)

35

1.1.2.5.4. Buffer Pool


Buffer pool uma rea de memria na qual as pginas do banco de dados so lidas,
modificadas e mantidas durante o processamento. Os conjuntos de buffers
melhoram o desempenho do banco de dados. Se uma pgina de dados necessria
j estiver no conjunto de buffers, essa pgina ser acessada mais rapidamente do
que se tivesse de ser lida diretamente do disco. O gerenciador de banco de dados
tem agentes cujas tarefas so recuperar pginas de dados do disco e coloc-las no
conjunto de buffers (mecanismos de busca antecipada), e gravar pginas de dados
modificadas do conjunto de buffers de volta para o disco (limpadores de pginas).
(IBM, 2002)

1.1.2.6. Processos em segundo plano


Existem vrios processos em segundo plano dedicados ao funcionamento da
instncia do DB2 UDB. Alguns processos so iniciados quando a instancia
iniciada, e outros so iniciados quando o banco de dados ativado por uma
conexo. (Chen, 2007)

1.1.2.6.1. Instance level processes


Os seguintes processos em Segundo plano so iniciados quando a instancia do DB2
iniciada com o comando db2start:

DB2 daemon spawner (db2gds) - Este o processo daemon global iniciado


para cada instncia. Ele comea todos os EDUS no UNIX.

DB2 system controller (db2sysc) - Este o processo controlador do


sistema, o processo principal. Sem ele a instncia no funciona.

DB2 watchdog (db2wdog) - Esse processo exigido apenas em plataformas


UNIX. o processo pai de todos os processos.

DB2 format log (db2fmtlg) Esse processo pr-aloca os arquivos de log


transacional quando o parmetro LOGRETAIN esta habilitado e o parmetro

36

USEREXIT esta desabilitado. similar ao processo Archiver log (ARCn) no


Oracle quando o banco esta setado em modo ARCHIVELOG.

DB2 system logger (db2syslog) - Este o processo de registros do sistema


responsvel por escrever o log de erro do sistema operacional. (Chen,2007)

1.1.2.6.2. Database level processes


Os seguintes processos em Segundo plano so iniciados quando uma conexo com
o banco de dados estabelecida:

DB2 log reader (db2loggr) Esse processo l os arquivos de log durante um


processo de rollback de transaes, restart recovery e operaes de
rollforward. o mesmo que o processo PMON do Oracle faz.

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.

DB2 page cleaner (db2pclnr) Este o processo responsvel por mover os


dados do conjunto de buffers de volta para o disco, ele assegura que exista
espao no conjunto de buffers para as pginas recuperadas pelos prbuscas. equivalente ao processo DBWR no Oracle.

DB2 prefetcher (db2pfchr) - Este processo recupera dados do disco e move


para o buffer antes da aplicao precisar dos dados. Faz parte das funes
do Oracle Server process.

DB2 deadlock detector (db2dlock) - Este o processo detector de


deadlock. Este processo verifica a lista de bloqueio e olha para conexes com
impasse. (Chen,2007)

37

1.1.2.6.3. Application level processes


Os seguintes processos so iniciados quando a aplicao conecta no banco de
dados:

DB2 communication manager (db2ipccm) Este o processo de


comunicao interna, iniciados por cada aplicao conectada localmente.
Este processo se comunica com o agente de coordenao para realizar as
tarefas do banco de dados. Ele pode ser pensando como um processo de
usurio do Oracle conectado localmente.

DB2 TCP manager (db2tcpcm) - Este o processo de gerente de


comunicao TCP. Este processo iniciado quando o cliente remoto ou
aplicao se conecta ao banco de dados com comunicao TCP/IP. Este
processo se comunica com o agente de coordenao para executar tarefas
de banco de dados. equivalente a um processo de usurio no Oracle.

DB2 coordinating agent (db2agent) - Este processo trata as solicitaes de


aplicativos ou conexes e executa todos os pedidos ao banco de dados em
nome da aplicao.

DB2 subagent (db2agnta) - Esta um subagente ocioso, que trabalha com o


processo db2agent quando uma partio intra-paralela est ativada.

Active subagent (db2agntp) - Este o subagente ativo que est atualmente


executando o trabalho. Este processo usado quando o paralelismo SMP esta
ativado, o que significa ter mais processos para alcanar a mesma tarefa. (Chen,
2007)

1.1.2.7. Estruturas de armazenamento lgico


1.1.2.7.1. Tablespaces
Tablespaces so interfaces lgicas entre as tabelas lgicas e a memria fsica do
sistema (buffer pool) e os containers (discos).
Existem trs tipos de tablespaces:

Regular: So utilizadas para tabelas de usurio.

38

Grande (Large): So utilizadas, opcionalmente, para separar dados LOB em


seus prprios tablespaces. Tambm utilizada para armazenar dados XML.
Este tipo de tablespace default.

Temporria: Existem dois tipos de tablespaces temporrias:


o

System temporary:

So

utilizadas

pelo

DB2

para

operaes internas, como as ordenaes.


o

User temporary: So utilizadas para criar tabelas User

Defined Global Temporary (tabelas temporrias em memria). So


geralmente confundidas com tablespaces temporrias do sistema.
As tablespaces podem ser classificadas de acordo com a maneira como elas so
gerenciadas.
Gerenciadas pelo Sistema: Este tipo de tablespace conhecida System Managed
Storage (SMS). Neste caso, o sistema operacional gerenciar o armazenamento.
Gerenciadas pela base de dados: Este tipo de tablespace conhecida como
Database

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

O tamanho da pgina e do extent so definidos quando trabalhamos com buffer


pools e tablespaces. (IBM, 2002)

1.1.2.7.4. Esquema
Esquemas so name spaces para uma coleo de objetos da base de dados. Eles
so usados para:

Indicar o responsvel por um objeto ou relacionamento com uma aplicao

Agrupar os objetos relacionados juntos

Todos os objetos da base de dados DB2 possuem um nome qualificado dividido em


duas partes, sendo o esquema a primeira parte dele:
<esquema_name>.<object_name>
O nome qualificado do objeto deve ser nico. Ao conectar em uma base de dados e
criar ou referenciar um objeto sem especificar o esquema, o DB2 assumir o ID do
usurio conectado na base de dados como nome do esquema. (IBM, 2002)

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:

1.1.2.7.5.1. Regular Tables


Esse o tipo mais comum de tabela no DB2, ela criada com a instruo SQL
CREATE TABLE. A tabela e os seus dados so persistentes. Todos os programas e
os usurios que se referem a este tipo de tabela referem-se a mesma descrio da
tabela e para a mesma instncia da tabela. (IBM, 2006)

40

1.1.2.7.5.2. Append mode tables


Tabelas de modo Append so adequadas se voc est apenas acrescentando
novos dados e recuperado dados existentes, como o caso de um cenrio bancrio,
em que as mudanas para uma conta so controladas atravs de dbitos, crditos e
transferncias, e os clientes podem rever a histria das alteraes nas suas contas.
(IBM, 2006)

1.1.2.7.5.3. Multidimensional Clustering Tables


Multidimensional cluster tables (MDC) fornece um mtodo para a agregao de
dados em tabelas ao longo de mltiplas dimenses de uma forma flexvel, contnua e
automtica. MDC pode melhorar significativamente o desempenho da consulta. MDC
destinado principalmente para o armazenamento de dados em ambientes de
banco de dados grande, mas tambm pode ser utilizada em processamento de
ambientes de transaes online (OLTP). (IBM, 2006)

1.1.2.7.5.4. Materialized query tables


Uma tabela de consulta materializada (MQT) uma tabela cuja definio baseada
no resultado de uma consulta. Os dados que esto contidos em uma MQT so
derivados de uma ou mais tabelas em que a definio da tabela de consulta
materializada baseada. Diferente das views materializadas
armazena

os

dados. Tabelas

significativamente

de

desempenho

a MQT realmente

consulta materializada podem melhorar


das

consultas,

especialmente

consultas

complexas. (Roman, 2005)

1.1.2.7.5.5. Range-clusterd tables


RCTs explora um mtodo de organizao de linhas em uma tabela que permite
acesso direto muito rpido a qualquer linha, ou conjunto de linhas, sem ndices. Isto
conseguido atravs de valores seqenciais da chave primria (por exemplo, um ID
de funcionrio). Aplicaes que geram nmeros seqenciais para usar como valor
da chave primaria sero os maiores beneficiados com a aplicao das ECAs. (IBM,
2006)

41

1.1.2.7.5.6. Partitioned tables


As tabelas particionadas usam um esquema de organizao dos dados em que os
dados da tabela so divididos entre vrios objetos de armazenamento, chamados
parties de dados ou intervalos, de acordo com os valores em uma ou mais colunas
chave de particionamento da tabela. Os dados de uma determinada tabela so
divididos em vrios objetos de armazenamento com base nas especificaes
contidas na clusula PARTITION BY da instruo CREATE TABLE. Esses objetos
de armazenamento podem ser em espaos de tabela diferente, no mesmo espao
de tabela, ou uma combinao de ambos. (IBM, 2006)
O particionamento de tabelas oferece fcil roll-in e roll-out dos dados da tabela, uma
administrao mais fcil, a colocao de ndice flexvel e melhor processamento de
consulta. (IBM, 2006)

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.

1.1.2.7.7. Vises do Catalogo do Sistema


No DB2, os metadados so armazenados em tabelas e views de catalogo. O
catlogo contm informaes sobre a estrutura fsica e lgica dos objetos do banco
de dados, privilgios de objeto, a informao de integridade, etc.

42

Ao contrrio de Oracle, o DB2 no mantm qualquer view de desempenho dinmico,


mas utiliza os comandos para obter as informaes do diretrio de sistema, como
LIST DATABASE DIRECTORY, LIST TABLESPACES, LIST APPLICATIONS.
(Chen,2007)
DB2 Catalog
SYSCAT.TABLES

Informaes das tabelas

SYSCAT.COLUMNS

Informaes das colunas

SYSCAT.TABLESPACES

Informaes sobre espaos de tabela

SYSCAT.INDEXES

Informaes sobre ndices

SYSCAT.TABAUTH

Informaes sobre permisses nas tabelas

SYSCAT.TRIGGERS

Informaes sobre as triggers

SYSCAT.VIEWS

Informaes sobre as views

SYSCAT.SEQUENCES

Informaes sobre as sequences

SYSCAT.ROUTINES

Informaes sobre as procedures


Quadro 3 Vises do catalogo de sistema DB2

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)

1.1.2.7.8.1. Alias do Banco de Dados


Os nomes de alias do banco de dados so sinnimos locais fornecidos aos bancos
de dados locais e remotos.
Voc no pode criar um banco de dados em um servidor DB2 se o nome desse
banco de dados j existir no servidor. No entanto, um cliente DB2 pode ter conexes
com dois bancos de dados diferentes com o mesmo nome, mas em servidores
diferentes, se cada um tiver seu prprio alias.
Os nomes de alias devem ser exclusivos no diretrio de banco de dados do sistema,
no qual todos os alias so armazenados para a instncia individual do gerenciador
de banco de dados. Quando voc cria um novo banco de dados, o alias assume

43

como padro o nome do banco de dados, se no for especificado um alias. (IBM,


2002)

1.1.2.7.8.2. Alias Relacionado a Tabelas


Os alias relacionados a tabelas so um pouco diferentes dos alias do banco de
dados. A atribuio de um alias a um banco de dados pode evitar possveis
problemas de conexo do cliente em ambientes nos quais servidores diferentes
podem ter bancos de dados com o mesmo nome. Utilizar um alias de tabela ou de
exibio permite consultar um objeto indiretamente para que uma instruo SQL
possa ser independente do nome real desse objeto. Utilizar um alias em uma
instruo SQL equivalente a utilizar o nome do objeto. A vantagem de utilizar um
alias em vez do nome do objeto a facilidade que voc tem para alterar o objeto ao
qual o alias se aplica. Os programas que utilizam alias podem ser facilmente
redirecionados de um objeto para outro sem alteraes em seu cdigo. (IBM, 2002)

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

Um ndice um conjunto ordenado de chaves, cada um referenciando um registro


de uma tabela. Um ndice permite a unicidade e melhora o desempenho. Algumas
das caractersticas sobre ndices so:

As chaves de um ndice podem ser nicas ou no-nicas

Vrias colunas podem ser utilizadas para um ndice (tambm conhecido como
ndice composto)

Se o ndice e os dados fsicos so clusterizados em uma seqncia de


ndice similar, eles sero um ndice cluster. (Chong, 2008)

44

1.1.2.7.11.

Autenticao e Autorizao

A segurana de autenticao no DB2 UDB baseada em dois nveis: 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

O conceito de privilgios no DB2 similar ao Oracle. Os privilgios so concedidos


no banco atravs do comando grant. Privilgios so armazenados nas tabelas de
catlogos de caba banco de dados. Existem trs tipos de privilgios: propriedade,
individual e implicito.

Propiedade ou CONTROL automaticamente concedido ao usurio que


cria o banco de dados, este privilegio permite que o usurio conceda
privilgios aos outros usurios atravs do comando GRANT.

Individual Um clssico exemplo desse privilgio so as permisses


SELECT, INSERT, UPDATE, e DELETE.

45

Implcito - Este um sub-privilgio, que concedido automaticamente a um


usurio quando para esse usurio concedido um nvel elevado de privilgio.

Os usurios do banco de dados devem ser criados no sistema operacional para


poder ter acesso aos dados, necessrio escolher os tipos de autenticao e
privilgios para esses usurios. O acesso por instncia. (Chen, 2007)

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.

2.2. Pronto Atendimento


O nmero de atendimentos em um ano na cidade KYZ foi de 212.300, sendo 43,5%
no PA e 56,5% na rea programtica, superando a mdia esperada para consultas
no pronto atendimento que de 26% do total de consultas realizadas.
O pronto atendimento foi planejado e implantado para atender os casos de urgncia
e emergncia da regio. O servio organizado para funcionar 24 horas e atender
qualquer pessoa que procure sem agendamento ou limite de atendimento.
No Pronto Atendimento existe um sistema de senha eletrnica que distribuda na
medida em que o paciente chega, o mesmo chega ao Pronto Atendimento e retira a
sua senha em um totem que contem um rolo de fita previamente destacada e uma
numerao seqencial, com a retirada desta senha registrada no sistema e o
atendente ao concluir um atendimento aperta um boto que ligado ao painel
eletrnico para que o prximo paciente se coloque na posio do atendente que o
acionou, assim que o atendente finaliza o cadastramento do paciente no sistema a
senha armazenada e esta senha o acompanhar em todo o percurso dentro do
Pronto Atendimento, aps o paciente passar pela posio de atendimento que o
cadastrou no sistema, o mesmo ser encaminhado para a Triagem, o enfermeiro
que o atender verificar a presso arterial, os sintomas que o paciente indicar

46

para uma possvel patologia, aps a triagem o paciente encaminhado para o


consultrio mdico j constando em sua ficha de atendimento uma possvel
patologia, ento o paciente atendido pelo mdico e caso haja necessidade de
confirmao da patologia o mdico solicita exames, caso no haja necessidade de
exames o paciente encaminhado para sala de medicao, medicado e retorna ao
mdico para que o mesmo emita a alta do paciente e o mesmo saia do Pronto
Atendimento.

2.3. Fluxo de Atendimento


O fluxo de atendimento dentro do PA inicia-se com a chegada do paciente e a
emisso da senha que o acompanhara durante todo seu atendimento. Logo em
seguida o atendente ira chamar a senha para efetuar o registro e encaminhar para a
equipe de triagem que ira verificar e efetuar a classificao de risco e encaminhar
para a especialidade ou indic-la para a rede publica de atendimento, aps a
consulta mdica o paciente pode ter alta, receber medicao e/ou ser internado.

Figura 5 - Fluxo atendimento

47

2.4. Fluxo de Triagem


O paciente sai do balco de atendimento encaminhado para a sala de triagem, um
profissional enfermeiro o atende e faz as primeiras verificaes quanto a patologia
indicado por ele, verifica presso arterial, olhos, mos, lngua, enfim os rgos vitais
mais comuns na apresentao da maioria das patologias, o enfermeiro anota todas
as verificaes na ficha de acompanhamento, ficando assim previamente analisado
para o medico ser mais rpido e eficaz em seu diagnostico.

2.5. Fluxo de Consulta


O Paciente encaminhado da triagem passa em consulta pelo mdico, a chamada do
mesmo pelo medico ser atravs do seu nome e no mais pela senha inicial, o
mdico ento examina o paciente com base nas anotaes feitas pelo enfermeiro da
triagem.

2.5.1. Solicitao de Exames


O mdico ao examinar o paciente verifica a necessidade de solicitao de exames
para confirmao de patologia, o mdico anota na ficha de acompanhamento a
solicitao de exames e encaminha o paciente para a sala de coleta de material
para exames, o paciente encaminhado sala de coleta de material para exames por
um enfermeiro que o mesmo far a coleta de material para exames solicitados, o
paciente aguardo a concluso dos exames e o resultado, aps os resultados dos
exames estarem devidamente registrados em sua ficha de acompanhamento o
paciente retorna para a sala de consulta mdica e entrega os resultados ao mdico,
o mdico analisa e caso haja necessidade de medicao o mdico encaminha o
paciente para a sala de medicao e o paciente medicado por um enfermeiro, o
paciente aguarda a medicao fazer o efeito desejado pelo mdico, aps o tempo
necessrio de aguardo da medicao o paciente retorna a sala de consulta do
medico, o mdico analisa se o paciente obteve a melhora esperada, caso haja
melhora o mdico assina a alta e o encaminha para a sada do PA, caso no haja
melhora o mdico poder solicitar exames, medicao e internao para o paciente.

48

2.5.2. Solicitao de Medicao


Neste caso o medico em consulta ao paciente pode diagnosticar que somente uma
medicao trar a melhora esperada, ento o mdico anota em na ficha de
acompanhamento do paciente a medicao desejada, o paciente se dirige a sala de
medicao, a medicao administrada o paciente aguarda o tempo satisfatrio
para a medicao fazer o efeito desejado, aps o aguardo o paciente retorna a sala
de consulta o medico analise se o paciente obteve a melhora esperada pelo mdico
o paciente recebe alta e deixa o PA.

2.6. Fluxo de Internao


Neste caso o mdico executou todos os procedimentos iniciais, tais como, solicitar
de exames, analise de resultados de exames, solicitao de medicao, porm o
mdico constata que no houve a melhora esperada, o mdico pode pedir a
internao do paciente para que o mesmo seja acompanhado mais de perto por ele,
o paciente pode ser internado por uma hora ou N horas dependendo do quadro e
melhora da patologia, o paciente ao ser internado receber uma pulseira contendo
uma numerao especifica que identifica o paciente, ou seja, uma numerao nica
com esta numerao ser registrado todos os procedimentos mdicos, cirrgicos,
medicao, exames e outros caso haja necessidade.

2.7. Estudo de Caso Aplicado


O modelo de dados se aplica a um paciente conveniado que chegar ao pronto
atendimento consciente e passar por todo fluxo de atendimento que se inicia com a
emisso da senha e registro do paciente aps o registro o paciente encaminhado
para a triagem para a verificao e priorizao de atendimento (*classificao de
risco), aps esta classificao o paciente encaminhado para o consultrio em
seguida o indica a medicao e/ou internao e por fim ele tem alta hospitalar. No
ser considerado quando o paciente por qualquer motivo desistir do tratamento.

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.

3.1. Modelagem de Dados


Modelagem de Dados a atividade de especificao das estruturas de dados e
regras de negcio necessrias para suportar uma rea de negcios. Representa um
conjunto de requerimentos de informaes de negcio. uma parte importante do
desenho de um sistema de informao.
A abordagem que se dispensa ao assunto normalmente atende a trs perspectivas:
Modelagem Conceitual, Modelagem Lgica e Modelagem Fsica. A primeira usada
como representao de alto nvel e considera exclusivamente o ponto de vista do
usurio criador do dado, a segunda j agrega alguns detalhes de implementao e a
terceira demonstra como os dados so fisicamente armazenados. (Wikipdia, 2010)

3.2. Modelo conceitual


O Modelo conceitual representa as regras de negcio sem limitaes tecnolgicas
ou de implementao por isto a etapa mais adequada para o envolvimento do
usurio que no precisa ter conhecimentos tcnicos. (MACORATTI, 2008)
O modelo conceitual encontra-se no apndice A Modelo Conceitual.

50

3.3. Modelo Lgico


O Modelo Lgico leva em conta limites imposto por algum tipo de tecnologia de
banco de dados. (banco de dados hierrquico, banco de dados relacional,etc.).
Deriva do modelo conceitual. (MACORATTI, 2008)
O modelo lgico encontra-se no apndice B Modelo Lgico.

3.4. Modelo Fsico


O Modelo Fsico leva em considerao limites imposto pelo SGBD e pelos requisitos
no funcionais dos programas que acessam os dados. Deriva do modelo lgico.
(MACORATTI, 2008)
O Modelo fsico encontra-se no apndice C Modelo Fsico.

3.5. Modelo Proposto


Neste modelo temos a descrio de todas as entidades e atributos usados no
modelo fsico.
Uma entidade pode ser definida como qualquer coisa do mundo real, abstrata ou
concreta, na qual se deseja guardar informaes. (Tabela , File, etc.).
Um atributo tudo o que se pode relacionar como propriedade da entidade. (coluna,
campo, etc.).
O modelo proposto encontra-se no apndice D Modelo Proposto.

3.5.1. Dicionrio de dados


O dicionrio de dados pode ser visto como um depsito central que descreve e
define o significado de toda a informao usada na construo de um sistema.
O dicionrio de dados encontra-se no apndice E Dicionrio de dados.

51

3.6. Objetos utilizados no desenvolvimento


Ambos servidores de banco de dados so na plataforma Windows. A verso do
Oracle usada a 10g e a verso do DB2 a 9.5
Teremos duas tabelas particionadas, ATENDIMENTO e MEDICACAO.
Os cdigos sero gerados por sequences e os id sero gerados por trigger.

3.7. Implementao no Oracle


A criao da base de dados no Oracle feito atravs de comandos DDL com a
estrutura de armazenamento, tabelas, triggers, procedures, views, sequences,
indices.
Os comandos de criao encontra-se no apndice F Implementao no Oracle.

3.8. Implementao no DB2


A criao da base de dados no DB2 feito atravs de comandos DDL com a
estrutura de armazenamento, tabelas, triggers, procedures, views, sequences,
ndices.
Os comandos de criao encontra-se no apndice G Implementao no DB2.

3.9. Mapa de terminologia


Para uma melhor compreenso das diferenas e semelhanas entre o Oracle e o
DB2 algumas tabelas de comparao foram criadas.
Essas tabelas encontram-se no apndice H Mapa de Terminologia.

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

______. Guia para as Ferramentas de Interface Grfica com o Usurio para


Administrao e Desenvolvimento. IBM, 2002
ABBEY, Michael; COREY, Mike; ABRAMSON, Ian. Oracle91: A Beginners Guide.
California: Oracle Press, 2002
CHEN, 2007. Oracle to DB2 Conversion Guide for Linux, UNIX, and Windows.
Disponvel em: http://www.redbooks.ibm.com/redbooks/pdfs/sg247048.pdf Acesso
em 17 Fevereiro 2010
CHEN, 2005. Microsoft SQL Server to IBM DB2 UDB Conversion Guide.
Disponvel em: http://www.redbooks.ibm.com/redbooks/pdfs/sg246672.pdf Acesso
em 20 Fevereiro 2010
CHONG, 2008. Conhecendo o DB2 Express-C. Disponvel em:
ftp://ftp.software.ibm.com/software/data/db2/expressc/wiki/Getting_Started_with_DB2_Express-C_9.5_Portuguese_Brazil.pdf Acesso em
20 Fevereiro 2010.
ELMASRI, Ramez; NAVATHE, Shamkant. Sistemas de Banco de Dados:
Fundamentos e aplicaes. Rio de Janeiro: Ltc, 2005.
FERRARI, Silvio. Introduo ao IBM DB2 Universal Database. Rio de Janeiro:
Cincia Moderna, 2008.
IBM, 2006. DB2 Table Types. Disponvel em:
http://publib.boulder.ibm.com/infocenter/db2luw/v9/topic/com.ibm.db2.udb.admin.doc/
doc/c0011052.htm Acesso em 23 Fevereiro 2010

IBM, 2006. Multidimensional clustering tables. Disponvel em:


http://publib.boulder.ibm.com/infocenter/db2luw/v9/topic/com.ibm.db2.udb.admin.doc/
doc/c0007201.htm Acesso em 23 Fevereiro 2010
IBM, 2006. Partitioned tables. Disponvel em:
http://publib.boulder.ibm.com/infocenter/db2luw/v9/topic/com.ibm.db2.udb.admin.doc/
doc/c0021560.htm Acesso em 23 Fevereiro 2010
IBM, 2006. Sequence. Disponvel em:
http://publib.boulder.ibm.com/infocenter/db2luw/v9/topic/com.ibm.db2.udb.admin.doc/
doc/c0023175.htm Acesso em 12 Maro 2010.
IBM, 2001. Data Recovery and High Availability Guide and Reference. Disponvel
em: ftp://ftp.software.ibm.com/ps/products/db2/info/vr8/pdf/letter/db2hae80.pdf
Acesso em 19 Maro 2010.

54

KORTH, Henry F.; SILBERSCHATZ, Abraham. Sistema de Banco de Dados. So


Paulo: Makron Books, 2001.
MACORATTI, 2008. Conceitos Bsicos de modelagem de dados. Disponvel em:
http://www.macoratti.net/cbmd1.htm Acesso em 21 Abril 2010.
Melnyk, R. 2005. DB2 Basics: An introduction to materialized query tables.
Disponvel
em:
http://www.ibm.com/developerworks/data/library/techarticle/dm0509melnyk/ Acesso em 23 Fevereiro 2010
OLIVEIRA, Antonio R.; FERNANDES, Leila M. P.; TAVEIRA, Gilda A.. Modelagem
de dados. Rio de Janeiro: SENAC Nacional, 2000.
RAMALHO, Jos Antnio. Oracle8i. So Paulo: Berkeley Brasil, 1999.
RODRIGEZ, Martius V.; FERRANTE, Agustin J. TECNOLOGIA DE INFORMAO
E GESTO EMPRESARIAL. Rio de Janeiro: E-Papers, 2000.
SCHERER, Douglas et al. Oracle 8i: Dicas e Tcnicas. Rio de Janeiro: Campus,
2000.

55

GLOSSRIO

Base de dados ou Banco de dados um conjunto de registros dispostos em


estrutura regular que possibilita a reorganizao dos mesmos e produo de
informaes. Um banco de dados normalmente agrupa registros utilizveis para um
mesmo fim.
DCL Linguagem de controle de dados do ingls Data Control Language
utilizada para controlar os aspectos de autorizao de dados e licenas de usurios,
para controlar quem tem acesso para ver ou manipular dados dentro do banco de
dados.DDL - Linguagem de definio de dados - do ingls Data Definition Language usada para a definio de estrutura de dados.
DDL - Linguagem de definio de dados - do ingls Data Definition Language-
usada para a definio de estrutura de dados.
DML - Linguagem de manipulao de dados - do ingles Data Manipulation Language
- utilizadas para a recuperao, incluso, remoo e modificao de informaes
em uma base de dados.
SGBD - Sistema Gestor de Base de Dados o conjunto de programas de
computador responsveis pelo gerenciamento de uma base de dados.

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

Descrio Detalhada das Tabelas


ATENDIMENTO_CONVENIO
Nome
id_paciente
num_cartao_convenio
direito_plano_convenio

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

Contm todas as informaes referentes aos pacientes


Contm as informaes de cadastros
Contm as informaes dos atendimentos do tipo triagem do 1
semestre de 2010
tbs_ate_consulta_12010
Contm as informaes dos atendimentos do tipo consulta do 1
semestre de 2010
tbs_ate_internacao_12010 Contm as informaes dos atendimentos do tipo internao do 1
semestre de 2010
tbs_ate_consulta_22010
Contm as informaes dos atendimentos do tipo consulta do 2
semestre de 2010
tbs_ate_internacao_22010 Contm as informaes dos atendimentos do tipo internao do 2
semestre de 2010
tbs_ate_triagem_22010
Contm as informaes dos atendimentos do tipo triagem do 2
semestre de 2010
tbs_inter_12010
Contm as informaes das internaes 1 semestre de 2010
tbs_inter_22010
Contm as informaes das internaes 2 semestre de 2010
tbs_exa_12010
Contm as informaes dos exames 1 semestre de 2010
tbs_exa_22010
Contm as informaes dos exames 2 semestre de 2010
tbs_med_12010
Contm as informaes das medicaes 1 semestre de 2010
tbs_med_22010
Contm as informaes das medicaes 2 semestre de 2010
tbs_index
Contm todos os ndices

Definio de Sequences
Name

Definition

seq_paciente
seq_atendimento
seq_funcionario
seq_patologia
seq_exame
seq_medicacao

Seqncia que referencia o cadastro de paciente


Seqncia que referencia o fluxo de atendimento
Seqncia que referencia o cadastro de funcionrio
Seqncia que referencia o cadastro da patologia
Seqncia que referencia o cadastro de exame
Seqncia que referencia o cadastro de medicamentos

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

TEMPO DE RETENO tempo indeterminado.


ROTINA DE LIMPEZA no se aplica
CAD_FUNCIONARIO DESCRIO A entidade "CAD_FUNCIONARIO" define os dados referentes
ao cadastro dos tipos de exames.VOLUME ESPERADO 2000 registros para
um ano. TEMPO DE RETENO tempo indeterminado.ROTINA DE
LIMPEZA no se aplica .
CAD_MEDICACAO
DESCRIO A entidade "CAD_MEDICACAO" define os dados referentes ao
cadastro dos tipos de medicao.
VOLUME ESPERADO 2000 registros para um ano.
TEMPO DE RETENO tempo indeterminado.
ROTINA DE LIMPEZA no se aplica.
CAD_PATOLOGIA
DESCRIO A entidade "CAD_PATOLOGIA" define os dados referentes ao
cadastro dos tipos de patologia.
VOLUME ESPERADO 2000 registros para um ano.
TEMPO DE RETENO tempo indeterminado.
ROTINA DE LIMPEZA no se aplica
DOCUMENTO
DESCRIO A entidade "DOCUMENTO" define os dados dos endereos
dos pacientes.
VOLUME ESPERADO 80000 registros para um ano.
TEMPO DE RETENO no se aplica.
ROTINA DE LIMPEZA Aps cinco anos, a alta administrao definir os
parmetros para limpeza.
ENDERECO
DESCRIO A entidade "ENDERECO" define os dados dos endereos dos
pacientes.
VOLUME ESPERADO 80000 registros para um ano.
TEMPO DE RETENO no se aplica.
ROTINA DE LIMPEZA Aps cinco anos, a alta administrao definir os
parmetros para limpeza.
EXAMES
DESCRIO A entidade "EXAMES" define os dados dos exames solicitados
durante as consultas/internao .
VOLUME ESPERADO 80000 registros para um ano.
TEMPO DE RETENO no se aplica.
ROTINA DE LIMPEZA Aps cinco anos, a alta administrao definir os
parmetros para limpeza.
GRUPO
DESCRIO A entidade "GRUPO" define os principais dados que serviro
de parmetros para outras tabelas.
VOLUME ESPERADO 100 registros para um ano.
TEMPO DE RETENO no se aplica.
ROTINA DE LIMPEZA no se aplica.
INTERNACAO
DESCRIO A entidade "INTERNACAO" define os principais dados
referentes internao do paciente.
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.
MEDICACAO
DESCRIO A entidade "MEDICACAO" define os dados referentes as
medicaes prescritas ao pacientes da consulta / internao.
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.
PACIENTE
DESCRIO A entidade "PACIENTE" define os principais dados dos
pacientes que passaro por atendimento.
VOLUME ESPERADO 120000 registros para um ano.
TEMPO DE RETENO no se aplica.
ROTINA DE LIMPEZA Aps cinco anos, a alta administrao definir os
parmetros para limpeza
PATOLOGIA
DESCRIO A entidade "PATOLOGIA" define os dados referentes as
patologias relacionadas aos pacientes da consulta / internao.
VOLUME ESPERADO 300000 registros para um ano.

67

PLANTONISTA

TELEFONE

TIPO

TRIAGEM

TEMPO DE RETENO 5 anos.


ROTINA DE LIMPEZA Aps cinco anos, a alta administrao definir os
parmetros para limpeza.
DESCRIO A entidade "PLANTONISTA" referencia os profissionais que
esto responsveis pelos atendimentos na triagem / consulta / internao.
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 "TELEFONE" define os dados telefnicos dos
pacientes. VOLUME ESPERADO 80000 registros para um ano. TEMPO DE
RETENO no se aplica.ROTINA DE LIMPEZA Aps cinco anos, a alta
administrao definir os parmetros para limpeza.
DESCRIO A entidade "TIPO" define os principais dados que serviro de
parmetros para outras tabelas.
VOLUME ESPERADO 100 registros para um ano.
TEMPO DE RETENO no se aplica.
ROTINA DE LIMPEZA no se aplica.
DESCRIO A entidade "TRIAGEM" define os principais dados referentes
internao do paciente.
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 das Tabelas


ATENDIMENTO
NOME
COD_ATENDIMENTO

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;

CREATE SEQUENCE "seq_atendimento"


INCREMENT BY 1
START WITH 1;

CREATE SEQUENCE "seq_exame"


INCREMENT BY 1
START WITH 1;

CREATE SEQUENCE "seq_funcionario"


INCREMENT BY 1
START WITH 1;

CREATE SEQUENCE "seq_medicacao"


INCREMENT BY 1

73

START WITH 1;

CREATE SEQUENCE "seq_paciente"


INCREMENT BY 1
START WITH 1;

CREATE SEQUENCE "seq_patologia"


INCREMENT BY 1
START WITH 1;

CREATE TABLESPACE "system"


EXTENT MANAGEMENT LOCAL

AUTOALLOCATE;

CREATE TABLESPACE "tbs_ate_consulta_12010"


LOGGING
DEFAULT COMPRESS
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT AUTO;
CREATE TABLESPACE "tbs_ate_consulta_22010"
LOGGING
DEFAULT COMPRESS
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT AUTO;
CREATE TABLESPACE "tbs_ate_internacao_12010"
LOGGING
DEFAULT COMPRESS
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT MANUAL;
CREATE TABLESPACE "tbs_ate_internacao_22010"
LOGGING
DEFAULT NOCOMPRESS
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT MANUAL;

CREATE TABLESPACE "tbs_ate_triagem_12010"


LOGGING
DEFAULT COMPRESS
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT MANUAL;
CREATE SMALLFILE TABLESPACE "tbs_ate_triagem_22010"
LOGGING
DEFAULT NOCOMPRESS
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT MANUAL;

74

CREATE TABLESPACE "tbs_cadastros"


LOGGING
DEFAULT NOCOMPRESS
ONLINE
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT MANUAL;
CREATE TABLESPACE "tbs_exa_12010"
LOGGING
DEFAULT NOCOMPRESS
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT MANUAL;

CREATE TABLESPACE "tbs_exa_22010"


LOGGING
DEFAULT COMPRESS
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT MANUAL;

CREATE TABLESPACE "tbs_index"


LOGGING
DEFAULT COMPRESS
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT MANUAL;

CREATE TABLESPACE "tbs_inter_12010"


LOGGING
DEFAULT NOCOMPRESS
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT MANUAL;

CREATE TABLESPACE "tbs_inter_22010"


LOGGING
DEFAULT COMPRESS
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT MANUAL;

CREATE TABLESPACE "tbs_med_12010";


LOGGING
DEFAULT NOCOMPRESS
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT MANUAL;

CREATE TABLESPACE "tbs_med_22010"


LOGGING
DEFAULT NOCOMPRESS
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT MANUAL;

75

CREATE TABLESPACE "tbs_paciente"


LOGGING
DEFAULT COMPRESS
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT AUTO;

CREATE TABLESPACE "tbs_pat_12010"


LOGGING
DEFAULT NOCOMPRESS
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT MANUAL;

CREATE TABLESPACE "tbs_pat_22010"


LOGGING
DEFAULT NOCOMPRESS
ONLINE
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT MANUAL;

CREATE TABLESPACE "tbs_triagem";


LOGGING
DEFAULT NOCOMPRESS
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT MANUAL;
CREATE TABLESPACE "tbs_atendimento_12010"
LOGGING
DEFAULT NOCOMPRESS
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT MANUAL;

CREATE TABLESPACE "tbs_atendimento_22010";


LOGGING
DEFAULT NOCOMPRESS
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT MANUAL;

CREATE TABLE "ATENDIMENTO"


(
"COD_TIPO" CHAR(3) NULL ,
"COD_GRUPO" NUMBER(3) NULL ,
"COD_ATENDIMENTO" NUMBER(8) NOT NULL ,
"DATA_INICIO" DATE NULL ,
"DATA_TERMINO" DATE NULL ,
"DATA_UPD" DATE NULL ,
"COD_PACIENTE" NUMBER(8) NULL ,
"STATUS" CHAR(1) NULL CONSTRAINT "ATEND_STATU_CHECK_27624864"
CHECK ("STATUS" IN ('A', 'F')))
PARTITION BY RANGE ("DATA_UPD")
SUBPARTITION BY LIST ("COD_GRUPO")

76

(PARTITION "P_1SEM_2010" VALUES LESS THAN


(to_date('30/06/2010','dd/mm/yyyy'))
TABLESPACE "tbs_atendimento_12010"
(SUBPARTITION "P_ATRI_1SEM"
VALUES ( 100 )
TABLESPACE "tbs_ate_triagem_12010",
SUBPARTITION "P_ACON_1SEM"
VALUES ( 200 )
TABLESPACE "tbs_ate_consulta_12010",
SUBPARTITION "P_AINT_1SEM"
VALUES ( 300 )
TABLESPACE "tbs_ate_triagem_12010")
,PARTITION "P_2SEM_2010" VALUES LESS THAN
(to_date('31/12/2010','dd/mm/yyyy'))
TABLESPACE "tbs_atendimento_22010"
(SUBPARTITION "P_ATRI_2SEM"
VALUES ( 100 ) ,
SUBPARTITION "P_ACON_2SEM"
VALUES ( 200 ) ,
SUBPARTITION "P_AINT_2SEM"
VALUES ( 300 ) ));
COMMENT ON TABLE "ATENDIMENTO" IS 'DESCRIO A entidade "ATENDIMENTO"
define os principais dados referentes aos varios 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. ';
COMMENT ON COLUMN "ATENDIMENTO"."COD_TIPO" IS 'Cdigo de identificacao do
tipo que ira se relacionar com os grupos
FUN => Funcionario
ATE => Atendimento';
COMMENT ON COLUMN "ATENDIMENTO"."COD_GRUPO" IS 'Cdigo de identificao do
grupo
Tipo: FUN
Grupo 100 - Mdico
200 - Enfermeiro
300 - Aux. Enfermagem
Tipo: ATE
Grupo 100 - Triagem
200 - Consulta
300 - Internao';

COMMENT ON COLUMN "ATENDIMENTO"."COD_ATENDIMENTO" IS 'Cdigo de


identificao do atendimento
Referenciado por Seq_atendimento';
COMMENT ON COLUMN "ATENDIMENTO"."DATA_INICIO" IS 'Data/hora
atendimento';

de inicio do

COMMENT ON COLUMN "ATENDIMENTO"."DATA_TERMINO" IS 'Data/hora de termino do


atendimento';
COMMENT ON COLUMN "ATENDIMENTO"."DATA_UPD" IS 'Data e Hora da ultima
alterao no registro';
COMMENT ON COLUMN "ATENDIMENTO"."COD_PACIENTE" IS 'Cdigo interno do
paciente
Referenciado por Seq_paciente';
COMMENT ON COLUMN "ATENDIMENTO"."STATUS" IS 'Status que indica se o
atendimento est aberto /fechado';
CREATE UNIQUE INDEX "XPKATENDIMENTO" ON "ATENDIMENTO"
(
"COD_ATENDIMENTO" ASC);

77

ALTER TABLE "ATENDIMENTO"


("COD_ATENDIMENTO");

ADD CONSTRAINT

"XPKATENDIMENTO" PRIMARY KEY

CREATE INDEX "XIF1ATENDIMENTO" ON "ATENDIMENTO"


(
"COD_TIPO" ASC, "COD_GRUPO" ASC);

CREATE INDEX "XIF2ATENDIMENTO" ON "ATENDIMENTO"


(
"COD_PACIENTE" ASC);

CREATE TABLE "CAD_EXAME"


(
"COD_EXAME" NUMBER(8) NOT NULL ,
"DESCRICAO" VARCHAR2(100) NULL ,
"DATA_UPD" DATE NULL )
TABLESPACE "tbs_cadastros";
COMMENT ON TABLE "CAD_EXAME" IS 'DESCRIO A entidade "CAD_EXAME" define
os dados referentes ao cadastro dos tipos de exames.
VOLUME ESPERADO 2000 registros para um ano. TEMPO DE RETENO tempo
indeterminado.ROTINA DE LIMPEZA no se aplica ';
COMMENT ON COLUMN "CAD_EXAME"."COD_EXAME" IS 'Cdigo interno do exame
Referenciado por Seq_exame';
COMMENT ON COLUMN "CAD_EXAME"."DESCRICAO" IS 'anotaes sobre o exame,
resultados, etc.';
COMMENT ON COLUMN "CAD_EXAME"."DATA_UPD" IS 'Data e Hora da ultima
alterao no registro';
CREATE UNIQUE INDEX "XPKCAD_EXAME" ON "CAD_EXAME"
(
"COD_EXAME" ASC)
TABLESPACE "tbs_index";

ALTER TABLE "CAD_EXAME" ADD CONSTRAINT


("COD_EXAME");

"XPKCAD_EXAME" PRIMARY KEY

CREATE TABLE "CAD_FUNCIONARIO"


(
"COD_FUNCIONARIO" NUMBER(8) NOT NULL ,
"NOME" VARCHAR2(40) NULL ,
"REGISTRO" NUMBER(15) NULL ,
"COD_TIPO" CHAR(3) NOT NULL ,
"COD_GRUPO" NUMBER(3) NOT NULL ,
"DATA_UPD" DATE NULL )
TABLESPACE "tbs_cadastros"
COMPRESS ;
COMMENT ON TABLE "CAD_FUNCIONARIO" IS 'DESCRIO A entidade
"CAD_FUNCIONARIO" define os dados referentes ao cadastro dos tipos de
exames.VOLUME ESPERADO 2000 registros para um ano. TEMPO DE RETENO
tempo indeterminado.ROTINA DE LIMPEZA no se aplica ';
COMMENT ON COLUMN "CAD_FUNCIONARIO"."COD_FUNCIONARIO" IS 'Cdigo do
plantonista Referenciado por Seq_Funcionario';
COMMENT ON COLUMN "CAD_FUNCIONARIO"."NOME" IS 'nome do funcionario';

78

COMMENT ON COLUMN "CAD_FUNCIONARIO"."REGISTRO" IS 'Registro do


profissional';
COMMENT ON COLUMN "CAD_FUNCIONARIO"."COD_TIPO" IS 'Cdigo de identificacao
do tipo que ira se relacionar com os grupos
FUN => Funcionario
ATE => Atendimento';

COMMENT ON COLUMN "CAD_FUNCIONARIO"."COD_GRUPO" IS 'Cdigo de identificao


do grupo
Tipo: FUN
Grupo 100 - Mdico
200 - Enfermeiro
300 - Aux. Enfermagem
Tipo: ATE
Grupo 100 - Triagem
200 - Consulta
300 - Internao';
COMMENT ON COLUMN "CAD_FUNCIONARIO"."DATA_UPD" IS 'Data e Hora da ultima
alterao no registro';
CREATE UNIQUE INDEX "XPKCAD_FUNCIONARIO" ON "CAD_FUNCIONARIO"
(
"COD_FUNCIONARIO" ASC, "COD_TIPO" ASC, "COD_GRUPO" ASC)
TABLESPACE "tbs_index";

ALTER TABLE "CAD_FUNCIONARIO" ADD CONSTRAINT "XPKCAD_FUNCIONARIO" PRIMARY


KEY ("COD_FUNCIONARIO","COD_TIPO","COD_GRUPO");
CREATE INDEX "XIF1CAD_FUNCIONARIO" ON "CAD_FUNCIONARIO"
(
"COD_TIPO" ASC, "COD_GRUPO" ASC)
TABLESPACE "tbs_index";
CREATE TABLE "CAD_MEDICACAO"
(
"COD_MEDICACAO" NUMBER(8)
"DESCRICAO" VARCHAR2(100)
"DATA_UPD" DATE NULL )
TABLESPACE "tbs_cadastros"
COMPRESS ;

NOT NULL ,
NULL ,

COMMENT ON TABLE "CAD_MEDICACAO" IS 'DESCRIO A entidade "CAD_MEDICACAO"


define os dados referentes ao cadastro dos tipos de medicao.VOLUME
ESPERADO 2000 registros para um ano. TEMPO DE RETENO tempo
indeterminado.ROTINA DE LIMPEZA no se aplica ';
COMMENT ON COLUMN "CAD_MEDICACAO"."COD_MEDICACAO" IS 'Cdigo interno de
medicao.Referenciado por Seq_medicacao';
COMMENT ON COLUMN "CAD_MEDICACAO"."DESCRICAO" IS 'descrio da medicao';
COMMENT ON COLUMN "CAD_MEDICACAO"."DATA_UPD" IS 'Data e Hora da ultima
alterao no registro';
CREATE UNIQUE INDEX "XPKCAD_MEDICACAO" ON "CAD_MEDICACAO"
(
"COD_MEDICACAO" ASC)
TABLESPACE "tbs_index";

79

ALTER TABLE "CAD_MEDICACAO"


("COD_MEDICACAO");

ADD CONSTRAINT

"XPKCAD_MEDICACAO" PRIMARY KEY

CREATE TABLE "CAD_PATOLOGIA"


(
"COD_PATOLOGIA" NUMBER(8) NOT NULL ,
"DESCRICAO" CHAR(18) NULL ,
"DATA_UPD" DATE NULL )
TABLESPACE "tbs_cadastros"
COMPRESS ;
COMMENT ON TABLE "CAD_PATOLOGIA" IS 'DESCRIO A entidade "CAD_PATOLOGIA"
define os dados referentes ao cadastro dos tipos de patologia.VOLUME
ESPERADO 2000 registros para um ano. TEMPO DE RETENO tempo
indeterminado.ROTINA DE LIMPEZA no se aplica ';
COMMENT ON COLUMN "CAD_PATOLOGIA"."COD_PATOLOGIA" IS 'Cdigo identificador
da patologia.Referenciado por Seq_patologia';
COMMENT ON COLUMN "CAD_PATOLOGIA"."DESCRICAO" IS 'Descrio da patologia';
COMMENT ON COLUMN "CAD_PATOLOGIA"."DATA_UPD" IS 'Data e Hora da ultima
alterao no registro';
CREATE UNIQUE INDEX "XPKCAD_PATOLOGIA" ON "CAD_PATOLOGIA"
(
"COD_PATOLOGIA" ASC)
TABLESPACE "tbs_index";
ALTER TABLE "CAD_PATOLOGIA"
("COD_PATOLOGIA");

ADD CONSTRAINT

"XPKCAD_PATOLOGIA" PRIMARY KEY

CREATE TABLE "DOCUMENTO"


(
"COD_PACIENTE" NUMBER(8) NOT NULL ,
"NUMERO" VARCHAR2(15) NULL ,
"ID_DOCUMENTO" NUMBER(8) NOT NULL ,
"DATA_UPD" DATE NULL )
TABLESPACE "tbs_paciente"
COMPRESS ;

COMMENT ON TABLE "DOCUMENTO" IS 'DESCRIO A entidade "DOCUMENTO" define


os dados dos endereos dos paciententes. VOLUME ESPERADO 80000 registros
para um ano. TEMPO DE RETENO no se aplica.ROTINA DE LIMPEZA Aps cinco
anos, a alta administrao definir os parmetros para limpeza. ';
COMMENT ON COLUMN "DOCUMENTO"."COD_PACIENTE" IS 'Cdigo interno do paciente
Referenciado por Seq_paciente';
COMMENT ON COLUMN "DOCUMENTO"."NUMERO" IS 'numero do documento';
COMMENT ON COLUMN "DOCUMENTO"."ID_DOCUMENTO" IS 'Cdigo de identificador do
documento.Gerado pela trigger DOC_INS';
COMMENT ON COLUMN "DOCUMENTO"."DATA_UPD" IS 'Data e Hora da ultima
alterao no registro';
CREATE UNIQUE INDEX "XPKDOCUMENTO" ON "DOCUMENTO"
(
"ID_DOCUMENTO" ASC,
"COD_PACIENTE" ASC)
TABLESPACE "tbs_index";
ALTER TABLE "DOCUMENTO" ADD CONSTRAINT
("ID_DOCUMENTO","COD_PACIENTE");

"XPKDOCUMENTO" PRIMARY KEY

80

CREATE INDEX "XIF1DOCUMENTO" ON "DOCUMENTO"


(
"COD_PACIENTE" ASC)
TABLESPACE "tbs_index";
CREATE TABLE "ENDERECO"
(
"COD_PACIENTE" NUMBER(8) NOT NULL ,
"LOGRADOURO" VARCHAR2(60) NULL ,
"NUMERO" VARCHAR2(10) NULL ,
"BAIRRO" VARCHAR2(30) NULL ,
"CIDADE" VARCHAR2(30) NULL ,
"CEP" VARCHAR2(8) NULL ,
"ESTADO" VARCHAR2(2) NULL ,
"COMPLEMENTO" VARCHAR2(30) NULL ,
"ID_ENDERECO" NUMBER(8) NOT NULL ,
"DATA_UPD" DATE NULL )
TABLESPACE "tbs_paciente"
COMPRESS ;
COMMENT ON TABLE "ENDERECO" IS 'DESCRIO A entidade "ENDERECO" define os
dados dos endereos dos paciententes.VOLUME ESPERADO 80000 registros para
um ano. TEMPO DE RETENO no se aplica.ROTINA DE LIMPEZA Aps cinco
anos, a alta administrao definir os parmetros para limpeza. ';
COMMENT ON COLUMN "ENDERECO"."COD_PACIENTE" IS 'Cdigo interno do paciente
Referenciado por Seq_paciente';
COMMENT ON COLUMN "ENDERECO"."LOGRADOURO" IS 'Nome do endereo
';
COMMENT ON COLUMN "ENDERECO"."NUMERO" IS 'numero do endereo';
COMMENT ON COLUMN "ENDERECO"."BAIRRO" IS 'bairro do endereo';
COMMENT ON COLUMN "ENDERECO"."CIDADE" IS 'cidade do endereo';
COMMENT ON COLUMN "ENDERECO"."CEP" IS 'cep do endereo';
COMMENT ON COLUMN "ENDERECO"."ESTADO" IS 'estado do endereo';
COMMENT ON COLUMN "ENDERECO"."COMPLEMENTO" IS 'complemento do numero do
endereo';
COMMENT ON COLUMN "ENDERECO"."ID_ENDERECO" IS 'Cdigo primario do endereo
Gerado pela trigger END_INS
';
COMMENT ON COLUMN "ENDERECO"."DATA_UPD" IS 'Data e Hora da ultima alterao
no registro';
CREATE UNIQUE INDEX "XPKENDERECO" ON "ENDERECO"
(
"ID_ENDERECO" ASC,
"COD_PACIENTE" ASC)
TABLESPACE "tbs_index";

ALTER TABLE "ENDERECO" ADD CONSTRAINT


("ID_ENDERECO","COD_PACIENTE");

"XPKENDERECO" PRIMARY KEY

CREATE INDEX "XIF1ENDERECO" ON "ENDERECO"


(
"COD_PACIENTE" ASC)
TABLESPACE "tbs_index";

81

CREATE TABLE "EXAMES"


(
"COD_EXAME" NUMBER(8) NULL ,
"DATA_PEDIDO" DATE NULL ,
"DATA_CHEGADA" DATE NULL ,
"MATERIAL_COLHIDO" VARCHAR2(60) NULL ,
"RESULTADO" VARCHAR2(60) NULL ,
"COD_ATENDIMENTO" NUMBER(8) NULL ,
"ID_EXAME" NUMBER(8) NOT NULL ,
"STATUS" CHAR(18) NULL CONSTRAINT "EXAM_STAT_CHEC_1175799312"
CHECK ("STATUS" IN ('A', 'F')),
"DATA_UPD" DATE NULL )
PARTITION BY RANGE ("DATA_PEDIDO")
(PARTITION "P_PAT_12010" VALUES LESS THAN
(('30/06/2010','dd/mm/yyyy'))
TABLESPACE "tbs_pat_12010",
PARTITION "P_EXA_22010" VALUES LESS THAN
(('31/12/2010','dd/mm/yyyy'))
TABLESPACE "tbs_exa_22010");
COMMENT ON TABLE "EXAMES" IS 'DESCRIO A entidade "EXAMES" define os
dados dos exames solicitados durante as consultas/internacao . VOLUME
ESPERADO 80000 registros para um ano. TEMPO DE RETENO no se aplica.
ROTINA DE LIMPEZA Aps cinco anos, a alta administrao definir os
parmetros para limpeza. ';
COMMENT ON COLUMN "EXAMES"."COD_EXAME" IS 'Cdigo interno do exame
Referenciado por Seq_exame';
COMMENT ON COLUMN "EXAMES"."DATA_PEDIDO" IS 'Data do pedido do exame';
COMMENT ON COLUMN "EXAMES"."DATA_CHEGADA" IS 'Data de chegada do exame';
COMMENT ON COLUMN "EXAMES"."MATERIAL_COLHIDO" IS 'anotaes do material
colhido do paciente';
COMMENT ON COLUMN "EXAMES"."RESULTADO" IS 'resultados do exame';
COMMENT ON COLUMN "EXAMES"."COD_ATENDIMENTO" IS 'Cdigo de identificao do
atendimento. Referenciado por Seq_atendimento';
COMMENT ON COLUMN "EXAMES"."ID_EXAME" IS 'Identificador do exame
Gerado pela trigger EXA_INS';
COMMENT ON COLUMN "EXAMES"."STATUS" IS 'Status do exame Fechado/Aberto';
COMMENT ON COLUMN "EXAMES"."DATA_UPD" IS 'Data e Hora da ultima alterao
no registro';
CREATE UNIQUE INDEX "XPKEXAMES" ON "EXAMES"
(
"ID_EXAME" ASC);
ALTER TABLE "EXAMES"
("ID_EXAME");

ADD CONSTRAINT

CREATE INDEX "XIF1EXAMES" ON "EXAMES"


(
"COD_EXAME" ASC);

CREATE INDEX "XIF2EXAMES" ON "EXAMES"


(
"COD_ATENDIMENTO" ASC);

"XPKEXAMES" PRIMARY KEY

82

CREATE TABLE "GRUPO"


(
"COD_TIPO" CHAR(3) NOT NULL ,
"COD_GRUPO" NUMBER(3) NOT NULL ,
"DESCRICAO" VARCHAR2(30) NULL ,
"DATA_UPD" DATE NULL )
TABLESPACE "tbs_cadastros"
COMPRESS ;
COMMENT ON TABLE "GRUPO" IS 'DESCRIO A entidade "GRUPO" define os
principais dados que serviro de parametros para outras tabelas. VOLUME
ESPERADO 100 registros para um ano. TEMPO DE RETENO no se
aplica.ROTINA DE LIMPEZA no se aplica. ';
COMMENT ON COLUMN "GRUPO"."COD_TIPO" IS 'Cdigo de identificacao do tipo
que ira se relacionar com os grupos
FUN => Funcionario
ATE => Atendimento';
COMMENT ON COLUMN "GRUPO"."COD_GRUPO" IS 'Cdigo de identificao do grupo
Tipo: FUN
Grupo 100 - Mdico
200 - Enfermeiro
300 - Aux. Enfermagem
Tipo: ATE
Grupo 100 - Triagem
200 - Consulta
300 - Internao';
COMMENT ON COLUMN "GRUPO"."DESCRICAO" IS 'descricao do grupo';
COMMENT ON COLUMN "GRUPO"."DATA_UPD" IS 'Data e Hora da ultima alterao no
registro';
CREATE UNIQUE INDEX "XPKGRUPO" ON "GRUPO"
(
"COD_TIPO" ASC, "COD_GRUPO" ASC)
TABLESPACE "tbs_index";

ALTER TABLE "GRUPO"


ADD CONSTRAINT
("COD_TIPO","COD_GRUPO");

"XPKGRUPO" PRIMARY KEY

CREATE INDEX "XIF1GRUPO" ON "GRUPO"


(
"COD_TIPO" ASC)
TABLESPACE "tbs_index";
CREATE TABLE "INTERNACAO"
(
"NUM_LEITO" VARCHAR2(8) NULL ,
"DATA_ENTRADA" DATE NULL ,
"DATA_SAIDA" DATE NULL ,
"COD_INTERNACAO" NUMBER(8) NOT NULL ,
"COD_CONSULTA" NUMBER(8) NULL ,
"DATA_UPD" DATE NULL )
PARTITION BY RANGE ("DATA_UPD")
(PARTITION "P_INTR_1SEM" VALUES LESS THAN
(('30/06/2010','dd/mm/yyyy'))
TABLESPACE "tbs_inter_12010",
PARTITION "P_INTR_2SEM" VALUES LESS THAN
(('31/12/2010','dd/mm/yyyy')));

83

COMMENT ON TABLE "INTERNACAO" IS 'DESCRIO A entidade "INTERNACAO" define


os principais dados referentes internacao do paciente.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.';
COMMENT ON COLUMN "INTERNACAO"."COD_INTERNACAO" IS 'Cdigo de identificao
do atendimento Referenciado por Seq_atendimento';
COMMENT ON COLUMN "INTERNACAO"."COD_CONSULTA" IS 'Cdigo de identificao
do atendimento Referenciado por Seq_atendimento';
CREATE UNIQUE INDEX "XPKINTERNACAO" ON "INTERNACAO"
(
"COD_INTERNACAO" ASC);

ALTER TABLE "INTERNACAO"


("COD_INTERNACAO");

ADD CONSTRAINT

"XPKINTERNACAO" PRIMARY KEY

CREATE INDEX "XIF2INTERNACAO" ON "INTERNACAO"


(
"COD_INTERNACAO" ASC);

CREATE INDEX "XIF3INTERNACAO" ON "INTERNACAO"


(
"COD_CONSULTA" ASC);

CREATE TABLE "MEDICACAO"


(
"COD_MEDICACAO" NUMBER(8) NULL ,
"ID_MEDICACAO" NUMBER(9) NOT NULL ,
"DATA" DATE NULL ,
"HORA" DATE NULL ,
"COD_ATENDIMENTO" NUMBER(8) NULL ,
"DATA_UPD" DATE NULL )
PARTITION BY RANGE ("DATA")
(PARTITION "P_MED_12010" VALUES LESS THAN
(('30/06/2010','dd/mm/yyyy'))
TABLESPACE "tbs_med_12010",
PARTITION "P_MED_22010" VALUES LESS THAN
(('31/12/2010','dd/mm/yyyy'))
TABLESPACE "tbs_med_22010");
COMMENT ON TABLE "MEDICACAO" IS 'DESCRIO A entidade "MEDICACAO" define
os dados referentes as medicaes prescritas ao pacientes da consulta /
internao.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. ';
COMMENT ON COLUMN "MEDICACAO"."COD_MEDICACAO" IS 'Cdigo interno de
medicao.Referenciado por Seq_medicacao';
COMMENT ON COLUMN "MEDICACAO"."ID_MEDICACAO" IS 'Identificador da medicao
Gerado pela trigger MED_INS';
COMMENT ON COLUMN "MEDICACAO"."DATA" IS 'Data da aplicao ';
COMMENT ON COLUMN "MEDICACAO"."HORA" IS 'Hora da aplicao';
COMMENT ON COLUMN "MEDICACAO"."COD_ATENDIMENTO" IS 'Cdigo de identificao
do atendimento. Referenciado por Seq_atendimento';

84

COMMENT ON COLUMN "MEDICACAO"."DATA_UPD" IS 'Data e Hora da ultima


alterao no registro';
CREATE UNIQUE INDEX "XPKMEDICACAO" ON "MEDICACAO"
(
"ID_MEDICACAO" ASC);

ALTER TABLE "MEDICACAO" ADD CONSTRAINT


("ID_MEDICACAO");

"XPKMEDICACAO" PRIMARY KEY

CREATE INDEX "XIF1MEDICACAO" ON "MEDICACAO"


(
"COD_MEDICACAO" ASC);
CREATE INDEX "XIF2MEDICACAO" ON "MEDICACAO"
(
"COD_ATENDIMENTO" ASC);
CREATE TABLE "PACIENTE"
(
"COD_PACIENTE" NUMBER(8) NOT NULL ,
"NOME" VARCHAR2(40) NULL ,
"NUM_CARTAO_CONVENIO" VARCHAR2(24) NULL ,
"DIREITO_PLANO_CONVENIO" VARCHAR2(8) NULL ,
"DATA_UPD" DATE NULL )
TABLESPACE "tbs_paciente"
COMPRESS ;
COMMENT ON TABLE "PACIENTE" IS 'DESCRIO A entidade "PACIENTE" define os
principais dados dos paciententes que passaro por atendimento. VOLUME
ESPERADO 120000 registros para um ano. TEMPO DE RETENO no se aplica
ROTINA DE LIMPEZA Aps cinco anos, a alta administrao definir os
parmetros para limpeza. ';
COMMENT ON COLUMN "PACIENTE"."COD_PACIENTE" IS 'Cdigo interno do paciente
Referenciado por Seq_paciente';
COMMENT ON COLUMN "PACIENTE"."NOME" IS 'Nome do paciente';
COMMENT ON COLUMN "PACIENTE"."NUM_CARTAO_CONVENIO" IS 'numero do associado
no convenio';
COMMENT ON COLUMN "PACIENTE"."DIREITO_PLANO_CONVENIO" IS 'numero de
identificao padro conforme ANS de direito a exames, tipo de
acomodaes, etc';
COMMENT ON COLUMN "PACIENTE"."DATA_UPD" IS 'Data e Hora da ultima alterao
no registro';
CREATE UNIQUE INDEX "XPKPACIENTE" ON "PACIENTE"
(
"COD_PACIENTE" ASC)
COMPUTE STATISTICS
TABLESPACE "tbs_index";
ALTER TABLE "PACIENTE" ADD CONSTRAINT
("COD_PACIENTE");

"XPKPACIENTE" PRIMARY KEY

CREATE TABLE "PATOLOGIA"


(
"ID_PATOLOGIA" CHAR(18) NOT NULL ,
"COD_PATOLOGIA" NUMBER(8) NULL ,
"COD_ATENDIMENTO" NUMBER(8) NULL ,
"OBSERVACAO" VARCHAR2(30) NULL ,
"DATA_UPD" DATE NULL )

85

PARTITION BY RANGE ("DATA_UPD")


(PARTITION "P_PAT_12010" VALUES LESS THAN
(TO_DATE('30/06/2010','DD/MM/YYYY'))
TABLESPACE "tbs_pat_12010",
PARTITION "P_PAT_22010" VALUES LESS THAN
(TO_DATE('31/12/2010','DD/MM/YYYY'))
TABLESPACE "tbs_pat_22010");

COMMENT ON TABLE "PATOLOGIA" IS 'DESCRIO A entidade "PATOLOGIA" define


os dados referentes as patologias relacionadas aos pacientes da consulta /
internao.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. ';
COMMENT ON COLUMN "PATOLOGIA"."ID_PATOLOGIA" IS 'Cdigo identificador da
patologia do paciente,Gerado pela trigger PAT_INS';
COMMENT ON COLUMN "PATOLOGIA"."COD_PATOLOGIA" IS 'Cdigo identificador da
patologia.Referenciado por Seq_patologia';
COMMENT ON COLUMN "PATOLOGIA"."COD_ATENDIMENTO" IS 'Cdigo de identificao
do atendimento Referenciado por Seq_atendimento';
COMMENT ON COLUMN "PATOLOGIA"."OBSERVACAO" IS 'Observao da patologia';
COMMENT ON COLUMN "PATOLOGIA"."DATA_UPD" IS 'Data e Hora da ultima
alterao no registro';
CREATE UNIQUE INDEX "XPKPATOLOGIA" ON "PATOLOGIA"
(
"ID_PATOLOGIA" ASC);
ALTER TABLE "PATOLOGIA" ADD CONSTRAINT
("ID_PATOLOGIA");

"XPKPATOLOGIA" PRIMARY KEY

CREATE INDEX "XIF1PATOLOGIA" ON "PATOLOGIA"


(
"COD_PATOLOGIA" ASC);
CREATE INDEX "XIF2PATOLOGIA" ON "PATOLOGIA"
(
"COD_ATENDIMENTO" ASC);
CREATE TABLE "PLANTONISTA"
(
"ID_PLANTONISTA" NUMBER(8) NOT NULL ,
"COD_FUNCIONARIO" NUMBER(8) NULL ,
"COD_TIPO" CHAR(3) NULL ,
"COD_GRUPO" NUMBER(3) NULL ,
"COD_ATENDIMENTO" NUMBER(8) NULL ,
"DATA_UPD" DATE NULL );
COMMENT ON TABLE "PLANTONISTA" IS 'DESCRIO A entidade "PLANTONISTA"
referencia os profissionais que estao responsaveis pelos atendimentos na
triagem / consulta / internao.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. ';
COMMENT ON COLUMN "PLANTONISTA"."ID_PLANTONISTA" IS 'Cdigo interno do
plantonista.Gerado pela trigger PLA_INS';
COMMENT ON COLUMN "PLANTONISTA"."COD_FUNCIONARIO" IS 'Cdigo do plantonista
Referenciado por Seq_Funcionario';

86

COMMENT ON COLUMN "PLANTONISTA"."COD_TIPO" IS 'Cdigo de identificacao do


tipo que ira se relacionar com os grupos
FUN => Funcionario
ATE => Atendimento';
COMMENT ON COLUMN "PLANTONISTA"."COD_GRUPO" IS 'Cdigo de identificao do
grupo
Tipo: FUN
Grupo 100 - Mdico
200 - Enfermeiro
300 - Aux. Enfermagem
Tipo: ATE
Grupo 100 - Triagem
200 - Consulta
300 - Internao';
COMMENT ON COLUMN "PLANTONISTA"."COD_ATENDIMENTO" IS 'Cdigo de
identificao do atendimento.Referenciado por Seq_atendimento';
COMMENT ON COLUMN "PLANTONISTA"."DATA_UPD" IS 'Data e Hora da ultima
alterao no registro';
CREATE UNIQUE INDEX "XPKPLANTONISTA" ON "PLANTONISTA"
(
"ID_PLANTONISTA" ASC)
TABLESPACE "tbs_index";
ALTER TABLE "PLANTONISTA"
("ID_PLANTONISTA");

ADD CONSTRAINT

"XPKPLANTONISTA" PRIMARY KEY

CREATE INDEX "XIF1PLANTONISTA" ON "PLANTONISTA"


(
"COD_FUNCIONARIO" ASC,
"COD_TIPO" ASC,
"COD_GRUPO" ASC);
CREATE INDEX "XIF2PLANTONISTA" ON "PLANTONISTA"
(
"COD_ATENDIMENTO" ASC);
CREATE TABLE "TELEFONE"
(
"COD_PACIENTE" NUMBER(8) NOT NULL ,
"DDD" VARCHAR2(4) NULL ,
"NUMERO" VARCHAR2(10) NULL ,
"TIPO_TEL" VARCHAR2(10) NULL CONSTRAINT
"TELE_TIPO_CHEC_771774818" CHECK ("TIPO_TEL" IN ('RES', 'CEL', 'COM',
'REC')),
"ID_TEL" NUMBER(8) NOT NULL ,
"DATA_UPD" DATE NULL )
TABLESPACE "tbs_paciente"
COMPRESS ;
COMMENT ON TABLE "TELEFONE" IS 'DESCRIO A entidade "TELEFONE" define os
dados telefonicos dos paciententes. VOLUME ESPERADO 80000 registros para
um ano. TEMPO DE RETENO no se aplica. ROTINA DE LIMPEZA Aps cinco
anos, a alta administrao definir os parmetros para limpeza. ';
COMMENT ON COLUMN "TELEFONE"."COD_PACIENTE" IS 'Cdigo interno do paciente
Referenciado por Seq_paciente';
COMMENT ON COLUMN "TELEFONE"."DDD" IS 'Cdigo do telefone';
COMMENT ON COLUMN "TELEFONE"."NUMERO" IS 'numero do telefone';

87

COMMENT ON COLUMN "TELEFONE"."TIPO_TEL" IS 'identifica se o numero do


telefone celular, residencial ou comercial';
COMMENT ON COLUMN "TELEFONE"."ID_TEL" IS 'Cdigo de identificao do
telefone. Gerado pela trigger TEL_INS';
COMMENT ON COLUMN "TELEFONE"."DATA_UPD" IS 'Data e Hora da ultima alterao
no registro';
CREATE UNIQUE INDEX "XPKTELEFONE" ON "TELEFONE"
(
"ID_TEL" ASC,
"COD_PACIENTE" ASC
)
TABLESPACE "tbs_index";
ALTER TABLE "TELEFONE" ADD CONSTRAINT
("ID_TEL","COD_PACIENTE");

"XPKTELEFONE" PRIMARY KEY

CREATE INDEX "XIF1TELEFONE" ON "TELEFONE"


(
"COD_PACIENTE" ASC)
TABLESPACE "tbs_index";
CREATE TABLE "TIPO"
(
"COD_TIPO" CHAR(3) NOT NULL ,
"DESCRICAO" VARCHAR2(30) NULL ,
"DATA_UPD" DATE NULL )
TABLESPACE "tbs_cadastros"
COMPRESS ;
COMMENT ON TABLE "TIPO" IS 'DESCRIO A entidade "TIPO" define os
principais dados que serviro de parametros para outras tabelas.VOLUME
ESPERADO 100 registros para um ano. TEMPO DE RETENO no se
aplica.ROTINA DE LIMPEZA no se aplica. ';
COMMENT ON COLUMN "TIPO"."COD_TIPO" IS 'Cdigo de identificacao do tipo que
ira se relacionar com os grupos
FUN => Funcionario
ATE => Atendimento';
COMMENT ON COLUMN "TIPO"."DESCRICAO" IS 'Descricao do tipo';
COMMENT ON COLUMN "TIPO"."DATA_UPD" IS 'Data e Hora da ultima alterao no
registro';
CREATE UNIQUE INDEX "XPKTIPO" ON "TIPO"
(
"COD_TIPO" ASC)
TABLESPACE "tbs_index";
ALTER TABLE "TIPO" ADD CONSTRAINT

"XPKTIPO" PRIMARY KEY ("COD_TIPO");

CREATE TABLE "TRIAGEM"


(
"PRE_PATOLOGIA" VARCHAR2(100) NULL ,
"ID_PLANTONISTA" NUMBER(8) NULL ,
"DATA_UPD" DATE NULL ,
"COD_ATENDIMENTO" NUMBER(8) NOT NULL )
TABLESPACE "tbs_triagem";
COMMENT ON TABLE "TRIAGEM" IS 'DESCRIO A entidade "TRIAGEM" define os
principais dados referentes internacao do paciente.
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';

88

COMMENT ON COLUMN "TRIAGEM"."PRE_PATOLOGIA" IS 'anotaes de seleco de


triagem, ou seja, seleo para qual especialidade medica o paciente ser
encaminhado';
COMMENT ON COLUMN "TRIAGEM"."ID_PLANTONISTA" IS 'Cdigo interno do
plantonista.Gerado pela trigger PLA_INS';
COMMENT ON COLUMN "TRIAGEM"."DATA_UPD" IS 'Data e Hora da ultima alterao
no registro';
COMMENT ON COLUMN "TRIAGEM"."COD_ATENDIMENTO" IS 'Cdigo de identificao
do atendimento. Referenciado por Seq_atendimento';
CREATE UNIQUE INDEX "XPKTRIAGEM" ON "TRIAGEM"
(
"COD_ATENDIMENTO" ASC)
TABLESPACE "tbs_index";
ALTER TABLE "TRIAGEM"
("COD_ATENDIMENTO");

ADD CONSTRAINT

"XPKTRIAGEM" PRIMARY KEY

CREATE INDEX "XIF2TRIAGEM" ON "TRIAGEM"


(
"ID_PLANTONISTA" ASC);
CREATE INDEX "XIF3TRIAGEM" ON "TRIAGEM"
(
"COD_ATENDIMENTO" ASC);
ALTER TABLE "ATENDIMENTO"
ADD (CONSTRAINT "R_67" FOREIGN KEY ("COD_TIPO","COD_GRUPO")
REFERENCES "GRUPO"("COD_TIPO","COD_GRUPO") ON DELETE SET NULL);
ALTER TABLE "ATENDIMENTO"
ADD (CONSTRAINT "R_80" FOREIGN KEY ("COD_PACIENTE") REFERENCES
"PACIENTE"("COD_PACIENTE") ON DELETE SET NULL);
ALTER TABLE "CAD_FUNCIONARIO"
ADD (CONSTRAINT "R_70" FOREIGN KEY ("COD_TIPO","COD_GRUPO")
REFERENCES "GRUPO"("COD_TIPO","COD_GRUPO"));

ALTER TABLE "DOCUMENTO"


ADD (CONSTRAINT "R_4" FOREIGN KEY ("COD_PACIENTE") REFERENCES
"PACIENTE"("COD_PACIENTE"));
ALTER TABLE "ENDERECO"
ADD (CONSTRAINT "R_2" FOREIGN KEY ("COD_PACIENTE") REFERENCES
"PACIENTE"("COD_PACIENTE"));
ALTER TABLE "EXAMES"
ADD (CONSTRAINT "R_38" FOREIGN KEY ("COD_EXAME") REFERENCES
"CAD_EXAME"("COD_EXAME") ON DELETE SET NULL);
ALTER TABLE "EXAMES"
ADD (CONSTRAINT "R_75" FOREIGN KEY ("COD_ATENDIMENTO") REFERENCES
"ATENDIMENTO"("COD_ATENDIMENTO") ON DELETE SET NULL);
ALTER TABLE "GRUPO"
ADD (CONSTRAINT
"TIPO"("COD_TIPO"));

"R_66" FOREIGN KEY ("COD_TIPO") REFERENCES

ALTER TABLE "INTERNACAO"

89

ADD (CONSTRAINT "R_71" FOREIGN KEY ("COD_INTERNACAO") REFERENCES


"ATENDIMENTO"("COD_ATENDIMENTO"));
ALTER TABLE "INTERNACAO"
ADD (CONSTRAINT "R_78" FOREIGN KEY ("COD_CONSULTA") REFERENCES
"ATENDIMENTO"("COD_ATENDIMENTO") ON DELETE SET NULL);
ALTER TABLE "MEDICACAO"
ADD (CONSTRAINT "R_31" FOREIGN KEY ("COD_MEDICACAO") REFERENCES
"CAD_MEDICACAO"("COD_MEDICACAO") ON DELETE SET NULL);
ALTER TABLE "MEDICACAO"
ADD (CONSTRAINT "R_77" FOREIGN KEY ("COD_ATENDIMENTO") REFERENCES
"ATENDIMENTO"("COD_ATENDIMENTO") ON DELETE SET NULL);
ALTER TABLE "PATOLOGIA"
ADD (CONSTRAINT "R_55" FOREIGN KEY ("COD_PATOLOGIA") REFERENCES
"CAD_PATOLOGIA"("COD_PATOLOGIA") ON DELETE SET NULL);
ALTER TABLE "PATOLOGIA"
ADD (CONSTRAINT "R_76" FOREIGN KEY ("COD_ATENDIMENTO") REFERENCES
"ATENDIMENTO"("COD_ATENDIMENTO") ON DELETE SET NULL);
ALTER TABLE "PLANTONISTA"
ADD (CONSTRAINT "R_53" FOREIGN KEY
("COD_FUNCIONARIO","COD_TIPO","COD_GRUPO") REFERENCES
"CAD_FUNCIONARIO"("COD_FUNCIONARIO","COD_TIPO","COD_GRUPO") ON DELETE SET
NULL);
ALTER TABLE "PLANTONISTA"
ADD (CONSTRAINT "R_74" FOREIGN KEY ("COD_ATENDIMENTO") REFERENCES
"ATENDIMENTO"("COD_ATENDIMENTO") ON DELETE SET NULL);
ALTER TABLE "TELEFONE"
ADD (CONSTRAINT "R_3" FOREIGN KEY ("COD_PACIENTE") REFERENCES
"PACIENTE"("COD_PACIENTE"));
ALTER TABLE "TRIAGEM"
ADD (CONSTRAINT "R_54" FOREIGN KEY ("ID_PLANTONISTA") REFERENCES
"PLANTONISTA"("ID_PLANTONISTA") ON DELETE SET NULL);
ALTER TABLE "TRIAGEM"
ADD (CONSTRAINT "R_79" FOREIGN KEY ("COD_ATENDIMENTO") REFERENCES
"ATENDIMENTO"("COD_ATENDIMENTO"));
CREATE OR REPLACE TRIGGER CPA_TRI
BEFORE INSERT OR UPDATE ON CAD_PATOLOGIA
FOR EACH ROW
BEGIN
SELECT SYSDATE INTO :new.DATA_UPD FROM DUAL;
END CPA_TRI;
/
CREATE OR REPLACE TRIGGER TIP_TRI
BEFORE INSERT OR UPDATE ON TIPO
FOR EACH ROW
BEGIN
SELECT SYSDATE INTO :new.DATA_UPD FROM DUAL;
END TIP_TRI;
/
CREATE OR REPLACE TRIGGER GRU_TRI

90

BEFORE INSERT OR UPDATE ON GRUPO


FOR EACH ROW
BEGIN
SELECT SYSDATE INTO :new.DATA_UPD FROM DUAL;
END GRU_TRI;
/
CREATE OR REPLACE TRIGGER PAC_TRI
BEFORE INSERT OR UPDATE ON PACIENTE
FOR EACH ROW
BEGIN
SELECT SYSDATE INTO :new.DATA_UPD FROM DUAL;
END PAC_TRI;
/
CREATE OR REPLACE TRIGGER ATE_TRI
BEFORE INSERT OR UPDATE ON ATENDIMENTO
FOR EACH ROW
BEGIN
SELECT SYSDATE INTO :new.DATA_UPD FROM DUAL;
END ATE_TRI;
/
CREATE OR REPLACE TRIGGER "PAT_INS"
BEFORE INSERT ON PATOLOGIA
FOR EACH ROW
declare
cursor nova_linha is
SELECT * FROM PATOLOGIA 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_PATOLOGIA)+1 INTO :new.ID_PATOLOGIA FROM PATOLOGIA
WHERE COD_ATENDIMENTO= :new.COD_ATENDIMENTO;
ELSE
SELECT 1 INTO :new.ID_PATOLOGIA FROM DUAL;
END IF;
END PAT_INS;
/
CREATE OR REPLACE TRIGGER PAT_TRI
BEFORE INSERT OR UPDATE ON PATOLOGIA
FOR EACH ROW
BEGIN
SELECT SYSDATE INTO :new.DATA_UPD FROM DUAL;
END PAT_TRI;
/
CREATE OR REPLACE TRIGGER CEX_TRI
BEFORE INSERT OR UPDATE ON CAD_EXAME
FOR EACH ROW

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;
/

CREATE OR REPLACE TRIGGER CME_TRI


BEFORE INSERT OR UPDATE ON CAD_MEDICACAO
FOR EACH ROW
BEGIN
SELECT SYSDATE INTO :new.DATA_UPD FROM DUAL;
END CME_TRI;
/
CREATE OR REPLACE TRIGGER "MED_INS"
BEFORE INSERT ON MEDICACAO
FOR EACH ROW
declare
cursor nova_linha is
SELECT * FROM MEDICACAO 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

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

SELECT SYSDATE INTO :new.DATA_UPD FROM DUAL;


END FUN_TRI;
/
CREATE OR REPLACE TRIGGER "PLA_INS"
BEFORE INSERT ON PLANTONISTA
FOR EACH ROW
declare
cursor nova_linha is
SELECT * FROM PLANTONISTA 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_PLANTONISTA)+1 INTO :new.ID_PLANTONISTA FROM
PLANTONISTA
WHERE COD_ATENDIMENTO= :new.COD_ATENDIMENTO;
ELSE
SELECT 1 INTO :new.ID_PLANTONISTA FROM DUAL;
END IF;
END PLA_INS;
/
CREATE OR REPLACE TRIGGER PLA_TRI
BEFORE INSERT OR UPDATE ON PLANTONISTA
FOR EACH ROW
BEGIN
SELECT SYSDATE INTO :new.DATA_UPD FROM DUAL;
END PLA_TRI;
/
CREATE OR REPLACE TRIGGER TRI_TRI
BEFORE INSERT OR UPDATE ON TRIAGEM
FOR EACH ROW
BEGIN
SELECT SYSDATE INTO :new.DATA_UPD FROM DUAL;
END TRI_TRI;
/
CREATE OR REPLACE TRIGGER "DOC_INS"
BEFORE INSERT ON DOCUMENTO
FOR EACH ROW
declare
cursor nova_linha is
SELECT * FROM DOCUMENTO 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;

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;

SIZE 250 AUTOMATIC PAGESIZE 32 K ;

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

COMMENT ON TABLESPACE TBS_TRIAGEM_12010 IS 'Contm as informaes dos


atendimentos do tipo triagem do 1 semestre de 2010';
CREATE LARGE TABLESPACE TBS_CONSULT_12010 PAGESIZE 32 K MANAGED BY
DATABASE USING ( FILE 'C:\DB2\tbs_consult_12010' 640 ) EXTENTSIZE 64
OVERHEAD 10.5 PREFETCHSIZE 64 TRANSFERRATE 0.14 BUFFERPOOL BPPG32K ;
COMMENT ON TABLESPACE TBS_CONSULT_12010 IS 'Contm as informaes dos
atendimentos do tipo consulta do 1 semestre de 2010';
CREATE LARGE TABLESPACE TBS_INTERNA_12010 PAGESIZE 32 K MANAGED BY
DATABASE USING ( FILE 'C:\DB2\tbs_interna_12010' 640 ) EXTENTSIZE 64
OVERHEAD 10.5 PREFETCHSIZE 64 TRANSFERRATE 0.14 BUFFERPOOL BPPG32K ;
COMMENT ON TABLESPACE TBS_INTERNA_12010 IS 'Contm as informaes dos
atendimentos do tipo internao do 1 semestre de 2010';
CREATE LARGE TABLESPACE TBS_CONSULT_22010 PAGESIZE 32 K MANAGED BY
DATABASE USING ( FILE 'C:\DB2\tbs_consult_22010' 640 ) EXTENTSIZE 64
OVERHEAD 10.5 PREFETCHSIZE 64 TRANSFERRATE 0.14 BUFFERPOOL BPPG32K ;
COMMENT ON TABLESPACE TBS_CONSULT_22010 IS 'Contm as informaes dos
atendimentos do tipo consulta do 2 semestre de 2010';
CREATE LARGE TABLESPACE TBS_INTERNA_22010 PAGESIZE 32 K MANAGED BY
DATABASE USING ( FILE 'C:\DB2\tbs_interna_22010' 640 ) EXTENTSIZE 64
OVERHEAD 10.5 PREFETCHSIZE 64 TRANSFERRATE 0.14 BUFFERPOOL BPPG32K ;
COMMENT ON TABLESPACE TBS_INTERNA_22010 IS 'Contm as informaes dos
atendimentos do tipo internao do 2 semestre de 2010';
CREATE LARGE TABLESPACE TBS_TRIAGEM_22010 PAGESIZE 32 K MANAGED BY
DATABASE USING ( FILE 'C:\DB2\tbs_triagem_22010' 640 ) EXTENTSIZE 64
OVERHEAD 10.5 PREFETCHSIZE 64 TRANSFERRATE 0.14 BUFFERPOOL BPPG32K ;
COMMENT ON TABLESPACE TBS_TRIAGEM_22010 IS 'Contm as informaes dos
atendimentos do tipo triagem do 2 semestre de 2010';
CREATE LARGE TABLESPACE TBS_INTER_12010 PAGESIZE 32 K MANAGED BY
DATABASE USING ( FILE 'C:\DB2\tbs_inter_12010' 640 ) EXTENTSIZE 64
OVERHEAD 10.5 PREFETCHSIZE 64 TRANSFERRATE 0.14 BUFFERPOOL BPPG32K ;
COMMENT ON TABLESPACE TBS_INTER_12010 IS 'Contm as informaes das
internaes 1 semestre de 2010';
CREATE LARGE TABLESPACE TBS_INTER_22010 PAGESIZE 32 K MANAGED BY
DATABASE USING ( FILE 'C:\DB2\tbs_inter_22010' 640 ) EXTENTSIZE 64
OVERHEAD 10.5 PREFETCHSIZE 64 TRANSFERRATE 0.14 BUFFERPOOL BPPG32K ;
COMMENT ON TABLESPACE TBS_INTER_22010 IS 'Contm as informaes das
internaes 2 semestre de 2010';
CREATE LARGE TABLESPACE TBS_EXA_12010 PAGESIZE 32 K MANAGED BY DATABASE
USING ( FILE 'C:\DB2\tbs_exa_12010' 640 ) EXTENTSIZE 64 OVERHEAD 10.5
PREFETCHSIZE 64 TRANSFERRATE 0.14 BUFFERPOOL BPPG32K ;
COMMENT ON TABLESPACE TBS_EXA_12010 IS 'Contm as informaes dos exames 1
semestre de 2010';
CREATE LARGE TABLESPACE TBS_EXA_22010 PAGESIZE 32 K MANAGED BY DATABASE
USING ( FILE 'C:\DB2\tbs_exa_22010' 640 ) EXTENTSIZE 64 OVERHEAD 10.5
PREFETCHSIZE 64 TRANSFERRATE 0.14 BUFFERPOOL BPPG32K ;
COMMENT ON TABLESPACE TBS_EXA_22010 IS 'Contm as informaes dos exames 2
semestre de 2010';
CREATE LARGE TABLESPACE TBS_MED_12010 PAGESIZE 32 K MANAGED BY DATABASE
USING ( FILE 'C:\DB2\tbs_med_12010' 640 ) EXTENTSIZE 64 OVERHEAD 10.5
PREFETCHSIZE 64 TRANSFERRATE 0.14 BUFFERPOOL BPPG32K ;

97

COMMENT ON TABLESPACE TBS_MED_12010 IS 'Contm as informaes das


medicaes 1 semestre de 2010';
CREATE LARGE TABLESPACE TBS_MED_22010 PAGESIZE 32 K MANAGED BY DATABASE
USING ( FILE 'C:\DB2\tbs_med_22010' 640 ) EXTENTSIZE 64 OVERHEAD 10.5
PREFETCHSIZE 64 TRANSFERRATE 0.14 BUFFERPOOL BPPG32K ;
COMMENT ON TABLESPACE TBS_MED_22010 IS 'Contm as informaes das
medicaes 2 semestre de 2010';
CREATE REGULAR TABLESPACE TBS_INDEX PAGESIZE 32 K MANAGED BY DATABASE
USING ( FILE 'C:\DB2\tbs_index' 1024 ) EXTENTSIZE 64 OVERHEAD 10.5
PREFETCHSIZE 64 TRANSFERRATE 0.14 BUFFERPOOL BPPG32K DROPPED TABLE
RECOVERY OFF;
COMMENT ON TABLESPACE TBS_INDEX IS 'Contm todos os ndices';
CREATE SEQUENCE patd.seq_atendimento AS DECIMAL(8,0)
MINVALUE 1 MAXVALUE 99999999
START WITH 1 INCREMENT BY 1
CACHE 10 NO CYCLE ORDER;
CREATE SEQUENCE patd.seq_exame AS DECIMAL(8,0)
MINVALUE 1 MAXVALUE 99999999
START WITH 1 INCREMENT BY 1
CACHE 10 NO CYCLE ORDER;
CREATE SEQUENCE patd.seq_funcionario AS DECIMAL(8,0)
MINVALUE 1 MAXVALUE 99999999
START WITH 1 INCREMENT BY 1
CACHE 10 NO CYCLE ORDER;
CREATE SEQUENCE patd.seq_medicacao AS DECIMAL(8,0)
MINVALUE 1 MAXVALUE 99999999
START WITH 1 INCREMENT BY 1
CACHE 10 NO CYCLE ORDER;
CREATE SEQUENCE patd.seq_paciente AS DECIMAL(8,0)
MINVALUE 1 MAXVALUE 99999999
START WITH 1 INCREMENT BY 1
CACHE 10 NO CYCLE ORDER;
CREATE SEQUENCE patd.seq_patologia AS DECIMAL(8,0)
MINVALUE 1 MAXVALUE 99999999
START WITH 1 INCREMENT BY 1
CACHE 10 NO CYCLE ORDER;

CREATE TABLE PATD.CAD_PATOLOGIA


( COD_PATOLOGIA DECIMAL (8, 0) NOT NULL ,
DESCRICAO CHARACTER (18) ,
DATA_UPD DATE ,
CONSTRAINT PK_CAD_PATOLOGIA PRIMARY KEY ( COD_PATOLOGIA) )
IN TBS_CADASTROS INDEX IN TBS_INDEX COMPRESS YES ;
COMMENT ON TABLE PATD.CAD_PATOLOGIA IS 'define os dados referentes ao
cadastro dos tipos de patologia';
COMMENT ON PATD.CAD_PATOLOGIA
(COD_PATOLOGIA IS 'Cdigo identificador da patologiaReferenciado por
Seq_patologia',
DESCRICAO IS 'Descrio da patologia',
DATA_UPD IS 'Data e Hora da ultima alterao no registro') ;
CREATE TABLE PATD.TIPO

98

( COD_TIPO CHAR(3) NOT NULL ,


DESCRICAO VARCHAR(30) ,
DATA_UPD TIMESTAMP ,
CONSTRAINT PK_TIPO PRIMARY KEY (COD_TIPO))
IN TBS_CADASTROS INDEX IN TBS_INDEX COMPRESS YES ;
COMMENT ON TABLE PATD.TIPO IS 'Principais dados que serviro de parametros
para outras tabelas.';
COMMENT ON PATD.TIPO
(COD_TIPO IS 'Cdigo de identificacao do tipo que ira se relacionar com os
grupos FUN => Funcionario ATE => Atendimento',
DESCRICAO IS 'Descricao do tipo',
DATA_UPD IS 'Data e Hora da ultima alterao no registro');
CREATE TABLE PATD.GRUPO
( COD_TIPO CHAR(3) NOT NULL ,
COD_GRUPO DECIMAL(3) NOT NULL ,
DESCRICAO VARCHAR(30) ,
DATA_UPD TIMESTAMP ,
CONSTRAINT PK_GRUPO PRIMARY KEY (COD_TIPO,COD_GRUPO),
CONSTRAINT GRUPO_FK_TIPO FOREIGN KEY (COD_TIPO) REFERENCES
PATD.TIPO(COD_TIPO))
IN TBS_CADASTROS INDEX IN TBS_INDEX COMPRESS YES ;
COMMENT ON TABLE PATD.GRUPO IS 'Principais dados que serviro de parametros
para outras tabelas.';
COMMENT ON PATD.GRUPO
(COD_TIPO IS 'Cdigo de identificacao do tipo que ira se relacionar com os
grupos FUN => Funcionario ATE => Atendimento',
COD_GRUPO IS 'Cdigo de identificao do grupo Tipo: FUN Grupo 1 - Mdico
2 - Enfermeiro 3 - Aux. Enfermagem Tipo: ATE Grupo 1 - Triagem 2 - Consulta
3 - Internao',
DESCRICAO IS 'descricao do grupo',
DATA_UPD IS 'Data e Hora da ultima alterao no registro');
CREATE TABLE PATD.PACIENTE
( COD_PACIENTE DECIMAL(8) NOT NULL ,
NOME VARCHAR(40)
,
NUM_CARTAO_CONVENIO VARCHAR(24)
,
DIREITO_PLANO_CONVENIO VARCHAR(8)
,
DATA_UPD TIMESTAMP
,
CONSTRAINT PK_PACIENTE PRIMARY KEY (COD_PACIENTE))
IN TBS_PACIENTE INDEX IN TBS_INDEX COMPRESS YES ;
COMMENT ON TABLE PATD.PACIENTE IS 'Principais dados dos paciententes que
passaro por atendimento.';
COMMENT ON PATD.PACIENTE
(COD_PACIENTE IS 'Cdigo interno do paciente Referenciado por
Seq_paciente',
NOME IS 'Nome do paciente',
NUM_CARTAO_CONVENIO IS 'numero do associado no convenio',
DIREITO_PLANO_CONVENIO IS 'numero de identificao padro conforme ANS de
direito a exames, tipo de acomodaes, etc',
DATA_UPD IS 'Data e Hora da ultima alterao no registro');
CREATE TABLE PATD.ATENDIMENTO
( COD_ATENDIMENTO DECIMAL (8, 0)
COD_TIPO CHARACTER (3) ,
COD_GRUPO DECIMAL (3, 0) ,
COD_PACIENTE DECIMAL (8, 0) ,
DATA_INICIO TIMESTAMP ,
DATA_TERMINO TIMESTAMP ,
STATUS CHARACTER (18) ,
DATA_UPD TIMESTAMP ,

NOT NULL ,

99

CONSTRAINT PK_ATENDIMENTO PRIMARY KEY ( COD_ATENDIMENTO) ,


CONSTRAINT ATEN_STAT_CHECK CHECK (STATUS IN ('ABERTO', 'FECHADO'))
ENFORCED ENABLE QUERY OPTIMIZATION ) PARTITION BY RANGE (DATA_INICIO
NULLS LAST)
(PARTITION P_1SEM_2010 STARTING FROM (MINVALUE) EXCLUSIVE ENDING AT
('30/06/2010') INCLUSIVE IN TBS_TRIAGEM_12010 ,
PARTITION P_2SEM_2010 STARTING FROM ('01/07/2010') INCLUSIVE ENDING AT
('31/12/2010') INCLUSIVE IN TBS_TRIAGEM_22010 )
INDEX IN TBS_INDEX ;
COMMENT ON TABLE PATD.ATENDIMENTO IS 'Define os principais dados referentes
aos vrios tipos de atendimentos como TRIAGEM,CONSULTA e a INTERNACAO
diferenciando pelo tipo e grupo do atendimento';
COMMENT ON PATD.ATENDIMENTO
(STATUS IS 'Status que indica se o atendimento est aberto /fechado',
COD_GRUPO IS 'Cdigo de identificao do grupo de atendimento',
DATA_UPD IS 'Data e Hora da ultima alterao no registro',
COD_PACIENTE IS 'Cdigo interno do paciente. Referenciado por
Seq_paciente',
DATA_TERMINO IS 'Data/hora de termino do atendimento',
COD_ATENDIMENTO IS 'Cdigo de identificao do atendimento. Referenciado
por Seq_atendimento',
DATA_INICIO IS 'Data/hora de inicio do atendimento',
COD_TIPO IS 'Cdigo de identificao do Tipo de atendimento' ) ;
ALTER TABLE PATD.ATENDIMENTO ADD CONSTRAINT ATEN_FK_GRP FOREIGN KEY
(COD_TIPO,COD_GRUPO) REFERENCES PATD.GRUPO(COD_TIPO,COD_GRUPO);
ALTER TABLE PATD.ATENDIMENTO ADD CONSTRAINT ATEN_FK_PACIEN FOREIGN KEY
(COD_PACIENTE) REFERENCES PATD.PACIENTE(COD_PACIENTE);
CREATE TABLE PATD.PATOLOGIA
( ID_PATOLOGIA CHAR(18) NOT NULL ,
COD_PATOLOGIA DECIMAL(8)
,
COD_ATENDIMENTO DECIMAL(8)
,
OBSERVACAO VARCHAR(30)
,
DATA_UPD TIMESTAMP
,
CONSTRAINT PK_PATOLOGIA PRIMARY KEY (ID_PATOLOGIA),
CONSTRAINT PAT_FK_CADPAT FOREIGN KEY (COD_PATOLOGIA) REFERENCES
PATD.CAD_PATOLOGIA(COD_PATOLOGIA),
CONSTRAINT PAT_FK_CADATE FOREIGN KEY (COD_ATENDIMENTO) REFERENCES
PATD.ATENDIMENTO(COD_ATENDIMENTO));
COMMENT ON TABLE PATD.PATOLOGIA IS 'Dados referentes as patologias
relacionadas aos pacientes da consulta / internacao';
COMMENT ON PATD.PATOLOGIA
(ID_PATOLOGIA IS 'Cdigo identificador da patologia do paciente, Gerado
pela trigger PAT_INS',
COD_PATOLOGIA IS 'Cdigo identificador da patologia Referenciado por
Seq_patologia',
COD_ATENDIMENTO IS 'Cdigo de identificao do atendimento Referenciado
por Seq_atendimento',
OBSERVACAO IS 'Observao da patologia',
DATA_UPD IS 'Data e Hora da ultima alterao no registro');
CREATE TABLE PATD.CAD_EXAME
( COD_EXAME DECIMAL(8) NOT NULL ,
DESCRICAO VARCHAR(100)
,
DATA_UPD TIMESTAMP
,
CONSTRAINT PK_CAD_EXAME PRIMARY KEY (COD_EXAME))
IN tbs_cadastros INDEX IN TBS_INDEX;
COMMENT ON TABLE PATD.CAD_EXAME IS 'Define os dados referentes ao cadastro
dos tipos de exames';
COMMENT ON PATD.CAD_EXAME

100

(COD_EXAME IS 'Cdigo interno do exame Referenciado por Seq_exame',


DESCRICAO IS 'anotaes sobre o exame, resultados, etc.',
DATA_UPD IS 'Data e Hora da ultima alterao no registro');
CREATE TABLE PATD.EXAMES
( ID_EXAME DECIMAL(8) NOT NULL ,
COD_EXAME DECIMAL(8)
,
DATA_PEDIDO TIMESTAMP
,
DATA_CHEGADA TIMESTAMP
,
MATERIAL_COLHIDO VARCHAR(60)
,
RESULTADO VARCHAR(60)
,
COD_ATENDIMENTO DECIMAL(8)
,
STATUS CHAR(18) CONSTRAINT EXAM_STAT_CHEC CHECK (STATUS IN ('ABERTO',
'FECHADO')) ENFORCED ENABLE QUERY OPTIMIZATION,
DATA_UPD TIMESTAMP
,
CONSTRAINT PK_EXAMES PRIMARY KEY (ID_EXAME),
CONSTRAINT EXAM_FK_CEXAM FOREIGN KEY (COD_EXAME) REFERENCES
PATD.CAD_EXAME(COD_EXAME) ,
CONSTRAINT EXAM_FK_ATED FOREIGN KEY (COD_ATENDIMENTO) REFERENCES
PATD.ATENDIMENTO(COD_ATENDIMENTO))
PARTITION BY RANGE (DATA_PEDIDO NULLS LAST)
(PARTITION P_EXA_12010 STARTING FROM (MINVALUE) EXCLUSIVE ENDING AT
('30/06/2010') INCLUSIVE IN tbs_exa_12010,
PARTITION P_EXA_22010 STARTING FROM ('01/07/2010') INCLUSIVE ENDING AT
('31/12/2010') INCLUSIVE IN tbs_exa_22010)
INDEX IN TBS_INDEX ;
COMMENT ON TABLE PATD.EXAMES IS 'Define os dados dos exames solicitados
durante as consultas/internacao.';
COMMENT ON PATD.EXAMES
(COD_EXAME IS 'Cdigo interno do exame Referenciado por Seq_exame',
DATA_PEDIDO IS 'Data do pedido do exame',
DATA_CHEGADA IS 'Data de chegada do exame',
MATERIAL_COLHIDO IS 'anotaes do material colhido do paciente',
RESULTADO IS 'resultados do exame',
COD_ATENDIMENTO IS 'Cdigo de identificao do atendimento Referenciado por
Seq_atendimento',
ID_EXAME IS 'Identificador do exame Gerado pela trigger EXA_INS',
STATUS IS 'Status do exame Fechado/Aberto',
DATA_UPD IS 'Data e Hora da ultima alterao no registro');
CREATE TABLE PATD.CAD_MEDICACAO
(COD_MEDICACAO DECIMAL(8) NOT NULL ,
DESCRICAO VARCHAR(100)
,
DATA_UPD TIMESTAMP
,
CONSTRAINT PK_CAD_MEDICACAO PRIMARY KEY (COD_MEDICACAO))
IN tbs_cadastros INDEX IN tbs_index COMPRESS YES;
COMMENT ON TABLE PATD.CAD_MEDICACAO IS 'Define os dados referentes ao
cadastro dos tipos de medicacao';
COMMENT ON PATD.CAD_MEDICACAO
(COD_MEDICACAO IS 'Cdigo interno de medicao Referenciado por
Seq_medicacao',
DESCRICAO IS 'descrio da medicao',
DATA_UPD IS 'Data e Hora da ultima alterao no registro');
CREATE TABLE PATD.MEDICACAO
(ID_MEDICACAO DECIMAL(9) NOT NULL ,
COD_MEDICACAO DECIMAL(8)
,
DATA DATE
,
HORA TIME
,
COD_ATENDIMENTO DECIMAL(8) ,
DATA_UPD TIMESTAMP
,

101

CONSTRAINT PK_MEDICACAO PRIMARY KEY (ID_MEDICACAO),


CONSTRAINT MED_FK_CMED FOREIGN KEY (COD_MEDICACAO) REFERENCES
PATD.CAD_MEDICACAO(COD_MEDICACAO) ,
CONSTRAINT MED_FK_ATEND FOREIGN KEY (COD_ATENDIMENTO) REFERENCES
PATD.ATENDIMENTO(COD_ATENDIMENTO) )
PARTITION BY RANGE (DATA NULLS LAST)
(PARTITION P_MED_12010 STARTING FROM (MINVALUE) EXCLUSIVE ENDING AT
('30/06/2010') INCLUSIVE IN tbs_med_12010,
PARTITION P_MED_22010 STARTING FROM ('01/07/2010') INCLUSIVE ENDING AT
('31/12/2010') INCLUSIVE IN tbs_med_22010)
INDEX IN TBS_INDEX;
COMMENT ON TABLE PATD.MEDICACAO IS 'Define os dados referentes as
medicaes prescritas ao pacientes da consulta / internacao';
COMMENT ON PATD.MEDICACAO
(COD_MEDICACAO IS 'Cdigo interno de medicao Referenciado por
Seq_medicacao',
ID_MEDICACAO IS 'Identificador da medicao Gerado pela trigger MED_INS',
DATA IS 'Data da aplicao',
HORA IS 'Hora da aplicao',
COD_ATENDIMENTO IS 'Cdigo de identificao do atendimento Referenciado
por Seq_atendimento',
DATA_UPD IS 'Data e Hora da ultima alterao no registro');
CREATE TABLE PATD.INTERNACAO
(COD_INTERNACAO DECIMAL(8) NOT NULL ,
COD_CONSULTA DECIMAL(8)
,
NUM_LEITO VARCHAR(8)
,
DATA_ENTRADA TIMESTAMP
,
DATA_SAIDA TIMESTAMP ,
DATA_UPD TIMESTAMP
,
CONSTRAINT PK_INTERNACAO PRIMARY KEY (COD_INTERNACAO),
CONSTRAINT INTR_CINT_FK_ATEND FOREIGN KEY (COD_INTERNACAO) REFERENCES
ATENDIMENTO(COD_ATENDIMENTO),
CONSTRAINT INTR_CCON_FK_ATEND FOREIGN KEY (COD_CONSULTA) REFERENCES
ATENDIMENTO(COD_ATENDIMENTO))
PARTITION BY RANGE (DATA_UPD)
(PARTITION P_INTR_1SEM STARTING FROM (MINVALUE) EXCLUSIVE ENDING AT
('30/06/2010') INCLUSIVE IN tbs_inter_12010,
PARTITION P_INTR_2SEM STARTING FROM ('01/07/2010') INCLUSIVE ENDING AT
('31/12/2010') INCLUSIVE IN tbs_inter_22010)
INDEX IN TBS_INDEX;
COMMENT ON TABLE PATD.INTERNACAO IS 'Define os principais dados referentes
internacao do paciente';
COMMENT ON PATD.INTERNACAO
(COD_INTERNACAO IS 'Cdigo de identificao do atendimento Referenciado por
Seq_atendimento',
COD_CONSULTA IS 'Cdigo de identificao do atendimento Referenciado por
Seq_atendimento',
NUM_LEITO IS 'Nmero do leito',
DATA_ENTRADA IS 'Data/hora de entrada na internao',
DATA_SAIDA IS 'Data/hora da saida da internao',
DATA_UPD IS 'Data e Hora da ultima alterao no registro');
CREATE TABLE PATD.CAD_FUNCIONARIO
(COD_FUNCIONARIO DECIMAL(8) NOT NULL ,
COD_TIPO CHAR(3) NOT NULL ,
COD_GRUPO DECIMAL(3) NOT NULL ,
NOME VARCHAR(40)
,
REGISTRO DECIMAL(15)
,
DATA_UPD TIMESTAMP
,

102

CONSTRAINT PK_CAD_FUNCIONARIO PRIMARY KEY


(COD_FUNCIONARIO,COD_TIPO,COD_GRUPO),
CONSTRAINT FUNC_FK_GRUPO FOREIGN KEY (COD_TIPO,COD_GRUPO) REFERENCES
PATD.GRUPO(COD_TIPO,COD_GRUPO))
IN tbs_cadastros index in tbs_index COMPRESS YES;
COMMENT ON TABLE PATD.CAD_FUNCIONARIO IS 'Define os dados referentes ao
cadastro dos tipos de exames';
COMMENT ON PATD.CAD_FUNCIONARIO
(COD_FUNCIONARIO IS 'Cdigo do plantonista Referenciado por
Seq_Funcionario',
NOME IS 'nome do funcionario',
REGISTRO IS 'Registro do profissional',
COD_TIPO IS 'Cdigo de identificacao do tipo que ira se relacionar com os
grupos FUN => Funcionario ATE => Atendimento ',
COD_GRUPO IS 'Cdigo de identificao do grupo Tipo: FUN Grupo 1 - Mdico
2 - Enfermeiro 3 - Aux. Enfermagem Tipo: ATE Grupo 1 - Triagem 2 - Consulta
3 - Internao',
DATA_UPD IS 'Data e Hora da ultima alterao no registro');

CREATE TABLE PATD.PLANTONISTA


(ID_PLANTONISTA DECIMAL(8) NOT NULL ,
COD_FUNCIONARIO DECIMAL(8)
,
COD_TIPO CHAR(3)
,
COD_GRUPO DECIMAL(3)
,
COD_ATENDIMENTO DECIMAL(8)
,
DATA_INICIO TIMESTAMP ,
DATA_FIM TIMESTAMP ,
DATA_UPD TIMESTAMP
,
CONSTRAINT PK_PLANTONISTA PRIMARY KEY (ID_PLANTONISTA),
CONSTRAINT PLANT_FK_FUNC FOREIGN KEY (COD_FUNCIONARIO,COD_TIPO,COD_GRUPO)
REFERENCES PATD.CAD_FUNCIONARIO(COD_FUNCIONARIO,COD_TIPO,COD_GRUPO),
CONSTRAINT PLANT_FK_ATEND FOREIGN KEY (COD_ATENDIMENTO) REFERENCES
PATD.ATENDIMENTO(COD_ATENDIMENTO))
IN tbs_cadastros index in tbs_index;
COMMENT ON TABLE PATD.PLANTONISTA IS 'Referencia os profissionais que estao
responsaveis pelos atendimentos na triagem / consulta / internacao';
COMMENT ON PATD.PLANTONISTA
(ID_PLANTONISTA IS 'Cdigo interno do plantonista Gerado pela trigger
PLA_INS',
COD_FUNCIONARIO IS 'Cdigo do plantonista Referenciado por
Seq_Funcionario',
COD_TIPO IS 'Cdigo de identificacao do tipo que ira se relacionar com os
grupos FUN => Funcionario ATE => Atendimento',
COD_GRUPO IS 'Cdigo de identificao do grupo Tipo: FUN Grupo 1 - Mdico
2 - Enfermeiro 3 - Aux. Enfermagem Tipo: ATE Grupo 1 - Triagem 2 - Consulta
3 - Internao',
COD_ATENDIMENTO IS 'Cdigo de identificao do atendimento Referenciado
por Seq_atendimento',
DATA_INICIO IS 'Data e Hora do inicio do plantao',
DATA_FIM IS 'Data e Hora do fim do plantao',
DATA_UPD IS 'Data e Hora da ultima alterao no registro');
CREATE TABLE PATD.TRIAGEM
(COD_ATENDIMENTO DECIMAL(8) NOT NULL ,
PRE_PATOLOGIA VARCHAR(100)
,
ID_PLANTONISTA DECIMAL(8)
,
DATA_UPD TIMESTAMP
,
CONSTRAINT PK_TRIAGEM PRIMARY KEY (COD_ATENDIMENTO),
CONSTRAINT TRIAG_FK_PLANTO FOREIGN KEY (ID_PLANTONISTA) REFERENCES
PATD.PLANTONISTA(ID_PLANTONISTA),

103

CONSTRAINT TRIAG_FK_ATEND FOREIGN KEY (COD_ATENDIMENTO) REFERENCES


PATD.ATENDIMENTO(COD_ATENDIMENTO))
in tbs_paciente index in tbs_index;
COMMENT ON TABLE PATD.TRIAGEM IS 'Define os principais dados referentes
internacao do paciente';
COMMENT ON PATD.TRIAGEM
(PRE_PATOLOGIA IS 'anotaes de seleco de triagem, ou seja, seleo para
qual especialidade medica o paciente ser encaminhado',
ID_PLANTONISTA IS 'Cdigo interno do plantonista Gerado pela trigger
PLA_INS',
DATA_UPD IS 'Data e Hora da ultima alterao no registro',
COD_ATENDIMENTO IS 'Cdigo de identificao do atendimento Referenciado por
Seq_atendimento');
CREATE TABLE PATD.DOCUMENTO
(ID_DOCUMENTO DECIMAL(8) NOT NULL ,
COD_PACIENTE DECIMAL(8) NOT NULL ,
NUMERO VARCHAR(15)
,
DATA_UPD TIMESTAMP
,
CONSTRAINT PK_DOCUMENTO PRIMARY KEY (ID_DOCUMENTO,COD_PACIENTE),
CONSTRAINT DOC_FK_PACIENT FOREIGN KEY (COD_PACIENTE) REFERENCES
PATD.PACIENTE(COD_PACIENTE))
IN tbs_paciente INDEX IN TBS_INDEX COMPRESS YES ;
COMMENT ON TABLE PATD.DOCUMENTO IS 'Define os dados dos endereos dos
paciententes.';
COMMENT ON PATD.DOCUMENTO
(COD_PACIENTE IS 'Cdigo interno do paciente Referenciado por
Seq_paciente',
NUMERO IS 'numero do documento',
ID_DOCUMENTO IS 'Cdigo de identificador do documento Gerado pela trigger
DOC_INS',
DATA_UPD IS 'Data e Hora da ultima alterao no registro');
CREATE TABLE PATD.TELEFONE
(ID_TEL DECIMAL(8) NOT NULL ,
COD_PACIENTE DECIMAL(8) NOT NULL ,
DDD VARCHAR(4)
,
NUMERO VARCHAR(10)
,
TIPO_TEL VARCHAR(10) CONSTRAINT TELE_TIPO_CHEC CHECK (TIPO_TEL IN
('RES', 'CEL', 'COM','REC')),
DATA_UPD TIMESTAMP ,
CONSTRAINT PK_TELEFONE PRIMARY KEY (ID_TEL,COD_PACIENTE),
CONSTRAINT TEL_FK_PACIENT FOREIGN KEY (COD_PACIENTE) REFERENCES
PATD.PACIENTE(COD_PACIENTE))
IN tbs_paciente INDEX IN TBS_INDEX COMPRESS YES ;
COMMENT ON TABLE PATD.TELEFONE IS 'Define os dados telefonicos dos
paciententes.';
COMMENT ON PATD.TELEFONE
(COD_PACIENTE IS 'Cdigo interno do paciente Referenciado por
Seq_paciente',
DDD IS 'Cdigo do telefone',
NUMERO IS 'numero do telefone',
TIPO_TEL IS 'identifica se o numero do telefone celular, residencial ou
comercial',
ID_TEL IS 'Cdigo de identificao do telefone Gerado pela trigger
TEL_INS',
DATA_UPD IS 'Data e Hora da ultima alterao no registro');
CREATE TABLE PATD.ENDERECO
(ID_ENDERECO DECIMAL(8) NOT NULL ,
COD_PACIENTE DECIMAL(8) NOT NULL ,

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');

drop TRIGGER PATD.CPA_TRI_UPD;


CREATE TRIGGER PATD.CPA_TRI_UPD
NO CASCADE BEFORE UPDATE ON PATD.CAD_PATOLOGIA
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-END;
drop TRIGGER PATD.CPA_TRI_INS;
CREATE TRIGGER PATD.CPA_TRI_INS
NO CASCADE BEFORE INSERT ON PATD.CAD_PATOLOGIA
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-END;
drop TRIGGER PATD.TIP_TRI_UPD;
CREATE TRIGGER PATD.TIP_TRI_UPD
NO CASCADE BEFORE UPDATE ON PATD.TIPO
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-END;
drop TRIGGER PATD.TIP_TRI_INS;
CREATE TRIGGER PATD.TIP_TRI_INS

105

NO CASCADE BEFORE INSERT ON PATD.TIPO


REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-END;
drop TRIGGER PATD.GRU_TRI_UPD;
CREATE TRIGGER PATD.GRU_TRI_UPD
NO CASCADE BEFORE UPDATE ON PATD.GRUPO
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-END;
drop TRIGGER PATD.GRU_TRI_INS;
CREATE TRIGGER PATD.GRU_TRI_INS
NO CASCADE BEFORE INSERT ON PATD.GRUPO
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-END;
drop TRIGGER PATD.PAC_TRI_UPD;
CREATE TRIGGER PATD.PAC_TRI_UPD
NO CASCADE BEFORE UPDATE ON PATD.PACIENTE
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-END;
drop TRIGGER PATD.PAC_TRI_INS;
CREATE TRIGGER PATD.PAC_TRI_INS
NO CASCADE BEFORE INSERT ON PATD.PACIENTE
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-END;

drop TRIGGER PATD.ATE_TRI_UPD;


CREATE TRIGGER PATD.ATE_TRI_UPD
NO CASCADE BEFORE UPDATE ON PATD.ATENDIMENTO
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-END;
drop TRIGGER PATD.ATE_TRI_INS;
CREATE TRIGGER PATD.ATE_TRI_INS

106

NO CASCADE BEFORE INSERT ON PATD.ATENDIMENTO


REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-END;
DROP TRIGGER PATD.PAT_TRI_INS;
CREATE TRIGGER PATD.PAT_TRI_INS
NO CASCADE BEFORE INSERT ON PATD.PATOLOGIA
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-set NEW.ID_PATOLOGIA = (coalesce((select max(ID_PATOLOGIA) from
PATD.PATOLOGIA WHERE COD_ATENDIMENTO= new.COD_ATENDIMENTO),1));-END;
drop TRIGGER PATD.PAT_TRI_UPD;
CREATE TRIGGER PATD.PAT_TRI_UPD
NO CASCADE BEFORE UPDATE ON PATD.PATOLOGIA
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-END;
drop TRIGGER PATD.CEX_TRI_UPD;
CREATE TRIGGER PATD.CEX_TRI_UPD
NO CASCADE BEFORE UPDATE ON PATD.CAD_EXAME
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-END;
drop TRIGGER PATD.CEX_TRI_INS;
CREATE TRIGGER PATD.CEX_TRI_INS
NO CASCADE BEFORE INSERT ON PATD.CAD_EXAME
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-END;

drop TRIGGER PATD.EXA_TRI_UPD;


CREATE TRIGGER PATD.EXA_TRI_UPD
NO CASCADE BEFORE UPDATE ON PATD.EXAMES
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-END;
drop TRIGGER PATD.EXA_TRI_INS;

107

CREATE TRIGGER PATD.EXA_TRI_INS


NO CASCADE BEFORE INSERT ON PATD.EXAMES
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-set NEW.ID_EXAME = (coalesce((select max(ID_EXAME) from PATD.EXAMES
WHERE COD_ATENDIMENTO= new.COD_ATENDIMENTO),1));-END;
drop TRIGGER PATD.CME_TRI_UPD;
CREATE TRIGGER PATD.CME_TRI_UPD
NO CASCADE BEFORE UPDATE ON PATD.CAD_MEDICACAO
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-END;
drop TRIGGER PATD.CME_TRI_INS;
CREATE TRIGGER PATD.CME_TRI_INS
NO CASCADE BEFORE INSERT ON PATD.CAD_MEDICACAO
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-END;
drop TRIGGER PATD.MED_TRI_UPD;
CREATE TRIGGER PATD.MED_TRI_UPD
NO CASCADE BEFORE UPDATE ON PATD.MEDICACAO
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-END;
drop TRIGGER PATD.MED_TRI_INS;
CREATE TRIGGER PATD.MED_TRI_INS
NO CASCADE BEFORE INSERT ON PATD.MEDICACAO
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-set NEW.ID_MEDICACAO = (coalesce((select max(ID_MEDICACAO) from
PATD.MEDICACAO WHERE COD_ATENDIMENTO= new.COD_ATENDIMENTO),1));-END;

drop TRIGGER PATD.INT_TRI_UPD;


CREATE TRIGGER PATD.INT_TRI_UPD
NO CASCADE BEFORE UPDATE ON PATD.INTERNACAO
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC

108

SET NEW.DATA_UPD = current timestamp;-END;


drop TRIGGER PATD.INT_TRI_INS;
CREATE TRIGGER PATD.INT_TRI_INS
NO CASCADE BEFORE INSERT ON PATD.INTERNACAO
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-set NEW.COD_INTERNACAO = (coalesce((select max(COD_INTERNACAO) from
PATD.INTERNACAO WHERE COD_CONSULTA= new.COD_CONSULTA),1));-END;

drop TRIGGER PATD.FUN_TRI_UPD;


CREATE TRIGGER PATD.FUN_TRI_UPD
NO CASCADE BEFORE UPDATE ON PATD.CAD_FUNCIONARIO
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-END;
drop TRIGGER PATD.FUN_TRI_INS;
CREATE TRIGGER PATD.FUN_TRI_INS
NO CASCADE BEFORE INSERT ON PATD.CAD_FUNCIONARIO
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-END;
drop TRIGGER PATD.PLA_TRI_UPD;
CREATE TRIGGER PATD.PLA_TRI_UPD
NO CASCADE BEFORE UPDATE ON PATD.PLANTONISTA
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-END;
drop TRIGGER PATD.PLA_TRI_INS;
CREATE TRIGGER PATD.PLA_TRI_INS
NO CASCADE BEFORE INSERT ON PATD.PLANTONISTA
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-set NEW.ID_PLANTONISTA = (coalesce((select max(ID_PLANTONISTA) from
PATD.PLANTONISTA WHERE COD_ATENDIMENTO= new.COD_ATENDIMENTO),1));-END;
drop TRIGGER PATD.TRIAG_TRI_UPD;
CREATE TRIGGER PATD.TRIAG_TRI_UPD

109

NO CASCADE BEFORE UPDATE ON PATD.TRIAGEM


REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-END;
drop TRIGGER PATD.TRIAG_TRI_INS;
CREATE TRIGGER PATD.TRIAG_TRI_INS
NO CASCADE BEFORE INSERT ON PATD.TRIAGEM
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-END;

drop TRIGGER PATD.DOC_TRI_UPD;


CREATE TRIGGER PATD.DOC_TRI_UPD
NO CASCADE BEFORE UPDATE ON PATD.DOCUMENTO
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-END;
drop TRIGGER PATD.DOC_TRI_INS;
CREATE TRIGGER PATD.DOC_TRI_INS
NO CASCADE BEFORE INSERT ON PATD.DOCUMENTO
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-set NEW.ID_DOCUMENTO = (coalesce((select max(ID_DOCUMENTO) from
PATD.DOCUMENTO WHERE COD_PACIENTE= new.COD_PACIENTE),1));-END;
drop TRIGGER PATD.TEL_TRI_UPD;
CREATE TRIGGER PATD.TEL_TRI_UPD
NO CASCADE BEFORE UPDATE ON PATD.TELEFONE
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-END;
drop TRIGGER PATD.TEL_TRI_INS;
CREATE TRIGGER PATD.TEL_TRI_INS
NO CASCADE BEFORE INSERT ON PATD.TELEFONE
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-set NEW.ID_TEL = (coalesce((select max(ID_TEL) from PATD.TELEFONE WHERE
COD_PACIENTE= new.COD_PACIENTE),1));-END;

110

drop TRIGGER PATD.END_TRI_UPD;


CREATE TRIGGER PATD.END_TRI_UPD
NO CASCADE BEFORE UPDATE ON PATD.ENDERECO
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-END;
drop TRIGGER PATD.END_TRI_INS;
CREATE TRIGGER PATD.END_TRI_INS
NO CASCADE BEFORE INSERT ON PATD.ENDERECO
REFERENCING NEW AS NEW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
SET NEW.DATA_UPD = current timestamp;-set NEW.ID_ENDERECO = (coalesce((select max(ID_ENDERECO) from
PATD.ENDERECO WHERE COD_PACIENTE= new.COD_PACIENTE),1));-END;

H Mapa de Terminologia
Arquitetura
ORACLE

DB2

Instance

Instance

Database

Database

Initialization File

Database Manager Configuration File

Table spaces

Table spaces

Data blocks

Pages

Extents

Extents

Datafiles

DMS containers

Redo Log Files

Transaction Log Files

PL/SQL

SQL/PL

SYSTEM table space

SYSCATSPACE table space

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

SNAPDBM administrative view or SNAP_GET_DBM table function

V$DATABASE

V$DATAFILE

SNAPDB administrative view or SNAP_GET_DB_V91 table function


SNAPTBSP administrative view or SNAP_GET_TBSP_V91 table
function
SNAPCONTAINER administrative view or
SNAP_GET_CONTAINER_V91 table function

V$SESSION

SNAPAPPL administrative view or SNAP_GET_APPL table function

V$SQLTEXT

SNAPSTMT administrative view or SNAP_GET_STMT table function

V$LOCK

SNAPLOCK administrative view or SNAP_GET_LOCK table function

V$SYSSTAT

SNAPBP administrative view or SNAP_GET_BP table function

V$SESSION_LONGOPS

LONG_RUNNING_SQL administrative view

V$TABLESPACE

Views do Catalogo do Sistema


ORACLE

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

Comandos freqentemente mais usados


ORACLE
CREATE DATABASE ORA_EMP
MAXLOGFILES 2
MAXLOGMEMBERS 3
LOGFILE GROUP 1
(/disk1/log1a.log,/disk1/log1b.log,/disk
1/log1c.log) SIZE 1M,
GROUP 2
(/disk2/log2a.log,/disk2/log2b.log,/disk
2/log2c.log) SIZE 1M
DATAFILE /disk1/system01.dbf
SIZE 100M;
CREATE TABLESPACE
USER_DATA_TBS
DATAFILE '/disk1/user_data_tbs_01.dbf'
SIZE 50M
MINIMUM EXTENT 1M PERMANENT

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

CREATE USER TEMPORARY TABLESPACE


USER_TEMP_TBS
MANAGED BY DATABASE
USING (FILE /disk1/user_data_tbs_01.dbf 12800)
EXTENTSIZE 1M

CREATE TABLESPACE USER_LOB_TBS


DATAFILE '/disk1/user_lob_tbs_01.dbf'
SIZE 100M
MINIMUM EXTENT 1M PERMANENT

CREATE LARGE TABLESPACE USER_TEMP_TBS


MANAGED BY DATABASE
USING (FILE /disk1/user_data_tbs_01.dbf 25600)
EXTENTSIZE 1M

CREATE USER ORA_USR


IDENTIFIED BY EXTERNALLY

CREATE SCHEMA DB2_USR


AUTHORIZATION DB2_USR
-- identifies o/s user db2_usr

GRANT CREATE SESSION, CREATE


TABLE TO ORA_USR;

GRANT CONNECT, CREATETAB ON DATABASE


TO USER DB2_USR

REVOKE CONNECT FROM ORA_USR

REVOKE CONNECT ON DATABASE FROM USER


DB2_USR

ALTER SYSTEM KILL SESSION


(sid,serial) IMMEDIATE

FORCE APPLICATION (appl handle) MODE ASYNC

ALTER SYSTEM SUSPEND

SET WRITE SUSPEND FOR DB

ALTER SYSTEM QUIESCE RESTRICTED QUIESCE DB database name


ALTER SYSTEM ARCHIVE LOG

ARCHIVE LOG FOR DB database name

ALTER SYSTEM FLUSH SHARED_POOL FLUSH PACKAGE CACHE DYNAMIC


DBMS_SPACE_ADMIN package

INSPECT database

SET TRANSACTION ISOLATION LEVEL

CHANGE ISOLATION LEVEL

ANALYZE TABLE command

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

Update fetched row

Delete fetched row


Closing 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

select * from tab1 where ROWNUM < 10


update tab1
set c1 = v1
where c2 = v2
and ROWNUM <= 10
delete from tab1 where ROWNUM <= 100

select * from tab1 FETCH FIRST 9 ROWS ONLY;


UPDATE (select c1 from
tab1where c2=v2 fetch first 10
rows only) set c1=v1
DELETE FROM (SELECT 1 FROM tab1 FETCH
FIRST 100 ROWS ONLY)

Select from DUAL


ORACLE
select SYSDATE from DUAL

DB2
VALUES(CURRENT TIMESTAMP) INTO <variable>
or
select CURRENT TIMESTAMP
from SYSIBM.SYSDUMMY1

Date and time


ORACLE
SELECT sysdate from dual;

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')

TO_CHAR (timestamp_expression,'YYY-MM-DD HH24:MI:SS')


TO_DATE (string_expression, 'YYY-MM-DD HH24:MI:SS')

add_months(sysdate,16)

current date + 16 months

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 );

CREATE TABLE partition_table


(partition_date date NOT NULL,
partition_data VARCHAR(20) NOT NULL
)
IN tbsp_parts
DISTRIBUTE BY HASH (partition_date);

Partitioning methods
Oracle
partitioning

DB2 data organization

Oracle 10g syntax

No equivalent

Round robin

Range partitioning Table partitioning

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

DB2 9.1 syntax


Default: occurs
automatically on single
partition database
PARTITION BY RANGE

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);

Concurrency and transaction


Oracle

DB2

Lock mode

Set lock node to wait

Set lock mode to not wait

Isolation level

Set isolation to dirty read

Set isolation to cursor stability

Backup
Oracle

DB2

Offline

backup database <dbname>

Online
Incremental

Backup database <dbname> online include logs


Backup database <dbname> online incremental
include logs

Delta

Backup database <dbname> online delta include logs

Vous aimerez peut-être aussi