tags db database
2023 database-systems HW4.pdf
{A,B}→{C}{A}→{D,E}{D}→{I,J}{B}→{F}{F}→{G,H}
A,B is Key because
- A,B can get C
- A can get {D,E,I,J}
- B can get {F,G,H}
{A,B}→{C}{A}→{D,E}{D}→{I,J}{B}→{F}{F}→{G,H}
{A,B}→{C}{A}→{D,E}{D}→{I,J}{B}→{F}{F}→{G,H}
FD1={Course_no} → {Offering_dept, Credit_hours, Course_level}
FD2={Course_no, Sec_no, Semester, Year} → {Days_hours, Room_no, No_of_students, Instructor_ssn}
FD3={Room_no, Days_hours, Semester, Year} → {Instructor_ssn, Course_no, Sec_no}
1NF because:
- FD1 have partial function since Course_no is not key
- {Course_no, Sec_no, Semester, Year}
- {Room_no, Days_hours, Semester, Year}
use {Course_no, Sec_no, Semester, Year} as PK
loss FD3
R1 = {Course_no, Offering_dept, Credit_hours, Course_level}
R2 = {Course_no, Sec_no, Semester, Year, Days_hours, Room_no, No_of_students, Instructor_ssn}}
is BCNF
- Caching: move disk data to RAM or SSD
- Indexing: use B-trees or hash indexes to speedup the time of searching
- organization of data on disk: keep related data on continuous block
R=30+9+9+40+10+8+1+4+4+1(deletion marker)=116
bfr=recordblock=116512≈4disk block =bfrr=7500
bfri=Index record size =(Block pointer + SSN) Blocksize=34.13≈34 bytes
number of first-level index entries =disk block =7500number of first-level index blocks=bfri7500=220.58≈221
level=log34(7500)=2.53≈3
level1level2level3=347500=220.58≈221=34221=6.5≈7=34221=0.295≈1221+7+1=229
block access=level+1=4
bfri=Index record size =(Block pointer + SSN) Blocksize=34.13≈34 bytes
number of first-level index blocks=bfri30000=882.35≈883
level=log34(30000)=2.92≈3
level1level2level3=3430000=882.35≈883=34883=25.97≈26=3426=0.764≈1883+26+1=910
block access=level+1=4
- primary index: must be defined on an ordered key field.
- clustered index: must be defined on an order field (not keyed) allowing for ranges of records with identical index field values.
- secondary index: is defined on any non-ordered (keyed or non-key) field.