Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Unikanie nadmiarowości danych
who?
post
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 4.05.2005

Ostrzeżenie: (0%)
-----


Witam,
Problem generalnie stary jak bazy danych w związku z czym sposobów na radzenie sobie z nadmiarowością również nie brakuje. Jednakże ostatnio doszedłem do wniosku, że o ile eliminowanie nadmiarowości w teorii wygląda na sprawę dość łatwą (a jeśli nie łatwą to przynajmniej jasno opisaną) o tyle w praktyce nie jest już tak różowo.

Rozważmy taki prosty z "życia wzięty" przypadek. Mamy bazę danych, w której istnieją trzy tabele: klienci, towary i faktury. Tabela faktury ma przechowywać wszystkie faktury wystawione dla danych klientów na dane towary. Oczywiście sprawa wygląda na wręcz banalną. Książkowe rozwiązanie tego problemu to utworzenie w tabeli faktury kluczy obcych tabeli klientow i tabeli towarów (plus oczywiście dodatkowe pola charakteryzujące daną faturę jak numer, data wystawienia itd.). Dzięki takiemu rozwiązaniu unikamy wspomnianej nadmiarowości ponieważ nigdzie nie powielamy danych. W praktyce jednak takie rozwiązanie średnio nas zadowala ponieważ jeśli wystawimy dla danego użytkownika kilka faktur, a później zedytujemy jego dane, to dane te również zmienią się na fakturach wystawionych przed edycją danych klienta (taka operacja jest niedpopuszczalna).

I tutaj zaczynają się schody - jak rozwiązać ten problem unikając nadmiarowości, a jednocześnie nie komplikując zbytnio bazy, a tym samym aplikacji? Oczywiście najprościej było by stworzyć ogromną tabelę faktury, która zawiera pola tabeli klienci i tabeli towary i przy dodawaniu nowej faktury kopiować wszystkie dane z tych tabel. Takie jednak tworzenie "super tabel" kłuci się generalnie z ideą relacyjności (nie mówiąc już nawet o nadmiarowości) dlatego wolałbym tego unikać. Z drugiej jednak strony tak się zastanawiam czy jest sens starać się za wszelką cenę eliminować tego typu nadmiarowość kosztem komplikacji systemu, w bazach gdzie będzie góra kilka tysięcy rekordów? Jakie jest wasze zdanie na ten temat i jak wy sobie radzicie z tym problemem?

Pozdrawiam,
who?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Wydaje mi sie, iż pomysł z historią klienta, to dobry pomysl.
Cytat
problem pojawia sie wtedy jesli z id klienta masz podejmowane jakies operacje np konata bankowe numery faktur i inne rzeczy ktore na poczatku trudno przewidziec.
A tutaj nie wiem w czym problem. Moge prosic o wyjasnienie problemu? (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

No i dodatakowa sprawa to to, iż dane klienta nie za czesto sie zmieniają, jesli wogole. Oczywiscie moze ktos zmienic miejsce zamieszkania, tudziez nazwisko, ale za czesto to sie nie odbywa
Go to the top of the page
+Quote Post

Posty w temacie
- who?   Unikanie nadmiarowości danych   20.09.2006, 20:30:39
- - SongoQ   Poruszyles dosc powazny problem, powiem CI tylko t...   20.09.2006, 20:46:00
- - nospor   Wydaje mi sie, iż pomysł z historią klienta, to do...   20.09.2006, 21:22:23
- - SongoQ   CytatA tutaj nie wiem w czym problem. Moge prosic ...   20.09.2006, 21:43:47
- - nospor   CytatNp identyfikator uzytkownika (klienta) wplywa...   21.09.2006, 07:17:26
- - batman   Przykład z fakturami nie jest zbyt trafny. Przecie...   21.09.2006, 07:30:30
- - SongoQ   CytatNo ok, ale co z tego? Zmienil sie login, to s...   21.09.2006, 08:35:07
- - Zbłąkany   To może ja dodam swoje trzy grosze, ponieważ ostat...   21.09.2006, 08:38:43
- - batman   CytatPo co i aktualizacja wszystkich pol. Po to sa...   21.09.2006, 09:11:01
- - nospor   CytatW podanym przykładzie niedopuszczalne je...   21.09.2006, 09:18:15
- - batman   A co w przypadku jeśli usuniemy klienta z bazy? Je...   21.09.2006, 09:39:53
- - nospor   No zazwyczaj jesli mamy faktury, to nie powinno si...   21.09.2006, 09:42:47
- - SongoQ   CytatA co w przypadku jeśli usuniemy klienta z baz...   21.09.2006, 09:55:00
- - batman   W przypadku faktur proste, ale co jeśli będzie to ...   21.09.2006, 10:05:41
- - nospor   CytatJesli mamy koszyk trzymany w bazie, a w koszy...   21.09.2006, 10:13:42
- - batman   @nospor Nie boję się łączenia tabel . Chodzi mi ...   21.09.2006, 10:26:54
- - nospor   Tak, zgadzam się z Tobą: "W pewnych przypadka...   21.09.2006, 10:29:10
- - batman   Cieszę się, że doszliśmy do porozumienia Podany p...   21.09.2006, 10:36:14


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

 



RSS Aktualny czas: 10.10.2025 - 18:58