FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO
Licenciatura em Engenharia Electrotécnica e de Computadores
5º Ano, 1º Semestre
Sistemas de Informação - 2000/2001
TRABALHO PRÁTICO
Sistema de Gestão de Bases de Dados
Doenças
Alunos:
•
•
Filipe Alexandre da Silva Vila Real
Nuno José Morais Felicio
Data:
15 de Dezembro de 2000
Introdução
•
Objectivo
Pretende-se com este trabalho a experimentação das matérias expostas na disciplina e a
familiarização com o uso de SGBDs comerciais (Oracle) e ferramentas de desenvolvimento de
aplicações (Designer 2000).
•
Âmbito
Este relatório surge da necessidade de proceder à analise das diversas fases de
desenvolvimento da criação de um SGBDs, englobado no trabalho prático da disciplina de
Sistemas de Informação.
•
Organização
O trabalho é constituído por 6 partes distintas.
Inicia-se com uma breve descrição do problema em análise, sendo de seguida
apresentado o modelo entidade-associação e uma breve descrição dos seus componentes.
Seguem-se o esquema relacional e as instâncias exemplo criadas, para posteriormente
serem elaboradas 5 perguntas à base de dados, em álgebra relacional e em SQL, sendo também
apresentados os respectivos resultados.
O relatório termina com um breve estudo da normalização do esquema obtido.
Descrição do Problema
Um médico actualizado precisa de ter o tratamento da informação clínica dos seus
pacientes automatizado. Estes têm ou tiveram doenças, fizeram exames, foram sujeitos a
tratamentos, apresentam contra-indicações para determinados medicamentos, marcam consultas.
Modelo entidade-associação
É o modelo que representa a política de uma organização à cerca dos dados referentes
ao sistema de informação.
A modelização da informação apresenta o mérito de:
•
levantar questões sobre as regras da organização, obrigando à definição clara da
política para os dados;
•
salientar as novas necessidades de informação, de acordo com o que se espera do
sistema para satisfazer as necessidades dos utilizadores;
•
resolução de incoerências da política actual, devido a tratamentos deficientes e por
vezes contraditórios.
Podemos salientar duas grandes vantagens do modelo entidade-associação:
•
permite a construção do modelo por fases, partindo dos grandes objectos de informação
(entidades) e identificando as suas inter-relações (associações);
•
produz bons elementos de comunicação com os utilizadores.
Analisando o nosso problema, começamos por identificar quatro entidades -
objectos/conceitos com interesse para a organização sobre os quais se pretende guardar
informação - EXAME, CONSULTA, PACIENTE, TRATAMENTO.
Para cada entidade é necessário conhecer as suas propriedades relevantes para o
sistema. Atributo é qualquer propriedade de uma entidade. São sempre elementos indivisíveis
de informação e assumem diferentes valores de um domínio.
É necessário distinguir entre dois tipos de atributos: Identificadores ou Chaves
Candidatas e Descritores.
Os Identificadores (#) são os atributos de uma entidade que identificam uma ocorrência
específica dessa entidade, distinguindo-a das restantes. Para que um atributo seja identificador é
necessário que não existam duas ocorrências distintas dessa entidade em que esse atributo tenha
o mesmo valor. Nalguns casos o Identificador pode ser a combinação de dois ou mais atributos,
como é o caso da entidade Exame que possuí como chaves candidatas os atributos data e tipo.
Os Descritores (∗) são os atributos que apenas descrevem ou caracterizam as
ocorrências de um entidade. Estes podem ainda assumir um carácter opcional (ο).
As associações representam as interligações relevantes entre as entidades do sistema.
Cada um dos seus extremos caracteriza-se por: um nome, um grau, um tipo de associação.
Tomando como exemplo a associação entre as entidades PACIENTE, EXAME: um paciente fez
vários exames (eventualmente só um ou mesmo nenhum), e um exame foi obrigatoriamente
feito apenas por um e só um paciente.
Uma entidade pode assim participar numa associação de duas formas:
Obrigatória, não pode existir nenhuma ocorrência dessa entidade que não esteja
associada a alguma ocorrência da outra entidade que participa na associação;
Não Obrigatória, podem existir ocorrências dessa entidade que não estejam associadas a
alguma ocorrência da outra entidade que participa na associação.
De referir ainda que EXAME e CONSULTA são entidades fracas. Uma entidade E1
diz-se fraca em relação à entidade E2 se qualquer chave candidata de E1 é composta por uma
chave candidata de E2.
Existem certas restrições ao domínio dos atributos que poderão ser garantidas pelo
SGBD. No esquema em anexo são visíveis algumas dessas restrições.
EXAME
# DATA
# TIPO
o LOCAL
feito
fez
TRATAMENTO
PACIENTE
#
*
*
*
o
BI
MORADA
NOME
TELEFONE
OBS
sujeito
realizado
marca
para
CONSULTA
# DATA
* HORA
Modelo Entidade-Associação
Base de dados Doentes
#
*
*
*
*
*
o
TRAT_ID
DESCRIÇÃO
DIAGNOSTICO
DURAÇÃO
EVOLUÇÃO
INICIO
CONTRA_INDIC
Esquema Relacional
Depois de implementado o modelo entidade-associação foi gerado o respectivo esquema
relacional.
Cada entidade dá normalmente origem a uma tabela, com:
•
Identificador da Entidade → Chave da Tabela
•
Descritores da Entidade → Outros Atributos da Tabela
•
Identificadores de outras entidades que lhe estejam associadas → Chaves
Estrangeiras
Exemplo: Paciente(bi, nome, morada, telefone, obs)
De entre as chaves candidatas de um relação, escolhe-se uma para ser a chave efectiva
da mesma, a essa chave dá-se o nome de Chave Primária.
Em algumas relações, temos um atributo (ou conjunto de atributos) cujas ocorrências
são referências a uma chave primária de uma outra relação. A esses atributos damos o nome de
Chaves Estrangeiras. A existência de uma chave estrangeira prende-se com a necessidade de
manter a interligação entre essa relação e a relação onde esse conjunto de atributos é chave
principal.
Instâncias Exemplo
Paciente
B.I.
Nome
Morada
Telefone
11249968 Filipe Vila Real
Rua Santos Pousada 1155 4ºandar 225373022
10870649 Nuno Felicio
Rua Bernardim Ribeiro 203 2ET
Obs.
229534360
10256988 José Augusto Silva Rua Almeida Garrett 75
225368978
diabético
11365874 Alberto Correia
229654231
asmático
Rua de Camões 78 1º esq
10265998 Mário Silva Martins Av. dos Combatentes 23
1025698 Maria Clara Campos Rua Marco Moita bl.3 apart.5
225036948
222084657
Exame
B.I.
Data
Tipo
Local
11249968
12-Nov-98
Radiografia ao braço
11249968
5-Mar-99
Análises ao sangue
10256988
25-Sep-96
1025698
4-Apr-95
Ressonância magnética
Laboratório das Antas
10265998
13-Oct-97
Análises à urina
Clínica Bom Jesus
1025698
18-Nov-00
Mamografia
Hosp. S.João
Clínica Bom Jesus
Ecografia
Consulta
B.I.
Data
Hora
11249968
5-Nov-98
17:30
10870649
5-Mar-99
16:00
10256988
25-Sep-96
15:30
11365874
4-Apr-95
16:00
10265998
13-Oct-97
15:00
1025698
2-Nov-00
14:30
11249968
30-Mar-98
17:00
1025698
30-Nov-00
14:30
Tratamento
Trat_ID
Descrição
4
1 emb. paramolan
5
Diagnóstico Duração (dias)
gripe
2 emb. Clinex, 1 emb. Romanon hepatite H
10
20
Ínicio
Evolução
B.I.
15-Nov-00
boa
10870649
6-Jan-95 má reacção ao romanon 1025698
6
3 emb. Roacotan
acne facial
30
25-Feb-00
7
1 frasco de xonax,2 emb. Valium
stress
5
6-Jul-97
boa
11249968
má reacção ao xonax 11365874
Contra_Indic
Perguntas
1- Listar os Tratamentos para cada Paciente
2- Duração média do Tratamento para cada Doença
3- Quantos pacientes tiveram consulta e não se sujeitaram a tratamento.
4- Dias em que aconteceram Consultas, Exames e Tratamentos
5- Nome(s) do Paciente(s) cujo telefone começa por ‘225...’ cuja data de
consulta é anterior a 10-Jan-2000 e a duração de tratamento foi superior a 10 dias
Descrição em Algebra Relacional
1)
Π Descrição,Diagonóstico [σ BI
2)
Π Diagnóstico, Média = AVG(Duração) (Tratamentos)
3)
Π
4)
Π Data (Consulta) ∩ Π Data (Exame) ∩ Π Data (Tratamento)
5)
Π Nome [σ Telefone = ‘225*’ (Paciente) ∞ σ Data < ’10-JAN-2000’ (Consulta) ∞
= ‘10870649’(Tratamento)]
Nº = CNT (BI) (Consulta)
- Π Nº = CNT
(BI) (Tratamento)
σ Duração > ‘10’ (Tratamento) ]
Descrição em SQL
1)
Select Descrição, Diagonóstico
From Tratamento
Where BI =’10870649’;
2)
Select distinct Diagonóstico, avg(Duração)
From Tratamento
Group by Diagonóstico;
3)
Select count(BI)
from Consulta
Where BI not in
(Select distinct BI
from Tratamento)
Group by BI
4)
(Select Data
From Consulta)
Intersect
(Select Data
From Exame)
Intersect
(Select Data
From Tratamento);
5)
Select Nome
From Paciente, Tratamento, Consulta
Where Telefone like ‘225*’ and Data < ’10-JAN-2000’ and Duração > 10;
Estudo da Normalização
Após a construção do modelo conceptual dos dados (Modelo entidade-associação) é
feita a transformação para um modelo lógico (Esquema Relacional).
O conjunto de tabelas obtido representa a estrutura da informação de um modo natural e
completo.
A normalização tem como objectivo modificar o conjunto de tabelas obtido por
transformação do modelo conceptual, num outro conjunto de tabelas equivalente menos
redundante e mais estável.
Porém a redundância entre os dados não pode ser completamente eliminada. De facto,
as chaves estrangeiras são também uma forma de redundância que decorrem, directamente, da
forma própria de associar os dados no modelo relacional.
Comecemos então por analisar o processo de normalização relativamente à relação
Paciente(BI,nome,morada,telefone,obs). Esta estrutura encontra-se já na 1FN, uma vez que não
se encontram grupos de valores repetidos, cada cliente novo não apresenta valores de vários
atributos que já existentes. Excepção seria se tivéssemos graus de parentesco entre clientes e
coincidissem as respectivas moradas e números de telefone. Porém, mesmo neste caso a
redundância não seria significativa. Esta relação está na 2FN uma vez que a chave primária não
é composta, ou seja todos os atributos dependem na totalidade da chave. Está na 3FN porque
cada atributo depende apenas da chave primária da relação, não há dependências funcionais
entre os atributos não-chave.
A relação Exame(BI,tipo,data,local) está na 3FN uma vez que está na 2FN e na 1FN e
dado que só existe um atributo não-chave. Nesta relação o atributo “local” é optativo, sendo que
também não há a obrigatoriedade que um respectivo tipo de exame seja feito sempre no mesmo
local, o que leva a que não haja valores de vários atributos repetidos.
A relação Consulta(BI,data,hora) está na 1FN uma vez que não existem grupos de
valores repetidos, só o atributo hora é que não é chave. Está na 2FN uma vez que o atributo
“hora” depende da totalidade da chave (BI,data→hora). A 3FN é garantida uma vez que só
existe um atributo não-chave, logo não existirem dependências funcionais entre atributos nãochave.
A relação Tratamento(Trat_ID,BI,diagnostico,descrição,...) foi tratada de tal forma que
se pode considerar na 3FN. A nossa ideia é que cada tratamento é diferente uma vez que se
adapta a cada paciente em particular. Podemos então ter iguais diagnósticos para diferentes
pacientes mas que não tenham necessariamente as mesmas descrições, a mesma duração e a
mesma evolução. Poderá haver casos em que haja redundância na “descrição, diagnóstico” mas
pensamos ser num nível aceitável, uma vez que não nos interessa manter uma entidade Doença
na qual poderiam ser armazenados todas as descrições para um respectivo diagnóstico. Na nossa
forma de ver o que se justifica é manter uma “descrição” que seja baseada em cada caso
específico.
Por definição, uma relação está na BCNF se todos os atributos são funcionalmente
dependentes da chave, de toda a chave e nada mais que a chave.
A 3FN é aquela em que, na maioria dos casos, termina o processo de normalização,
contudo em alguns casos muito específicos, a 3FN ainda transporta alguns problemas.
Em casos muito raros, surge ainda a necessidade de verificar a 4FN. Relativamente a
esta diz-se de uma relação que está na BCFN a não existem dependências multivalor.
Nas relações em causa não consideramos que houvesse necessidade em prosseguir com
o processo de normalização.
A normalização remete-nos assim para dois objectivos, em geral conflituosos: por um
lado pretendem-se sistemas flexíveis, sem problemas de redundância; por outro lado exigem-se
sistemas com alto desempenho. Torna-se portanto necessário chegar a um compromisso, o ideal
seria um esquema equilibrado que nunca ponha em risco a integridade da base de dados mas
que, ao mesmo tempo, tenha um desempenho aceitável pois só assim será utilizado.
Download

Sistema de Gestão de Bases de Dados Doenças