rakenne/README.md

82 lines
3.3 KiB
Markdown
Raw Permalink Normal View History

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-18 09:16:01 +00:00
Note: _rakenne_ means _structure, construction_ 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
2020-05-18 09:43:27 +00:00
* :arrow_right: [describe logical model diagrams (LMD)](doc/lmd-dsl.md)
2020-05-18 09:21:07 +00:00
* :x: create a command-line tool
* :x: describe needed operations and parameters
* :x: write the code to handle all those 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: LMD to MERISE MLD diagrams
2020-05-17 15:45:21 +00:00
* :x: validate model
* :x: convert across different database reprentations
* :x: convert ERD to LMD
* :x: convert LMD to database specific SQL
* :x: reverse-engineer database-specific SQL to LMD
* :x: reverse-engineer LMD to ERD
2020-05-17 15:45:21 +00:00
* :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 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 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 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
* [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)
## 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)
* [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/)