Tolong pilih kategori sesuai, jenis posting (diskusi atau bukan) dan sertakan tag/topik yang sesuai seperti komputer, java, php, mysql, dll. Promosi atau posting tidak pada tempatnya akan kami hapus!
- Bagi Anda yang ingin mendaftar, baca link berikut:
http://diskusiweb.com/discussion/50491/how-to-registrasi-diskusiweb-com-baca-ini-terlebih-dahulu
- Cara menyisipkan kode program supaya tampil rapi dan terformat dengan baik di diskusiweb.com: http://www.diskusiweb.com/discussion/50415/cara-menyisipkan-kode-program-di-diskusiweb-com
- Cara posting gambar/image di post Anda: http://www.diskusiweb.com/discussion/47345/cara-menyisipkan-menyertakan-image-pada-posting/p1

Skema Database Untuk Private Message

Permisi,

Saya kan punya skema database, skemanya seperti dibawah ini;

Member
  • id
  • nama
  • alamat
  • dll..
Message
  • id
  • id_pengirim
  • id_penerima
  • nama_pengirim
  • subject
  • content
  • attachment
Jadi saya mau buat private message antar member dengan skema seperti di atas , Jadi kalau untuk kirim - kirim pesan sih bisa, pesan buat member bisa dilihat member itu(baca : inbox) dan pesan yang saya kirim otomatis masuk ke outbox dong, Tapi saya masih bingung nih, jadi kalo saya DELETE pesan yang di outbox, kalo pake skema database di atas otomatis kan pesan inbox yang tadi dikirim juga akan ter-DELETE. dan kalo pesan itu belom dibaca ama member yang di kirimin pesankan jadi percuma..

jadi saya mau nanya,,
apakah skema database saya udah bener apa blom..??
kalo emang blom bener gimana skema yang seharusnya..??

Mohon bantuannya,
Terima Kasih
  

Comments

  • edited November 2013
    pake table bantu untuk outbox dan inbox. di normalisasi semuanya, contoh sederhananya:

    member : member_id, member_name.
    msg_inbox: msg_inbox_id, member_receiver_id, msg_inbox_text, msg_inbox_status.
    msg_outbox: msg_outbox_id, member_sender_id, msg_outbox_text

    Kirim pesan, insert 2x sekaligus:
    • Insert ke table outbox, isi member_sender_id dengan member_id pengirim pesan
    • Insert ke table inbox, isi member_receiver_id dengan member_id penerima pesan.

    Dengan begini bila saya kirim pesan ke kamu, pesan saya masuk ke outbox saya dan masuk ke inbox kamu.

    Kalo saya delete outbox sendiri, gak akan berpengaruh sama inbox mu kan :)

    note:

    msg_inbox_status bisa dikasih nilai enum atau boolean, cuma untuk field bantu apakah sudah dibaca atau belum, kalo sudah di buka, update field msg_inbox_status.

  • Oh begitu ya..

    Berati tabel yang saya gunakan dengan nambah tabel yang mas bikin modelnya kaya gini yah.. 

    member = id | member_name ...
    message = id | id_pengirim | id_penerima | nama_pengirim | subject | content ....
    msg_inbox = id | id_penerima | id_pengirim | content | subject | status |
    msg_outbox = id | id_pengirim | id_penerima | content | subject |

    Atau input tanpa menggunakan tabel message?? jadi langgsung ke msg_inbox ama msg_outbox

  • itu terserah, mo cuma 1 table message juga bisa, tapi di buat status, pesan_inbox atau pesan_outbox.
    Kan jadinya sama aja.

    message = id | id_member | nama | subject | content | is_read | message_status => enum('inbox', 'outbox')

    Kirim pesan tetap insert 2x tapi kali ini ke table yang sama:
    1. insert ke table message dengan id_member & nama diisi dengan id & nama pengirim, message status = outbox.
    2. insert ke table message dengan id_member & nama diisi dengan id & nama penerima, message status = inbox.

    Tapi terus terang gw gak suka cara yang ini, soalnya untuk select message yang status nya inbox mesti lookup ke table message yang datanya bercampur dengan message yang status nya outbox.
    Dan kalo cuma 1 table, pengembangan nya jadi ribet kalo nanti mau dikembangin, mesti normalisasi lagi kalo nemu kasus2 tertentu.

    Jadi gw prefer table inbox sama outbox dipisah. kalo mau tambah 1 table lagi(table message) boleh aja, bisa dijadikan log nantinya, jadi meski member hapus pesan, log nya masih kecatet di database,

    atau bisa untuk kasus yang delete, tapi deletenya kayak di windows, delete file masuk ke recycle bin, data masih bisa direstore, kalo di recycle bin dihapus baru ilang file nya :)

  • edited November 2013
    Thanks buat responnya mass... :D

    Berati kalo input pesan tiap tabel itu nyimpen data dari id_pengirim | id_penerima | subject | Pesan ya..??
    dan itu juga melakukan input sejumlah tabelnya ya mas..??

    kalo modelnya kaya gini gimana:

    message = id | id_pengirim | id_penerima | nama_pengirim | subject | pesan | date,
    inbox = id | id_pengirim | id_penerima | nama_pengirim | id_message | read => enum('0','1'),
    outbox = id | id_penerima | id_pengirim | nama_pengirim | id_mesaage ,

    Jadi misalnya gw manggil data inbox tinggal select inbox join message, begitu juga sama outbox. bisa ga ya..??
    apa model tersebut mempengaruhi kinerja pemrosesan mas...??


    oh iya mas, tadi saya nyari2 tentang skema buat private message gitu dan nemu forum dari stackoverflow.com tapi saya kurang paham ama apa yang mereka jelasin, kira2 model kaya gitu bisa digunanya buat apa..??

    ini linknya mas, disini.

    mohon bantuannya.
    terima kasih,
  • model elo cuma bisa 1 penerima
    yg di jelasin di so itu multi penerima

    sisa nya sama dengan yg dijelasin dani
  • Makasih untuk semuanya,, 
    barusan di coba dan akhirnya bisa..


    :D
Sign In or Register to comment.