AspNet projektowanie bazy danych MySql

0

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?

0

W relacji 1:wiele klucz obcy wpisujesz w tabli po stronie wiele.
W relacji wiele:wiele tworzysz osobną tabelę.

0

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?

0

Skoro dane są niezależne od użytkowników, to jaki jest cel istnienia tej dodatkowej tabeli?

0

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?
screenshot-20180723114809.png
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).
screenshot-20180723115254.png
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?

1

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; }
    }
1

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.

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