2017-07-29 4 views
1

私は現在、私のサイトのユーザーがお互いに連絡できるように電子メールスタイルのWebアプリケーションを作成しようとしています。私は、次の見出しを持っている、このためにSQLテーブルを作成しました:メッセージング/電子メールアプリケーションのデータベースを設定する最適な方法は何ですか?

  • ID
  • SENDERID
  • メッセージがされているかどうかを記録する
  • タイムスタンプ
  • メッセージ
  • 読み取り(ブール値をrecipientID受信者が読む)
  • スター付き(受信者がメッセージにスター付きを付けるかどうかを記録するブール値)
  • が、私は今、このテーブルのことを実現するために始めている

をconvoID(ブールは、メッセージが受信者によって削除されたかどうかを記録すること)

  • を削除(ブール値は、メッセージが受信者によってアーカイブされているかどうかを記録すること)アーカイブ不十分である。たとえば、会話がユーザーによって星印を付けられている場合、これは2人のユーザーのうち2人のユーザーがコンボなどにスターを付けたことを教えてくれません。

    誰でも上記の問題を回避し、データベース構造?

  • 答えて

    1

    テーブルを2つに分割して、「メッセージ」と「スター」と呼ぶことをおすすめします。したがって、次のとおりです。

    ご覧のとおり、メッセージにparent_idを追加しました。階層構造が必要ない場合は、この列をキックすることができます。スターテーブルは、主演の特徴を高める可能性を与える。誰が知っている、多分将来、すべてのユーザーは、会話の参加者だけでなく、星を置くかもしれない。

    さらに、DB正規化についての素晴らしい記事があります。 What is Normalisation (or Normalization)? http://www.studytonight.com/dbms/database-normalization.php http://searchsqlserver.techtarget.com/definition/normalization

    :それは本当にあなたがよく組織DBの構造を構築することができますされます
    0

    は、お使いのアプリケーションやユーザー数によって異なります。 両方のユーザーが操作できるスター付きの、アーカイブされた、その他のものについては、enumerationまたは単にいくつかの値を使用できます。ブール値だけではありません。 または、すべての読書を分割することができます。senderReadrecipentRead

    関連する問題