![]() |
![]() |
![]()
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 ? |
|
|
![]() |
![]()
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 Utrzymanie takiej struktury jest wyjątkowo niewydajne i ciężkie - a przy wyszukiwaniu czy wielojęzycznym interfejsie można się...id | nazwa specyfikacji | wartosc specyfikacji 1 | pojemnosc silnika | 1.8 litra Cytat Ewentualnie jedna tabela na zasadzie np tutul, osoba kontaktowa, ... i specyfikacje, gdzie specyfikacje laczysz implodem czyli np ogloszenie nieruchomosci To już w ogóle jest kompletna porażka - zerowa możliwość operacji na danychid | tytul | Osoba kontaktowa | Specyfikacje 1 |Sprzedam | Jakis Pan/Pani | powierzchnia|40m2,ilosc pokoi|3,pietro|2 itp Do przechowywania takich danych dosyć dobrze powinna się spisać nierelacyjna baza danych (bo z takimi danymi mamy tutaj do czynienia). |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 11:59 |