キーワードを使用してインデックスを作成できるようにしたいデータベースにいくつかのエントリ (数千に成長する) があります。
次のようなテーブルがあるとします。
ID | ユーザー名 | 電子メール | 説明
そして、次のような複数のキーワードをそのユーザーに添付したいと思います。
背が高い | ブロンド | 男性 | スキニー
そのためのテーブルをどのように構成しますか?新しい質問の下部にあるstackoverflowで使用されているキーワードによく似ていますか?
ありがとう
あなたは3つのテーブルが必要です
ユーザー:
id | username | email | description
タグ: (Tall、Blonde、Male、Skinny などが名前フィールドに含まれます)
id | name
ユーザータグ:
user_id | tag_id
ユーザーにタグを付けるにusers_tags
は、関連付けられたアイテムの ID を含む行をテーブルに追加します。
user_id と tag_id の両方が、適切なテーブルを参照する外部キーである必要があり、結合されて、一意のキー (場合によっては主キー) を形成する必要があります。
私が正しく理解していれば、3 つのテーブルがあります。
- users (user_id, username)
- keywords (keyword_id, keyword)
- user_keywords (user_id, keyword_id)
それらの間に関係があります(例のように同じ列名で)。
これは多対多の関係です。
キーワードのテーブルとオブジェクトのテーブル (キーワードに関連付けることができます) があります。
次に、複合キーを形成する 2 つの列を持つ 3 番目のテーブルがあり、それぞれが他の 2 つのテーブルの外部キーです。
例えば
object_keyword_relationship
===========================
object_id | keyword_id
1 | 1
1 | 2