2020-05-17 15:35:06 +00:00
# <img src="doc/logo-display-only.svg" width="50%" style="display: block; margin: 0 auto;" alt="Rakenne" />
2020-05-17 15:08:31 +00:00
2020-05-17 21:50:04 +00:00
[![GitHub license ](https://img.shields.io/github/license/glenux/rakenne.svg )](https://github.com/glenux/rakenne/blob/master/LICENSE.txt)
[![Donate on patreon ](https://img.shields.io/badge/patreon-donate-orange.svg )](https://patreon.com/glenux)
2020-05-18 09:15:15 +00:00
Rakenne is a database modeling tool for command line written in [Crystal ](https://crystal-lang.org/ ).
2020-05-17 15:38:25 +00:00
2020-05-17 15:38:59 +00:00
For now, It is a toy project to improve author's skills with the language and its various libraries. **It is very early stage and is not supposed to work (yet). Please don't use it in production.** :warning:
2020-05-17 15:08:31 +00:00
2020-05-17 15:37:06 +00:00
Note: _rakenne_ means _structure_ in Finnish.
2020-05-17 15:08:31 +00:00
2020-05-17 15:35:06 +00:00
## Roadmap
2020-05-17 15:08:31 +00:00
2020-05-17 15:45:21 +00:00
* :arrow_right: **define a DSL for modeling database**
2020-05-18 09:05:11 +00:00
* :arrow_right: [describe entity-relationship diagrams (ERD) ](doc/erd-dsl.md ) using MERISE notation
* :arrow_right: [describe physical diagrams (PD) ](doc/pd-dsl.md )
2020-05-17 19:41:46 +00:00
* :x: provide a command-line tool accepting commands for all operations
2020-05-17 20:00:44 +00:00
* :x: render models into diagrams with [GraphViz ](https://www.graphviz.org/ )
2020-05-17 15:45:21 +00:00
* :x: ERD to MERISE MCD diagrams
* :x: ERD to Chen notation diagrams
* :x: PD to MERISE MLD diagrams
* :x: validate model
* :x: convert across different database reprentations
* :x: convert ERD to PD
* :x: convert PD to database specific SQL
* :x: reverse-engineer database-specific SQL to PD
* :x: reverse-engineer PD to ERD
* :x: support multiple physical models
* :x: sql
2020-05-17 19:54:21 +00:00
* :x: nosql (:warning: that requires de-normalizing)
2020-05-17 15:45:21 +00:00
* :x: support multiple SQL and NoSQL languages
* :x: SQL: postgresql
* :x: SQL: mariadb
* :x: NoSQL: redis
* :x: NoSQL: mongodb
2020-05-17 19:54:21 +00:00
* :x: NoSQL: cassandra CQL (:warning: that requires knowing which requests will be made)
2020-05-17 15:08:31 +00:00
2020-05-17 15:48:12 +00:00
2020-05-17 15:43:16 +00:00
## Contributing
2020-05-17 15:46:04 +00:00
1. Fork it ( http://github.com/glenux/rakenne/fork )
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request
2020-05-17 15:43:16 +00:00
2020-05-17 19:00:36 +00:00
2020-05-17 15:43:16 +00:00
## Authors & contributors
* [Glenn Y. Rolland ](https://github.com/glenux ) - creator and maintainer
2020-05-17 15:48:12 +00:00
* You? Fork the project and become a contributor!
2020-05-17 15:43:16 +00:00
2020-05-17 19:00:36 +00:00
2020-05-17 15:43:16 +00:00
## Sponsors
2020-05-17 15:43:57 +00:00
[Rakenne ](https://github.com/glenux/rakenne ) is an independent project whose development and maintenance is made possible thanks to the support of its patrons.
2020-05-17 15:43:16 +00:00
If you wish to join them and support the work of its author, just participate with this link:
**>>> [Become a patron or sponsor on Patreon ](https://www.patreon.com/glenux ) <<< **
2020-05-17 19:00:36 +00:00
2020-05-17 15:43:16 +00:00
## License
2020-05-17 15:43:57 +00:00
Rakenne is Copyright © 2020 Glenn ROLLAND. It is free software, and may be redistributed under the terms specified in the LICENSE.txt file.
2020-05-17 15:08:31 +00:00
## References
2020-05-17 19:00:36 +00:00
* [Wikipedia: Entity-relationship model ](https://en.wikipedia.org/wiki/Entity%E2%80%93relationship_model )
* [Lucidchart: ER diagrams ](https://www.lucidchart.com/pages/er-diagrams )
* [Youtube: 04.5 - Règles de vérification du MCD ](https://www.youtube.com/watch?v=LR0Ip5Jenbk )
2020-05-17 20:08:44 +00:00
## Alternatives and inspirations
2020-05-17 19:50:29 +00:00
2020-05-17 19:50:44 +00:00
* [MoCoDo: a command-line ERD/PD renderer in python ](https://rawgit.com/laowantong/mocodo/master/doc/fr_refman.html )
2020-05-17 20:08:44 +00:00
* [Schemalint: Lint database schemas ](https://github.com/kristiandupont/schemalint )
2020-05-17 20:11:45 +00:00
* [SQLFairy: The SQL Translator ](http://sqlfairy.sourceforge.net/ )