In this assignment, you will have a chance to implement the hash -join algorithm for a DBMS. You can use C, C++, Java or any other high-level programming language to write the program. However, your program should include sufficient comments to make it readable. You need to turn in (1) a brief report/description about your program design and implementation (e.g., high-level program diagram and data/file structures) and program usage; (2) your program source code; (3) proof of compilation (e.g., the screen snapshot of a successful compilation); and (4) sample execution outputs. Please
assemble all the above required contents in a single Word or PDF file for your submission.
The program specification is given as follows. Let R1(a1; a2; a3) and R2(b1; b2; b3; b4) be two relations with all integer attributes. Tuples in these two relations are sequentially stored in two data files, respectively.
Use the hash-join algorithm to implement a join (equijoin) of R1 and R2. Assume that the hash function is f(k) = k mod N, where N is the number of buckets allowed in your hash structure/table.
Your program should allow a user to choose the joining attributes from the two relations, i.e., performing for any chosen pair of ai and bj , where ai is the i-th attribute in R1 and bj is the jth attribute in R2. For example, a user may want to perform
.
Your program should display the join result and output the selectivity of the join.
You may request a user to interactively input the necessary parameters, such as the data file names for R1 and R2, the number of tuples in each relation, and the joining attributes (e.g., 1 for the 1st attribute, 3 for the 3rd attribute).
Use your program to perform several joins for different relation instances of R1 and R2.
(10 Points - Bounce) Use a nice user interface.