質問 |
||
| 質問者:sweepea | 選択項目テーブルには、順序カラムが必要ですか? | |
|---|---|---|
困り度:
|
例えば、都道府県テーブルを作るとします。 id INT name TEXT で、県名のプルダウンメニューの表示には、 SELECT name FROM prefecture ORDER BY id; 等とすればよいでしょうが、 「北海道からでなく東京から表示してくれ」 とたのまれた場合を考えれば、id とは別途、順序カラムを もっておいた方がよいのでしょうか? 何か、いい方法があれば、教えてください。 |
|
質問投稿日時:08/04/12 19:23 質問番号:3943352 |
||
回答良回答20pt |
|
| 回答者:inadomez | 画面の選択項目に使用するコード系は、個別にテーブルを作成せずに、 ひとつのテーブルにまとめたほうがいいかもしれませんね。 以下、テーブルレイアウトの例です。 コード(PK) コード種類(PK)・・・都道府県、血液型、性別など 表示順 表示名 表示名略称 コードの説明 |
|---|---|
| 種類:アドバイス どんな人:経験者 自信:参考意見 |
|
| |
回答日時:08/04/14 09:50 回答番号:No.3 |
|
| この回答へのお礼 | ありがとうございます。 > 表示名略称 は、よく必要になりますね。 そもそも、外部キーの参照元としての id 値を表示順にも代用しておきながら、どうにかならないのか? という発想自体が、RDBの根本から外れてしまっているようでした。 ありがとうございました。 |
回答良回答10pt |
|
| 回答者:yambejp | >「北海道からでなく東京から表示してくれ」 >とたのまれた場合を考えれば あとからソート用テーブルをつくって外部結合すれば済むので 要望があるまではとくに今のままで問題ないはずです。 ※経験上、中国地方と四国の順番を入れ替えたりしたことはあります。 |
|---|---|
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| |
回答日時:08/04/13 23:46 回答番号:No.2 |
|
| この回答へのお礼 | ありがとうございます。 > ソート用テーブルをつくって外部結合 この発想は思いつきませんでした。 ただ、県名だけでなく、性別や、各種選択項目を表示するためのメソッドを一つにまとめた場合、 if ($table == 'prefecture') { JOIN句生成 みたいなのが必要になってきまね。 ANo.1 さんとの回答と比較して、どちらがいいか、検討したいと思います。 あ、ANo.1 さんと yambejp さんとの間をとって、 表示順を変えてくれと言われたときに初めて順序カラムを ADD COLUMN するという方法もありますね。 |
回答 |
|
| 回答者:inadomez | 私の経験上では、県名表示で順序変更を依頼されたことはありませんが、 もし、そのような依頼が想定されるのであれば、 表示順序を格納するカラムを持っておいたほうがよさそうですね。 |
|---|---|
| 種類:アドバイス どんな人:経験者 自信:参考意見 |
|
| |
回答日時:08/04/13 09:28 回答番号:No.1 |
|
| この回答へのお礼 | ありがとうございます。やはり表示順カラムが必要ですかね。 例えが、ちょっと悪かったかもしれませんが、県名だけでなく、 お気に入りのカテゴリーや、性別(ほぼ男性が先だと思いますが)や 血液型(占いサイト等)の表示順等、全ての選択項目に 共通の問題ですね。 ありがとうございました。 |