Układ bazy danych

Odpowiedz Nowy wątek
2017-06-19 21:56
0

Witam jest to moja pierwsza baza danych i mam pytanie o układa bazy danych. Mianowicie chce zrobić bazę danych szkoły. Chce ją wykorzystać w c++. I mam pytanie jak zrobić logowanie. Chodzi o to że program nim dostanie się do szkoły to chce by osoby takie jak admin, dyrektorka, nauczyciele, osoby w sekretariacie mogły się zalogować każda z tych osób będzie miała inne opcje zmiany bazy. I chodzi o to czy mam stworzyć oddzielną bazę danych na logowanie czy zrobić osobną tabelę w starej bazie. Przy logowaniu chodzi mi o coś takiego że jak na przykład zaloguje się jako admin to mogę dodawać pracowników ale w C++ chce podzielić to na osobne klasy i każda taka klasa będzie miała inne metody działania na główniej bazie. Czy jakoś zrobić tabele logowanie i połączyć jak jakoś przez relacje na inne tabele. Nie wiem jak to wykonuje się profesjonalnie.

Pozostało 580 znaków

2017-06-19 22:01
0

Mianowicie chce zrobić bazę danych szkoły.

Baza danych szkoły jest pojęciem dosyć szerokim - zawiera się w nim baza szkolnej biblioteki, spis pracowników, uczniów, rozmieszczenie sal, umiejscowienie akcesoriów nauczania, spis dyplomów, świadectw, faktur, wycieczek (...).

czy zrobić osobną tabelę w starej bazie

Jakiej starej bazie? Nic o żadnej starej bazie nie wspomniałeś wcześniej.


edytowany 3x, ostatnio: Patryk27, 2017-06-19 22:04

Pozostało 580 znaków

2017-06-19 22:07
0

moja bazowa baza to school i teraz nie wiem czy zrobić bazę login i tam mieć tylko Id login password i ona będzie odpowiadała w C++ do jakiej części programu dalej przede. Czy zrobić tablice login w bazie school i jakoś to połączyć ale nie wiem jak. By na przykład jak loguje się na admin to mogę dodać pracownika a jak loguje się na nauczyciela to np. mogę dodawać oceny itd. Łatwiej mi to zrobić ze jak loguje się na admin i hasło i login się zgadzają w if to przenosi mnie do powiedzmy klasy dyrektor i tam mogę zmieniać płace pracowników.

Wybacz, ale nie mam bladego pojęcia, w jakim naturalnym języku piszesz. - Patryk27 2017-06-19 22:22

Pozostało 580 znaków

2017-06-20 09:32
0

Z tego co zrozumiałem, chciałbyś zrealizować aplikację, z której będą korzystać różne osoby, z różnym poziomem uprawnień. Każda z nich miałaby swój login i hasło. Twoja aplikacja będzie się komunikowała z bazą danych i chciałbyś, aby dostęp do poszczególnych tabel w bazie również zależał od tego kto się zalogował do Twojej aplikacji.

Zakładając powyższe: nie będziesz potrzebował odrębnej bazy na użytkowników, za to będziesz potrzebował kilku użytkowników bazy danych - każdy z nich powinien mieć inne uprawnienia. Najbardziej okrojone powinien mieć użytkownik, który będzie służył do pobrania danych niezbędnych do wyświetlenia ekranu logowania - nazwijmy go guest. Po podaniu loginu i hasła nadal jako gusest możesz sprawdzić czy logowanie było poprawne - jeśli tak to teraz już wiesz kto się zalogował i na tej podstawie możesz nawiązać nowe połączenie z bazą na nowych (szerszych) uprawnieniach.

Polecam poszukać o MySQL Privileges.

[Adam]


Jeden zespół, tysiące możliwości!
Pokaż pozostałe 2 komentarze
Uważam, iż z powodów bezpieczeństwa nierozsądnym jest tworzyć aplikację, która ACLe przerzuca na użytkowników bazy danych (czyli nierozsądnym jest doprowadzić do sytuacji, gdy użytkownik A ma dostęp do tabel a, b, c, a użytkownik B tylko do tabeli a), zamiast sprawdzać je samemu. Tj. uważam, iż jedna aplikacja = jeden użytkownik bazy danych, mający dostęp do wszystkich tabel, lecz bez możliwości grantowania. W innym wypadku aplikacja musiałaby mieć możliwość tworzenia użytkowników DB, co z kolei otwiera spore furtki do wykorzystania w sposób inny niż założony. - Patryk27 2017-06-20 11:11
Plus należy rozważyć problem z wieloma aplikacjami działającymi na jednej bazie danych (w sensie jednego serwera, lecz różnych schematów). W aplikacji A rejestruje się patryk, aplikacja tworzy użytkownika patryk w DB, po czym w aplikacji B rejestruje się również patryk i zonk - kolizja. Nie mówiąc już o problemie z zarządzaniem taką listą użytkowników z punktu widzenia administratora DB. - Patryk27 2017-06-20 11:12
Być może to nie wynika wprost z mojej wypowiedzi - nie chodzi o tworzenie osobnego użytkownika DB dla każdego użytkownika aplikacji, a raczej o podział wg ról, czyli np.: guest, logged_in, supervisor, itd. Oczywiście ich liczba nie powinna być zbyt duża - co najwyżej kilka. Co zyskamy? Dodatkową warstwę zabezpieczenia danych już na poziomie samej bazy danych (choćby na wypadek, gdy popełnisz błąd w aplikacji). Tworzenie użytkowników w taki sposób jak Ty zrozumiałeś rzeczywiście byłoby nierozsądne. - kchteam 2017-06-20 11:50
Dodatkowo - nie twierdzę, że to co opisałem, to optymalny i zawsze słuszny sposób budowania aplikacji. Z tego co zrozumiałem, to @87kelthuzad właśnie o to pytał - chciał ograniczyć dostęp już do samej bazy na podstawie tego kto się zalogował - sugerował użycie drugiej bazy, ale imho lepszym rozwiązaniem jest ograniczenie na grantach - być może wystarczyłoby mieć tylko dwóch użytkowników bazy: guest i authorized. - kchteam 2017-06-20 11:50
No tak, userów bazy można powiązać z rolami, a nie użytkownikami w aplikacji. - somekind 2017-06-20 15:24

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0