APPUNTI INFORMATICA MEDICA DATO rappresentazione originaria di un evento o di un fenomeno effettuata attraverso simboli legati ad un supporto
BASE DI DATI collezione di dati utilizzati per rappresentare le informazioni di interesse per un sistema informativo.
MODELLO DI DATI insieme di concetti utilizzati per organizzare dati di interesse e descriverne la struttura in modo che
essa risulti comprensibile ad un elaboratore. I dati vengono organizzati in sistemi di record a struttura fissa (tabella).
SCHEMA parte sostanzialmente invariante nel tempo, costituita dalle caratteristiche dei dati; ISTANZA parte variabile
DBMS = DATA BASE MANAGEMENT SYSTEM: consente creazione di base dati, manipolazione/condivisione dei dati.
Tre livelli di astrazione per gli schemi di un DBMS:
- Schema logico: costituisce una descrizione dell’intera base di dati per mezzo del modello logico adottato dal DBMS
- Schema interno: rappresentaz schema logico per mezzo di strutture fisiche di memorizzazione (aspetti tecnologici)
- Schema esterno: costituisce la descrizione di una porzione della base di dati di interesse, per mezzo del modello
logico
(ad esempio schema esterno relativo ad un utente, views, o tramite autorizzazioni di accesso)
L’architettura a livelli garantisce:
Indipendenza fisica: capacità di astrarre completamente dai meccanismi di gestione dei dati
Indipendenza logica: capacità di offrire una visione dei dati differente ad utenti differenti (schema esterni diversi)
VANTAGGI DBMS:
- considerare i dati come una risorsa comune
- La base di dati fornisce un modello unificato e preciso della parte del mondo reale di interesse
- E’ possibile un controllo centralizzato dei dati (standardizzazione, economie di scala)
- La condivisione permette di ridurre ridondanze e inconsistenze
- L’indipendenza dei dati favorisce lo sviluppo di applicazioni flessibili
SVANTAGGI DBMS:
- prodotti costosi, complessi e diversi dai comuni strumenti informatici
- forniscono una serie di servizi che sono necessariamente associati ad un costo
PROGETTAZIONE DI BASI DI DATI
1. PROGETTAZIONE CONCETTUALE: Consiste nel costruire diagrammi nei quali esprimiamo categorie/sezioni. Il modello
concettuale permette di descrivere l’organizzazione dei dati ad un livello alto di astrazione, senza tenere conto degli
aspetti implementativi
2. PROGETTAZIONE LOGICA: permette di descrivere i dati secondo una rappresentazione ancora indipendente dai
dettagli fisici, ma più vicina a quella che sarà la fase di implementazione
3. PROGETTAZIONE FISICA Lo schema logico viene completato con la specifica dei parametri fisici (organizzazione dei
file e degli indici).
PROGETTAZIONE CONCETTUALE IL MODELLO ENTITÀ-RELAZIONE (P. CHEN, 1977) utilizzato per la progettazione concettuale di basi dati
- descrivere i dati coinvolti in una organizzazione del mondo reale in termini di oggetti e delle loro relazioni. Ha una
rappresentazione grafica (Diagrammi E/R)
SCOPO: schematizza la realtà in termini di Entità e di Relazioni fra di esse. Esso è poi tradotto in uno schema logico di
un modello logico dei dati, ad esempio quello relazionale, che al momento è il più diffuso.
ENTITA’ (rettangolo); Rappresenta
classi di oggetti che hanno proprietà
comuni ed esistenza autonoma ai fini
dell’applicazione di interesse (classi di
oggetti fisici o astratti)
ATTRIBUTO: proprietà che caratterizza
l’entità. Semplice o composto.
OCCORRENZA/ISTANZA di un’entità è
un oggetto della classe (m1, m2, m3)
CARDINALITA’ DELL’ATTRIBUTO
(min,max): da aggiungere in ogni relaz
IDENTIFICATORE DI UN’ENTITÀ (O CHIAVE) Attributo o insieme di
attributi che ci permette di distinguere un elemento dall’altro (NON ci
deve essere ambiguità!). Se non si riesce a trovare una combinazione ->
aggiungo campo (ex. CF).
Un’entità può/deve avere da 1 a più identificatori (pallino pieno)
ENTITA’ DEBOLI: L’identificatore è formato
dall’identificatore dell’entità a cui è collegata e da
eventuali attributi dell’entità debole. La
partecipazione dell’entità debole all’associazione che
la lega all’entità che la identifica deve essere(1,1)
RELAZIONE (O ASSOCIAZIONE) (rombo): mette in relazione
due o più entità (è un legame tra entità). Una relazione
non può avere due elementi uguali
- RELAZIONI RICORSIVE: Coinvolgono un’unica entità (si
ricollega allo stesso rettangolo)
GENERALIZZAZIONI legami logici tra un’entità E, detta genitore, ed uno o più entità E1, E2,…En dette entità figlie.
E è una generalizzazione di E1, E2,…En
E1, E2,…En sono le specializzazioni di E
PROPRIETA’: 1.Ogni occorrenza di un’entità figlia è anche un’occorrenza dell’entità genitore
2.Ogni proprietà dell’entità genitore (attributi, identificatori, relazioni ed altre generalizzazioni) è
anche una proprietà delle entità figlie (proprietà di ereditarietà)
TOTALE se ogni occorrenza dell’entità genitore è un’occorrenza di almeno una delle entità delle foglie (es. PERSONA),
altrimenti è parziale(es. ARTISTA)
ESCLUSIVA se ogni occorrenza dell’entità genitore è al più un’occorrenza di una delle entità figlie (es. PERSONA),
altrimenti è sovrapposta(es. ARTISTA)
MODELLO RELAZIONALE M.R. SI BASA SU: Relazione: concetto matematico dalla teoria degli insiemi (Potenza del modello) Tabella: concetto semplice
ed intuitivo (Semplicità)
RELAZIONE:
ESEMPIO DI PRODOTTO CARTESIANO
A={1,2,4}
B={a,b}
-> AxB={(1,a),(1,b),(2,a),(2,b),(4,a),(4,b)}
Sottoinsieme se ne seleziono una/più coppie
- RELAZIONE può essere vista come sottoinsieme del prodotto Cartesiano su diversi tipi di dato:
Stringa (tipo visita) x Stringa (nome) x data (data)
- E’ necessario assegnare un attributo (UNICO) che descrive il ruolo giocato dall’insieme stesso
Una Relazione su X è un insieme di n-uple(Vettori di relazione) su X. Esempio:
n1[Tipo di esame, Nome, Data] = ECG, Mario Rossi, 03/06/2017
n2[Tipo di esame, Nome, Data] = Ecografia, Anna Verdi, 10/06/2017
n3[Tipo di esame, Nome, Data] = Holter, Matteo Bianchi, 08/06/2017
SCHEMA DI RELAZIONE R(X): costituito da un simbolo detto nome della
relazione R e da un insieme di attributi X={A1,..., An}; a ogni attributo è
associato un dominio. Esempio:
ESAMI (Paziente, Data esame, Codice prestazione)
PRESTAZIONI AMBULATORIALI (Codice, Nome Prestazione, Medico)
Cardiologia = {PAZIENTI(Tessera sanitaria, Cognome, Nome, Data di nascita), ESAMI(Paziente, Data esame,
Codice prestazione),PRESTAZIONI AMBULATORIALI(Codice, Nome Prestazione, Medico) }
ISTANZA DI RELAZIONE (o relazione) su uno schema R(X) è il suo “contenuto”, cioè l’insieme r di n-uple su X.
Ex. istanza di relazione ESAMI {(6351234, 2/12/2016, 01),(7542347, 05/12/2016, 01), (8543257, 07/01/2017, 05)}
- Posso selezionare un contenuto: t[paziente]=6351234; t[codice prestazione]=01
- Se campo non lo conosco/è nullo inserisco NULL
VINCOLI DI INTEGRITÀ
Sono delle proprietà che devono essere soddisfatte dalle istanze. Si classificano in
VINCOLI INTRA-RELAZIONALI: il loro soddisfacimento è definito all’interno di una singola relazione
Esempio: il voto dell’esame non può essere maggiore di 30
VINCOLI INTER-RELAZIONALI: coinvolgono più relazioni
Esempio: nella tabella ESAMI non posso avere un num matricola che non compare nella tabella STUDENTI
>VINCOLI DI CHIAVE insieme di attributi che identificano univocamentele tuple di una relazione.
Si noti che esiste sempre almeno una chiave, al più è costituita da TUTTI gli attributi
NB. Una chiave deve essere tale per tutte le possibili istanze della relazione
CHIAVE PRIMARIA (si indica con la sottolineatura, ad esempio Codice Fiscale); sono vietati valori NULL
>VINCOLO DI INTEGRITÀ REFERENZIALE fra un insieme di attributi X di una relazione R1 e un’altra relazione R2 è
soddisfatto se i valori su X di ciascuna tupla dell’istanza R1 compaiono come valori della chiave primaria dell’istanza R2
- -Se la chiave di R2 è composta da un unico attributo B: il vincolo di integrità referenziale tra l’attributo A di R1
e la relazione R2è soddisfatto se per ogni tuplat1 in R1 esiste una tuplat2 in R2 tale che t1[A] = t2[B]
Se la chiave R2 è composta da più attributi: X = A1, A2, ..An e K = B1, B2, ..Bn, il vincolo è soddisfatto se per
ognituplat1 in r1 esiste una tuplat2 in r2 tale che t1[Ai] = t2[Bi], con i compreso tra 1 e n
PROGETTAZIONE LOGICA Due fasi principali:
1 RISTRUTTURAZIONE dello schema ER: ottimizzazione dello schema.
2 TRADUZIONE verso lo schema logico: è dipendente dal modello logico scelto (per noi il mod relazionale M.R)
1.1 ANALISI RINDONDANZE: presenza di un dato che può essere ottenuto tramite una serie di operazioni su altri dati.
Esempi:
- attributi derivabili da altri attributi della stessa/altre entità
- attributi derivabili da operazioni di conteggio di occorrenze
- relazioni derivabili dalla composizione di altre relazioni in presenza di cicli
1.2 ELIMINAZIONE DELLE GENERALIZZAZIONI: MR non permette di rappresentare
direttamente la generalizzazione ma solo entità e associazioni. 3 strategie
- Accorpamento entità figlie nella
generalizzazione del genitore
Le entità figlie sono eliminate e gli attributi delle figlie sono aggiunte al padre
Si aggiunge un attributo per distinguere il tipo (quale figlia è, o nessuna)
Gli attributi che provengono da una figlia possono essere nulli
Le relazioni (es. R1) che provengono da una sola figlia hanno cardinalità
minima pari a 0
- Accorpamento del genitore della generalizzazione nelle figlie
L’entità padre è eliminata e gli attributi, le relazioni e l’id del padre sono
aggiunti alle figlie
Ogni relazione definita sul padre genera una relazione distinta per ogni
figlia
- Sostituzione della generalizzazione con associazioni
Si introduce una relazione uno-a-uno fra l’entità padre e ciascuna entità
figlia
Occorre inserire il vincolo che ogni istanza dell’entità padre può
partecipare solo ad una relazione di legame con le entità figlie
Se la generalizzazione è totale ogni istanza dell’entità padre partecipa
necessariamente ad una (sola) delle relazioni di legame con le figlie
1.3 PARTIZIONAMENTO/ACCORPAMENTO DI CONCETTI
(PRIMO CASO) l’entità MEDICO può venire sostituita da due entità, collegate da un’associazione uno a uno che
descrivono rispettivamente i dati anagrafici e quelli relativi alla loro retribuzione
(SECONDO CASO) Eliminazione degli attributi multivalore(es. diversi numeri di telefono)
1.4 SCELTA DEGLI IDENTIFICATORI PRINCIPALI:ogni entità deve avere un identificatore (mai nullo)
TRADUZIONE VERSO IL MODELLO RELAZIONALE
Per ogni entità, si crea una relazione con
lo stesso nome avente per attributi i
medesimi attributi dell’entità e per
chiave il suo identificatore.
Per gli attributi composti due modi <-
Per ogni associazione, si crea una relazione con lo stesso nome avente per attributi i medesimi attributi dell’associaz e
gli identificatori delle entità coinvolte; tali identificatori formano la chiave della relazione
ASSOCIAZIONE MOLTI A MOLTI Esistono due vincoli di integrità referenzialetra gli
attributi CF_pazientee CF_medicodi PERCORSO
CURA e gli attributi CF di PAZIENTE e MEDICI
ASSOCIAZIONE UNO A MOLTI Nella relazione CONTRATTO, la chiave è costituita solodall’identificatore di MEDICO, perché le cardinalità dell’associazione dicono che ogni
medico ha un contratto con un unico ospedale. Inoltre CONTRATTO e MEDICI hanno la stessa chiave -> posso fonderle in un’unica relazione
->
ASSOCIAZIONE UNO A UNO: le si può fondere in un’unica relazione
- Associazioni uno a uno con entrambe le partecipazioni opzionali (0,1) e (0,1) : Meglio NON avere valori nulli come
attributi -> Piuttosto considerò più entità ma senza valori nulli come attributi
TABELLE RIASSUNTIVE PER SCHEMATIZZARE LE RELAZIONI
INTERROGAZIONE DI BASI DI DATI Due operazioni principali:
AGGIORNAMENTO: data un’istanza di base di dati, produce un’altra istanza di base di dati sullo stesso schema.
INTERROGAZIONE: data un’istanza di base di dati, produce una relazione su un dato schema. Due tipi:
DICHIARATIVI specificano le proprietà del risultato ("che cosa")
PROCEDURALI specificano le modalità di generazione del risultato ("come") (es. ALGEBRA RELAZIONALE)
ALGEBRA RELAZIONALE:
linguaggio procedurale basato su concetti di tipo algebrico; E’ costit da un insieme di operatori definiti su relazioni che
producono ancora relazioni come risultati). Tre categorie di operatori:
OPERATORI INSIEMISTICI: UNIONE, INTERSEZIONE E DIFFERENZA
- Relazioni = insiemi di tuple omogenee (= definite sugli stessi attributi); risultato deve essere ancora una relazione
- Operatori applicabili SOLO a coppie di relazioni definite sugli stessi attributi
Unione di due relazioni r1 e r2 (r1 ∪ r2) definito sullo stesso insieme di attributi X è una relazione su X contenente
le tuple che appartengono a r1, a r2 o a entrambe
Intersezione di due relazioni r1 e r2 (r1∩r2) definito sullo stesso insieme di attributi X è una relazione su X
contenente le tuple che appartengono sia a r1 a r2
Differenza di r1(X) e r2(X) indicata con r1-r2 è una relazione su X contenente le tuple che appartengono sia a r1 ma
non a r2
OPERATORI SPECIFICI Pongono dei limiti (es. dovuti al nome degli attributi)
Operatore ρ ridenominazione: Cambia nome degli attributi senza alternarne contenuto relazione (modifico lo schema,
lasciando inalterate le istanze ). SCOPO: adeguare nomi attributi al fine di facilitare Operaz Insiemistiche
SINTASSI RIDENOMINAZIONE:
ρ Sede,Retribuzione <- Ufficio,Stipendio(IMPIEGATI)
ρ Sede,Retribuzione <-Stabilimento,Salario(OPERAI)
SELEZIONE E PROIEZIONE: svolgono op tra loro complementari; definite su un operando e produc una porzione di esso
SELEZIONE(σ): produce un sotto insieme (taglia) delle tuple di una relazione, su tutti gli attributi
σ condizione(relazione) -> produce relazione che soddisfano condizione
PROIEZIONE (π): produce un sottoinsieme che contiene tutte le tuple, ma su un sottoinsieme (taglia) degli attributi
πsottoinsieme = {t[sottoinsieme] | t Єrelazione}
Con i due operatori, non possiamo però collegare informazioni presenti in relazioni diverse, né informazioni in ennuple
diverse di una stessa relazione
OPERATORE JOIN: collega dati in relazioni diverse, sulla base di valori uguali in attributi con lo stesso nome. Utilizza la
caratteristica fondamentale del modello relazionale cioè quella di essere basato sui valori
JOIN NATURALE Il grado della relazione ottenuta come risultato di un join è uguale o minore della somma dei gradi dei
due operandi (se ci sono attributi omonimi nei due operandi, questi attributi compaiono una volta sola nel risultato)
NB. È molto frequente eseguire join sulla base di valori della chiave di una delle relazioni coinvolte; in molti casi, è
definito, tra gli attributi coinvolti, un vincolo di integrità referenziale
JOIN COMPLETO: ciascuna tupla di ciascuno degli operandi contribuisce ad almeno una tupla del risultato
per ogni tupla t1 di r1 esiste una tupla t in r1 ⋈ r2tale che t[X1] = t1 (analogamente per r2) (es. caso sopra)
Caso limite: ciascuna delle tuple degli operandi è compatibile con tutte le tuple dell’altro -> il risultato contiene
un numero di tuplepari al prodotto delle cardinalità degli operandi
JOIN INCOMPLETO: alcune delle tuple degli operandi non contribuiscono al risultato, perché l’altra relazione
non contiene tuplecon gli stessi valori sull’attributo comune
Caso limite: nessuna delle tupledegli operandi è combinabile ->il risultato del join è una relazione vuota
JOIN ESTERNO per non omettere
informazioni rilevanti
•sx/dx: mantiene tutte le ennuple del
primo/secondo operando,
estendendole con valori nulli, se
necessario
•completo: mantiene tutte le ennuple
di entrambi gli operandi,
estendendole con NULL, se necessario
THETA-JOIN è prodotto cartesiano seguito da una selezione, che è come operare un Join soggetto ad una condizione
SQL Structured Query Language (SQL) Si tratta di un linguaggio di interrogazione, creazione, gestione e amministrazione del database
DOMINI ELEMENTARI: SQL mette a disposizione alcune famiglie di domini elementari:
1. CARATTERI: il dominio character permette di rappresentare singoli caratteri oppure stringhe. La lunghezza
può essere fissa o variabile (se variabile è necessario indicare la lunghezza massima)
character(20) stringa di 20 caratteri
character varying(20) stringa di lunghezza variabile, al massimo 20 caratteri
varchar(20) stringa di lunghezza variabile, al massimo 20 caratteri
2.TIPI NUMERICI ESATTI: permettono rappresentaz valori esatti, interi o con parte decimale di lungh prefissata
Precisione = numero di cifre significative; Scala = quante cifre dopo la virgola
numeric(Precisione, Scala)
decimal(Precisione, Scala)
integer
smallint
decimal(4) -> numeri compresi tra -9.999 e +9.999
decimal(6,2) -> numeri compresi tra -9999.99 e +9999.99
3.TIPI NUMERICI APPROSSIMATI: valori reali approssimati (rappresentazione in virgola mobile)
float (Precisione) Precisione = numero di cifre per la mantissa
real Precisione fissa
double precision Precisione fissa (doppia rispetto a real)
4.ISTANTI TEMPORALI: domini che permettono di rappresentare gli istanti di tempo
date (ammette i campi yearmonthday)
time(ammette i campi hour, minute, second)
timestamp(ammette tutti i campi dayearasecond)
5.INTERVALLI TEMPORALI
Interval (prima unità di tempo) to(seconda unità di tempo)
6.BOOLEAN: permette di rappresentare singoli valori booleani (True e false)
DEFINIZIONE DI SCHEMA schema di base di dati come collezione di oggetti (tabelle, domini, ..)
create schema NOME_SCHEMA {DefElementoSchema};
DEFINIZIONE DI TABELLE
create tableNomeTabella (NomeAttributoDominio[ValorediDefault][Vincoli],Altri vincoli);
DEFINIZIONE DI NUOVI DOMINI (Analogo a #define)
create domain NomeDominio as TipoDatoElementare [valore di default] [vincolo]
SPECIFICA VALORE DI DEFAULT (per metterlo diverso da NULL) default valoreDefault
VINCOLI INTRARELAZIONALI: Nella definizione si possono specificare vincoli da rispettare per ogni istanza:
notnull: indica che il valore NULL non è ammesso come valore per quell‘attributo
unique: si applica a un attributo o a un insieme di attributi di una tabella e impone che i valori dell‘attributo (o le
ennuple di valori sull‘attributo) siano una (super)chiave.
primarykey: è il più importante tra gli indicatori di una relazione, è usato una sola volta all’interno della relazione. Può
essere definito su un singolo attributo o un insieme di attributi. Non possono assumere valore nullo. [Di fatto è come
unique ma in più impone che non possano assumere valori nulli]
VINCOLI INTERRELAZIONALI:
sono i vincoli di integrità referenziale. In SQL si definiscono con il vincolo foreign key e/o con il vincolo references
- Questo vincolo crea un legame tra la tabella su cui è definito, detta interna, e un’altra tabella, detta esterna; impone
che per ogni riga della tabella interna il valore dell’attributo specificato nella foreign key, eccetto il caso in cui sia
NULL, sia presente anche nella tabella esterna (spesso l’attributo nella tab esterna è la chiave primaria della tabella)
l’attributo a cui si fa riferimento nella tabella esterna deve essere soggetto ad un vincolo unique
due sintassi differenti:
references quando c’è un solo attributo coinvolto
foreign key+ references quando c’è più di un attributo coinvolto
Nell’esempio se fosse stato solo
Provincia l’attributo, avrei
scritto solo references AUTO
(provincia)
Se non viene rispettato il vincolo di integrità referenziale??? La priorità è sempre sulla tab est (= tabella «master»)
- Se operiamo una modifica ad es. cancellazione/aggiunta di una riga dalla tabella interna -> operaz viene rifiutata
- Se operiamo invece una modifica sulla tabella esterna -> comandi che trattino le violazioni:
Cascade: nuovo valore dell’attributo della tab esviene riportato su tutte le corrispondenti righe della tab interna
set null o set default: all’attributo referente viene assegnato NULL / default al posto del valore modificato sulla tab est
no action: nessuna azione richiesta
Interrogazioni in SQL: SQL esprime le interrogazioni in modo dichiarativo (specifica l’obiettivo e non il modo in cui si ottiene a differenza
dell’algebra relazionale). Diverse strade per esprimere stessa interrogazione
Select Cognome, Nome from PAZIENTI where Reparto=‘A’;
-> risultato una tabella con due colonne contenenti tutti i cognomi e nomi che soddisfano condizione. Se
scrivessi Select * -> seleziona tutti gli attributi dei PAZIENTI
Select P.Cognome, P.Nome from PAZIENTI as P where P.Reparto= ‘A’;
Select TesseraSanitaria as Tessera from PAZIENTI where Reparto=‘A’;
-> Con as posso creare degli alias degli attributi, cioè ridenominar el’attributo nello schema in uscita
-> come risultato ho una tabella con una colonna ridenominataTessera,
Select Cognome, Nome from PAZIENTI where Cognome like ‘A%’
per selezionare i pazienti il cui cognome inizia per “A”; % indica una stringa arbitraria. A_eri% per selezionare
stringhe contenenti A e nel nome eri
esempio:
Esempio 2: Dati i due schemi con diversi attributi R1(A,B) e R2(C,D)
Select distinct R1.A, R2.D from R1, R2 where R1.A = R2.C
equivale all’operazione πA,D(R1 ⋈A=CR2)
Esempio 3: vogliamo conoscere tutti i codici dei farmaci che hanno stesso principio attivo ma != produttore
Ridenominandola stessa tabella due volte è come se facessimo un prodotto cartesiano con se stessa in cui
vengono imposte delle condizioni nella clausola where
JOIN ESTERNO definito in SQL come left outer join , right outer join , full outer join
OPERATORI UTILI:
Selectcount * conta il numero di righe
Selectcount (distinctProduttore) conta il numero di farmaci con produttore differente
Sum: somma dei valori dell’espressione
Max/min: valore massimo/minimo
avg: media
Esempio 4: voglio valutare il numero di farmaci che hanno come principio attivo «sul famidico»
HINT: PROGETTAZIONE CONCETTUALE
- Se un concetto ha proprietà significative e/o descrive classi di oggetti con esistenza autonoma, è opportuno
rappresentarlo come un’ entità
- Se un concetto ha struttura semplice e non possiede proprietà rilevanti associate, è opportuno rappresentarlo come
un attributo di un altro concetto a cui si riferisce
- Se sono state individuate due o più entità e nei requisiti compare un concetto che le associa, questo concetto può
essere rappresentato da una relazione
NB. Questo vale solo nel caso in cui il concetto in questione non abbia le caratteristiche delle entità
Ad esempio, il concetto di visita: se venisse rappresentato come relazione tra paziente e medico, non potrei tenere
conto del fatto che verosimilmente il paziente può effettuare diverse visite con lo stesso medico, in date diverse.
- Se uno o più concetti risultano essere casi particolari di un altro, è opportuno rappresentarli per mezzo di una
generalizzazione
HINT PROF :
- All’inizio è meglio scrivere tutti i blocchi possibili, poi scremarli cercando di averne il meno possibile
- Se all’esame chiede entrambi (modello concettuale e modello relazionale):
Se ci sono tante generalizzazioni: scrivere anche funzione senza generalizzazioni e poi farle sparire nel mod.
relazionale, in modo tale che essi siano identici
- Essere il più sintetico possibile
- Tempo per modello relazionale è 30min -> Bisogna essere in grado di risolvere in questo tempo
Top Related