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