私はSQL Server 2008 R2を使用してデータベースの設計を行っています。これは基本的に、(ゲームファンフォーラムと同様に)フォーラムの単純なデータベース設計です。幸運なことに、自分の作品とそれを比較するための無料のサンプルが見つからなかったので、私はそれに苦労しています。
一部の人々がコメントで要求したように、これは私がこれまでにやったことです:フォーラムでは、ユーザー(表)を検討しました。各ユーザーは投稿(表)を持ち、各投稿はトピック(表)を開始できます。
テーブルユーザー:ユーザーID(PK)、ニックネーム、電子メール、パスワード、AvatarImage。
テーブルポスト:PostID(PK)、UserID(FK)、DateTime、Description。
私に答えがない質問:-
あなたはこのようなものを持っているかもしれません。投稿が新しいトピックの場合、ParentIDとReplyToIDはNULLになります。フォーラムの場合、投稿が別の投稿への返信であることを示すことが望ましい場合がありますが、それでもそれが属するトピックを示すため、2番目の列(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
);
フィールドParentPostID
(nullable)をテーブルPost
に追加するだけで、トピックが取得されます。ParentPostIDがNULLの場合、これはトピックの開始投稿です。それ以外の場合、これはトピックのいくつかの投稿。しかし、ここではソリューション全体を入手することはできないと思います。