我的应用程序有业务实体,每个业务属于一个或多个类别! 应该如何在我的数据库中实现关系?
我有两个选择,
第一个选项: (在商业实体中存储属于特定业务的所有类别。)
class business(ndb.Model):
name = ndb.StringProperty()
categories = ndb.KeyProperty(kind=category,repeated=True)
class category(ndb.Model)
name = ndb.StringProperty()
第二个选项: (用于存储属于类别实体的特定类别的所有业务)
class business(ndb.Model):
name = ndb.StringProperty()
class category(ndb.Model)
name = ndb.StringProperty()
businesses = ndb.KeyProperty(kind=business,repeated=True)
我应该实施哪个选项?
另一个问题:
每个企业都可以有一个或多个图片: 我应该将图像存储在业务实体的列表中:
class business(ndb.Model):
name = ndb.StringProperty()
imagesUrl = ndb.StringProperty(repeated = True)
或为每张图片创建新实体:
class image(ndb.Model):
businessKey = ndb.KeyProperty(repeated = True)
imageUrl = ndb.StringProperty()
我知道实体大小限制为一个兆!是吗?
答案 0 :(得分:0)
像这样的决定通常取决于您的使用模式。但是,在您的情况下,看起来选项1是合乎逻辑的选择,因为有更多的业务实体而不是类别实体。
例如,如果您在检索单个业务实体时需要知道业务属于哪些类别,则在选择选项2时必须运行额外的查询。对于选项1,此额外查询是不必要的。< / p>
另一个考虑因素是更新的频率。如果选择选项2,则每次添加新业务实体时都必须更新类别实体(因此,必须更新两个实体,这会影响性能和成本)。使用选项1,您只需要更新一个实体。