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

ユーザー、スレッド、投稿を管理するための基本的なデータ構造のモデリング

    オンラインディスカッションフォーラムは、が参加するサイトです。 会話を開催できます 投稿されたメッセージの形式で 。ディスカッションフォーラムでは、オンラインでないときに会話を行うことができ、メッセージは一時的にアーカイブされる場合があります。また、フォーラムの設定によっては、メッセージが他のユーザーに表示される前に、モデレーターによる承認が必要になる場合があります。フォーラムには特定の用語のセットがあります。たとえば、単一の会話は一般に「スレッド」と呼ばれます。スレッドには、好きなだけ多くの人が返信できます。ほとんどのフォーラムでは、ユーザーがメッセージを投稿するために登録してからログインする必要があります。ただし、ほとんどのフォーラムでは、ユーザーは既存のメッセージを読むためにログインする必要はありません。

    これらは、ウェブサイトフォーラムの一般的な要件です。 、それでは、後で拡張できる基本的なフォーラムの設定から始めて、データベースモデルを作成してみましょう。

    エンティティ

    前述のように、人々は会話にグループ化された投稿されたメッセージの形で会話を行います。したがって、データベースはに関する情報をサポートする必要があります またはユーザー会話 またはスレッド およびメッセージ または投稿

    オンラインフォーラムの場合、ユーザーを作成する必要があります。作成後にユーザーが詳細を編集できるようにする必要がある場合がありますが、ユーザーの削除を許可する必要はおそらくありません。ユーザーは、会話を明示的に作成するのではなく、通常、最初のメッセージをフォーラムに投稿することによって会話またはスレッドを作成しますが、両方の可能性をサポートする必要がある場合があります。スレッドには、ユーザーが作成した投稿が含まれます。

    機能性

    メッセージの投稿はオンラインフォーラムの主な機能です 。ユーザーは、投稿後にメッセージを編集できるようにする必要がありますか?ユーザーは投稿後にメッセージを削除できるようにする必要がありますか?両方の答えはおそらくイエスです。

    関係

    投稿はスレッドにリンクされ、投稿はユーザーによって作成されるため、関係が定義されます。 ユーザーと投稿の間。スレッドはユーザーによって作成されるため、そこに関係を保存する必要があります(たとえば、ユーザーがフォーラムへの参加を禁止されている場合、そのユーザーが作成したすべてのスレッドと投稿を削除することをお勧めします)。

    これで、エンティティがわかりました。 および関係 、データベースのモデルを構築する準備が整いました。これには数分しかかかりません。ここでツールが役に立ちます。

    データベースモデル

    オンラインディスカッションフォーラムを続けるために、Vertabeloを見てみましょう。

    オンラインフォーラムのモデルを作成し、エンティティの追加を開始します ユーザー、スレッド、投稿を表します。 Vertabeloは、各テーブルの主キーを定義する必要があることを通知します。 idの使用をお勧めします 列を使用すると、柔軟性が向上する可能性があります(主キーやその他の落とし穴として、ユーザーの名前に縛られることはありません)。次に、関係を追加します すでに説明しました。ユーザーがユーザーのログインを制御するためのパスワード(ハッシュ形式)を追加しました。

    これで、おおよそ次のようになります。




    各行が作成された日時のタイムスタンプがあることがわかります。これにより、情報をフォーラムに表示できます(「2014年2月2日以降のユーザー」、「投稿日:2014年12月24日」など)。 。

    モデレートする場合 メッセージが他のユーザーに表示される前にモデレーターによって承認される必要があるオンラインディスカッションフォーラムでは、ステータスアイテムを追加する必要があります アプリケーションがスレッドと関連する投稿がレビューおよび承認されているかどうかを判断できるように、スレッドと投稿に追加します。ステータスにより、他のユーザーがスレッドや投稿をスパムまたは不適切としてマークすることもできます。

    すでに改善について考え始めていただければ幸いです。たとえば、単一の「名前」フィールドではなく、ユーザーに関する正式な詳細が必要な場合は、ユーザーの名、姓、ユーザー名またはニックネームが必要になる場合があります。また、投稿にはコンテンツに加えて件名が含まれている場合がありますが、投稿の件名はスレッドにリンクされているため、必要ない場合もあります。

    次のパート»

    1. oracle11gでパラメータ化されたビューを作成する

    2. OPENJSON「キーワード「with」の近くの構文が正しくありません。」 SQL Server(解決済み)

    3. SQL ServerReportingServicesの調整

    4. SQL Serverで無効になっているすべての制約を返す(T-SQLの例)