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

Lav en mere avanceret model med bruger-, tråd- og indlægsstatusser

I min første artikel om et onlineforum nævnte jeg, at der måske er flere avancerede funktioner at tilføje:

  • Flere formelle detaljer om brugeren i stedet for et enkelt "navn" felt. Du vil måske have brugerens fornavn, efternavn og brugernavn eller kaldenavn. Et godt forum ville også give brugerne mulighed for at have et profilbillede, e-mail, roller, status (for at tillade brugere at blive blokeret) og andre oplysninger, såsom hvornår de sidst besøgte forummet.
  • Yderligere kontrol relateret til brugeroprettelse så vi kan spore, hvornår en ny bruger er oprettet, men før hans/hendes e-mailadresse er blevet bekræftet.
  • Forum kategorier og underkategorier, hvor hver kategori har et emne, flere moderatorer og yderligere information såsom oprettelsesdato for kategorien. Et emne for et indlæg ud over indholdet
  • Modererede opslag som skal godkendes af en moderator, før de er synlige for andre brugere. Indlæg og tråde ville have forskellige statusser som:venter på offentliggørelse, offentliggjort, rapporteret som spam, blokeret, ophævet.
  • Og så vil vi måske tillade brugere at stemme op og stem ned tråde og indlæg.

For forummet vil jeg bruge udtrykket "tråd" til at henvise til en samtale med potentielt flere indlæg relateret til tråden.




Jeg vil komme med en indledende kommentar; Jeg bruger generelt runde tal som 100 eller 1000 til at definere længden af ​​varchar-felter; Jeg foreslår ikke, at disse nødvendigvis er den passende størrelse, men jeg bruger dette som stenografi i stedet for at lade længden være udefineret (%). På den anden side bruger jeg af og til meget specifikke længder til felter som email og ip_address; 254 er den maksimale længde, som en e-mailadresse kan være i henhold til RFC-definitionerne, mens 45 er den maksimale længde, som en IPv6-adresse kan være.

Brugeroplysninger

I del 1 af vores artikelserie om opbygning af onlineforum var brugeroplysningerne meget begrænsede. Jeg vil forbedre de brugeroplysninger, som er gemt. Indtil videre vil moderation være meget grundlæggende:brugere vil enten være moderator eller ej. Vi vil muligvis oprette mere komplicerede modereringsregler relateret til kategorier og tråde senere.

Til status for brugere vil jeg oprette user_status tabel, så jeg kan genbruge den i en anden situation, selvom der er meget få statusser, såsom "EMAIL_NOT_VERIFIED", "VERIFIED" og "BLOCKED".

Brugeroprettelse

Jeg vil bruge brugerens status til at genkende brugere, der er i status "EMAIL_NOT_VERIFIED", efter at en bruger har oprettet deres konto, og en e-mail er blevet sendt til deres angivne e-mailadresse, men før de har klikket på bekræftelses-URL'en i e-mailen. Du kan endda blive sværere og have statusser som "EMAIL_VERIFICATION_TO_BE_SENT" og "EMAIL_VERIFICATION_RESENT", hvis nogle af disse trin håndteres af forskellige komponenter i dit system og ikke umiddelbart under oprettelse af bruger.

Tråde- og indlægsstatusser

Modererede indlæg skal godkendes af en moderator, før de er synlige for andre brugere. Indlæg og tråde ville have forskellige statusser som:venter på godkendelse, godkendt, rapporteret som spam, blokeret. For status for tråde og indlæg vil jeg vælge en mere fleksibel måde at håndtere statusser på ved at linke til status bord. Så skal applikationen vide, hvad hver værdi betyder i statustabellerne (hvis status ="GODKENDT", vises tråden), men jeg foretrækker dette frem for blot at gemme en tekst i thread og post tabeller. Vi vil have nogle få statusser, såsom "WAITING_FOR_APPROVAL", "GODKENDT", "AFVISET", "REPORTED_AS_SPAM" og "BLOKERET", og vi vil måske tilføje flere i fremtiden.

Med andre ord, en bruger opretter en ny tråd eller et nyt indlæg, og det sættes i status "NOT_APPROVED". Ikke godkendte tråde og indlæg vises ikke for de fleste brugere; moderatorer kan dog se ikke godkendte elementer og vælge "Godkend" eller "Afvis". Brugere kan markere en tråd eller et indlæg som spam, men det skal bekræftes af en moderator. Spamtråde og indlæg vises ikke til brugere.

Dette giver mig mulighed for at bruge status tabel for både tråde og indlæg, da status for begge disse burde have samme betydning. Jeg vil ikke misbruge status tabel for at angive brugernes status; Jeg tror ikke, det ville være et godt designvalg.

Formelt design

Så vi udvider den ERD, der blev oprettet i del 1. Jeg har farvet de tabeller, der blev oprettet i del 1-artiklen, i gul og farvet de nyligt tilføjede tabeller i orange, så det er nemmere at se tilføjelserne. Jeg har dog ikke markeret individuelle ændringer i tabeller.



Hvad nu?

Igen er der stadig yderligere forbedringer, der skal foretages, men her har vi taget et meget simpelt onlineforum og tilføjet flere nyttige nye funktioner.

I de næste dele vil jeg se på at tilføje andre funktioner såsom:

  • forum kategorier og underkategorier, hvor hver kategori har et emne, flere moderatorer og yderligere information såsom oprettelsesdato for kategorien. Et emne for et indlæg ud over indholdet
  • og så vil vi måske tillade brugere at stemme op og stemme tråde og indlæg ned.

Hvilke funktioner kræver dit onlineforum? Er der nogle funktioner, du vil have mig til at tage i betragtning, når jeg forbereder den næste del af denne serie? Hvis ja, så lad mig det vide.

« Forrige del Næste del »


  1. Beregn alder baseret på fødselsdato

  2. Få standardværdierne for tabelkolonner i Postgres?

  3. Hvordan løser man MySQL-tegnkodningsproblem?

  4. Indsætter i Oracle Nested Table i Java