janek5
12.12.2014, 19:55:09
Cześć ponownie!
Tworzę proste forum, mam tabele
posty(id, ...)
tagi(id, ...)
przypisanie_tagi(id, id_postu, id_tagu)
Użytkownik wpisuje tagi rozdzielone spacją i przypisywane są one do postu (jeżeli tag nie istnieje to dodawany jest to tabeli tagi i przypisywany). Jak to najlepiej zrealizować? Chodzi zarówno o wydajność jak i uniknięcie sytuacji, że jakieś dane zostaną "zgubione" (transakcje w Yii są możliwe dla wielu modeli?). Nie oczekuje oczywiście gotowego kodu, a raczej wskazówki/linki/pseudokod.
Dzięki!
Pyton_000
12.12.2014, 21:41:19
W tagi dajesz klucz Unique - problem duplikatów masz z głowy
Dodajesz tak, sprawdzasz ID dla grupy tagów przypisujesz IDki do postu i tyle.
Nie ma tu się nad czym za bardzo rozwodzić
janek5
13.12.2014, 16:44:43
Dzięki za odpowiedź. Ok, ale w momencie dodawania Yii zwróci wyjątek (jeżeli będzie duplikat) i nie wykona się reszta. Więc trzeba by to jakoś inaczej rozwiązać, w bardziej rozbudowany sposób. Również kwestia zachowania spójnych danych, o których pisałem w pierwszym poście.
Turson
13.12.2014, 16:47:25
Zawsze zanim wrzucisz do bazy możesz sprawdzić czy nie istnieje już rekord z tym id_postu i id_tagu.
Poza tym istnieje INSERT IGNORE