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

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

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

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

Ruby on Rails

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

データベース

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

データベース設計

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

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Q&A

解決済

1回答

761閲覧

【Rails】におけるDB設計・同じ構造のデータを複数扱いたい

s_eric

総合スコア184

Ruby

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

Ruby on Rails

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

データベース

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

データベース設計

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

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

0グッド

0クリップ

投稿2019/12/07 11:49

前提・実現したいこと

Rails初心者です。
複数の同じジャンルのサイトからスクレイピングしたデータを整形して表示するWEBアプリを作っており、取得したデータを格納するデータベースの設計について考えています。

発生している問題

同じ商品を扱うサイトA、サイトB、サイトC......から商品名とその価格を取得しています。商品名はあらかじめすべて統一しており、同じ商品が2つ以上の名前で表されることはないようにしています。
取得元のサイトは10サイト弱を予定しており、アプリ完成後も容易にに追加・削除ができるようにしたいと思っています。

ここで、データーベースにどのようにデータを格納するかを2つほど考えてみました。

1)
サイトごとにテーブルを分け、商品情報を保管するマスターテーブルを作る。
サイトごとのテーブルにはマスターの商品IDとそのサイトでの価格、価格の更新日時を格納する。

2)
1つのテーブルに、商品名、サイトAの価格、サイトBの価格.......、サイトAの価格の更新日時、サイトBの価格の更新日時......のように、各サイトごとのカラムを作る。

個人的には1)のほうが良さげに思ったのですが、Railsでの実装が煩雑になりそうだなと思ったことと、また、2)は逆にカラム数が増えすぎる心配とサイトの追加・削除によるカラムの追加・削除が難しくなりそうだと感じたこととで結論に至れておりません。

どなたかデータベース設計でアイデアや一般論などある方、ご教授よろしくお願い致します。

補足情報(FW/ツールのバージョンなど)

Ruby 2.6.3
Rails 6.0.1

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

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

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

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

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

guest

回答1

0

ベストアンサー

私なら一つのテーブルで
[商品名, 価格, サイト, 更新日時]
かな

設計がシンプルでまずは実現しやすいからです。例えば
[ガリガリ君, 100, a-shop, ...]
[ガリガリ君, 101, b-shop, ...]
[ガリガリ君, 99, c-shop, ...]
[ガリガリ君, 98, d-shop, ...]
とあった場合、ガリガリ君で検索すれば、4件抽出され、価格の平均値も出しやすい。また、サイトで検索すれば、商品数もカウントしやすい。などが思いつきます

投稿2019/12/07 12:03

NCC1701

総合スコア1680

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

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

winterboum

2019/12/07 12:09

わたしもこれですね
s_eric

2019/12/07 12:50

たしかに1つのテーブルにしたほうが分かりやすいと思ったので、とりあえず回答を参考にやってみます!
s_eric

2019/12/07 12:56

丁寧な回答、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問