[問題] 關於聊天室schema設計

看板Programming作者 (蔥頭)時間7年前 (2017/01/21 21:54), 編輯推噓0(0017)
留言17則, 2人參與, 最新討論串1/1
請問一下各位大大, 假設我要做一個聊天室, 包含團隊頻道和個人頻道 db schema 大致為 好友table uid fid time 使用者table userid time 聊天table sid type(1:團隊 2:個人(私聊)) rid(房間id) msg(裡面會包含訊息與發送者資訊) time 如果是團隊部分rid, 就是user所加入的團隊id, 比較單純 但如果個人部分的rid 我的想法是A_B的userid做為rid 例如玩家A userid : 100001, 玩家B userid : 100002 rid = 100001_100002(小的編號放置在前面) 但這樣查詢有點麻煩, 如果我要查詢目前我的私聊有哪些新訊息 我必須 1. 拉出我的好友名單 2. 將我的userid與好友userid組成rid, 還需判斷小的編號要放前面 3. 將組好的rid, 丟到聊天table查詢 感覺有點複雜, 不知道大家有沒有比較好的設計? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.34.181.227 ※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1485006869.A.389.html

01/22 11:08, , 1F
把他用function或method包裝好就好了
01/22 11:08, 1F

01/22 11:08, , 2F
複雜也就一次 以後呼叫就好
01/22 11:08, 2F

01/22 11:10, , 3F
rid何不直接改成sender receiver兩個
01/22 11:10, 3F

01/22 11:11, , 4F
欄位就好
01/22 11:11, 4F

01/22 11:11, , 5F
使用者1發給3: sender=1 receiver=3
01/22 11:11, 5F

01/22 11:12, , 6F
type=2
01/22 11:12, 6F

01/22 11:12, , 7F
user 1發給room 3:sender=1 receiver=3
01/22 11:12, 7F

01/22 11:12, , 8F
type=1
01/22 11:12, 8F

01/22 11:18, , 9F
這樣我要查詢1與3的聊天紀錄
01/22 11:18, 9F

01/22 11:19, , 10F
不就要sender=1 and receiver=3 OR
01/22 11:19, 10F

01/22 11:19, , 11F
sender=3 AND receiver= 1
01/22 11:19, 11F

01/22 11:23, , 12F
還要type=2咧 有什麼困難嗎
01/22 11:23, 12F

01/22 11:23, , 13F
就多一節clause而已 你想的那個精美的
01/22 11:23, 13F

01/22 11:24, , 14F
<send>_<recv>還要拆字串
01/22 11:24, 14F

01/22 11:24, , 15F
sql的index統統用不上 那何必用sql
01/22 11:24, 15F

01/22 11:25, , 16F
一直附加到檔案就好了
01/22 11:25, 16F

01/22 11:26, , 17F
反正硬碟很快 還不用sqld佔記憶體咧
01/22 11:26, 17F
文章代碼(AID): #1OWsWLE9 (Programming)
文章代碼(AID): #1OWsWLE9 (Programming)