需求分析

这个类似于 StackOverFlow 的论坛由下面四个重要部分组成:

  • User management:用户的注册、登入(出)、访问控制

  • Forum management:论坛的 CRUD 和锁定

  • Topic management:论坛中帖子的 CRUD 和回复及锁定

  • Message management:用户间收发消息

数据库设计

User

A user is a person registered in the CoreBBsystem.

Name Type Description
ID int Theauto-generated unique ID of the user
Name string Thedisplay name of the user
PasswordHash string Theencrypted password
Description string Theuser’s introduction
IsAdministrator bool Indicatesif the user is an administrator
IsLocked bool Indicatesif the user is locked
RegisterDateTime DateTime Theregistration date and time
LastLogInDateTime DateTime Thelast login date and time

The user-related features include:

  • User can register to the CoreBBapplication.

  • If there are no prior userswithin the application, the user’s IsAdministrator will be set to true automatically.

  • User can log in and log out.

  • A locked user cannot log in.

  • Only logged-in users can posttopics.

  • Only administrators can manageforums.

  • Only administrators can manageother users.

Forum

A forum is a container of topics. Each forumhas its name, which indicates the category of the topics.

Name Type Description
ID int Theauto-generated unique ID of the forum
OwnerID int TheID of the user (administrator) who created this forum
Name string Thename/title of the forum
Description string TheIntroduction to the forum
IsLocked bool Indicatesif the forum is locked
CreateDateTime DateTime Thelast login date and time

The forumrelated features include:

  • Only administrators can createand manage forums.

  • Locked forums will be hiddenfrom common users but not administrators.

Topic

A topic is a content item posted in a forum.

Name Type Description
ID int Theauto-generated unique ID of the topic
OwnerID int TheID of the user who posted this topic
ForumID int TheID of the forum to which the topic belongs
RootTopicID int TheID of the first (root) topic of the “topic tree”
ReplyToTopicID int TheID of the topic to which the current topic replies
Title string Thetitle of the topic
Content string Thecontent of the topic
PostDateTime DateTime Thepost date and time
ModifiedByUserID int TheID of the user who modified this topic
ModifiedDateTime DateTime Themodification date and time
IsLocked bool Indicatesif the topic is locked

The topicrelated features include:

  • Any logged-in user can createand manage their own topics.

  • Administrators can edit otherusers’ topics.

  • A topic and its descendant topicform a topic tree. All topics in the same topic tree share the same roottopic ID.

  • Users can reply to a non-lockedtopic.

Message

A message is a content item sent betweenusers. In some forum systems, messages are also called private messages orinternal messages.

Name Type Description
ID int Theauto-generated unique ID of the message
FromUserID int TheID of the user who sends this message
ToUserID int TheID of the user to whom this message is sent
SendDateTime DateTime Thesend date and time
IsRead bool Indicatesif this message has been read
Title string Thetitle of the message
Content string Thecontent of the message

数据库实现

1 需求分析与数据库设计 - 图1

SQLServer 实现

课程提供了 CoreBB.sql,用于在 SQL Server 中生成数据库。
CoreBB.zip

MySQL 实现

如果想在 MySQL 中实现,推荐参考 复制 SQLServer 数据库至 MySQL。先在 SQLServer 中创建数据库再通过 EF Core 将其复制到 MySQL。

Lab_Files 1.zip