Legend and Symbols
Before diving into the formulas, it's essential to understand the symbols and terms used:
Symbol Description
NKeys(Col) The number of distinct values in column Col.
High(Col) The highest value in column Col.
Low(Col) The lowest value in column Col.
NTuples(R) The number of tuples (rows) in relation (table) R.
NPages(R) The number of pages required to store relation R.
NPages(I) The number of pages used by index I.
Height(I) The height of index I (number of levels in a B-tree index).
Π RFi The product of all reduction factors RFi applied in a query.
Π NTuples(Ri) The product of the number of tuples in all relations Ri participating in a join operation.
num_passes(R) The number of passes required to sort relation R.
PF Projection Factor: The portion (fraction) of all columns retained after a projection operation.
1.	Reduction Factor (Selectivity)
Reduction Factor (RF) quantifies the fraction of data remaining after applying a selection predicate. It estimates how much a query reduces the data size based on certain conditions.
a. Selection: Column Equals a Value (Col = value)
[ \text{RF} = \frac{1}{\text{NKeys(Col)}} ]
• Explanation: Assumes uniform distribution of values. If a column has NKeys(Col) distinct values, selecting a specific value reduces the data to 1/NKeys(Col) of the original.
b. Selection: Column Greater Than a Value (Col > value)
[ \text{RF} = \frac{\text{High(Col)} - \text{value}}{\text{High(Col)} - \text{Low(Col)}} ]
• Explanation: Proportion of data where the column's value is greater than the specified value, based on the column's range.
c. Selection: Column Less Than a Value (Col < value)
[ \text{RF} = \frac{\text{value} - \text{Low(Col)}}{\text{High(Col)} - \text{Low(Col)}} ]
• Explanation: Proportion of data where the column's value is less than the specified value.
d. Join: Column Equality (Col_A = Col_B)
[ \text{RF} = \frac{1}{\max(\text{NKeys(Col_A)}, \text{NKeys(Col_B)})} ]
• Explanation: For joining two tables on columns Col_A and Col_B, the reduction factor depends on the higher number of distinct keys in either column.
e. No Information Available
[ \text{RF} = \frac{1}{10} ]
• Explanation: When there's no statistical information about the data distribution, a default "magic number" of 0.1 (1/10) is used as an estimate.
2.	Result Size Calculations
Estimates the number of tuples resulting from query operations.
a. Single Table Query
[ \text{Result_size} = \text{NTuples(R)} \times \prod \text{RFi} ]
• Explanation: The number of tuples after applying one or more selection predicates with reduction factors RFi.
b. Join Operations
[ \text{Result_size} = \prod \text{NTuples(Ri)} \times \prod \text{RFi} ]
• Explanation: For joining multiple relations, multiply the number of tuples in each participating relation and apply the combined reduction factors.
3.	Indexing Cost
Evaluates the cost of using different types of indexes to execute queries.
a. B+-Tree Index
i. Single Tuple Selection (Primary Key Lookup)
[ \text{Cost} = \text{Height(I)} + 1 ]
• Explanation: The cost includes traversing the index tree (height) and accessing the data page containing the tuple.
ii. Clustered Index (Multiple Tuples)
[ \text{Cost} = (\text{NPages(I)} + \text{NPages(R)}) \times \prod \text{RFi} ]
• Explanation: Accessing the index pages and the clustered data pages. Reduction factors apply if multiple tuples are retrieved.
iii. Unclustered Index (Multiple Tuples)
[ \text{Cost} = (\text{NPages(I)} + \text{NTuples(R)}) \times \prod \text{RFi} ]
• Explanation: Accessing index pages and individual data pages for each tuple (higher cost due to non-contiguous data storage).
b. Hash Index
i. Single Tuple Selection (Primary Key Lookup)
[ \text{Cost} = 1.2 + 1 = 2.2 ]
• Explanation: Fixed cost for hashing and accessing the tuple.
ii. Clustered Hash Index (Multiple Tuples)
[ \text{Cost} = \text{NPages(R)} \times \prod \text{RFi} \times 2.2 ]
• Explanation: Accessing data pages multiplied by the fixed cost for each tuple.
iii. Unclustered Hash Index (Multiple Tuples)
[ \text{Cost} = \text{NTuples(R)} \times \prod \text{RFi} \times 2.2 ]
• Explanation: Each tuple requires separate access, hence the multiplication by NTuples(R).
4.	Sequential Scan (Heap Scan) Cost
Calculates the cost of scanning an entire table without using any indexes.
[ \text{Cost} = \text{NPages(R)} ]
• Explanation: Simply the number of pages in the relation, as each page must be read sequentially.
Q1 Introduction  (Total marks for Q1: 5 marks)
Consider two relations A and B. A has 80,000 tuples, and B has 100,000 tuples. Both relations store 100 tuples per page. Consider the following SQL statement:
SELECT *

  FROM A INNER JOIN B

    ON A.a = B.a;
We wish to evaluate an equijoin between A and B, with an equality condition A.a = B.a. There are 102 buffer pages available for this operation. Both relations are stored as (unsorted) heap files. Neither relation has any indexes built on it.
Consider the alternative join strategies described below and calculate the cost of each alternative. Evaluate the algorithms using the number of disk I/O's (i.e., pages) as the cost. 
1.	Page-oriented Nested Loops Join. Consider A as the outer relation. (1 mark)
2.	Block-oriented Nested Loops Join. Consider A as the outer relation. (1 mark)
3.	Sort-Merge Join. Assume that Sort-Merge Join can be done in 2 passes. (1 mark)
4.	Hash Join (1 mark)
5.	Assuming that no indexes are built on any of the two relations, and assuming that sufficient buffer space is available: 
A.	What would be the lowest possible cost to perform this query ? (0.5 mark)
B.	What would be the minimum buffer size required to achieve this cost from 5A? (0.5 mark)


NOTE WHEN SOLVING THE ABOVE YOU MUST USE THE FORMULAS PROVIDED ABOVE WHERE APPLICABLE WITHOUT FAIL AS THEY WILL NET THE CORRECT ANSWER. YOUR THINKING PROCESS SHOULD BE THIS. YOU MUST A) CALCULATE THE RELEVANT FORMULAS APPLICABLE TO THE QUESTION AT HAND, AND SEE IF THEY ARE APPLICABLE TO THE GIVEN QUESTION. B) STATE HOW THE TERMS WITHIN THE EQUATION RELATE TO THE QUESTION AT HAND) C) USE THE FORMULA IN ORDER TO SOLVE THE QUESTION. NOTE THAT WITH THE REDUCTION FACTORS THEY ARE THE TERMS IN BRACKETS, IF ITS (AIRPLANE) THEN ITS JUST THE REDUCTION FACTOR OF AIRPLANE, IF ITS (AAIRPLANE,BETA) ITS THE PRODUCT OF THE REDUCTION FACTOR OF AIRPLANE AND BETA. FOLLOW THIS ESPECIALLY AS ITS IMPORTANT IN GETTING THE CORRECT ANSWER. USE THIS THINKING PROCESS WHEN SOLVING THE QUESTIONS