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

カテゴリの管理やスレッドや投稿への投票など、より高度な機能の追加

    オンラインフォーラムに関する2番目の記事で、追加する必要のあるより高度な機能がいくつかある可能性があると述べました。

    • フォーラムカテゴリ 各カテゴリに主題、複数のモデレーター、およびカテゴリの作成日などの追加情報があるサブカテゴリ。
    • 投稿 件名があるかもしれません コンテンツに加えて。
    • ユーザーが投票することを許可したい場合があります および投票 スレッドと投稿について。

    モデルをより簡単に把握できるように、カテゴリ、スレッド、投稿などを含むこのようなフォーラムの例を用意しました。これにより、理解しやすくなることを願っています。

    パート1のエンティティは黄色で、パート2のエンティティはオレンジで色付けされています。最初の2つの記事の後の現在のデータベースモデルは次のとおりです。




    投稿の詳細

    2番目の記事では、スレッドと投稿の「ステータス」に関係を追加しただけですが、ここでは、単純なコンテンツだけでなく、投稿をさらに詳細に拡張したいと思います。今のところ、スレッドの「件名」とは異なる可能性のある「件名」を投稿ごとに追加します。 「件名」(メールの件名またはMMSメッセージの件名を考えてください)を使用すると、Outlookや携帯電話に表示されるメールの最初の行のように、コンテンツの要約バージョンを表示できます。郵便物。また、ユーザーは投稿の「件名」を使用して「同意しない」などの高レベルのコメントを記録し、投稿のコメントセクションに自分の主張を入れることができます。これは、モデルに対する簡単な変更です。

    カテゴリ

    ウォームアップしたので、スレッドと投稿を分類するための新しい概念(エンティティ)を追加しましょう。各カテゴリは名前で定義されます。各カテゴリはユーザーによって作成され、ユーザーの中に少なくとも1人のモデレーターと、すでに持っている投稿やスレッドなどの他のいくつかの属性があります。カテゴリとサブカテゴリが必要なので、カテゴリが他の(サブ)カテゴリを参照できるようにします。

    カテゴリごとに複数のモデレーターを配置したいので、カテゴリをユーザーのグループにリンクし、ユーザーをそれらのグループにリンクするためのテーブルを作成します。この表では、ユーザーの「グループ」を定義し、そのうちの1つは「モデレーター」になりますが、将来的には、他のタイプのグループにも拡張できる可能性があります。

    投票または「いいね」

    個人的には、単に「いいね」するよりも、何かに「賛成」または「反対」するほうが好きです(ただし、マーク・ザッカーバーグはそれについて私に同意しないと思います)。ユーザーが「賛成」または「反対」を投じることができる投票メカニズムを作成することを選択します。賛成票がない場合は反対票を拒否するか、反対票の数を制限するかを選択できますが、それはアプリケーションが決定することであり、データベースは単に賛成票と反対票の数を追跡します。

    >

    スレッドへの投票と投稿への投票用に別々のテーブルを作成する場合がありますが、スレッドと投稿のテーブルからのオプションの外部キーを使用して、それらを同じテーブルに保持します。さらに、カテゴリに投票しないことを選択します。

    フォーマルデザイン

    今のところ、これでモデルの変更が完了したので、正式な設計を確認できます。ここでも、パート1とパート2で作成されたERDを拡張します。この記事で説明され、モデルに導入された変更は青色で表示されます。




    結論

    まだ追加の改善が可能ですが、ここではオンラインフォーラムのデータベースをかなり完全なデザインにしました。これにより、最も一般的なオンラインディスカッションフォーラムがサポートされます。

    オンラインフォーラムには他にどのような機能が必要ですか?

    «前の部分


    1. SQLite DATEADD()と同等

    2. SQLServer2008で通知を変更する

    3. 文字列内の文字のすべての出現を検索するOracleクエリ

    4. アクセスがあなたのビジネスのお金を節約できる方法