mykingla/sitemessage — Issue #2: 关于简化查询，提高效率的数据库设计改进策略
Author: ben7th
Created: 2012-03-08 05:53:41+00:00
State: open

之前的方案主要存在的问题：

···
查询消息会话总列表时，需要用到比较复杂的SQL去查询。
针对单条信息，由于需要对发送者和接收者的删除操作分别作处理，因而增加的字段，导致查询会话总列表/和某人的消息会话列表都有一定的附加条件，导致了SQL的繁琐。
···

我和 @fushang318 讨论之后，构思的一种可行方案：

```
class User < ActiveRecord::Base
has_many :short_message_readings
end

class ShortMessageReading < ActiveRecord::Base
belongs_to :user # 所属的用户
belongs_to :contact_user # 针对的联系人
belongs_to :short_message # 关联的消息

# 字段
# user_id :integer
# contact_user_id :integer
# short_message_id :integer
end

class ShortMessage < ActiveRecord::Base
belongs_to :sender, :class=>'User', :foreign_key => :sender_id
belongs_to :receiver, :class_name => 'User', :foreign_key => :receiver_id

# 字段
# sender_id :integer
# receiver_id :integer
# content :text
end
```

(修改ing)