タグシステム

それでは、システムのすべてのコンテンツユニットにN個のタグを掛けて、リンクの関連性と重要性のシステムでこれらのタグを選択するのが難しいのは何ですか? はい、これは複雑なことは何もありません。これは、10年生からデータベースを設計するための典型的なタスクだからです! なに? あなたはまだ沸騰していますか? それでは、すべてのチェックマークをすばやくチェックします:)



そのため、 タスク :システム内のコンテンツに「キーワード」でラベルを付けることができるようになり、後で同じキーワードでマークされたデータのリストを取得するための選択を行います。



解決策 :本質的に、タグシステム自体はDBMSの3つの追加テーブルであり、他のすべてのコンテンツは既に関連付けられています。 このようなもの(システムのサードパーティエンティティは青色でマークされていますが、いくつでも使用できます):











その後、すべてが単純で、テーブルcontent_type_mapでシステムのすべてのコンテンツに追加の一意のID(タグの操作用)が提供されるため、次のようなテーブルを提示します。CREATE TABLE content_type_map(content_id INT UNSIGNED NOT NULL AUTO INCREMENT、foreign_content_id INT UNSIGNED NOT NULL、content_type ENUM( 'picture、' article '、' file ')、PRIMARY KEY(content_id)、KEY(foreign_content_id));



注:この例では、MySQL 4を使用することに注意してください。このシステムは、実際のDBMSで多くの人がよりエレガントにできることを認識しています。 しかし、それはすでに別のオペラからの歌になります。



content_tag_mapテーブルは、すでにコンテンツユニットをキーワードに関連付けています。 最も単純なバージョンでは、content_idとtag_idの2つのフィールドのみがあります。 ただし、特別な変態の場合は、レコードが作成された日付のフィールドを追加します。



タグテーブルは非常に単純です。CREATETABLEタグ(tag_id INT UNSIGNED NOT NULL AUTO_INCREMENT、tag VARCHAR(50)、UNIQUE(tag)、PRIMARY KEY(tag_id));



それがすべての数学です。 さらに、このシステムではタンバリンとダンスをアレンジすることができます。



ちょうどいい? もちろん、キャッシュが世界を保存し、コンテンツ自体のキャッシュフィールドにシリアル化された配列の形式ですべてのタグを書き込むことを忘れないでください(これは、MySQL 5またはそれ自体を尊重するDBMSのトリガーを使用して行うことができます)。



All Articles