lambda/README.md

45 lines
2.2 KiB
Markdown
Raw Normal View History

2024-12-21 10:55:32 +01:00
# 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
2025-01-05 00:24:53 +01:00
- 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
2025-01-07 15:23:41 +01:00
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/)