鍍金池/ 問(wèn)答/人工智能  Java  數(shù)據(jù)庫(kù)/ 即時(shí)聊天的數(shù)據(jù)庫(kù)設(shè)計(jì),最近聯(lián)系人需要單獨(dú)建表嗎?

即時(shí)聊天的數(shù)據(jù)庫(kù)設(shè)計(jì),最近聯(lián)系人需要單獨(dú)建表嗎?

需求大概是這樣的
我有個(gè)表用來(lái)記錄聊天內(nèi)容,字段大概是這樣的

msgid
from
to
content
time

然后我需要展現(xiàn)用戶的最近的聯(lián)系人,理論上我可以通過(guò)sql從這個(gè)聊天內(nèi)容表里面查詢出所有的最近聯(lián)系人,但是我現(xiàn)在需要?jiǎng)h除最近聯(lián)系人同時(shí)還得保留聊天記錄,也就是說(shuō)我不可能通過(guò)清除兩人的聊天記錄來(lái)達(dá)到刪除最近聯(lián)系人記錄的目的
那么我是否需要另外建一張最近聯(lián)系人的表,然后在雙方互發(fā)消息的同時(shí)維護(hù)這張最近聯(lián)系人的表?

回答
編輯回答
孤酒

建議單獨(dú)創(chuàng)建表保存最近聯(lián)系人。
1、從功能設(shè)計(jì)上看,最近聯(lián)系人是個(gè)獨(dú)立的功能,不依賴于聊天記錄,這一點(diǎn)你已經(jīng)說(shuō)過(guò)了。
2、從系統(tǒng)性能方面考慮,每次從聊天日志表從計(jì)算最近聯(lián)系人,數(shù)據(jù)量大的時(shí)候會(huì)存在性能瓶頸。

2018年5月2日 09:50
編輯回答
念舊

謝謝邀請(qǐng)。你的思路是對(duì)的??茨愕男枨?,不過(guò)看你需求的話最近聯(lián)系人是需要長(zhǎng)期記錄的,所以建議你還是單獨(dú)建立一個(gè)表來(lái)進(jìn)行保存相關(guān)數(shù)據(jù)。并且這個(gè)表需要的字段也不多,影響也不會(huì)很大。當(dāng)然,還有個(gè)不太好的方案是直接在對(duì)應(yīng)用戶表中添加一個(gè)字段以指定的格式記錄最近聯(lián)系人 id ,但這樣的話有很多不確定因素可能會(huì)有影響,并且對(duì)后期維護(hù)不友好,所以不建議。

2017年10月7日 04:10