sql >> データベース >  >> RDS >> Mysql

phpmysqlのメッセージングシステム

    メッセージの内容については、現在のテーブル構造を維持できると思います。個別の列や削除されたフラグを追加するよりも、メールボックス用に個別のテーブルを用意する方がよいでしょう。

    つまり、現在のmboxテーブル:

    id   message    sentby   sentto    created
    

    次に、user_mailboxesの別のテーブル

    id   user    mailbox    message_id
    

    user_mailboxesテーブルのユーザーごとに、メッセージテーブルに1つずつ、合計3つの挿入を行う必要があります。

    したがって、mboxデータは次のようになります:

    id   message     sentby    sentto    created 
    1    Hi There    UserA     UserB     2015-01-26
    2    Hello Back  UserB     UserA     2015-01-26
    

    また、user_mailboxesのデータは次のようになります。

    id   user        mailbox   message_id
    1    UserA       Out       1
    2    UserB       In        1
    3    UserB       Out       2
    4    UserA       In        2
    

    これにより、user_mailboxesテーブルの個々の行を削除できます。これにより、複数のユーザーに同時にメッセージを送信できるようになり(ユーザーごとに新しい行)、必要に応じて複数のメールボックスを追加できるようになり(In、Out、Trash、Important)、将来のアドオンも可能になります。など)。

    特定のメールボックスのユーザーのメールを検索するには、参加を使用するだけです

    SELECT * FROM user_mailboxes LEFT JOIN mbox ON mbox.id = user_mailboxes.message_id WHERE user_mailboxes.user = "$user" AND user_mailboxes.mailbox = "Out";
    

    user_mailboxesテーブルに存在しない孤立したメッセージがないことを確認するために、削除するときにクリーンアップスクリプトが必要になります。



    1. 主キーを無視してSQLServerで重複する行を見つける7つの方法

    2. mysqlで多くのフィールドを呼び出すときに*を使用するのが最適ですか?

    3. GUIDのSCOPE_IDENTITY()?

    4. SQLiteのGROUP_CONCAT