3 種類のユーザー (ABC、LMN、XYZ) を持つ Google アプリ エンジンでアプリを構築しています。
これは私のモデルがどのように見えるかです
ユーザー (db.Model): 電子メール = db.EmailProperty() ユーザー名 = db.StringProperty() パスワード = db.StringProperty() 役割 = db.IntegerProperty() ## ロール = ABC の場合は 1、LMN の場合は 2、XYZ の場合は 3 ABC(ユーザー): 名前 = db.StringProperty() isSuperHero = db.BooleanProperty() LMN(ユーザー): ニックネーム = db.StrngProperty() 職業 = db.StringProperty() # その他のランダムなプロパティ XYZ(ユーザー): 部門 = db.StringProperty() 給与 = デシベル.FloatProperty()
3 人のユーザー全員がアプリにログインできる単一のログイン ページを提供したいと考えています。
データストアには、4 つの異なるエンティティ User、ABC、LMN、XYZ レコードがあります。
私が見るように、2つのアプローチがあります:
- 第 1 のアプローチは、ユーザー モデルを拡張することです。このアプローチには、冗長な情報 (ユーザー名など) をユーザーと他の 3 つのエンティティに格納するという欠点があります。
- 2 番目のアプローチは、3 つのエンティティで User の参照を保持することです (これにより、冗長な列を削除します)。私が見る欠点は、ユーザーのメールを取得するには、ユーザーの参照を取得する必要があることです(関連するコストは高いと思います)
したがって、質問は基本的な基本に要約されます。冗長な列をすべてのエンティティに保存する必要があるか、エンティティにそれぞれのユーザーの参照を保存する必要があります。両方のアプローチのデータ コスト (読み取り/書き込み)の違いの例を誰かが提供できますか?