看板 Programming 關於我們 聯絡資訊
請問一下各位大大, 假設我要做一個聊天室, 包含團隊頻道和個人頻道 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
MOONRAKER: 把他用function或method包裝好就好了 218.161.46.90 01/22 11:08
MOONRAKER: 複雜也就一次 以後呼叫就好 218.161.46.90 01/22 11:08
MOONRAKER: rid何不直接改成sender receiver兩個 218.161.46.90 01/22 11:10
MOONRAKER: 欄位就好 218.161.46.90 01/22 11:11
MOONRAKER: 使用者1發給3: sender=1 receiver=3 218.161.46.90 01/22 11:11
MOONRAKER: type=2 218.161.46.90 01/22 11:12
MOONRAKER: user 1發給room 3:sender=1 receiver=3 218.161.46.90 01/22 11:12
MOONRAKER: type=1 218.161.46.90 01/22 11:12
tas72732002: 這樣我要查詢1與3的聊天紀錄 114.34.181.227 01/22 11:18
tas72732002: 不就要sender=1 and receiver=3 OR 114.34.181.227 01/22 11:19
tas72732002: sender=3 AND receiver= 1 114.34.181.227 01/22 11:19
MOONRAKER: 還要type=2咧 有什麼困難嗎 218.161.46.90 01/22 11:23
MOONRAKER: 就多一節clause而已 你想的那個精美的 218.161.46.90 01/22 11:23
MOONRAKER: <send>_<recv>還要拆字串 218.161.46.90 01/22 11:24
MOONRAKER: sql的index統統用不上 那何必用sql 218.161.46.90 01/22 11:24
MOONRAKER: 一直附加到檔案就好了 218.161.46.90 01/22 11:25
MOONRAKER: 反正硬碟很快 還不用sqld佔記憶體咧 218.161.46.90 01/22 11:26