[PHP-users 10031] Re: 複数選択項目の効率の良い管理方法について
Mashiki
php-users@php.gr.jp
Thu, 12 Sep 2002 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
と検索できます。