Progettazione database infermeria

di il
8 risposte

Progettazione database infermeria

Ciao ragazzi, apro un nuovo thread come consigliatomi da OsvaldoLaviosa.

Cosa devo fare:
Nell'infermeria in cui lavoro, spesso capita di dover emettere dei certificati. Ora, per velocizzare e standardizzare la stesura dei certificati, ho pensato di creare un database in access (in modo da poterli anche salvare per eventuale consultazione rapida in un secondo momento).

Pensavo di strutturarlo così:
-Una tabella (tbl_medici) che contiene il personale medico, con due campi: ID e NOME_MEDICO
-Una tabella (tbl_preformati) che contiene dei certificati precompilati, con tre campi: ID, OGGETTO, CERTIFICATO
-Una tabella (tbl_certificati) che salva i certificati, con i campi: ID, DATA (va in automatico), PROGRESSIVO (va inserito a mano), OGGETTO, CERTIFICATO e NOME_MEDICO

Avevo creato un database, che è scaricabile da qui:
https://www.iprogrammatori.it/forum-programmazione/access/campi-incrociati-database-tabelle-t29716.html

Ma credo sia il caso di ripartire da zero e valutare prima se la struttura sia consona... che ne dite?

Grazie!!!

8 Risposte

  • Re: Progettazione database infermeria

    1. Ti consiglio di dare un nome univoco ai campi ID, ossia IDMedico, IDCertificato, IDPreformato.
    2. Suppongo che quei campi ID siano tutti "chiave primaria", ma non conosciamo le relazioni fra queste e/o future/opportune tabelle.
    3. Non ho capito come vuoi gestire questi Certificati. Perdona la mia ignoranza nel tuo campo professionale. Almeno per me potresti raccontare 2-3 esempi di che cosa ci scrivi dentro?
    4. Una tabella Pazienti non è stata prevista?
  • Re: Progettazione database infermeria

    1. Ok questa modifica è semplice
    2. Si, ID è la chiave primaria
    3. Se scarichi il database che ho messo in link nell'altro thread, troverai tutto (tabelle, certificati) e capirai anche la difficoltà che sto trovando...
    4. La tabella pazienti non mi serve, mi serve solo salvare i certificati... in effetti la tabella pazienti è chiamata "certificati"...

    Se scarichi il database ti renderai conto subito di come ho impostato il database, è anche della difficoltà che sto incontrando... a parole sono incapace io di spiegarlo, sicuramente.. un esempio val più di mille parole!
  • Re: Progettazione database infermeria

    Ho dato un'occhiata adesso al tuo database.
    Sicuramente ribadisco l'inutilità dei pulsanti nel report.
    Veniamo alla struttura tabelle normalizzate. Secondo me dovresti pensare così:

    Detenuti
    IDDetenuto
    Cognome
    Nome
    DataNascita
    ...altri campi tipicamente anagrafici...

    Medici
    IDMedico
    Medico

    Preformati
    IDPreformato
    Oggetto
    TestoPreformato (se il testo è molto lungo potrebbero non bastare i 255 caratteri di "testo breve", quindi "testo lungo")

    Certificati
    IDCertificato
    DataCertificato
    IDDetenuto (numerico)
    IDMedico (numerico)
    IDPreformato (numerico)

    Relazioni:
    Detenuti.IDDetenuto uno-a-molti Certificati.IDDetenuto
    Medici.IDMedico uno-a-molti Certificati.IDMedico
    Preformati.IDPreformato uno-a-molti Certificati.IDPreformato

    Le relazioni sono un passaggio molto importante. Esse si disegnano nella finestra Relazioni. Leggi la guida in linea per come impostarle. Abbi cura di mettere la spunta sempre su "Applica integrità referenziale", a piacere anche sugli altri 2.

    Per alcuni puristi le tabelle Detenuti e Medici, trattandosi entrambi di Persone (anagrafiche), potevano essere rappresentati da una sola tabella. Io ho preferito tenerli separati per tua semplicità. Del resto mi pare di capire che dei Medici non è importante tracciare anche DataNascita e tutti gli altri dati...

    Immagino che questo assetto di tabelle vuole essere finalizzato alla creazione/stampa di Certificato di un Detenuto in una certa Data. Forse mi sfugge ancora qualcosa sulla opportunità o utilità del campo TestoPreformato perchè tu vorresti un testo "standard" per ogni Oggetto...con alcune parole "chiave" ad esempio Cognome e Nome che dovrebbero apparire all'interno del TestoCertificato. Su questo particolare occorrerà aggiustare qualcosa...ma a questo punto parliamo di un problema più tipico di Access e non riguarda più la Progettazione Database.
  • Re: Progettazione database infermeria

    Ciao e grazie per la risposta! Del detenuto non mi interessa L'anagrafica, ad eccezione del nome e cognome. Non voglio creare un database dei detenuti, ma solo standardizzare e velocizzare le certificazioni (il desktop di quel PC dell'inferneria è una selva di file word sparsi ed incasinati, ed è un problema che voglio risolvere).

    Sulle relazioni non ho ben capito cosa intendi, domani vedrò di capirci qualcosa, sperando il pomeriggio mi vada liscio e quindi di poter spendere un pó di tempo al PC...
  • Re: Progettazione database infermeria

    Allora, le relazioni le ho impostate così come in immagine.

    In pratica non capisco perchè nella tabella "certificati" mi salva tutto, ma fa una cosa strana: o mi salva il certificato (testo lungo) o mi salva l'oggetto (testo corto) ma entrambi non me li salva. Questo è il punto che non capisco... come mai?
    Allegati:
    Relazioni
    Relazioni
  • Re: Progettazione database infermeria

    doc83 ha scritto:


    Non voglio creare un database dei detenuti
    Nei database le TABELLE non servono necessariamente per "mostrare" dati in via diretta (ciò avviene raramente). Le tabelle sono contenitori PRIMORDIALI di dati "omogenei". La RIPETITIVITA' SISTEMATICA di certe informazioni "impone" (o consiglia vivamente) di normalizzare entro una tabella specifica. Ecco il perchè della tabella Detenuti.

    Quelle relazioni non vanno bene. Cerca di cogliere attentamente il mio suggerimento riguardo CampoChiavePrimaria--->uno-a-molti--->CampoChiaveEsterna. Il campo "chiave primaria" (solitamente IDEccetera) deve essere UNIVOCO. Mentre nella tabella "figlia" deve comparire MOLTE volte (lato molti).
    Nella prassi consolidata si usa un campo IDEccetera (chiave primaria) di tipo NUMERAZIONE AUTOMATICA. Mentre il campo "di richiamo dal lato molti" (chiave esterna) deve essere di tipo NUMERICO--->INTERO LUNGO. Segui le mie indicazioni.

    Per ricomporre una visualizzazione coerente e a "colpo d'occhio umano" si usano le "caselle combinate" e poi, siccome tu vuoi mostrare vari dati provenienti da più tabelle "correlate" diventa utile impostare una query che chiama in causa tutte le tabelle e mostra i loro rispettivi campi "testuali". Successivamente si decide di costruire il report sulla query.
    Quest'ultimo paragrafo va affrontato nella sezione Access.

    Chiarisciti le idee su "campi chiave primaria", "campi chiave sterna", "relazioni". Sono concetti base che occorre conoscere studiando su un manuale di base.
  • Re: Progettazione database infermeria

    Ci rinuncio, era solo per fare una cosa utile aggratiss per il nostro amato stato...

    Sicuramente per voi è una fesseria, ma per me è arabo. Non nascondo che l'idea di comprare un manuale basico di access mi ispira sicuramente, come passatempo, ma per ora non è il momento.

    Grazie lo stesso e buon proseguimento!
  • Re: Progettazione database infermeria

    Ho risolto usando la funzione Dlookup.
Devi accedere o registrarti per scrivere nel forum
8 risposte