camikazee
6.04.2012, 08:22:18
Poszukuje jakiegoś sensownego rozwiązania odnośnie pewnego problemu. Problem pojawia się choćby w sklepie internetowym, chodzi o relacje produkt - zamówienie. W uproszczeniu tabela zamówienia zawiera id produktu plus wiadomo dodatkowe informacje. Kwestia co zrobić gdy produkt zostanie usunięty, a użytkownik będzie chciał zobaczyć szczegóły zamówień czyli jakie produkty i za ile kupił. Wiadomo mogę wyświetlić informacje, że produktu już w bazie nie ma lub np po złożonym zamówieniu zapisywać je po prostu do pliku.
Macie jakieś ciekawe pomysły?
toffiak
6.04.2012, 08:46:09
Relacja produkt zamówienie to relacja wielu do wielu, jeden produkt może należeć do wielu zamówienień a zamówienie może mieć wiele produktów.
Co do usuwania produktów, możesz dublować dane produktu na przykład wiążąc dodatkową tabelę zawierającą zdublowane dane produktów z tabelą zamówienia, wtedy usuwając produkt z właściwej tabeli wciąż masz o nim informacje.
Lub drugie podejście, nie usuwać produktów a oznaczać je tylko jako usunięte, dla klienta produkty nie są widoczne ale w dokonanych zamówieniach masz dostęp do tych produktów.
W jednym ze swoich projektów miałem sytuację w której dane o produktach zmieniały się, zamówiernia klientów musiały dotyczyć produktów których cena była taka jak w chwili zamówienia, rozwiązałem to poprzez dodanie tabeli pozycje zamówienia, połączonej z zamówieniami z której były odnośniki do oryginalnych produktów plus informacje które mogły się zmienić jak: cena produktu.
W ten sposób nawet po oznaczeniu produktu jako niedostępny, lub zmienie jego ceny, poprzednie zamówienia klientów mogły być ponownie realizowane na podstawie poprzednich danych.
camikazee
6.04.2012, 10:27:18
Twoje rozwiązania są jak najbardziej słuszne pod warunkiem, że sklep jest mały i ma mało zamówień. Zapisywanie usuniętych produktów w bazie według mnie może się nie sprawdzić, boje się, że wielkość bazy danych rosłaby proporcjonalnie to ilości asortymentu, już wtedy lepiej chyba zrzucać je do plików.
A szukam najbardziej uniwersalnej i elastycznej metody, jeżeli takowa istnieje