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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

Q&A

解決済

2回答

369閲覧

データベースの勉強。フォームの住所など

creative_09

総合スコア80

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

0グッド

1クリップ

投稿2018/01/16 19:50

EC-CUBEのソースなどを見ながらデータベースの勉強をしております

フォームで住所の登録欄があるのですが、
<select name="pref" style="">
<option label="北海道" value="1">北海道</option>
<option label="青森県" value="2">青森県</option>
.....

EC-CUBEではmtb_prefというテーブルにデータの「2」は青森と登録されています
この場合、prefというname属性に青森なら「2」が保存され、
住所欄を見た場合、都道府県の部分は2で登録されているはずが青森となっているのはマスターデータを参照しているからでまちがっていないでしょうか?
ではどのように、2と青森とを紐付けているのでしょうか?
紐付け方の方法がわかりません
1.prefはmtb_prefを参照しろということはどのように行えば良いのでしょうか?
2.データベースのマスターとして都道府県を登録している意味もわかりません。番号ではなく、プルダウンテキストでそのまま登録はまずいのでしょうか?そうすればマスターデータ自体が必要ないようにおもえます。都道府県IDでマスターを作る意味を教えてください

郵便番号について
フォームではzip01、zip02として郵便番号の3桁 4桁にそれぞれ対応しています
ですが、データベースを見るとzipcodeとして7桁で表示されています
このようにデータベース上ではひっつけた状態で表示したいのですがどうすれば良いのでしょうか?

かなり初心者な質問でうまく説明できているかわかりませんが、回答よろしくお願い致します

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

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

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

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

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

guest

回答2

0

[都道府県の番号について]
北海道が1、青森が2という都道府県につけられた番号等は、1968年に総務省(当時:自治省)が設定したものです。半世紀近く使われ続けられている、最も標準的な番号で、国内のソフトのほとんどで採用されています。
そうした番号を使う事で、他のシステムやソフトウェアとの連携が(他のシステムでも"青森県は2"の場合が多いから)容易になります。
2と青森が紐づけられているのは、EC-CUBEも総務省のコードを使っているからです。

総務省トップ > 政策 > 地方行財政 > 電子自治体 > 全国地方公共団体コード に説明やコードの一覧があります。

P.S.
「青森県」でも構わないのではないかと思われるかもしれませんが、都道府県名を「青森県」のように都道府県がついた形式で扱うシステムと、「青森」のように都道府県を省いた形式で扱うシステムがあるので、他システムとの連携を考えると「2」のほうが「青森県」より優れています。

投稿2018/01/17 01:46

coco_bauer

総合スコア6915

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

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

creative_09

2018/01/17 03:00

なるほど、番号で行う場合のメリットとして、他のソフトウェアなども含め一般化されているコードで統一したほうがスムーズな連携が出来るためということですね。 ありがとうございます。
guest

0

ベストアンサー

考え方は3つ

  • 数値などに置き換えることでデータ量(送信時、DB上の効率的な保存)を減らせる
  • 大文字小文字、全角半角、他バイト文字ならキャラクターコードの違い、ユーザーの入力ミス(余分なスペース)などのリスクを低減させる
  • (昔は)住所など個人情報が絡むデータはできるだけ意味の推定しにくいデータ形式をつかうのが良いとされていた

どのように、2と青森とを紐付けているのでしょうか?

単純に青森を2と定義して、それをテーブルに入れておけば、あとはリストを作る時に
そのテーブルを参照するだけですね。考え方は正規化の応用です。
なぜ青森が2なのかというご質問でしたら、都道府県は北から順に呼ぶ慣例があるからです

データベース上ではひっつけた状態で表示したい

投入する時にくっつけてしまえばよいと思います
バラバラにもっているなら表示するときに

SQL

1concat(zip01,zip02) as zip

としてもよいでしょう

投稿2018/01/17 01:22

yambejp

総合スコア114572

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

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

creative_09

2018/01/17 03:08

ありがとうございます。 都道府県は番号もたせたデータをDBに作成し、フォームでは番号のみを受け取る形にしたいと思います。 ただ、その番号で受け取った形では番号が表示されるかとおもうのですが、それがどのように都道府県で表示できるのかが、まったくわかりません。都道府県データを作成する際に予めなにかしておくのでしょうか? また、zip01 zip02としてフォームで受け取ったものがデータベース上ではzipcodeとして7桁で保存されるようにする具体的な登録方法がいまいちつかめていません・・・・ 自分でももう少し調べてみますが、 よろしくお願いします
creative_09

2018/01/17 03:39

申し訳ございません。 大きく勘違いしておりました。 フォームから入力された住所の都道府県はIDのままで保存されておりました・・・・ ZIPCODEについても、3桁と4桁でそれぞれ登録されていました IDが2だった場合、データベースに保存されるのは青森ということと勘違いしており、 また、ZIPCODEにつきましても、3桁+4桁で入力されたものを7桁のZIPCODEで保存されていると勘違いしており、それを実現したかった次第です。 都道府県IDにつきましてはIDのまま保存しておき、表示上ではIDから青森県を表示させれば良いわけですね これ、間違った解釈ではないでしょうか???
yambejp

2018/01/17 03:44

> 都道府県IDにつきましてはIDのまま保存しておき、表示上ではIDから青森県を表示させれば良いわけですね 表現はやや微妙ですが、概ねその理解でよろしいかと思います。 詳しくは「正規化」というキーワードで勉強なさると良いかと思います
creative_09

2018/01/17 04:05

ありがとうございます。正規化で検索、勉強したいと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問