私は2種類のユーザーを持つデータベースを持っています。何かのように:すべてのユーザーがUser
ですが、拡張サービスなどのためにサインアップした人も自分のアカウントに接続PowerUser
を持ってデータベース:外部キーをどこに置くべきか?
User:
name: String
email: String
PowerUser
address: String
paypalAcct: String
。 User
とPowerUser
を分けたかったのですが、すでにPowerUser
になっている人のためにUser
テーブルを再利用するといいと思っていました。普通のものをすべて持っているはずですからUser
です。
これは正しいことですか、User
フィールドをPowerUser
テーブルに追加して、そのフィールドで作業する必要がありますか?
それを行うには正しいことであるならば、User
はPowerUser
を指す外部キーを持っている必要があり、またはPowerUser
User
を指す外部キーを持っている必要がありますか?私はそれがこれらのものにアクセスする順序に依存すると思いますか?この場合、私はほとんどの場合、User
から、PowerUser
という関連性があるかどうかをチェックします。
外部キーをUser
に設定すると、多数のユーザーに外部キーがnullになります。外字キーをPowerUsers
に入れると、それらはすべて埋められますが、User
からPowerUser
になると、PowerUser
のテーブル全体を反復する必要があります。どちらが望ましいですか?
-Haoyi