Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 0 Dołączył: 17.11.2010 Ostrzeżenie: (0%)
|
Cześć,
mam taki poblem. Mam do zrobienia system newsów są 3 typy Samochody motory i jachty Powiedzmy mam tabelę NEWS i w niej pola id, rating, title , id_moto_params, id_auto_params, id_boat_params Tabela = id_moto marka, model, pojemność, .. i w zależności od typu wpisu dodaję id_moto/auto/boat do tabeli news strasznie zagmatwane i mam nadzieję że zrozumiecie? Ps. Problem podobny np w allegro aukcja ma kilka identycznych parametrów np cena, czas trwania + przedmioty z różnymi parametrami np, stan , rozmiar a w innej wielkość, moc Pozdrawiam |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 0 Dołączył: 17.11.2010 Ostrzeżenie: (0%)
|
Nie jestem nadal przekonany powiedzmy przy moim rozwiązaniu dla 100 newsów mamy 200 wpisów 100 do tabeli news i 100 do danych tabel w zależności od typu Przy rozwiązaniu @ano przy 100 wpisach powiedzmy każdy wpis ma średnio 5 parametrów daje nam to 600 wpisów, 100 w tabeli news + 500 wpisów w tabeli parameters, drugra sprawa w moim rozwiązaniu wykonuję dwa zapytania, @askone "W przypadku jednej tabeli wystarczy jedno proste zapytanie na jednej tabeli i dodana klauzula group by..." - nie da się tego zrobić na jednej tabeli, przy różnych parametrach dla różnych newsów. @bww - różne wiele tabeli bo każdy rodzaj newsa ma inne parametry, tak jak w allegro każda kategoria ma różne parametry jak sprzedajesz książke to nie masz pola przebieg tylko np gatunek. ale masz w książce jak i w samochodzie (przebieg) cechy wspólne cena , długość aukcji itp czyli masztabele AUKCJA + TABELE BOOK_PARAMS i AUTO_PARAMS tak jak ja mam tabele news + auto_param + boat_param Auto news ma PARAMETRY np: marka, model, moc_silnika a Boat news ma: zasięg, ilość pasażerów ilośc_kajut . Jak to teraz widzicie |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 14 Dołączył: 8.09.2011 Ostrzeżenie: (0%)
|
Nie jestem nadal przekonany powiedzmy przy moim rozwiązaniu dla 100 newsów mamy 200 wpisów 100 do tabeli news i 100 do danych tabel w zależności od typu Przy rozwiązaniu @ano przy 100 wpisach powiedzmy każdy wpis ma średnio 5 parametrów daje nam to 600 wpisów, 100 w tabeli news + 500 wpisów w tabeli parameters, drugra sprawa w moim rozwiązaniu wykonuję dwa zapytania, @askone "W przypadku jednej tabeli wystarczy jedno proste zapytanie na jednej tabeli i dodana klauzula group by..." - nie da się tego zrobić na jednej tabeli, przy różnych parametrach dla różnych newsów. @bww - różne wiele tabeli bo każdy rodzaj newsa ma inne parametry, tak jak w allegro każda kategoria ma różne parametry jak sprzedajesz książke to nie masz pola przebieg tylko np gatunek. ale masz w książce jak i w samochodzie (przebieg) cechy wspólne cena , długość aukcji itp czyli masztabele AUKCJA + TABELE BOOK_PARAMS i AUTO_PARAMS tak jak ja mam tabele news + auto_param + boat_param Auto news ma PARAMETRY np: marka, model, moc_silnika a Boat news ma: zasięg, ilość pasażerów ilośc_kajut . Jak to teraz widzicie moze tak?: tabela NEWS: news_id int news_category int news_object_id int news_date datetime tabela NEWS_TEXT news_id int news_text varchar news_title varchar tabela NEWS_AUTA... tabela NEWS_JACHTY... nastepnie tworzysz tabelki dla aut, jachtow itd i np jesli w news_category masz 0 to robisz zapytanie do news_auta, szukajac obiektu o ID rownym news_object_id z newsa, jesli w category masz 1 to szukasz w jachtach ID rownego news_object_id... itd. NEWS i NEWS_TEXT rozdzielilem na 2 czesci, gdyz NEWS_TEXT bedzie zawierala spore ilosci tekstu w polach varchar ktore sa znacznie wolniejsze od INtów - szybciej bedzie znalezc interesujace nas newsy w tabeli news (wedle kategorii lub nowosci), a pozniej sobie doczytać z nich wlasciwa tresc z tabeli NEWS_TEXT (id w obu tabelach takie samo). ale jak bedziesz chcial dodac cos nowego (nowa kategorie) to musisz dodac nową tabelę do bazy danych. dlatego mozna zrobic rowniez tak: tabela NEWS: news_id int news_category int news_object_id int news_date datetime tabela NEWS_TEXT news_id int news_text varchar news_title varchar tabela OBJECTS object_id int object_category int object_data text rozwiazanie podobne do poprzedniego. object_category jest narazone na anomailie, ale to ze te dane sa w 2 miejscach spowoduje ze znalezienie newsow z danej kategorii bedzie szybsze. do tabeli objects walisz wszystkie obiekty (jachty, auta itd), do object_category wpisujesz cyferke oznaczajaca typ = 0-auto, 1-jacht 2-rower 3-motocykl itd, w object_data zapisujesz zserializowaną tablicę zawierającą wszystkie dane dotyczące danego obiektu. To pozwala na dowolna konfiguracje pól - w rowerze moga byc inne, i w dodatku innych typów i w innej ilosci, w aucie inne, w motocyklu inne. Tylko nie zrobisz selecta wtedy szukajac np najszybszej łodzi albo najpojemniejszego silnika. zazwyczaj uzywam tego sposobu do danych ktore i tak musza byc odczytane za jednym razem, a zawieraja zmienna liczbe pól. Ten post edytował Orzeszekk 3.03.2012, 01:15:49 |
|
|
|
opmsoft Relacje 1.03.2012, 20:18:37
ano Możesz zrobić 'odwróconą' tabele (key-valu... 1.03.2012, 21:18:31
bww Może tak:
NEWS
id_news
PARAMS
id_params
id_type
... 1.03.2012, 21:22:58
opmsoft Dzięki za odpowiedz jutro zmodyfikuję wasze wskaz... 2.03.2012, 13:41:27
bww Nie rozumiem po co dla każdego rodzaju newsa tworz... 2.03.2012, 13:55:54
askone Zaproponowana przez Ciebie struktura jest wadliwa.... 2.03.2012, 14:27:31
opmsoft Oki czyli generalnie nie znaleźliśmy odpowiedniego... 5.03.2012, 12:52:50 ![]() ![]() |
|
Aktualny czas: 27.12.2025 - 02:26 |