Sei sulla pagina 1di 11

Base dei Dati e Sistemi Informativi

Base dei Dati e Sistemi Informativi

B
b1

C
c1

a1

b1

c2

a1

b2

c2

1. esercizio.

a1

b3

a1

Date due relazioni r e s

a2

Esercizi per lesonero.


Parte Logica

A
a1

B
b1

C
c1

a1

b2

a2

b1

A
a1

B
b2

C
c1

c1

a2

b2

c1

c2

a2

b2

c2
rs

dom ( A ) = {a1 , a2 } ;

dom ( B ) = {b1 , b2 , b3 } ;
dom ( C ) = {c1 , c2 } ;

Determinare
r s, r s, r s, s r , r , r , s , s, r s.
rs

rs

A
a1

B
b2

C
c1

rs

sr

A
a1

B
b1

C
c1

a1

b2

c1

a2

b1

c2

a2

b2

c1

a2

b2

c2

A
a2

B
b2

C
c1

a2

b2

c2

A
a1

B
b1

C
c2

A
a1

B
b1

C
c1

a2

b1

c2

A
a1

B
b1

C
c2

a1

b2

c2

a1

b2

c2

a1

b3

c1

a2

b1

c1

a1

b3

c2

a2

b2

c1

a2

b1

c1

a2

b2

c2

a2

b2

c1

a2

b2

c2

a2

b3

c1

a2

b3

c2

r

A
a1

s

A
a1

B
b1

C
c1

a1

b1

c2

a1

b2

c2

c1

a2

b1

c1

b3

c2

a2

b1

c2

b1

c1

a2

b1

c2

a2

b2

c2

a2

b3

c1

a2

b3

c2

A
a1

B
b1

C
c1

A
a1

B
b2

a1

b1

c1

a2

b2

c1

a1

b1

c1

a2

b2

c2

a1

b2

c1

a1

b2

c1

a1

b2

c1

a2

b2

c1

a1

b2

c1

a2

b2

c2

a2

b1

c2

a1

b2

c1

a2

b1

c2

a2

b2

c1

a2

b1

c2

a2

b2

c2

C
c1

2. esercizio.
Dato uno schema X ( A, B,) sotto quali operazioni booleanee chiuso linsieme delle possibili

relazioni di schema r : R ( X ) .

Linsieme delle possibili relazioni r non chiuso rispetto al prodotto cartesiano e al complemento.
Infatti partendo come esempio dalle relazioni dellesercizio precedente, notiamo che il prodotto
cartesiano r s non rispetta lo schema X ( A, B, C ) : in generale il grado del prodotto cartesiano tra
due relazioni maggiore del grado delle singole relazioni.
Pu accadere che se il dominio di un attributo dello schema di una relazione non sia finito, cio
linsieme degli elementi atomici per il dominio infinito, allora il complemento della relazione ha
cardinalit infinita.

PAG. 1

PAG. 2

Base dei Dati e Sistemi Informativi

3.

Base dei Dati e Sistemi Informativi

esercizio.

4.

Date le relazioni R : ( K , X ) e S : ( K , X ) .
Per quali tra queste operazioni la chiave primaria resta tale ?

Date le relazioni dellesercizio precedente r , s determinare:

AB ( r )

BC ( s )

r
r

s
A= A

A= A

B B

B B

a1

K ( R)

BC ( s )

b1

b2

c1

K
k1

X
x1

b2

c2

k2

x2

k2

x1

k3

kn

x1

xm

k3

kn

x4

xm

K
k1


X
xs


a1

b2
b1

a1

b2

c1

D B ( s )

a1

b1

c1

b2

c1

a1

b2

c1

b2

c1

a2

b1

c2

b2

c1

a2

b1

c2

b2

c2

a1

b1

a1

b1

a1

a1

b1

c1

b2

a1

b2

c1

b2

RS

a2

b1

c2

b2

... in quanto possono esserci delle duplicazioni.


RS
rs

c1

a1

b2

c1

c1

a2

b2

c1

b1

c1

a2

b2

c2

a2

b1

c2

a1

b2

c1

a2

b1

c2

a2

b2

c1

a2

b1

c2

a2

b2

c2

a1

b1

c1

a1

b2

c1

a2

b1

c2

a2

b2

c1

a2

b2

c2

finita )

Siano ti [ K ] t j [ K ] per i j in quanto K chiave per entrambi le relazioni R ed S .

a2

(R

R S, R S, R S,

D C ( s )

AB ( r )

D B ( s )

esercizio.

D C ( s )

a1

b2

c1

no
rs

K
ki

X
xr = xs

ki +1


xr = xs


kn

xs

k j 1

xr = xs

k1

xs

kj

xr = xs

Chiave duplicata

si
si

si in quanto R S

esercizio.

Siano date le seguenti relazioni R ( A, B, C , D ) e S ( A, B , E , F ) verificare se la seguente ugualianza


sia valida:

PAG. 3

X
x1

RS R

RS
K (R)

5.

si

K
k1

A=A
B=B

CD EF ( S )

PAG. 4

Base dei Dati e Sistemi Informativi

Base dei Dati e Sistemi Informativi

8. esercizio.
Siano date le seguenti relazioni r ( A, B, X ) e s ( A, C , Y ) verificare se le seguenti ugualianze siano
valide:

Non danno relazioni equivalenti in quanto gli schemi delle due espressioni sono differenti:
E1 R
E2 R

S
A=A
B=B

CD EF ( S )

E1 ( A, B, C , D, E , F )
mentre
E2 ( A, B, C , D, C , D )

6.

a)

B =b ( r

s ) = B =b ( r )

b)

B =b ( r

s ) = C B ( r )

c)

ABC ( r

s ) = AB ( r ) AC ( s )

d)

ABC ( r

s ) = AB ( r ) C ( s )

e)

ABC ( r

s ) = AB ( r ) C ( s )

esercizio.

Sia data la seguente relazione : r ( A, B, C )


Cosa si pu dire circa la cardinalit delle seguenti relazioni:

s = A= a ( r )

t = Bb ( r )

v = AB ( r )

B = b ( B C ( s ) )

a)

Vero: perch la condizione di selezione B=b si riferisce solo ed esclusivamente alla


relazione r . Pertanto lecito considerare B =b ( r s ) = B =b ( r ) s .

b)

Falso: la condizione di selezione B=b nel 1 membro delluguaglianza fa riferimento


esclusivamente alla relazione r , mentre la medesima condizione di selezione nel 2 membro
delluguaglianza fa riferimento ad un opportuno attributo ridenominato, che generarmente
pu non coincidere con lattributo B della relazione r .

c)

Vero : perch gli schemi delle due relazioni contengono come attributo in comune
lattributo A, pertanto valida luguaglianza:
ABC ( r s ) = AB ( r ) AC ( s ) .

d)

Falso: in quanto generalmente accade :


ABC ( r s ) AB ( r ) C ( s ) .

e)

Falso: in quanto non ha senso parlare di unione di due relazioni che hanno schemi differenti.

Sia N = r allora:
0 s 1, 0 t N , v = N .

7. esercizio.
Date due relazioni r e s
r

A
a1

B
b1

C
c1

a2

b2

a3
a2

B
b1

C
c1

c1

b2

c1

b3

c2

b2

c2

b1

c1

a1

b2

c2

a2

b2

c2

Determinare
q = rs

A
a2

t = r C ( s)

A
a2

B
b2

PAG. 5

PAG. 6

Base dei Dati e Sistemi Informativi

Base dei Dati e Sistemi Informativi

9. esercizio.

10.

esercizio.

Sia data la seguente base di dati organizzata dalle seguenti tabelle:

Sia data la seguente base di dati organizzata dalle seguenti tabelle:

Studente ( S#, SNome, Anno,)

Impiegato ( I#, INome,)

Corso ( C #, CNome, Prof #,)

Assegnazione Progetto #, Impiegato #

Progetto ( P #, PNome, Manager #,)

Docente ( D #, DNome, Dipartimento,)

Frequenza Matricola _ Stud , Cod _ Corso

a)

Definire i vincoli di integrit referenziale.

b)

Scrivere lespressione in Algebra Relazionale della seguente interrogazione:


-

a)

Definire i vincoli di integrit referenziale.

b)

Scrivere lespressione in Algebra Relazionale delle seguenti interrogazioni:


-

Determinare la matricola dello studente e il codice del corso frequentato dagli


studenti aventi lo stesso nome del docente del corso.

Determinare il codice e i nomi degli impiegati che lavorano a progetto di nome


DB.
Determinare i nomi degli impiegati che non lavorano al progetto P12.
Determinare il codice degli impiegati che lavorano ad almeno uno dei progetti a cui
assegnato allimpiegato I23.
Determinare i nomi degli impiegati non assegnati ad alcun progetto.

a) Le frecce indicano il riferimento esterno (chiavi esterne) per le quali si definiscono i vincoli
di integrit referenziale per lo schema del database in questione.

b) a) Le frecce indicano il riferimento esterno (chiavi esterne) per le quali si definiscono i


vincoli di integrit referenziale per lo schema del database in questione.
Impiegato ( I#, INome,)

Studente ( S#, SNome, Anno,)

Progetto ( P #, PNome, Manager #,)

Docente ( D #, DNome, Dipartimento,)

Corso ( C #, CNome, Prof #,)

Assegnazione Progetto #, Impiegato #


b)

Frequenza Matricola _ Stud , Cod _ Corso


b)

Studente.S#,Corso.C# Corso.C #,Corso. Prof # ( Corso )


Docente. D#=Docente. Prof#

Docente . DNome,Docente. D#

Docente .C#=Frequenza .Cod _ Corso

( Docente )

Frequenza

Docente. DNome =Studente . SNome Studente . S#,Studente. SNome

( Docente ) )


Progetto . P# ( Progetto . PNome = ' DB ' ( Progetto ) ) Progetto . P#=Assegnazione.Progetto# Assegnazione
- Impiegato. INome

Assegnazione.Impiegato#=Impiegato. I# ( Impiegato. I#,Impiegato. INome ( Impiegato ) )

( Progetto Progetto.PNome=' P12' ( Progetto ) )


Impiegato.I# Progetto. P#
Progetto.P#=Assegnazione.Progetto# Assegnazione

- Impiegato. INome

Assegnazione.Impiegato#=Impiegato.I# ( Impiegato.I#,Impiegato. INome ( Impiegato ) )

((

- Impiegato. I# Assegnazione.Progetto# ( Impiegato. I# =' I 23' ( Impiegato ) ) Assegnazione

))

- I modo con join esterno

Impiegato. I#,Impiegato.INome ( Impiegato )

Impiegato. INome Assegnazione.Progetto# is NULL

Assegnazione.Impiegato# Impiegato. I# ( Assegnazione )

PAG. 7

PAG. 8

Base dei Dati e Sistemi Informativi

Base dei Dati e Sistemi Informativi

Parte Fisica

- II modo senza join esterno

Assegnazione.Impiegato# Impiegato.I# ( Impiegato. I# ( Impiegato ) ) Assegnazione. Impiegato# ( Assegnazione )


Impiegato. INome

Impiegato.I#,Impiegato. INome ( Impiegato )

11.

1. esercizio.
Applicare la compressione frontale, posteriore e totale ai seguenti dati, considerando 12 caratteri er
nome: FERRARA FERRARESE FERRARINI FERRARINO FERR.

esercizio.
La compressione generalmente utilizzata per ridurre lo spazio richiesto da strutture (archivi
primari) o sovrastrutture (indici o archivi primari con indici non densi) ad accesso sequenziale.

Nel sistema reticolare DBTG cos un set singolare ?

F
F
F
F
F

Tutti i set nel sistema DBTG (Data Base Task Group) in cui lOWNER SYSTEM sono set
singolari hanno ununica occorenza per lowner. Un set per definizione un modo di rappresentare
e gestire le relazioni tra le entit. Il gruppo primario nel DBTG detto Owner (o padre, o master), il
secondario detto Member (o figlio, o slave) del set,

E
E
E
E
E

R
R
R
R
R

R
R
R
R
R

A
A
A
A

R
R
R
R
b/

A
E
I
I
b/

b/
S
N
N
b/

b/
E
I
O
b/

b/
b/
b/
b/
b/

b/
b/
b/
b/
b/

b/
b/
b/
b/
b/

(Facoltativo)
Memoria occupata : 60 caratteri

dove B sia un attributo numerico.


Sia data la seguente relazione : r ( A, B )
Eseguire una espressione in Algebra Relazionale che determini il valore minimo (o massimo)
dellattributo B .

Compressione frontale:

0 F E R R A R A b/ b/ b/ b/ b/ 6 E S E b/ b/ b/ 6 I N I b/ b/ b/ 8 O b/ b/ b/ 4 b/ b/ b/ b/ b/ b/ b/

B ( R ) B ( R ) C ( B C ( R ) )
B <C

Memoria occupata : 41 caratteri


Compressione posteriore:

07FERRARA63ESE63INI81O41
Memoria occupata : 25 caratteri
Compressione totale:

07FERRARA61E 63INI81O41
Memoria occupata : 23 caratteri

Fase di decompressione :
F
F
F
F
F

PAG. 9

E
E
E
E
E

R
R
R
R
R

R
R
R
R
R

A
A
A
A

R
R
R
R
?

A
E
I
I
?

?
?
N
N
?

?
?
I
O
?

?
?
?
?
?

?
?
?
?
?

?
?
?
?
?

PAG. 10

Base dei Dati e Sistemi Informativi

Base dei Dati e Sistemi Informativi

2. esercizio.

3. esercizio.

Ordinare con il metodo per istogrammi di occorenza larchivio R = {15,18,5,15,15,5, 6,5, 4} ,


indicando N , N , O, I ed il processo di dispersione.

Assumendo n = 5 , D = 4 , N = 8 , t = 2 , applicare la pre-trasformazione uniforme delle chiavi


(tecnica di estrazione dei digit) indicando j ( j = 1, , n ) ed
R allarchivio
R = {k1 = 12131, k2 = 12241, k3 = 13233, k4 = 22244, k5 = 13243, k6 = 12221, k7 = 12311, k8 = 13223} .

Il metodo dellistogramma della frequenza degli elementi consiste nel determinare loccorenza in
R degli N valori distinti (chiavi) nellarchivio.
N =9
N = 5
Le chiavi distinte sono:
k1 = 4, k2 = 5, k3 = 6, k4 = 15, k5 = 18
Il vettore delle occorenze risulta:
O = {1, 3, 1, 3, 1}
graficamente:

Il metodo della pre-trasformazione permette di trasformare gli elementi di un archivio R


(generalmente non distribuiti uniformamente) in elementi estratti che hanno una maggiore
uniformit.
Considero le chiavi espresse con n = 5 cifre nella sequente tabella:

3
Frequenze

1
4

15

k1

k2

k3

k4

k5

k6

k7

k8

18

Considero la tabella Q ( j , l ) contenente le frequenze di cifre (digit) possibili per le chiavi su


elencate

i 1

Sostituisco il vettore O con il vettore I delle somme parziali dei suoi elementi I i = O j
j =1

I = {0, 1, 4, 5, 8}

1
2
3
4
5

Si effettua lallocazione deelle chiavi attraverso la formula:


ki R* (1 + I ( j ) )
processo di dispersione:
R
15
18
5
15
15
5
6
5
4

1
2
3

15
15
15

18
18

4
5
6
7
8
9

5
5
5
5
5
5

5
5
5
5

5
5

6
6
6

15
15
15
15
15
15

15
15
15
15
15
15

15
15
15
15
15

18
18
18
18
18
18

Sia =

d1
7
0
1
1
4

d2
1
5
6
2
0

d3
0
3
1
2
3

d4
0
0
0
3
1

N 8
= = 2 e lo scarto medio delle occorenze dei digit:
D 4
D

j =

1 =
2 =

PAG. 11

7 2 + 1 2 + 0 2 + 0 2
4
0 2 + 5 2 + 3 2 + 0 2
4

Q ( j, l )
l =1

5 +1+ 2 + 2 5
=
4
2
2 + 3 +1+ 2
=
=2
4

PAG. 12

Base dei Dati e Sistemi Informativi

Base dei Dati e Sistemi Informativi

1 2 + 6 2 + 1 2 + 0 2

1+ 4 +1+ 2
=2
4
1+ 0 + 0 +1 1
4 =
=
=
4
4
2
4 2 + 0 2 + 3 2 + 1 2 2 + 2 +1+1 3
=
=
5 =
4
4
2

3 =

4
1 2 + 2 2 + 2 2 + 3 2

La risoluzione delle query dipende da come si interroga la matrice binaria:

(a)
(b)

(a) Analisi per colonne (Liste invertite binarie LIB indici binari relativi ad una propriet)

ordinando il vettore

( 1 , 2 , 3 , 4 , 5 ) =

5
1 3 1 3
5
, 2, 2, , , , 2, 2, = ( 4 , 5 , 2 , 3 , 1 )
2 2 2 2
2
2
essendo t = 2 la trasformazione definita come estrazione ordinata da ciascun valore ki dei digit in
posizione 4 e 5.
R = {k1 = 31, k2 = 41, k3 = 33, k4 = 44, k5 = 43, k6 = 21, k7 = 11, k8 = 23}

Dato il seguente archivio primario e gli opportuni indici binari, effettuare lanalisi sia per colonne
che per righe per risolvere linterrogazione Q : determinare gli impiegati di livello diverso dal 7
con stipendio inferiore a 2.000K, et maggiore o uguale a 25 e minore o uguale a 30 e numero figli
1 oppure 0.
Nome
Rossi
Bianchi
Neri
Verdi
Chiari
Scuri

Livello
7
5
7
6
5
6

Stipendio
2.600K
1.800K
2.500K
2.000K
1.900K
1.850K

Et
34
25
30
28
28
30

Figli
2
0
2
1
1
1

p1 Livello = 7
p2 Stipendio < 2.000 K
p3 Et 25
p4 Et 30
p5 Figli = 0
p6 Figli = 1
Insieme di propriet

p1
1
0
0
0
0
0

p2
0
1
0
0
1
1

p3
1
1
1
1
1
1

p4
0
1
1
1
1
1

p5
0
1
0
0
0
0

Indice binario (visto come matrice)

Una LIB un indice binario relativo ad una propriet p . Sia I insieme degli indirizzi logici dei
valori 1 nella LIB.
Q = B ( p1 , p2 , p3 , p4 , p5 , p6 ) = not ( p1 ) and ( p2 ) and ( p3 ) and ( p4 ) and ( ( p5 ) or ( p6 ) ) ;
not (100000 ) and ( 010011) and (111111) and ( 0111111) and ( ( 010000 ) or ( 000111) ) ;
I = {4,5}

(b) Analisi per righe (organizzazione logica a tre valori).

4. esercizio.

Codice
243A
345A
540B
985C
435A
765C

per scansione delle colonne;


per scansione delle righe.

p6
0
0
0
1
1
1

Index Codice
0
1
2
3
4
5

243A
345A
540B
985C
435A
765C

Consideriamo la seguente notazione:


T=vero
F=falso
I=Indifferente.
Scrivo la query in forma canonica in termini dei valori T,F,I per tutte le sue propriet:

Q = B ( p1 , p2 , p3 , p4 , p5 , p6 ) = p1 p2 p3 p4 ( p5 + p6 ) = p1 p2 p3 p4 p5 + p1 p2 p3 p4 p6 = FTTTTI + FTTTIT
1
0
Q
1
0

1
1
1
1

1
1
1
1

1
1
1
1

1
1
0
0

0
0
1
1

Siano C1 = 111110, C1 = 011110, C2 = 111101, C2 = 011101


e M1 = 101000, M 2 = 011110, M 3 = 001100, M 4 = 001101, M 5 = 011101, M 6 = 011101
i = 1, 2
ponendo in AND rispettivamente Aij = Ci AND M j

Nome
Rossi
Bianchi
Neri
Verdi
Chiari
Scuri

Archivio Primario

A11 = 101000 111101, A21 = 101000 011101


A12 = 011110 111101, A22 = 011100 011101
A13 = 001100 111101, A23 = 001100 011101
A14 = 001100 111101, A24 = 001101 011101
A15 = 011100 111101, A25 = 011101 = 011101
A16 = 011100 111101, A26 = 011101 = 011101

Consideriamo la query come espressione booleana:


Q = B ( p1 , p2 , p3 , p4 , p5 , p6 ) = not ( p1 ) and ( p2 ) and ( p3 ) and ( p4 ) and ( ( p5 ) or ( p6 ) ) =
p1 p2 p3 p4 ( p5 + p6 ) .
PAG. 13

PAG. 14

Base dei Dati e Sistemi Informativi

Base dei Dati e Sistemi Informativi

p e p vengono incrementate portandosi a p = p = 3


Otteniamo la seguente configurazione:

5. esercizio.
Hash estendibile: Si assuma c = 3 (capacit di un blocco), la funzione hash da h ( k ) = 5 K 2 (cio, la
rappresentazione binaria su 5 bit della chiave K), e si abbia la seguente configurazione attuale:

Profondit
globale

Profondit
locale

p=3

Profondit
globale

Profondit
locale

DIRECTORY

p=2

000

DIRECTORY

11

p'=1

01

17

20

18

p'=2

11

25

24

17

18

p'=3

25

24

p'=2

p'=2

011
100

10

001
010

00

p'=2

11

p'=2

101
110

20

111

p'=3

21

Mostrare la configurazione dopo aver inserito le chiavi 3 e 21.

6. esercizio.
Considero i valori hash per le chiavi presenti nei vari bucket :

h ( 0 ) = 00000

h (17 ) = 10001

h ( 6 ) = 00110

h (18 ) = 10010

h (11) = 01011

Hash lineare: Si assuma c = 3 (capacit di un blocco), M = 7 (n.ro iniziale di blocchi), p = 2 (n.ro


trabocchi avvenuti, allinizio p = 0 ), e si abbia la seguente configurazione attuale:

h ( 25 ) = 11001

h ( 20 ) = 10100

h ( 24 ) = 11000

Inserisco una nuova chiave K = 3 dove h ( 3) = 00011 .


Dal valore hash ottenuto ricerco nella tabella directory il bucket relativo dove inserire la chiave.
Nel bucket relativo si ha un overflow (trabocco) pertanto necessario sdoppiare il bucket.
La profondit locale relativo ai due bucker creati viene incrementato di una unit e precisamente
p = 1 + 1 = 2 .
Otteniamo la seguente configurazione:
Profondit
globale
p=2

00
01
10
11

p'=2

17

20

18

p'=2

25

24

11

01

02

03

04

05

512

30

731

6647

2385

112

3270

289

717

1075

2665

1176

841

72

6851

7830

2840

569

563

06

07

08

147
286

287

848

(a) risalire alla configurazione immediatamente precedente ai trabocchi ( p = 0 );


(b) mostrare la configurazione successiva a quella attuale dopo linserimento della chiave 3280.

Profondit
locale
DIRECTORY

00

p'=2

Lidea di base dellhash lineare quella di consentire a un file hash di espandere e ridurrre
dinamicamente il suo numero di bucket senza aver bisogno di una directory.

p'=2

(a) Configurazione immediatamente precedente ai trabocchi:

Inserisco una nuova chiave K = 21 dove h ( 21) = 10101 .


Anche in questo caso il bucket relativo va in overflow; necessario sdoppiarlo.
Noto che la profondit globale coincide con la profondit locale del bucket che deve essere
sdoppiato p = p = 2 . In tal caso la tavola directory ha bisogno di spazio di memoria per permettere
di puntare su di un nuovo bucket.
PAG. 15

PAG. 16

Base dei Dati e Sistemi Informativi

Base dei Dati e Sistemi Informativi

00

01

02

03

04

05

287

512

30

731

6647

2385

112

3270

289

717

1075

2665

1176

841

72

6851

7830

2840

00

06

286

01

02

03

04

05

512

30

731

6647

2385

06

112

3270

289

717

1075

2665

1176

841

72

6851

7830

2840

07

147
286

287

563

Causa dello sdoppiamento del primo bucket dato dallinserimento della chiave 569 oppure
della chiave 563.

Viene inserito il valore 569 che causa un trabocco e conseguente sdoppiamento dei bucket:

P
00

00

01

02

03

04

05

512

30

731

6647

2385

112

3270

289

717

1075

2665

1176

841

72

6851

7830

2840

06

286

07

01

02

03

04

05

512

30

731

6647

2385

112

3270

289

717

1075

2665

1176

841

72

6851

7830

2840

569

563

06

07

08

147
286

287

287

Infine linserimento dellelemento 848 nel bucket di indirizzo 08.

563

Il bucket di indirizzo 00 viene sdoppiato e gli elementi vengono risistemati nel primo e ultimo
bucket. I bucket originariamente nel bucket 00 sono distribuiti tra i due bucket sulla base di una
diversa funzione hash hi +1 ( K ) = K mod 2 M . p viene incrementato di 1: p = 1 .
Calcolo i valori hash per le chiavi interessate ottenendo gli indirizzi relativi:

h2 (112) = 112 mod 2 7 = 0


h2 (1176) = 1176 mod14 = 0
h2 (287) = 287 mod14 = 7
Viene inserito il valore 147 e sistemato nel bucket relativo: h1 (147) = 147 mod 7 = 0 < 1

h2 (147) = 147 mod14 = 7

(b) Considero il seguente algoritmo di ricerca per lhash lineare (semplice funzione in Pascal):

function findKey(key,p,M:integer):integer;
var m:integer;
begin
if p=0 then
m:=key mod (2^p*M)
else
begin
m:=key mod (2^p*M);
if m<p then m:=key mod (2^(p+1)*M);
end;
findKey:=m;
end.
Attraverso la funzione ottengo lindirizzo del bucket relativa in cui inserire lelemento 3280:
ind:=findKey(3280,2,7);
restituisce il valore 4. Il bucket interessato il bucket con indirizzo 04;

PAG. 17

PAG. 18

Base dei Dati e Sistemi Informativi

Base dei Dati e Sistemi Informativi

Indice di Cilindro

P
00

01

02

512

47

03

04

05

731

6647

2385

112

3270

289

717

1075

2665

1176

841

569

6851

7830

2840

06

07

08

0000

83

0100

dummy

0001

11

09

Indice di Traccia (del cilindro 00)


147
286

287

30
848

0000

72

COCR

11

Normale
563

3280

47

29

0002

29

47

Overflow

dummy

Area Primaria (del cilindro 00)

7. esercizio.
Sia R = {1,3,5, 7, , 79,81,83} .Si abbiano 3 cilindri, 5 tracce per cilindro di cui 3 per larea
primaria. Ogni traccia primaria contiene fino a 5 record. Costruire lorganizzazione ISAM su R .
Successivamente inserire le chiavi 26 e 62.

0001

11

0002

13

17

19

23

29

0003

31

37

41

43

47

0004

Il Metodo di Accesso Sequenziale con Indice (Index Sequential Access Method) definisce una
struttura in cui vi :

Indice di Cilindro
47

un area primaria: archivio primario organizzato attraverso organizzazione


sequenziale ordinata;
un area indice: lindice organizzato ad albero sulla chiave dellarchivio primario;
un area di overflow: una zona di oveverflow dellarchivio primario organizzata a
catena.

I 3 cilindri sono individuati attraverso gli indirizzi 00 per il primo, 01 per il secondo, 02 per il terzo
ed ultimo cilindro.
La traccia 0000 di ciascun cilindro riservata a contenere lultimo livello dellindice relativo ai dati
primari memorizzati nel cilindro.
Le tracce 0001,0002,0003 costituiscono larea primaria del cilindro.
La traccia 0004 riservata come area di overflow per i dati primari che, per successivi inserimenti,
non trovino posto nellarea primaria del cilindro. In aggiunta allarea di overflow di ciascun
clilindro esiste un area separata (cilindro 02), detta area di overflow indipendente, destinata a
contenere i dati primari in overflow di tutti i cilindri.

0000

83

0100

dummy

0101

71

Indice di Traccia (del cilindro 01)


0100

COCR

71

Normale

83

0102

83

dummy

Overflow

Area Primaria (del cilindro 01)


0101

49

53

59

67

71

0102

73

77

79

81

83

0103
0104

Nellindice di traccia vi un record speciale detto COCR (Cylinder Overflow Control Record)
che contiene lindirizzo dellultimo record posto in overflow ed il numero di byte non utilizzati.
Configurazione successiva allinserimento delle chiavi 26 e 62.

PAG. 19

PAG. 20

0003

Base dei Dati e Sistemi Informativi

Base dei Dati e Sistemi Informativi

8. esercizio.

Indice di Cilindro
47

0000

83

0100

R = {10,15,30, 27,35, 40, 45,37, 20,50,55, 46, 71, 66, 74,85,90, 79, 78, 95, 25,81, 68, 60, 65} .

Sia

dummy

Costruire su R gli alberi B e B + di ordine p = 5 mediante inserimento delle chiavi nellordine dato.
Indice di Traccia (del cilindro 00)
0000

COCR

11

0001

11

Normale
47

26

0002

26

0004

47

0003

Albero B

Overflow

46

dummy

puntatori ai dati
27

Area Primaria (del cilindro 00)


0001

11

0002

13

17

19

23

26

0003

31

37

41

43

47

0004

29

10

15

20

25

0000

83

0100

dummy

66

40
30

Indice di Cilindro
47

37

50

45

55

60

79

66

35

81

68

71

74

85

90

95

78

Albero B +
46

Indice di Traccia (del cilindro 01)


0100

COCR

67

0101

67

Normale

83

0102

83

dummy

20

Overflow

27

37

30

35

60

66

74

79

Area Primaria (del cilindro 01)


0101

49

53

59

62

67

0102

73

77

79

81

83

10

15

0103
0104

20

25

27

37

40

50

45

46

55

60

68

65

71

66

74

81

78

85

90

95

79

71

puntatori ai dati

Esercizi svolti a curi di:


P.Cazzati piero@cazzati.it -

PAG. 21

PAG. 22