relational-algebra-evaluator
v1.0.3
Published
Relational Algebra Evaluator
Downloads
3
Maintainers
Readme
Relational Algebra Evaluator
Example Application
Back end API
Front end
Table of Contents
Install
npm i relational-algebra-evaluator
Usage
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);
API
Rae.getInstance(options)
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 |
Rae.setDataDir
Set session data directory
// create an instance of Rae
const rae = Rae.getInstance();
rae.setDataDir('../data');
Rae.addRelations
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));
Rae.getAllRelations
Get All Relations
// create an instance of Rae
const rae = Rae.getInstance();
const relations = rae.getAllRelations();
Rae.execute
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);
Guides
Adding your own relations
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" }
...
]
}
View All Relations
To view all relations via executing command
show relations
View Relation/Variable Data
To view all data in a relation or variable by executing command view Example:
view relation-name
Creating variable
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.
Working with nested Relational Algebraic Operations
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.
Operations
Projection
Example:
P/title,author,publication/(book)
Selection
Example:
S/publication=AMC/(book)
Cartesian Product
Example:
X(maleTable,femaleTable)
Union
Example:
U( (P/id,name/( (S/city=Pune/(salesPeople)) )), ( P/id,name/( (S/city=Pune/(customers)) ) ) )
Set Difference
Example:
SD(tableA, tableB)
Rename
Example:
R/newRelationName/(users)