gpt4 book ai didi

google-cloud-datastore - 管理 Google Cloud Datastore 中实体内的嵌套实体列表

转载 作者:行者123 更新时间:2023-12-04 05:37:52 27 4
gpt4 key购买 nike

我是 Datastore 的新手,我正在尝试创建一个简单的应用程序来跟踪图书借阅情况。

我希望数据库架构如下:

books:
book_id
name:
borrowing:
timestamp:
user_id
firstname
email

users:
name:
borrowed:
timestamp:
book_id

我正在使用控制台配置数据库。

我定义了两种类型:BooksUser

业务逻辑:

  • 1本书可供n位用户借阅。
  • 1个用户可以借n本书

基本上,当用户借书时,我希望发生以下两个插入:

  • 一个新的借阅条目被附加到 Book 类型的书实体,以当前时间戳为键,以 user_id、名字和电子邮件为属性
  • 一个新的借用条目被附加到 ty User 的用户实体,以当前时间戳为键,book_id 为属性

如何使用 Datastore 实现此目的(管理嵌套子列表)?通过嵌入式实体?家长引用?

这是我期望的示例:

{
"books": {
"book1": {
"name": "book number 1",
"borrowing": {
"1234567890": {
"user_id": "user1",
"firstname": "john",
"email": "john@example.com"
},
"2234567890": {
"user_id": "user2",
"firstname": "robin",
"email": "robin@example.com"
}
}
}
...
},
"users": {
"user1": {
"firstname": "robin",
"email": "robin@example.com",
"borrowed": {
"1234567890": {
"book_id": "book1"
},
"3247829398": {
"book_id": "book99"
}
}
},
...
}
}

最佳答案

一般来说,这不是一种可扩展的方法:每次用户借书时,您都必须重新编写 userbook 实体,这将随着两个实体的不断增长,速度会逐渐变慢。

我建议采用一种不同的方法:向您的模式添加一个新类型,我们称它为 borrowed_book,代表用户借阅的一本书:

borrowed_book:
book_id
user_id
timestamp

现在,每次用户借书时,您只需创建一个这样的 borrowed_book 实体,同时指向 bookuser . userbook 实体没有变化。 并且不需要嵌套

旁注:我会将 firstnameemail 属性放在 user 实体类型下,它们实际上并不属于借用事件,每次为同一用户发生此类事件时,它们都会被复制。

也尽量不要被祖先混淆——它不是建立关系所必需的,参见 E-commerce Product Categories in Google App Engine (Python)

关于google-cloud-datastore - 管理 Google Cloud Datastore 中实体内的嵌套实体列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49239548/

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