Przegląd struktury bazy

0

Cześć, chciałem w ramach nauki spróbować napisać własne forum. Stworzyłem sobie bazę jednak chciałbym się dowiedzieć czy mogę coś poprawić? Skrypt można zobaczyć w załączniku.

Database.png

1

1.O co chodzi z tymi Division, Subdivision, ForumHistory i Action?
2.W jaki sensowny sposób chcesz wykorzystać tabelę OldPost?
3.CreationDate (tabela Topic), a nie CreateDate.
4.Personalnie lubię nazewnictwo IsClosed, IsCośtam - wyraźnie mówi, że chodzi o stan. Ew. wykorzystanie jednego set.
5.UserName (tabela AspNetUsers) powinno być wyżej - jest to pole z całą pewnością ważniejsze niż AccessFailedCount.
6.Dlaczego VoteUserId w tabeli PostVote zamiast po prostu UserId?
7.A co, jeśli jeden post będzie edytowany kilka razy przez wielu użytkowników? (pomijam już fakt, że to wtedy będzie bardziej forma StackOverflow niż forum).
8.Raportowania postów powinny mieć jakieś pole na wpisanie powodu raportu.

0
  1. Myślałem, żeby zrobić coś w rodzaju Kategoria, Dział, Poddział chociaż zdaję sobie sprawę, że kiepsko to brzmi. ForumHistory tutaj chciałem trzymać coś w stylu logów typu: użytkownik założył temat, administrator dodał kategorię, moderator usunął temat. Action to miały być rodzaje operacji dodanie kategorii itp.
  2. Chciałem tutaj trzymać starą zawartość posta, ale chyba lepiej będzie przenieść to do PostHistory albo stworzyć dodatkowe pole z kluczem obcym do tabeli, która będzie trzymała zawartość - jak uważasz?
  3. Dzięki.
  4. Faktycznie z poziomu bazy może być jaśniejsze takie nazewnictwo.
  5. Ta tabela jest wygenerowana automatycznie, na razie nie chciałem jej ruszać.
  6. Dzięki.
  7. Tutaj własnie chciałem wykorzystać tabelę PostHistory. Dzięki temu mógłbym zobaczyć, kto i co robił z postem. Co do edycji, to myślałem o tym, że np. moderator może edytować, a nie każdy użytkownik.
  8. Jak mogłem to przeoczyć...

Dzięki za pomoc, dziś/jutro postaram się wrzucić poprawioną wersję.

1
Degusto napisał(a):
  1. Myślałem, żeby zrobić coś w rodzaju Kategoria, Dział, Poddział chociaż zdaję sobie sprawę, że kiepsko to brzmi.

Em, a czym różniłoby się to od kategorii z możliwością tworzenia podkategorii?

ForumHistory tutaj chciałem trzymać coś w stylu logów typu: użytkownik założył temat, administrator dodał kategorię, moderator usunął temat.

I tutaj natrafiamy na pewną logiczną barierę - co należy wrzucać do ForumHistory, a co już jest PostHistory i dlaczego nie ma TopicHistory?
Jak już tak bardzo musisz mieć te dane (nie wiem po co, bo i tak możesz je wyciągnąć z innych tabel w bazie), to zrób sobie jedną zbiorczą Log(primary int Id, int UserId, string Message).
Lecz ponad wszystko - trzymaj się zasady you aren't gonna need it.

Action to miały być rodzaje operacji dodanie kategorii itp.

Log, to się nazywa log, a ta tabela Action jest tak w gruncie rzeczy zbędna.

Chciałem tutaj trzymać starą zawartość posta, ale chyba lepiej będzie przenieść to do PostHistory albo stworzyć dodatkowe pole z kluczem obcym do tabeli, która będzie trzymała zawartość - jak uważasz?

Sama tabela PostHistory(primary int Id, index int PostId, string PostContent, index datetime ChangeDate) wystarczy.

Tutaj własnie chciałem wykorzystać tabelę PostHistory. Dzięki temu mógłbym zobaczyć, kto i co robił z postem. Co do edycji, to myślałem o tym, że np. moderator może edytować, a nie każdy użytkownik.

No to przypuśćmy, że dwóch różnych moderatorów edytuje ten sam post.
Przypadki można namnażać :P

0

No ale z kategorią i podkategorią mamy tylko 2 poziomy, a ja chciałbym zrobić 3. Chyba, że coś źle zrozumiałem.

A nie mógłbym dodać w PostHistory, UserId, który określałby użytkownika wprowadzającego zmianę(no i usunięcie w Post pola EditorId)? Chociaż wtedy była by duplikacja w tabeli Log.

Interesuje mnie jeszcze rzecz. Powód usunięcia/przeniesienia posta/wątku. Jak najlepiej to zrobić?

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