![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 10.04.2014 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
Witam
Zaczynam swoją naukę z bazami danych ( MySQL ) i PHP. Na studiach mam do wykonania aplikacje internetowej rezerwacji biletów. Znam podstawy MySQL i PHP , lecz nie wiem czy dobrze zaprojektuje swoją bazę żeby była optymalna , nie było zbędnych tabel lub zbyt długich zapytań, lub też niepotrzebnych relacji . Zrobiłem taki " wstępny ' projekt jednak już wiem że nie bardzo jest . Proszę więc o pomoc. Nie wiem na jakiej zasadzie zrealizować seans, repertuar bieżącego dnia, jak rozmieścić tabele i relacje między nimi . Baza nie ma zawierać danych klienta - bez logowania tylko wpisywanie po prostu imienia i nazwiska + telefon i email podczas zakupu biletu. Nie wiem jak wziąć się za daty oraz godziny wyświetlania danego filmu / seansu . Czy robić osobne tabele ... Na godziny chyba by mogła być tabela i np stałe godziny seansów. Podobnie z miejscem zarezerwowanym - zrobić tabelę ( ID statusu, ID miejsca, status ) czy jakoś tak i zero jedynkowo ? miejsce zajęte/wolne ? Ale co wtedy z datą żeby się zwalniało po seansie żeby nie było zajęte na następny film . ![]() Proszę o pomysły , sugestie... Poprawienie schematu lub przedstawienie całej bazy jakby mogła wyglądać . |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 222 Pomógł: 34 Dołączył: 3.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli chodzi o seans, rezerwacje itp to ja bym to zrobił tak:
SEANS: - id - film_id - datetime REZERWACJA: - id - seans_id - sala_id - rzad - miejsce - person_id Person, movie, movie_type bym zostawił tak jak jest ale usunąłbym data, time, miejsce, rzad. Mam nadzieje, że pomoże ![]() -------------------- Always look on the bright side of life ;-)
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 186 Pomógł: 18 Dołączył: 2.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem na jakiej zasadzie zrealizować seans, repertuar bieżącego dnia, jak rozmieścić tabele i relacje między nimi . Baza nie ma zawierać danych klienta - bez logowania tylko wpisywanie po prostu imienia i nazwiska + telefon i email podczas zakupu biletu. Tak jak napisał Ghost_78 musisz rozdzielić rezerwację od seansu. Tak jak w życiu Rezerwację masz na Seans więc są to dwie osobne tabele. Dane klienta jednak przechowujesz w tabeli Person więc jest ok. wystarczy podać np email aby wyszukać osobę. Nie wiem jak wziąć się za daty oraz godziny wyświetlania danego filmu / seansu . Czy robić osobne tabele ... Na godziny chyba by mogła być tabela i np stałe godziny seansów. Podobnie z miejscem zarezerwowanym - zrobić tabelę ( ID statusu, ID miejsca, status ) czy jakoś tak i zero jedynkowo ? miejsce zajęte/wolne ? Ale co wtedy z datą żeby się zwalniało po seansie żeby nie było zajęte na następny film . Osobna tabela na godziny wydaje się złym pomysłem lepiej do seansu dodać pełną datę wraz z godziną rozpoczęcia, id filmu. Wtedy rezerwację robisz na id_seansu i miejsce. Dzięki temu nie musisz pamiętać o statusie. Jeżeli rekord jest w bazie to jest zarezerwowane a jeżeli nie ma to można dokonać rezerwacji. --edit 1. Osobiście datę i godzinę seansu trzymałbym w jednej kolumnie. 2. W seansie nie trzymaj nazwy filmu a jego ID 3. W tabeli Sala trzymasz movie ID. Masz jeden film przypisany do sali? 4. Nazwy tabel masz na zmianę raz po polsku raz po angielsku - zdecyduj się ![]() 5. W tabeli Miejsce brakuje informacji o sali ![]() Tak na początek ![]() Ten post edytował ghost1511 14.04.2014, 07:29:22 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 10.04.2014 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
o coś takiego chodziło ?
data i czas razem z seansem np 2014-04-17 13:40 ![]() a w jaki sposób oznaczać że miejsce jest np już zarezerwowane ? żeby ktoś nie mógł zarezerwować tego samego miejsca ? bo nie bardzo rozumiem teraz. Wpis w bazie jak doda " line " " place " to to w jakiś sposób sprawdzać czy jest taki wpis w bazie już czy dodać jeszcze jakąś tabelę - wolne/zarezerwowane ( 0/1 ) ? i jeśli sprawdzać to w jaki sposób bo nie mam za bardzo pomysłu ... Aha, a jeszcze sprawa zwolnienia miejsca po seansie ? Usuwanie z bazy . To jakiś dodatkowy kod napisać który czyści bazę ? tzn zwalnia "line " i " place " ? A gdybym chciał zrobić np dodatkowo archiwizację - żeby można było sprawdzać np na koniec miesiąca ile było kupionych biletow itp itd Ten post edytował spiewak69 17.04.2014, 13:32:55 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 186 Pomógł: 18 Dołączył: 2.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
No masz ID seansu i Masz id Miejsca? Tworzysz tabelę w której przechowujesz unikalnie polaczenie (id_seansu, id_miejsca). Przed dodaniem wyszukujesz rekordu w tej tabeli, jeżeli nie ma rekordu to oznacza brak rezerwacji i możesz dodać rezerwację( dodając rekord ). Nie musisz pamiętać o usuwaniu rekordów ponieważ id_seansu jest unikalne.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 10.04.2014 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
Jeszcze takie pytanie
Mam jakis film movie_name np SEKSMISJA ![]() ma on sobie tam jakiś opis rok itd - mało ważne, no i ma swój ID . SEANCE - zawiera tytuł filmu ( poprzez jego ID ) oraz datę i godzinę Tabela BOOKING zawiera ID tego seansu, osobę , salę ,rząd i miejsce . Teraz zrobić jeszcze jedną tabelę z ID seansu i ID miejsca i rzędu w danej sali - te które będą zarezerwowane ? i wg niej sprawdzać dostępność wolnych miejsc ? I czy w tabeli SEANCE nie powinienem jeszcze zrobić ID sali ? w której on będzie ? Ten post edytował spiewak69 17.04.2014, 15:05:43 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 186 Pomógł: 18 Dołączył: 2.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Seans wyświetlany jest w sali. Więc jak najbardziej do tabeli SEANSE dorzucasz id_sali.
Zauważ konstrukcję pierwszego zdania. W taki sposób "na chłopski rozum" dojdziesz do tego co gdzie powinno być ![]() edit: Unikasz w ten sposób przechowywania tych samych danych w wielu wystąpieniach: O co chodzi? Twój pierwszy pomysł. Kod ID_SEANSU ID_SALI ID_UZYTKOWNIKA 10 | 20 | 123 10 | 20 | 124 Jak widać trzymałbyś te same dane w wielu rekordach. Dodatkowo żeby znaleźć w jakiej sali jest seans musiałbyś szukać w tabeli rezerwacji ![]() Ten post edytował ghost1511 18.04.2014, 11:53:12 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 13:16 |