Comparison of relational and non-relational
//coming soon
Normal forms
When working with databases, you should keep in mind the general approaches defined in so-called normal forms.
These approaches allow you to create databases that are minimal in size, easily readable, and scalable.
Usually it is used no higher than 3 normal forces (NF) with an increase in the rank of a normal form, instead of positive effects, you can get a significant complication for understanding and an increase in the volume of the database (since there is a strong partition).
For simplicity, normal forms have been summarized in a diagram,
all subsequent normal forms include the previous ones (i.e. the 3rd form includes the rules of 2,1,0 forms) and it is impossible to immediately do it according to the 3rd form.
RM systems (Object-relational mapping)
The disadvantages of different databases include slightly different commands, which greatly complicates migration from one database to another; to correct this, ORM systems are used — essentially these are object-oriented add-ons, sort of interfaces that allow you to implement logic, and internal commands will be the concern of this interlayers.
Usually, when initializing an ORM system, you specify which BD you need to work with and then ORM commands are used, so to migrate to another BD you need to make a change literally in 1 line.
The simplest ORM options allow you to perform CRUD actions ( CREATE, READ, UPDATE and DELETE).
There are no popular/massive ORMs for the C++ language, maximum – CRUD on github
For python language I found the following ORMs
| Python Object-Relational Mapping Software | |
|---|---|
| SQLAlchemy | Python SQL Toolkit and Object Relational Mapper |
| Django | High-level web application framework that has a powerful ORM |
| Peewee | Simple, small and expressive Object Relational Mapper. It has few concepts |
| SQLObject | Forms a part of many applications including TurboGears |
| Pony | Billed as the smartest Python ORM |
| Tortoise ORM | Easy-to-use asyncio ORM inspired by Django |
| Storm | Designed to work with thin relational databases and big systems |
