Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> System ogłoszeń
piotr485
post
Post #1





Grupa: Zarejestrowani
Postów: 292
Pomógł: 0
Dołączył: 10.07.2009

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


Witam.

Buduję system ogłoszeń i jest taka kwestia, że różne ogłoszenia będą miały różne pola czyli np.

Nieruchomości - > tytul, powierzchnia, ilosc pokoi, pietro, itp. itd.
Motoryzacja tytul, pojemnosc silnika, itp. itd.
Praca - id_rodzaj_pracy itp. itd.

Mam dylemat. Zastanawiam się czy dla każdych ogłoszeń zrobic calkowicie osobna tabelke czy zrobic jedna ktora ma wspole cechy takie jak np. tytul, osoba_kontaktowa, telefon , a dodatkowe tabelki z dodatkowymi atrybutami.

Czy po prostu dla kazdego rodzaju ogloszenia inne tabelki ?

Jak wy to rozwiązujecie/rozwiazaliscie ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
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ę w inny sposób?

1. Czym są te trzy podane typy ogłoszeń (nieruchomości, motoryzacja, praca)? No w pierwszej kolejności są to po prostu ogłoszenia i jak każde ogłoszenie mogą one mieć swój tytuł, treść, datę publikacji, datę ważności (ew. przedział), swojego autora, są przypisane do jakiejś kategorii - to są dane wspólne dla wszystkich ogłoszeń.
2. Ogłoszenia w różnych kategoriach mają różne atrybuty - ale w sumie atrybut to atrybut: ma swoją nazwę, wartość/ci - ewentualnie jakieś informacje o tym jak wyświetlany daną wartość (przykładowo: powierzchnia mieszkania jest zawsze podawana w metrach kwadratowych czyli jest to wartość liczbowa - jednak wyświetlamy ją w formacie: %d m² - format sprintf))

Kod
Ogłoszenia: id, id_kategorii, tytuł, treść, data utworzenia

Atrybuty: id, nazwa, typ, wielokrotnego_wyboru, format
WartościAtrybutów: id, id_atrybutu, wartość_int, wartość_double, wartość_string

TabelaŁączącaWszystkiePowyższe: id_ogłoszenia, id_atrybutu, id_wartości_atrybutu


1. Atrybuty.typ: zawiera informacje o tym czy jest to atrybut typu całkowitego (pow. mieszkania - wartość_int), zmiennoprzecinkowego (wartość_double), tekstowa (wartość_string) - takich typów może być nieco więcej
2. Atrybuty.wielokrotnego_wyboru: flaga informująca czy dany atrybut może przyjąć wiele wartości (np. atrybut "obsługiwane standardy" może przyjąć wartości Abc1, Def2, Ghi-XX2)
3. Atrybuty.format: wspomniany wcześniej format wyświetlania atrybutu, np.: "%d mm" -> "526 mm"
4. Za każdym razem gdy dla danego atrybutu pojawia się wartość, która wcześniej nie wystąpiła wprowadzasz ją do WartościAtrybutów
5. WartościAtrybutów ma niezbyt ładną strukturę, ale daje ona całkiem dobrze radę (lepiej niż osobna tabela na każdy typ wartości) - ma jednak swoje ograniczenia

Cytat
- druga specyfikacje ogloszenia - w tym trzymalbym id ogloszenia, nazwe specyfikacji i np wartosc tej specyfikacji, czyli
id | nazwa specyfikacji | wartosc specyfikacji
1 | pojemnosc silnika | 1.8 litra
Utrzymanie takiej struktury jest wyjątkowo niewydajne i ciężkie - a przy wyszukiwaniu czy wielojęzycznym interfejsie można się...

Cytat
Ewentualnie jedna tabela na zasadzie np tutul, osoba kontaktowa, ... i specyfikacje, gdzie specyfikacje laczysz implodem czyli np ogloszenie nieruchomosci
id | tytul | Osoba kontaktowa | Specyfikacje
1 |Sprzedam | Jakis Pan/Pani | powierzchnia|40m2,ilosc pokoi|3,pietro|2 itp
To już w ogóle jest kompletna porażka - zerowa możliwość operacji na danych


Do przechowywania takich danych dosyć dobrze powinna się spisać nierelacyjna baza danych (bo z takimi danymi mamy tutaj do czynienia).
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: 11.10.2025 - 11:59