![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Mam pewien nietypowy problem. W bazie danych znajdują się dwie tabele: tabuser i tabprofile. W tabeli tabprofile znajduje się pole iduser, które jest kluczem obcym. Używając join-a stworzyłem widok, który ułatwi mi pobieranie danych o użytkowniku. I rzeczywiście, jest to wygodne rozwiązanie w przypadku pobierania danych. Jednak w przypadku usuwania lub dodawania danych nie jest już tak różowo - niepoprawne zapytanie i błąd.
Rozwiązałem ten problem w taki sposób, że klasa Account agreguje klasy User i Profile, które są odpowiedzialne za operacje na danych w odpowiednich tabelach. Rozwiązanie to sprawdza się w praktyce, jednak moim zdaniem jest nieco przekombinowane. Macie jakieś pomysły na rozwiązanie tego problemu? Połączenie tabel w jedną nie wchodzi w grę, podobnie jak funkcje trigger. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Cytat a wracając do sedna sprawy. mając takie założenia odwróciłbym problem, teraz masz tak: 1. Operacja wykonywana jest za każdym razem, gdy w jednym z serwisów zakładane jest nowe konto. Wówczas tabele tabuser są synchronizowane. 3. Każda baza danych posiada taki sam podstawowy mechanizm do tworzenia widoków. 4. Patrz punkt 1 - synchronizowana jest tylko tabela tabuser (w wyjątkowych sytuacjach może dojść do synchronizacji niektórych pól z tabprofile) Cytat jak ci sie widzi taka koncepcja: Pomysł bardzo fajny, jednak już go wałkowałem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) 3. Synchronizacja tylko niektórych pól nie jest najlepszym rozwiązaniem, ponieważ w różnych serwisach różne pola są wymagane. W jednym będzie to numer telefonu, w innym imię i nazwisko, w jeszcze innym wiek. A nie każdy system będzie posiadał te pola w bazie danych. Dodanie nowego serwisu będzie skutkowało tym, że skrypt do synchronizacji będzie musiał być przerabiany dla każdego nowego serwisu (a liczba serwisów jest ograniczona jedynie wyobraźnią klienta (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ). Zastanawiałem się również nad stworzeniem tabeli tymczasowej, która pełniłaby rolę kontenera na dane z tabuser i tabprofile, jednak takie rozwiązanie stworzy dodatkowy problem z synchronizacją danych w obrębie jednej bazy danych. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 01:31 |