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

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: 22.08.2025 - 23:57