🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

Q&A

解決済

3回答

963閲覧

このテーブルも多対多の関係といいますか?

thesnowman

総合スコア154

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

0グッド

0クリップ

投稿2020/01/06 02:14

編集2020/01/06 04:33

今自分でアプリを作っていますが、テーブルは以下の画像のような関係になっています。
ユーザーと記事だけ見ると普通の一対多です。

しかし、コメントテーブルを介することで
・ユーザーはコメントを介して複数の記事と結びついている
・記事はコメントを介して複数のユーザーと結びついている
ということができます。

これはユーザーと記事は多対多の関係でもあるという認識で良いでしょうか?
(railsチュートリアルのフォロー機能のような典型的な多対多ではないですが)

イメージ説明

追記:
質問の目的は、多対多という概念ひいてはRDBの理解を深めたいため
非常に抽象的な質問で恐縮です。
自分の頭でどんな考えても限度がありますが、熟練者の要点を突いた回答が新しい気づきのキッカケになったりします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/01/06 03:00

聞いてどうしたいのでしょうか。
thesnowman

2020/01/06 04:29

多対多という概念を理解したいです!
m.ts10806

2020/01/06 04:37

えーと。それだけなら調べた方が良いのでは? 「多対多とは」で調べたら結構出てきます。 この質問内容では何をどう調べたのかわかりません。
guest

回答3

0

コメントテーブルを介することで、ユーザーと記事は多対多の関係でもあるという認識で良いでしょうか?

コメントを記事に含めるならそうでしょうけど、多:多にならないように分割した後に、その関係を論ずる意味がありますか?

投稿2020/01/06 02:34

編集2020/01/12 15:36
sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

面白い、、、かも
この場合ユーザに二面性があります。

記事と1:多なユーザは投稿者としての性格
コメントを通しての多:多はコメンテーターとしての性格

ですので、どの側面でみるのか、 によって1:多とも多:多 とも言える様に思えます

投稿2020/01/06 02:24

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

結合して正規化前に戻す

1:N、N:Mの関連は結合してpk項目の対応をみるとわかります。結合を・で表す。
(ユーザー)、(コメント)、(記事)のpkを、pku、pkc、pkaとする。

  • (ユーザー・コメント) : (記事)

<pku,pkc> : <pka> = M : 1 、ただし、<pku,pkc>組の項目の関連は 1:N

  • (ユーザー) : (コメント・記事)

<pku> : <pkc,pka> = 1 : N 、ただし、<pkc,pka>組の項目の関連は M:1

  • (ユーザー・コメント・記事)

<pku, pkc, pka> ここで、<pku,pka>組の項目の関連はpkcを介して M:N

結合しても表どおしの関連はN/Mより小さくなることはありません(PKの合成でN関連が強いからだと思います)。
ユーザー、記事の関連は、間にコメントを含めることで複雑化します。あたりまえですね。
アプリケーションを組む上で、ナビゲーションによって解法が複雑化することがあります。

結論

導出表を含めた関連は無数にあります。控えめに言って論理設計を行う段階では意味がないと思います。

投稿2020/01/12 06:17

編集2020/01/12 08:13
xebme

総合スコア1090

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xebme

2020/01/12 21:29 編集

回答は間違っているけれどこのままにします。質問は「コメントを介して多対多か」でした。YES。 コメント表にある、外部キー(ユーザー)と外部キー(記事)の組が多対多であることから、コメントが関連表であることを、思い出しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問