0

私の Web アプリケーションには、複数のタイプのユーザーがいます。たとえば、テーブルCustomer (id, name, password, ...)Admin (id, name, password, ...). これらは両方とも認証する必要があります。どの方法が最も賢明なのだろうか:

  1. 2 つのテーブルを使用して、2 種類の認証 Cookie、場合によってはlogin, logout,isAuthenticatedメソッドの 2 つのセットを持ちます。これをやりたいのですが、Web フレームワークではこれが簡単にできないと感じています。

  2. 2 つのテーブルを に詰め込みUser (id, name, password, role, columns_for_customer, columns_for_admin)ます。これはおそらく最も単純で効率的なオプションです。テーブルの半分が未使用のままになるので、私はそれが醜いと思いますが。非常に少数のアクションを共有すると仮定Customerします。Admin

  3. 新しいテーブルを追加しますUser (id, name, password, customer_id, admin_id)。中間地点。andテーブルから移動nameする(またはそこに複製する)ことに特に不安を感じます。CustomerAdmin

ベスト プラクティスに関する回答を探しています。

4

1 に答える 1

0

1 つのテーブルと、権限データを格納するための補助テーブル、または顧客用の列が必要です。

1 人のユーザーが 2 つのレコードを持つことができるため、2 つのテーブルは不適切です。そのユーザーがメール アドレスを変更するとどうなりますか?

個人テーブルには、ID、ユーザー名、パスワード、電子メールに関する情報のみが含まれている必要があります。

person.id への FK を持つ権限テーブルと、person.id への FK を持つ customer_info テーブルが必要です。

このようにして、ベスト プラクティスを使用してデータを正規化しました。

于 2013-09-26T18:01:52.070 に答える