relational/README.md

69 lines
1.7 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

Relational
==========
Relational an educational tool to provide a workspace for experimenting with *relational* *algebra*, an offshoot of first-order logic.
![screenshot](https://ltworf.github.io/relational/screenshots/3.png)
I test it on GNU/Linux and Windows. It probably works on other systems too.
It provides:
* A GUI that can be used for executing relational queries
* A standalone Python module that can be used for executing relational queries, parsing relational expressions and optimizing them
* A command line interface
Official website
================
More documentation can be found here https://ltworf.github.io/relational/
Install
=======
* Windows: https://ltworf.github.io/relational/download.html?exe
* Debian based: `apt-get install relational`
* Everyone else: Download the sources https://ltworf.github.io/relational/download.html?tar.gz
Run from sources
================
For the dependencies, check `debian/control` for the build dependencies.
You will need to run
```
make
```
to generate some .py files.
To launch the application, run
```
./relational.py
```
Syntax
======
These are some valid queries (using the provided example dataset)
```
# Join people and skills
people ⋈ skills
# Select people within a certain age range
σ age > 25 and age < 50 (people)
# Selection with complicated expression requires an extra set of () around the expression
σ (name.upper().startswith('J') and age > 21) (people)
# Cartesian product of people with itself, including only name and id
ρ id➡i, name➡n (people) * π name, id (people)
```
For the selection, python expressions are used.
The syntax is explained here: https://ltworf.github.io/relational/allowed_expressions.html