質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

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

Q&A

1回答

2322閲覧

railsで親にも子にもなるデータを1つのtableで扱う際のdb設計

you88

総合スコア147

Ruby on Rails

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

0グッド

0クリップ

投稿2018/06/12 07:46

railsで下記の条件のdb設計を考えているのですがいい案あるでしょうか?

  • カテゴリで親子関係をつけて階層を作りたい(例 エンタメ>テレビ番組)
  • 後々の開発のクエリの長さを考え、同じテーブルにて扱いたい
  • カテゴリが親にもなり得るし、子にもなり得る
  • 階層は一つだけ。孫はできない

今の所同じテーブルにカテゴリをまとめ、親のidカラムを作り、子にはそこに親となるカテゴリのidを入れるとしようかなと。

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

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

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

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

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

guest

回答1

0

Ruby on Rails タグがついていますが、一般的なSQLの問題に近いように思います。

おっしゃるデータモデルは一般に「ナイーブツリー/素朴な木」と呼ばれるアンチパターンですが、一階層だけと限定してしまえば書かれたような設計で割り切ってしまうのも個人的にはアリなのではないかな、と思います。

階層が増えた場合にクエリの回数が増えてしまうのと、データベース上で閉じた輪を表現可能になってしまうのでロジックで再起させた場合に注意が必要、など罠があるのですが、こちらも1階層であれば問題になることはありません。

2章 Naive Trees(素朴な木)

Ruby on Rails (ActiveRecord) で動作する、ナイーブツリーを解決するライブラリのリンクをご紹介しておきます。よろしければご参考になさってください。

投稿2018/06/12 12:06

motchang

総合スコア101

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問