Mam w bazię danych MySql tabelę użytkowników(Users) i tabelę Cards. W asp.net za pomocą entity framework muszę wczytać dla każdego użytkownika wszystkie rekordy tabeli Cards. I teraz pytanie czy lepiej zostawić tabele Users i Cards bez relacji (bo i tak wszystkie rekordy w Cards są przypisane do każdego użytkownika) czy może stworzyć osobną tabelę gdzie będę łączył w relacje wszystkie rekordy Cards z każdym użytkownikiem?
- Rejestracja:ponad 7 lat
- Ostatnio:ponad 6 lat
- Postów:28
To wiem, chodzi o to że jak mam pewne dane (z tabeli Card) które muszą być dostępne dla każdego użytkownika mojej aplikacji to czy tworzyć właśnie taką relację wiele do wielu w osobnej tabeli( i przy rejestracji przypisywać mu relację do każdego rekordu Card) czy może zostawić te dwie tabele bez relacji i po prostu odczytywać dane bezpośrednio z tabeli Card nie patrząc na użytkowników?
- Rejestracja:ponad 7 lat
- Ostatnio:ponad 6 lat
- Postów:28
To może inaczej. Załóżmy, że robię sobie bloga i na stronie głównej muszę wczytać z bazy danych posty takie same dla każdego użytkownika. Dodatkowo użytkownik musi mieć możliwość przeglądania postów napisanych przez niego. W tym drugim przypadku mam tabelę użytkowników którą łączę relacją jeden do wielu z tabelą posty.
W jaki sposób mogę przechowywać w bazię danych te posty które są wyświetlane dla każdego użytkownika mojego bloga?
Mógłbym połączyć te tabele relacją wiele do wielu, ale wtedy przy tworzeniu nowego użytkownika musiałbym łączyć go z każdym rekordem tabeli publicPosts(relacja w tabeli X).
Czy może lepiej zostawić tabelę publicPosts bez relacji z Userami i po prostu za pomocą np entity framework odczytywać rekordy i wyświetlać je odpowiednio na stronie głównej?
- screenshot-20180723114809.png (49 KB) - ściągnięć: 83
- screenshot-20180723115254.png (33 KB) - ściągnięć: 59
- screenshot-20180723114409.png (42 KB) - ściągnięć: 92

- Rejestracja:około 9 lat
- Ostatnio:3 dni
- Lokalizacja:Polska, Poznań
- Postów:92
2 Tabele Users, Posts połączone jeden-do-wielu w zupełności wystarczą.
Jak chcesz posty na stronę główną niezaleznie od użytkownika to po prostu ściągasz tylkoz tabeli Posts
Select * from Posts;
Jak chcesz tylko posty konkretnego użytkownika to po jego kluczu obcym
Select * from Posts where Posts.UserId = "id użytkownika"
Jeśli chodzi o EF to +/- tak (pisane z ręki):
public class Post
{
public int Id { get; set; }
(..)
public User User { get; set; }
}
public class User
{
public int Id { get; set; }
(..)
public ICollection<Post> Posts { get; set; }
}

- Rejestracja:ponad 10 lat
- Ostatnio:7 miesięcy
- Postów:597
Posts może być również jednym bytem, które zawiera odniesienie do tabeli Users. Dodatkowo powstaje tabela PostTypes, w której przechowujesz typ: prywatny, publiczny. Publiczne mają wartość null w polu klucza obcego do tabeli Users. Rozważ, że w przyszłości możesz chcieć określone posty wyświetlać publicznie, prywatnie, dla określonego grona odbiorców, widoczne tylko dla wujków, osób powyżej 20 roku życia, widoczne tylko dla osób z uzależnieniem alkoholowym etc.