https://github.com/0marrkvi0/database_implementation_rpg_dbs
Final optimization of the database design and creation of a working database including custom tables, attributes, indexes, stored procedures and test scenarios. (subject_DBS)
https://github.com/0marrkvi0/database_implementation_rpg_dbs
index postgresql-database testing
Last synced: about 1 month ago
JSON representation
Final optimization of the database design and creation of a working database including custom tables, attributes, indexes, stored procedures and test scenarios. (subject_DBS)
- Host: GitHub
- URL: https://github.com/0marrkvi0/database_implementation_rpg_dbs
- Owner: 0MarrkvI0
- Created: 2025-06-19T17:32:04.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-19T20:11:41.000Z (about 1 year ago)
- Last Synced: 2026-03-05T09:06:28.638Z (4 months ago)
- Topics: index, postgresql-database, testing
- Language: PLpgSQL
- Homepage:
- Size: 999 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Turn-Based RPG Combat System – PostgreSQL Implementation
**Autor:** Martin Kvietok
**Predmet:** Database Systems
**Fakulta:** Fakulta informatiky a informačných technológií, STU Bratislava
## Popis projektu
Toto zadanie sa zameriava na implementáciu RPG bojového systému v PostgreSQL. Projekt obsahuje definíciu tabuliek, procedúr, logiky súbojov, regenerácie, manipulácie s predmetmi a logovania udalostí.
## Obsah
### Funkcie a procedúry
- `p_rest_character` – Simulácia odpočinku postavy a regenerácia zdravia a AP.
- `p_enter_combat` – Zapojenie postavy do prebiehajúceho súboja.
- `p_reset_round` – Ukončenie aktuálneho kola a začatie nového.
- `p_loot_item` – Získanie predmetu z bojiska postavou.
- `p_effective_spell_cost` – Výpočet efektívnej ceny kúzla pre postavu.
- `p_cast_spell` – Zoslanie kúzla vrátane výpočtu AP, zásahu a účinkov.
### Výpočty a modelovanie
- Efektívne poškodenie a cena kúzla sú počítané pomocou hráčových atribútov, vybavenia a kúzla.
- Redukcia poškodenia zohľadňuje brnenie cieľa.
### Indexy
Projekt obsahuje optimalizované indexy pre rýchle vyhľadávanie:
- `idx_character_attr_pair`
- `idx_combat_participant_alive`
- `idx_inventory_item_is_equipped`
- `idx_combat_item_is_taken`
- `idx_round_time`
### Zmeny oproti predchádzajúcim verziám
- Nové akcie predmetov (liečenie, znižovanie AP, zvyšovanie poškodenia)
- Pridané časové stopy k bojom (`start_time`, `end_time`)
- Rozšírené typy udalostí v `combat_log` (`login`, `winner`, `round_start`, `round_end`)
## Testovanie a spustenie
**Poradie krokov:**
1. Spustiť `create_db.sql` – vytvorenie schémy databázy
2. Spustiť všetky skripty `p_*.sql` – uložené procedúry
3. Spustiť `init_db.sql` – naplnenie testovacími dátami
4. Spustiť testy v poradí:
- `test_p_rest.sql`
- `test_p_enter_combat.sql`
- `test_p_loot_item.sql`
- `test_p_cast_spell.sql`
- `test_p_reset_round.sql`
5. Vytvoriť pohľady zo skriptov `v_*.sql`
## Použitá technológia
- **PostgreSQL** – relačná databáza pre spracovanie hierarchie a logiky súbojov
- **PL/pgSQL** – jazyk pre procedurálne funkcie a trigger logiku
- **UML diagramy** – modelovanie správania funkcií
## Diagramy
- Fyzický model databázy
- UML aktivity pre každú funkciu