![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 372 Pomógł: 2 Dołączył: 10.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam, próbuje zakodować funkcjonalność usuwania słówek z bazy danych.
Baza danych ma 3 tabele (problemem jest tu to że trzecia tabela to powiązanie pomiędzy dwoma poprzednimi tabelami i ją trzeba najpierw usunąć) Oto tabele:
i teraz żeby usunąć slowo_pl musze najpierw znaleźć id tego słowa w tabeli "tlumaczenie" usunąć rekord z tym id, a następnie znaleźć w tabeli slowo_pl to słowo i usunąć, próbuje wykonać to za pomocą następującego kodu (niestety nie wystepuje zaden błąd ale słowo nie usuwa się z bazy):
czy ktoś mógłby doradzić jak to zrobić, albo chociaż co tu skopałem, ze nie działa tak jak trzeba? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
@JoShiMa: nie ma tak łatwo. Użycie ON DELETE CASCADE w tym przypadku to podcinanie gałęzi na jakiej się siedzi. Przy tłumaczeniach masz bowiem złączenia także inne niż 1-do-1 bo występują słowa mające wiele znaczeń, czasem w zależności od kontekstu. Prosty przykład: szczyt. W zależności od tego czy chodzi o szczyt góry, konferencję czy też coś innego, masz różne odpowiedniki w angielskim. Kaskadowa kasacja pozbawiła by Cię szybko wieloznaczności. W przypadku słownika musi usuwając klucz sprawdzać, czy do obu ze słów istnieją powiązania z innymi słowami. Dopiero ich brak pozwala na usunięcie słowa z bazy. Czasem może się okazać, że usunięcie tłumaczenia kończy się tylko na tym, innym razem pozwoli na usunięcie tłumaczenia i obu wyrazów, a czasem tylko jednego z nich. Nie można w takiej sytuacji zdać się tylko na bazę.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 23:23 |