46 lines
2.2 KiB
Markdown
46 lines
2.2 KiB
Markdown
# 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. [DTD tutorial](https://www.w3schools.com) |