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

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

新規登録して質問してみよう
ただいま回答率
85.37%
データベース

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

データベース設計

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

Q&A

解決済

4回答

4630閲覧

データベースに都道府県データを持たせるべきかどうか

tk_9

総合スコア50

データベース

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

データベース設計

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

0グッド

2クリップ

投稿2017/11/05 11:42

編集2017/11/07 07:36

Railsを使ってシステム開発をおこなっているのですが、ほぼ変更がない都道府県データなどをデータベースに持たせることの利点と欠点を教えていただきたいです。

アプリケーション側でenum等で管理することもできますし、都道府県データのように、あまり可変がない特定のステータス、例えば、記事データに紐づくステータス『公開・非公開・下書き』などの管理は、アプリケーション側でマッピングしてあげればテーブルが増えることもなくすっきりしている気がします。

もしデータベース周りで経験豊富な方がいらっしゃいましたら、ご意見お聞かせください。

※ 追記

回答で「都道府県データに変更があった場合に〜」という意見がありますが、アプリケーション側でマッピングしている箇所を変更すれば、対応することは容易にできますよね(例:Railsのenum等)。

今の所は外部キー制約で制限がかけられるからという意見が入っている投稿をベストアンサーに選ばさせていただきましたm(_ _)m 今後は外部キー制約を貼れる部分には積極的にテーブルを追加していこうと思います。

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

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

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

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

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

guest

回答4

0

ベストアンサー

データベースに入れておくと、外部キーを張れる(データベースにある値しか入れられないようにする)というメリットがあります。システムでの重要ポイントになるような「状態を表す値」を定義する場合に、リストにない値が入ってしまえば混乱しか産まないので、たとえ数個しかなくても外部キー制約のためにテーブルを立てることは、よく行います。

都道府県の場合も、内部的に「都道府県ID」で管理するなら、データベースへの投入はほぼ必須となります。単にリストとして使う場合は、どちらでも構いません(DBのないところで運用できる、というのがDB外で管理するメリットとはなります)。

投稿2017/11/05 12:15

maisumakun

総合スコア145932

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

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

tk_9

2017/11/06 16:48

ありがとうございます!
guest

0

メリットは「東京都」という文字列からSQL文を作ってサブクエリで検索出来ることですね。
MySQLはサブクエリの扱いが下手くそで、インデックスが剥がれたり、やたら遅い事があります。
あまり別テーブルから沢山の情報を引っ掛けるのはあまりしないですね。

デメリットはローカル環境作るのが面倒です。
結合テストするのに一時的なDBをDockerで作るときも、createコマンドと同時に全ての都道府県をバルクインサートで流し込まないと動作しないことを意味します。
ちりも積もれば山となり、あれやらコレやらの情報を全てDBに詰め込むとおまじないだらけになって環境構築に時間がかかるようになってしまいます。


おまけ

都道府県コードはJISコード(JIS X0401)で管理されています。
東京都と言えば13……覚えておいて損はないわ……

東京都はウルトラマンやゴジラがしょっちゅう決闘の舞台に採用してビルとか倒壊させてますので、
東京都がなくなる可能性はありますが、仮になくなってもJISコードが変更されると思いますのでこれに従っておけば間違いないですね。

投稿2017/11/07 03:07

miyabi-sun

総合スコア21194

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

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

0

ほぼ変更がないデータであっても、マスタデータとして持っておくことに意味はありますよ。
それは maisumakun さんも書かれているように、「データの整合性を保証するため」に使えるからです。

投稿2017/11/06 08:49

tacsheaven

総合スコア13703

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

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

0

核ミサイルが東京に落ちて甚大な被害が出て遷都する(東京府になる)こともありうるし、都道府県が増えたり、あるいは減ったりするかもしれないから都道府県テーブルは使いましょう。
厚生労働省 都道府県名

投稿2017/11/06 08:39

Orlofsky

総合スコア16417

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

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

miyabi-sun

2017/11/07 02:56

都道府県テーブルを追加することで、 サーバのリソース消費量が増え、電気代も増加し、火力発電所の二酸化炭素排出量が増え、核融合発電の研究が進む可能性もありますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問