![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
1. Mam sobie stronke, na której mam newsy, kategorie itp.
Baza danych rozwiązana w taki sposób: news id | title | header | text | ... | id_category category id | name Jeden news może mieć tylko jedną kategorie, jedna kategoria może mieć wiele newsów. Teraz mamy nasz "problem": lista kategorii i obok podsumowanie ile newsów się w niej "znajduje". Zastanawiam się czy za każdym razem robić zapytanie do bazy count (tak robię do tej pory), czy może trzymać to w bazie, czyli: category id | name | count_news i przy dodawaniu newsa += do category i analogicznie przy odejmowaniu news do samo. 2. Teraz pytanko z innej beczki. Często widuje rozwiązania tzw. "normalizacji" (zwał jak zwał), czyli: news id | title ... category id | name ... news_category id_news | id_category (id dla tej kolumny raczej nie będzie potrzebne, co nie?) I pytanie czy warto to stosować, w momencie gdy jeden news = jedna kategoria. Widzę tutaj zalety w przypadku manyToMany - co w tym jednym konkretnym przypadku nie będzie wykorzystywane. Teraz problem z zapytaniami do bazy i podliczaniem. W Doctrine 2 (za pewne jeszcze mało wiem, umiem) generować będzie mi to "kilka" zapytań. Wyświetlamy news, do tego dopasowujemy kategorie (liczba mnoga) oraz z kolei z tabeli "Category" pobieramy stosowne nazwy. Być może mi się zdaje, ale to już 3 zapytania. Jeżeli chciałbym wyświetlać wszystkie kategorie przy liście newsów to jest to masa nie potrzebnych moim zdaniem zapytań. Co prawda cache nam rozwiąże po trochu problem w trybie produkcji (cały czas patrzę przez pryzmat doctrine i symfony). Za pewne jest to banalne pytanie, ale tak z ciekawości się pytam - rozwiązań tego widziałem już kilka, ale jedynie taka pełna "normalizacja" wydaje się mieć sens ze względu na możliwości edycji nawet wszystkich newsów / kategorii jednocześnie. Wiem, że nie będzie to wpływać zbytnio na wydajność mimo wszystko (ułaki setnych sekund) i pewnie doctrine pozwola nam na skonstruowanie w DQL jednego zapytania many to many (nie doszedłem do tego działu jeszcze). ehhh, pewnie nie potrzebnie się rozpisałem ;] |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 16:36 |