Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Czy to są dobre praktyki?
atomic1234
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 2.08.2010

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


Cześć. Jak lepiej zaprojektować bazę danych w takim przypadku:

Użytkownik ma adresy dostawy, które wybiera do złożonych zamówień.

Załóżmy że ma adres dostawy adr_dost1
Składa zlecenie zlec1 i wybiera dla niego adr_dost1
Za miesiąc, aktualizuje dane adr_dost1.

Ja oczywiście chciałbym zachować dane przed edycją adr_dost1 dla zlec1 w historii.

Jak to zrobić?
Do tej pory robiłem tak, że jeżeli edycja występowała na adr_dost1, który już był wykorzystany w zleceniu, to ten adres dostał atrybut hidden=1, a zmieniony adres został wstawiony do tabeli z nowym id. Dla użytkownika operacja nie widoczna, bo wyswietlam tylko rekordy z atrybutem hidden=0 (domyślna wartość to 0).

Czy może lepiej nie łączyć zlecenia z adresami kluczem, tylko kopiować treść adresu do pola typu text?

Jak wy robicie?

Ten post edytował atomic1234 2.08.2011, 11:37:43
Go to the top of the page
+Quote Post
luckyps
post
Post #2





Grupa: Zarejestrowani
Postów: 153
Pomógł: 41
Dołączył: 28.06.2011
Skąd: Częstochowa

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


Moim zdaniem lepiej jest utworzyc tabele historii i tam gromadzic archiwalne dane.

Odniesc sie bedziesz do niej mogl kiedy bedziesz tego potrzebowal.
Glowna tabela nie jest "zasmiecana" starymi danymi a co za tym idzie, nie ma niepotrzebnego przyrostu danych.
Go to the top of the page
+Quote Post
grrizli
post
Post #3





Grupa: Zarejestrowani
Postów: 29
Pomógł: 6
Dołączył: 29.08.2009

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


ja robię tak, że każdy adres ma pole `wersja`. Gdy uzytkownik dodaje pierwszy adres to on ma wersje 1 (lub 0, jak sobie ustalisz), gdy go zmieni, to nie zmieniam juz adresu z wersja 1 tylko dodaje nowy adres z wersja poprzednia_wersja+1 dla tego klienta. Kazde zamowienie ma pole `wersja_adresu`. W tym wypadku klient moze zmieniac adres 30 razy a do kazdego zamowienia miec inny. To rozwiazanie wymaga osobnej tabeli z adresami, ale to chyba standard.
Go to the top of the page
+Quote Post
atomic1234
post
Post #4





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 2.08.2010

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


Ciekawe pomysły. Nie bardzo umiem sobie wyobrazić implementację tej tabeli historii i jej powiązanie z zamówieniami.

W pomyśle z wersjami, jak przebiega usuwanie adresu przez usera?

Bo u mnie to SET hidden=1;

Ten post edytował atomic1234 2.08.2011, 11:55:12
Go to the top of the page
+Quote Post
grrizli
post
Post #5





Grupa: Zarejestrowani
Postów: 29
Pomógł: 6
Dołączył: 29.08.2009

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


U mnie nie kasuje sie adresu tylko dodaje nowy z wyzszym numerem wersji. Potem aktualny adres == ten z najwyzsza wersja.
Go to the top of the page
+Quote Post

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: 23.12.2025 - 17:59