# lambda PV project λ (RDBMS) ## Requirements 1. The solution must have controllable isolation level of transactions and it must showcase the phenomenon of **Non-repeatable reads** or **Phantom reads** 2. Must use a **true relational database** or **object-relational database** 3. The database must consist of **at least 5 tables including junction tables**, **2 views** and **1 M:N relation** 4. The attributes of tables must **use the following data types at least once** - Real number (`float`) - Logical value (`bool`, ...) - `enum` - Text string (`varchar`, `text`, ...) - Date or time (`date`, `timestamp`, ...) 5. Must allow **creation**, **updates**, **deletion** and **display** of a resource **which splits into more tables** at database level 6. Implement at least one **transaction between at least 2 tables** 7. Ability to **generate reports** which contains **aggregated data** from at least **3 tables** 8. Ability to **import data** to at least **2 tables** in format **`CSV`**, **`XML`** or **`JSON`** 9. Configurability via **configuration file** 10. Proper **error handling** for all edge cases In addition to these criteria, there are the following extras: 1. 1x Documentation - This document must conform to the **[Documentation Checklist](https://moodle.spsejecna.cz/pluginfile.php/2565/mod_resource/content/2/D.13%20Checklist.pdf)** 2. 3x Test cases - All test cases are in `PDF` format - 1 Test case is for running the app including importing database structure - 2 Test cases are for testing the app itself and all possible errors and edge cases and configurability ## Solution My solution will use the following tech stack: 1. **Python** language 2. **MySQL** for database 3. **PySide6** for user interface made in Qt 4. **SqlAlchemy** for database management 5. **`python-dotenv`** for configurability The problem in question will be demonstrated on a library application ## Sources 1. [Qt documentation for pyside2](https://doc.qt.io/qtforpython-5/PySide2/QtWidgets) 1. [Qt documentation for PySide6](https://doc.qt.io/qtforpython-6/PySide6/QtWidgets/) 2. [Pythontutorial.net](https://www.pythontutorial.net/pyqt/pyqt-qtoolbar/) 3. [Docs.sqlalchemy.org](https://docs.sqlalchemy.org/) 4. [XSD tutorial](https://www.w3schools.com/xml/schema_intro.asp)