Newsgroup: it.comp.appl.access
Titolo: Re: Consiglio su Relazioni tra tabelle

 troppo imporatente per essere sottovalutata.
Esatto!
Dipende dall'impostazione tabelle-relazioni l'esser partiti
col piede giusto nella pianificazione di un database referenziale.
Non capisco come dovrà funzionare t_CartelleCliniche:
ci sarà un ID_Paziente con Join uno-a-molti da t_Pazienti
perché un paziente può aver più cartelle cliniche a seguito
di successivi ricoveri (però per ogni ricovero ne avrà una
sola immagino) e che altro?
Ci saranno inoltre le tabelle:
 - t_TipoEsame contenente la tipologia degli 11
     esami con un ID_TipoEsame, etc.
 - e una t_EsamiClinici contenente
     ID_Paziente e ID_TipoEsame con PK (PrimaryKey)
     su quest'ultima accoppiata  e Join da t_Pazienti, etc.
 - ID_Pazienti con ID_Paziente, etc.
Da queste ultime tre mi par di capire che:
ID_Paziente da t_Pazienti avrà Join uno-a-molti
con t_CartelleCliniche, t_CartelleCliniche e t_EsamiClinici;
ID_TipoEsame avrà anologo Join con t_EsamiClinici;
Mi rimane aperto il collegamento fra t_EsamiClinici
e t_CartelleCliniche, appunto perché non ho ben
inteso il funzionamentio di quest'ultima.
Bruno

 Speriamo non complichi di più il tutto.
Allora:
Pazienti.ID_Paziente(AutoNumber, PK) uno-a-molti con
CartelleCliniche.ID_Paziente
perché per ogni ricovero verrà compilata nuova
CartellaClinica.
CartelleCliniche.ID_Paziente (Long),
CartelleCliniche.ID_CartellaClinica (AutoNumber, PK)
uno-a-molti con EsamiClinici.ID_CartelleCliniche  perché
per ogni ricovero (e quindi per ogni CartellaClinica) possono
essere prescritti fino a undici esami.
EsamiClinici.ID_TipoEsame (Long),
EsamiClinici.ID_Paziente (Long) PK sui due campi collegati
TipoEsame.ID_TipoEsame (AutoNumber, PK) uno-a-molti
con EsamiClinici.ID_TipoEsame. Accoglierà le specifiche di
tutti gli undici esami possibili.
Prova a creare le suddette quattro tabelle e assegna le relazioni
come indicato, tenendo presente che tutti i collegamernti
sono uno-a-molti con applicazione di:
- integrità referenziale
- aggiornamento campi relazionati
- cancellazione in cascata dei campi relazionati.
Inserisci qualche dato compilando per prima la tabella TipoEsame
con gli undici tipi, poi la tabella Pazienti con un po' di
anagrafica.
Poi immagina il ricovero di alcuni Pazienti con emissione di
CartellaClinica e prescrizione di EsamiClinici.
Guarda se inserimenti e cancellazioni funzionano in modo
appropriato.
Noterai che non puoi emettere CartellaClinica se il paziente
non esiste in Pazienti.
Non puoi prescrivere EsamiClinici se non esiste già una
CartellaClinica per quel Paziente.
Non puoi prescrivere EsamiClinici diversi da quelli
elencati in TipoEsame.
Bruno

Scriveva Bruno Campanini sabato, 03/03/2007:

Dammi qualche giorno per provare, grazie! :)

Scriveva Bruno Campanini sabato, 03/03/2007:

A me serve una cosa simile! Stavo per scriverlo...

 A me serve una cosa simile! Stavo per scriverlo...
mmmm, non proprio... abbaglio clamoroso!

 mmmm, non proprio... abbaglio clamoroso!
Nel senso che ho una anagrafica, una sorta di cartella clinica, unica 
però, una tabella di attività che un atleta può svolgere e varie 
tabelle che identificano i dati raccolti per ogni singola attività di 
un atleta.
Simile che dici? Scusate l'intromissione.

 wrote in message 
news:mn.1b787d730...@gmail.com...

Molto simile se ho ben inteso.
La tabella attività assimilata a TipoEsame, le tabelle contenenti
i dati raccolti per ogni singola attività di un atleta conglobate nell'unica
tabella EsamiClinici.
Le altre due - anagrafica e cartella clinica - simili a
Pazienti e CartelleCliniche.
Anche le relazioni e i conseguenti vincoli dovrebbero
corrispondere; inseriscili ed effettua movimenti di prova.
Bruno

 tabella EsamiClinici.
Io però vorrei fare una cosa di questo tipo. Per ogni attività fisica 
una tabella diversa in modo tale da poter aver uno storico dell'atleta.
Cioè vorrei avere TabAtt_A con una sua PK, TabAtt_B con la sua PK, ecc.
In questo modo vorrei poter risalire allo storico del comportamento di 
ogni atleta nella rispettiva attività fisica.
E' fattibile secondo te?
Grazie.

 wrote in message 
news:mn.1c057d733...@gmail.com...

Sì certo, complicandosi un po' la vita.
Nel senso che per vedere tutte le attività di un atleta
dovrai scandire tutte le tabelle attività anziché una sola.
E le tabelle complessive sarebbero 3 + n anziché 4,
dove n è il numero delle attività.
Il tuo progetto risponde alle caratteristiche organizzative
di un database translato sic et simpliciter da un database
tenuto manualmente con schede.
Laddove saresti costretto ad avere due schede per Atleti
e CartelleCliniche ed n schede per le n attività.
E non potresti fare diversamente ché sarebbe ingestibile
manualmente una sola scheda Attività per tutte le
attività e per tutti gli atleti.
Credo occorra aver più fiducia nelle capacità di un
database relazionale di cavarsela senza problemi
dovendo reperire, rappresentare ed elaborare
le x attività, fra le n possibili, di uno degli y atleti
operando su un'unica tabella.
Credimi: è un'evoluzione oltreché una semplificazione.
Bruno

 Credimi: è un'evoluzione oltreché una semplificazione.
Caro Bruno sarebbe offensivo non crederti e non lo dico per essere 
ruffiano. Quindi tu mi consiglieresti di gestire le N attività, che io 
gestirei con N tabelle diverse, con un unica tabella.
Bene, a questo punto però avrò bisogno di utilizzare più di un indice 
in questo tipo di tabella. Su due piedi la semplificazione mi sembra 
netta.
Devo fidarmi di te... ;)
Grazie ancora.

 wrote in message 
news:mn.1c447d732...@gmail.com...

Io direi proprio di seguire il suggerimento.
Fare una copia dell'attuale database per farvi degli
esperimenti costa poco: se non ti ci ritrovi ritorni sui
tuoi passi.
La tabella di cui parliamo dovrebbe avere una chiave
primaria posta du due campi congiuntamente:
il campo ID_Atleta (che sarà il lato a-molti dell'omonimo
campo nella tabella Atleti) e il campo ID_Attività
(che analogamente sarà il lato a-molti dell'omonimo
campo nella tabella TipoAttività).
Se vuoi puoi mandarmi una copia del database,
sempre che non contenga informazioni riservate,
così potremmo ragionarci meglio.
Bruno 

 così potremmo ragionarci meglio.
Ne farò una copia di ciò che ci interessa ripulita dei dati magari, che 
ne dici?
Però ho un'osservazione da fare, le eventuali N tabelle contenenti lo 
storico delle N attività sono strutturate in modo diverso. Cioè la 
scheda "100m" sarà diversa da quella "basket", in questo modo per 
unificare tutto in una tabella dovrei considerare in quest'ultima tutti 
i possibili campi delle varie tabelle e a seconda dell'attività fare 
maschere che riempiono solamente campi specifici. O sbaglio?


Allora
a) tblAnagrafiche per inserire i soli dati anagrafici del paziente
b)tblCartellaClinica....forse intendi una tabella per inerire cose tipo
anamnesi,abitudini tipo fumo,precedenti patologie
eventuali gravidanze se donna.....insomma una sorta di storia clinica del
paziente, io la chiamerei tblSchedaPaziente.
c)quindi metterei una tabella per gestire le "Accettazioni",tblAccettazioni
in cui tieni traccia
delle date di ingresso , della motivazione, dell'età del paziente al momento
dell'ingreso (utile per valutare alcuni esami)
l'anamnesi prosimale ,insomma quello che ti interessa sapere.
IDAccettazione PK
IDAnagrafica FK con la tblAnagrafiche ,perche il paziene viene 1-n volte
Motivazione
Età_Paziente
Note
Data-Accettazione
Ora_Accettazione
A questa colleghi una tblPrestazioni 1-n.In questa maniera non devi crearti
11 tabelle ma te ne basta una
Quindi agni accettazione puoi associare n prestazioni cioè n ,nel tuo caso
esami ma volendo con poco sforzo
potrebbero essere visite di controllo,interventi chirurgici,medicazioni
insomma quello che vuoi e che metterai
nella tua tblEsami
IDPrestazione PK
IDAccettazione FK
IDEsame.............Numerico punta alla tabella esami
La tblEsami non è così banale come potrebbe sembrare.
Dovresti dirmi il tipo di esami che devi gestire, questo perchè non è detto
che ad una voce riferibile ad un esame, corrisponda in realtà un esame solo.
Per esempio l'esame Emocromo in realtà è composto da n voci, tipo
WBC,RBC,Hg,HCT,MCV, etc etc
mentre l'eame Glicemia ha una sole voce,una TAC ha una risposta di tipo
testo e volendo una immagine
mentre un esame tipo Tampone faringeo ha una risposta tipo positivo/negativo
e se positivo devi indicare
il ceppo per non parlare dell'antibiogramma che dovrai asociare
 ,un elettrocardiogramma da come risultati numeri e testo e volendo immagini
(del tracciato) come
unn ecodoppler.Sulla base di ciò potrai gestire i vari risultati con annesi
valori di riferimento
Esempio scheletrico di tabella Esami
IDEsame
Codice_Esame deve essere univoco naturalmente
Codice_SSN       codice del sistema sanitario
Nome_Esame
Sigla_Esame
Identificativo_Esame        ti serve per gestire le risposte ed i valori di
riferimento
tblDettaglio_Esami da linkare 1-n con la tblEsami
IDDettaglio_Esame PK
IDEsame   FK
Voce
Sigla_Dettaglio_Esame
Unità_di_Misura
i risultati li devi linkare su una o più tbl a parte a seconda della
tipologia di esame
tblRisultatiNumerici
IDRisultato_A  PK
IDPrestazione FK della relativa tabella
IDEsame
IDDettaglio_Esame
Risultato
tblRisultatiTesto
IDRisultato_B  PK
IDPrestazione FK della relativa tabella
IDEsame
IDDettaglio_Esame
Risultato
tblRisultatiMisti
IDRisultato_C  PK
IDPrestazione FK della relativa tabella
IDEsame
IDDettaglio_Esame
Risultato_Testo
Risultato_Valore
Valorizza_Risultato   Si/No  lo puoi usare per indicare se il test è
positivo o negativo
Ora questo che ti ho scritto è la base o meglio una delle basi posibili di
applicazioni reali
di cui ho diretta conoscenza.Se per la estione dei risultati la faccenda è
un po ingarbugliata
magari se mi dici che tipo di esami devi gestire vedrò di suggerirti
meglio.Resta però valida
la struttura di base delle Accettazioni/Prestazioni.
P.S.
Stai mettendo su un progetto di ricerca?
PPSS
Scusa se ti ho risposto in privato, mi sono sbagliato.
Morgan

 solamente campi specifici. O sbaglio?
Nel mio indirizzo sostituisci BC con brunocampanini.
Bruno


Ciao Linda
aggiorna la data del pc ...mi pare che sei un ..pochino avanti :<)))
Daniele 

 aggiorna la data del pc ...mi pare che sei un ..pochino avanti :<)))
Fatto! Scusatemi.
Ciao

Bruno Campanini scriveva il 03/03/2007 :

Ok Bruno, mi sembra tutto chiaro tranne questo passaggio:
EsamiClinici.ID_TipoEsame (Long),
EsamiClinici.ID_Paziente (Long) PK sui due campi collegati
TipoEsame.ID_TipoEsame (AutoNumber, PK) uno-a-molti
con EsamiClinici.ID_TipoEsame.
Inoltre volevo chiederti un consiglio, nn è meglio considerare un'unica 
Cartella clinica? Sono combattuta, aspetto la tua risposta per esporti 
i miei dubbi.
Ciao

 Scusa se ti ho risposto in privato, mi sono sbagliato.
Ho letto, nessun problema figurati.

 miei dubbi.
Son dubbi risolvibili dagli  addetti ai lavori.
Mi parrebbe logico supporre l'emissione di una cartella clinica
per ogni ricovero. Però quando questa è completamente compilata
per decorso del numero di giorni in essa previsti che si fa?
Se ne emette un'altra portante stessa numerazione e da considerarsi
pagina 2 della precedente ovvero la seconda va considerata come
un'altra diversa cartella clinica?
Bruno 

 Son dubbi risolvibili dagli  addetti ai lavori.
Sono io l'addetta ai lavori! :)
Serve a me il db per tenermi l'archivio delle pazienti che assisto al 
consultorio.
Non riesco più ad orientarmi, sono convinta che la tabella che mi deve 
elencare solo gli esami che posso sostenere mi incasini da morire 
(questa io non la devo toccare!!!!!)...
Se io ho una paziente a cui posso associare una o più cartelle 
cliniche, problema secondario, poi devo indicare quale esame/i sosterrà 
la paziente e poi entrare nell'esame specifico.
Uff! sto imppazzendo!!!! :-?
Paziente-> Cartella/e-> Tipo Esame(sono fissi, 11 diciture)-> Esame
Ma perchè mi è così difficile riuscire a fare in modo di avere una db 
che associ ad ogni paziente (unico ID) esami che sono scelti tra una 
serie di 11!?!?!?!?!?!? Non voglio fare in modo che ogni volta che 
viene la stessa paziente io la registro nuovamente assegnandogli un ID 
nuovo, per risalire alla sua situazione sanitaria dovrei rivedermi gli 
esami singolarmente! Mi dirai: ma se non sai fare le cose lascia 
perdere!!! Ci sto pensando... :(
Scusami se ti sto incasindando, se sei arrivato anche tu con la 
pazienza ti capisco benissimo! :/

 ti capisco benissimo! :/
Ti rinnovo l'invito: fa' una copia del database, svuota la tabella
pazienti ché non vogliamo violarne la privacy, lascia i dati degli
undici esami ed inviami il file.
Io provo ad aggiustarlo così come mi pare di aver capito
il problema e te lo rimando. Poi vediamo...
Bruno 

 il problema e te lo rimando. Poi vediamo...
Bruno scusami se non ti ho risposto subito ma sono stata fuori per 
lavoro. Provvvederò domani a mandarti una email con il db.
Grazie ancora per la disponibilità.

 Grazie ancora per la disponibilità.
Ok.
Non se te l'abbia già detto: sostituisci BC nel mio
indirizzo e-mail con brunocampanini.
Bruno 

 indirizzo e-mail con brunocampanini.
Mandata...