Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Granice normalizacji, baza klientów
ktuvok
post 12.05.2005, 08:10:08
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
anas
post 12.05.2005, 13:45:21
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
Go to the top of the page
+Quote Post
ktuvok
post 12.05.2005, 16:43:48
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
Go to the top of the page
+Quote Post
anas
post 12.05.2005, 17:43:49
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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 04:45