SQL dotaz navrh DB
Zdravim, chtel jsem si pro nas zajmovy krouzek naprogramovat jednoduchou aplikaci s DB serverem a chtel jsem Vas pozadat o pomoc. Vzhledem k tomu, ze budu ukladat nejake citlive udaje, tak uplne nechci podcenit pristupy uzivatelu a proto jsem se chtel poradit s moznostmi pristupu.
Idea je takova :
Data budou bud automaticky ci mnou rucne nahravany do tabulek s prefixem IN_
Aplikace bude zpracovavat vlozena data a bude ukladat vysledky do tabulek s prefixem OUT_
DB bude bezet na MS SQL 2005 db na windows serveru. Aplikaci ma nekolik jednotlivcu na svem PC, kazdy jednotlivec bude mit pristup do jine casti aplikace (pripadne nejake tlacitka v aplikaci budou seda a nebude moci je tim padem zmacknout. Navic i v ramci stejne obrazovky aplikace bych chtel zobrazovat odlisna data v zavislosti na damen uzivateli (aby napr. vedouci sveho taboru mohl v aplikaci zpracovat a vyexportovat a videl rodna cisla apod pouze zaku urciteho oddilu, ne vsech). Proto me napadlo nekolik moznosti jak toto resit:
1} Aplikace se pripoji na DB server (nejsou ve stejne domene) a zde bude na MS SQL serveru bude jeden databazovy ucet pro komunikaci s aplikaci. Nechal bych naprogramovat, aby aplikace poslala (skrz jediny ucet v db pro tuto aplikaci) uzivatele prave nalogovaneho do aplikace (pri zapnuti aplikace zadal login a heslo, to by se zkontrolovalo s DB, kde by byla tabulka Uzivatele s heslem a role na zaklade cehoz by se zpet poslala informace, jake aplikacni menu a funkce maji byt v aplikaci viditelne/spustitelne? Cela komunikace by byla pres jeden aplikacni ucet. Plus krome toho bych mel tabulku pro uzivatele k jakym datum by mel pristup, tzn. napr pro roli vedouci oddilu bych mel definovane kam ma v aplikaci pristup a na zaklade druhe tabulky by se vzalo ze osoba 1 s roli vedouci oddilu pristup k temto clenum oddilu a osoba 2 zase k jinym (vyuzitim pohledu). Tuto tabulku by spravoval napr. nejaky jeden admin.
2) Druha varianta pokud by Windows Server i uzivatelske PC byli ve stejne domene, tak by slo vyuzit windows autentikace s tim ze by se nemuseli pripojovat pres logovani do aplikace a porovnani hesla, ale primo by byla skupina v domene s nazvem napr. SKAUTSKY ODDIL ve ktere by byli pridani clenove. Ti by se pak po prihlaesni do aplikace dokazali pripojit na SQL server (zde by byl dan pristup skupine SKATSKY ODDIL) a na zaklade domenoveho uctu by se z tabulky uzivatelu opet vzala role a data k jakym je v ramci apliakce pristup a jake funkec se jim zpristupni.
Myslite ze budou fungovat obe varianty? S tim ze preferovana je asi 2.
Muj treti dotaz je v SQL s jakym datovym typem bych mel udelat pole "heslo" v ramci tabulky uzivatelu pro variantu 1, aby bylo sifrovane. Chtel bych pak pouzit napr. takovouto funkci pro porovnani zda uzivatel ktery se do aplikace hlasi ma prava: pwdcompare(HESLO PRIJATE ZADANIM Z APLIKACE, password_hash)
Dekuji mnohokrat