relational-algebra-evaluator
v1.0.3
Published
Relational Algebra Evaluator
Downloads
13
Maintainers
Readme
Relational Algebra Evaluator
Example Application
Back end API
Front end
Table of Contents
Install
npm i relational-algebra-evaluatorUsage
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 relationsView Relation/Variable Data
To view all data in a relation or variable by executing command view Example:
view relation-nameCreating 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)