Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]Powiązania pomiędzy tabelami
Barcelona
post
Post #1





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

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


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
Go to the top of the page
+Quote Post
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


stwórz dodatkową tabelę z powiązaniem użytkownika do filmu czyli zawierającą id filmu oraz id użytkownika
Go to the top of the page
+Quote Post
askone
post
Post #3





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

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


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


--------------------
Kliknij jeśli moja odpowiedź Ci pomogła.
askone.pl
Go to the top of the page
+Quote Post
Barcelona
post
Post #4





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

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


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
Go to the top of the page
+Quote Post
tehaha
post
Post #5





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


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

Ten post edytował tehaha 20.08.2010, 12:02:46
Go to the top of the page
+Quote Post
askone
post
Post #6





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

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


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


--------------------
Kliknij jeśli moja odpowiedź Ci pomogła.
askone.pl
Go to the top of the page
+Quote Post
everth
post
Post #7





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


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)


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 02:50