Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql] Projekt bazy
jachu151
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 26.02.2007

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


Witam serdecznie. Mam pytanie do osób doświadczonych w projektowaniu baz danych.

Problem, jak optymalnie zrealizować taki oto system:

- baza ogłoszeń nieruchomości
- cechy do oferty

Różne typy ogłoszeń mieszkania, domy, itd. każdy tych będzie zawierał trochę cech wspólnych trochę różnych. Domyślnie dużo cech.


Czy optymalnym rozwiązaniem będzie stworzenie tabeli:

offer - ogłoszenia, zawierające ID, opis, daty dodania modyfikacji itd
feature_date
feature_text
feature_int ...

osobne tabele dla różnych cech w zależności jakiego typu one będą.

Wyszukiwanie będzie zawierać dużo LEFT JOINOW, jeśli będę chciał znaleźć ofertę o 10 cechach to jest 10 joinów, da się to zrobić optymalniej? Z mniejszą zależnością od ilości wyszukiwanych cech?



Pozdrawiam
jachu
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mmmmmmm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Możesz zrobić tak:
tabela ogłoszenia:
ogloszeniaID, opis, cena...
tabela cechy:
cechyID, ogloszeniaID, opis_cechy, wartosc_cechy

i w cechach dajesz np:
1, 1, "kolor", "czerwony"
2, 1, "wysokość", "niski"
3, 1, "głośność", "średni"
(UNIQUE powinieneś ustawić na ogloszeniaID+opis_cechy)
opis_cechy możesz zrobić na słowniku, ale szkoda zachodu - zapytania będą skomplikowane

Aby znaleźć ogłoszenie, które spełnia twoje wszystkie cechy robisz:
  1. SELECT * FROM ogloszenia WHERE ogloszeniaID=(SELECT ogloszeniaID FROM cechy JOIN (SELECT "kolor" cecha, "zielony" wartosc UNION SELECT "typ","kombi") wybrane ON cechy.cecha=wybrane.cecha AND cechy.wartosc=wybrane.wartosc GROUP BY 1 HAVING Count(id)=2 /* 2 bo dwie cechy ustawiłeś */)

Ten SQL daje ci duże pole do popisu
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: 15.09.2025 - 04:09