npm i relational-algebra-evaluator
import { Rae } from 'relational-algebra-evaluator';
// create an instance of Rae
const rae = Rae.getInstance();
// relational algebra expression
const expression = 'P/title,author/(book)';
// execute the expression
const result = rae.execute(expression);
Generate new Instance of Rae
options
Key | value | description |
---|---|---|
dataDir |
../data/ |
Location to save the temporary data for current session |
sessionId |
null |
Session Id of current session |
Set session data directory
// create an instance of Rae
const rae = Rae.getInstance();
rae.setDataDir('../data');
Add Custom relations to session data
// create an instance of Rae
const rae = Rae.getInstance();
const customRelations = {
users: [
{ id: '1', name: 'Jack' },
{ id: '2', name: 'Bob' },
],
};
rae.addRelations(JSON.stringify(customRelations));
Get All Relations
// create an instance of Rae
const rae = Rae.getInstance();
const relations = rae.getAllRelations();
Execute relational Algebric expression
// create an instance of Rae
const rae = Rae.getInstance();
// relational algebra expression
const expression = 'P/title,author/(book)';
// execute the expression
const result = rae.execute(expression);
There are some relations already added for the current session. To add a custom relation to the current session, addRelations method help to add custom relations to current session. Custom relations should be a json format, sample schema for the json file is given below.
{
"relation-name-here": [
{ "key": "value" }
...
]
}
To view all relations via executing command
show relations
To view all data in a relation or variable by executing command view Example:
view relation-name
Creating variables can be helpful for the user to save the result of one operation and it can be used in future. Example:
var userLocation = P/name, address/(users)
P/name/(userLocation)
In the above example, the name and address column from users’ relation is projected then saved the result to a variable. In the second command, it takes the name column from the variable userLocation using projection.
A Relational Algebraic Evaluator can execute operators recursively. If the entered relation algebraic expression contains a nested operation, then the system will go deep into the last nested operation and start to evaluate it until it reaches the parent expression. Example:
S/name=Bob/( ( P/name, address/(users) ) )
In the above command initially, it will do the nested projection operation and then it will execute the selection operation.
Example:
P/title,author,publication/(book)
Example:
S/publication=AMC/(book)
Example:
X(maleTable,femaleTable)
Example:
U( (P/id,name/( (S/city=Pune/(salesPeople)) )), ( P/id,name/( (S/city=Pune/(customers)) ) ) )
Example:
SD(tableA, tableB)
Example:
R/newRelationName/(users)