现在有个需求,要记录发送短信记录,字段主要有:ID(自增)、APPID(对应各应用ID,对应各个应用:报告审批、日程提醒、收款提醒等)、SenderType(发送类别ID,对应类别:系统发送0、用户发送1)、ReceiverType(接收类别ID,对应类别:系统用户接收0、用户联系人接收1、客户接收2、其他直接手机号码接收)、SenderNO(如果是系统用户发送则存储对应用户工号,如果是系统发送则为0)、SenderMobile(发送手机号码)、ReceiverNO(如果是用户则为该用户工号,如果是用户个人联系人则为联系人ID,如果是客户则对应客户ID,如果是其他手机号码接收则为0)、ReceiverMobile(接收手机号码)、Message(短信内容)、Datetime(发生时间),数据库大概是这样设计的,或许不够合理,目的是在查询时:关键字可能性为(短信内容、发送手机号码、发送人姓名、接收手机号码、接收人姓名),如何实现高效查询,这里不能建立试图:SenderNO/ReceiverNO关联因素不确定,那么该怎么通过该值对应的相应的表查询相应的内容?首先不可能把所有记录对应的关联缓存下来再进行关键字检索,效率绝对低下!如果数据库设计不合理如何改进能满足需求?如果把上述字段分拆到几个表如:短信信息表(ID、Message、Datetime)、系统发送用户表(ID、UserNO、MsgID[对应短信表])、用户发送用户表(ID、SenderNO、ReceiverNO、msgID[对应短信表])、用户发送联系人表(ID、SerderNO、ContactID、MsgID)、用户发送客户表(ID、SerderNO、CustomerID、MsgID)、用户发送手机号码表(ID、SerderNO、Mobile、MsgID)、如果这样数据库的话就相对规范,可是如果进行查询如何一起查询相应的关联表呢?主要涉及到短信数据两会越来越大,一年下来应该达到千万级别,如果分表或者分库设计,MSSQL该如何进行查询?请高手指点思路,最好能提供参考代码或者范例!感谢万分!!!
数据量大,就每个月建立一个表
APPID(对应各应用ID,对应各个应用:报告审批、日程提醒、收款提醒等)、
SenderType(发送类别ID,对应类别:系统发送0、用户发送1)、
ReceiverType(接收类别ID,对应类别:系统用户接收0、用户联系人接收1、客户接收2、其他直接手机号码接收)、
SenderNO(如果是系统用户发送则存储对应用户工号,如果是系统发送则为0)、
SenderMobile(发送手机号码)、
ReceiverNO(如果是用户则为该用户工号,如果是用户个人联系人则为联系人ID,如果是客户则对应客户ID,如果是其他手机号码接收则为0)、
ReceiverMobile(接收手机号码)、
Message(短信内容)、
Datetime(发生时间),数据库大概是这样设计的,或许不够合理,目的是在查询时:关键字可能性为(短信内容、发送手机号码、发送人姓名、接收手机号码、接收人姓名),如何实现高效查询,这里不能建立试图:SenderNO/ReceiverNO关联因素不确定,那么该怎么通过该值对应的相应的表查询相应的内容?首先不可能把所有记录对应的关联缓存下来再进行关键字检索,效率绝对低下!如果数据库设计不合理如何改进能满足需求?如果把上述字段分拆到几个表如:短信信息表(ID、Message、Datetime)、
系统发送用户表(ID、UserNO、MsgID[对应短信表])、
用户发送用户表(ID、SenderNO、ReceiverNO、msgID[对应短信表])、
用户发送联系人表(ID、SerderNO、ContactID、MsgID)、
用户发送客户表(ID、SerderNO、CustomerID、MsgID)、
用户发送手机号码表(ID、SerderNO、Mobile、MsgID)、如果这样数据库的话就相对规范,可是如果进行查询如何一起查询相应的关联表呢?主要涉及到短信数据两会越来越大,一年下来应该达到千万级别,如果分表或者分库设计,MSSQL该如何进行查询?请高手指点思路,最好能提供参考代码或者范例!感谢万分!!!