Nedarvede rettigheder mysql
Hej EksperterHar en lidt svær nød, da jeg har en funktion som jeg gerne vil have lagt ned i stored procedure, for at spare en milliarder af sql kald fra min kode.
jeg har en databasestruktur hvor de vigtige detaljer er:
id (autonummering)
titel
beskrivelse
Rettigheder_slet (hvad niveau skal man være for at måtte Slette)
Rettigheder_Se (hvad niveau skal man være for at måtte se)
overliggende_id (peger på overliggende id)
niveau er bruger niveau som kan være 1-4 ..
jeg har så brug for at lave en stored, som kan slå op hvis den får et ID og et brugerniveau, om det niveau har rettighed til et se dette item..
et niveau kan også være 0 .. hvis den arver rettigheder fra overliggende_id ..
eks.
kunne tre poster være:
id navn beskrivelse ret_slet ret_se over_id
1 test testbeskrivelse 1 3 0
2 test2 testbeskrvielse 0 0 1
3 test3 testbeskrvielse 0 2 2
det der tænkes her er at post id 3 kan ses af brugere på niveau 1 eller 2 .. og slettes af brugere på niveau 1 (nedarvet fra post 2 som nedarver fra post 1)
post nummer 2 kan ses af niveau 1, 2 og 3 (da den arver fra post 1 som kan ses af niveau 1, 2 og 3)
Ved ikke om det giver mening?
idag læser jeg den aktuelle post, og så kigger på den, og hvis der er et 0 læser jeg den foregående, og det blier jeg så ved med til jeg faktisk fanger et tal..
herefter skal jeg kigger jeg så på tallet og sammenligner med om den aktuelle brugers niveau er lig med eller højere end det tal der blev fundet..
Det er som sådan ikke noget problem, andet end at der godt kan være eks. 50 punkter i første niveau, altså 0 i overliggende..
og så kan der for hver af dem være 50 punkter som nedarver.. og 50 under dem .. osv ..
og når jeg så er nede og skal vise punkter dernede i niveau 8 .. så kan det være ret så mange sql kald der fyres af ..
har visse steder hvor jeg er oppe og sende over flere hundre kald afsted for at checke et punkt.. og så kan der være mange hundrede punkter der skal checkes på en gang.. og med latency til db osv, så er jeg sommetider oppe på nogle lange tider..
kort fortalt kunne jeg godt tænke mig at lave hele det her loopen igennem på db niveau og vil derfor gerne ha det som stored procedure..
Er der nogen forslag ?