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) |