sql >> Databasteknik >  >> RDS >> Database

Modellera en grundläggande datastruktur för att hantera användare, trådar och inlägg

Ett diskussionsforum online är en webbplats där människor kan hålla konversationer i form av postade meddelanden . Diskussionsforum tillåter konversationer att äga rum när människor inte är online, och meddelanden kan tillfälligt arkiveras. Beroende på foruminställningen kan ett meddelande också behöva godkännas av en moderator innan det blir synligt för andra användare. Forum har en specifik uppsättning termer, till exempel kallas en enskild konversation vanligtvis som en "tråd". Trådar kan besvaras av så många som vill. De flesta forum kräver att användare registrerar sig och sedan loggar in för att skicka meddelanden. Men på de flesta forum behöver användare inte logga in för att läsa befintliga meddelanden.

Dessa är vanliga krav för ett webbplatsforum , så låt oss arbeta med att skapa en databasmodell som börjar med en grundläggande foruminställning som vi kan utöka senare.

Enheter

Som nämnts tidigare håller människor konversationer i form av postade meddelanden som är grupperade i konversationer. Så databasen behöver stödja information om människor eller användare , konversationer eller trådar och meddelanden eller inlägg .

För onlineforumet kommer användare att behöva skapas – det kan vara nödvändigt att tillåta användare att redigera sina uppgifter efter att de har skapats, men det finns förmodligen inget behov av att tillåta radering av användare. Användare kommer att skapa konversationer, eller trådar, vanligtvis genom att posta ett första meddelande på forumet, snarare än att uttryckligen skapa en konversation, men det kan vara nödvändigt att stödja båda möjligheterna. Trådar kommer att innehålla inlägg som skapas av användare.

Funktionalitet

Inlägg av meddelanden är huvudfunktionen i onlineforumet . Ska användare kunna redigera meddelanden efter att de har lagts upp? Bör användare kunna ta bort meddelanden efter att de har skrivit? Svaret på båda är förmodligen ja.

Relationer

Inlägg är länkade till trådar och inlägg skapas av användare, så det kommer att finnas en definierad relation mellan användare och inlägg. Trådar skapas av användare så du bör lagra en relation där (om en användare till exempel är avstängd från forumet, kanske du vill ta bort alla trådar och inlägg som den användaren skapade).

Nu när du känner till entiteterna och relationer , är du redo att bygga upp en modell av databasen, och det bör bara ta några minuter. Det är här verktygen kommer väl till pass.

Databasmodell

Låt oss ta en titt på Vertabelo för att fortsätta diskussionsforumet online.

Skapa en modell för onlineforumet och börja lägga till entiteterna representerar användare, trådar och inlägg. Vertabelo kommer att påminna dig om att du måste definiera primärnycklar för varje tabell; Jag rekommenderar att du använder id kolumner eftersom det kommer att ge dig mer potentiell flexibilitet (och kommer inte att binda dig till användarens namn som primärnyckel eller andra fallgropar). Lägg sedan till relationer som vi redan beskrivit tidigare. Jag har lagt till ett lösenord (i hashad form) för användaren att kontrollera användarnas inloggning.

Nu kommer du att få något som ser ungefär ut så här:




Du kommer att se att det finns tidsstämplar med datum/tid för skapandet av varje rad, så att informationen kan visas på forumet ("Användare sedan 2 februari 2014", "Datum postat:24 december 2014", etc. ).

Om du ska ha en modererad onlinediskussionsforum där meddelanden måste godkännas av en moderator innan de blir synliga för andra användare, då bör du lägga till ett statusobjekt till trådar och inlägg så att ansökan kan avgöra om trådarna och tillhörande inlägg har granskats och godkänts. En status skulle också tillåta andra användare att markera trådar och inlägg som spam eller olämpliga.

Jag hoppas att du redan nu kan börja fundera på förbättringar. Till exempel, om du behöver formella uppgifter om användaren, istället för ett enda "namn"-fält, kanske du vill ha deras förnamn, efternamn och användarnamn eller smeknamn. Och ett inlägg kan ha ett ämne utöver innehållet, men jag tror att ämnet för inlägget är länkat tillbaka till tråden så det kanske inte är nödvändigt.

  Nästa del »

  1. Installation av Postgres på fönster för användning med Ruby-on-Rails

  2. Använder OASIS-SVN och git för åtkomst till källkodskontroll

  3. Python:bästa praxis och säkraste sättet att ansluta till MySQL och utföra frågor

  4. Databasdesign för flerspråkiga applikationer