Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Powiązania pomiędzy tabelami
Forum PHP.pl > Forum > Przedszkole
Barcelona
Witam, planuje dla własnego użytku zrobić stronę z wszystkimi moimi filmami. Tak na własny użytek, żeby łatwiej się pracowało.
I zastanawiam się jak skonstruować bazę danych żeby tabele były powiązane ze sobą.

Np.będą dwie tabele: Filmy i Userzy.
I teraz jak Marcin wybierze sobie film o id:3 i 7 to żeby te filmy dopisały się do jego profilu, ale i również żeby w tabeli filmy widniało że Film 3 i 7 został wybrany przez Marcina.

Druga kwestia: Bezsensowne było by tworzenie osobnego pola w tabeli "user" dla każdego filmu jaki wybrał uzytkownik. Ale też nie chce wszystkiego pakować do jednego wora, ponieważ później chciałbym to wypisywać wszystko w tabeli, a jak wszystkie tytuły będą w jednym polu w MySQL to utworze tabelkę, ale tylko z jednym wierszem, w którym będzie cały ciąg tytułów. Chyba że jest jakiś sposób podzielenia, np. za pomocą przecinka ",".

Pozdrawiam Barcelona smile.gif
tehaha
stwórz dodatkową tabelę z powiązaniem użytkownika do filmu czyli zawierającą id filmu oraz id użytkownika
askone
Hej

Pytania:
  1. Czy tabela "Filmy" ma stanowić globalną listę dostępnych filmów czy też ma być listą Twoich filmów?
  2. Czy to że user "wybierze" sobie film oznacza, że go wypożyczył?


Pozdrawiam
Barcelona
Cytat
stwórz dodatkową tabelę z powiązaniem użytkownika do filmu czyli zawierającą id filmu oraz id użytkownika


Dobry pomysł, ale zastanawiam się nad jednym. Jeżeli w tej tabeli nie bedzie jeszcze usera o id: 4 to muszę robić zapytanie z INSERT, a jeżeli już jest to muszę robić UPDATE. Będę chyba najpierw musiał sprawdzać czy user znajduje się już w tej tabeli.

A jak rozwiązać problem rozpisywania w tabeli ?

Cytat
Czy tabela "Filmy" ma stanowić globalną listę dostępnych filmów czy też ma być listą Twoich filmów?
Czy to że user "wybierze" sobie film oznacza, że go wypożyczył?


1. Bedzie to lista filmów, które posiadam
2. Tak

P.S. Podejrzane pytania winksmiley.jpg
tehaha
nie UPDATE tylko caly czas insert np. filmy dla usera 4
user_id | movie_id
4 | 15
4 | 13
4 | 3


wtedy możesz łatwo na tym operować, jak chcesz pokazać wszystkie filmy tego usera to w jednym zapytaniu zrobisz JOIN i wyciągniesz wszystkie tytuły oraz dane użytkownika, łatwo też policzysz jego filmy

bo jakbyś je trzymał po przecinku to jak potem wyciągniesz wszystkie tytuły filmów? musiałbyś wyciągnąć ten rekord zrobić explode a potem dopiero wyciągnąć z tabeli filmy, a tak masz masz wszystko w jednym zapytaniu: wszystkie filmy i dane użytkownika
askone
Cytat(Barcelona @ 20.08.2010, 12:51:15 ) *
1. Bedzie to lista filmów, które posiadam
2. Tak


A więc moja propozycja to:
  • Oprócz standardowych kolumn w tablicy filmy dodaj tablicę userId - będzie ona służyła do zapamiętania informacji o użytkowniku, który wypożyczył dany film. Jak wiadomo tylko jeden w danej chwili może go wypożyczyć.
  • Możesz też dodać kolumny: Data_dodania, Data_wypożyczenia - możesz tam wpisywać dodatkowe informacje


Wtedy:
  • film jest dostępny gdy w kolumnie userId i Data_wypożyczenia nie mają wartości
  • film jest wypożyczony kiedy w kolumnie userId i Data wypożyczenia są wartości
  • Kiedy użytkownik oddaje film czyścisz obydwie kolumny
  • Kiedy wypożycza uzupełniasz


Ot cała filozofia smile.gif
everth
A może 3 tabele
Filmy - id, opis, cokolwiek
Właściciel = user_id,id_filmu
Wypożyczone = user_id,id_filmu,timestamp

Później wyświetlasz selektem tabelę Filmy w połączeniu z właścicielem i left joinem do wypożyczone (dodatkowo można wyliczać datę zwrotu)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.