Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] Dobór rozwiązania - wyszukiwanie
adam882
post 15.11.2011, 12:39:37
Post #1





Grupa: Zarejestrowani
Postów: 289
Pomógł: 1
Dołączył: 2.11.2007

Ostrzeżenie: (0%)
-----


Witam

Mam stronę internetową, gdzie dodawane są artykuły.

Tabela:
id (int) | nazwa (varchar) | tresc (text) | data (int)

W kategoriach wyświetlam nazwę i skróconą treść artykułu. Trochę wydaje mi się to nieoptymalne, gdyż za każdym razem pobieram całe pole "tresc" i wyświetlam skróconą wersję w wynikach.

Czy może lepszym rozwiązaniem byłoby stworzenie takich dwóch tabel? :

Tabela1:
id (int) | tresc_pelna (text) | data (int)

Tabela2
id (int) | parentid (int) | nazwa (varchar) | tresc_skrocona (text) | data (int)

Tutaj pobieranie w kategoriach, jak i wyszukiwanie (tylko w samym polu "nazwa", bo nie chce szukania w "tresc_pelna") byłoby na pewno szybsze. Zakładam, że dodając artykuł wykonywane byłyby wtedy dwa zapytania, ale zastanawiam się, czy warto zrobić tak, że przy dodawaniu w jednym zapytaniu wpisywana jest pełna treść tego samego artykułu, a w drugim - ten sam artykuł skrócony np. do 200 znaków. Czy warto coś takiego zrobić? Minusem będzie na pewno większy rozmiar bazy.

Go to the top of the page
+Quote Post
nospor
post 15.11.2011, 12:43:56
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Jakim cudem przyszła ci do głowy ta druga tabela?
Zrozumiałbym, że chciałbyś dodać kolejne pole na skróconą treśc, ale nie tabele.

To po pierwsze.
A po drugie:
ale wiesz, że z bazy można pobrać tylko część tekstu a nie cały tekst? np. przy pomocy funkcji LEFT ?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
adam882
post 15.11.2011, 13:40:06
Post #3





Grupa: Zarejestrowani
Postów: 289
Pomógł: 1
Dołączył: 2.11.2007

Ostrzeżenie: (0%)
-----


sądziłem, że można pobrać z bazy skróconą treść, ale nie używałem tego. W takim razie tak bym to widział tak:

a) Rozwiązanie pierwsze:
id (int) | nazwa (varchar) | tresc (text) | data (int) [i i przy pomocy LEFT pobiera tylko część pola "tresc"]

b ) Rozwiązanie drugie:
id (int) | nazwa (varchar) | tresc_skrocona (varchar) | tresc_pelna (text) | data (int) [gdzie tresc_skrocona to jakieś 200 znaków z tresc_pelna]

Które lepsze?

Ten post edytował adam882 15.11.2011, 13:43:24
Go to the top of the page
+Quote Post
nospor
post 15.11.2011, 13:43:10
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Jak dla mnie to wersja a) jest lepsza. Nie trzymasz bez sensu dodatkowych danych. Jeśli więc, zwykłe obcinanie tekstu do 200 znaków będzię cię satysfakcjonowało, to wersja a) jest moim zdaniem lepsza.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.06.2025 - 00:03