![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 243 Pomógł: 0 Dołączył: 30.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Projektuję internetową bazę klientów pewnej firmy, opartą o MySQL. Firma ma oddziały, każdy z nich może mieć swoich klientów. Może się zdarzyć, że dany klient będzie klientem oddziału A i oddziału B równocześnie.
Założyłem, że dane klienta będą zapisane w bazie jednorazowo, a potem jedynie linkowane na potrzeby kolejnych zakupów. Ale okazuje się, że klient wprowadzony przez użytkownika oddziału A nie może być zmieniony przez użytkownika oddziału B. Czy oznacza to denormalizację i konieczność wpisywania wiele razy tego samego klienta do bazy? A może jest jakiś inny złoty środek? Jak się to robi w profesjonalnych systemach? Pozdrawiam, K |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 172 Pomógł: 0 Dołączył: 22.09.2002 Skąd: Gorzów Wlkp Ostrzeżenie: (0%) ![]() ![]() |
Hej.
Jak najbardziej można to rozwiązać - raz możesz dodać do tabeli przechwoującej klientów klucz identyfikujący użytkownika który dodał go do systemu. Wtedy na poziomie aplikacji dając możliwość wstawiania klientów z bazy do zamówienia dajesz wgląd do wszystkich. A w momencie edycji sprawdzany zostaje warunek czy edytująca osoba była również tą która ów klienta dodała. -> Jest to proste i skuteczne rozwiązanie Twojego problemu. Sprawa komplikuje się, gdy pojawi się administrator który ma mieć możliwość edytowania wszystkich klientów, niezależnie od tego czy ich dodał czy nie - wtedy należy rozwiązać to na poziomie aplikacji, a dane kto jest kim (jakie ma uprawnienia w projektowanym systemie) przechowywać np. w tabeli użytkowników systemu. pozdrowka anas Ten post edytował anas 12.05.2005, 13:46:37 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 243 Pomógł: 0 Dołączył: 30.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Klucz określający użytkownika oczywiście mam. Tyle tylko, że jeśli drugi użytkownik chce "użyć" tego samego klienta, to są 2 rozwiązania:
1. stworzyć drugi rekord dla tego samego klienta, dublując większość danych (jeśli dane klienta się nie zmieniły, to oba rekordy będą różniły się tylko oznaczeniem juzer, który wpisał rekord), lub: 2. pozwolić drugiemu z juzerów edytować tamten rekord... Chyba że jest trzecie wyjscie? Pozdrawiam, K |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 172 Pomógł: 0 Dołączył: 22.09.2002 Skąd: Gorzów Wlkp Ostrzeżenie: (0%) ![]() ![]() |
Hej.
No tak jak napisalem wyzej jest rozwiazanie... tylko przeniesc to musisz na aplikacje - zarzadzanie uprawnieniami do edycji klientow w bazie i do ich uzywania - kazdy uzytkownik systemu musi miec prawo uzywania isniejacych Klientow w bazie, np do wstawiania ich w realziowane zlecenie itd, ale nie moze edytowac ich danych jak nie ma do tego uprawnien(nie dodal ich do bazy) - w innym przypadku(gdy user dodawal Klienta od bazy) system pozwala mu na zmiana danych - na poziomie aplikacji to sie odbywa a nie bazy danych - Ty w bazie jedynie oznaczasz kto dodaj Klienta poprzez powiazanie tabeli Klienci z tabela Uzytkownicy za pomoca klucza UzytkownikID - czy jak tam to sobie nazwales. pozdrawiam anas |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 04:45 |