谷歌app引擎的模型设计模式

时间:2013-03-23 15:57:38

标签: python google-app-engine data-modeling google-cloud-datastore

我正在谷歌应用引擎上构建一个应用程序,它有三种不同类型的用户(ABC,LMN,XYZ)。
这就是我的模型的样子

User(db.Model):
   email = db.EmailProperty()
   username = db.StringProperty()
   password = db.StringProperty()
   role = db.IntegerProperty()

## role = 1 for ABC;2 for LMN;3 for XYZ

ABC(User):
    name = db.StringProperty()
    isSuperHero = db.BooleanProperty()

LMN(User):
    nickname = db.StrngProperty()
    profession = db.StringProperty()
#   some other random property

XYZ(User):
    department = db.StringProperty()
    salary = db.FloatProperty()
    

我想提供登录页面,其中所有三个用户都可以登录该应用。
在数据存储区中,我将有4个不同的实体User,ABC,LMN,XYZ记录 我看到有两种方法:

  • 第一种方法是扩展用户模型:这种方法的缺点是在用户以及其他3个实体中存储冗余信息(username..etc)。
  • 第二种方法是在三个实体中保留User的引用(从而消除冗余列)。我看到的缺点是,要获得用户的电子邮件,我需要获得用户的参考(我猜的成本很高)

所以,问题归结为基本的基础:我应该在所有实体中存储冗余列还是应该在实体中存储相应用户的引用。 有人可以为这两种方法提供一些数据成本(读/写)差异的例子吗?

0 个答案:

没有答案
相关问题