あなたは少なくとも、すべてのログイン情報(ユーザー名/パスワード)をユーザーテーブルに保存したいと思うでしょう。各ユーザータイプにはデータが重複していると仮定すると、usersテーブル(または関連する 'プロファイル'テーブル)のすべてのフィールドを保持しても問題ありません。
データを分離する場合は、profile_customers
、profile_retailers
...などがあります。しかし、私はそれがほとんどすべての異なるデータであれば、私はそれを行うだろう - ほとんどは、 '電話'、 '電子メール' ...などを持っていると仮定します。
最も簡単な方法は、ただ、ユーザーのタイプに基づいて登録フォームにリンクされます。
http://www.mysite.com/users/register/customer
次に、あなたのコントローラで:
function register($type = null) {
//...
switch($type) {
case 'customer':
$this->render('registration_customer');
break;
case 'retailer':
$this->render('registration_retailer');
break;
case 'manufacturer':
$this->render('registration_manufacturer');
break;
}
//...
その後、あなたはそれぞれの登録ページに個別のCTPファイルを持つことができます。また、重複している場合は、コントローラからビューに変数を渡し、if文を使用して関連するフィールドのみを表示することもできます。
これは非常に多くの方法がありますが、あなたの質問に対する主な答えは、保存したいデータに大きな違いがないかぎり、おそらくは同じテーブルに保存するのが最善です。ユーザー名/パスワードまたは電子メール/パスワードをユーザーテーブルに保管してください。
データベースの疑問が増えているようですが、良いパフォーマンスを得るには、3つのタイプのユーザーすべてで同じフィールドであるかどうかを問わず、最初のメソッドを使用できます。 –