Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Relacje
opmsoft
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
opmsoft
post
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
Go to the top of the page
+Quote Post
Orzeszekk
post
Post #3





Grupa: Zarejestrowani
Postów: 260
Pomógł: 14
Dołączył: 8.09.2011

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


Cytat(opmsoft @ 2.03.2012, 23:48:46 ) *
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
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 27.12.2025 - 02:26