Jako że jedna (sub)kategoria może przynależeć do wielu użytkowników, a jeden użytkownik może mieć wiele (sub)kategorii, to mam w tym przypadku relację wiele-do-wielu, myślałem więc utworzyć stworzyć 2 tabele, jedna dla kategorii, druga dla subkategorii, po czym sprząc je tabelą pomocniczą, jak to w relacjach wiele-do-wielu się niby robi.
I tu leży pies pogrzebany. Jeśli użytkownik Kowalski doda kategorię Abcd, która będzie mieć subkategorie Bcd oraz Bef, to może się przecież zdarzyć, że przyjdzie Nowak i doda sobie kategorię Xyz, która będzie miała subkategorie Uwx oraz Bcd - to w tym momencie wysypuje się idea, bo subkategoria Bcd ma 2 nadrzędne.
Wracając do początku mógłbym na upartego dać jedną tabelę dla kategorii i drugą dla subkategorii, w której będzie występowała redundancja, nazwy będą się powtarzać - wszystkie będą miały przypisanego jednego użytkownika i nie będzie zgrzytów, np. tak:
Kod
id nazwa użytkownik kat_nadrzędna
1 Bcd [Kowalski] Abcd
2 Bef [Kowalski] Abcd
3 Uwx [Nowak] Xyz
4 Bef [Nowak] Xyz
5 Bef [Dziura] Lkj
...
1 Bcd [Kowalski] Abcd
2 Bef [Kowalski] Abcd
3 Uwx [Nowak] Xyz
4 Bef [Nowak] Xyz
5 Bef [Dziura] Lkj
...
Czy takie rozwiązanie ma sens z punktu widzenia normalizacji, czy też należy szukać wyjścia gdzie indziej?