Problem z połączeniem tabel relacjami.

0

Witam. Otóż mam tabelę Uzytkownik z id, imie, nazwisko itp. Teraz mam tabele Wiadomości z kolumnami: od_kogo, do_kogo, data_wysłania, data_odbioru.
Otóż chciałbym aby w tabeli Wiadomości były przechowywane wiadomości jednego użytkownika do drugiego... Czy jeżeli połączę je relacjami 1-wiele dwa razy tak, żeby w tabeli Wiadomości pojawiły się dwa klucze obce z tabeli Uzytkownik, to będzie to poprawne? Wtedy w tabeli Wiadomości będę miał id od kogo jest wiadomość i do kogo jest wiadomość... Czy moje rozumowanie jest poprawne? To samo pytanie w przypadku tabeli Znajomi i tabeli Uzytkownik. Jeden użytkownik może mieć drugiego jako znajomego. Czy połączenie tych dwóch tabel znowu relacjami 1-wiele dwa razy jest poprawne? W tabeli Znajomi będę miał wtedy id dwóch użytkowników.
Bardzo liczę na pomoc. Z góry dziękuję:)

1

Jak najbardziej poprawne. Co gorsza - inaczej się nie da...

0

No dobrze tylko teraz mam pytanie odnośnie pewnego zapytania. Oto schemat bazy danych.
baza danych

Jeżeli wstawię dwóch użytkowników do tabeli profil, jeden o id=1, drugi o id=2. Użytkownik z id=1 zaprosi użytkownika z id=2 do grona znajomych... Kolejność będzie taka w tabeli Znajomi:
ZnajomiId UzytkownikId1 UzytkownikId2
1 1 2

Teraz wyobraźmy sobie, że Użytkownik o id2 będzie chciał zobaczyć kto z jego znajomych ostatnio dodał nowe zdjęcia... Jak będzie wyglądało zapytanie? Zauważcie, że gdy to użytkownik o id2 będzie chciał dodać do znajomych nowego użytkownika np o id3 to w tabeli pojawi się dodatkowy rekord i tabela Znajomi będzie wyglądała następująco:
ZnajomiId UzytkownikId1 UzytkownikId2
1 1 2
2 2 3

0
select * -- wybierz kolumny jakie ci trzeba
from 
(
  select Profil_id1 from Znajomi where Profil_id2 = @userId
  union all
  select Profil_id2 from Znajomi where Profil_id1 = @userId
) as P
inner join Galeria G on P.Profil_id1 = G.Profil_id
inner join Galeria_has_Zdjecie GZ on G.Galeria_id = GZ.Galeria_id
inner join Zdjecie Z on GZ.Zdjecie_id = Z.Zdjecie_id
where Z.Data_dodania > now - 4 days -- nie wiem jak definiujesz ostatnio dodał
0

No np 5 osób, które ostatnio dodały nowe zdjęcia... Właśnie nie wiedziałem jak rozwiązać ten problem, że id w tabeli Znajomi mogą się zamienić miejscami. Bo jeżeli bym wziął where profil_id1 = @userId, to ominąłbym tą drugą kolumnę, gdzie ktoś też może być znajomym użytkownika id1, tylko nie użytkownik id1 wysłał zaproszenie lecz użytkownik np id2. Chyba wiesz o co mi chodzi (trudno to trochę wytłumaczyć:P), bo użyłeś union, a ja o tym składniku zapytania zapomniałem:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1