Állapítsuk meg ezeknek az IOT táblák a
különböző tulajdonságait
a
katalógusokból. DBA_INDEXES,
DBA_TABLES,DBA_OBJECTS, DBA_SEGMENTS
7.01. Hozzuk létre a IOT.txt
segédletben szereplő cikk_iot indexszervezésű
táblát.
Adjuk meg mely
felhasználók tulajdonában vannak ezek
('CIKK_IOT'-vel
kezdődő) index-szervezett táblák. Adjuk
meg a táblák
és
táblaterek nevét is.
(Melyik
táblatéren vannak ezek a
táblák? ->
miért nem látható?)
7.02. Adjuk meg a fenti
táblák index
részét, és azt, hogy ezek az index
részek (szegmensek)
melyik
táblatéren vannak? Keressük meg a szegmensek
között az előző táblákat
illetve indexeket, és
adjuk meg a
méretüket. Keressük meg az
adatbázis objektumok
között a fenti
táblákat
és indexeket, és
adjuk meg az objektum
azonosítójukat és
adatobjektum
azonosítójukat (DBA_INDEXES,DBA_TABLES,DBA_OBJECTS).
7.03. Adjuk meg a fenti
táblák túlcsordulási
részeit (ha van). Keressük meg
a
túlcsordulási részeket a szegmensek
között és
adjuk meg a
méretüket.
Keressük meg az objektum
azonosítóikat és az adatobjektum
azonosítóikat is.
7.04. Adjuk meg azokat az index szervezett
táblákat, amelyeknek pontosan egy
dátum
típusú oszlopa van.
7.05. Írjunk
meg
egy plsql
procedúrát,
amelyik a paraméterül kapott index
szervezett
tábláról
kiírja a
tábla méretét. PROCEDURE
iot_meret(p_owner
VARCHAR2, p_tabla VARCHAR2)
Vigyázzunk, mert a
táblának lehet index és
túlcsordulási szegmense is.
Tk.B-fa felépítésére
feladat, lásd előadás fizika.pp49-58
- Az alábbi feladatban a
tankönyben
szereplő algoritmussal építsünk fel egy
B-fát!
Tegyük fel, hogy egy B-fa
blokkjaiba 3 kulcs
fér el plusz 4 mutató. A kulcsok
különbözőek.
Szúrjuk be a
B-fába az alábbi
kulcsértékeket a megadott
sorrendben:
39, 15,
50, 70, 79,
83, 72, 43, 75, 45, 54, 75, 64, 68
Adjuk meg a B-fa minden olyan
állapotát, amikor egy csomópont
kettéosztására
volt
szükség. Például, az
első
kettéosztás utáni állapot:
50
15
| 39 50 | 70
- [Egy kis segítség:]
-------------------
Levél csúcs
kettéosztásakor minden kulcsot megőrzünk
a
régi és az új (szomszédos)
csúcsban. 1 új
kulcs-mutató
párt küldünk felfelé a
szülő
csúcsba, amit ott kell elhelyezni.
Belső csúcs
kettéosztásakor
(N,M csúcsra) a mutatók első fele az N-be
kerül,
a második az M-be. A
kulcsok első fele az
N-be kerül a második fele az M-be,
de középen kimarad
egy kulcs, ami az
M-en keresztül (első gyermekén keresztül)
elérhető legkisebb kulcsot
tartalmazza. Ez
nem kerül sem N-be, sem M-be, hanem
ez megy fölfelé N
és M
közös szülőjébe az M-re
mutató
mutatóval együtt.
Tk.4.3.1.feladat (kicsit más adatokkal)
- Legyen a rekordok száma
6000, és az
indexelt oszlopban minden
érték
különböző.
Sűrű indexre
készítünk B-fát. Egy blokkba
4 rekord vagy
(99 kulcs és 100
mutató) fér.
Legyen a telítettség 50%, azaz
legalább
Mekkora az adatfájl
és az index
együttes mérete?
Mennyi a
keresés blokkolvasási
költsége?
1.feladat: Tegyük fel, hogy a
dolgozó
tábla 14 sorból áll
DKOD
DNEV FIZETES FOGLALKOZAS
BELEPES OAZON --------------------------------------------------- 1
SMITH 800
CLERK
1980 20 2
ALLEN 1600
SALESMAN
1981
30 3
WARD 1250
SALESMAN
1981
30 4
JONES 2975
MANAGER
1981
20 5
MARTIN 1250
SALESMAN
1981
30 6
BLAKE 2850
MANAGER
1981
30 7
CLARK 2450
MANAGER
1981
10 8
SCOTT 3000
ANALYST
1982
20 9
KING 5000
PRESIDENT
1981
10 10
TURNER 1500
SALESMAN
1981
30 11
ADAMS 1100
CLERK
1983
20 12
JAMES 950
CLERK
1981
30 13
FORD 3000
ANALYST
1981
20 14
MILLER 1300
CLERK
1982
10
-
Tegyük fel,
hogy fenti
táblához a FOGLALKOZAS, a BELEPES
és az
OAZON
oszlopokra létezik bitmap
index (3 index). Készítsük el az
alábbi lekérdezésekhez
szükséges
bitvektorokat, majd végezzük el rajtuk a
szükséges műveleteket, és
adjuk meg azt
az előállt bitvektort, ami alapján a
végeredmény sorok
megkaphatók.
Ellenőrzésképpen
adjuk meg a
lekérdezést SQL-ben is!
a. ) Adjuk meg azoknak a dolgozóknak a
nevét, akik 1981-ben léptek be
és a foglalkozásuk
hivatalnok (CLERK), vagy a
20-as osztályon dolgoznak és a
foglalkozásuk MANAGER.
b.) Adjuk meg azoknak a dolgozóknak a
nevét, akik nem 1981-ben léptek be és
a 10-es
vagy a
30-as osztályon dolgoznak.