![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 0 Dołączył: 1.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Hej,
dajmy na to, że mam 3 tabele w bazie: tabela "tytuly": id -- tytul tabela "tytul_gatunek": id -- tytul_id -- gatunek_id tabela "gatunki": id -- gatunek Jak widać druga tabela wiąże poszczególne rekordy z 1. i 2. tabeli ze sobą (relacja wiele do wielu). Teraz chciałbym wyświetlić listę utworów i przy każdym wypisać do jakich gatunków należy. Mogę to zrobić np. tak: W modelu mogę stworzyć klasy dla tabel "tytuly" i "gatunki". Widok poprosi klasę modelu "tytuly" o listę np. pierwszych 20 tytułów. Widok dostanie tę listę wraz z ich numerami id. Następnie widok poprosi klasę modelu "gatunki" (wysyłając jej numery id tytułów) o tablicę: z listą gatunków dla każdego id tytułu. Widok ją dostanie. Następnie wszystko poskłada i wyświetli. Wydaje mi się to trochę zagmatwane za bardzo, bo jeśli bym to wszystko zrobił w jeden klasie modelu "tytuły" to zajmowałoby to mniej kodu. pozdrawiam i z góry dzięki za wyjaśnienie problemu (IMG:style_emoticons/default/smile.gif) Jak jest poprawnie zgodnie z modelem MVC, czyli jak powinno się to robić? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Zastanów się jak powinien wyglądać interfejs dla tego czegoś? Zróbmy to tak*:
Załóżmy, że mamy relację pomiędzy książkami, a ich gatunkami (bo tytuł to może być książki, piosenki, filmu - ale sam w sobie nie występuje) Książki i gatunki posiadają wzajemną relację. Na tym etapie nie interesuje Cię jak to będzie w bazie danych wyglądać tylko jaki to będzie miało interfejs, jakie typy możemy wyszczególnić itd. Takie projektowanie "od końca" niejednokrotnie jest najlepszą metodą. Tak więc jakie będzie kompletny interfejs dla książek i gatunków? Kod Book: getTitle() setTitle(string) getGenres() setGenres(array[BookGenre]) addGenre(BookGenre) eraseGenres() BookGenre: getName() setName(string) getBooks() * oczywiście nie jest to jedyna słuszna droga - ale jest prawdopodobnie najlepszą w tej sytuacji. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 2.10.2025 - 04:40 |