Název projektu
Kvalita relační databáze a SQL příkazů
Kód
SP2025/073
Řešitel
Období řešení projektu
01. 01. 2025 - 31. 12. 2025
Předmět výzkumu
Relační databáze dnes představují víceméně standart pro uložení dat strukturovaných dat. Pro
komunikaci s tímto typem databázi pak využíváme jazyk SQL. Databáze je kritickou části každé
aplikace, která uchovává to nejcennější a tím jsou samotná data. Nesprávná rozhodnutí týkající se
návrhu databáze bývá těžké identifikovat a ještě těžší napravit, vzhledem k provázanosti databáze s
aplikací. Kvalita se pak netýká jen návrhu, ale i také samotných SQL příkazů, které bývají v lepším
případě napsány nezkušeným programátorem a v horším případě jsou generovány ORM bez další
verifikace. Takto vzniká v aplikaci softwarový dluh na úrovni databáze.
V tomto projektu se budeme zabývat provedením komplexní analýzy zaměřené na kvalitu databáze a
SQL. Cílem je vytvořit prototyp nástroje, který se bude soustředit na:
1. Kvalitu databáze - nástroj umožní automatickou identifikaci antipaternů [1] v navržené databázi,
jako je jaywalking, polyformní vztahy a další.
2. Kvalitu SQL dotazů - nástroj umožňuje automatickou identifikaci antipaternů v SQL jako jsou
redundantní konstrukce SQL [2,3], nebo vyhledávání s pomocí non-SARGable predikátů.
Členové řešitelského týmu
doc. Ing. Radim Bača, Ph.D.
Ing. Lukáš Moravec
Bc. Sebastian Glumbík
Bc. Filip Jursa
Specifikace výstupů projektu (cíl projektu)
V rámci tohoto projektu si klademe následující cíle:
• Vytvoření prototypu nástroje, který umožní provést analýzu databáze a jejího vytížení
ve formě SQL příkazů. Nástroj se připojí k vybrané databázi a většinu potřebných
informací přečte přímo ze systémového katalogu.
• Publikace prototypu nástroje na vybrané A/B konferenci jako je EDBT.
Dále budeme připravovat na základě dosažených výsledků publikaci pro jeden indexovaný časopis
nacházející se v Q1. V rámci projektu připravíme zejména srovnání s nástrojem SQLCheck.
Dalším očekávaným výstupem je vytvoření veřejně dostupné implementace, která umožní zopakování
provedených experimentů a tím zjednodušit případné budoucí využití, či rozšíření dosažených
poznatků.