谁能给个论坛的数据库设计视图供参考,不尽感谢

解决方案 »

  1.   


    if exists (select * from sysobjects where id = object_id(N'[dbo].
    [Announce]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[Announce]
    GOif exists (select * from sysobjects where id = object_id(N'[dbo].
    [board]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[board]
    GOif exists (select * from sysobjects where id = object_id(N'[dbo].
    [essence]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[essence]
    GOif exists (select * from sysobjects where id = object_id(N'[dbo].
    [site]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[site]
    GOif exists (select * from sysobjects where id = object_id(N'[dbo].
    [user]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[user]
    GOCREATE TABLE [dbo].[Announce] (
    [AnnounceID] [int] IDENTITY (1, 1) NOT NULL ,
    [ParentID] [int] NULL ,
    [Child] [int] NULL ,
    [BoardID] [int] NULL ,
    [UserName] [nvarchar] (50) NULL ,
    [UserEmail] [nvarchar] (255) NULL ,
    [URL] [nvarchar] (255) NULL ,
    [URLTitle] [nvarchar] (255) NULL ,
    [URLPic] [nvarchar] (255) NULL ,
    [Topic] [nvarchar] (255) NULL ,
    [Body] [ntext] NULL ,
    [DateAndTime] [nvarchar] (50) NULL ,
    [hits] [int] NULL ,
    [length] [int] NULL ,
    [RootID] [int] NULL ,
    [layer] [int] NULL ,
    [orders] [int] NULL ,
    [emote] [int] NULL ,
    [ip] [nvarchar] (20) NULL ,
    [signature] [nvarchar] (255) NULL 
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    GOCREATE TABLE [dbo].[board] (
    [BoardID] [int] IDENTITY (1, 1) NOT NULL ,
    [BoardName] [nvarchar] (100) NULL ,
    [BoardMaster] [int] NULL ,
    [ignoreip] [nvarchar] (255) NULL 
    ) ON [PRIMARY]
    GOCREATE TABLE [dbo].[essence] (
    [id] [int] IDENTITY (1, 1) NOT NULL ,
    [announceid] [int] NULL ,
    [boardid] [int] NULL ,
    [username] [nvarchar] (50) NULL ,
    [useremail] [nvarchar] (255) NULL ,
    [url] [nvarchar] (255) NULL ,
    [urlTitle] [nvarchar] (255) NULL ,
    [urlPic] [nvarchar] (255) NULL ,
    [Topic] [nvarchar] (255) NULL ,
    [Body] [ntext] NULL ,
    [dateAndTime] [nvarchar] (50) NULL ,
    [hits] [int] NULL ,
    [length] [int] NULL ,
    [emote] [int] NULL 
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    GOCREATE TABLE [dbo].[site] (
    [SiteMasterPwd] [nvarchar] (50) NULL 
    ) ON [PRIMARY]
    GOINSERT INTO [site]([SiteMasterPwd]) VALUES("intels")
    GOCREATE TABLE [dbo].[user] (
    [UserID] [int] IDENTITY (1, 1) NOT NULL ,
    [UserName] [nvarchar] (50) NULL ,
    [UserEmail] [nvarchar] (255) NULL ,
    [UserPassword] [nvarchar] (11) NULL ,
    [icq] [nvarchar] (20) NULL ,
    [homepage] [nvarchar] (255) NULL ,
    [sex] [nvarchar] (10) NULL ,
    [passanswer] [nvarchar] (100) NULL ,
    [lastvisit] [smalldatetime] NULL ,
    [incometime] [smalldatetime] NULL ,
    [birthday] [smalldatetime] NULL ,
    [points] [int] NULL ,
    [visits] [int] NULL ,
    [country] [nvarchar] (20) NULL ,
    [city] [nvarchar] (20) NULL ,
    [passquest] [nvarchar] (100) NULL ,
    [signature] [nvarchar] (255) NULL 
    ) ON [PRIMARY]
    GOALTER TABLE [dbo].[Announce] WITH NOCHECK ADD 
    CONSTRAINT [PK_Announce] PRIMARY KEY NONCLUSTERED 
    (
    [AnnounceID]
    ) ON [PRIMARY] 
    GOALTER TABLE [dbo].[board] WITH NOCHECK ADD 
    CONSTRAINT [PK_board] PRIMARY KEY NONCLUSTERED 
    (
    [BoardID]
    ) ON [PRIMARY] 
    GO
    ALTER TABLE [dbo].[essence] WITH NOCHECK ADD 
    CONSTRAINT [PK_essence] PRIMARY KEY NONCLUSTERED 
    (
    [id]
    ) ON [PRIMARY] 
    GO
    ALTER TABLE [dbo].[user] WITH NOCHECK ADD 
    CONSTRAINT [PK_user] PRIMARY KEY NONCLUSTERED 
    (
    [UserID]
    ) ON [PRIMARY] 
    GOCREATE INDEX [announce_i] ON [dbo].[Announce]([RootID], [ParentID]) 
    ON [PRIMARY]
    GOCREATE INDEX [Boardid] ON [dbo].[Announce]([BoardID]) ON [PRIMARY]
    GOCREATE INDEX [Boardid] ON [dbo].[essence]([boardid]) ON [PRIMARY]
    GOCREATE INDEX [points] ON [dbo].[user]([points]) ON [PRIMARY]
    GOCREATE INDEX [username] ON [dbo].[user]([UserName]) ON [PRIMARY]
    GO
      

  2.   


    推荐一个论坛用的数据库结构
    看看这个论坛的数据库结构吧,比较经典:if exists (select * from sysobjects where id = object_id(N'[dbo].
    [Announce]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[Announce]
    GOif exists (select * from sysobjects where id = object_id(N'[dbo].
    [board]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[board]
    GOif exists (select * from sysobjects where id = object_id(N'[dbo].
    [essence]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[essence]
    GOif exists (select * from sysobjects where id = object_id(N'[dbo].
    [site]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[site]
    GOif exists (select * from sysobjects where id = object_id(N'[dbo].
    [user]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[user]
    GOCREATE TABLE [dbo].[Announce] (
    [AnnounceID] [int] IDENTITY (1, 1) NOT NULL ,
    [ParentID] [int] NULL ,
    [Child] [int] NULL ,
    [BoardID] [int] NULL ,
    [UserName] [nvarchar] (50) NULL ,
    [UserEmail] [nvarchar] (255) NULL ,
    [URL] [nvarchar] (255) NULL ,
    [URLTitle] [nvarchar] (255) NULL ,
    [URLPic] [nvarchar] (255) NULL ,
    [Topic] [nvarchar] (255) NULL ,
    [Body] [ntext] NULL ,
    [DateAndTime] [nvarchar] (50) NULL ,
    [hits] [int] NULL ,
    [length] [int] NULL ,
    [RootID] [int] NULL ,
    [layer] [int] NULL ,
    [orders] [int] NULL ,
    [emote] [int] NULL ,
    [ip] [nvarchar] (20) NULL ,
    [signature] [nvarchar] (255) NULL 
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    GOCREATE TABLE [dbo].[board] (
    [BoardID] [int] IDENTITY (1, 1) NOT NULL ,
    [BoardName] [nvarchar] (100) NULL ,
    [BoardMaster] [int] NULL ,
    [ignoreip] [nvarchar] (255) NULL 
    ) ON [PRIMARY]
    GOCREATE TABLE [dbo].[essence] (
    [id] [int] IDENTITY (1, 1) NOT NULL ,
    [announceid] [int] NULL ,
    [boardid] [int] NULL ,
    [username] [nvarchar] (50) NULL ,
    [useremail] [nvarchar] (255) NULL ,
    [url] [nvarchar] (255) NULL ,
    [urlTitle] [nvarchar] (255) NULL ,
    [urlPic] [nvarchar] (255) NULL ,
    [Topic] [nvarchar] (255) NULL ,
    [Body] [ntext] NULL ,
    [dateAndTime] [nvarchar] (50) NULL ,
    [hits] [int] NULL ,
    [length] [int] NULL ,
    [emote] [int] NULL 
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    GOCREATE TABLE [dbo].[site] (
    [SiteMasterPwd] [nvarchar] (50) NULL 
    ) ON [PRIMARY]
    GOINSERT INTO [site]([SiteMasterPwd]) VALUES("intels")
    GOCREATE TABLE [dbo].[user] (
    [UserID] [int] IDENTITY (1, 1) NOT NULL ,
    [UserName] [nvarchar] (50) NULL ,
    [UserEmail] [nvarchar] (255) NULL ,
    [UserPassword] [nvarchar] (11) NULL ,
    [icq] [nvarchar] (20) NULL ,
    [homepage] [nvarchar] (255) NULL ,
    [sex] [nvarchar] (10) NULL ,
    [passanswer] [nvarchar] (100) NULL ,
    [lastvisit] [smalldatetime] NULL ,
    [incometime] [smalldatetime] NULL ,
    [birthday] [smalldatetime] NULL ,
    [points] [int] NULL ,
    [visits] [int] NULL ,
    [country] [nvarchar] (20) NULL ,
    [city] [nvarchar] (20) NULL ,
    [passquest] [nvarchar] (100) NULL ,
    [signature] [nvarchar] (255) NULL 
    ) ON [PRIMARY]
    GOALTER TABLE [dbo].[Announce] WITH NOCHECK ADD 
    CONSTRAINT [PK_Announce] PRIMARY KEY NONCLUSTERED 
    (
    [AnnounceID]
    ) ON [PRIMARY] 
    GOALTER TABLE [dbo].[board] WITH NOCHECK ADD 
    CONSTRAINT [PK_board] PRIMARY KEY NONCLUSTERED 
    (
    [BoardID]
    ) ON [PRIMARY] 
    GO
    ALTER TABLE [dbo].[essence] WITH NOCHECK ADD 
    CONSTRAINT [PK_essence] PRIMARY KEY NONCLUSTERED 
    (
    [id]
    ) ON [PRIMARY] 
    GO
    ALTER TABLE [dbo].[user] WITH NOCHECK ADD 
    CONSTRAINT [PK_user] PRIMARY KEY NONCLUSTERED 
    (
    [UserID]
    ) ON [PRIMARY] 
    GOCREATE INDEX [announce_i] ON [dbo].[Announce]([RootID], [ParentID]) 
    ON [PRIMARY]
    GOCREATE INDEX [Boardid] ON [dbo].[Announce]([BoardID]) ON [PRIMARY]
    GOCREATE INDEX [Boardid] ON [dbo].[essence]([boardid]) ON [PRIMARY]
    GOCREATE INDEX [points] ON [dbo].[user]([points]) ON [PRIMARY]
    GOCREATE INDEX [username] ON [dbo].[user]([UserName]) ON [PRIMARY]
    GO
      

  3.   

    Categories表用于存储论坛版区的名字和图像
    列名 类型 长度 允许为空 描述
    CategoryID int – identity 主键 4 No 版区ID
    CategoryName varchar 100 No 版区名
    CategoryImageUrl varchar 100 Yes 版区描述图像的可选URL
    CategoryPosition int 4 Yes 版区顺序位置CategoryPosition确定了版区的位置,不能只用CategoryID来排序版区,因为它是一个自动增加的identity列,只反映了创建的顺序,而不是它的重要性。Forums表存储了有关特定论坛的信息,以及它们与父版区的关系
    列名 类型 长度 允许为空 描述
    ForumID int – identity 主键 4 No 论坛ID
    CategoryID int 外键 4 No 父版区ID(主表 Categories)
    ForumName varchar 100 No 论坛名
    ForumDescription varchar 250 Yes 论坛的可选描述
    ForumPosition int 4 Yes 论坛的顺序位置Topics表存储了有关特定论坛的所有主题
    列名 类型 长度 允许为空 描述
    TopicID int – identity 主键 4 No 主题ID
    ForumID int 外键 4 No 父论坛ID (主表 Forums)
    Subject varchar 100 No 主题的标题
    Message text 0 No 主题的文本
    UserID int 外键 4 No 发布该消息的成员ID(主表 Users)
    UserIP varchar 15 No 发布消息的成员的IP地址
    AddedDate datetime 8 No 添加消息到数据库中的日期UserIP 列存储提交主题的成员的IP地址,以便我们有时候利用IP地址来追踪一个特定的用户以防止成员滥用论坛。Replies表存储了答复主题所发送的消息
    列名 类型 长度 允许为空 描述
    ReplyID int – identity 主键 4 No 答复ID
    ForumID  int 外键 4 No 父论坛ID(主表Forums)
    TopicID int 外键 4 No 父主题ID(主表Topics)
    Message text 0 No 回复的文本
    UserID int 外键 4 No 发布消息的成员ID(主表Users)
    UserIP varchar 15 No 发布消息的成员的IP地址
    AddedDate datetime 8 No 添加消息到数据库中的日期Replies表和Topocs表几乎完全相同,但如果使用两个不同的表,我们查询论坛的主题时速度会更快。而且计算两者的列也更加容易。Users表存储论坛注册成员的信息
    列名 类型 长度 允许为空 描述
    UserID int – identity 主键 4 No 成员ID
    UserName varchar 唯一 16 No 成员名
    NickName varchar 16 Yes 成员昵称
    Password varchar 60 No 密码
    Email varchar 255 No Email地址
    Question varchar 40 No 密码提示问题
    Answer varchar 40 No 密码提示问题答案
    Sex varchar 默认为M 1 Yes 性别
    ShowEmail bit 1 No 如果为true,在此成员的帖子中可以看见电子邮件地址
    Signature varchar 300 Yes 签名文本
    ImageUrl varchar 100 Yes 成员图像的URL
    AddedDate datetime 默认当天 8 No 用户注册日期