Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Soft deleting a obiekty w relacji
markonix
post
Post #1





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Jak rozwiązuje sytuacje gdy .. na przykładzie:

Mamy tablicę/obiekt klasa, ta ma pod sobą lekcje i jeszcze po nią mamy oceny.
I teraz powiedzmy, że dana klasa została usunięta i liczymy jakąś średnią ocen dla szkoły.
W systemie korzystam z soft delete czyli (int) kolumna "deleted".

I teraz pytanie. Jako, że tylko klasa ma status "deleted" oceny są nieruszone. Jak to rozwiązać?
Gdybym korzystał z twardego usuwania to klucze obce by rozwiązały problem bo wraz z klasą wyleciałoby wszystko co po nią.

1) JOINowanie obiektów nadrzędnych i sprawdzanie warunku = 0?
2) Usuwanie masowym update obiektów podrzędnych set deleted = 1?
3) Może na poziomie DB da się to jakoś obsłużyć?
4) Inny sposób?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
vokiel
post
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Usuwanie wszystkiego nie ma sensu, bo zamiast jednego update musiałbyś zrobić ich dużo więcej, poza tym tracisz w ten sposób informację o tym co zostało usunięte.
Najważniejszy przypadek, który dyskwalifikuje takie rozwiązanie: nauczyciel wpisał uczniowi ocenę, ale niechcący nie temu co trzeba, więc usuną błędną (deleted=1) i dodał nową, prawidłową. Teraz usuwasz całą klasę i orientujesz się, że sorry, ale to nie ta klasa miała być usunięta - więc przywracasz. Jeśli byś robił masowe update deleted=1 dla wszystkich ocen to w momencie próby przywrócenia klasy nie wiadomo by było które oceny przywrócić, a które zostawić usunięte.

Zatem JOIN jest IMHO najlepszym rozwiązaniem.
Go to the top of the page
+Quote Post

Posty w temacie


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: 14.10.2025 - 15:58