|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Feb 2008
Messaggi: 484
|
[SQL-ER] Problemi progettazione di una base dati
Salve a tutti
![]() Devo progettare una base di dati ma ho qualche problema nel modellare alcuni dati. Questa è la richiesta: Ogni paziente è descritto da un numero di tessera sanitaria, un codice fiscale, un nome e una data di nascita. Un paziente è sottoposto ad una cura, identificata da un nome e descritta da una sequenza di intervalli temporali consecutivi, ognuno dei quali è associato a uno o più farmaci. Un esempio di cura è il seguente: i farmaci A e B dal giorno 1 al giorno 3, il farmaco C dal giorno 4 al giorno 5, il farmaco D dal giorno 6 al giorno 7. Un paziente è ricoverato su un letto di una stanza di un reparto. Per un letto si vuole memorizzare un codice identificativo e una posizione (finestra, corridoio, mediano), per una stanza si vuole memorizzare un codice identificativo e il numero di letti occupati e il numero totale di letti, al massimo 3 per ogni stanza. Per un reparto si vuole tenere traccia del nome e del numero di stanze ospedaliere che contiene. Un medico è identificato da un nome e un cognome e afferisce esattamente ad un reparto. Un medico può essere primario; in tal caso dirige un reparto. Ogni reparto ha un unico primario e un medico può essere primario di più reparti. Infine, ogni paziente è seguito da uno o più medici. Le query richieste sono: - i pazienti curati con il farmaco Aspirina - per ogni reparto, il primario e il numero di medici che vi lavorano E poi creare in SQL standard una vista permanente che, per ogni paziente, contenga il letto, una stanza, il reparto e il nome della cura a cui il paziente è sottoposto. Usando la vista creata scrivere in SQL standard la seguente interrogazione: i pazienti ricoverati in Ortopedia in stanza singola ( con un solo letto) Lo schema che ho fatto è il seguente: ![]() Ho provato vari programmi ma questo è il più intuitivo. Il problema è che alcune cose non sono riuscito a definirle. Ad esempio, l'attributo numero letti occupati è calcolato, perché viene ricavato dal totale - i letti lasciati vuoti. L'attributo posizione l'ho definito come attributo normale, ma dato che può essere o finestra o corridoio o mediano, non è multivalore?. Ho fatto poi questa traduzione: Farmaco (nome) Composizione (giornoInizioCura, giornoFineCura, cura, farmaco) Cura (nome) Composizione (farmaco) -> Farmaco (nome) Composizione (cura) -> (Cura nome) Paziente (TesseraSanitaria, CF, dataNascita, nome) Paziente (cura) -> Cura (nome) Letto (codice, posizione) Paziente (CF) -> Letto (codice) Qua mi sono fermato perché non capisco una cosa: nella traduzione, devo tenere conto della cardinalità o del fatto che sia un'entità debole? Oppure entrambe e fare una sorta di summa? Perchè Paziente (CF) -> Letto (codice) è il risultato della traduzione (1,1) ma se si considera letto come entità debole, fregandosene della cardinalità, viene: letto (codice, posizione, paziente) letto (paziente) -> paziente (CF) Qualcuno sa chiarire i miei dubbi? Purtroppo ho l'esame di DB e se canno la traduzione e lo schema sbaglio anche tutto il resto ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Feb 2008
Messaggi: 484
|
up
![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Feb 2008
Messaggi: 484
|
[Java/Jcreator]
edit scusate -__-
Ultima modifica di islandofjava : 01-09-2008 alle 15:52. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:02.