Doubts abouts join implementation
First of all let us talk about the cost measure .
The cost C is calculated actually in terms of the number of disk access made in order to compute the join.

A block is defined as the smallest unit of memory which is transferred from disk to main memory during a disk access.

A page is a contiguous block of memory. (set of blocks)  

Anther term associated is the blocking factor. which is the number of records which can be present on a single block of memory. 

Suppose we need to compute the join of relation RxS
The first method we first bring the relation R in the main memory which take n(R) disk accesses (n(R)= number of records in the relation R). Note that records and tuples mean the same thing. For each record in relation R we make another disk access to bring a single record of relation S to check the join condition this gives another n(r)*n(S) disk accesses.
the total being n(r)+n(R)*n(S)

We can achieve some improvement checking the tuples stored on one page of relation S  for each record in relation R.

In Block nested approach each block in the inner relation S is read once for each block in the relation R
which gives you the desired cost