Topic: unikalumas

Sveiki, ar yra būdų ir kokie jie, jei reikia įrodyti MySQL duomenų bazėje esantį įrašo unikalumą. Pvz. Jei lentelės laukas yra pildomas automatiškai tos dienos data ir laiku, kad ir su php funkcija time(). Kaip man įrodyti, kad lentelės įrašas buvo padarytas būtent tada ???

Martynas

Re: unikalumas

Na taip neįrodysi, nebent būtų PILNAS binlog'as nuo pat pradžių.

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: unikalumas

Patikslink klausimą (-;

Ką reiškia įrodyti unikalumą? Dažniausiai "unikalūs įrašai" yra apibrėžiami, kaip aibė duomenų, kurie nesikartoja visoje turimoje duomenų aibėje. Vadinasi, jeigu tu turi lentelę, tai turėsum nuspręsti, kurie stulpeliai atitinka tavo kriterijus, ir gali ant tų stulpelių uždėti "UNIQUE" indeksą. Tokiu atveju įterpaint naujus įrašus, MySQL'as visada tikrins ar tokio įrašo jau nėra, o tu visada žinosi, kad lentoje visi įrašai yra unikalūs.

Kas dėl datos/laiko, tai nerekomenduočiau naudoti, nes juk galima išsaugoti du įrašus tą pačia mikrosekundę.

Jeigu tau reikalingas kažkoks unikalus stulpelis, kuriuo galėtum remtis kaip "unikaliu įrašu", tai yra naudojas AUTO_INCREMENT tipo stulpelis, kur yra saugomi skaičiai, ir kurį užpildo pats serveris įterpdamas vis didėjantį skaičių.

Yra ir kitų būtų, gali unikalų skaičių/eilutę gamintis pats, dauguma programavimo kalbų turi tam reikalui skirtas funkcijas gali paieškoti tokių raktažodžių: UUID, UNIQID ir pan.

Re: unikalumas

Na iš tiesų klausimą reiktų patikslinti, nes jis susijęs su teisiniais dalykais. Pabandysiu pateikti pavyzdį. Tarkim įstaiga talpina dokumentus į MySQL duomenų bazę. Ten vienam iš laukų dokumento html, kitam jo paskelbimo data, nuo kurios skaičiuojasi dokumento apskundimas teismui. Kaip įstaiga galėtų apsisaugoti nuo pareiškėjų, kurie ginčyja dokumento paskelbimo datą. T.y. kaip įstaigai įrodyti, kad dokumentas www paskelbtas būtent tada, o ne kitą dieną ? Juk tarkim administratorius gali pakeisti tą datą.

Martynas

Re: unikalumas

Paprasčiausiai programinė įranga turi būt sertifikuota ir atestuota, tik tuo atveju teismas patikės programinės įrangos patikimumu. Reikia nepamiršti, jog datos pakeitimas - dokumento klastojimas, tai baudžiamoji atsakomybė :)

Kiek maigyklių sudėvėjai ?

Re: unikalumas

Na taip.. čia reikalingas ne "unikalumas", o "tikrumas". Jeigu tikrai to reikia - tai atlikus veiksmą jį reikai fiksuoti pas notarą ir ir tada nebus problemų. Kitas kelias, yra naudoti specializuotą programinę įrangą, kuri, kaip kažkas rašė, atitinka kažkokius tai standartus. Arba tą programinę įrangą gamintis pačiam. Programinė įranga turi būti suprojektuota taip, kad žurnale būtų galima matyti visus pakeitimus ir kad niekas negalėtų to žurnalo suklastoti. Visa tai turi būti patikrinama metrologinėmis metodikomis. Paprasto MySQL'o su PHP scriptu čia nepakaks (-;

Pvz.: notarų biure pastatai serverį, kuris priima hash'us iš tavo serverio, ir log'ina juos. Pas tave serveris rašydamas į DB iš esamo laiko ir duomenų sugeneruoja hash'us ir siunčia juos į notarų biuro serverį. Jeigu kam nors kyla koks nors klausimas - viskas patikrinama ar esantys įrašai pas tave DB atitinka nusiųstus hashus į notarų biurą. čia tas notarų biuras tai kaip ir "patikima trečioji šalis" (authority), kuri padeda spręsti tokio pobūdžio uždavinius.

Re: unikalumas

Dėkui už trumpą ir aiškią diskusiją, žodžiu paprasto ir tik programinio sprendimo nėra :)

Martynas

Re: unikalumas

Labai paprasto sprendimo nėra, nes reikalinga 3-ia šalis, kuria kitos dvi šalys gali pilnai pasitikėti. Tai čia visas sudėtingumas, techninė realizacija nėra labai sunki.