SQL Server 数据库论坛设计示例

dar*_*050 5 database-design sql-server sql-server-2008-r2

我正在使用 SQL Server 2008 R2 进行数据库设计,基本上它是一个简单的论坛数据库设计(就像游戏迷论坛一样)。幸运的是,我正在努力解决它,因为我没有找到任何免费样品来将我的工作与它进行比较。

正如一些人在评论中要求的那样,这就是我目前所做的:对于一个论坛,我考虑了一个用户(表),每个用户都有一个帖子(表),每个帖子都可以启动一个主题(表)。

表用户:用户 ID (PK)、昵称、电子邮件、密码、头像。

表格帖子:PostID (PK)、UserID (FK)、DateTime、Description。

我没有答案的问题:-

  1. 我如何提供帖子可以开始主题的可能性?我应该制作一张新桌子吗?什么栏目?或者可以在存储过程的帮助下对 post 表做些什么?
  2. 如何在一个主题之后创建一个主题(例如回答问题)?

Aar*_*and 6

你可能有这样的事情。如果帖子是新主题,则 ParentID 和 ReplyToID 将为 NULL。对于论坛来说,通常需要显示一个帖子何时是对另一个帖子的回复,但仍指明它属于哪个主题,因此第二列 (ReplyToID) 可以指明这一点。当它是对原始父级的回复时,它可以为 NULL 或与 ParentID 具有相同的值。

CREATE TABLE dbo.Posts
(
    PostID      INT IDENTITY(1,1) PRIMARY KEY,
    UserID      INT NOT NULL FOREIGN KEY REFERENCES dbo.Users(UserID),
    ParentID    INT NULL REFERENCES dbo.Posts(PostID),
    ReplyToID   INT NULL REFERENCES dbo.Posts(PostID),
    Content     NVARCHAR(MAX), -- more accurate than "description"

    -- ... other columns ...

    -- "DateTime" is not a good choice for a column name
    create_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    modify_date DATETIME NULL -- or same default as create_date
);
Run Code Online (Sandbox Code Playgroud)