Skocz do zawartości

Proszę o pomoc z utworzeniem schematu bazy


dMien

Rekomendowane odpowiedzi

Cześć,

Od kilku dni próbuję nauczyć się relacyjnych baz danych. Takie książkowe przykłady są proste (przynajmniej kiedy wszystko jest opisane), jednak gdy próbuję stworzyć własną bazę, to nie wiem jak się za to zabrać.

Dla celów edukacyjnych wymyśliłem bazę aplikacji do zarządzania nieruchomościami.

Czy moglibyście mi pomóc i rozpisać (zgodnie z postaciami normalnymi) tabele jakie będę potrzebował? Zgodnie z instrukcją w książce, podaję listę pytań, jakie muszę sobie zadać, by dobrze zaprojektować bazę danych. Takie oto wymyśliłem:

1. Jakie są dane kontaktowe potencjalnego klienta A zainteresowanego nieruchomością Z?

2. Które nieruchomości interesują potencjalnego klienta A?

3. Które nieruchomości wynajmuje klient B?

4. Które nieruchomości cieszą się największym zainteresowaniem?

5. Którzy potencjalni klienci są zainteresowani nieruchomością Z?

6. Jakie są dane kontaktowe klienta wynajmującego nieruchomość Z?

7. Za ile wynajmowany jest lokal Z?

8. Które nieruchomości były proponowane podczas rozmowy potencjalnemu klientowi B?

9. Po jakich cenach nieruchomości były proponowane klientowi B?

10. W jaki sposób nieruchomość Z została nabyta? (do wyboru: oferta bezpośrednia, aukcja komornicza, agencja nieruchomości)

Fajnie by było rozpisać te tabele w ten spobób:

Klienci (IdKlienta, NazwaFirmy, Imię, Nazwisko, Adres, Miasto, KodPocztowy)

zaznacząc boldem klucze podstawowe a kursywą klucze obce.

Czytałem, że dobrym zwyczajem jest tworzyć tabele słownikowe, gdzie będą zamieszczone np. sposoby nabycia nieruchomości.

W książce do PHP i MySQL przeczytałem jeszcze, że nie warto tworzyć kolumn, które będą częściowo puste, gdyż nie każdy rekord będzie posiadał daną wartość, np. opinia o nieruchomości. Zamiast tego powinno się utworzyć dodatkową tabelę i do niej się odwoływać.

Dla ułatwienia możemy przyjąć, że każda nieruchomość będzie miała nadany w realnym świecie, niepowtarzalny identyfikator.

Zdaję sobie sprawę, że proszę o niemało, ale być może dla profesjonalistów to nie więcej niż kilka minut, a ja siedzę nad tym trzeci dzień i nie jestem pewien czy dobrze projektuję.

Odnośnik do komentarza
Udostępnij na innych stronach

KLIENCI

-id_klienta

- nazwisko

- imie

- email

- tel

- itp dane adresowe i inne potrzebne

NIERUCHOMOSCI

- id_nieruchomosci

- nazwa

- rodzaj_nieruchomosci

- ulica

- miasto

- inne pola adresowe i opisowe nieruchomosci

NIERUCHOMOSCI_KLIENCI

- id

- id_klienta

- id_nieruchomosci

- status_transakcji (1 - zainteresowany, 2-wynajmujacy

- cena

- data

1. select * from klienci k join nieruchomosci_klienci nk on k.id_klienta=nk.id_klienta where nk.id_nieruchomosci=X and status_transakcji=2

2. select * from nieruchomosci n join nieruchomosci_klienci nk on n.id_nieruchomosci=nk.id_nieruchomosci where nk.id_klienta=X and status_transakcji=2

3. 2. select * from nieruchomosci n join nieruchomosci_klienci nk on n.id_nieruchomosci=nk.id_nieruchomosci where nk.id_klienta=X and status_transakcji=1

4. select id_nieruchomosci, count(id_nieruchomosci) as popularnosc from nieruchomosci_klienci where status_transakcji=1 group by id_nieruchomosci

5. analogicznie jak pkt 1

6. analogicznie jak pkt 1

7. select cena from nieruchomosci_klienci where id_nieruchomosci=X

nad resztą pomyśl sam. Pisałem z palce więc mogą się w kodzie zarzyć jakieś drobne błędy literowe.

www.sagomedia.pl - usługi SEO copywritingu i wartościowe, merytoryczne artykuły
Odnośnik do komentarza
Udostępnij na innych stronach

NIERUCHOMOSCI_KLIENCI

- id

- id_klienta

- id_nieruchomosci

- status_transakcji (1 - zainteresowany, 2-wynajmujacy

- cena

- data

W tej tabeli kolumna id jest zbędna gdyż klucz główny (unikalny) należny/można zdefiniować z połączenia kolumn: id_klienta + id_nieruchomosci Dzięki czemu jeden klient może mieć przypisanych kilka nieruchomości, ale nie mogą się one powtarzać.

Chyba, że przyjmiemy, iż dana nieruchomość może należeć do tego samego klienta kilka razy np kupił / sprzedał / ponownie kupił choć w praktyce ta sama nieruchomość była by raczej wystawiona ponownie, więc miała by inny ID ... to już są szczegóły indywidualne dla systemu ;)

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

masz rację, kolumna id w tej tabeli nie jest konieczna, ale z mojego doświadczenie wynika, że zawsze lepiej jak jest. Prościej wtedy wykonywać na niej różne operacje, gdy masz uchwyt do wiersza w postaci jednej unikalnej kolumny, a nie tylko z połączenie id_klienta i id_nieruchomosci

www.sagomedia.pl - usługi SEO copywritingu i wartościowe, merytoryczne artykuły
Odnośnik do komentarza
Udostępnij na innych stronach

Tylko pamiętaj, że kolumny id_klienta i id_nieruchomosci powinny mieć mechanizm autoinkrementacji oraz by przy przy skasowaniu danego rekordu została wstawiona tam unikalna globalnie liczba, a nie liczba o jedne większa niż ostatnia z aktualnie występującej w tej kolumnie :chatownik:

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności