sql >> Database >  >> RDS >> Database

Een basisgegevensstructuur modelleren om gebruikers, discussielijnen en berichten te beheren

Een online discussieforum is een site waar mensen kan gesprekken hold bevatten in de vorm van geposte berichten . Op discussieforums kunnen gesprekken plaatsvinden wanneer mensen niet online zijn, en berichten kunnen tijdelijk worden gearchiveerd. Afhankelijk van de opzet van het forum, moet een bericht mogelijk ook worden goedgekeurd door een moderator voordat het zichtbaar wordt voor andere gebruikers. Forums hebben een specifieke reeks termen, bijvoorbeeld een enkel gesprek wordt over het algemeen een "thread" genoemd. Discussies kunnen worden beantwoord door zoveel mensen als ze willen. De meeste forums vereisen dat gebruikers zich registreren en vervolgens inloggen om berichten te plaatsen. Op de meeste forums hoeven gebruikers echter niet in te loggen om bestaande berichten te lezen.

Dit zijn algemene vereisten voor een websiteforum , dus laten we werken aan het maken van een databasemodel, te beginnen met een basisforumconfiguratie die we later kunnen uitbreiden.

Entiteiten

Zoals eerder vermeld, voeren mensen gesprekken in de vorm van geposte berichten die zijn gegroepeerd in gesprekken. De database moet dus informatie over mensen ondersteunen of gebruikers , gesprekken of threads en berichten of berichten .

Voor het online forum moeten gebruikers worden aangemaakt – het kan nodig zijn om gebruikers toe te staan ​​hun gegevens te bewerken nadat ze zijn aangemaakt, maar het is waarschijnlijk niet nodig om het verwijderen van gebruikers toe te staan. Gebruikers zullen conversaties of threads maken, meestal door een eerste bericht op het forum te plaatsen in plaats van expliciet een conversatie te creëren, maar het kan nodig zijn om beide mogelijkheden te ondersteunen. Discussies bevatten berichten die door gebruikers zijn gemaakt.

Functionaliteit

Het plaatsen van berichten is de belangrijkste functionaliteit van het online forum . Moeten gebruikers berichten kunnen bewerken nadat ze zijn gepost? Moeten gebruikers berichten kunnen verwijderen nadat ze zijn gepost? Het antwoord op beide is waarschijnlijk ja.

Relaties

Berichten zijn gekoppeld aan discussielijnen en berichten worden gemaakt door gebruikers, dus er zal een gedefinieerde relatie zijn tussen gebruikers en berichten. Discussies worden gemaakt door gebruikers, dus je moet daar een relatie opslaan (als een gebruiker bijvoorbeeld is verbannen van het forum, wil je misschien alle discussies en berichten verwijderen die die gebruiker heeft gemaakt).

Nu u de entiteiten . kent en relaties , bent u klaar om een ​​model van de database op te bouwen, en dat zou slechts enkele minuten moeten duren. Dit is waar tools van pas komen.

Databasemodel

Laten we eens kijken naar Vertabelo om het online discussieforum voort te zetten.

Maak een model voor het online forum en begin met het toevoegen van de entiteiten die gebruikers, discussielijnen en berichten vertegenwoordigen. Vertabelo herinnert u eraan dat u voor elke tabel primaire sleutels moet definiëren; Ik raad aan om id te gebruiken kolommen, omdat dat u meer potentiële flexibiliteit geeft (en u niet bindt aan de naam van de gebruiker als de primaire sleutel of andere valkuilen). Voeg vervolgens de relaties . toe die we al eerder beschreven. Ik heb een wachtwoord (in gehashte vorm) toegevoegd voor de gebruiker om het inloggen van gebruikers te beheren.

Nu krijg je iets dat er ongeveer zo uitziet:




U zult zien dat er tijdstempels zijn met de datum/tijd van het maken van elke rij, zodat die informatie op het forum kan worden weergegeven ("Gebruiker sinds 2 februari 2014", "Datum geplaatst:24 december 2014", enz. ).

Als u een gemodereerde . krijgt online discussieforum waarin berichten moeten worden goedgekeurd door een moderator voordat ze zichtbaar worden voor andere gebruikers, voeg dan een statusitem toe aan discussielijnen en berichten, zodat de toepassing kan beslissen of de discussielijnen en bijbehorende berichten zijn beoordeeld en goedgekeurd. Met een status kunnen andere gebruikers discussielijnen en berichten markeren als spam of ongepast.

Ik hoop dat je al kunt gaan nadenken over verbeteringen. Als u bijvoorbeeld formele details over de gebruiker nodig heeft, wilt u in plaats van een enkel "naam"-veld misschien hun voornaam, achternaam en gebruikersnaam of bijnaam. En een post kan een onderwerp hebben naast de inhoud, maar ik denk dat het onderwerp van de post teruggekoppeld is naar de thread, dus dat is misschien niet nodig.

  Volgend deel »

  1. Regels voor het implementeren van TDD in het oude project

  2. Hoe genereer je een reeks getallen tussen twee getallen?

  3. Een Excel-document maken vanuit een Java-programma met behulp van Apache POI

  4. Gastgebruiker wachtwoord in 11i/R12