Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Projekt bazy danych
symonides
post
Post #1





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 12.11.2010

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


Cześć,
mam do zaprojektowania bazę danych, która będzie tyczyła się nieruchomości, czyli np. domy, mieszkania, działki. Każdy z tych typów nieruchomości ma jakąś część danych wspólną, np. kraj, województwo, miasto, cenę, itp. Czyli to by była tabela główna o przykładowej nazwie realestates. Co dalej ? Każdy następny typ to kolejna tabela (czyli osobna na dodatkowe informacje o mieszkaniach, domach, czy działek)? Wydaje mi się to troszkę niewygodne, bo gdy dojdzie kolejny typ, np. magazyny to trzeba dodać kolejną tabelę + oczywiście jakieś zmiany w kodzie. Drugi pomysł to prócz tabeli realestates, tabela details, która będzie przechowywać wszystko to co miało być w tych dodatkowych tabelach (np. kolumna media - tylko działki, piwnica - tylko mieszkania, itd. w jednej tabeli).

Dodam, że operacje będą wykonywane na kilku/kilkunastu tysiącach rekordów.

Który pomysł jest waszym zdaniem lepszy? Może macie jakieś propozycje?

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





Grupa: Zarejestrowani
Postów: 42
Pomógł: 3
Dołączył: 14.02.2012

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


Wyobraźmy sobie, że mamy aplikację biura nieruchomości. Pracownik ma ekran dodawania nowej pozycji i tam między innymi listę wybieraną "typ nieruchomości".
Przy tworzeniu osobnej tabeli dla każdego typu, z góry musiałbyś założyć, która pozycja odpowiada danej tabeli, a listę wybieraną uzupełnić ręcznie w aplikacji. Nie dość, że będzie przy tym dużo zabawy, to w przypdku, gdy pracownik zażyczy sobie dodania kolejnego typu, będziesz musiał powielać żmudne czynności.

Nie łatwiej by było, żeby lista wybierana uzupełniała się sama korzystając z danych z tabeli, a przy dodaniu nowego typu wystarczyłoby wykonać tylko jeden INSERT?

Łatwiej, dlatego są relacje.

TYPE
----------------
id_type PK
type_name

REALESTATES
----------------
id_rel PK
id_type FK - tutaj zdefiniowany jest typ nieruchomości; gdybyś chciał określić typ danej nieruchomości, wykonujesz złączenie tabel (poniżej)
id_city FK
price
surface
...

  1. SELECT r.id_rel, t.type_name FROM REALESTATES r
  2. JOIN TYPE t ON r.id_type = t.id_type


W samej aplikacji listę wybieraną można zdefiniować jako pętlę wybierającą wszystkie dane z tabeli TYPE. Dla użytkownika widoczna jest kolumna type_name, a dla aplikacji kolumna id_type przekazywana przez np. $_POST.
Dla użytkownika, który będzie mógł tylko oglądać aplikację (np. klient biura) też możesz wyrzucić wszystko na ekran za pomocją pętli (np. menu, w którym pozycjami są rodzaje nieruchomości, jeżeli mają być to elementy graficzne, możesz w bazie przypisać ścieżkę grafiki do danego typu nieruchomości), a jego wybór przekazywać do aplikacji przy pomocy $_GET (tylko pole id_type) i potem w aplikacji używać powyższego select-a modyfikując go o wymagane kolumny i dodając przy tym warunek WHERE dla odpowiedniego id_type.
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: 26.12.2025 - 05:44