====== Kontrolni Seznam SQL Algoritmov ====== **Različica:** 2.1\\ **Obseg:** Shranjene procedure, pogledi, migracije in logika poizvedb čez MS SQL / MySQL / SQLite. ===== MORA ===== * [ ] **Parametrizacija**: brez veriženja nizov za SQL ukaze; strogo tipkanje * [ ] **Predpostavke sheme** so dokumentirane (collation, občutljivost na velike/male črke, null semantika) * [ ] **Transakcije** so eksplicitne ko potrebno; nivo izolacije je utemeljena * [ ] **Idempotentnost**: migracije in setup skripte lahko varno tečejo (ali jasno navedejo ne-idempotentnost) * [ ] **Sočasnost**: vedenje zaklepanja je upoštevano (deadlocks, dolgi zaklepy, eskalacija) * [ ] **Strategija indeksov** je validirana; spremembe so spremljane z utemeljitvijo in opombami vpliva * [ ] **Načrti poizvedb** so pregledani za kritične poti (MS SQL: dejanski načrt; MySQL: EXPLAIN; SQLite: query plan) * [ ] **Paginacija** uporablja deterministično urejanje (brez "OFFSET brez ORDER BY") * [ ] **Datum/čas** semantika je eksplicitna (UTC vs lokalno; pretvorbe časovnih con) * [ ] **Obravnava napak** mapira DB napake v varne aplikacijske napake (brez uhajanja sheme) ===== PRIPOROČENO ===== * [ ] Izogibaj se RBAR/kursorjem kjer so na voljo set-based rešitve (razen če utemeljeno) * [ ] Uporabi omejene sete rezultatov; izogibaj se "SELECT *" v javnih vmesnikih * [ ] Zagotovi testne nabore podatkov in regresijske poizvedbe za robne primere ===== LEPO ===== * [ ] Dokumentiraj engine-specifične razlike (npr. LIMIT/OFFSET, RETURNING podpora, JSON funkcije) * [ ] Zagotovi zmogljivostne baseline za tabele z visokim volumnom ---- //Različica: 2.1 (Split)//\\ //Avtor: Wolfgang van der Stille// Nazaj na [[start|Sklad Kontrolni Seznami]] | [[..:start|Kontrolni Seznami za Preglede]] ~~DISCUSSION:off~~