-1

これは(おそらく)少しばかげた質問ですが、正確に何を検索するのか、MySQLデータベースに関してこれが何と呼ばれるのかはよくわかりませんでした。

基本的に、MySQLデータベースに関して次のステップに進みたいと思います。(例として)私がやりたいのは、記事を含むテーブルと、ユーザーを含む別のテーブルがあるとします。各ユーザーは(例のために)記事を「いいね」または「フォロー」することができます。MySQLの観点からどのようにそれを行うでしょうか?これは、通常のリレーショナルデータベースを実行するだけで達成できますか?私が考えることができる最良のシナリオは、ユーザーのIDと記事のIDを含むarticle_likesという別のデータベースを持つことですが、それは不器用なようです。

4

1 に答える 1

0

記事とユーザーの2つのエンティティがあります。また、各記事は多くのユーザーに「いいね」され、各ユーザーは多くの記事に「いいね」される可能性があるため、これは正規化では多対多関係(n:mとも呼ばれます)と呼ばれます。

リレーショナルデータベースでは、このような関係を持つことはできません。この問題を解決するには、両方のテーブルをリンクする追加のテーブルを作成する必要があります。これは、users_articlesのように、ユーザーのキー(識別子)、記事のキー(識別子)、およびフォローされた日付などの追加情報を入力します。

id_users_articles id_user   id_articles   date_added  status ....
1                 1         1             2012/11/01 ....
2                 1         2             2012/11/01 ....
3                 2         1             2012/11/01 ....

このような構造では、ユーザーと記事の間の多対多は2つの多対1の関係になります。

  1. ユーザーとusers_articlesの間
  2. 記事とuser_articlesの間。

新しく作成されたテーブルには2つの外部キー(ユーザー、記事)がありますが、それ自体にID(自動インクリメント)があることもお勧めします。

于 2012-11-20T15:27:39.637 に答える