![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 2 Dołączył: 17.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Męczę się nad (raczej banalnym) problemem z normalizacją bazy danych. Idea jest taka, że doszedłem już do poziomu, gdzie mam tabelę z akcjami, każda akcja ma jakąś kategorię. Kategorie mogą być 2 rodzajów: główne i podrzędne, użytkownicy sobie sami wymyślają kategorie i je dodają, usuwają, modyfikują.
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 ... Czy takie rozwiązanie ma sens z punktu widzenia normalizacji, czy też należy szukać wyjścia gdzie indziej? Ten post edytował radabus 27.10.2011, 21:41:18 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 11:43 |