• ベストアンサー

選択項目テーブルには、順序カラムが必要ですか?

例えば、都道府県テーブルを作るとします。 id INT name TEXT で、県名のプルダウンメニューの表示には、 SELECT name FROM prefecture ORDER BY id; 等とすればよいでしょうが、 「北海道からでなく東京から表示してくれ」 とたのまれた場合を考えれば、id とは別途、順序カラムを もっておいた方がよいのでしょうか? 何か、いい方法があれば、教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • inadomez
  • ベストアンサー率40% (9/22)
回答No.3

画面の選択項目に使用するコード系は、個別にテーブルを作成せずに、 ひとつのテーブルにまとめたほうがいいかもしれませんね。 以下、テーブルレイアウトの例です。 コード(PK) コード種類(PK)・・・都道府県、血液型、性別など 表示順 表示名 表示名略称 コードの説明

sweepea
質問者

お礼

ありがとうございます。 > 表示名略称 は、よく必要になりますね。 そもそも、外部キーの参照元としての id 値を表示順にも代用しておきながら、どうにかならないのか? という発想自体が、RDBの根本から外れてしまっているようでした。 ありがとうございました。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>「北海道からでなく東京から表示してくれ」 >とたのまれた場合を考えれば あとからソート用テーブルをつくって外部結合すれば済むので 要望があるまではとくに今のままで問題ないはずです。 ※経験上、中国地方と四国の順番を入れ替えたりしたことはあります。

sweepea
質問者

お礼

ありがとうございます。 > ソート用テーブルをつくって外部結合 この発想は思いつきませんでした。 ただ、県名だけでなく、性別や、各種選択項目を表示するためのメソッドを一つにまとめた場合、 if ($table == 'prefecture') {   JOIN句生成 みたいなのが必要になってきまね。 ANo.1 さんとの回答と比較して、どちらがいいか、検討したいと思います。 あ、ANo.1 さんと yambejp さんとの間をとって、 表示順を変えてくれと言われたときに初めて順序カラムを ADD COLUMN するという方法もありますね。

  • inadomez
  • ベストアンサー率40% (9/22)
回答No.1

私の経験上では、県名表示で順序変更を依頼されたことはありませんが、 もし、そのような依頼が想定されるのであれば、 表示順序を格納するカラムを持っておいたほうがよさそうですね。

sweepea
質問者

お礼

ありがとうございます。やはり表示順カラムが必要ですかね。 例えが、ちょっと悪かったかもしれませんが、県名だけでなく、 お気に入りのカテゴリーや、性別(ほぼ男性が先だと思いますが)や 血液型(占いサイト等)の表示順等、全ての選択項目に 共通の問題ですね。 ありがとうございました。

関連するQ&A