複数のユーザー タイプに対応したリレーショナル データベースの設計
複数のユーザー タイプに対応するリレーショナル データベースを設計する場合、効率的なストレージとユーザーデータの取得。このシナリオを処理するための 2 つの主なアプローチは次のとおりです。
単一テーブル継承 (STI)
STI には、「識別子」を使用して、すべてのユーザー タイプに対して単一のテーブルを作成することが含まれます。各行の特定のタイプを示す列。特定のユーザー タイプに適用されない列は NULL のままになります。
利点:
欠点:
クラステーブルの継承(CTI)
CTI は、STI とは異なり、ユーザー タイプごとに個別のテーブルを使用します。共通の「ユーザー」テーブルには共有情報が保持され、タイプ固有のテーブルにはサブクラス依存のデータが含まれます。サブクラス テーブルは通常、外部キーを使用して "users" テーブル内の一致する行を参照します。
利点:
共有主キー設計 (SPK)
CTI のバリエーションである SPK には、主キーの設定が含まれます。サブクラス テーブルのキーは、「users」テーブルの対応する行の主キーのコピーになります。この手法により、テーブル間の主キーと外部キーの両方の関係が保証されます。
利点:
STI と CTI のどちらを選択するかは、アプリケーションの特定の要件によって異なります。 STI は、さまざまなユーザー タイプが同様のデータ構造を持っている場合、およびタイプ間で効率的なデータ取得が必要な場合に適しています。データ構造が大きく異なる場合や、参照整合性と調整されたストレージが重要な場合には、CTI が推奨されます。 SPK は、パフォーマンスを向上させ、1 対 1 の関係を強制することで CTI を強化します。
以上が単一テーブルの継承とクラス テーブルの継承: マルチユーザー データベースにはどちらが適していますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。