0

次のフィールドを持つテーブルusersがあるとします。

id
username
email
hobbies

各趣味に関する特定の情報を格納する、hobbiesという別のテーブルがあります。

name | unique
created
type
summary

通常、誰かが多対多の関係と結合テーブルを作成することでこの問題に取り組み、それをuser_hobbyと呼びます:

user_id
hobby_name

私が別の方法でやろうとしているのは、シリアル化された趣味名の配列を格納するユーザー テーブルの下の趣味フィールドを使用することです。

したがって、ユーザーの趣味のリストを取得したい場合は、結合を行う代わりに行います。

$array = $user->fetchHobbies()->toArray();
$hobbies = Hobbies::findByNames($array);

性能的には、どちらが優れていますか?

4

1 に答える 1

1

パフォーマンスに関しては、正しいインデックスを使用して、正規化されたデータベース構造に保持することをお勧めします。

理由は、「サッカー」の趣味を持つすべてのユーザーを見つけたい場合は、すべてのユーザーを選択して趣味データのシリアル化を解除するlikeか、列でワイルド カード マッチを実行する必要があるためです。ビッグデータ。

于 2012-07-11T02:14:18.093 に答える