記事テーブルがあり、ユーザーが入力したタグを制御できないと考えました。たとえば、タグを使用して条件付きクエリを作成したい場合、うまくいきません
記事テーブルがあり、ユーザーが入力したタグを制御できないと考えました。たとえば、タグを使用して条件付きクエリを作成したい場合、うまくいきません
タグテーブルを作成します。タグ テーブルにはタグ ID、名前などが含まれます。相関テーブルを作成し、ArticleID、TagID を保存し、記事の入力またはクロール時にタグを抽出します。まず、タグテーブルが既にタグを取得しているかどうかを判断し、取得していない場合は更新し、タグIDを関連付けテーブルに格納してから、記事IDを追加します。更新するときは、関連付けテーブルから直接取り出すことができるので、正常に表示することができます。
データベース設計には 3 つの主要なパラダイムがあります。
1. データベース内のフィールドはアトミックであり、分割できません。タグは一貫しているように見えますが、タグには個別の属性も含まれているため、後でタグに基づいてリストを個別にフィルタリングする必要がある場合には不便です。
タグは別のデータ テーブルに配置され、投稿データ テーブルは |
で区切られてタグ フィールドに配置されます。タグ内に「|」文字は使用できません。
タグを保存するテーブルを作成します。ユーザーがタグを追加したときに、タグが重複しているかどうかを確認してタグテーブルに保存します。その後、記事内のタグフィールドを更新します。テーブル
テーブルが2つ
タグテーブルを作成する
記事タグ関連付けテーブル、フィールドは記事IDとタグIDです
このように、クエリを実行するときは、関連付けテーブル内のタグに対応する記事IDをクエリするだけで済みます。
これは、データベース設計では多対多の関係である必要があります。記事テーブルのタグ - 記事関連付けテーブルのタグテーブルの 3 つのテーブルを設計します。タグ記事テーブルに、タグテーブルと記事の ID である二重の主キーを設定します。 join ステートメントを使用して、新しい mysql5.7 にタグ データを保存する別の方法があります。答えが間違っている場合は、これを使用します。ご満足いただけましたら、ぜひご指摘ください。ありがとうございます。
@ivanilla の意見は正しいと思います。このテーブルのデザインはほぼ使用可能です。複数のテーブルに関連付けられたタグ フィールドをクエリする必要はなく、使い方は簡単です。
たまたま紙があったので簡単なE-R図を描いてみました
ランダムに踏まない方が良いかどうかはわかりませんが、私の答えは彼の解決に直接役立ちませんでしたが、それでも非常に良いアイデアです。バカ、遠回りしてしまった、ありがとう