![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Może na prostym, fikcyjnym przykładzie:
Dodajemy wpis w CMS. Jednym z atrybutów wpisu są TAGI (0..n). Tagi dodawane są dynamicznie przez pola input (JS). Dodajemy wpis i kilka tagów my przypisanych. Tutaj nie ma większego problemu - korzystamy z INSERT w pętli, PS bądź insert batch (akurat teraz pracuje na CodeIgniter). Na tagi mamy oddzielną tabelę w bazie o strukturze: [ id ] [ art_id ] [ name ] I teraz chciałbym edytować listę. W jaki sposób? 1) update na podstawie [id], w porządku ale co zrobić gdy ktoś doda nowy tag? Wtedy też trzeba wykrywać nowo dodane wartości? 2) co zrobić w przypadku usunięcia? znów kolejne zapytania? Najprostsze rozwiązanie jakie mi przychodzi do głowy to: - usuwamy wszystko co ma art_id = X - dodajemy na nowo tagi Te rozwiązanie jest jednak niewygodne ze względu na szybkie narastanie wartości ID -> np. mając 20 tagów każda edycja (bez względu na to ile się zmieniło) zwiększa najwyższe id o 20. Poza tym te operacje wydają mi się mało wydajne - nawet gdy nie zmieni tagów to wykonają się dwa spore zapytania. Praktycznie ten problem koncepcyjny wraca do mnie jak bumerang. Za każdym razem mam jakiś pomysł ale żaden mnie nie satysfakcjonuje. Jakieś sugestie? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Te rozwiązanie także ma minus że TAGi nie mają swoich ID co może potem narobić kłopotów. Kurcze..... widzisz ile ja ci podalem tabel a ile ty twierdzisz ze ja ci podalem? Ja ci podalem 3 tabele, ty to ni z gruszki ni z pietruszki upraszcasz do dwoch tabel.....Spojrz co ci podalem: tabela na arty tabela na tagi (tu tag ma swoje ID) tabela wiążąca tag z artem - to w tej tabeli wiazesz do jakiego arta nalezy jaki tag i to w tej tabeli kasujesz i dodajesz łączenia. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.10.2025 - 01:36 |