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

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

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

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

Q&A

解決済

2回答

3022閲覧

Rails:テーブルのカラム数をどの程度に分割すべきなのでしょうか?

sakurasaku

総合スコア15

Ruby on Rails

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

0グッド

0クリップ

投稿2017/08/20 23:32

編集2017/08/21 00:22

独学でWebアプリを作っているため、開発現場ではどのようなカラム数にしているか、あるいはパフォーマンス向上・テーブル管理のために皆様が実際にどのようにデータを持たせているのか、などご教示いただきたいです。 一例として、下記をあげさせて頂きます。

1: users - name, email, image, password
2: posts - content, user_id
3: likes - user_id, post_id
4: pics - image, comment, user_id

"2: posts"にはテキスト投稿のみ、"4: pics "には写真&それに対するコメントのテキスト投稿をしたいとします。ただし、"2"の投稿にはいいね機能、"4"の投稿にはいいね機能を持たせたくないとします。この場合、"4"については、上記の通り独立させることも、"2"に合わせることも(条件分岐が増える?)、"1: users"に合わせることも(投稿数を制限する必要あり?)可能かと思います。

基本的に、1つのテーブルにはいくつほどデータを持たせるのが一般的なのでしょうか?2〜3や、20〜30など、数で目安とするべきではなく、その状況で判断されているのでしょうか?あるいは、そもそもこのようなことは初期段階であまり気を配ることでもなかったでしょうか?皆様の経験を共有していただければ幸いです。 よろしくお願いいたします。

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

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

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

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

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

s.t.

2017/08/21 00:12

モデルとは何をもってモデルとおっしゃってますか?
sakurasaku

2017/08/21 00:24

質問文の言葉づかいを変えさせて頂きました。よろしくお願いいたします。
guest

回答2

0

1つのテーブルにはいくつほどデータを持たせるのが一般的なのでしょうか

「一般的」な数値はありません。

1まとまりのデータを1レコードにするのが基本です。1つのレコードに対して100個のデータがあるのであれば、100個のカラムがあるテーブルになります。

ただし、本当に「100個のカラム」が必要なケースはまれです。実際には、100個のデータすべてが1塊になっているのではなく、主たるデータと、それに従属するいくつかのデータのまとまりとして表現できるのが一般的です。

そうすると、それぞれの「データのまとまり」について、よく似ているが全く同じではない、というものが出てきます。質問にあるような2. と 4.をどうするか、という問題です。ここは似通い具合、違い具合で悩むしかありません。

ここら辺を考えるのがデータモデリングという作業になります。書籍もたくさんありますので一度読んでみてはいかがでしょうか。モデリングが変わるとコードも変わるので、1番最初に考えることになります。

投稿2017/08/21 01:25

suzukis

総合スコア1449

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

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

sakurasaku

2017/08/21 02:04

データモデリングの書籍、読んでみます。ご丁寧にありがとうございます!
guest

0

ベストアンサー

データ数によると思われます。
これはRailsに限った話ではないですが、レコード数が数十万とかになってくるとインデックスを考慮したり正規化を考える必要があります。

見た感じPKが無いように思えますし、
postsとpicsを同じ場所に表示させるのであれば投稿日時、必要であれば更新日時も
必要かなと思われます。

usersに関してもaccounts(idとpassword)とusersに分けてテーブルの意味を明確化したり、
とにかくまずは設計してみることです。
設計図書の有無はおまかせになりますが(現場でも設計図書がない場合もあります)、
ある程度、どのようなデータが必要なのか、どうやったらデータを引っ張ってこれるか(CRUD)、
データのフローはどうなるかをスタートからゴールまで見据えておかなければテーブル定義のやり直しなんてことになりかねません。

投稿2017/08/21 00:38

s.t.

総合スコア2021

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

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

sakurasaku

2017/08/21 02:07

ご経験談を伺えて、大変参考になりました。ご丁寧にありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問