日期:2014-05-19  浏览次数:20583 次

站内短信数据如何设计?
我这个站内短信用户可以订制一些信息,站长也可以发通告给每个用户,并且需要记录那些信息已被用户读过.数据量比较.现请教一下数据库该如何设计才能即达到效果又能高效.

------解决方案--------------------
我认为这个表的设计并不复杂。
我的思路如下:
id sendname sendmessage receivename receivemessage time sign .... .....

发送人姓名和发送人信息。
接收人姓名和接收人信息。
接收的时间
sign的标志,通过它看时候接收

等等
------解决方案--------------------
数据量有多大,一月有千万条记录吗?如果没有的话,性能应该不是问题
------解决方案--------------------
if exists (select * from dbo.sysobjects where id = object_id(N '[dbo].[t_message_info] ') and OBJECTPROPERTY(id, N 'IsUserTable ') = 1)
drop table [dbo].[t_message_info]
GO

CREATE TABLE [dbo].[t_message_info] (
[MessageID] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[SenderID] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[ReceiverID] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[SendTime] [datetime] NULL ,
[MessageContext] [varchar] (1000) COLLATE Chinese_PRC_CI_AS NULL ,
[MessageStatus] [int] NULL ,
[MessageTitle] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Owner] [int] NULL
) ON [PRIMARY]
GO
------解决方案--------------------
可以設計為三個表,一是USER,二是消息,三是上兩個表的MAPPINTG TABLE
個人覺得它就是一個MAPPING表。是用戶表與消息表的MAPPING
M_ID,自增ID,用于方便修改是否讀取過。
UserID,用戶ID號
MessageID,用戶所屬的消息ID號
ReadFlag,標記是否已經讀取過
Datetime,如果需要可以增加什么時間讀取的。
對以上的字段進行索引,應該速度還是可以接收的。