Přeskočit obsah

Datový model (rekonstrukce)

Databáze je silně normalizovaná. Schéma lze rekonstruovat z Otevřených dat, parametrů API a chybových hlášení. Přesné DDL skautIS není veřejné.


Objem dat (cca)

  • 78 000+ členů (osoby v databázi)
  • 2 300+ oddílů (aktivní výchovné jednotky)
  • 20+ let historie členství a akcí
  • Unikátnost osob zajištěna přes rodná čísla (u cizinců datum narození)
  • Mechanismy pro slučování duplicitních účtů přes podporu

Klíčové entity

Jednotka (Unit)

Organizační strom (Ústředí → Kraj → (Okres) → Středisko → Oddíl → (Družina)) s rekurzivní vazbou ID_Parent, typem jednotky (UnitType), evidenčním číslem (RegistrationNumber), názvem, příznakem aktivity (IsActive – soft delete), vazbou na adresu (LocationID). Pro efektivní dotazy nad stromem (např. „všechny členy všech oddílů v kraji“) se využívají rekurzivní CTE (Common Table Expressions) nebo materializace cesty (Path Enumeration / Nested Sets) v uložených procedurách; složitá agregační logika je delegována na databázový server (T-SQL).

Osoba (Person) vs. Uživatel (User)

Striktní oddělení fyzické osoby (jméno, příjmení, RČ, datum narození) od přihlašovací identity. Person reprezentuje reálnou osobu; User reprezentuje přihlašovací účet (vazba 1:N – jedna osoba může teoreticky mít více účtů, snahou je 1:1). Validace formátu a unikátnosti RČ slouží jako primární mechanismus deduplikace členů. Bezpečnostní kód (Security Code): Každá osoba má přiřazen unikátní kód (UUID nebo alfanumerický), který slouží pro bezpečné přesuny mezi jednotkami bez nutnosti žádosti na ústředí.

Členství (Membership)

Časově ohraničený vztah Osoba–Jednotka s rokem (Year), typem členství (řádné, čestné, hostování) a stavem.

Stavy členství:

  1. Rozpracované – jednotka edituje registraci
  2. Odevzdané – předáno nadřízené úrovni ke kontrole
  3. Platné – po schválení vyšší jednotkou/ústředím

Rok členství: Kalendářní rok, rozhodný den pro věkové kategorie je 31. leden. Umožňuje historizaci – systém eviduje např. že někdo byl v jednom roce členem oddílu A, v dalším oddílu B, později vedoucím střediska C – což je klíčové pro služební léta a odznaky věrnosti.

Události (Events)

Dědičnost tabulek (Table-per-Type nebo Table-per-Hierarchy). Event_Base: společné atributy (název, datum, pořadatel). Event_Camp (tábor): GPS, katastrální území, hlavní vedoucí, zdravotník. Event_Education: typ kurzu (čekatelský, vůdcovský), kapacita, vazba na akreditační vyhlášku.

Bezpečnost (RBAC)

Oprávnění nejsou vázána přímo na uživatele, ale na role v kontextu jednotky. Tabulky Role (např. Event.Create, Person.View) a UserRole (ID_User, ID_Role, ID_Unit). Uživatel může být např. administrátor v oddíle a pouze čtenář v nadřízeném středisku.

Pravidla viditelnosti: Vedoucí vidí členy své jednotky a všech podřízených jednotek (např. vedoucí střediska vidí všechny oddíly pod ním). Vedoucí oddílu A nevidí členy oddílu B v jiném středisku bez explicitního oprávnění. Registrace a editace: Registraci nových členů provádí vedoucí oddílu nebo jím pověřený administrátor. Členi nad 15 let mohou editovat své údaje sami; u mladších to dělají rodiče nebo vedoucí.