Reference no: EM131267016
Consider the following "tilde table" that could be represented by the file cars.txt for persistence
MAKE~MODEL~TYPE~PRICE
Toyota~Camry~Sedan~18000
Toyota~Tacoma~Truck~19000
Ford~Mustang~Sport~21000
Chevrolet~Corvette~Sport~48000
Ford~F150~Truck~25000
Toyota~Highlander~SUV~35000
Since this is just for education purposes we will allow tilde tables to have the following attributes and limitations:
-at most 12 columns
-first row represents column names
-all columns are strings (unless you want to define some types)
-column values and column names are limited to 16 characters
Write a java class named Algebra that will eventually have static methods representing the relational algebra and one additional method which displays the contents of a tilde table. All methods except for the display method return a string indicating success or an error message and for every successful operation a new tilde table is produced on disk. For now implement the method to show the table, the project operation, the restrict operation, and one other of your choice from this list:
JOIN (assumes natural inner join), UNION, MINUS, INTERSECT, DIVIDE
So the main body of a driver program might look like this:
//restrict the cars table to toyotas producing a table named toyotas
Algebra.Restrict("cars","MAKE='Toyota'","toyotas");
//project just three columns from the toyotas table producing a table named answer
Algebra.Project("Toyotas","Make,Model,Price","answer");
//display the contents of the answer table
Algebra.Display("answer");
output would be:
MAKE MODEL PRICE
---------------- ---------------- ----------------
Toyota Camry 18000
Toyota Tacoma 19000
Toyota Highlander 35000
Make your program generalizable. That is, it should work with any tilde table. Since the assumption for option 1 is that tables may not fit into memory you are not allowed to load all the rows into an array or other collection. You can of course load a list of column names or something small like that into memory. If you can think of a way to clean up the temporary results tables that would be good. In order to limit the grammar your restriction condition can be limited to a single condition (so no ANDs and ORs) and your comparitors can be limited to these six: =, >, <, >=, <=, !=