Database
 sql >> Baza danych >  >> RDS >> Database

Dodawanie bardziej zaawansowanych funkcji, takich jak zarządzanie kategoriami i głosowanie w wątkach i postach

W moim drugim artykule o forum internetowym wspomniałem, że może być dodanych kilka bardziej zaawansowanych funkcji:

  • Forum kategorie oraz podkategorie, w których każda kategoria ma temat, kilku moderatorów i dodatkowe informacje, takie jak data utworzenia kategorii.
  • Post może mieć temat oprócz treści.
  • Możemy chcieć umożliwić użytkownikom głosowanie i zagłosuj w wątkach i postach.

Aby móc łatwiej ogarnąć model, przygotowaliśmy przykład takiego forum z kategoriami, wątkami, postami itp. Mamy nadzieję, że ułatwi to zrozumienie rzeczy:

Elementy z Części 1 są pokolorowane na żółto, a elementy z Części 2 są pokolorowane na pomarańczowo. Oto aktualny model bazy danych po pierwszych dwóch artykułach:




Więcej szczegółów na temat postów

W drugim artykule dodałem relacje tylko do „statusu” dla wątków i postów, ale teraz chciałbym wzbogacić posty o dodatkowe szczegóły poza zwykłą treścią. Na razie do każdego postu dodam „temat”, który może różnić się od „tematu” wątku. Za pomocą „tematu” (pomyśl o temacie wiadomości e-mail lub temacie wiadomości MMS) możemy wyświetlić skróconą wersję treści – na przykład pierwsze wiersze wiadomości e-mail, które są wyświetlane w Outlooku lub na telefonie Poczta. Ponadto użytkownicy mogą użyć „tematu” posta, aby zarejestrować komentarz wysokiego poziomu, taki jak „Nie zgadzam się”, a następnie umieścić swoje argumenty w sekcji komentarzy posta. To przyjemna prosta zmiana modelu.

Kategorie

Teraz, gdy się rozgrzaliśmy, dodajmy nową koncepcję (podmiot) do kategoryzacji wątków i postów. Każda kategoria będzie zdefiniowana nazwą; każda kategoria jest tworzona przez użytkownika i będzie miała co najmniej jednego moderatora wśród użytkowników oraz kilka innych atrybutów, takich jak posty i wątki, które już mamy. Chcemy kategorii i podkategorii, więc pozwolimy kategoriom odnosić się do innych (pod) kategorii.

Ponieważ chciałbym mieć wielu moderatorów w każdej kategorii, stworzę tabelę, aby łączyć kategorie z grupami użytkowników i łączyć użytkowników z tymi grupami. Ta tabela zdefiniuje „grupy” użytkowników, z których jeden będzie „moderatorami”, ale w przyszłości można ją rozszerzyć o inne typy grup.

Głosowanie lub „polubienia”

Osobiście wolę „głosować w górę” lub „odrzucać” coś, niż po prostu to „lubić” (ale myślę, że Mark Zuckerberg się ze mną nie zgadza). Zdecyduję się stworzyć mechanizm głosowania, który pozwoli użytkownikom oddać „głos na górę” lub „oddanie głosu”. Możemy zdecydować się na odrzucenie głosów w dół, gdy nie ma głosów za, lub ograniczyć liczbę głosów za, ale to zależy od aplikacji, baza danych będzie po prostu śledzić liczbę głosów w górę i w dół.

Możemy utworzyć oddzielne tabele dla głosów na wątki i głosów na posty, ale zachowam je w tej samej tabeli z opcjonalnymi kluczami obcymi z tabeli wątków i postów. Ponadto decyduję się nie głosować na kategorie.

Projekt formalny

Na razie jest to podsumowanie zmian w modelu, więc możemy przyjrzeć się formalnemu projektowi. Ponownie rozszerzamy ERD, który został stworzony w częściach 1 i 2. Zmiany opisane w tym artykule i wprowadzone do modelu są pokolorowane na niebiesko.




Wniosek

Wciąż można wprowadzić dodatkowe ulepszenia, ale tutaj przekształciliśmy naszą bazę danych dla forum internetowego w całkiem kompletny projekt – obsługuje on większość typowych internetowych forów dyskusyjnych.

Jakich innych funkcji wymaga Twoje forum internetowe?

« Poprzednia część  


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Śledź wydajność bazy danych dzięki Uptime Infrastructure Monitor

  2. Niespodzianki wydajnościowe i założenia :Arbitralne TOP 1

  3. Aspekty ciągów w .NET

  4. Konfigurowanie Service Broker do przetwarzania asynchronicznego

  5. 5 sposobów na wyświetlenie tymczasowych tabel za pomocą T-SQL