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

Modellering af en grundlæggende datastruktur til at administrere brugere, tråde og indlæg

Et online diskussionsforum er et websted, hvor folk kan holde samtaler i form af indsendte beskeder . Diskussionsfora tillader samtaler at finde sted, når folk ikke er online, og beskeder kan midlertidigt arkiveres. Afhængigt af forummets opsætning skal en besked muligvis også godkendes af en moderator, før den bliver synlig for andre brugere. Fora har et specifikt sæt af udtryk, for eksempel omtales en enkelt samtale generelt som en "tråd". Tråde kan besvares af så mange mennesker, som vil. De fleste fora kræver, at brugere registrerer sig og efterfølgende logger ind for at sende beskeder. Men på de fleste fora behøver brugere ikke at logge ind for at læse eksisterende beskeder.

Disse er almindelige krav til et webstedsforum , så lad os arbejde på at lave en databasemodel, der starter med en grundlæggende forumopsætning, som vi kan udvide senere.

Enheder

Som tidligere nævnt holder folk samtaler i form af postede beskeder, der er grupperet i samtaler. Så databasen skal understøtte information om personer eller brugere , samtaler eller tråde og beskeder eller indlæg .

Til online-forumet skal der oprettes brugere – det kan være nødvendigt at give brugerne lov til at redigere deres detaljer, efter de er blevet oprettet, men der er sandsynligvis ikke behov for at tillade sletning af brugere. Brugere vil oprette samtaler eller tråde, generelt ved at sende en første besked på forummet, i stedet for eksplicit at oprette en samtale, men det kan være nødvendigt at understøtte begge muligheder. Tråde vil indeholde indlæg, som er oprettet af brugere.

Funktionalitet

Udsendelse af beskeder er hovedfunktionaliteten i online-forummet . Skal brugere være i stand til at redigere beskeder, efter de er blevet sendt? Skal brugere være i stand til at slette beskeder efter udsendelse? Svaret på begge er sandsynligvis ja.

Relationer

Indlæg er linket til tråde, og indlæg oprettes af brugere, så der vil være et defineret forhold mellem brugere og indlæg. Tråde oprettes af brugere, så du bør gemme en relation der (hvis en bruger f.eks. er udelukket fra forummet, vil du måske fjerne alle de tråde og indlæg, som brugeren har oprettet).

Nu hvor du kender entiteterne og forhold , er du klar til at opbygge en model af databasen, og det bør kun tage minutter. Det er her, værktøjer kommer til nytte.

Databasemodel

Lad os tage et kig på Vertabelo for at fortsætte online diskussionsforum.

Opret en model til onlineforummet og begynd at tilføje enheder repræsenterer brugere, tråde og indlæg. Vertabelo vil minde dig om, at du skal definere primærnøgler for hver tabel; Jeg anbefaler at bruge id kolonner, da det vil give dig mere potentiel fleksibilitet (og vil ikke binde dig til navnet på brugeren som den primære nøgle eller andre faldgruber). Tilføj derefter relationer som vi allerede har beskrevet tidligere. Jeg har tilføjet en adgangskode (i hashed form), så brugeren kan kontrollere brugernes login.

Nu ender du med noget, der ser nogenlunde sådan ud:




Du vil se, at der er tidsstempler med datoen/tidspunktet for oprettelsen af ​​hver række, så disse oplysninger kan vises på forummet ("Bruger siden 2. februar 2014", "Senddato:24. december 2014" osv. ).

Hvis du skal have en modereret online diskussionsforum, hvor meddelelser skal godkendes af en moderator, før de bliver synlige for andre brugere, så skal du tilføje et statuselement til tråde og indlæg, så ansøgningen kan afgøre, om trådene og tilhørende indlæg er blevet gennemgået og godkendt. En status vil også tillade andre brugere at markere tråde og indlæg som spam eller upassende.

Jeg håber, at du allerede nu kan begynde at tænke på forbedringer. Hvis du f.eks. har brug for formelle oplysninger om brugeren, i stedet for et enkelt "navn"-felt, vil du måske have deres fornavn, efternavn og brugernavn eller kaldenavn. Og et indlæg kan have et emne ud over indholdet, men jeg tror, ​​at emnet for indlægget er linket tilbage til tråden, så det er måske ikke nødvendigt.

  Næste del »

  1. Hvilke forskellige typer begrænsninger er tilgængelige i SQL Server - SQL Server / T-SQL vejledning del 50

  2. Bevarer ORDER BY i SELECT INTO

  3. Hvad er betydningen af ​​1/1/1753 i SQL Server?

  4. Undgå disse 4 almindelige DBA-fejl