![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 382 Pomógł: 0 Dołączył: 29.11.2005 Skąd: :jestem(); Ostrzeżenie: (0%) ![]() ![]() |
Witam,
chciałbym zapytać jak to można rozwiązać problem modyfikacji i tworzenia aplikacji (co za tym idzie bazy danych) złożonej z wielu tabel. Załóżmy że mamy około 30 tabel (a co tam), z tego 15 tabel z danymi na których pracujemy ,a pozostałe 15 to informacje o uprawnieniach i użytkownikach. Czy jesteście w stanie sobie wyobrazić 15 tabel opisujacych uprawnienia użytkowników do obiektów + 15 tabel z rekordami reprezentującymi obiekty ! ! ! ..... do tego relacje, zależności, zapytania ! Nawet jeśli ubierzemy to wszystko w obiekty i klasy, to zapytania będą robione przez joinny na kilka tabel (np. pobieramy dane użytkownika. uprawnienia użytkowników,dane objektów,po czym to wszystko sprawdzamy), można to załagodzić widokami co może troche poprawić trochę kod sql w aplikacji. Czy mamy dwa rozwiązania : budować bazę i pisać wielkie zapytania po czym ubierać to w objekty.... lub pobierać dane prosto do określonych modułów przez proste zapytania i porównywać między modułami (porównywać kolekcje obiektów...takie joiny w php) ? Dochodzę do wniosku że bez obiektowych baz danych źle to wygląda. Doszedłem to tego punktu od kiedy pojawiła się potrzeba budowania aplikacji z rozbudowana kontrolą dostępu użytkowników. Jak wy sobie z tym radzicie ? Zachęcam do dyskusji ! Ten post edytował jastu 4.10.2007, 00:24:18 |
|
|
![]() ![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 3 Dołączył: 15.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem po co ci obiektowe bazy danych. Troche bawiłem sie nimi w Oraclu i uważam że można sobie spokojnie bez nich poradzić. Widziałem wieksze projekty , po kilkaset tabel i jakoś nikt nie panikował (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Przenoszenie zadań baz danych do jezyka progamowania to idiotyzm poniważ bazy są do tego żeby łączyć dane, filtrowac i wykonywać proste operacje logiczna matematyczne, są do tego zoptymalizowane a samo myślenie o robieniu tego poza bazą dowodzi że masz chyba małe doświadczenie i powinieneś przyjrzeć się możliwością baz danych. Poza select , insert i update bazy maja ogromne możliwości a cały mechanizm który jest schowany za optymalizacją działania bazy jest nie do "ulepszenia" w żadnym innym miejscu a szczególnie wyciągając ogromne pokłady danych do aplikacji! Ten post edytował kris2 3.10.2007, 17:31:11 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 382 Pomógł: 0 Dołączył: 29.11.2005 Skąd: :jestem(); Ostrzeżenie: (0%) ![]() ![]() |
A ile z tych kilkuset tablel było odpowiedzialne za przechowywanieinformacji o uprawnieniach.
Mam problem z optymalnym rozwiązaniem tego w swojej aplikacji, działa to mniej więcej tak : - w aplikacji możemy stworzyć 7 rodzajów obiektów które mają role - każdy z tych 7 obiektów ma inne grupy uprawnonych (role) które powstają razem z obiektem (dynamicznie) - każdy z tych obiektów może wybrać rodzaj polityki (jak w Apache) - każdy z tych obiektów w trakcie nadawnia uprawnień może wykorzystywać powstałe już grupy (role) wcześniej powstałych obiektów A co się dzieje gdy chcemy wyświetlić listę objektów np. drugiego rodzaju ? - system sprawdza czy użytkownik ma możliwość pracy z każdym obiektem z listy... tzn.pobranie ID objektu i jego polityki dostępu, pobranie ID zalogowanego użytkownika, przekazanie tego klasy sprawdzającej w której za każdym razem (dla każdego obiektu z listy) na podstawie wcześniej podanych informacji pobierane są dane o grupach do których należy użytkownik i o grupach które są uprawnione do korzystania z obiektu uwzględanijąc jego politykę dostępu. Nie jest to zrobione jak w CMSach, zgdzie mamy 5 ról i koniec. Tutaj każdy z obiektów ma inne role, dodatkowo obiekty te są w pewnej hierarchi, gdzie uprawnienia do obiektu o wyższej randze przekazywane są obiektom podległym (dziedziczenie uprawnień). Starałem się napisać to w najbardziej zrozumiały sposób, i mam wrażenie że nie do końca mi się to udało ale powinno to zarysować wam obraz problemu. Jak rozrysowałem ten system uprawnień za pierwszym razem wydało i się to niemożliwe, teraz mam już to zaimplementowane ale nie podoba mi się sposób w jaki to działa. Pisał ktoś kiedyś coś takiego ? (IMG:http://forum.php.pl/style_emoticons/default/rolleyes.gif) Jakieś podpowiedzi czy linki ? Pozdrawiam edit // jestem zwolennikiem przechowywania logiki po stronie bazy, przynajmniej pewnej części Ten post edytował jastu 4.10.2007, 00:05:03 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 3 Dołączył: 15.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
nie jestem pewien ale wydaje mi sie ze wystarczyły by Tobie 4 tabele + relacja wiele do wielu.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 02:04 |