gpt4 book ai didi

python - 数据存储中的关系(一对多)

转载 作者:太空宇宙 更新时间:2023-11-04 03:32:13 27 4
gpt4 key购买 nike

我实际上只是想知道在 google 数据存储中建模这种关系的最有效方法是什么。

假设我有“用户”和“项目”。一个项目可能有很多用户(一对多)。有没有比这样建模更好的方法?

class Users(ndb.Model):
properties...

class Projects(ndb.Model):
properties...

class UserToProject(ndb.Model):
user = ndb.KeyProperty(Users)
project = ndb.KeyProperty(Projects)

我是从“标准化”的角度来看这个问题的,但我猜想可能有一种成本更低的方法...

最佳答案

这里是多对多关系,因为一个项目有很多用户,一个用户可能被分配给多个项目(我假设)。

使用 NDB,我们可以尝试忘记传统的数据库关系,而专注于对象本身。表示这一点的最简单方法是将项目列表链接到用户:

class Project(ndb.Model):
properties...

class User(ndb.Model):
properties...
projectKeys = Ndb.KeyProperty(kind=Project, repeated=True)

现在,从用户的角度来看,我们可以简单地检索他们所属的所有项目:

user = User.query(...).get()
projectKeys = user.projectKeys # you can retrieve these as required

从项目的角度来看,您可以找到链接的用户如下:

project = Project.query(...).get()
users = User.query(User.projectKeys=project.key).fetch()

警告:周五下午 - 未经测试的代码。不过,概念应该有帮助:)

关于python - 数据存储中的关系(一对多),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30658909/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com