[PHP-users 10031] Re: 複数選択項目の効率の良い管理方法について

Mashiki php-users@php.gr.jp
2002年9月12日 09:59:26 +0900


 Mashikiです。
>アンケートなどでよくある複数選択項目を
>DB で効率良く管理する方法について、
>アドバイスをいただければと思います。
>>例えば、
>>あなたのお持ちの周辺機器について教えて下さい。
>>	しろいしかく デジタルカメラ
>	しろいしかく イメージスキャナ
>	しろいしかく プリンタ
>>ような項目があったとして、どのように保持すれば、
>例えば、悩みに、たるみかむくみを選んだ人、というような検索が、
>高速に可能になるのでしょうか。

他のRDBでも使いたいということであれば
ユーザー表
 ユーザーID(主キー)
 ユーザー名
 :
 :
アイテム表
 アイテムID(主キー)
 アイテム名
 :
 :
以外にユーザーとアイテムの所有関係を
記述する3番目の表を
持ち物表
 ユーザーID(主キー)
 アイテムID(主キー)
なるクロス表を作成し、持ち物表に
アイテムID−ユーザーID順のインデックスを
はるというのが素直なRDBのアプローチかと思います。
持ち物表に追加すればアンケート項目など自由に
増やすことが可能です。
(検索の目的でしか使わないのであれば、
 所有者表というアイテムID−ユーザーID
 の主キーのフィールドをもつ表を作れば
 主キーが検索時のインデックスになります)
Select ユーザーID, ユーザー名,・・・
 from ユーザー表
 join 持ち物表 using(ユーザーID)
 where アイテムID = xxx
と検索できます。

AltStyle によって変換されたページ (->オリジナル) /