sql >> Database teknologi >  >> RDS >> Database

Tilføjelse af flere avancerede funktioner såsom administration af kategorier og afstemning om tråde og indlæg

I min anden artikel om et onlineforum nævnte jeg, at der kan være flere avancerede funktioner, der skal tilføjes:

  • Forum kategorier og underkategorier, hvor hver kategori har et emne, flere moderatorer og yderligere oplysninger som f.eks. oprettelsesdatoen for kategorien.
  • Et indlæg kan have et emne ud over indholdet.
  • Vi vil måske tillade brugere at stemme op og stem ned på tråde og indlæg.

For lettere at kunne overskue modellen har vi udarbejdet et eksempel på sådan et forum med kategorier, tråde, indlæg osv. Vi håber, at det gør det nemmere at forstå tingene:

Enheder fra del 1 er farvet i gult, og enheder fra del 2 er farvet i orange. Her er den aktuelle databasemodel efter de to første artikler:




Flere oplysninger om indlæg

I den anden artikel tilføjede jeg kun relationer til "status" for tråde og indlæg, men nu vil jeg gerne forbedre indlæggene med en yderligere detalje ud over blot simpelt indhold. Indtil videre vil jeg tilføje et "emne" for hvert indlæg, som kan være forskelligt fra "emnet" i tråden. Med "emnet" (tænk på emnelinjen på en e-mail eller emnet for en MMS-besked), kan vi vise en komprimeret version af indholdet – som de første linjer i en e-mail, der vises i Outlook, eller på din telefons post. Brugere kan også bruge et indlægs "emne" til at optage en kommentar på højt niveau som "jeg er uenig" og derefter lægge deres argumenter i kommentarsektionen af ​​indlægget. Dette er en dejlig enkel ændring af modellen.

Kategorier

Nu hvor vi har varmet os selv op, lad os tilføje et nyt koncept (entitet) til kategorisering af tråde og indlæg. Hver kategori vil blive defineret med et navn; hver kategori er oprettet af en bruger og vil have mindst én moderator blandt brugerne, plus et par andre attributter som de indlæg og tråde, vi allerede har. Vi vil gerne have kategorier og underkategorier, så vi vil tillade kategorier at henvise til andre (under-)kategorier.

Da jeg gerne vil have flere moderatorer på hver kategori, vil jeg lave en tabel for at linke kategorier til grupper af brugere og linke brugere til disse grupper. Denne tabel vil definere "grupper" af brugere, hvoraf den ene vil være "moderatorer", men i fremtiden kan dette udvides til andre typer grupper.

At stemme eller "synes godt om"

Personligt foretrækker jeg at "stemme op" eller "stemme ned" om noget i stedet for blot at "synes om" det (men jeg gætter på, at Mark Zuckerberg er uenig med mig i det). Jeg vil vælge at oprette en afstemningsmekanisme, som giver brugerne mulighed for at afgive en "stemme op" eller en "stemme ned". Vi kan vælge at afvise nedstemmer, når der ikke er op-stemmer, eller begrænse antallet af ned-stemmer, men det er op til applikationen at beslutte, databasen vil simpelthen holde styr på antallet af op- og nedstemmer.

Vi kan lave separate tabeller for afstemninger om tråde og stemmer på indlæg, men jeg vil beholde dem i samme tabel med valgfri fremmednøgler fra tråde og indlæg-tabellen. Derudover vælger jeg ikke at have afstemning på kategorier.

Formelt design

For nu afslutter det ændringerne på modellen, så vi kan se på det formelle design. Igen udvider vi den ERD, der blev oprettet i del 1 og 2. Ændringer, der er beskrevet i denne artikel og introduceret i modellen, er farvet i blåt.




Konklusion

Der er stadig yderligere forbedringer, der kunne foretages, men her har vi lavet vores database til et onlineforum til et ret komplet design - dette ville understøtte de fleste typiske online diskussionsfora.

Hvilke andre funktioner kræver dit onlineforum?

« Forrige del  


  1. Skalær UDF-inlining i SQL Server 2019

  2. Sådan gendannes MySQL-database fra .myd-, .myi-, .frm-filer

  3. SQL Server 2008 personsøgningsmetoder?

  4. Sammensæt feltværdi til streng i SQL Server