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.


Question 3 Introduction  (Total marks for Q3: 10 marks)
Consider the following relational schema and SQL query. The schema captures information about employees, departments, and company finances (organized on a per department basis).
Emp(eid: integer, did: integer, sal: integer, hobby: char(20))

Dept(did: integer, dname: char(20), floor: integer, phone: char(10))

Finance(did: integer, budget: real, sales: real, expenses: real)
Consider the following query: 
SELECT D.dname, F.budget

  FROM Emp E, Dept D, Finance F

 WHERE E.did = D.did 

   AND D.did = F.did

   AND E.sal > 100,000

   AND E.hobby IN (‘diving’, ‘soccer’);
The system’s statistics indicate that employee salaries range from 50,000 to 150,000, and employees enjoy 50 different hobbies. There is a total of 25,000 employees and 1,200 departments (each with corresponding financial record in the Finance relation) in the database. Each relation fits 100 tuples in a page. Suppose there exists a clustered B+ tree index on (Dept.did) and a clustered B+ tree index on (Emp.salary), both of size 50 pages.
Assume that sorting of any relation (if required) can be done in 2 passes. NLJ is a Page-oriented Nested Loops Join. Assume that did is the candidate key, and that 50 tuples of a resulting join between Emp and Dept fit in a page. Similarly, 50 tuples of a resulting join between Finance and Dept fit in a page. Any selections/projections not indicated on the plan are performed “on the fly” after all joins have been completed.
 
Flag question: Question 12 
Question 12 2 pts 
Q3.1
Compute the reduction factors and the estimated result size in number of tuples. (2 marks)
Group of answer choices 
RF(E.did=D.did) 
RF(D.did=F.did) 
RF(E.sal>100,000) 
RF(E.hobby in ('diving' , 'soccer') ) 
Expected Number of Tuples


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